@dxos/plugin-space 0.10.0 → 0.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/PLUGIN.mdl +11 -0
- package/dist/lib/SpacePlugin.mjs +2 -0
- package/dist/lib/SpacePlugin.node.mjs +628 -0
- package/dist/lib/SpacePlugin.node.mjs.map +1 -0
- package/dist/lib/SpacePlugin.workerd.mjs +26 -0
- package/dist/lib/SpacePlugin.workerd.mjs.map +1 -0
- package/dist/lib/capabilities/node.mjs +10 -0
- package/dist/lib/capabilities/node.mjs.map +1 -0
- package/dist/lib/capabilities.mjs +24 -0
- package/dist/lib/capabilities.mjs.map +1 -0
- package/dist/lib/chunk-CollectionArticle.mjs +90 -0
- package/dist/lib/chunk-CollectionArticle.mjs.map +1 -0
- package/dist/lib/chunk-CollectionSection.mjs +21 -0
- package/dist/lib/chunk-CollectionSection.mjs.map +1 -0
- package/dist/lib/chunk-CreateObjectDialog.mjs +178 -0
- package/dist/lib/chunk-CreateObjectDialog.mjs.map +1 -0
- package/dist/lib/chunk-CreateSpaceDialog.mjs +68 -0
- package/dist/lib/chunk-CreateSpaceDialog.mjs.map +1 -0
- package/dist/lib/chunk-DefaultProperties.mjs +59 -0
- package/dist/lib/chunk-DefaultProperties.mjs.map +1 -0
- package/dist/lib/chunk-ImportSpaceDialog.mjs +58 -0
- package/dist/lib/chunk-ImportSpaceDialog.mjs.map +1 -0
- package/dist/lib/chunk-InlineSyncStatus.mjs +37 -0
- package/dist/lib/chunk-InlineSyncStatus.mjs.map +1 -0
- package/dist/lib/chunk-JoinDialog.mjs +65 -0
- package/dist/lib/chunk-JoinDialog.mjs.map +1 -0
- package/dist/lib/chunk-MembersContainer.mjs +263 -0
- package/dist/lib/chunk-MembersContainer.mjs.map +1 -0
- package/dist/lib/chunk-MergePreview.mjs +91 -0
- package/dist/lib/chunk-MergePreview.mjs.map +1 -0
- package/dist/lib/chunk-ObjectCardStack.mjs +68 -0
- package/dist/lib/chunk-ObjectCardStack.mjs.map +1 -0
- package/dist/lib/chunk-RecordArticle.mjs +106 -0
- package/dist/lib/chunk-RecordArticle.mjs.map +1 -0
- package/dist/lib/chunk-RelatedArticle.mjs +71 -0
- package/dist/lib/chunk-RelatedArticle.mjs.map +1 -0
- package/dist/lib/chunk-RenamePopover.mjs +94 -0
- package/dist/lib/chunk-RenamePopover.mjs.map +1 -0
- package/dist/lib/chunk-SchemaContainer.mjs +53 -0
- package/dist/lib/chunk-SchemaContainer.mjs.map +1 -0
- package/dist/lib/chunk-SmallPresenceLive.mjs +2 -0
- package/dist/lib/chunk-SpaceHomeArticle.mjs +82 -0
- package/dist/lib/chunk-SpaceHomeArticle.mjs.map +1 -0
- package/dist/lib/chunk-SpaceHomeDashboard.mjs +96 -0
- package/dist/lib/chunk-SpaceHomeDashboard.mjs.map +1 -0
- package/dist/lib/chunk-SpaceHomeRecent.mjs +79 -0
- package/dist/lib/chunk-SpaceHomeRecent.mjs.map +1 -0
- package/dist/lib/chunk-SpacePlugin.mjs +97 -0
- package/dist/lib/chunk-SpacePlugin.mjs.map +1 -0
- package/dist/lib/chunk-SpacePresence.mjs +155 -0
- package/dist/lib/chunk-SpacePresence.mjs.map +1 -0
- package/dist/lib/chunk-SpaceSettings.mjs +63 -0
- package/dist/lib/chunk-SpaceSettings.mjs.map +1 -0
- package/dist/lib/chunk-SpaceSettingsContainer.mjs +278 -0
- package/dist/lib/chunk-SpaceSettingsContainer.mjs.map +1 -0
- package/dist/lib/chunk-SyncStatus.mjs +166 -0
- package/dist/lib/chunk-SyncStatus.mjs.map +1 -0
- package/dist/lib/chunk-TypeArticle.mjs +469 -0
- package/dist/lib/chunk-TypeArticle.mjs.map +1 -0
- package/dist/lib/chunk-ViewEditor.mjs +78 -0
- package/dist/lib/chunk-ViewEditor.mjs.map +1 -0
- package/dist/lib/chunk-add-object.mjs +74 -0
- package/dist/lib/chunk-add-object.mjs.map +1 -0
- package/dist/lib/chunk-add-relation.mjs +16 -0
- package/dist/lib/chunk-add-relation.mjs.map +1 -0
- package/dist/lib/chunk-add-type.mjs +41 -0
- package/dist/lib/chunk-add-type.mjs.map +1 -0
- package/dist/lib/chunk-app-graph-builder.mjs +1056 -0
- package/dist/lib/chunk-app-graph-builder.mjs.map +1 -0
- package/dist/lib/chunk-close.mjs +11 -0
- package/dist/lib/chunk-close.mjs.map +1 -0
- package/dist/lib/chunk-collection-path.mjs +65 -0
- package/dist/lib/chunk-collection-path.mjs.map +1 -0
- package/dist/lib/chunk-create-object.mjs +80 -0
- package/dist/lib/chunk-create-object.mjs.map +1 -0
- package/dist/lib/chunk-create.mjs +62 -0
- package/dist/lib/chunk-create.mjs.map +1 -0
- package/dist/lib/chunk-definitions.mjs +466 -0
- package/dist/lib/chunk-definitions.mjs.map +1 -0
- package/dist/lib/chunk-delete-field.mjs +52 -0
- package/dist/lib/chunk-delete-field.mjs.map +1 -0
- package/dist/lib/chunk-delete.mjs +11 -0
- package/dist/lib/chunk-delete.mjs.map +1 -0
- package/dist/lib/chunk-duplicate-object.mjs +11 -0
- package/dist/lib/chunk-duplicate-object.mjs.map +1 -0
- package/dist/lib/chunk-errors.mjs +10 -0
- package/dist/lib/chunk-errors.mjs.map +1 -0
- package/dist/lib/chunk-export-space.mjs +24 -0
- package/dist/lib/chunk-export-space.mjs.map +1 -0
- package/dist/lib/chunk-find-duplicates.mjs +19 -0
- package/dist/lib/chunk-find-duplicates.mjs.map +1 -0
- package/dist/lib/chunk-get-share-link.mjs +29 -0
- package/dist/lib/chunk-get-share-link.mjs.map +1 -0
- package/dist/lib/chunk-helpers.mjs +14 -0
- package/dist/lib/chunk-helpers.mjs.map +1 -0
- package/dist/lib/chunk-identity-created.mjs +26 -0
- package/dist/lib/chunk-identity-created.mjs.map +1 -0
- package/dist/lib/chunk-import-space.mjs +16 -0
- package/dist/lib/chunk-import-space.mjs.map +1 -0
- package/dist/lib/chunk-join.mjs +35 -0
- package/dist/lib/chunk-join.mjs.map +1 -0
- package/dist/lib/chunk-merge-duplicates.mjs +62 -0
- package/dist/lib/chunk-merge-duplicates.mjs.map +1 -0
- package/dist/lib/{neutral/chunk-5ZZS3KMK.mjs → chunk-meta.mjs} +15 -24
- package/dist/lib/chunk-meta.mjs.map +1 -0
- package/dist/lib/chunk-migrate.mjs +45 -0
- package/dist/lib/chunk-migrate.mjs.map +1 -0
- package/dist/lib/chunk-navigation-handler.mjs +63 -0
- package/dist/lib/chunk-navigation-handler.mjs.map +1 -0
- package/dist/lib/chunk-navigation-target-resolver.mjs +79 -0
- package/dist/lib/chunk-navigation-target-resolver.mjs.map +1 -0
- package/dist/lib/chunk-open-create-object.mjs +32 -0
- package/dist/lib/chunk-open-create-object.mjs.map +1 -0
- package/dist/lib/chunk-open-create-space.mjs +16 -0
- package/dist/lib/chunk-open-create-space.mjs.map +1 -0
- package/dist/lib/chunk-open-import-space.mjs +16 -0
- package/dist/lib/chunk-open-import-space.mjs.map +1 -0
- package/dist/lib/chunk-open-members.mjs +15 -0
- package/dist/lib/chunk-open-members.mjs.map +1 -0
- package/dist/lib/chunk-open-settings.mjs +15 -0
- package/dist/lib/chunk-open-settings.mjs.map +1 -0
- package/dist/lib/chunk-open.mjs +11 -0
- package/dist/lib/chunk-open.mjs.map +1 -0
- package/dist/lib/chunk-operation-handler.mjs +13 -0
- package/dist/lib/chunk-operation-handler.mjs.map +1 -0
- package/dist/lib/chunk-react-root.mjs +20 -0
- package/dist/lib/chunk-react-root.mjs.map +1 -0
- package/dist/lib/chunk-react-surface.mjs +384 -0
- package/dist/lib/chunk-react-surface.mjs.map +1 -0
- package/dist/lib/chunk-remove-objects.mjs +83 -0
- package/dist/lib/chunk-remove-objects.mjs.map +1 -0
- package/dist/lib/chunk-rename-object.mjs +18 -0
- package/dist/lib/chunk-rename-object.mjs.map +1 -0
- package/dist/lib/chunk-rename.mjs +18 -0
- package/dist/lib/chunk-rename.mjs.map +1 -0
- package/dist/lib/chunk-repair.mjs +28 -0
- package/dist/lib/chunk-repair.mjs.map +1 -0
- package/dist/lib/chunk-restore-field.mjs +50 -0
- package/dist/lib/chunk-restore-field.mjs.map +1 -0
- package/dist/lib/chunk-restore-objects.mjs +33 -0
- package/dist/lib/chunk-restore-objects.mjs.map +1 -0
- package/dist/lib/chunk-settings.mjs +23 -0
- package/dist/lib/chunk-settings.mjs.map +1 -0
- package/dist/lib/chunk-share.mjs +23 -0
- package/dist/lib/chunk-share.mjs.map +1 -0
- package/dist/lib/chunk-snapshot.mjs +24 -0
- package/dist/lib/chunk-snapshot.mjs.map +1 -0
- package/dist/lib/chunk-spaces-ready.mjs +242 -0
- package/dist/lib/chunk-spaces-ready.mjs.map +1 -0
- package/dist/lib/chunk-state.mjs +48 -0
- package/dist/lib/chunk-state.mjs.map +1 -0
- package/dist/lib/chunk-types.mjs +56 -0
- package/dist/lib/chunk-types.mjs.map +1 -0
- package/dist/lib/chunk-undo-mappings.mjs +40 -0
- package/dist/lib/chunk-undo-mappings.mjs.map +1 -0
- package/dist/lib/chunk-util.mjs +34 -0
- package/dist/lib/chunk-util.mjs.map +1 -0
- package/dist/lib/chunk-wait-for-object.mjs +16 -0
- package/dist/lib/chunk-wait-for-object.mjs.map +1 -0
- package/dist/lib/components.mjs +329 -0
- package/dist/lib/components.mjs.map +1 -0
- package/dist/lib/{neutral/chunk-C2ULK22J.mjs → constants.mjs} +5 -10
- package/dist/lib/constants.mjs.map +1 -0
- package/dist/lib/containers.mjs +31 -0
- package/dist/lib/containers.mjs.map +1 -0
- package/dist/lib/hooks.mjs +185 -0
- package/dist/lib/hooks.mjs.map +1 -0
- package/dist/lib/index.mjs +7 -0
- package/dist/lib/meta.mjs +2 -0
- package/dist/lib/operations.mjs +8 -0
- package/dist/lib/operations.mjs.map +1 -0
- package/dist/lib/plugin.mjs +9 -0
- package/dist/lib/plugin.mjs.map +1 -0
- package/dist/lib/testing.mjs +2 -0
- package/dist/lib/translations.mjs +350 -0
- package/dist/lib/translations.mjs.map +1 -0
- package/dist/lib/types.mjs +60 -0
- package/dist/lib/types.mjs.map +1 -0
- package/dist/types/src/SpacePlugin.workerd.d.ts.map +1 -1
- package/dist/types/src/capabilities/SpaceFormFields.d.ts +10 -0
- package/dist/types/src/capabilities/SpaceFormFields.d.ts.map +1 -0
- package/dist/types/src/capabilities/SpaceSurfaces.d.ts +50 -0
- package/dist/types/src/capabilities/SpaceSurfaces.d.ts.map +1 -0
- package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +1 -1
- package/dist/types/src/capabilities/app-graph-builder/extensions/collections.d.ts +6 -1
- package/dist/types/src/capabilities/app-graph-builder/extensions/collections.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder/extensions/companions.d.ts +1 -1
- package/dist/types/src/capabilities/app-graph-builder/extensions/companions.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder/extensions/database.d.ts +7 -1
- package/dist/types/src/capabilities/app-graph-builder/extensions/database.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder/extensions/settings.d.ts +2 -7
- package/dist/types/src/capabilities/app-graph-builder/extensions/settings.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder/extensions/shared.d.ts +3 -2
- package/dist/types/src/capabilities/app-graph-builder/extensions/shared.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder/extensions/spaces.d.ts +5 -0
- package/dist/types/src/capabilities/app-graph-builder/extensions/spaces.d.ts.map +1 -1
- package/dist/types/src/capabilities/create-object.d.ts +1 -1
- package/dist/types/src/capabilities/identity-created.d.ts +1 -1
- package/dist/types/src/capabilities/index.d.ts +1 -1
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/navigation-handler/navigation-handler.d.ts +3 -1
- package/dist/types/src/capabilities/navigation-handler/navigation-handler.d.ts.map +1 -1
- package/dist/types/src/capabilities/navigation-target-resolver.d.ts +5 -0
- package/dist/types/src/capabilities/navigation-target-resolver.d.ts.map +1 -0
- package/dist/types/src/capabilities/operation-handler.d.ts +1 -1
- package/dist/types/src/capabilities/react-root.d.ts +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/repair.d.ts +1 -1
- package/dist/types/src/capabilities/settings.d.ts +1 -1
- package/dist/types/src/capabilities/spaces-ready.d.ts +1 -1
- package/dist/types/src/capabilities/state.d.ts +1 -1
- package/dist/types/src/capabilities/try-get-view.d.ts +7 -0
- package/dist/types/src/capabilities/try-get-view.d.ts.map +1 -0
- package/dist/types/src/capabilities/undo-mappings.d.ts +1 -1
- package/dist/types/src/collection-path.d.ts +28 -0
- package/dist/types/src/collection-path.d.ts.map +1 -0
- package/dist/types/src/collection-path.test.d.ts +2 -0
- package/dist/types/src/collection-path.test.d.ts.map +1 -0
- package/dist/types/src/commands/space/export/export.d.ts +23 -0
- package/dist/types/src/commands/space/export/export.d.ts.map +1 -0
- package/dist/types/src/commands/space/export/export.test.d.ts +2 -0
- package/dist/types/src/commands/space/export/export.test.d.ts.map +1 -0
- package/dist/types/src/commands/space/export/index.d.ts +2 -0
- package/dist/types/src/commands/space/export/index.d.ts.map +1 -0
- package/dist/types/src/commands/space/import/import.d.ts +17 -0
- package/dist/types/src/commands/space/import/import.d.ts.map +1 -0
- package/dist/types/src/commands/space/import/import.test.d.ts +2 -0
- package/dist/types/src/commands/space/import/import.test.d.ts.map +1 -0
- package/dist/types/src/commands/space/import/index.d.ts +2 -0
- package/dist/types/src/commands/space/import/index.d.ts.map +1 -0
- package/dist/types/src/commands/space/index.d.ts +8 -1
- package/dist/types/src/commands/space/index.d.ts.map +1 -1
- package/dist/types/src/components/AwaitingObject/AwaitingObject.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/status.d.ts +7 -4
- package/dist/types/src/components/SyncStatus/status.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/status.test.d.ts +2 -0
- package/dist/types/src/components/SyncStatus/status.test.d.ts.map +1 -0
- package/dist/types/src/containers/CollectionArticle/CollectionArticle.d.ts +4 -4
- package/dist/types/src/containers/CollectionArticle/CollectionArticle.d.ts.map +1 -1
- package/dist/types/src/containers/CollectionSection/CollectionSection.d.ts +4 -1
- package/dist/types/src/containers/CollectionSection/CollectionSection.d.ts.map +1 -1
- package/dist/types/src/containers/CreateObjectDialog/CreateObjectDialog.d.ts +4 -1
- package/dist/types/src/containers/CreateObjectDialog/CreateObjectDialog.d.ts.map +1 -1
- package/dist/types/src/containers/CreateObjectDialog/CreateObjectDialog.stories.d.ts +420 -9
- package/dist/types/src/containers/CreateObjectDialog/CreateObjectDialog.stories.d.ts.map +1 -1
- package/dist/types/src/containers/CreateSpaceDialog/CreateSpaceDialog.d.ts +4 -1
- package/dist/types/src/containers/CreateSpaceDialog/CreateSpaceDialog.d.ts.map +1 -1
- package/dist/types/src/containers/CreateSpaceDialog/CreateSpaceDialog.stories.d.ts +423 -10
- package/dist/types/src/containers/CreateSpaceDialog/CreateSpaceDialog.stories.d.ts.map +1 -1
- package/dist/types/src/containers/ImportSpaceDialog/ImportSpaceDialog.d.ts +4 -1
- package/dist/types/src/containers/ImportSpaceDialog/ImportSpaceDialog.d.ts.map +1 -1
- package/dist/types/src/containers/InlineSyncStatus/InlineSyncStatus.d.ts +5 -2
- package/dist/types/src/containers/InlineSyncStatus/InlineSyncStatus.d.ts.map +1 -1
- package/dist/types/src/containers/JoinDialog/JoinDialog.d.ts +4 -1
- package/dist/types/src/containers/JoinDialog/JoinDialog.d.ts.map +1 -1
- package/dist/types/src/containers/JoinDialog/JoinDialog.stories.d.ts +423 -10
- package/dist/types/src/containers/JoinDialog/JoinDialog.stories.d.ts.map +1 -1
- package/dist/types/src/containers/MembersContainer/MembersContainer.d.ts +4 -1
- package/dist/types/src/containers/MembersContainer/MembersContainer.d.ts.map +1 -1
- package/dist/types/src/containers/MergePreview/MergePreview.d.ts +16 -0
- package/dist/types/src/containers/MergePreview/MergePreview.d.ts.map +1 -0
- package/dist/types/src/containers/MergePreview/index.d.ts +2 -0
- package/dist/types/src/containers/MergePreview/index.d.ts.map +1 -0
- package/dist/types/src/containers/ObjectCardStack/ObjectCardStack.d.ts +3 -2
- package/dist/types/src/containers/ObjectCardStack/ObjectCardStack.d.ts.map +1 -1
- package/dist/types/src/containers/RecordArticle/RecordArticle.d.ts +4 -1
- package/dist/types/src/containers/RecordArticle/RecordArticle.d.ts.map +1 -1
- package/dist/types/src/containers/RecordArticle/RecordArticle.stories.d.ts.map +1 -1
- package/dist/types/src/containers/RelatedArticle/RelatedArticle.d.ts +4 -1
- package/dist/types/src/containers/RelatedArticle/RelatedArticle.d.ts.map +1 -1
- package/dist/types/src/containers/RenamePopover/RenamePopover.d.ts +4 -4
- package/dist/types/src/containers/RenamePopover/RenamePopover.d.ts.map +1 -1
- package/dist/types/src/containers/SchemaContainer/SchemaContainer.d.ts +4 -7
- package/dist/types/src/containers/SchemaContainer/SchemaContainer.d.ts.map +1 -1
- package/dist/types/src/containers/SchemaContainer/use-query-space-types.d.ts +7 -0
- package/dist/types/src/containers/SchemaContainer/use-query-space-types.d.ts.map +1 -0
- package/dist/types/src/containers/SpaceHomeArticle/SpaceHomeArticle.d.ts +4 -11
- package/dist/types/src/containers/SpaceHomeArticle/SpaceHomeArticle.d.ts.map +1 -1
- package/dist/types/src/containers/SpaceHomeArticle/SpaceHomeArticle.stories.d.ts +14 -0
- package/dist/types/src/containers/SpaceHomeArticle/SpaceHomeArticle.stories.d.ts.map +1 -0
- package/dist/types/src/containers/SpaceHomeDashboard/SpaceHomeDashboard.d.ts +15 -0
- package/dist/types/src/containers/SpaceHomeDashboard/SpaceHomeDashboard.d.ts.map +1 -0
- package/dist/types/src/containers/SpaceHomeDashboard/SpaceHomeDashboard.stories.d.ts +20 -0
- package/dist/types/src/containers/SpaceHomeDashboard/SpaceHomeDashboard.stories.d.ts.map +1 -0
- package/dist/types/src/containers/SpaceHomeDashboard/index.d.ts +2 -0
- package/dist/types/src/containers/SpaceHomeDashboard/index.d.ts.map +1 -0
- package/dist/types/src/containers/SpaceHomeRecent/SpaceHomeRecent.d.ts +5 -8
- package/dist/types/src/containers/SpaceHomeRecent/SpaceHomeRecent.d.ts.map +1 -1
- package/dist/types/src/containers/SpacePresence/SpacePresence.d.ts +7 -4
- package/dist/types/src/containers/SpacePresence/SpacePresence.d.ts.map +1 -1
- package/dist/types/src/containers/SpacePresence/SpacePresence.stories.d.ts +419 -9
- package/dist/types/src/containers/SpacePresence/SpacePresence.stories.d.ts.map +1 -1
- package/dist/types/src/containers/SpaceSettings/SpaceSettings.d.ts +4 -1
- package/dist/types/src/containers/SpaceSettings/SpaceSettings.d.ts.map +1 -1
- package/dist/types/src/containers/SpaceSettings/SpaceSettings.stories.d.ts +423 -10
- package/dist/types/src/containers/SpaceSettings/SpaceSettings.stories.d.ts.map +1 -1
- package/dist/types/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.stories.d.ts +419 -9
- package/dist/types/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.stories.d.ts.map +1 -1
- package/dist/types/src/containers/SyncStatus/SyncStatus.d.ts +7 -2
- package/dist/types/src/containers/SyncStatus/SyncStatus.d.ts.map +1 -1
- package/dist/types/src/containers/SyncStatus/SyncStatus.stories.d.ts +434 -11
- package/dist/types/src/containers/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
- package/dist/types/src/containers/TypeArticle/TypeArticle.d.ts +14 -0
- package/dist/types/src/containers/TypeArticle/TypeArticle.d.ts.map +1 -0
- package/dist/types/src/containers/TypeArticle/TypeArticle.stories.d.ts +45 -0
- package/dist/types/src/containers/TypeArticle/TypeArticle.stories.d.ts.map +1 -0
- package/dist/types/src/containers/TypeArticle/duplicatesGroup.d.ts +19 -0
- package/dist/types/src/containers/TypeArticle/duplicatesGroup.d.ts.map +1 -0
- package/dist/types/src/containers/TypeArticle/index.d.ts +2 -0
- package/dist/types/src/containers/TypeArticle/index.d.ts.map +1 -0
- package/dist/types/src/containers/TypeArticle/useDuplicates.d.ts +34 -0
- package/dist/types/src/containers/TypeArticle/useDuplicates.d.ts.map +1 -0
- package/dist/types/src/containers/ViewEditor/ViewEditor.d.ts +4 -1
- package/dist/types/src/containers/ViewEditor/ViewEditor.d.ts.map +1 -1
- package/dist/types/src/containers/index.d.ts +3 -2
- package/dist/types/src/containers/index.d.ts.map +1 -1
- package/dist/types/src/errors.d.ts +30 -0
- package/dist/types/src/errors.d.ts.map +1 -1
- package/dist/types/src/hooks/index.d.ts +2 -0
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useEdgeStatus.d.ts +6 -0
- package/dist/types/src/hooks/useEdgeStatus.d.ts.map +1 -0
- package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
- package/dist/types/src/hooks/useStalled.d.ts +13 -0
- package/dist/types/src/hooks/useStalled.d.ts.map +1 -0
- package/dist/types/src/operations/create.d.ts.map +1 -1
- package/dist/types/src/operations/definitions.d.ts +29 -1
- package/dist/types/src/operations/definitions.d.ts.map +1 -1
- package/dist/types/src/operations/find-duplicates.d.ts +5 -0
- package/dist/types/src/operations/find-duplicates.d.ts.map +1 -0
- package/dist/types/src/operations/helpers.d.ts +3 -0
- package/dist/types/src/operations/helpers.d.ts.map +1 -1
- package/dist/types/src/operations/index.d.ts.map +1 -1
- package/dist/types/src/operations/join.d.ts.map +1 -1
- package/dist/types/src/operations/merge-duplicates.d.ts +5 -0
- package/dist/types/src/operations/merge-duplicates.d.ts.map +1 -0
- package/dist/types/src/operations/open-settings.d.ts.map +1 -1
- package/dist/types/src/operations/remove-objects.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +419 -9
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/type-section-path.d.ts +22 -0
- package/dist/types/src/type-section-path.d.ts.map +1 -0
- package/dist/types/src/type-section-path.test.d.ts +2 -0
- package/dist/types/src/type-section-path.test.d.ts.map +1 -0
- package/dist/types/src/types/capabilities.d.ts +22 -2
- package/dist/types/src/types/capabilities.d.ts.map +1 -1
- package/dist/types/src/types/surface.d.ts +4 -4
- package/dist/types/src/types/surface.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +6 -0
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +87 -72
- package/src/SpacePlugin.ts +6 -6
- package/src/SpacePlugin.workerd.ts +3 -1
- package/src/capabilities/SpaceFormFields.tsx +72 -0
- package/src/capabilities/SpaceSurfaces.tsx +219 -0
- package/src/capabilities/app-graph-builder/extensions/collections.ts +74 -21
- package/src/capabilities/app-graph-builder/extensions/companions.ts +10 -5
- package/src/capabilities/app-graph-builder/extensions/database.ts +64 -57
- package/src/capabilities/app-graph-builder/extensions/settings.ts +23 -13
- package/src/capabilities/app-graph-builder/extensions/shared.ts +3 -2
- package/src/capabilities/app-graph-builder/extensions/spaces.ts +6 -7
- package/src/capabilities/create-object.ts +1 -14
- package/src/capabilities/index.ts +4 -1
- package/src/capabilities/navigation-handler/navigation-handler.ts +27 -7
- package/src/capabilities/navigation-target-resolver.ts +77 -0
- package/src/capabilities/react-surface.ts +274 -0
- package/src/capabilities/spaces-ready.ts +31 -18
- package/src/capabilities/state.ts +3 -1
- package/src/capabilities/try-get-view.ts +24 -0
- package/src/collection-path.test.ts +161 -0
- package/src/collection-path.ts +97 -0
- package/src/commands/space/export/export.test.ts +68 -0
- package/src/commands/space/export/export.ts +118 -0
- package/src/commands/space/export/index.ts +5 -0
- package/src/commands/space/import/import.test.ts +80 -0
- package/src/commands/space/import/import.ts +65 -0
- package/src/commands/space/import/index.ts +5 -0
- package/src/commands/space/index.ts +16 -1
- package/src/components/AwaitingObject/AwaitingObject.tsx +10 -4
- package/src/components/CreateObjectPanel/CreateObjectPanel.tsx +16 -18
- package/src/components/SyncStatus/status.test.ts +49 -0
- package/src/components/SyncStatus/status.ts +25 -12
- package/src/containers/CollectionArticle/CollectionArticle.tsx +5 -3
- package/src/containers/CollectionSection/CollectionSection.tsx +2 -0
- package/src/containers/CreateObjectDialog/CreateObjectDialog.stories.tsx +18 -4
- package/src/containers/CreateObjectDialog/CreateObjectDialog.tsx +13 -17
- package/src/containers/CreateSpaceDialog/CreateSpaceDialog.tsx +28 -19
- package/src/containers/DefaultProperties/DefaultProperties.tsx +4 -2
- package/src/containers/ImportSpaceDialog/ImportSpaceDialog.tsx +4 -2
- package/src/containers/InlineSyncStatus/InlineSyncStatus.tsx +7 -17
- package/src/containers/JoinDialog/JoinDialog.tsx +5 -3
- package/src/containers/MembersContainer/MembersContainer.tsx +2 -0
- package/src/containers/MergePreview/MergePreview.tsx +90 -0
- package/src/containers/MergePreview/index.ts +5 -0
- package/src/containers/ObjectCardStack/ObjectCardStack.tsx +46 -43
- package/src/containers/RecordArticle/RecordArticle.stories.tsx +2 -1
- package/src/containers/RecordArticle/RecordArticle.tsx +8 -4
- package/src/containers/RelatedArticle/RelatedArticle.tsx +7 -3
- package/src/containers/RenamePopover/RenamePopover.tsx +2 -0
- package/src/containers/SchemaContainer/SchemaContainer.tsx +4 -17
- package/src/containers/SchemaContainer/use-query-space-types.ts +28 -0
- package/src/containers/SpaceHomeArticle/SpaceHomeArticle.stories.tsx +116 -0
- package/src/containers/SpaceHomeArticle/SpaceHomeArticle.tsx +6 -5
- package/src/containers/SpaceHomeDashboard/SpaceHomeDashboard.stories.tsx +99 -0
- package/src/containers/SpaceHomeDashboard/SpaceHomeDashboard.tsx +109 -0
- package/src/containers/SpaceHomeDashboard/index.ts +5 -0
- package/src/containers/SpaceHomeRecent/SpaceHomeRecent.tsx +17 -15
- package/src/containers/SpacePresence/SpacePresence.stories.tsx +4 -4
- package/src/containers/SpacePresence/SpacePresence.tsx +37 -36
- package/src/containers/SpaceSettings/SpaceSettings.tsx +3 -1
- package/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.tsx +7 -2
- package/src/containers/SyncStatus/SyncStatus.stories.tsx +80 -1
- package/src/containers/SyncStatus/SyncStatus.tsx +36 -46
- package/src/containers/TypeArticle/TypeArticle.stories.tsx +249 -0
- package/src/containers/TypeArticle/TypeArticle.tsx +362 -0
- package/src/containers/TypeArticle/duplicatesGroup.tsx +150 -0
- package/src/containers/TypeArticle/index.ts +5 -0
- package/src/containers/TypeArticle/useDuplicates.ts +119 -0
- package/src/containers/ViewEditor/ViewEditor.tsx +3 -1
- package/src/containers/index.ts +3 -2
- package/src/errors.ts +6 -0
- package/src/hooks/index.ts +2 -0
- package/src/hooks/useEdgeStatus.ts +40 -0
- package/src/hooks/useInputSurfaceLookup.tsx +5 -4
- package/src/hooks/useRelatedObjects.ts +1 -1
- package/src/hooks/useStalled.ts +39 -0
- package/src/operations/add-object.ts +7 -7
- package/src/operations/create.ts +11 -3
- package/src/operations/definitions.ts +54 -1
- package/src/operations/find-duplicates.ts +33 -0
- package/src/operations/get-share-link.ts +1 -1
- package/src/operations/helpers.ts +11 -0
- package/src/operations/index.ts +2 -0
- package/src/operations/join.ts +6 -5
- package/src/operations/merge-duplicates.ts +51 -0
- package/src/operations/open-members.ts +3 -3
- package/src/operations/open-settings.ts +5 -3
- package/src/operations/remove-objects.ts +42 -3
- package/src/translations.ts +52 -11
- package/src/type-section-path.test.ts +48 -0
- package/src/type-section-path.ts +39 -0
- package/src/types/capabilities.ts +26 -2
- package/src/types/surface.ts +4 -8
- package/src/types/types.ts +7 -0
- package/dist/lib/neutral/CollectionArticle-BMH7SZ7Q.mjs +0 -93
- package/dist/lib/neutral/CollectionArticle-BMH7SZ7Q.mjs.map +0 -7
- package/dist/lib/neutral/CollectionSection-BLYTGOKH.mjs +0 -19
- package/dist/lib/neutral/CollectionSection-BLYTGOKH.mjs.map +0 -7
- package/dist/lib/neutral/CreateObjectDialog-5454N3FJ.mjs +0 -221
- package/dist/lib/neutral/CreateObjectDialog-5454N3FJ.mjs.map +0 -7
- package/dist/lib/neutral/CreateSpaceDialog-WWNUTLVK.mjs +0 -61
- package/dist/lib/neutral/CreateSpaceDialog-WWNUTLVK.mjs.map +0 -7
- package/dist/lib/neutral/DefaultProperties-5SAWQC6I.mjs +0 -58
- package/dist/lib/neutral/DefaultProperties-5SAWQC6I.mjs.map +0 -7
- package/dist/lib/neutral/ImportSpaceDialog-CSSRTFAO.mjs +0 -64
- package/dist/lib/neutral/ImportSpaceDialog-CSSRTFAO.mjs.map +0 -7
- package/dist/lib/neutral/InlineSyncStatus-UOUTAPCU.mjs +0 -49
- package/dist/lib/neutral/InlineSyncStatus-UOUTAPCU.mjs.map +0 -7
- package/dist/lib/neutral/JoinDialog-ATNUCNL2.mjs +0 -97
- package/dist/lib/neutral/JoinDialog-ATNUCNL2.mjs.map +0 -7
- package/dist/lib/neutral/MembersContainer-C4ZTP6ZW.mjs +0 -231
- package/dist/lib/neutral/MembersContainer-C4ZTP6ZW.mjs.map +0 -7
- package/dist/lib/neutral/MenuFooter-FWE5LFM4.mjs +0 -33
- package/dist/lib/neutral/MenuFooter-FWE5LFM4.mjs.map +0 -7
- package/dist/lib/neutral/ObjectCardStack-DHVDRNRK.mjs +0 -55
- package/dist/lib/neutral/ObjectCardStack-DHVDRNRK.mjs.map +0 -7
- package/dist/lib/neutral/RecordArticle-JSORXRAA.mjs +0 -102
- package/dist/lib/neutral/RecordArticle-JSORXRAA.mjs.map +0 -7
- package/dist/lib/neutral/RelatedArticle-Z777WVDW.mjs +0 -69
- package/dist/lib/neutral/RelatedArticle-Z777WVDW.mjs.map +0 -7
- package/dist/lib/neutral/RenamePopover-AZT2KPOF.mjs +0 -104
- package/dist/lib/neutral/RenamePopover-AZT2KPOF.mjs.map +0 -7
- package/dist/lib/neutral/SchemaContainer-4GJKQBXM.mjs +0 -53
- package/dist/lib/neutral/SchemaContainer-4GJKQBXM.mjs.map +0 -7
- package/dist/lib/neutral/SmallPresenceLive-FW3AMEY5.mjs +0 -8
- package/dist/lib/neutral/SmallPresenceLive-FW3AMEY5.mjs.map +0 -7
- package/dist/lib/neutral/SpaceHomeArticle-Y47TLZ72.mjs +0 -78
- package/dist/lib/neutral/SpaceHomeArticle-Y47TLZ72.mjs.map +0 -7
- package/dist/lib/neutral/SpaceHomeRecent-S57AO3EV.mjs +0 -89
- package/dist/lib/neutral/SpaceHomeRecent-S57AO3EV.mjs.map +0 -7
- package/dist/lib/neutral/SpacePlugin.mjs +0 -10
- package/dist/lib/neutral/SpacePlugin.mjs.map +0 -7
- package/dist/lib/neutral/SpacePlugin.node.mjs +0 -838
- package/dist/lib/neutral/SpacePlugin.node.mjs.map +0 -7
- package/dist/lib/neutral/SpacePlugin.workerd.mjs +0 -34
- package/dist/lib/neutral/SpacePlugin.workerd.mjs.map +0 -7
- package/dist/lib/neutral/SpacePresence-T37WH43Y.mjs +0 -11
- package/dist/lib/neutral/SpacePresence-T37WH43Y.mjs.map +0 -7
- package/dist/lib/neutral/SpaceSettings-6CZF7GEO.mjs +0 -60
- package/dist/lib/neutral/SpaceSettings-6CZF7GEO.mjs.map +0 -7
- package/dist/lib/neutral/SpaceSettingsContainer-72CJWELM.mjs +0 -279
- package/dist/lib/neutral/SpaceSettingsContainer-72CJWELM.mjs.map +0 -7
- package/dist/lib/neutral/SyncStatus-J7CHLO5O.mjs +0 -147
- package/dist/lib/neutral/SyncStatus-J7CHLO5O.mjs.map +0 -7
- package/dist/lib/neutral/TypeCollectionArticle-W76ADS2G.mjs +0 -143
- package/dist/lib/neutral/TypeCollectionArticle-W76ADS2G.mjs.map +0 -7
- package/dist/lib/neutral/ViewEditor-QXRUOKXR.mjs +0 -101
- package/dist/lib/neutral/ViewEditor-QXRUOKXR.mjs.map +0 -7
- package/dist/lib/neutral/add-object-H2N4AOQJ.mjs +0 -77
- package/dist/lib/neutral/add-object-H2N4AOQJ.mjs.map +0 -7
- package/dist/lib/neutral/add-relation-BGTLART5.mjs +0 -26
- package/dist/lib/neutral/add-relation-BGTLART5.mjs.map +0 -7
- package/dist/lib/neutral/add-type-JIDLRANR.mjs +0 -57
- package/dist/lib/neutral/add-type-JIDLRANR.mjs.map +0 -7
- package/dist/lib/neutral/app-graph-builder-7H2KOD4B.mjs +0 -1332
- package/dist/lib/neutral/app-graph-builder-7H2KOD4B.mjs.map +0 -7
- package/dist/lib/neutral/capabilities/index.mjs +0 -46
- package/dist/lib/neutral/capabilities/index.mjs.map +0 -7
- package/dist/lib/neutral/capabilities/node.mjs +0 -15
- package/dist/lib/neutral/capabilities/node.mjs.map +0 -7
- package/dist/lib/neutral/chunk-52ASDNRA.mjs +0 -41
- package/dist/lib/neutral/chunk-52ASDNRA.mjs.map +0 -7
- package/dist/lib/neutral/chunk-5ZZS3KMK.mjs.map +0 -7
- package/dist/lib/neutral/chunk-C2ULK22J.mjs.map +0 -7
- package/dist/lib/neutral/chunk-F5KLUP2P.mjs +0 -115
- package/dist/lib/neutral/chunk-F5KLUP2P.mjs.map +0 -7
- package/dist/lib/neutral/chunk-G2KHP7FX.mjs +0 -8
- package/dist/lib/neutral/chunk-G2KHP7FX.mjs.map +0 -7
- package/dist/lib/neutral/chunk-J5LGTIGS.mjs +0 -10
- package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +0 -7
- package/dist/lib/neutral/chunk-LMUG6PEJ.mjs +0 -572
- package/dist/lib/neutral/chunk-LMUG6PEJ.mjs.map +0 -7
- package/dist/lib/neutral/chunk-RAAHDTVF.mjs +0 -167
- package/dist/lib/neutral/chunk-RAAHDTVF.mjs.map +0 -7
- package/dist/lib/neutral/chunk-SPWAMXNR.mjs +0 -131
- package/dist/lib/neutral/chunk-SPWAMXNR.mjs.map +0 -7
- package/dist/lib/neutral/chunk-U5WTDOMV.mjs +0 -8
- package/dist/lib/neutral/chunk-U5WTDOMV.mjs.map +0 -7
- package/dist/lib/neutral/chunk-V7JALUM3.mjs +0 -9
- package/dist/lib/neutral/chunk-V7JALUM3.mjs.map +0 -7
- package/dist/lib/neutral/close-5WEQZRNK.mjs +0 -17
- package/dist/lib/neutral/close-5WEQZRNK.mjs.map +0 -7
- package/dist/lib/neutral/components/index.mjs +0 -401
- package/dist/lib/neutral/components/index.mjs.map +0 -7
- package/dist/lib/neutral/constants.mjs +0 -16
- package/dist/lib/neutral/constants.mjs.map +0 -7
- package/dist/lib/neutral/containers/index.mjs +0 -55
- package/dist/lib/neutral/containers/index.mjs.map +0 -7
- package/dist/lib/neutral/create-QZ47FHQU.mjs +0 -75
- package/dist/lib/neutral/create-QZ47FHQU.mjs.map +0 -7
- package/dist/lib/neutral/create-object-ZU6FZW5X.mjs +0 -96
- package/dist/lib/neutral/create-object-ZU6FZW5X.mjs.map +0 -7
- package/dist/lib/neutral/delete-SPCU2VFM.mjs +0 -17
- package/dist/lib/neutral/delete-SPCU2VFM.mjs.map +0 -7
- package/dist/lib/neutral/delete-field-TAKJVEAD.mjs +0 -42
- package/dist/lib/neutral/delete-field-TAKJVEAD.mjs.map +0 -7
- package/dist/lib/neutral/duplicate-object-BUPZOO6S.mjs +0 -17
- package/dist/lib/neutral/duplicate-object-BUPZOO6S.mjs.map +0 -7
- package/dist/lib/neutral/export-space-S5SCAL4M.mjs +0 -34
- package/dist/lib/neutral/export-space-S5SCAL4M.mjs.map +0 -7
- package/dist/lib/neutral/get-share-link-CLM5IQRL.mjs +0 -41
- package/dist/lib/neutral/get-share-link-CLM5IQRL.mjs.map +0 -7
- package/dist/lib/neutral/hooks/index.mjs +0 -133
- package/dist/lib/neutral/hooks/index.mjs.map +0 -7
- package/dist/lib/neutral/identity-created-BEYMLBK4.mjs +0 -32
- package/dist/lib/neutral/identity-created-BEYMLBK4.mjs.map +0 -7
- package/dist/lib/neutral/import-space-LJQK3KT7.mjs +0 -28
- package/dist/lib/neutral/import-space-LJQK3KT7.mjs.map +0 -7
- package/dist/lib/neutral/index.mjs +0 -62
- package/dist/lib/neutral/index.mjs.map +0 -7
- package/dist/lib/neutral/join-FSODYIOC.mjs +0 -54
- package/dist/lib/neutral/join-FSODYIOC.mjs.map +0 -7
- package/dist/lib/neutral/meta.json +0 -1
- package/dist/lib/neutral/meta.mjs +0 -8
- package/dist/lib/neutral/meta.mjs.map +0 -7
- package/dist/lib/neutral/migrate-WHM6LU7L.mjs +0 -52
- package/dist/lib/neutral/migrate-WHM6LU7L.mjs.map +0 -7
- package/dist/lib/neutral/navigation-handler-ZF7MV2HL.mjs +0 -44
- package/dist/lib/neutral/navigation-handler-ZF7MV2HL.mjs.map +0 -7
- package/dist/lib/neutral/navigation-resolver-KBESOSWU.mjs +0 -82
- package/dist/lib/neutral/navigation-resolver-KBESOSWU.mjs.map +0 -7
- package/dist/lib/neutral/open-JCXTL3SK.mjs +0 -17
- package/dist/lib/neutral/open-JCXTL3SK.mjs.map +0 -7
- package/dist/lib/neutral/open-create-object-WAIAU7TA.mjs +0 -42
- package/dist/lib/neutral/open-create-object-WAIAU7TA.mjs.map +0 -7
- package/dist/lib/neutral/open-create-space-VU47FWPZ.mjs +0 -24
- package/dist/lib/neutral/open-create-space-VU47FWPZ.mjs.map +0 -7
- package/dist/lib/neutral/open-import-space-GUHIEWYB.mjs +0 -24
- package/dist/lib/neutral/open-import-space-GUHIEWYB.mjs.map +0 -7
- package/dist/lib/neutral/open-members-MLLBHKUU.mjs +0 -23
- package/dist/lib/neutral/open-members-MLLBHKUU.mjs.map +0 -7
- package/dist/lib/neutral/open-settings-DTPZF4U4.mjs +0 -23
- package/dist/lib/neutral/open-settings-DTPZF4U4.mjs.map +0 -7
- package/dist/lib/neutral/operation-handler-YPIRQOH2.mjs +0 -13
- package/dist/lib/neutral/operation-handler-YPIRQOH2.mjs.map +0 -7
- package/dist/lib/neutral/operations/index.mjs +0 -13
- package/dist/lib/neutral/operations/index.mjs.map +0 -7
- package/dist/lib/neutral/plugin.mjs +0 -18
- package/dist/lib/neutral/plugin.mjs.map +0 -7
- package/dist/lib/neutral/react-root-YLYRCSAZ.mjs +0 -23
- package/dist/lib/neutral/react-root-YLYRCSAZ.mjs.map +0 -7
- package/dist/lib/neutral/react-surface-LRA7GIFN.mjs +0 -367
- package/dist/lib/neutral/react-surface-LRA7GIFN.mjs.map +0 -7
- package/dist/lib/neutral/remove-objects-WEO66EDS.mjs +0 -55
- package/dist/lib/neutral/remove-objects-WEO66EDS.mjs.map +0 -7
- package/dist/lib/neutral/rename-Q6UNCBIM.mjs +0 -26
- package/dist/lib/neutral/rename-Q6UNCBIM.mjs.map +0 -7
- package/dist/lib/neutral/rename-object-2UCEGU7U.mjs +0 -26
- package/dist/lib/neutral/rename-object-2UCEGU7U.mjs.map +0 -7
- package/dist/lib/neutral/repair-HMH476U3.mjs +0 -32
- package/dist/lib/neutral/repair-HMH476U3.mjs.map +0 -7
- package/dist/lib/neutral/restore-field-6CQAFOXY.mjs +0 -40
- package/dist/lib/neutral/restore-field-6CQAFOXY.mjs.map +0 -7
- package/dist/lib/neutral/restore-objects-3VINLP7C.mjs +0 -39
- package/dist/lib/neutral/restore-objects-3VINLP7C.mjs.map +0 -7
- package/dist/lib/neutral/settings-5IBSYBVU.mjs +0 -28
- package/dist/lib/neutral/settings-5IBSYBVU.mjs.map +0 -7
- package/dist/lib/neutral/share-A4WPILNF.mjs +0 -31
- package/dist/lib/neutral/share-A4WPILNF.mjs.map +0 -7
- package/dist/lib/neutral/snapshot-HBYMAPA7.mjs +0 -30
- package/dist/lib/neutral/snapshot-HBYMAPA7.mjs.map +0 -7
- package/dist/lib/neutral/spaces-ready-GWMSU72V.mjs +0 -281
- package/dist/lib/neutral/spaces-ready-GWMSU72V.mjs.map +0 -7
- package/dist/lib/neutral/state-KMH2NUAL.mjs +0 -55
- package/dist/lib/neutral/state-KMH2NUAL.mjs.map +0 -7
- package/dist/lib/neutral/testing.mjs +0 -8
- package/dist/lib/neutral/testing.mjs.map +0 -7
- package/dist/lib/neutral/translations.mjs +0 -315
- package/dist/lib/neutral/translations.mjs.map +0 -7
- package/dist/lib/neutral/types/index.mjs +0 -40
- package/dist/lib/neutral/types/index.mjs.map +0 -7
- package/dist/lib/neutral/undo-mappings-P43EAUGI.mjs +0 -68
- package/dist/lib/neutral/undo-mappings-P43EAUGI.mjs.map +0 -7
- package/dist/lib/neutral/wait-for-object-U6P2NNWY.mjs +0 -23
- package/dist/lib/neutral/wait-for-object-U6P2NNWY.mjs.map +0 -7
- package/dist/types/src/capabilities/navigation-resolver.d.ts +0 -5
- package/dist/types/src/capabilities/navigation-resolver.d.ts.map +0 -1
- package/dist/types/src/containers/MenuFooter/MenuFooter.d.ts +0 -6
- package/dist/types/src/containers/MenuFooter/MenuFooter.d.ts.map +0 -1
- package/dist/types/src/containers/MenuFooter/index.d.ts +0 -2
- package/dist/types/src/containers/MenuFooter/index.d.ts.map +0 -1
- package/dist/types/src/containers/TypeCollectionArticle/TypeCollectionArticle.d.ts +0 -16
- package/dist/types/src/containers/TypeCollectionArticle/TypeCollectionArticle.d.ts.map +0 -1
- package/dist/types/src/containers/TypeCollectionArticle/TypeCollectionArticle.stories.d.ts +0 -21
- package/dist/types/src/containers/TypeCollectionArticle/TypeCollectionArticle.stories.d.ts.map +0 -1
- package/dist/types/src/containers/TypeCollectionArticle/index.d.ts +0 -2
- package/dist/types/src/containers/TypeCollectionArticle/index.d.ts.map +0 -1
- package/src/capabilities/navigation-resolver.ts +0 -94
- package/src/capabilities/react-surface.tsx +0 -395
- package/src/containers/MenuFooter/MenuFooter.tsx +0 -33
- package/src/containers/MenuFooter/index.ts +0 -5
- package/src/containers/TypeCollectionArticle/TypeCollectionArticle.stories.tsx +0 -116
- package/src/containers/TypeCollectionArticle/TypeCollectionArticle.tsx +0 -162
- package/src/containers/TypeCollectionArticle/index.ts +0 -5
|
@@ -6,11 +6,23 @@ import * as Effect from 'effect/Effect';
|
|
|
6
6
|
import * as Option from 'effect/Option';
|
|
7
7
|
|
|
8
8
|
import { Capability } from '@dxos/app-framework';
|
|
9
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
AppAnnotation,
|
|
11
|
+
AppCapabilities,
|
|
12
|
+
AppNode,
|
|
13
|
+
AppNodeMatcher,
|
|
14
|
+
DeckSpec,
|
|
15
|
+
GraphPath,
|
|
16
|
+
LayoutOperation,
|
|
17
|
+
UrlResolution,
|
|
18
|
+
} from '@dxos/app-toolkit';
|
|
10
19
|
import { isSpace } from '@dxos/client/echo';
|
|
11
20
|
import { Operation } from '@dxos/compute';
|
|
12
|
-
import { Annotation, Collection, Obj, Type } from '@dxos/echo';
|
|
21
|
+
import { Annotation, Collection, Database, Obj, Type } from '@dxos/echo';
|
|
13
22
|
import { invariant } from '@dxos/invariant';
|
|
23
|
+
import { SpaceId } from '@dxos/keys';
|
|
24
|
+
import { log } from '@dxos/log';
|
|
25
|
+
import { ClientCapabilities } from '@dxos/plugin-client';
|
|
14
26
|
import { Graph, GraphBuilder, Node } from '@dxos/plugin-graph';
|
|
15
27
|
import { isNonNullable } from '@dxos/util';
|
|
16
28
|
|
|
@@ -18,6 +30,7 @@ import { meta } from '#meta';
|
|
|
18
30
|
import { SpaceOperation } from '#operations';
|
|
19
31
|
import { SpaceCapabilities } from '#types';
|
|
20
32
|
|
|
33
|
+
import { resolveCollectionObjectPath } from '../../../collection-path';
|
|
21
34
|
import {
|
|
22
35
|
COLLECTIONS_SECTION_TYPE,
|
|
23
36
|
COPY_LINK_LABEL,
|
|
@@ -30,6 +43,15 @@ import {
|
|
|
30
43
|
//
|
|
31
44
|
|
|
32
45
|
/** Creates collection-related extensions: collections section, collections, objects, and object actions. */
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* A collection is always a navigation target; what differs is what navigating to it shows. When a
|
|
49
|
+
* plugin renders collections as their own article (stack, simple-layout) that article wins, otherwise
|
|
50
|
+
* the deck opens the collection's contents. Returning `undefined` leaves the ordinary open in place.
|
|
51
|
+
*/
|
|
52
|
+
const collectionDeck = (object: Obj.Unknown, hasCollectionArticle: boolean): DeckSpec.DeckSpec | undefined =>
|
|
53
|
+
!hasCollectionArticle && Obj.instanceOf(Collection.Collection, object) ? { initial: 'children' } : undefined;
|
|
54
|
+
|
|
33
55
|
export const createCollectionExtensions = Effect.fnUntraced(function* ({
|
|
34
56
|
shareableLinkOrigin,
|
|
35
57
|
}: {
|
|
@@ -41,13 +63,13 @@ export const createCollectionExtensions = Effect.fnUntraced(function* ({
|
|
|
41
63
|
// Content section group — created alongside collections so the group always
|
|
42
64
|
// appears when the space plugin is active and hides when there are no children.
|
|
43
65
|
GraphBuilder.createExtension({
|
|
44
|
-
id:
|
|
66
|
+
id: GraphPath.GroupSegments.content,
|
|
45
67
|
match: AppNodeMatcher.whenSpace,
|
|
46
68
|
connector: (space) =>
|
|
47
69
|
Effect.succeed([
|
|
48
70
|
AppNode.makeGroup({
|
|
49
|
-
id:
|
|
50
|
-
type:
|
|
71
|
+
id: GraphPath.GroupSegments.content,
|
|
72
|
+
type: GraphPath.GroupTypes.content,
|
|
51
73
|
label: ['nav-tree-group-content.label', { ns: meta.profile.key }],
|
|
52
74
|
space,
|
|
53
75
|
position: 200,
|
|
@@ -58,7 +80,7 @@ export const createCollectionExtensions = Effect.fnUntraced(function* ({
|
|
|
58
80
|
// Collections section virtual node under the content group.
|
|
59
81
|
GraphBuilder.createExtension({
|
|
60
82
|
id: 'collectionsSection',
|
|
61
|
-
match: AppNodeMatcher.whenNavTreeGroup(
|
|
83
|
+
match: AppNodeMatcher.whenNavTreeGroup(GraphPath.GroupTypes.content),
|
|
62
84
|
connector: (space, get) => {
|
|
63
85
|
get(Obj.atom(space.properties));
|
|
64
86
|
const collectionRef = Annotation.get(space.properties, AppAnnotation.RootCollectionAnnotation).pipe(
|
|
@@ -74,7 +96,7 @@ export const createCollectionExtensions = Effect.fnUntraced(function* ({
|
|
|
74
96
|
|
|
75
97
|
return Effect.succeed([
|
|
76
98
|
Node.make({
|
|
77
|
-
id:
|
|
99
|
+
id: GraphPath.Segments.collections,
|
|
78
100
|
type: COLLECTIONS_SECTION_TYPE,
|
|
79
101
|
data: null,
|
|
80
102
|
properties: {
|
|
@@ -93,9 +115,13 @@ export const createCollectionExtensions = Effect.fnUntraced(function* ({
|
|
|
93
115
|
},
|
|
94
116
|
}),
|
|
95
117
|
|
|
96
|
-
// Root collection objects under the Collections virtual node.
|
|
118
|
+
// Root collection objects under the Collections virtual node. Shares the `object` urlKey with the
|
|
119
|
+
// nested-collection `objects` connector below so an object is addressed the same way wherever it
|
|
120
|
+
// sits in the collection tree (the key names the *collection subgraph*, not the container's type;
|
|
121
|
+
// the database subgraph addresses the same object under `db`).
|
|
97
122
|
GraphBuilder.createExtension({
|
|
98
123
|
id: 'collections',
|
|
124
|
+
url: { key: 'object', kind: 'item', path: [GraphPath.GroupSegments.content, GraphPath.Segments.collections] },
|
|
99
125
|
match: (node) => {
|
|
100
126
|
const space = isSpace(node.properties.space) ? node.properties.space : undefined;
|
|
101
127
|
return node.type === COLLECTIONS_SECTION_TYPE && space ? Option.some(space) : Option.none();
|
|
@@ -129,7 +155,8 @@ export const createCollectionExtensions = Effect.fnUntraced(function* ({
|
|
|
129
155
|
get,
|
|
130
156
|
db: space.db,
|
|
131
157
|
object,
|
|
132
|
-
navigable:
|
|
158
|
+
navigable: true,
|
|
159
|
+
deck: collectionDeck(object, ephemeralState.navigableCollections),
|
|
133
160
|
canDrop: AppNode.CAN_DROP_COLLECTION_ITEM,
|
|
134
161
|
onRearrange: collectionRef?.target
|
|
135
162
|
? AppNode.makeCollectionRearrangeCallback(collectionRef.target)
|
|
@@ -144,6 +171,31 @@ export const createCollectionExtensions = Effect.fnUntraced(function* ({
|
|
|
144
171
|
// Children of Collection.Collection nodes.
|
|
145
172
|
GraphBuilder.createExtension({
|
|
146
173
|
id: 'objects',
|
|
174
|
+
// Recursive over nested collections at any depth, so `object/<id>` addresses any object reachable
|
|
175
|
+
// through a space's collection tree, not just the root collection's direct children. The shape is
|
|
176
|
+
// data-dependent (the object's collection ancestry), so instead of a static `path` it resolves
|
|
177
|
+
// dynamically — see `resolveCollectionObjectPath`.
|
|
178
|
+
url: {
|
|
179
|
+
key: 'object',
|
|
180
|
+
kind: 'item',
|
|
181
|
+
path: ({ id, workspace }) =>
|
|
182
|
+
Effect.gen(function* () {
|
|
183
|
+
if (!SpaceId.isValid(workspace)) {
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
// Look the Client up lazily (at resolve time) rather than at graph-setup time — it is not yet
|
|
187
|
+
// available when the AppGraphBuilder activates, and forward resolution only runs much later.
|
|
188
|
+
const client = capabilities.get(ClientCapabilities.Client);
|
|
189
|
+
const space = client.spaces.get(workspace);
|
|
190
|
+
if (!space) {
|
|
191
|
+
return null;
|
|
192
|
+
}
|
|
193
|
+
const path = yield* resolveCollectionObjectPath({ objectId: id }).pipe(
|
|
194
|
+
Effect.provide(Database.layer(space.db)),
|
|
195
|
+
);
|
|
196
|
+
return path ?? null;
|
|
197
|
+
}),
|
|
198
|
+
},
|
|
147
199
|
match: (node) => (Obj.instanceOf(Collection.Collection, node.data) ? Option.some(node.data) : Option.none()),
|
|
148
200
|
connector: (collection, get) => {
|
|
149
201
|
const ephemeralAtom = capabilities.get(SpaceCapabilities.EphemeralState);
|
|
@@ -169,7 +221,8 @@ export const createCollectionExtensions = Effect.fnUntraced(function* ({
|
|
|
169
221
|
get,
|
|
170
222
|
object,
|
|
171
223
|
db,
|
|
172
|
-
navigable:
|
|
224
|
+
navigable: true,
|
|
225
|
+
deck: collectionDeck(object, ephemeralState.navigableCollections),
|
|
173
226
|
canDrop: AppNode.CAN_DROP_COLLECTION_ITEM,
|
|
174
227
|
onRearrange: AppNode.makeCollectionRearrangeCallback(collection),
|
|
175
228
|
}),
|
|
@@ -177,8 +230,6 @@ export const createCollectionExtensions = Effect.fnUntraced(function* ({
|
|
|
177
230
|
.filter(isNonNullable),
|
|
178
231
|
);
|
|
179
232
|
},
|
|
180
|
-
// TODO(graph-path-ids): Resolver temporarily disabled; redesign needed for path-based IDs.
|
|
181
|
-
// resolver: (id, get) => { ... },
|
|
182
233
|
}),
|
|
183
234
|
|
|
184
235
|
// Object actions.
|
|
@@ -243,7 +294,7 @@ export const createCollectionExtensions = Effect.fnUntraced(function* ({
|
|
|
243
294
|
// Qualified id of the collections section node (root/<spaceId>/collections), so the new
|
|
244
295
|
// object's navigation path resolves under the section — the bare segment would not.
|
|
245
296
|
target: rootCollection ?? space.db,
|
|
246
|
-
targetNodeId:
|
|
297
|
+
targetNodeId: GraphPath.getCollectionsPath(space.id),
|
|
247
298
|
});
|
|
248
299
|
}),
|
|
249
300
|
properties: {
|
|
@@ -258,10 +309,6 @@ export const createCollectionExtensions = Effect.fnUntraced(function* ({
|
|
|
258
309
|
]);
|
|
259
310
|
});
|
|
260
311
|
|
|
261
|
-
//
|
|
262
|
-
// Helpers
|
|
263
|
-
//
|
|
264
|
-
|
|
265
312
|
/** Builds the action list for an ECHO object node. */
|
|
266
313
|
const constructObjectActions = ({
|
|
267
314
|
object,
|
|
@@ -329,9 +376,15 @@ const constructObjectActions = ({
|
|
|
329
376
|
Node.makeAction({
|
|
330
377
|
id: 'copyLink',
|
|
331
378
|
data: () =>
|
|
332
|
-
Effect.
|
|
333
|
-
const
|
|
334
|
-
|
|
379
|
+
Effect.gen(function* () {
|
|
380
|
+
const builder = yield* Capability.get(AppCapabilities.AppGraph);
|
|
381
|
+
const path = UrlResolution.getShareableLinkPath(builder, nodeId);
|
|
382
|
+
if (Option.isNone(path)) {
|
|
383
|
+
log.warn('object has no URL representation; cannot copy link', { nodeId });
|
|
384
|
+
return;
|
|
385
|
+
}
|
|
386
|
+
const url = new URL(path.value, shareableLinkOrigin);
|
|
387
|
+
yield* Effect.promise(() => navigator.clipboard.writeText(url.toString()));
|
|
335
388
|
}),
|
|
336
389
|
properties: {
|
|
337
390
|
label: COPY_LINK_LABEL,
|
|
@@ -344,7 +397,7 @@ const constructObjectActions = ({
|
|
|
344
397
|
: []),
|
|
345
398
|
Node.makeAction({
|
|
346
399
|
id: LayoutOperation.Expose.meta.key,
|
|
347
|
-
data: () => Operation.invoke(LayoutOperation.Expose, { subject:
|
|
400
|
+
data: () => Operation.invoke(LayoutOperation.Expose, { subject: GraphPath.getObjectPathFromObject(object) }),
|
|
348
401
|
properties: {
|
|
349
402
|
label: EXPOSE_OBJECT_LABEL,
|
|
350
403
|
icon: 'ph--eye--regular',
|
|
@@ -8,7 +8,6 @@ import * as Option from 'effect/Option';
|
|
|
8
8
|
import { AppNode } from '@dxos/app-toolkit';
|
|
9
9
|
import { Obj, Type } from '@dxos/echo';
|
|
10
10
|
import { GraphBuilder, NodeMatcher } from '@dxos/plugin-graph';
|
|
11
|
-
import { linkedSegment } from '@dxos/react-ui-attention';
|
|
12
11
|
import type { EchoViewRefPath } from '@dxos/schema';
|
|
13
12
|
import { ViewAnnotation } from '@dxos/schema';
|
|
14
13
|
import { Position } from '@dxos/util';
|
|
@@ -19,7 +18,7 @@ import { meta } from '#meta';
|
|
|
19
18
|
// Extension Factory
|
|
20
19
|
//
|
|
21
20
|
|
|
22
|
-
/** Creates companion panel extensions: object settings and selected-objects. */
|
|
21
|
+
/** Creates companion panel extensions: object settings, related, and selected-objects. */
|
|
23
22
|
// NOTE: Explicit annotation required: d.ts emit cannot portably name the inferred @dxos/plugin-graph types (TS2883).
|
|
24
23
|
export const createCompanionExtensions: () => Effect.Effect<GraphBuilder.BuilderExtension[][]> = Effect.fnUntraced(
|
|
25
24
|
function* () {
|
|
@@ -31,7 +30,7 @@ export const createCompanionExtensions: () => Effect.Effect<GraphBuilder.Builder
|
|
|
31
30
|
connector: (node) =>
|
|
32
31
|
Effect.succeed([
|
|
33
32
|
AppNode.makeCompanion({
|
|
34
|
-
|
|
33
|
+
variant: 'settings',
|
|
35
34
|
label: ['object-properties.label', { ns: meta.profile.key }],
|
|
36
35
|
icon: 'ph--sliders--regular',
|
|
37
36
|
data: 'settings', // TODO(burdon): Change to 'object-properties'.
|
|
@@ -47,7 +46,7 @@ export const createCompanionExtensions: () => Effect.Effect<GraphBuilder.Builder
|
|
|
47
46
|
connector: (node) =>
|
|
48
47
|
Effect.succeed([
|
|
49
48
|
AppNode.makeCompanion({
|
|
50
|
-
|
|
49
|
+
variant: 'related',
|
|
51
50
|
label: ['companion-related.label', { ns: meta.profile.key }],
|
|
52
51
|
icon: 'ph--graph--regular',
|
|
53
52
|
data: 'related',
|
|
@@ -60,6 +59,12 @@ export const createCompanionExtensions: () => Effect.Effect<GraphBuilder.Builder
|
|
|
60
59
|
GraphBuilder.createExtension({
|
|
61
60
|
id: 'selectedObjects',
|
|
62
61
|
match: (node) => {
|
|
62
|
+
// Type/schema node (e.g. a TypeArticle plank): the table's own row selection feeds this
|
|
63
|
+
// companion directly, no view lookup needed.
|
|
64
|
+
if (Type.isType(node.data)) {
|
|
65
|
+
return Option.some(node);
|
|
66
|
+
}
|
|
67
|
+
|
|
63
68
|
if (!Obj.isObject(node.data)) {
|
|
64
69
|
return Option.none();
|
|
65
70
|
}
|
|
@@ -79,7 +84,7 @@ export const createCompanionExtensions: () => Effect.Effect<GraphBuilder.Builder
|
|
|
79
84
|
connector: (node) =>
|
|
80
85
|
Effect.succeed([
|
|
81
86
|
AppNode.makeCompanion({
|
|
82
|
-
|
|
87
|
+
variant: 'selected-objects',
|
|
83
88
|
label: ['companion-selected-objects.label', { ns: meta.profile.key }],
|
|
84
89
|
icon: 'ph--tree-view--regular',
|
|
85
90
|
data: 'selected-objects',
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import { type Atom } from '@effect-atom/atom
|
|
5
|
+
import { type Atom } from '@effect-atom/atom';
|
|
6
6
|
import * as Effect from 'effect/Effect';
|
|
7
7
|
import * as Match from 'effect/Match';
|
|
8
8
|
import * as Option from 'effect/Option';
|
|
9
9
|
|
|
10
10
|
import { Capability, type CapabilityManager } from '@dxos/app-framework';
|
|
11
|
-
import { AppCapabilities, AppNode, AppNodeMatcher,
|
|
11
|
+
import { AppCapabilities, AppNode, AppNodeMatcher, GraphPath, LayoutOperation } from '@dxos/app-toolkit';
|
|
12
12
|
import { type Space, isSpace } from '@dxos/client/echo';
|
|
13
13
|
import { Operation } from '@dxos/compute';
|
|
14
|
-
import { Annotation, Collection, Entity, Filter,
|
|
14
|
+
import { Annotation, Collection, Entity, Filter, Obj, Query, Scope, Type } from '@dxos/echo';
|
|
15
15
|
import { HiddenAnnotation } from '@dxos/echo/Annotation';
|
|
16
16
|
import { ClientCapabilities } from '@dxos/plugin-client';
|
|
17
17
|
import { GraphBuilder, Node } from '@dxos/plugin-graph';
|
|
@@ -27,8 +27,8 @@ import { makeCreateObjectEntryForDatabaseType } from '../../../util';
|
|
|
27
27
|
import {
|
|
28
28
|
ADD_VIEW_TO_SCHEMA_LABEL,
|
|
29
29
|
DATABASE_SECTION_TYPE,
|
|
30
|
+
SCHEMA_NODE_TYPE,
|
|
30
31
|
SNAPSHOT_BY_SCHEMA_LABEL,
|
|
31
|
-
STATIC_SCHEMA_TYPE,
|
|
32
32
|
buildViewIndex,
|
|
33
33
|
downloadBlob,
|
|
34
34
|
} from './shared';
|
|
@@ -45,13 +45,13 @@ export const createDatabaseExtensions = Effect.fnUntraced(function* () {
|
|
|
45
45
|
// System section group — created alongside database/settings so the group always
|
|
46
46
|
// appears when the space plugin is active and hides when there are no children.
|
|
47
47
|
GraphBuilder.createExtension({
|
|
48
|
-
id:
|
|
48
|
+
id: GraphPath.GroupSegments.system,
|
|
49
49
|
match: AppNodeMatcher.whenSpace,
|
|
50
50
|
connector: (space) =>
|
|
51
51
|
Effect.succeed([
|
|
52
52
|
AppNode.makeGroup({
|
|
53
|
-
id:
|
|
54
|
-
type:
|
|
53
|
+
id: GraphPath.GroupSegments.system,
|
|
54
|
+
type: GraphPath.GroupTypes.system,
|
|
55
55
|
label: ['nav-tree-group-system.label', { ns: meta.profile.key }],
|
|
56
56
|
space,
|
|
57
57
|
position: 900,
|
|
@@ -62,11 +62,11 @@ export const createDatabaseExtensions = Effect.fnUntraced(function* () {
|
|
|
62
62
|
// Types section virtual node under the system group.
|
|
63
63
|
GraphBuilder.createExtension({
|
|
64
64
|
id: 'databaseSection',
|
|
65
|
-
match: AppNodeMatcher.whenNavTreeGroup(
|
|
65
|
+
match: AppNodeMatcher.whenNavTreeGroup(GraphPath.GroupTypes.system),
|
|
66
66
|
connector: (space) => {
|
|
67
67
|
return Effect.succeed([
|
|
68
68
|
AppNode.makeSection({
|
|
69
|
-
id:
|
|
69
|
+
id: GraphPath.Segments.database,
|
|
70
70
|
type: DATABASE_SECTION_TYPE,
|
|
71
71
|
label: ['database-section.label', { ns: meta.profile.key }],
|
|
72
72
|
icon: 'ph--database--regular',
|
|
@@ -80,6 +80,7 @@ export const createDatabaseExtensions = Effect.fnUntraced(function* () {
|
|
|
80
80
|
// Schema nodes under the Types virtual node.
|
|
81
81
|
GraphBuilder.createExtension({
|
|
82
82
|
id: 'database',
|
|
83
|
+
url: { key: 'type', kind: 'item', path: [GraphPath.GroupSegments.system, GraphPath.Segments.database] },
|
|
83
84
|
match: (node) => {
|
|
84
85
|
const space = isSpace(node.properties.space) ? node.properties.space : undefined;
|
|
85
86
|
return node.type === DATABASE_SECTION_TYPE && space ? Option.some(space) : Option.none();
|
|
@@ -150,18 +151,24 @@ export const createDatabaseExtensions = Effect.fnUntraced(function* () {
|
|
|
150
151
|
// {All} virtual node + view objects under each schema node.
|
|
151
152
|
GraphBuilder.createExtension({
|
|
152
153
|
id: 'schemaChildren',
|
|
154
|
+
url: { key: 'view', kind: 'item', path: [GraphPath.GroupSegments.system, GraphPath.Segments.database] },
|
|
153
155
|
match: (node) => {
|
|
154
156
|
const space = isSpace(node.properties.space) ? node.properties.space : undefined;
|
|
155
|
-
|
|
157
|
+
// Scoped to the Database section's own type nodes (both static and database schemas — see
|
|
158
|
+
// SCHEMA_NODE_TYPE): other plugins' type nodes (e.g. plugin-crm's virtual type nodes) share the
|
|
159
|
+
// `Type.isType(node.data)` shape but should stay leaf nodes for now.
|
|
160
|
+
return node.type === SCHEMA_NODE_TYPE && space && Type.isType(node.data)
|
|
161
|
+
? Option.some({ space, schema: node.data })
|
|
162
|
+
: Option.none();
|
|
156
163
|
},
|
|
157
164
|
connector: ({ space, schema }, get) => {
|
|
158
165
|
const client = get(capabilities.atom(ClientCapabilities.Client)).at(0);
|
|
159
166
|
const schemas = client ? get(client.graph.registry.query(Filter.type(Type.Type)).atom) : [];
|
|
160
167
|
const typeUri = Type.getURI(schema);
|
|
161
168
|
|
|
162
|
-
// View objects are the type node's only visible children;
|
|
163
|
-
//
|
|
164
|
-
// objects is rendered when the type node is selected (see
|
|
169
|
+
// View objects are the type node's only visible children; every object of the type (viewed
|
|
170
|
+
// or not) is also reachable via the `databaseObjects` extension below, keyed generically as
|
|
171
|
+
// `obj`. The list of all objects is rendered when the type node is selected (see TypeArticle).
|
|
165
172
|
const viewIndex = buildViewIndex(get, space, schemas);
|
|
166
173
|
const viewNodes = viewIndex
|
|
167
174
|
.getViewsForTypeUri(typeUri)
|
|
@@ -180,50 +187,50 @@ export const createDatabaseExtensions = Effect.fnUntraced(function* () {
|
|
|
180
187
|
},
|
|
181
188
|
}),
|
|
182
189
|
|
|
183
|
-
//
|
|
184
|
-
//
|
|
185
|
-
//
|
|
190
|
+
// Every object of a type — not just its views — as a hidden child of its type node, so
|
|
191
|
+
// `…/database/<slug>/<objectId>` resolves via the generic `db` key even when the type has no
|
|
192
|
+
// dedicated section of its own. Disjoint from `schemaChildren`'s view nodes (`viewIndex.isView`
|
|
193
|
+
// excludes them) so the two connectors never emit a node with the same id under the same parent.
|
|
194
|
+
// The `db` key names the database subgraph — the generic key that guarantees every ECHO object a
|
|
195
|
+
// URL (see the design's "Unmapped nodes"); `object` addresses the same object via the collection
|
|
196
|
+
// subgraph.
|
|
186
197
|
GraphBuilder.createExtension({
|
|
187
|
-
id: '
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
return null;
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
const client = get(capabilities.atom(ClientCapabilities.Client)).at(0);
|
|
204
|
-
const space = client?.spaces.get(spaceId);
|
|
205
|
-
if (!space) {
|
|
206
|
-
return null;
|
|
207
|
-
}
|
|
198
|
+
id: 'databaseObjects',
|
|
199
|
+
url: { key: 'db', kind: 'item', path: [GraphPath.GroupSegments.system, GraphPath.Segments.database] },
|
|
200
|
+
match: (node) => {
|
|
201
|
+
const space = isSpace(node.properties.space) ? node.properties.space : undefined;
|
|
202
|
+
return node.type === SCHEMA_NODE_TYPE && space && Type.isType(node.data)
|
|
203
|
+
? Option.some({ space, schema: node.data })
|
|
204
|
+
: Option.none();
|
|
205
|
+
},
|
|
206
|
+
connector: ({ space, schema }, get) => {
|
|
207
|
+
const client = get(capabilities.atom(ClientCapabilities.Client)).at(0);
|
|
208
|
+
const schemas = client ? get(client.graph.registry.query(Filter.type(Type.Type)).atom) : [];
|
|
209
|
+
const typeUri = Type.getURI(schema);
|
|
210
|
+
const viewIndex = buildViewIndex(get, space, schemas);
|
|
208
211
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
}
|
|
212
|
+
// Feed-only objects (e.g. games appended via Feed.append) are not in the Automerge graph;
|
|
213
|
+
// includeFeeds resolves them too.
|
|
214
|
+
const objects = get(
|
|
215
|
+
space.db.query(Query.select(Filter.type(typeUri)).from(space.db, { includeFeeds: true })).atom,
|
|
216
|
+
);
|
|
213
217
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
218
|
+
return Effect.succeed(
|
|
219
|
+
objects
|
|
220
|
+
.filter((object) => !viewIndex.isView(object))
|
|
221
|
+
.map((object) =>
|
|
222
|
+
AppNode.makeObject({
|
|
223
|
+
get,
|
|
224
|
+
db: space.db,
|
|
225
|
+
object,
|
|
226
|
+
disposition: 'hidden',
|
|
227
|
+
draggable: false,
|
|
228
|
+
droppable: false,
|
|
229
|
+
}),
|
|
230
|
+
)
|
|
231
|
+
.filter(isNonNullable),
|
|
232
|
+
);
|
|
233
|
+
},
|
|
227
234
|
}),
|
|
228
235
|
|
|
229
236
|
// Actions for schema nodes.
|
|
@@ -274,7 +281,7 @@ const createSchemaNode = ({
|
|
|
274
281
|
const typename = Type.getTypename(schema);
|
|
275
282
|
// The node id doubles as the `types/<slug>` path segment, so it must be slash- and colon-free:
|
|
276
283
|
// a stored schema's entity id, or a static schema's typename.
|
|
277
|
-
const slug =
|
|
284
|
+
const slug = GraphPath.getTypeSlug(schema);
|
|
278
285
|
const iconAnnotation =
|
|
279
286
|
Type.getDatabase(schema) == null
|
|
280
287
|
? Option.getOrUndefined(Annotation.IconAnnotation.get(Type.getSchema(schema)))
|
|
@@ -304,13 +311,13 @@ const createSchemaNode = ({
|
|
|
304
311
|
const iconHue = Type.getDatabase(schema) != null ? 'neutral' : iconAnnotation?.hue;
|
|
305
312
|
return Node.make({
|
|
306
313
|
id: nodeId,
|
|
307
|
-
type:
|
|
314
|
+
type: SCHEMA_NODE_TYPE,
|
|
308
315
|
data: schema,
|
|
309
316
|
properties: {
|
|
310
317
|
label,
|
|
311
318
|
icon,
|
|
312
319
|
iconHue,
|
|
313
|
-
// Selecting the type node opens a list of every object of this type (see
|
|
320
|
+
// Selecting the type node opens a list of every object of this type (see TypeArticle);
|
|
314
321
|
// objects resolve on demand as hidden children. View objects are its only visible children, so
|
|
315
322
|
// without a view the node is a leaf (no `role: 'branch'`).
|
|
316
323
|
testId: `spacePlugin.schemaNode.${typename}`,
|
|
@@ -42,14 +42,16 @@ export const createSettingsExtensions = Effect.fnUntraced(function* () {
|
|
|
42
42
|
]),
|
|
43
43
|
});
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
|
|
45
|
+
// General and Members are separate extensions rather than one so each can be an id-less key (a single
|
|
46
|
+
// id-less key can address only one fixed node — its terminal segment IS the key).
|
|
47
|
+
const generalExtension = yield* GraphBuilder.createExtension({
|
|
48
|
+
id: 'settingsGeneral',
|
|
49
|
+
url: { key: 'settings', kind: 'singleton', path: [SETTINGS_SECTION_ID] },
|
|
47
50
|
match: AppNodeMatcher.whenSpaceSettings,
|
|
48
|
-
connector: (space) =>
|
|
49
|
-
|
|
50
|
-
return Effect.succeed([
|
|
51
|
+
connector: (space) =>
|
|
52
|
+
Effect.succeed([
|
|
51
53
|
Node.make({
|
|
52
|
-
id: '
|
|
54
|
+
id: 'settings',
|
|
53
55
|
type: `${meta.profile.key}.general`,
|
|
54
56
|
data: `${meta.profile.key}.general`,
|
|
55
57
|
properties: {
|
|
@@ -61,8 +63,18 @@ export const createSettingsExtensions = Effect.fnUntraced(function* () {
|
|
|
61
63
|
testId: 'spacePlugin.general',
|
|
62
64
|
},
|
|
63
65
|
}),
|
|
64
|
-
|
|
65
|
-
|
|
66
|
+
]),
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
const membersExtension = yield* GraphBuilder.createExtension({
|
|
70
|
+
id: 'settingsMembers',
|
|
71
|
+
url: { key: 'members', kind: 'singleton', path: [SETTINGS_SECTION_ID] },
|
|
72
|
+
match: AppNodeMatcher.whenSpaceSettings,
|
|
73
|
+
connector: (space) =>
|
|
74
|
+
Effect.succeed(
|
|
75
|
+
AppSpace.isPersonalSpace(space)
|
|
76
|
+
? []
|
|
77
|
+
: [
|
|
66
78
|
Node.make({
|
|
67
79
|
id: 'members',
|
|
68
80
|
type: `${meta.profile.key}.members`,
|
|
@@ -76,11 +88,9 @@ export const createSettingsExtensions = Effect.fnUntraced(function* () {
|
|
|
76
88
|
testId: 'spacePlugin.members',
|
|
77
89
|
},
|
|
78
90
|
}),
|
|
79
|
-
]
|
|
80
|
-
|
|
81
|
-
]);
|
|
82
|
-
},
|
|
91
|
+
],
|
|
92
|
+
),
|
|
83
93
|
});
|
|
84
94
|
|
|
85
|
-
return [sectionExtension,
|
|
95
|
+
return [sectionExtension, generalExtension, membersExtension];
|
|
86
96
|
});
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import { type Atom } from '@effect-atom/atom
|
|
5
|
+
import { type Atom } from '@effect-atom/atom';
|
|
6
6
|
import * as Option from 'effect/Option';
|
|
7
7
|
|
|
8
8
|
import { type Space, SpaceState, isSpace } from '@dxos/client/echo';
|
|
@@ -23,7 +23,8 @@ import { meta } from '#meta';
|
|
|
23
23
|
|
|
24
24
|
export const DATABASE_SECTION_TYPE = `${meta.profile.key}.database`;
|
|
25
25
|
export const COLLECTIONS_SECTION_TYPE = `${meta.profile.key}.collections`;
|
|
26
|
-
|
|
26
|
+
/** Tags every type node under the Database section — both static (compile-time) and database (dynamic) schemas. */
|
|
27
|
+
export const SCHEMA_NODE_TYPE = `${meta.profile.key}.static-schema`;
|
|
27
28
|
|
|
28
29
|
//
|
|
29
30
|
// Constants
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import * as Effect from 'effect/Effect';
|
|
6
6
|
|
|
7
7
|
import { Capability } from '@dxos/app-framework';
|
|
8
|
-
import { AppCapabilities, AppNode, AppNodeMatcher, AppSpace,
|
|
8
|
+
import { AppCapabilities, AppNode, AppNodeMatcher, AppSpace, GraphPath } from '@dxos/app-toolkit';
|
|
9
9
|
import { type Space, SpaceState } from '@dxos/client/echo';
|
|
10
10
|
import { Operation } from '@dxos/compute';
|
|
11
11
|
import { Filter, Obj } from '@dxos/echo';
|
|
@@ -48,11 +48,12 @@ export const createSpaceExtensions = Effect.fnUntraced(function* () {
|
|
|
48
48
|
GraphBuilder.createExtension({
|
|
49
49
|
id: 'spaceHome',
|
|
50
50
|
position: Position.first,
|
|
51
|
+
url: { key: 'home', kind: 'singleton', path: [] },
|
|
51
52
|
match: AppNodeMatcher.whenSpace,
|
|
52
53
|
connector: (space) =>
|
|
53
54
|
Effect.succeed([
|
|
54
55
|
{
|
|
55
|
-
id:
|
|
56
|
+
id: GraphPath.SPACE_HOME_SEGMENT,
|
|
56
57
|
type: SPACE_HOME_NODE_TYPE,
|
|
57
58
|
data: SPACE_HOME_NODE_TYPE,
|
|
58
59
|
properties: {
|
|
@@ -243,8 +244,6 @@ export const createSpaceExtensions = Effect.fnUntraced(function* () {
|
|
|
243
244
|
return Effect.succeed([]);
|
|
244
245
|
}
|
|
245
246
|
},
|
|
246
|
-
// TODO(graph-path-ids): Resolver temporarily disabled; redesign needed for path-based IDs.
|
|
247
|
-
// resolver: (id, get) => { ... },
|
|
248
247
|
}),
|
|
249
248
|
|
|
250
249
|
// Communications section group — no single plugin owns this category; it lives here so the
|
|
@@ -252,13 +251,13 @@ export const createSpaceExtensions = Effect.fnUntraced(function* () {
|
|
|
252
251
|
// future plugin-communications) should own this once one exists.
|
|
253
252
|
// TODO(wittjosiah): Move to a dedicated communications plugin when one exists.
|
|
254
253
|
GraphBuilder.createExtension({
|
|
255
|
-
id:
|
|
254
|
+
id: GraphPath.GroupSegments.communications,
|
|
256
255
|
match: AppNodeMatcher.whenSpace,
|
|
257
256
|
connector: (space) =>
|
|
258
257
|
Effect.succeed([
|
|
259
258
|
AppNode.makeGroup({
|
|
260
|
-
id:
|
|
261
|
-
type:
|
|
259
|
+
id: GraphPath.GroupSegments.communications,
|
|
260
|
+
type: GraphPath.GroupTypes.communications,
|
|
262
261
|
label: ['nav-tree-group-comm.label', { ns: meta.profile.key }],
|
|
263
262
|
space,
|
|
264
263
|
position: 100,
|
|
@@ -9,7 +9,7 @@ import { Capability } from '@dxos/app-framework';
|
|
|
9
9
|
import { Operation } from '@dxos/compute';
|
|
10
10
|
import { Collection, Type } from '@dxos/echo';
|
|
11
11
|
import { createDefaultSchema } from '@dxos/schema';
|
|
12
|
-
import { Organization, Person,
|
|
12
|
+
import { Organization, Person, Task } from '@dxos/types';
|
|
13
13
|
|
|
14
14
|
import { SpaceOperation } from '#operations';
|
|
15
15
|
import { SpaceCapabilities } from '#types';
|
|
@@ -71,19 +71,6 @@ export default Capability.makeModule(
|
|
|
71
71
|
});
|
|
72
72
|
}),
|
|
73
73
|
}),
|
|
74
|
-
Capability.contributes(SpaceCapabilities.CreateObjectEntry, {
|
|
75
|
-
id: Type.getTypename(Project.Project),
|
|
76
|
-
inputSchema: Type.getSchema(Project.Project),
|
|
77
|
-
createObject: (props, options) =>
|
|
78
|
-
Effect.gen(function* () {
|
|
79
|
-
const object = Project.make(props);
|
|
80
|
-
return yield* Operation.invoke(SpaceOperation.AddObject, {
|
|
81
|
-
object,
|
|
82
|
-
target: options.target,
|
|
83
|
-
targetNodeId: options.targetNodeId,
|
|
84
|
-
});
|
|
85
|
-
}),
|
|
86
|
-
}),
|
|
87
74
|
Capability.contributes(SpaceCapabilities.CreateObjectEntry, {
|
|
88
75
|
id: Type.getTypename(Task.Task),
|
|
89
76
|
inputSchema: Type.getSchema(Task.Task),
|
|
@@ -12,7 +12,10 @@ export const CreateObject = Capability.lazy('CreateObject', () => import('./crea
|
|
|
12
12
|
export const IdentityCreated = Capability.lazy('IdentityCreated', () => import('./identity-created'));
|
|
13
13
|
export { NavigationHandler } from './navigation-handler';
|
|
14
14
|
export type { NavigationHandlerOptions } from './navigation-handler';
|
|
15
|
-
export const
|
|
15
|
+
export const NavigationTargetResolver = Capability.lazy(
|
|
16
|
+
'NavigationTargetResolver',
|
|
17
|
+
() => import('./navigation-target-resolver'),
|
|
18
|
+
);
|
|
16
19
|
export const OperationHandler = Capability.lazy<OperationHandlerSet.OperationHandlerSet>(
|
|
17
20
|
'OperationHandler',
|
|
18
21
|
() => import('./operation-handler'),
|