From 881e62610ca59029b5fab853e8340ae8a5d811c1 Mon Sep 17 00:00:00 2001 From: Erick Date: Mon, 29 Jul 2024 10:26:51 -0300 Subject: [PATCH] feat: adding grouping to selections (#45) * feat: adding grouping to selections * feat: adding grouping to selections * fix has changes and bump version --- .../widgets/edit_selection_folder_modal.dart | 76 +++++ .../editor_screen/widgets/selection_list.dart | 286 +++++++++++++----- .../lib/services/storage/desktop.dart | 4 +- .../lib/store/actions/atlas_actions.dart | 27 ++ fire_atlas_editor/macos/Podfile.lock | 10 +- fire_atlas_editor/pubspec.lock | 184 +++++------ fire_atlas_editor/pubspec.yaml | 2 +- 7 files changed, 407 insertions(+), 182 deletions(-) create mode 100644 fire_atlas_editor/lib/screens/editor_screen/widgets/edit_selection_folder_modal.dart diff --git a/fire_atlas_editor/lib/screens/editor_screen/widgets/edit_selection_folder_modal.dart b/fire_atlas_editor/lib/screens/editor_screen/widgets/edit_selection_folder_modal.dart new file mode 100644 index 0000000..a5bb916 --- /dev/null +++ b/fire_atlas_editor/lib/screens/editor_screen/widgets/edit_selection_folder_modal.dart @@ -0,0 +1,76 @@ +import 'package:fire_atlas_editor/store/actions/atlas_actions.dart'; +import 'package:fire_atlas_editor/store/actions/editor_actions.dart'; +import 'package:fire_atlas_editor/store/store.dart'; +import 'package:fire_atlas_editor/widgets/button.dart'; +import 'package:fire_atlas_editor/widgets/text.dart'; +import 'package:flutter/material.dart'; +import 'package:slices/slices.dart'; + +class EditSelectionFolderModal extends StatefulWidget { + const EditSelectionFolderModal({ + required this.selectionId, + this.folderId, + super.key, + }); + + final String selectionId; + final String? folderId; + + @override + State createState() => + _EditSelectionFolderModalState(); +} + +class _EditSelectionFolderModalState extends State { + late final _groupTextController = TextEditingController() + ..value = TextEditingValue(text: widget.folderId ?? ''); + + @override + Widget build(BuildContext context) { + final store = SlicesProvider.of(context); + + return Padding( + padding: const EdgeInsets.all(16), + child: Column( + children: [ + const FSubtitleTitle(title: 'Move to folder'), + const SizedBox(height: 8), + TextFormField( + controller: _groupTextController, + decoration: const InputDecoration( + labelText: 'Folder name (leave empty to remove from folder)', + ), + ), + const SizedBox(height: 8), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + FButton( + label: 'Cancel', + onSelect: () { + store.dispatch(CloseEditorModal()); + }, + ), + const SizedBox(width: 5), + FButton( + selected: true, + label: 'Ok', + onSelect: () { + store.dispatch( + UpdateSelectionGroup( + selectionId: widget.selectionId, + group: _groupTextController.text.isEmpty + ? null + : _groupTextController.text, + ), + ); + store.dispatch(CloseEditorModal()); + }, + ), + ], + ), + ], + ), + ); + } +} diff --git a/fire_atlas_editor/lib/screens/editor_screen/widgets/selection_list.dart b/fire_atlas_editor/lib/screens/editor_screen/widgets/selection_list.dart index c330c90..d39b46f 100644 --- a/fire_atlas_editor/lib/screens/editor_screen/widgets/selection_list.dart +++ b/fire_atlas_editor/lib/screens/editor_screen/widgets/selection_list.dart @@ -1,5 +1,6 @@ import 'package:equatable/equatable.dart'; import 'package:fire_atlas_editor/screens/editor_screen/widgets/delete_selection_modal.dart'; +import 'package:fire_atlas_editor/screens/editor_screen/widgets/edit_selection_folder_modal.dart'; import 'package:fire_atlas_editor/screens/editor_screen/widgets/selection_canvas/selection_form.dart'; import 'package:fire_atlas_editor/store/actions/atlas_actions.dart'; import 'package:fire_atlas_editor/store/actions/editor_actions.dart'; @@ -15,22 +16,40 @@ class _SelectionListSlice extends Equatable { final FireAtlas? currentAtlas; final BaseSelection? selectedSelection; - const _SelectionListSlice(this.currentAtlas, this.selectedSelection); + final List _groups; + + _SelectionListSlice(this.currentAtlas, this.selectedSelection) + : _groups = + currentAtlas?.selections.values.map((e) => e.group).toList() ?? + const []; @override - List get props => [currentAtlas?.id, selectedSelection?.id]; + List get props => [ + currentAtlas?.id, + selectedSelection?.id, + _groups, + ]; } -class SelectionList extends StatelessWidget { +class SelectionList extends StatefulWidget { const SelectionList({super.key}); + @override + State createState() => _SelectionListState(); +} + +class _SelectionListState extends State { + final _openGroups = []; + @override Widget build(_) { return SliceWatcher( - slicer: (state) => _SelectionListSlice( - state.currentAtlas, - state.selectedSelection, - ), + slicer: (state) { + return _SelectionListSlice( + state.currentAtlas, + state.selectedSelection, + ); + }, builder: (ctx, store, slice) { final currentAtlas = slice.currentAtlas; @@ -41,91 +60,95 @@ class SelectionList extends StatelessWidget { void select(BaseSelection selection) => store.dispatch(SelectSelectionAction(selection: selection)); + final groupedSelections = currentAtlas.selections.values.fold( + >{}, + (map, selection) { + final group = selection.group ?? ''; + if (!map.containsKey(group)) { + map[group] = []; + } + + map[group]!.add(selection); + return map; + }, + ); + + final rootLevelGroup = groupedSelections[''] ?? []; + + final folders = Map.fromEntries( + groupedSelections.entries + .where((entry) => entry.key.isNotEmpty) + .toList(), + ); + return FContainer( padding: const EdgeInsets.all(5), child: SingleChildScrollView( - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - const FSubtitleTitle(title: 'Selections'), - ...currentAtlas.selections.isEmpty - ? [const FLabel(label: 'No selections yet')] - : currentAtlas.selections.values - .map((selection) { - return Container( - margin: const EdgeInsets.all(10), - padding: const EdgeInsets.only(bottom: 5), - decoration: BoxDecoration( - border: Border( - bottom: BorderSide( - width: 2, - color: Theme.of(ctx).dividerColor, - ), - ), + child: Builder( + builder: (context) { + return Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + const FSubtitleTitle(title: 'Selections'), + if (currentAtlas.selections.isEmpty) + const FLabel(label: 'No selections yet'), + for (final selection in rootLevelGroup) + _SelectionEntry( + selection: selection, + slice: slice, + select: select, + store: store, + ), + for (final folderEntry in folders.entries) + Container( + margin: const EdgeInsets.only(top: 10), + padding: const EdgeInsets.all(10), + decoration: BoxDecoration( + border: Border( + bottom: BorderSide( + width: 2, + color: Theme.of(context).dividerColor, ), - child: GestureDetector( - onTap: () => select(selection), + ), + ), + child: Column( + children: [ + GestureDetector( + onTap: () { + setState(() { + if (_openGroups.contains(folderEntry.key)) { + _openGroups.remove(folderEntry.key); + } else { + _openGroups.add(folderEntry.key); + } + }); + }, child: Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, children: [ - Expanded( - child: Text( - selection.id, - style: TextStyle( - fontWeight: - (slice.selectedSelection?.id == - selection.id) - ? FontWeight.bold - : FontWeight.normal, - ), - ), - ), - Row( - children: [ - if (selection is AnimationSelection) - FIconButton( - iconData: Icons.edit, - onPress: () { - select(selection); - store.dispatch( - OpenEditorModal( - SelectionForm( - editingSelection: selection, - ), - 400, - 500, - ), - ); - }, - tooltip: 'Edit selection', - ) - else - Container(), - FIconButton( - iconData: Icons.cancel, - onPress: () { - select(selection); - store.dispatch( - OpenEditorModal( - const DeleteSelectionModal(), - 300, - 200, - ), - ); - }, - tooltip: 'Edit selection', - ), - ], + Icon( + _openGroups.contains(folderEntry.key) + ? Icons.folder_open + : Icons.folder, ), + const SizedBox(width: 5), + Text(folderEntry.key), ], ), ), - ); - }) - .toList() - .cast(), - ], + if (_openGroups.contains(folderEntry.key)) + for (final selection in folderEntry.value) + _SelectionEntry( + selection: selection, + slice: slice, + select: select, + store: store, + ), + ], + ), + ), + ], + ); + }, ), ), ); @@ -133,3 +156,102 @@ class SelectionList extends StatelessWidget { ); } } + +class _SelectionEntry extends StatelessWidget { + const _SelectionEntry({ + required this.selection, + required this.slice, + required this.select, + required this.store, + }); + + final BaseSelection selection; + final _SelectionListSlice slice; + final void Function(BaseSelection) select; + final SlicesStore store; + + @override + Widget build(BuildContext context) { + return Container( + margin: const EdgeInsets.all(10), + padding: const EdgeInsets.only(bottom: 5), + decoration: BoxDecoration( + border: Border( + bottom: BorderSide( + width: 2, + color: Theme.of(context).dividerColor, + ), + ), + ), + child: GestureDetector( + onTap: () => select(selection), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: Text( + selection.id, + style: TextStyle( + fontWeight: (slice.selectedSelection?.id == selection.id) + ? FontWeight.bold + : FontWeight.normal, + ), + ), + ), + Row( + children: [ + if (selection is AnimationSelection) + FIconButton( + iconData: Icons.edit, + onPress: () { + select(selection); + store.dispatch( + OpenEditorModal( + SelectionForm( + editingSelection: selection as AnimationSelection, + ), + 400, + 500, + ), + ); + }, + tooltip: 'Edit selection', + ), + FIconButton( + iconData: Icons.folder, + onPress: () { + store.dispatch( + OpenEditorModal( + EditSelectionFolderModal( + selectionId: selection.id, + folderId: selection.group, + ), + 500, + 280, + ), + ); + }, + tooltip: 'Move into Folder', + ), + FIconButton( + iconData: Icons.cancel, + onPress: () { + select(selection); + store.dispatch( + OpenEditorModal( + const DeleteSelectionModal(), + 300, + 200, + ), + ); + }, + tooltip: 'Delete selection', + ), + ], + ), + ], + ), + ), + ); + } +} diff --git a/fire_atlas_editor/lib/services/storage/desktop.dart b/fire_atlas_editor/lib/services/storage/desktop.dart index 9c070e5..ec42408 100644 --- a/fire_atlas_editor/lib/services/storage/desktop.dart +++ b/fire_atlas_editor/lib/services/storage/desktop.dart @@ -63,11 +63,11 @@ class FireAtlasStorage extends FireAtlasStorageApi { @override Future selectNewProjectPath(FireAtlas atlas) async { - final file = await getSavePath(suggestedName: '${atlas.id}.fa'); + final file = await getSaveLocation(suggestedName: '${atlas.id}.fa'); if (file == null) { throw 'Nothing selected'; } - return file; + return file.path; } @override diff --git a/fire_atlas_editor/lib/store/actions/atlas_actions.dart b/fire_atlas_editor/lib/store/actions/atlas_actions.dart index 4c42d95..de0b73c 100644 --- a/fire_atlas_editor/lib/store/actions/atlas_actions.dart +++ b/fire_atlas_editor/lib/store/actions/atlas_actions.dart @@ -65,6 +65,33 @@ class UpdateAtlasImageAction extends AsyncSlicesAction { } } +class UpdateSelectionGroup extends SlicesAction { + UpdateSelectionGroup({ + required this.selectionId, + this.group, + }); + + final String selectionId; + final String? group; + + @override + FireAtlasState perform( + SlicesStore store, + FireAtlasState state, + ) { + final atlas = state.currentAtlas; + if (atlas != null) { + final selection = atlas.selections[selectionId]; + + if (selection != null) { + atlas.selections[selectionId] = selection.copyWithGroup(group); + } + } + + return state.copyWith(hasChanges: true); + } +} + class SetSelectionAction extends SlicesAction { final List selections; diff --git a/fire_atlas_editor/macos/Podfile.lock b/fire_atlas_editor/macos/Podfile.lock index 38b32ff..510f633 100644 --- a/fire_atlas_editor/macos/Podfile.lock +++ b/fire_atlas_editor/macos/Podfile.lock @@ -11,7 +11,7 @@ PODS: DEPENDENCIES: - file_selector_macos (from `Flutter/ephemeral/.symlinks/plugins/file_selector_macos/macos`) - FlutterMacOS (from `Flutter/ephemeral`) - - shared_preferences_foundation (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/macos`) + - shared_preferences_foundation (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin`) - url_launcher_macos (from `Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos`) EXTERNAL SOURCES: @@ -20,15 +20,15 @@ EXTERNAL SOURCES: FlutterMacOS: :path: Flutter/ephemeral shared_preferences_foundation: - :path: Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/macos + :path: Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin url_launcher_macos: :path: Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos SPEC CHECKSUMS: - file_selector_macos: f1b08a781e66103e3ba279fd5d4024a2478b3af6 + file_selector_macos: 54fdab7caa3ac3fc43c9fac4d7d8d231277f8cf2 FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 - shared_preferences_foundation: 297b3ebca31b34ec92be11acd7fb0ba932c822ca - url_launcher_macos: c04e4fa86382d4f94f6b38f14625708be3ae52e2 + shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78 + url_launcher_macos: 5f437abeda8c85500ceb03f5c1938a8c5a705399 PODFILE CHECKSUM: 353c8bcc5d5b0994e508d035b5431cfe18c1dea7 diff --git a/fire_atlas_editor/pubspec.lock b/fire_atlas_editor/pubspec.lock index b79c338..1f75ba9 100644 --- a/fire_atlas_editor/pubspec.lock +++ b/fire_atlas_editor/pubspec.lock @@ -53,10 +53,10 @@ packages: dependency: transitive description: name: cross_file - sha256: f71079978789bc2fe78d79227f1f8cfe195b31bbd8db2399b0d15a4b96fb843b + sha256: "55d7b444feb71301ef6b8838dbc1ae02e63dd48c8773f3810ff53bb1e2945b32" url: "https://pub.dev" source: hosted - version: "0.3.3+2" + version: "0.3.4+1" crypto: dependency: transitive description: @@ -69,10 +69,10 @@ packages: dependency: "direct main" description: name: cupertino_icons - sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be + sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 url: "https://pub.dev" source: hosted - version: "1.0.5" + version: "1.0.8" equatable: dependency: "direct main" description: @@ -93,74 +93,82 @@ packages: dependency: transitive description: name: ffi - sha256: a38574032c5f1dd06c4aee541789906c12ccaab8ba01446e800d9c5b79c4a978 + sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "2.1.2" file: dependency: transitive description: name: file - sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" + sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" url: "https://pub.dev" source: hosted - version: "6.1.4" + version: "7.0.0" file_selector: dependency: "direct main" description: name: file_selector - sha256: b20af14306e7ce567b7c76076b8c010dcce4bc2f3c4b5137dceb9e4db8ece006 + sha256: "1d2fde93dddf634a9c3c0faa748169d7ac0d83757135555707e52f02c017ad4f" url: "https://pub.dev" source: hosted - version: "0.9.2+2" + version: "0.9.5" + file_selector_android: + dependency: transitive + description: + name: file_selector_android + sha256: e7610bcdaee3ad5310c075dc7535c91db06ae03bf8f6ec8fff04e1f6d071d7ed + url: "https://pub.dev" + source: hosted + version: "0.5.1+4" file_selector_ios: dependency: transitive description: name: file_selector_ios - sha256: "904091b110b64565566fbb98b334590670de5d7ddd7541be15db22d4e64203eb" + sha256: "38ebf91ecbcfa89a9639a0854ccaed8ab370c75678938eebca7d34184296f0bb" url: "https://pub.dev" source: hosted - version: "0.5.0+2" + version: "0.5.3" file_selector_linux: dependency: "direct main" description: name: file_selector_linux - sha256: "30edefcdb76be8f4a2dadf57554b42a2791c06cdbc2db62894a918ea36c37cff" + sha256: "045d372bf19b02aeb69cacf8b4009555fb5f6f0b7ad8016e5f46dd1387ddd492" url: "https://pub.dev" source: hosted - version: "0.9.1" + version: "0.9.2+1" file_selector_macos: dependency: "direct main" description: name: file_selector_macos - sha256: "6fd5242e12b6b0b0d2e59e779a7eafaeaa374687c84e8ad1e948e5dad8941109" + sha256: f42eacb83b318e183b1ae24eead1373ab1334084404c8c16e0354f9a3e55d385 url: "https://pub.dev" source: hosted - version: "0.9.0+4" + version: "0.9.4" file_selector_platform_interface: dependency: transitive description: name: file_selector_platform_interface - sha256: "17cdfe3d13a7d3e29e3d3978577ce840fcf94497d7de51bdea378abf9a34fc2c" + sha256: a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.6.2" file_selector_web: dependency: transitive description: name: file_selector_web - sha256: "0175186c42ef8d622c7cf214e46294f8dbe81ae32ae4407896c773c8f7dc930b" + sha256: "619e431b224711a3869e30dbd7d516f5f5a4f04b265013a50912f39e1abc88c8" url: "https://pub.dev" source: hosted - version: "0.9.0+2" + version: "0.9.4+1" file_selector_windows: dependency: "direct main" description: name: file_selector_windows - sha256: "1cfeddc127f78f3f96803ad7c3d3ce500791cbefb15a7b19b9ee71e7b92ff4b4" + sha256: "2ad726953f6e8affbc4df8dc78b77c3b4a060967a291e528ef72ae846c60fb69" url: "https://pub.dev" source: hosted - version: "0.9.1+4" + version: "0.9.3+2" flame: dependency: "direct main" description: @@ -173,18 +181,18 @@ packages: dependency: "direct main" description: name: flame_fire_atlas - sha256: f86a40c40abd5abbf609ce3c8af4a68ff8270cc1f7238d44541551ebd6366d74 + sha256: "27ad3bd6c37723d41a6079ea675d77e5ca52670f5a073ba12e0ee5b7b575082f" url: "https://pub.dev" source: hosted - version: "1.5.2" + version: "1.5.3" flame_lint: dependency: "direct main" description: name: flame_lint - sha256: f9d519a8399fc50bdecda5abc4d3ce10bf51e95fa6d93768bb4ce587c03815ef + sha256: "69f30090f947a45948c0d8c7205f8ffa4b9745360d427d2de98bc69def9b7c42" url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "1.2.0" flutter: dependency: "direct main" description: flutter @@ -204,10 +212,10 @@ packages: dependency: transitive description: name: http - sha256: "6aa2946395183537c8b880962d935877325d6a09a2867c3970c05c0fed6ac482" + sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010 url: "https://pub.dev" source: hosted - version: "0.13.5" + version: "1.2.2" http_parser: dependency: transitive description: @@ -216,14 +224,6 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.2" - js: - dependency: transitive - description: - name: js - sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 - url: "https://pub.dev" - source: hosted - version: "0.6.7" leak_tracker: dependency: transitive description: @@ -248,6 +248,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.1" + lints: + dependency: transitive + description: + name: lints + sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290 + url: "https://pub.dev" + source: hosted + version: "3.0.0" matcher: dependency: transitive description: @@ -292,106 +300,98 @@ packages: dependency: transitive description: name: path_provider_linux - sha256: ab0987bf95bc591da42dffb38c77398fc43309f0b9b894dcc5d6f40c4b26c379 + sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 url: "https://pub.dev" source: hosted - version: "2.1.7" + version: "2.2.1" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - sha256: f0abc8ebd7253741f05488b4813d936b4d07c6bae3e86148a09e342ee4b08e76 + sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" url: "https://pub.dev" source: hosted - version: "2.0.5" + version: "2.1.2" path_provider_windows: dependency: transitive description: name: path_provider_windows - sha256: bcabbe399d4042b8ee687e17548d5d3f527255253b4a639f5f8d2094a9c2b45c + sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.3.0" platform: dependency: transitive description: name: platform - sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76" + sha256: "9b71283fc13df574056616011fb138fd3b793ea47cc509c189a6c3fa5f8a1a65" url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.1.5" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - sha256: dbf0f707c78beedc9200146ad3cb0ab4d5da13c246336987be6940f026500d3a - url: "https://pub.dev" - source: hosted - version: "2.1.3" - process: - dependency: transitive - description: - name: process - sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09" + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" url: "https://pub.dev" source: hosted - version: "4.2.4" + version: "2.1.8" shared_preferences: dependency: "direct main" description: name: shared_preferences - sha256: "5949029e70abe87f75cfe59d17bf5c397619c4b74a099b10116baeb34786fad9" + sha256: d3bbe5553a986e83980916ded2f0b435ef2e1893dfaa29d5a7a790d0eca12180 url: "https://pub.dev" source: hosted - version: "2.0.17" + version: "2.2.3" shared_preferences_android: dependency: transitive description: name: shared_preferences_android - sha256: "955e9736a12ba776bdd261cf030232b30eadfcd9c79b32a3250dd4a494e8c8f7" + sha256: "3d4571b3c5eb58ce52a419d86e655493d0bc3020672da79f72fa0c16ca3a8ec1" url: "https://pub.dev" source: hosted - version: "2.0.15" + version: "2.2.4" shared_preferences_foundation: dependency: transitive description: name: shared_preferences_foundation - sha256: "1ffa239043ab8baf881ec3094a3c767af9d10399b2839020b9e4d44c0bb23951" + sha256: "0a8a893bf4fd1152f93fec03a415d11c27c74454d96e2318a7ac38dd18683ab7" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.4.0" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux - sha256: f8ea038aa6da37090093974ebdcf4397010605fd2ff65c37a66f9d28394cb874 + sha256: "9f2cbcf46d4270ea8be39fa156d86379077c8a5228d9dfdb1164ae0bb93f1faa" url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.3.2" shared_preferences_platform_interface: dependency: transitive description: name: shared_preferences_platform_interface - sha256: da9431745ede5ece47bc26d5d73a9d3c6936ef6945c101a5aca46f62e52c1cf3 + sha256: "034650b71e73629ca08a0bd789fd1d83cc63c2d1e405946f7cef7bc37432f93a" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.4.0" shared_preferences_web: dependency: transitive description: name: shared_preferences_web - sha256: a4b5bc37fe1b368bbc81f953197d55e12f49d0296e7e412dfe2d2d77d6929958 + sha256: "9aee1089b36bd2aafe06582b7d7817fd317ef05fc30e6ba14bff247d0933042a" url: "https://pub.dev" source: hosted - version: "2.0.4" + version: "2.3.0" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - sha256: "5eaf05ae77658d3521d0e993ede1af962d4b326cd2153d312df716dc250f00c9" + sha256: "841ad54f3c8381c480d0c9b508b89a34036f512482c407e6df7a9c4aa2ef8f59" url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.3.2" sky_engine: dependency: transitive description: flutter @@ -457,74 +457,74 @@ packages: dependency: transitive description: name: typed_data - sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5" + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.2" url_launcher: dependency: "direct main" description: name: url_launcher - sha256: "698fa0b4392effdc73e9e184403b627362eb5fbf904483ac9defbb1c2191d809" + sha256: "21b704ce5fa560ea9f3b525b43601c678728ba46725bab9b01187b4831377ed3" url: "https://pub.dev" source: hosted - version: "6.1.8" + version: "6.3.0" url_launcher_android: dependency: transitive description: name: url_launcher_android - sha256: "3e2f6dfd2c7d9cd123296cab8ef66cfc2c1a13f5845f42c7a0f365690a8a7dd1" + sha256: c24484594a8dea685610569ab0f2547de9c7a1907500a9bc5e37e4c9a3cbfb23 url: "https://pub.dev" source: hosted - version: "6.0.23" + version: "6.3.6" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: bb328b24d3bccc20bdf1024a0990ac4f869d57663660de9c936fb8c043edefe3 + sha256: e43b677296fadce447e987a2f519dcf5f6d1e527dc35d01ffab4fff5b8a7063e url: "https://pub.dev" source: hosted - version: "6.0.18" + version: "6.3.1" url_launcher_linux: dependency: transitive description: name: url_launcher_linux - sha256: "318c42cba924e18180c029be69caf0a1a710191b9ec49bb42b5998fdcccee3cc" + sha256: ab360eb661f8879369acac07b6bb3ff09d9471155357da8443fd5d3cf7363811 url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "3.1.1" url_launcher_macos: dependency: transitive description: name: url_launcher_macos - sha256: "41988b55570df53b3dd2a7fc90c76756a963de6a8c5f8e113330cb35992e2094" + sha256: "9a1a42d5d2d95400c795b2914c36fdcb525870c752569438e4ebb09a2b5d90de" url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "3.2.0" url_launcher_platform_interface: dependency: transitive description: name: url_launcher_platform_interface - sha256: "4eae912628763eb48fc214522e58e942fd16ce195407dbf45638239523c759a6" + sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.3.2" url_launcher_web: dependency: transitive description: name: url_launcher_web - sha256: "44d79408ce9f07052095ef1f9a693c258d6373dc3944249374e30eff7219ccb0" + sha256: "8d9e750d8c9338601e709cd0885f95825086bd8b642547f26bda435aade95d8a" url: "https://pub.dev" source: hosted - version: "2.0.14" + version: "2.3.1" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - sha256: b6217370f8eb1fd85c8890c539f5a639a01ab209a36db82c921ebeacefc7a615 + sha256: "49c10f879746271804767cb45551ec5592cdab00ee105c06dddde1a98f73b185" url: "https://pub.dev" source: hosted - version: "3.0.3" + version: "3.1.2" vector_math: dependency: transitive description: @@ -541,22 +541,22 @@ packages: url: "https://pub.dev" source: hosted version: "14.2.1" - win32: + web: dependency: transitive description: - name: win32 - sha256: c9ebe7ee4ab0c2194e65d3a07d8c54c5d00bb001b76081c4a04cdb8448b59e46 + name: web + sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" url: "https://pub.dev" source: hosted - version: "3.1.3" + version: "0.5.1" xdg_directories: dependency: transitive description: name: xdg_directories - sha256: bd512f03919aac5f1313eb8249f223bacf4927031bf60b02601f81f687689e86 + sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d url: "https://pub.dev" source: hosted - version: "0.2.0+3" + version: "1.0.4" sdks: dart: ">=3.4.0 <4.0.0" flutter: ">=3.22.0" diff --git a/fire_atlas_editor/pubspec.yaml b/fire_atlas_editor/pubspec.yaml index d0765b2..9efc95d 100644 --- a/fire_atlas_editor/pubspec.yaml +++ b/fire_atlas_editor/pubspec.yaml @@ -16,7 +16,7 @@ dependencies: file_selector_macos: ^0.9.0+4 file_selector_windows: ^0.9.1+4 flame: ^1.18.0 - flame_fire_atlas: ^1.5.2 + flame_fire_atlas: ^1.5.3 flame_lint: ^1.0.0 flutter: sdk: flutter