@dxos/plugin-space 0.8.4-main.21d9917 → 0.8.4-main.2244d791bb
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/dist/lib/browser/CollectionArticle-LKTAABXP.mjs +128 -0
- package/dist/lib/browser/CollectionArticle-LKTAABXP.mjs.map +7 -0
- package/dist/lib/browser/{ObjectCardStack-TWHN6C2Y.mjs → ObjectCardStack-CXNBCSMR.mjs} +2 -2
- package/dist/lib/browser/ObjectCardStack-CXNBCSMR.mjs.map +7 -0
- package/dist/lib/browser/{ObjectDetails-GEDIISKK.mjs → ObjectDetails-HXV4IQEM.mjs} +6 -5
- package/dist/lib/browser/ObjectDetails-HXV4IQEM.mjs.map +7 -0
- package/dist/lib/browser/{RecordArticle-W57QE7QV.mjs → RecordArticle-36LDKFWF.mjs} +11 -10
- package/dist/lib/browser/RecordArticle-36LDKFWF.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-builder-SJHTZXZF.mjs → app-graph-builder-GLV46QSI.mjs} +26 -19
- package/dist/lib/browser/app-graph-builder-GLV46QSI.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-serializer-7AT7QMSK.mjs → app-graph-serializer-VOLRDNVE.mjs} +9 -8
- package/dist/lib/browser/app-graph-serializer-VOLRDNVE.mjs.map +7 -0
- package/dist/lib/browser/{chunk-ZT2VPYRM.mjs → chunk-7D63MVRS.mjs} +3 -3
- package/dist/lib/browser/chunk-7D63MVRS.mjs.map +7 -0
- package/dist/lib/browser/{chunk-4WZUGLQQ.mjs → chunk-A7ZCVQGZ.mjs} +10 -9
- package/dist/lib/browser/chunk-A7ZCVQGZ.mjs.map +7 -0
- package/dist/lib/browser/{chunk-CCRSHECL.mjs → chunk-KGLWYGIF.mjs} +4 -3
- package/dist/lib/browser/chunk-KGLWYGIF.mjs.map +7 -0
- package/dist/lib/browser/{chunk-AWVAX26X.mjs → chunk-NF3ZFAB4.mjs} +2 -2
- package/dist/lib/browser/{chunk-SUI34XSA.mjs → chunk-WAOJLA2S.mjs} +12 -12
- package/dist/lib/browser/chunk-WAOJLA2S.mjs.map +7 -0
- package/dist/lib/browser/{chunk-3X2EA2OA.mjs → chunk-XRTOZE23.mjs} +128 -137
- package/dist/lib/browser/chunk-XRTOZE23.mjs.map +7 -0
- package/dist/lib/browser/cli/index.mjs +31 -29
- package/dist/lib/browser/cli/index.mjs.map +3 -3
- package/dist/lib/browser/index.mjs +58 -53
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{operation-resolver-SIRQT36Z.mjs → operation-resolver-PJJ3PCM7.mjs} +45 -42
- package/dist/lib/browser/operation-resolver-PJJ3PCM7.mjs.map +7 -0
- package/dist/lib/browser/{react-root-PI7VTZUZ.mjs → react-root-MRIDHLHH.mjs} +8 -8
- package/dist/lib/browser/react-root-MRIDHLHH.mjs.map +7 -0
- package/dist/lib/browser/{react-surface-BPE7VWI7.mjs → react-surface-ARZZ343H.mjs} +38 -37
- package/dist/lib/browser/react-surface-ARZZ343H.mjs.map +7 -0
- package/dist/lib/browser/{repair-CJG26D52.mjs → repair-DKU4TUD2.mjs} +2 -2
- package/dist/lib/browser/{settings-ZS2AQ73E.mjs → settings-M2DMD2ZA.mjs} +5 -4
- package/dist/lib/browser/settings-M2DMD2ZA.mjs.map +7 -0
- package/dist/lib/browser/{spaces-ready-OQDGWUOS.mjs → spaces-ready-XWJUJ43N.mjs} +13 -12
- package/dist/lib/browser/spaces-ready-XWJUJ43N.mjs.map +7 -0
- package/dist/lib/browser/{state-7YZQB2KY.mjs → state-V637BLIM.mjs} +5 -5
- package/dist/lib/browser/state-V637BLIM.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +1 -1
- package/dist/lib/node-esm/CollectionArticle-ONQMZ7BQ.mjs +129 -0
- package/dist/lib/node-esm/CollectionArticle-ONQMZ7BQ.mjs.map +7 -0
- package/dist/lib/node-esm/{ObjectCardStack-C5ZXRKP7.mjs → ObjectCardStack-EHXPNRQW.mjs} +2 -2
- package/dist/lib/node-esm/ObjectCardStack-EHXPNRQW.mjs.map +7 -0
- package/dist/lib/node-esm/{ObjectDetails-6ZLDRKCO.mjs → ObjectDetails-N73UI4ZL.mjs} +6 -5
- package/dist/lib/node-esm/ObjectDetails-N73UI4ZL.mjs.map +7 -0
- package/dist/lib/node-esm/{RecordArticle-SSV74Z46.mjs → RecordArticle-CMEXNNOZ.mjs} +11 -10
- package/dist/lib/node-esm/RecordArticle-CMEXNNOZ.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-builder-HZ3XXDFZ.mjs → app-graph-builder-KCEHEKVS.mjs} +26 -19
- package/dist/lib/node-esm/app-graph-builder-KCEHEKVS.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-serializer-WJ2TIQG6.mjs → app-graph-serializer-7C4MV5NB.mjs} +9 -8
- package/dist/lib/node-esm/app-graph-serializer-7C4MV5NB.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-2SW6S2BB.mjs → chunk-5N3YIAXD.mjs} +3 -3
- package/dist/lib/node-esm/chunk-5N3YIAXD.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-JOBIWCBC.mjs → chunk-A5A7M37T.mjs} +10 -9
- package/dist/lib/node-esm/chunk-A5A7M37T.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-7KMYUWSR.mjs → chunk-FB5YNROS.mjs} +12 -12
- package/dist/lib/node-esm/chunk-FB5YNROS.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-MPL6NHQX.mjs → chunk-NYSDQPNM.mjs} +4 -3
- package/dist/lib/node-esm/chunk-NYSDQPNM.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-HREWB23G.mjs → chunk-PG7DNOEX.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-EYS3L2NO.mjs → chunk-QDIOQTXY.mjs} +128 -137
- package/dist/lib/node-esm/chunk-QDIOQTXY.mjs.map +7 -0
- package/dist/lib/node-esm/cli/index.mjs +31 -29
- package/dist/lib/node-esm/cli/index.mjs.map +3 -3
- package/dist/lib/node-esm/index.mjs +58 -53
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{operation-resolver-ZE3XJL5J.mjs → operation-resolver-2K7N4KYC.mjs} +45 -42
- package/dist/lib/node-esm/operation-resolver-2K7N4KYC.mjs.map +7 -0
- package/dist/lib/node-esm/{react-root-KUXM33JI.mjs → react-root-LKSSWFGF.mjs} +8 -8
- package/dist/lib/node-esm/react-root-LKSSWFGF.mjs.map +7 -0
- package/dist/lib/node-esm/{react-surface-STCQKUZ4.mjs → react-surface-QG5RNBPD.mjs} +38 -37
- package/dist/lib/node-esm/react-surface-QG5RNBPD.mjs.map +7 -0
- package/dist/lib/node-esm/{repair-G3ZW3VG3.mjs → repair-C2H6JQCL.mjs} +2 -2
- package/dist/lib/node-esm/{settings-PVI2VG56.mjs → settings-VCPCNBOY.mjs} +5 -4
- package/dist/lib/node-esm/settings-VCPCNBOY.mjs.map +7 -0
- package/dist/lib/node-esm/{spaces-ready-R744OHQG.mjs → spaces-ready-5JOGEWON.mjs} +13 -12
- package/dist/lib/node-esm/spaces-ready-5JOGEWON.mjs.map +7 -0
- package/dist/lib/node-esm/{state-XE5YGPHM.mjs → state-5MCEPWN3.mjs} +5 -5
- package/dist/lib/node-esm/state-5MCEPWN3.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +1 -1
- package/dist/types/src/SpacePlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +2 -1
- package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder/index.d.ts +1 -1
- package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-serializer/app-graph-serializer.d.ts +2 -2
- package/dist/types/src/capabilities/app-graph-serializer/app-graph-serializer.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-serializer/index.d.ts +1 -1
- package/dist/types/src/capabilities/app-graph-serializer/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/operation-resolver/index.d.ts +1 -1
- package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +2 -2
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-root/react-root.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface/index.d.ts +1 -1
- package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts +2 -2
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/settings/index.d.ts +1 -1
- package/dist/types/src/capabilities/settings/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/settings/settings.d.ts +3 -2
- package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -1
- package/dist/types/src/capabilities/spaces-ready/spaces-ready.d.ts.map +1 -1
- package/dist/types/src/capabilities/state/state.d.ts.map +1 -1
- package/dist/types/src/cli/commands/database/add.d.ts.map +1 -1
- package/dist/types/src/cli/plugin.d.ts.map +1 -1
- package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
- package/dist/types/src/components/CollectionArticle.d.ts +2 -2
- package/dist/types/src/components/CollectionArticle.d.ts.map +1 -1
- package/dist/types/src/components/CollectionSection.d.ts +1 -1
- package/dist/types/src/components/CollectionSection.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +4 -1
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
- package/dist/types/src/components/JoinDialog/JoinDialog.d.ts.map +1 -1
- package/dist/types/src/components/MembersContainer/MembersContainer.d.ts.map +1 -1
- package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts +1 -1
- package/dist/types/src/components/ObjectDetails/ObjectDetails.d.ts +1 -1
- package/dist/types/src/components/ObjectDetails/ObjectDetails.d.ts.map +1 -1
- package/dist/types/src/components/RecordArticle.d.ts +1 -1
- package/dist/types/src/components/RecordArticle.d.ts.map +1 -1
- package/dist/types/src/components/RecordArticle.stories.d.ts +1 -1
- package/dist/types/src/components/RecordArticle.stories.d.ts.map +1 -1
- package/dist/types/src/components/SchemaContainer.d.ts.map +1 -1
- package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
- package/dist/types/src/components/SpacePresence/SpacePresence.d.ts.map +1 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts +4 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +4 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +3 -3
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -1
- package/dist/types/src/types/events.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +18 -12
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +2 -1
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +66 -65
- package/src/SpacePlugin.ts +59 -40
- package/src/capabilities/app-graph-builder/app-graph-builder.ts +17 -13
- package/src/capabilities/app-graph-serializer/app-graph-serializer.ts +5 -4
- package/src/capabilities/operation-resolver/operation-resolver.ts +31 -29
- package/src/capabilities/react-root/react-root.tsx +3 -3
- package/src/capabilities/react-surface/react-surface.tsx +34 -32
- package/src/capabilities/settings/settings.ts +3 -2
- package/src/capabilities/spaces-ready/spaces-ready.ts +8 -7
- package/src/capabilities/state/state.ts +3 -3
- package/src/cli/commands/database/add.ts +7 -8
- package/src/cli/commands/database/query/query.ts +1 -1
- package/src/cli/commands/database/remove.ts +2 -2
- package/src/cli/commands/database/stats.ts +1 -1
- package/src/cli/plugin.ts +33 -26
- package/src/components/AwaitingObject.tsx +4 -3
- package/src/components/CollectionArticle.tsx +71 -72
- package/src/components/CollectionSection.tsx +1 -1
- package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +1 -1
- package/src/components/CreateDialog/CreateObjectDialog.tsx +20 -17
- package/src/components/CreateDialog/CreateObjectPanel.tsx +38 -39
- package/src/components/CreateDialog/CreateSpaceDialog.tsx +21 -21
- package/src/components/JoinDialog/JoinDialog.tsx +8 -7
- package/src/components/MembersContainer/MembersContainer.stories.tsx +1 -1
- package/src/components/MembersContainer/MembersContainer.tsx +45 -48
- package/src/components/ObjectCardStack/ObjectCardStack.tsx +1 -1
- package/src/components/ObjectDetails/BaseObjectSettings.stories.tsx +4 -4
- package/src/components/ObjectDetails/ObjectDetails.tsx +6 -5
- package/src/components/ObjectRenamePopover/ObjectRenamePopover.tsx +3 -3
- package/src/components/RecordArticle.stories.tsx +6 -5
- package/src/components/RecordArticle.tsx +23 -21
- package/src/components/SchemaContainer.tsx +20 -17
- package/src/components/SpacePluginSettings.tsx +34 -31
- package/src/components/SpacePresence/SpacePresence.stories.tsx +1 -1
- package/src/components/SpacePresence/SpacePresence.tsx +2 -1
- package/src/components/SpaceRenamePopover/SpaceRenamePopover.tsx +3 -3
- package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +1 -1
- package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +161 -179
- package/src/components/SyncStatus/InlineSyncStatus.tsx +1 -1
- package/src/components/SyncStatus/SyncStatus.stories.tsx +1 -1
- package/src/components/ViewEditor.tsx +1 -1
- package/src/hooks/useActiveSpace.ts +5 -4
- package/src/hooks/useInputSurfaceLookup.tsx +3 -3
- package/src/translations.ts +2 -2
- package/src/types/events.ts +3 -2
- package/src/types/types.ts +10 -3
- package/src/util.tsx +9 -6
- package/dist/lib/browser/CollectionArticle-XPNA6EHZ.mjs +0 -129
- package/dist/lib/browser/CollectionArticle-XPNA6EHZ.mjs.map +0 -7
- package/dist/lib/browser/ObjectCardStack-TWHN6C2Y.mjs.map +0 -7
- package/dist/lib/browser/ObjectDetails-GEDIISKK.mjs.map +0 -7
- package/dist/lib/browser/RecordArticle-W57QE7QV.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-SJHTZXZF.mjs.map +0 -7
- package/dist/lib/browser/app-graph-serializer-7AT7QMSK.mjs.map +0 -7
- package/dist/lib/browser/chunk-3X2EA2OA.mjs.map +0 -7
- package/dist/lib/browser/chunk-4WZUGLQQ.mjs.map +0 -7
- package/dist/lib/browser/chunk-CCRSHECL.mjs.map +0 -7
- package/dist/lib/browser/chunk-SUI34XSA.mjs.map +0 -7
- package/dist/lib/browser/chunk-ZT2VPYRM.mjs.map +0 -7
- package/dist/lib/browser/operation-resolver-SIRQT36Z.mjs.map +0 -7
- package/dist/lib/browser/react-root-PI7VTZUZ.mjs.map +0 -7
- package/dist/lib/browser/react-surface-BPE7VWI7.mjs.map +0 -7
- package/dist/lib/browser/settings-ZS2AQ73E.mjs.map +0 -7
- package/dist/lib/browser/spaces-ready-OQDGWUOS.mjs.map +0 -7
- package/dist/lib/browser/state-7YZQB2KY.mjs.map +0 -7
- package/dist/lib/node-esm/CollectionArticle-WGHNZNO2.mjs +0 -130
- package/dist/lib/node-esm/CollectionArticle-WGHNZNO2.mjs.map +0 -7
- package/dist/lib/node-esm/ObjectCardStack-C5ZXRKP7.mjs.map +0 -7
- package/dist/lib/node-esm/ObjectDetails-6ZLDRKCO.mjs.map +0 -7
- package/dist/lib/node-esm/RecordArticle-SSV74Z46.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-HZ3XXDFZ.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-serializer-WJ2TIQG6.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-2SW6S2BB.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-7KMYUWSR.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-EYS3L2NO.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-JOBIWCBC.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-MPL6NHQX.mjs.map +0 -7
- package/dist/lib/node-esm/operation-resolver-ZE3XJL5J.mjs.map +0 -7
- package/dist/lib/node-esm/react-root-KUXM33JI.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-STCQKUZ4.mjs.map +0 -7
- package/dist/lib/node-esm/settings-PVI2VG56.mjs.map +0 -7
- package/dist/lib/node-esm/spaces-ready-R744OHQG.mjs.map +0 -7
- package/dist/lib/node-esm/state-XE5YGPHM.mjs.map +0 -7
- /package/dist/lib/browser/{chunk-AWVAX26X.mjs.map → chunk-NF3ZFAB4.mjs.map} +0 -0
- /package/dist/lib/browser/{repair-CJG26D52.mjs.map → repair-DKU4TUD2.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-HREWB23G.mjs.map → chunk-PG7DNOEX.mjs.map} +0 -0
- /package/dist/lib/node-esm/{repair-G3ZW3VG3.mjs.map → repair-C2H6JQCL.mjs.map} +0 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import {
|
|
2
|
+
meta
|
|
3
|
+
} from "./chunk-HSMQFM57.mjs";
|
|
4
|
+
|
|
5
|
+
// src/components/CollectionArticle.tsx
|
|
6
|
+
import React, { useCallback, useMemo } from "react";
|
|
7
|
+
import { useCapabilities, useOperationInvoker } from "@dxos/app-framework/ui";
|
|
8
|
+
import { AppCapabilities, LayoutOperation } from "@dxos/app-toolkit";
|
|
9
|
+
import { Filter, Obj } from "@dxos/echo";
|
|
10
|
+
import { useClient } from "@dxos/react-client";
|
|
11
|
+
import { getSpace, useQuery } from "@dxos/react-client/echo";
|
|
12
|
+
import { Layout, ScrollArea, Toolbar, toLocalizedString, useTranslation } from "@dxos/react-ui";
|
|
13
|
+
import { Card, Mosaic } from "@dxos/react-ui-mosaic";
|
|
14
|
+
import { SearchList, useSearchListResults } from "@dxos/react-ui-searchlist";
|
|
15
|
+
import { Collection } from "@dxos/schema";
|
|
16
|
+
import { getStyles } from "@dxos/ui-theme";
|
|
17
|
+
var useMetadataResolver = () => {
|
|
18
|
+
const allMetadata = useCapabilities(AppCapabilities.Metadata);
|
|
19
|
+
return useCallback((typename) => allMetadata.find((m) => m.id === typename)?.metadata ?? {}, [
|
|
20
|
+
allMetadata
|
|
21
|
+
]);
|
|
22
|
+
};
|
|
23
|
+
var CollectionArticle = ({ subject }) => {
|
|
24
|
+
const { t } = useTranslation(meta.id);
|
|
25
|
+
const resolveMetadata = useMetadataResolver();
|
|
26
|
+
const { items, handleSearch } = useCollectionItems(subject, resolveMetadata);
|
|
27
|
+
return /* @__PURE__ */ React.createElement(Layout.Main, {
|
|
28
|
+
toolbar: true
|
|
29
|
+
}, /* @__PURE__ */ React.createElement(SearchList.Root, {
|
|
30
|
+
onSearch: handleSearch
|
|
31
|
+
}, /* @__PURE__ */ React.createElement(Toolbar.Root, null, /* @__PURE__ */ React.createElement(SearchList.Input, {
|
|
32
|
+
placeholder: t("search placeholder")
|
|
33
|
+
})), /* @__PURE__ */ React.createElement(SearchList.Content, null, /* @__PURE__ */ React.createElement(Mosaic.Container, {
|
|
34
|
+
asChild: true
|
|
35
|
+
}, /* @__PURE__ */ React.createElement(ScrollArea.Root, {
|
|
36
|
+
orientation: "vertical"
|
|
37
|
+
}, /* @__PURE__ */ React.createElement(ScrollArea.Viewport, {
|
|
38
|
+
classNames: "p-2"
|
|
39
|
+
}, /* @__PURE__ */ React.createElement(Mosaic.Stack, {
|
|
40
|
+
items,
|
|
41
|
+
getId: (item) => item.id,
|
|
42
|
+
Tile: ObjectTile
|
|
43
|
+
})))))));
|
|
44
|
+
};
|
|
45
|
+
var ObjectTile = (props) => {
|
|
46
|
+
const item = props.data;
|
|
47
|
+
const { t } = useTranslation(meta.id);
|
|
48
|
+
const { invokeSync } = useOperationInvoker();
|
|
49
|
+
const typename = Obj.getTypename(item.object) ?? "";
|
|
50
|
+
const label = Obj.getLabel(item.object) ?? toLocalizedString([
|
|
51
|
+
"object name placeholder",
|
|
52
|
+
{
|
|
53
|
+
ns: typename,
|
|
54
|
+
defaultValue: item.id
|
|
55
|
+
}
|
|
56
|
+
], t);
|
|
57
|
+
const styles = item.iconHue ? getStyles(item.iconHue) : void 0;
|
|
58
|
+
const handleClick = () => {
|
|
59
|
+
invokeSync(LayoutOperation.Open, {
|
|
60
|
+
subject: [
|
|
61
|
+
item.id
|
|
62
|
+
]
|
|
63
|
+
});
|
|
64
|
+
};
|
|
65
|
+
return /* @__PURE__ */ React.createElement(Card.Root, {
|
|
66
|
+
fullWidth: true
|
|
67
|
+
}, /* @__PURE__ */ React.createElement(Card.Toolbar, null, /* @__PURE__ */ React.createElement(Card.ToolbarIconButton, {
|
|
68
|
+
variant: "ghost",
|
|
69
|
+
label,
|
|
70
|
+
icon: item.icon,
|
|
71
|
+
iconOnly: true,
|
|
72
|
+
iconClassNames: styles?.icon
|
|
73
|
+
}), /* @__PURE__ */ React.createElement(Card.Title, {
|
|
74
|
+
onClick: handleClick
|
|
75
|
+
}, label), /* @__PURE__ */ React.createElement(Card.Menu, null)));
|
|
76
|
+
};
|
|
77
|
+
var CollectionArticle_default = CollectionArticle;
|
|
78
|
+
var useRegularCollectionItems = (collection) => {
|
|
79
|
+
return useMemo(() => (collection.objects ?? []).map((ref) => ref.target).filter((obj) => Obj.isObject(obj)), [
|
|
80
|
+
collection.objects
|
|
81
|
+
]);
|
|
82
|
+
};
|
|
83
|
+
var useManagedCollectionItems = (collection) => {
|
|
84
|
+
const client = useClient();
|
|
85
|
+
const space = getSpace(collection);
|
|
86
|
+
const schema = useMemo(() => client.graph.schemaRegistry.query({
|
|
87
|
+
typename: collection.key,
|
|
88
|
+
location: [
|
|
89
|
+
"runtime"
|
|
90
|
+
]
|
|
91
|
+
}).runSync()[0], [
|
|
92
|
+
client,
|
|
93
|
+
collection
|
|
94
|
+
]);
|
|
95
|
+
return useQuery(space?.db, schema ? Filter.type(schema) : Filter.nothing());
|
|
96
|
+
};
|
|
97
|
+
var useCollectionItems = (collection, resolveMetadata) => {
|
|
98
|
+
const isManaged = Obj.instanceOf(Collection.Managed, collection);
|
|
99
|
+
const regularObjects = useRegularCollectionItems(collection);
|
|
100
|
+
const managedObjects = useManagedCollectionItems(collection);
|
|
101
|
+
const objects = isManaged ? managedObjects : regularObjects;
|
|
102
|
+
const items = useMemo(() => objects.map((obj) => {
|
|
103
|
+
const typename = Obj.getTypename(obj);
|
|
104
|
+
const metadata = typename ? resolveMetadata(typename) : {};
|
|
105
|
+
return {
|
|
106
|
+
id: Obj.getDXN(obj).toString(),
|
|
107
|
+
object: obj,
|
|
108
|
+
icon: metadata.icon ?? "ph--placeholder--regular",
|
|
109
|
+
iconHue: metadata.iconHue
|
|
110
|
+
};
|
|
111
|
+
}), [
|
|
112
|
+
objects,
|
|
113
|
+
resolveMetadata
|
|
114
|
+
]);
|
|
115
|
+
const { results, handleSearch } = useSearchListResults({
|
|
116
|
+
items,
|
|
117
|
+
extract: (item) => Obj.getLabel(item.object) ?? item.id
|
|
118
|
+
});
|
|
119
|
+
return {
|
|
120
|
+
items: results,
|
|
121
|
+
handleSearch
|
|
122
|
+
};
|
|
123
|
+
};
|
|
124
|
+
export {
|
|
125
|
+
CollectionArticle,
|
|
126
|
+
CollectionArticle_default as default
|
|
127
|
+
};
|
|
128
|
+
//# sourceMappingURL=CollectionArticle-LKTAABXP.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/CollectionArticle.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { useCapabilities, useOperationInvoker } from '@dxos/app-framework/ui';\nimport { AppCapabilities, LayoutOperation } from '@dxos/app-toolkit';\nimport { type SurfaceComponentProps } from '@dxos/app-toolkit/ui';\nimport { Filter, Obj } from '@dxos/echo';\nimport { useClient } from '@dxos/react-client';\nimport { getSpace, useQuery } from '@dxos/react-client/echo';\nimport { Layout, ScrollArea, Toolbar, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { Card, Mosaic, type MosaicStackTileComponent } from '@dxos/react-ui-mosaic';\nimport { SearchList, useSearchListResults } from '@dxos/react-ui-searchlist';\nimport { Collection } from '@dxos/schema';\nimport { getStyles } from '@dxos/ui-theme';\n\nimport { meta } from '../meta';\n\n/**\n * Hook to resolve metadata (icon, iconHue, etc.) for objects based on their typename.\n */\nconst useMetadataResolver = () => {\n const allMetadata = useCapabilities(AppCapabilities.Metadata);\n return useCallback((typename: string) => allMetadata.find((m) => m.id === typename)?.metadata ?? {}, [allMetadata]);\n};\n\n/**\n * Article view for collections.\n */\nexport const CollectionArticle = ({ subject }: SurfaceComponentProps<Collection.Collection | Collection.Managed>) => {\n const { t } = useTranslation(meta.id);\n const resolveMetadata = useMetadataResolver();\n const { items, handleSearch } = useCollectionItems(subject, resolveMetadata);\n\n return (\n <Layout.Main toolbar>\n <SearchList.Root onSearch={handleSearch}>\n <Toolbar.Root>\n <SearchList.Input placeholder={t('search placeholder')} />\n </Toolbar.Root>\n <SearchList.Content>\n <Mosaic.Container asChild>\n <ScrollArea.Root orientation='vertical'>\n <ScrollArea.Viewport classNames='p-2'>\n <Mosaic.Stack items={items} getId={(item) => item.id} Tile={ObjectTile} />\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n </Mosaic.Container>\n </SearchList.Content>\n </SearchList.Root>\n </Layout.Main>\n );\n};\n\ntype ObjectItem = {\n id: string;\n object: Obj.Unknown;\n icon: string;\n iconHue?: string;\n};\n\nconst ObjectTile: MosaicStackTileComponent<ObjectItem> = (props) => {\n const item = props.data;\n const { t } = useTranslation(meta.id);\n const { invokeSync } = useOperationInvoker();\n\n const typename = Obj.getTypename(item.object) ?? '';\n const label =\n Obj.getLabel(item.object) ??\n toLocalizedString(['object name placeholder', { ns: typename, defaultValue: item.id }], t);\n const styles = item.iconHue ? getStyles(item.iconHue) : undefined;\n\n const handleClick = () => {\n invokeSync(LayoutOperation.Open, { subject: [item.id] });\n };\n\n return (\n <Card.Root fullWidth>\n <Card.Toolbar>\n <Card.ToolbarIconButton variant='ghost' label={label} icon={item.icon} iconOnly iconClassNames={styles?.icon} />\n <Card.Title onClick={handleClick}>{label}</Card.Title>\n <Card.Menu />\n </Card.Toolbar>\n </Card.Root>\n );\n};\n\nexport default CollectionArticle;\n\n/**\n * Hook to get items from a regular collection.\n */\nconst useRegularCollectionItems = (collection: Collection.Collection): Obj.Unknown[] => {\n return useMemo(\n () => (collection.objects ?? []).map((ref) => ref.target).filter((obj): obj is Obj.Unknown => Obj.isObject(obj)),\n [collection.objects],\n );\n};\n\n/**\n * Hook to get items from a managed collection by querying the space.\n */\nconst useManagedCollectionItems = (collection: Collection.Managed): Obj.Unknown[] => {\n const client = useClient();\n const space = getSpace(collection);\n\n const schema = useMemo(\n () => client.graph.schemaRegistry.query({ typename: collection.key, location: ['runtime'] }).runSync()[0],\n [client, collection],\n );\n\n return useQuery(space?.db, schema ? Filter.type(schema) : Filter.nothing());\n};\n\ntype MetadataResolver = (typename: string) => { icon?: string; iconHue?: string };\n\n/**\n * Combined hook to get collection items with search/filter support.\n */\nconst useCollectionItems = (\n collection: Collection.Collection | Collection.Managed,\n resolveMetadata: MetadataResolver,\n) => {\n const isManaged = Obj.instanceOf(Collection.Managed, collection);\n\n // Call both hooks unconditionally to satisfy React's rules of hooks.\n const regularObjects = useRegularCollectionItems(collection as Collection.Collection);\n const managedObjects = useManagedCollectionItems(collection as Collection.Managed);\n\n const objects = isManaged ? managedObjects : regularObjects;\n\n // Convert objects to items with resolved metadata.\n const items = useMemo(\n () =>\n objects.map((obj) => {\n const typename = Obj.getTypename(obj);\n const metadata = typename ? resolveMetadata(typename) : {};\n return {\n id: Obj.getDXN(obj).toString(),\n object: obj,\n icon: metadata.icon ?? 'ph--placeholder--regular',\n iconHue: metadata.iconHue,\n } satisfies ObjectItem;\n }),\n [objects, resolveMetadata],\n );\n\n // Use searchlist results for filtering.\n const { results, handleSearch } = useSearchListResults({\n items,\n extract: (item) => Obj.getLabel(item.object) ?? item.id,\n });\n\n return { items: results, handleSearch };\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["React", "useCallback", "useMemo", "useCapabilities", "useOperationInvoker", "AppCapabilities", "LayoutOperation", "Filter", "Obj", "useClient", "getSpace", "useQuery", "Layout", "ScrollArea", "Toolbar", "toLocalizedString", "useTranslation", "Card", "Mosaic", "SearchList", "useSearchListResults", "Collection", "getStyles", "useMetadataResolver", "allMetadata", "useCapabilities", "AppCapabilities", "Metadata", "useCallback", "typename", "find", "m", "id", "metadata", "CollectionArticle", "subject", "t", "useTranslation", "meta", "resolveMetadata", "items", "handleSearch", "useCollectionItems", "Layout", "Main", "toolbar", "SearchList", "Root", "onSearch", "Toolbar", "Input", "placeholder", "Content", "Mosaic", "Container", "asChild", "ScrollArea", "orientation", "Viewport", "classNames", "Stack", "getId", "item", "Tile", "ObjectTile", "props", "data", "invokeSync", "useOperationInvoker", "Obj", "getTypename", "object", "label", "getLabel", "toLocalizedString", "ns", "defaultValue", "styles", "iconHue", "getStyles", "undefined", "handleClick", "LayoutOperation", "Open", "Card", "fullWidth", "ToolbarIconButton", "variant", "icon", "iconOnly", "iconClassNames", "Title", "onClick", "Menu", "useRegularCollectionItems", "collection", "useMemo", "objects", "map", "ref", "target", "filter", "obj", "isObject", "useManagedCollectionItems", "client", "useClient", "space", "getSpace", "schema", "graph", "schemaRegistry", "query", "key", "location", "runSync", "useQuery", "db", "Filter", "type", "nothing", "isManaged", "instanceOf", "Collection", "Managed", "regularObjects", "managedObjects", "getDXN", "toString", "results", "useSearchListResults", "extract"]
|
|
7
|
+
}
|
|
@@ -7,9 +7,9 @@ import React2, { forwardRef } from "react";
|
|
|
7
7
|
import { Obj as Obj2 } from "@dxos/echo";
|
|
8
8
|
import { Filter, useQuery, useSchema } from "@dxos/react-client/echo";
|
|
9
9
|
import { Callout, Toolbar, useTranslation } from "@dxos/react-ui";
|
|
10
|
+
import { Layout } from "@dxos/react-ui";
|
|
10
11
|
import { useSelected } from "@dxos/react-ui-attention";
|
|
11
12
|
import { Card } from "@dxos/react-ui-mosaic";
|
|
12
|
-
import { Layout } from "@dxos/react-ui-mosaic";
|
|
13
13
|
import { CardStack, StackItem } from "@dxos/react-ui-stack";
|
|
14
14
|
import { getTypenameFromQuery } from "@dxos/schema";
|
|
15
15
|
import { isNonNullable as isNonNullable2 } from "@dxos/util";
|
|
@@ -145,4 +145,4 @@ var ObjectCardStack_default = ObjectCardStack;
|
|
|
145
145
|
export {
|
|
146
146
|
ObjectCardStack_default as default
|
|
147
147
|
};
|
|
148
|
-
//# sourceMappingURL=ObjectCardStack-
|
|
148
|
+
//# sourceMappingURL=ObjectCardStack-CXNBCSMR.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/ObjectCardStack/ObjectCardStack.tsx", "../../../src/components/ObjectCardStack/ObjectForm.tsx", "../../../src/components/ObjectCardStack/index.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { forwardRef } from 'react';\n\nimport { Obj } from '@dxos/echo';\nimport { Filter, useQuery, useSchema } from '@dxos/react-client/echo';\nimport { Callout, Toolbar, useTranslation } from '@dxos/react-ui';\nimport { Layout } from '@dxos/react-ui';\nimport { useSelected } from '@dxos/react-ui-attention';\nimport { Card } from '@dxos/react-ui-mosaic';\nimport { CardStack, StackItem } from '@dxos/react-ui-stack';\nimport { type View, getTypenameFromQuery } from '@dxos/schema';\nimport { isNonNullable } from '@dxos/util';\n\nimport { meta } from '../../meta';\n\nimport { ObjectForm } from './ObjectForm';\n\nexport type ObjectCardStackProps = {\n view: View.View;\n objectId: string;\n};\n\nexport const ObjectCardStack = forwardRef<HTMLDivElement, ObjectCardStackProps>(({ objectId, view }, forwardedRef) => {\n const { t } = useTranslation(meta.id);\n const db = Obj.getDatabase(view);\n const typename = view.query ? getTypenameFromQuery(view.query.ast) : undefined;\n const schema = useSchema(db, typename);\n\n const queriedObjects = useQuery(db, schema ? Filter.type(schema) : Filter.nothing());\n const selectedRows = useSelected(objectId, 'multi');\n const selectedObjects = selectedRows.map((id) => queriedObjects.find((obj) => obj.id === id)).filter(isNonNullable);\n\n if (!schema) {\n return null;\n }\n\n return (\n <Layout.Main toolbar ref={forwardedRef}>\n <Toolbar.Root></Toolbar.Root>\n <CardStack.Root asChild>\n <CardStack.Content>\n <CardStack.Stack id={objectId} itemsCount={selectedObjects.length}>\n {selectedObjects.length === 0 && (\n <CardStack.Item>\n <Callout.Root>\n <Callout.Title>{t('row details no selection label')}</Callout.Title>\n </Callout.Root>\n </CardStack.Item>\n )}\n {selectedObjects.map((object) => (\n <CardStack.Item key={object.id} asChild>\n <StackItem.Root item={object}>\n <Card.Root>\n <ObjectForm object={object} schema={schema} />\n </Card.Root>\n </StackItem.Root>\n </CardStack.Item>\n ))}\n </CardStack.Stack>\n </CardStack.Content>\n </CardStack.Root>\n </Layout.Main>\n );\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\nimport React, { useCallback, useMemo } from 'react';\n\nimport { DXN, Obj, type Ref, Tag, Type } from '@dxos/echo';\nimport { type JsonPath, splitJsonPath } from '@dxos/echo/internal';\nimport { invariant } from '@dxos/invariant';\nimport { Form, omitId } from '@dxos/react-ui-form';\nimport { isNonNullable } from '@dxos/util';\n\nimport { meta as pluginMeta } from '../../meta';\n\nexport type ObjectFormProps = {\n schema: Schema.Schema.AnyNoContext;\n object: Obj.Unknown;\n};\n\nexport const ObjectForm = ({ object, schema }: ObjectFormProps) => {\n const db = Obj.getDatabase(object);\n\n const formSchema = useMemo(\n () =>\n Schema.Struct({\n tags: Schema.Array(Type.Ref(Tag.Tag)).pipe(Schema.optional),\n }).pipe(Schema.extend(omitId(schema))),\n [schema],\n );\n\n const meta = Obj.getMeta(object);\n const tags = (meta.tags ?? []).map((tag) => db?.makeRef(DXN.parse(tag))).filter(isNonNullable);\n const values = useMemo(() => ({ tags, ...object }), [object, tags]);\n\n const handleCreate = useCallback((schema: Type.Entity.Any, values: any) => {\n invariant(db);\n invariant(Type.isObjectSchema(schema));\n const newObject = db.add(Obj.make(schema, values));\n if (Obj.instanceOf(Tag.Tag, newObject)) {\n Obj.change(object, (obj) => {\n Obj.getMeta(obj).tags = [...(Obj.getMeta(obj).tags ?? []), Obj.getDXN(newObject).toString()];\n });\n }\n }, []);\n\n // TODO(wittjosiah): Use FormRootProps type.\n const handleChange = useCallback(\n ({ tags, ...values }: any, { isValid, changed }: { isValid: boolean; changed: Record<JsonPath, boolean> }) => {\n if (!isValid) {\n return;\n }\n\n const changedPaths = Object.keys(changed).filter((path) => changed[path as JsonPath]) as JsonPath[];\n\n // Handle tags separately using Obj.change.\n const hasTagsChange = changedPaths.some((path) => splitJsonPath(path)[0] === 'tags');\n if (hasTagsChange) {\n Obj.change(object, (obj) => {\n Obj.getMeta(obj).tags = tags?.map((tag: Ref.Ref<Tag.Tag>) => tag.dxn.toString()) ?? [];\n });\n }\n\n // Handle other property changes.\n const nonTagPaths = changedPaths.filter((path) => splitJsonPath(path)[0] !== 'tags');\n if (nonTagPaths.length > 0) {\n Obj.change(object, () => {\n for (const path of nonTagPaths) {\n const parts = splitJsonPath(path);\n const value = Obj.getValue(values, parts);\n Obj.setValue(object, parts, value);\n }\n });\n }\n },\n [object],\n );\n\n return (\n <Form.Root\n schema={omitId(formSchema)}\n values={values}\n createOptionIcon='ph--plus--regular'\n createOptionLabel={['add tag label', { ns: pluginMeta.id }]}\n createInitialValuePath='label'\n db={db}\n onValuesChanged={handleChange}\n onCreate={handleCreate}\n >\n <Form.Viewport>\n <Form.Content>\n <Form.FieldSet />\n </Form.Content>\n </Form.Viewport>\n </Form.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { ObjectCardStack } from './ObjectCardStack';\n\nexport default ObjectCardStack;\n"],
|
|
5
|
+
"mappings": ";;;;;AAIA,OAAOA,UAASC,kBAAkB;AAElC,SAASC,OAAAA,YAAW;AACpB,SAASC,QAAQC,UAAUC,iBAAiB;AAC5C,SAASC,SAASC,SAASC,sBAAsB;AACjD,SAASC,cAAc;AACvB,SAASC,mBAAmB;AAC5B,SAASC,YAAY;AACrB,SAASC,WAAWC,iBAAiB;AACrC,SAAoBC,4BAA4B;AAChD,SAASC,iBAAAA,sBAAqB;;;ACV9B,YAAYC,YAAY;AACxB,OAAOC,SAASC,aAAaC,eAAe;AAE5C,SAASC,KAAKC,KAAeC,KAAKC,YAAY;AAC9C,SAAwBC,qBAAqB;AAC7C,SAASC,iBAAiB;AAC1B,SAASC,MAAMC,cAAc;AAC7B,SAASC,qBAAqB;;AASvB,IAAMC,aAAa,CAAC,EAAEC,QAAQC,OAAM,MAAmB;AAC5D,QAAMC,KAAKC,IAAIC,YAAYJ,MAAAA;AAE3B,QAAMK,aAAaC,QACjB,MACSC,cAAO;IACZC,MAAaC,aAAMC,KAAKC,IAAIC,IAAIA,GAAG,CAAA,EAAGC,KAAYC,eAAQ;EAC5D,CAAA,EAAGD,KAAYE,cAAOC,OAAOf,MAAAA,CAAAA,CAAAA,GAC/B;IAACA;GAAO;AAGV,QAAMgB,QAAOd,IAAIe,QAAQlB,MAAAA;AACzB,QAAMQ,QAAQS,MAAKT,QAAQ,CAAA,GAAIW,IAAI,CAACC,QAAQlB,IAAImB,QAAQC,IAAIC,MAAMH,GAAAA,CAAAA,CAAAA,EAAOI,OAAOC,aAAAA;AAChF,QAAMC,SAASpB,QAAQ,OAAO;IAAEE;IAAM,GAAGR;EAAO,IAAI;IAACA;IAAQQ;GAAK;AAElE,QAAMmB,eAAeC,YAAY,CAAC3B,SAAyByB,YAAAA;AACzDG,cAAU3B,IAAAA,QAAAA;;;;;;;;;AACV2B,cAAUnB,KAAKoB,eAAe7B,OAAAA,GAAAA,QAAAA;;;;;;;;;AAC9B,UAAM8B,YAAY7B,GAAG8B,IAAI7B,IAAI8B,KAAKhC,SAAQyB,OAAAA,CAAAA;AAC1C,QAAIvB,IAAI+B,WAAWtB,IAAIA,KAAKmB,SAAAA,GAAY;AACtC5B,UAAIgC,OAAOnC,QAAQ,CAACoC,QAAAA;AAClBjC,YAAIe,QAAQkB,GAAAA,EAAK5B,OAAO;aAAKL,IAAIe,QAAQkB,GAAAA,EAAK5B,QAAQ,CAAA;UAAKL,IAAIkC,OAAON,SAAAA,EAAWO,SAAQ;;MAC3F,CAAA;IACF;EACF,GAAG,CAAA,CAAE;AAGL,QAAMC,eAAeX,YACnB,CAAC,EAAEpB,MAAAA,OAAM,GAAGkB,QAAAA,GAAe,EAAEc,SAASC,QAAO,MAA4D;AACvG,QAAI,CAACD,SAAS;AACZ;IACF;AAEA,UAAME,eAAeC,OAAOC,KAAKH,OAAAA,EAASjB,OAAO,CAACqB,SAASJ,QAAQI,IAAAA,CAAiB;AAGpF,UAAMC,gBAAgBJ,aAAaK,KAAK,CAACF,SAASG,cAAcH,IAAAA,EAAM,CAAA,MAAO,MAAA;AAC7E,QAAIC,eAAe;AACjB3C,UAAIgC,OAAOnC,QAAQ,CAACoC,QAAAA;AAClBjC,YAAIe,QAAQkB,GAAAA,EAAK5B,OAAOA,OAAMW,IAAI,CAACC,QAA0BA,IAAI6B,IAAIX,SAAQ,CAAA,KAAO,CAAA;MACtF,CAAA;IACF;AAGA,UAAMY,cAAcR,aAAalB,OAAO,CAACqB,SAASG,cAAcH,IAAAA,EAAM,CAAA,MAAO,MAAA;AAC7E,QAAIK,YAAYC,SAAS,GAAG;AAC1BhD,UAAIgC,OAAOnC,QAAQ,MAAA;AACjB,mBAAW6C,QAAQK,aAAa;AAC9B,gBAAME,QAAQJ,cAAcH,IAAAA;AAC5B,gBAAMQ,QAAQlD,IAAImD,SAAS5B,SAAQ0B,KAAAA;AACnCjD,cAAIoD,SAASvD,QAAQoD,OAAOC,KAAAA;QAC9B;MACF,CAAA;IACF;EACF,GACA;IAACrD;GAAO;AAGV,SACE,sBAAA,cAACwD,KAAKC,MAAI;IACRxD,QAAQe,OAAOX,UAAAA;IACfqB;IACAgC,kBAAiB;IACjBC,mBAAmB;MAAC;MAAiB;QAAEC,IAAIC,KAAWC;MAAG;;IACzDC,wBAAuB;IACvB7D;IACA8D,iBAAiBzB;IACjB0B,UAAUtC;KAEV,sBAAA,cAAC6B,KAAKU,UAAQ,MACZ,sBAAA,cAACV,KAAKW,SAAO,MACX,sBAAA,cAACX,KAAKY,UAAQ,IAAA,CAAA,CAAA,CAAA;AAKxB;;;ADvEO,IAAMC,kBAAkBC,2BAAiD,CAAC,EAAEC,UAAUC,KAAI,GAAIC,iBAAAA;AACnG,QAAM,EAAEC,EAAC,IAAKC,eAAeC,KAAKC,EAAE;AACpC,QAAMC,KAAKC,KAAIC,YAAYR,IAAAA;AAC3B,QAAMS,WAAWT,KAAKU,QAAQC,qBAAqBX,KAAKU,MAAME,GAAG,IAAIC;AACrE,QAAMC,SAASC,UAAUT,IAAIG,QAAAA;AAE7B,QAAMO,iBAAiBC,SAASX,IAAIQ,SAASI,OAAOC,KAAKL,MAAAA,IAAUI,OAAOE,QAAO,CAAA;AACjF,QAAMC,eAAeC,YAAYvB,UAAU,OAAA;AAC3C,QAAMwB,kBAAkBF,aAAaG,IAAI,CAACnB,OAAOW,eAAeS,KAAK,CAACC,QAAQA,IAAIrB,OAAOA,EAAAA,CAAAA,EAAKsB,OAAOC,cAAAA;AAErG,MAAI,CAACd,QAAQ;AACX,WAAO;EACT;AAEA,SACE,gBAAAe,OAAA,cAACC,OAAOC,MAAI;IAACC,SAAAA;IAAQC,KAAKhC;KACxB,gBAAA4B,OAAA,cAACK,QAAQC,MAAI,IAAA,GACb,gBAAAN,OAAA,cAACO,UAAUD,MAAI;IAACE,SAAAA;KACd,gBAAAR,OAAA,cAACO,UAAUE,SAAO,MAChB,gBAAAT,OAAA,cAACO,UAAUG,OAAK;IAAClC,IAAIN;IAAUyC,YAAYjB,gBAAgBkB;KACxDlB,gBAAgBkB,WAAW,KAC1B,gBAAAZ,OAAA,cAACO,UAAUM,MAAI,MACb,gBAAAb,OAAA,cAACc,QAAQR,MAAI,MACX,gBAAAN,OAAA,cAACc,QAAQC,OAAK,MAAE1C,EAAE,gCAAA,CAAA,CAAA,CAAA,GAIvBqB,gBAAgBC,IAAI,CAACqB,WACpB,gBAAAhB,OAAA,cAACO,UAAUM,MAAI;IAACI,KAAKD,OAAOxC;IAAIgC,SAAAA;KAC9B,gBAAAR,OAAA,cAACkB,UAAUZ,MAAI;IAACa,MAAMH;KACpB,gBAAAhB,OAAA,cAACoB,KAAKd,MAAI,MACR,gBAAAN,OAAA,cAACqB,YAAAA;IAAWL;IAAgB/B;;AAUhD,CAAA;;;AE5DA,IAAA,0BAAeqC;",
|
|
6
|
+
"names": ["React", "forwardRef", "Obj", "Filter", "useQuery", "useSchema", "Callout", "Toolbar", "useTranslation", "Layout", "useSelected", "Card", "CardStack", "StackItem", "getTypenameFromQuery", "isNonNullable", "Schema", "React", "useCallback", "useMemo", "DXN", "Obj", "Tag", "Type", "splitJsonPath", "invariant", "Form", "omitId", "isNonNullable", "ObjectForm", "object", "schema", "db", "Obj", "getDatabase", "formSchema", "useMemo", "Struct", "tags", "Array", "Type", "Ref", "Tag", "pipe", "optional", "extend", "omitId", "meta", "getMeta", "map", "tag", "makeRef", "DXN", "parse", "filter", "isNonNullable", "values", "handleCreate", "useCallback", "invariant", "isObjectSchema", "newObject", "add", "make", "instanceOf", "change", "obj", "getDXN", "toString", "handleChange", "isValid", "changed", "changedPaths", "Object", "keys", "path", "hasTagsChange", "some", "splitJsonPath", "dxn", "nonTagPaths", "length", "parts", "value", "getValue", "setValue", "Form", "Root", "createOptionIcon", "createOptionLabel", "ns", "pluginMeta", "id", "createInitialValuePath", "onValuesChanged", "onCreate", "Viewport", "Content", "FieldSet", "ObjectCardStack", "forwardRef", "objectId", "view", "forwardedRef", "t", "useTranslation", "meta", "id", "db", "Obj", "getDatabase", "typename", "query", "getTypenameFromQuery", "ast", "undefined", "schema", "useSchema", "queriedObjects", "useQuery", "Filter", "type", "nothing", "selectedRows", "useSelected", "selectedObjects", "map", "find", "obj", "filter", "isNonNullable", "React", "Layout", "Main", "toolbar", "ref", "Toolbar", "Root", "CardStack", "asChild", "Content", "Stack", "itemsCount", "length", "Item", "Callout", "Title", "object", "key", "StackItem", "item", "Card", "ObjectForm", "ObjectCardStack"]
|
|
7
|
+
}
|
|
@@ -4,9 +4,9 @@ import {
|
|
|
4
4
|
|
|
5
5
|
// src/components/ObjectDetails/ObjectDetails.tsx
|
|
6
6
|
import React2, { forwardRef, useMemo as useMemo2 } from "react";
|
|
7
|
-
import { Surface } from "@dxos/app-framework/
|
|
7
|
+
import { Surface } from "@dxos/app-framework/ui";
|
|
8
8
|
import { Toolbar } from "@dxos/react-ui";
|
|
9
|
-
import { Layout } from "@dxos/react-ui
|
|
9
|
+
import { Layout } from "@dxos/react-ui";
|
|
10
10
|
|
|
11
11
|
// src/components/ObjectDetails/BaseObjectSettings.tsx
|
|
12
12
|
import * as Function from "effect/Function";
|
|
@@ -121,14 +121,15 @@ var ObjectDetails = /* @__PURE__ */ forwardRef(({ role, subject: object }, forwa
|
|
|
121
121
|
object
|
|
122
122
|
]);
|
|
123
123
|
return /* @__PURE__ */ React2.createElement(Layout.Main, {
|
|
124
|
+
toolbar: true,
|
|
124
125
|
role,
|
|
125
126
|
ref: forwardedRef
|
|
126
127
|
}, /* @__PURE__ */ React2.createElement(Toolbar.Root, null), /* @__PURE__ */ React2.createElement(BaseObjectSettings, {
|
|
127
128
|
object
|
|
128
|
-
}, /* @__PURE__ */ React2.createElement(Surface, {
|
|
129
|
+
}, /* @__PURE__ */ React2.createElement(Surface.Surface, {
|
|
129
130
|
role: "base-object-settings",
|
|
130
131
|
data
|
|
131
|
-
}), /* @__PURE__ */ React2.createElement(Surface, {
|
|
132
|
+
}), /* @__PURE__ */ React2.createElement(Surface.Surface, {
|
|
132
133
|
role: "object-settings",
|
|
133
134
|
data
|
|
134
135
|
})));
|
|
@@ -139,4 +140,4 @@ var ObjectDetails_default = ObjectDetails;
|
|
|
139
140
|
export {
|
|
140
141
|
ObjectDetails_default as default
|
|
141
142
|
};
|
|
142
|
-
//# sourceMappingURL=ObjectDetails-
|
|
143
|
+
//# sourceMappingURL=ObjectDetails-HXV4IQEM.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/ObjectDetails/ObjectDetails.tsx", "../../../src/components/ObjectDetails/BaseObjectSettings.tsx", "../../../src/components/ObjectDetails/index.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { forwardRef, useMemo } from 'react';\n\nimport { Surface } from '@dxos/app-framework/ui';\nimport { type SurfaceComponentProps } from '@dxos/app-toolkit/ui';\nimport { type Obj } from '@dxos/echo';\nimport { Toolbar } from '@dxos/react-ui';\nimport { Layout } from '@dxos/react-ui';\n\nimport { BaseObjectSettings } from './BaseObjectSettings';\n\nexport type ObjectDetailsProps = SurfaceComponentProps<Obj.Unknown>;\n\nexport const ObjectDetails = forwardRef<HTMLDivElement, ObjectDetailsProps>(\n ({ role, subject: object }, forwardedRef) => {\n const data = useMemo(() => ({ subject: object }), [object]);\n\n return (\n <Layout.Main toolbar role={role} ref={forwardedRef}>\n <Toolbar.Root />\n <BaseObjectSettings object={object}>\n <Surface.Surface role='base-object-settings' data={data} />\n <Surface.Surface role='object-settings' data={data} />\n {/* TODO(wittjosiah): Remove (or add as surface)? */}\n {/* <AdvancedObjectSettings object={object} /> */}\n </BaseObjectSettings>\n </Layout.Main>\n );\n },\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Function from 'effect/Function';\nimport * as Option from 'effect/Option';\nimport * as Schema from 'effect/Schema';\nimport React, { type PropsWithChildren, useCallback, useMemo } from 'react';\n\nimport { DXN, Obj, type Ref, Tag, Type } from '@dxos/echo';\nimport { type JsonPath, splitJsonPath } from '@dxos/echo/internal';\nimport { invariant } from '@dxos/invariant';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { Form, omitId } from '@dxos/react-ui-form';\nimport { isNonNullable } from '@dxos/util';\n\nimport { meta as pluginMeta } from '../../meta';\n\n// TODO(wittjosiah): Would be nice to control order when extending so this isn't always first/last.\nconst BaseSchema = Schema.Struct({\n tags: Schema.Array(Type.Ref(Tag.Tag)).pipe(Schema.optional),\n});\n\nexport type BaseObjectSettingsProps = ThemedClassName<\n PropsWithChildren<{\n object: Obj.Unknown;\n }>\n>;\n\n// TODO(wittjosiah): Reconcile w/ ObjectDetailsPanel.\nexport const BaseObjectSettings = ({ classNames, children, object }: BaseObjectSettingsProps) => {\n const db = Obj.getDatabase(object);\n\n const formSchema = useMemo(() => {\n return Function.pipe(\n Obj.getSchema(object),\n Option.fromNullable,\n Option.map((schema) => BaseSchema.pipe(Schema.extend(schema))),\n Option.getOrUndefined,\n );\n }, [object]);\n\n const meta = Obj.getMeta(object);\n const tags = (meta.tags ?? []).map((tag) => db?.makeRef(DXN.parse(tag))).filter(isNonNullable);\n const values = useMemo(\n () => ({\n tags,\n ...object,\n }),\n [object, tags],\n );\n\n const handleCreate = useCallback((schema: Type.Entity.Any, values: any) => {\n invariant(db);\n invariant(Type.isObjectSchema(schema));\n const newObject = db.add(Obj.make(schema, values));\n if (Obj.instanceOf(Tag.Tag, newObject)) {\n Obj.change(object, (obj) => {\n Obj.getMeta(obj).tags = [...(Obj.getMeta(obj).tags ?? []), Obj.getDXN(newObject).toString()];\n });\n }\n }, []);\n\n // TODO(wittjosiah): Use FormRootProps type.\n const handleChange = useCallback(\n (\n { tags, ...values }: Schema.Schema.Type<typeof formSchema>,\n { isValid, changed }: { isValid: boolean; changed: Record<JsonPath, boolean> },\n ) => {\n if (!isValid) {\n return;\n }\n\n const changedPaths = Object.keys(changed).filter((path) => changed[path as JsonPath]) as JsonPath[];\n\n // Handle tags separately using Obj.change.\n const hasTagsChange = changedPaths.some((path) => splitJsonPath(path)[0] === 'tags');\n if (hasTagsChange) {\n Obj.change(object, (obj) => {\n Obj.getMeta(obj).tags = tags?.map((tag: Ref.Ref<Tag.Tag>) => tag.dxn.toString()) ?? [];\n });\n }\n\n // Handle other property changes.\n const nonTagPaths = changedPaths.filter((path) => splitJsonPath(path)[0] !== 'tags');\n if (nonTagPaths.length > 0) {\n Obj.change(object, () => {\n for (const path of nonTagPaths) {\n const parts = splitJsonPath(path);\n const value = Obj.getValue(values, parts);\n Obj.setValue(object, parts, value);\n }\n });\n }\n },\n [object],\n );\n\n if (!formSchema) {\n return null;\n }\n\n return (\n <Form.Root\n schema={omitId(formSchema)}\n values={values}\n createOptionIcon='ph--plus--regular'\n createOptionLabel={['add tag label', { ns: pluginMeta.id }]}\n createInitialValuePath='label'\n db={db}\n onValuesChanged={handleChange}\n onCreate={handleCreate}\n >\n <Form.Viewport>\n <Form.Content classNames={classNames}>\n <Form.FieldSet />\n {children}\n </Form.Content>\n </Form.Viewport>\n </Form.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { ObjectDetails } from './ObjectDetails';\n\nexport default ObjectDetails;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["React", "forwardRef", "useMemo", "Surface", "Toolbar", "Layout", "Function", "Option", "Schema", "React", "useCallback", "useMemo", "DXN", "Obj", "Tag", "Type", "splitJsonPath", "invariant", "Form", "omitId", "isNonNullable", "BaseSchema", "Struct", "tags", "Array", "Type", "Ref", "Tag", "pipe", "optional", "BaseObjectSettings", "classNames", "children", "object", "db", "Obj", "getDatabase", "formSchema", "useMemo", "getSchema", "fromNullable", "map", "schema", "extend", "getOrUndefined", "meta", "getMeta", "tag", "makeRef", "DXN", "parse", "filter", "isNonNullable", "values", "handleCreate", "useCallback", "invariant", "isObjectSchema", "newObject", "add", "make", "instanceOf", "change", "obj", "getDXN", "toString", "handleChange", "isValid", "changed", "changedPaths", "Object", "keys", "path", "hasTagsChange", "some", "splitJsonPath", "dxn", "nonTagPaths", "length", "parts", "value", "getValue", "setValue", "Form", "Root", "omitId", "createOptionIcon", "createOptionLabel", "ns", "pluginMeta", "id", "createInitialValuePath", "onValuesChanged", "onCreate", "Viewport", "Content", "FieldSet", "ObjectDetails", "forwardRef", "role", "subject", "object", "forwardedRef", "data", "useMemo", "React", "Layout", "Main", "toolbar", "ref", "Toolbar", "Root", "BaseObjectSettings", "Surface", "ObjectDetails"]
|
|
7
|
+
}
|
|
@@ -4,12 +4,12 @@ import {
|
|
|
4
4
|
|
|
5
5
|
// src/components/RecordArticle.tsx
|
|
6
6
|
import React, { useMemo } from "react";
|
|
7
|
-
import { Surface } from "@dxos/app-framework/
|
|
7
|
+
import { Surface } from "@dxos/app-framework/ui";
|
|
8
8
|
import { Entity, Filter, Obj, Ref, Relation } from "@dxos/echo";
|
|
9
9
|
import { useQuery } from "@dxos/react-client/echo";
|
|
10
|
-
import { useTranslation } from "@dxos/react-ui";
|
|
10
|
+
import { Layout, ScrollArea, useTranslation } from "@dxos/react-ui";
|
|
11
11
|
import { Masonry } from "@dxos/react-ui-masonry";
|
|
12
|
-
import {
|
|
12
|
+
import { Card as MosaicCard } from "@dxos/react-ui-mosaic";
|
|
13
13
|
import { mx } from "@dxos/ui-theme";
|
|
14
14
|
import { isNonNullable } from "@dxos/util";
|
|
15
15
|
var RecordArticle = ({ role, subject }) => {
|
|
@@ -27,13 +27,14 @@ var RecordArticle = ({ role, subject }) => {
|
|
|
27
27
|
const singleColumn = related.length === 1;
|
|
28
28
|
return /* @__PURE__ */ React.createElement(Layout.Main, {
|
|
29
29
|
role
|
|
30
|
-
}, /* @__PURE__ */ React.createElement(
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
}, /* @__PURE__ */ React.createElement(ScrollArea.Root, {
|
|
31
|
+
orientation: "vertical"
|
|
32
|
+
}, /* @__PURE__ */ React.createElement(ScrollArea.Viewport, {
|
|
33
|
+
classNames: mx("p-4 gap-4")
|
|
33
34
|
}, /* @__PURE__ */ React.createElement("div", {
|
|
34
35
|
role: "none",
|
|
35
36
|
className: mx("flex is-full card-max-width")
|
|
36
|
-
}, /* @__PURE__ */ React.createElement(Surface, {
|
|
37
|
+
}, /* @__PURE__ */ React.createElement(Surface.Surface, {
|
|
37
38
|
role: "section",
|
|
38
39
|
data,
|
|
39
40
|
limit: 1
|
|
@@ -47,7 +48,7 @@ var RecordArticle = ({ role, subject }) => {
|
|
|
47
48
|
render: Card,
|
|
48
49
|
columnCount: singleColumn ? 1 : void 0,
|
|
49
50
|
intrinsicHeight: true
|
|
50
|
-
}))));
|
|
51
|
+
})))));
|
|
51
52
|
};
|
|
52
53
|
var Card = ({ data: subject }) => {
|
|
53
54
|
const data = useMemo(() => ({
|
|
@@ -55,7 +56,7 @@ var Card = ({ data: subject }) => {
|
|
|
55
56
|
}), [
|
|
56
57
|
subject
|
|
57
58
|
]);
|
|
58
|
-
return /* @__PURE__ */ React.createElement(MosaicCard.Root, null, /* @__PURE__ */ React.createElement(MosaicCard.Toolbar, null, /* @__PURE__ */ React.createElement("span", null), /* @__PURE__ */ React.createElement(MosaicCard.Title, null, Entity.getLabel(subject))), /* @__PURE__ */ React.createElement(Surface, {
|
|
59
|
+
return /* @__PURE__ */ React.createElement(MosaicCard.Root, null, /* @__PURE__ */ React.createElement(MosaicCard.Toolbar, null, /* @__PURE__ */ React.createElement("span", null), /* @__PURE__ */ React.createElement(MosaicCard.Title, null, Entity.getLabel(subject))), /* @__PURE__ */ React.createElement(Surface.Surface, {
|
|
59
60
|
role: "card--content",
|
|
60
61
|
data,
|
|
61
62
|
limit: 1
|
|
@@ -104,4 +105,4 @@ export {
|
|
|
104
105
|
RecordArticle,
|
|
105
106
|
RecordArticle_default as default
|
|
106
107
|
};
|
|
107
|
-
//# sourceMappingURL=RecordArticle-
|
|
108
|
+
//# sourceMappingURL=RecordArticle-36LDKFWF.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/RecordArticle.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { Surface } from '@dxos/app-framework/ui';\nimport { type SurfaceComponentProps } from '@dxos/app-toolkit/ui';\nimport { type Database, Entity, Filter, Obj, Ref, Relation } from '@dxos/echo';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { Layout, ScrollArea, useTranslation } from '@dxos/react-ui';\nimport { Masonry } from '@dxos/react-ui-masonry';\nimport { Card as MosaicCard } from '@dxos/react-ui-mosaic';\nimport { mx } from '@dxos/ui-theme';\nimport { isNonNullable } from '@dxos/util';\n\nimport { meta } from '../meta';\n\nexport const RecordArticle = ({ role, subject }: SurfaceComponentProps) => {\n const { t } = useTranslation(meta.id);\n const db = Obj.getDatabase(subject);\n const data = useMemo(() => ({ subject }), [subject]);\n const related = useRelatedObjects(db, subject, {\n references: true,\n relations: true,\n });\n const singleColumn = related.length === 1;\n\n return (\n <Layout.Main role={role}>\n <ScrollArea.Root orientation='vertical'>\n <ScrollArea.Viewport classNames={mx('p-4 gap-4')}>\n <div role='none' className={mx('flex is-full card-max-width')}>\n <Surface.Surface role='section' data={data} limit={1} />\n </div>\n\n {related.length > 0 && (\n <div role='none' className={mx('flex flex-col gap-1', singleColumn ? 'card-max-width' : 'is-full')}>\n <label className='mbs-2 text-sm text-description'>{t('related objects label')}</label>\n <Masonry.Root<Entity.Unknown>\n items={related}\n render={Card}\n columnCount={singleColumn ? 1 : undefined}\n intrinsicHeight\n />\n </div>\n )}\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n </Layout.Main>\n );\n};\n\nconst Card = ({ data: subject }: { data: Entity.Unknown }) => {\n const data = useMemo(() => ({ subject }), [subject]);\n return (\n <MosaicCard.Root>\n <MosaicCard.Toolbar>\n <span />\n <MosaicCard.Title>{Entity.getLabel(subject)}</MosaicCard.Title>\n </MosaicCard.Toolbar>\n <Surface.Surface role='card--content' data={data} limit={1} />\n </MosaicCard.Root>\n );\n};\n\n// TODO(wittjosiah): This is a hack. ECHO needs to have a back reference index to easily query for related objects.\nconst useRelatedObjects = (\n db?: Database.Database,\n record?: Obj.Unknown,\n options: { references?: boolean; relations?: boolean } = {},\n) => {\n const objects = useQuery(db, Filter.everything());\n return useMemo(() => {\n if (!record) {\n return [];\n }\n\n const related: Entity.Unknown[] = [];\n\n // TODO(burdon): Change Person => Organization to relations.\n if (options.references) {\n const getReferences = (obj: Entity.Unknown): Ref.Unknown[] => {\n return Object.getOwnPropertyNames(obj)\n .map((name) => obj[name as keyof Obj.Unknown])\n .filter((value) => Ref.isRef(value)) as Ref.Unknown[];\n };\n\n const references = getReferences(record);\n const referenceTargets = references.map((ref) => ref.target).filter(isNonNullable);\n const referenceSources = objects.filter((obj) => {\n const refs = getReferences(obj);\n return refs.some((ref) => ref.target === record);\n });\n\n related.push(...referenceTargets, ...referenceSources);\n }\n\n if (options.relations) {\n // TODO(dmaretskyi): Workaround until https://github.com/dxos/dxos/pull/10100 lands.\n const isValidRelation = (obj: Relation.Unknown) => {\n try {\n return Relation.isRelation(obj) && Relation.getSource(obj) && Relation.getTarget(obj);\n } catch {\n return false;\n }\n };\n\n const relations = objects.filter(Relation.isRelation).filter((obj) => isValidRelation(obj));\n const targetObjects = relations\n .filter((relation) => Relation.getTarget(relation) === record)\n .map((relation) => Relation.getSource(relation));\n const sourceObjects = relations\n .filter((relation) => Relation.getSource(relation) === record)\n .map((relation) => Relation.getTarget(relation));\n\n related.push(...targetObjects, ...sourceObjects);\n }\n\n return related;\n }, [record, objects]);\n};\n\nexport default RecordArticle;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["React", "useMemo", "Surface", "Entity", "Filter", "Obj", "Ref", "Relation", "useQuery", "Layout", "ScrollArea", "useTranslation", "Masonry", "Card", "MosaicCard", "mx", "isNonNullable", "RecordArticle", "role", "subject", "t", "useTranslation", "meta", "id", "db", "Obj", "getDatabase", "data", "useMemo", "related", "useRelatedObjects", "references", "relations", "singleColumn", "length", "Layout", "Main", "ScrollArea", "Root", "orientation", "Viewport", "classNames", "mx", "div", "className", "Surface", "limit", "label", "Masonry", "items", "render", "Card", "columnCount", "undefined", "intrinsicHeight", "MosaicCard", "Toolbar", "span", "Title", "Entity", "getLabel", "record", "options", "objects", "useQuery", "Filter", "everything", "getReferences", "obj", "Object", "getOwnPropertyNames", "map", "name", "filter", "value", "Ref", "isRef", "referenceTargets", "ref", "target", "isNonNullable", "referenceSources", "refs", "some", "push", "isValidRelation", "Relation", "isRelation", "getSource", "getTarget", "targetObjects", "relation", "sourceObjects"]
|
|
7
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getActiveSpace
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-A7ZCVQGZ.mjs";
|
|
4
4
|
import {
|
|
5
5
|
SHARED,
|
|
6
6
|
constructObjectActions,
|
|
@@ -9,12 +9,12 @@ import {
|
|
|
9
9
|
createObjectNode,
|
|
10
10
|
createStaticSchemaActions,
|
|
11
11
|
createStaticSchemaNode
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-WAOJLA2S.mjs";
|
|
13
13
|
import {
|
|
14
14
|
SPACE_TYPE,
|
|
15
15
|
SpaceCapabilities,
|
|
16
16
|
SpaceOperation
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-KGLWYGIF.mjs";
|
|
18
18
|
import {
|
|
19
19
|
meta
|
|
20
20
|
} from "./chunk-HSMQFM57.mjs";
|
|
@@ -23,7 +23,8 @@ import {
|
|
|
23
23
|
import * as Effect from "effect/Effect";
|
|
24
24
|
import * as Option from "effect/Option";
|
|
25
25
|
import * as Schema from "effect/Schema";
|
|
26
|
-
import { Capability
|
|
26
|
+
import { Capability } from "@dxos/app-framework";
|
|
27
|
+
import { AppCapabilities } from "@dxos/app-toolkit";
|
|
27
28
|
import { SpaceState, getSpace, isSpace, parseId } from "@dxos/client/echo";
|
|
28
29
|
import { DXN, Filter, Obj, Type } from "@dxos/echo";
|
|
29
30
|
import { AtomObj, AtomQuery } from "@dxos/echo-atom";
|
|
@@ -34,9 +35,10 @@ import { CreateAtom, GraphBuilder, NodeMatcher } from "@dxos/plugin-graph";
|
|
|
34
35
|
import { Collection, Expando, ViewAnnotation, getTypenameFromQuery } from "@dxos/schema";
|
|
35
36
|
import { isNonNullable } from "@dxos/util";
|
|
36
37
|
var whenSpace = (node) => node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none();
|
|
37
|
-
var app_graph_builder_default = Capability.makeModule(Effect.fnUntraced(function* () {
|
|
38
|
+
var app_graph_builder_default = Capability.makeModule(Effect.fnUntraced(function* (props) {
|
|
39
|
+
const { shareableLinkOrigin = window.location.origin } = props ?? {};
|
|
38
40
|
const capabilities = yield* Capability.Service;
|
|
39
|
-
const resolve = (get) => (typename) => capabilities.getAll(
|
|
41
|
+
const resolve = (get) => (typename) => capabilities.getAll(AppCapabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};
|
|
40
42
|
const extensions = yield* Effect.all([
|
|
41
43
|
// Primary actions.
|
|
42
44
|
GraphBuilder.createExtension({
|
|
@@ -146,7 +148,7 @@ var app_graph_builder_default = Capability.makeModule(Effect.fnUntraced(function
|
|
|
146
148
|
const [spacesOrder] = get(AtomQuery.make(client.spaces.default.db, Filter.type(Expando.Expando, {
|
|
147
149
|
key: SHARED
|
|
148
150
|
})));
|
|
149
|
-
const { graph } = capabilities.get(
|
|
151
|
+
const { graph } = capabilities.get(AppCapabilities.AppGraph);
|
|
150
152
|
const spacesOrderSnapshot = spacesOrder ? get(AtomObj.make(spacesOrder)) : void 0;
|
|
151
153
|
const order = spacesOrderSnapshot?.order ?? [];
|
|
152
154
|
const orderMap = new Map(order.map((id, index) => [
|
|
@@ -188,7 +190,7 @@ var app_graph_builder_default = Capability.makeModule(Effect.fnUntraced(function
|
|
|
188
190
|
}
|
|
189
191
|
const state = get(capabilities.get(SpaceCapabilities.State));
|
|
190
192
|
const ephemeralState = get(capabilities.get(SpaceCapabilities.EphemeralState));
|
|
191
|
-
const { graph } = capabilities.get(
|
|
193
|
+
const { graph } = capabilities.get(AppCapabilities.AppGraph);
|
|
192
194
|
const [spacesOrder] = get(AtomQuery.make(client.spaces.default.db, Filter.type(Expando.Expando, {
|
|
193
195
|
key: SHARED
|
|
194
196
|
})));
|
|
@@ -307,17 +309,21 @@ var app_graph_builder_default = Capability.makeModule(Effect.fnUntraced(function
|
|
|
307
309
|
typename: collection.key,
|
|
308
310
|
location: [
|
|
309
311
|
"runtime"
|
|
310
|
-
]
|
|
312
|
+
],
|
|
313
|
+
includeSystem: true
|
|
311
314
|
}).runSync()[0];
|
|
312
315
|
if (!space || !schema) {
|
|
313
316
|
return Effect.succeed([]);
|
|
314
317
|
}
|
|
315
|
-
return Effect.succeed(get(AtomQuery.make(space.db, Filter.type(schema))).map((object) =>
|
|
316
|
-
object
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
318
|
+
return Effect.succeed(get(AtomQuery.make(space.db, Filter.type(schema))).map((object) => {
|
|
319
|
+
get(AtomObj.make(object));
|
|
320
|
+
return createObjectNode({
|
|
321
|
+
object,
|
|
322
|
+
db: space.db,
|
|
323
|
+
managedCollectionChild: true,
|
|
324
|
+
resolve: resolve(get)
|
|
325
|
+
});
|
|
326
|
+
}).filter(isNonNullable));
|
|
321
327
|
}
|
|
322
328
|
}),
|
|
323
329
|
// Create branch nodes for static schema record types.
|
|
@@ -437,7 +443,7 @@ var app_graph_builder_default = Capability.makeModule(Effect.fnUntraced(function
|
|
|
437
443
|
});
|
|
438
444
|
deletable = filteredViews.length === 0;
|
|
439
445
|
}
|
|
440
|
-
const [appGraph] = get(capabilities.atom(
|
|
446
|
+
const [appGraph] = get(capabilities.atom(AppCapabilities.AppGraph));
|
|
441
447
|
const ephemeralAtom = capabilities.get(SpaceCapabilities.EphemeralState);
|
|
442
448
|
const ephemeralState = get(ephemeralAtom);
|
|
443
449
|
if (!appGraph) {
|
|
@@ -449,7 +455,8 @@ var app_graph_builder_default = Capability.makeModule(Effect.fnUntraced(function
|
|
|
449
455
|
resolve: resolve(get),
|
|
450
456
|
capabilities,
|
|
451
457
|
deletable,
|
|
452
|
-
navigable: ephemeralState.navigableCollections
|
|
458
|
+
navigable: ephemeralState.navigableCollections,
|
|
459
|
+
shareableLinkOrigin
|
|
453
460
|
}));
|
|
454
461
|
}
|
|
455
462
|
}),
|
|
@@ -515,9 +522,9 @@ var app_graph_builder_default = Capability.makeModule(Effect.fnUntraced(function
|
|
|
515
522
|
])
|
|
516
523
|
})
|
|
517
524
|
]);
|
|
518
|
-
return Capability.contributes(
|
|
525
|
+
return Capability.contributes(AppCapabilities.AppGraphBuilder, extensions);
|
|
519
526
|
}));
|
|
520
527
|
export {
|
|
521
528
|
app_graph_builder_default as default
|
|
522
529
|
};
|
|
523
|
-
//# sourceMappingURL=app-graph-builder-
|
|
530
|
+
//# sourceMappingURL=app-graph-builder-GLV46QSI.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/capabilities/app-graph-builder/app-graph-builder.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Atom } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\nimport * as Schema from 'effect/Schema';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport { type Space, SpaceState, getSpace, isSpace, parseId } from '@dxos/client/echo';\nimport { DXN, Filter, Obj, type Ref, Type } from '@dxos/echo';\nimport { AtomObj, AtomQuery } from '@dxos/echo-atom';\nimport { Operation } from '@dxos/operation';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';\nimport { CreateAtom, GraphBuilder, type Node, NodeMatcher } from '@dxos/plugin-graph';\nimport { Collection, Expando, ViewAnnotation, getTypenameFromQuery } from '@dxos/schema';\nimport { isNonNullable } from '@dxos/util';\n\nimport { getActiveSpace } from '../../hooks';\nimport { meta } from '../../meta';\nimport { SPACE_TYPE, SpaceCapabilities, SpaceOperation, type SpacePluginOptions } from '../../types';\nimport {\n SHARED,\n constructObjectActions,\n constructSpaceActions,\n constructSpaceNode,\n createObjectNode,\n createStaticSchemaActions,\n createStaticSchemaNode,\n} from '../../util';\n\n/** Match space nodes and return the Space object. */\nconst whenSpace = (node: Node.Node): Option.Option<Space> =>\n node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none();\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* (props?: SpacePluginOptions) {\n const { shareableLinkOrigin = window.location.origin } = props ?? {};\n const capabilities = yield* Capability.Service;\n\n // TODO(wittjosiah): Using `get` and being reactive seems to cause a bug with Atom where disposed atoms are accessed.\n const resolve = (get: Atom.Context) => (typename: string) =>\n capabilities.getAll(AppCapabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};\n\n const extensions = yield* Effect.all([\n // Primary actions.\n GraphBuilder.createExtension({\n id: `${meta.id}/primary-actions`,\n position: 'hoist',\n match: NodeMatcher.whenRoot,\n actions: () =>\n Effect.succeed([\n {\n id: SpaceOperation.OpenCreateSpace.meta.key,\n data: () => Operation.invoke(SpaceOperation.OpenCreateSpace),\n properties: {\n label: ['create space label', { ns: meta.id }],\n icon: 'ph--plus--regular',\n testId: 'spacePlugin.createSpace',\n disposition: 'menu',\n },\n },\n {\n id: SpaceOperation.Join.meta.key,\n data: () => Operation.invoke(SpaceOperation.Join, {}),\n properties: {\n label: ['join space label', { ns: meta.id }],\n icon: 'ph--sign-in--regular',\n testId: 'spacePlugin.joinSpace',\n disposition: 'menu',\n },\n },\n {\n id: SpaceOperation.OpenMembers.meta.key,\n data: Effect.fnUntraced(function* () {\n const client = yield* Capability.get(ClientCapabilities.Client);\n const space = getActiveSpace(capabilities) ?? client.spaces.default;\n yield* Operation.invoke(SpaceOperation.OpenMembers, { space });\n }),\n properties: {\n label: ['share space label', { ns: meta.id }],\n icon: 'ph--users--regular',\n testId: 'spacePlugin.shareSpace',\n keyBinding: {\n macos: 'meta+.',\n windows: 'alt+.',\n },\n },\n },\n {\n id: SpaceOperation.OpenSettings.meta.key,\n data: Effect.fnUntraced(function* () {\n const client = yield* Capability.get(ClientCapabilities.Client);\n const space = getActiveSpace(capabilities) ?? client.spaces.default;\n yield* Operation.invoke(SpaceOperation.OpenSettings, { space });\n }),\n properties: {\n label: ['open current space settings label', { ns: meta.id }],\n icon: 'ph--faders--regular',\n keyBinding: {\n macos: 'meta+shift+,',\n windows: 'ctrl+shift+,',\n },\n },\n },\n ]),\n }),\n\n // Create space nodes.\n GraphBuilder.createExtension({\n id: `${meta.id}/spaces`,\n match: NodeMatcher.whenRoot,\n connector: (node, get) => {\n const client = capabilities.get(ClientCapabilities.Client);\n const stateAtom = capabilities.get(SpaceCapabilities.State);\n const ephemeralAtom = capabilities.get(SpaceCapabilities.EphemeralState);\n const spacesAtom = CreateAtom.fromObservable(client.spaces);\n const isReadyAtom = CreateAtom.fromObservable(client.spaces.isReady);\n\n const spaces = get(spacesAtom);\n const isReady = get(isReadyAtom);\n\n if (!spaces || !isReady) {\n return Effect.succeed([]);\n }\n\n const settingsAtom = capabilities.get(SpaceCapabilities.Settings);\n const settings = get(settingsAtom);\n const state = get(stateAtom);\n const ephemeralState = get(ephemeralAtom);\n\n try {\n const [spacesOrder] = get(\n AtomQuery.make(client.spaces.default.db, Filter.type(Expando.Expando, { key: SHARED })),\n );\n const { graph } = capabilities.get(AppCapabilities.AppGraph);\n\n // Get order from spacesOrder snapshot using AtomObj (cached via Atom.family).\n const spacesOrderSnapshot = spacesOrder ? get(AtomObj.make(spacesOrder)) : undefined;\n const order: string[] = (spacesOrderSnapshot as any)?.order ?? [];\n const orderMap = new Map(order.map((id, index) => [id, index]));\n\n // Subscribe to space states for filtering.\n const spaceStates = spaces.map((space) => get(CreateAtom.fromObservable(space.state)));\n\n // Subscribe to space properties to react when root collection is assigned.\n spaces.forEach((space) => {\n if (space.state.get() === SpaceState.SPACE_READY) {\n get(AtomObj.make(space.properties));\n }\n });\n\n return Effect.succeed(\n [\n ...spaces\n .filter((space) => orderMap.has(space.id))\n .sort((a, b) => orderMap.get(a.id)! - orderMap.get(b.id)!),\n ...spaces.filter((space) => !orderMap.has(space.id)),\n ]\n .filter((space, i) => (settings?.showHidden ? true : spaceStates[i] !== SpaceState.SPACE_INACTIVE))\n .map((space) =>\n constructSpaceNode({\n space,\n navigable: ephemeralState.navigableCollections,\n personal: space === client.spaces.default,\n namesCache: state.spaceNames,\n resolve: resolve(get),\n graph,\n spacesOrder,\n }),\n ),\n );\n } catch {\n return Effect.succeed([]);\n }\n },\n resolver: (id, get) => {\n // Resolve space ID to space node.\n const { spaceId } = parseId(id);\n if (!spaceId) {\n return Effect.succeed(null);\n }\n\n const client = capabilities.get(ClientCapabilities.Client);\n\n // Subscribe to spaces observable to react when space becomes available.\n const spaces = get(CreateAtom.fromObservable(client.spaces));\n const space = spaces?.find((s) => s.id === spaceId);\n if (!space) {\n return Effect.succeed(null);\n }\n\n // Only subscribe to these atoms if the space exists.\n const state = get(capabilities.get(SpaceCapabilities.State));\n const ephemeralState = get(capabilities.get(SpaceCapabilities.EphemeralState));\n\n const { graph } = capabilities.get(AppCapabilities.AppGraph);\n const [spacesOrder] = get(\n AtomQuery.make(client.spaces.default.db, Filter.type(Expando.Expando, { key: SHARED })),\n );\n\n return Effect.succeed(\n constructSpaceNode({\n space,\n navigable: ephemeralState.navigableCollections,\n personal: space === client.spaces.default,\n namesCache: state.spaceNames,\n resolve: resolve(get),\n graph,\n spacesOrder,\n }),\n );\n },\n }),\n\n // Create space actions.\n GraphBuilder.createExtension({\n id: `${meta.id}/actions`,\n match: whenSpace,\n actions: (space, get) => {\n const [client] = get(capabilities.atom(ClientCapabilities.Client));\n const ephemeralAtom = capabilities.get(SpaceCapabilities.EphemeralState);\n const ephemeralState = get(ephemeralAtom);\n\n if (!client) {\n return Effect.succeed([]);\n }\n\n return Effect.succeed(\n constructSpaceActions({\n space,\n personal: space === client.spaces.default,\n migrating: ephemeralState.sdkMigrationRunning[space.id],\n }),\n );\n },\n }),\n\n // Create nodes for objects in the root collection of a space.\n GraphBuilder.createExtension({\n id: `${meta.id}/root-collection`,\n match: whenSpace,\n connector: (space, get) => {\n const ephemeralAtom = capabilities.get(SpaceCapabilities.EphemeralState);\n const ephemeralState = get(ephemeralAtom);\n const spaceState = get(CreateAtom.fromObservable(space.state));\n if (spaceState !== SpaceState.SPACE_READY) {\n return Effect.succeed([]);\n }\n\n // Get the collection ref from space.properties snapshot (AtomObj cached via Atom.family).\n const propertiesSnapshot = get(AtomObj.make(space.properties));\n const collectionRef = propertiesSnapshot[Collection.Collection.typename] as\n | Ref.Ref<Collection.Collection>\n | undefined;\n // Resolve the collection using AtomObj (subscribes to collection changes).\n const collection = collectionRef ? get(AtomObj.make(collectionRef)) : undefined;\n if (!collection) {\n return Effect.succeed([]);\n }\n\n const rawRefs = collection.objects ?? [];\n\n // TODO(wittjosiah): Workaround for Obj.getTypename not working on snapshots.\n // AtomObj.make(ref) returns snapshots (plain objects without ECHO metadata),\n // but createObjectNode needs live objects to access typename and other metadata.\n // Once Obj.getTypename works on snapshots, we can use snapshots directly.\n const objects = rawRefs\n .map((ref) => {\n // Subscribe to the ref for reactivity (triggers re-render when target changes).\n get(AtomObj.make(ref));\n // Return the live object for createObjectNode (has typename metadata).\n return ref.target;\n })\n .filter(isNonNullable);\n\n return Effect.succeed(\n objects\n .map((object) =>\n createObjectNode({\n db: space.db,\n object,\n resolve: resolve(get),\n navigable: ephemeralState.navigableCollections,\n parentCollection: collectionRef?.target,\n }),\n )\n .filter(isNonNullable),\n );\n },\n }),\n\n // Create nodes for objects in a collection or by its DXN.\n GraphBuilder.createExtension({\n id: `${meta.id}/objects`,\n match: (node) => (Obj.instanceOf(Collection.Collection, node.data) ? Option.some(node.data) : Option.none()),\n connector: (collection, get) => {\n const ephemeralAtom = capabilities.get(SpaceCapabilities.EphemeralState);\n const ephemeralState = get(ephemeralAtom);\n const space = getSpace(collection);\n\n // Get collection snapshot using AtomObj (cached via Atom.family).\n const collectionSnapshot = get(AtomObj.make(collection));\n const refs = collectionSnapshot.objects ?? [];\n\n // TODO(wittjosiah): Workaround for Obj.getTypename not working on snapshots.\n // See root-collection connector for details.\n const objects = refs\n .map((ref) => {\n get(AtomObj.make(ref));\n return ref.target;\n })\n .filter(isNonNullable);\n\n return Effect.succeed(\n objects\n .map(\n (object) =>\n space &&\n createObjectNode({\n object,\n db: space.db,\n resolve: resolve(get),\n navigable: ephemeralState.navigableCollections,\n parentCollection: collection,\n }),\n )\n .filter(isNonNullable),\n );\n },\n resolver: (id, get) => {\n const client = capabilities.get(ClientCapabilities.Client);\n const dxn = DXN.tryParse(id)?.asEchoDXN();\n if (!dxn || !dxn.spaceId) {\n return Effect.succeed(null);\n }\n\n const space = client.spaces.get(dxn.spaceId);\n if (!space) {\n return Effect.succeed(null);\n }\n\n const object = get(AtomQuery.make(space.db, Filter.id(dxn.echoId))).at(0);\n if (!Obj.isObject(object)) {\n return Effect.succeed(null);\n }\n\n return Effect.succeed(\n createObjectNode({\n object,\n db: space.db,\n resolve: resolve(get),\n disposition: 'hidden',\n }),\n );\n },\n }),\n\n // Create object nodes for schema-based system collections.\n GraphBuilder.createExtension({\n id: `${meta.id}/system-collections`,\n match: (node) => (Obj.instanceOf(Collection.Managed, node.data) ? Option.some(node.data) : Option.none()),\n connector: (collection, get) => {\n const client = get(capabilities.atom(ClientCapabilities.Client)).at(0);\n const space = getSpace(collection);\n const schema = client?.graph.schemaRegistry\n .query({ typename: collection.key, location: ['runtime'], includeSystem: true })\n .runSync()[0];\n if (!space || !schema) {\n return Effect.succeed([]);\n }\n\n return Effect.succeed(\n get(AtomQuery.make(space.db, Filter.type(schema)))\n .map((object) => {\n get(AtomObj.make(object));\n return createObjectNode({\n object,\n db: space.db,\n managedCollectionChild: true,\n resolve: resolve(get),\n });\n })\n .filter(isNonNullable),\n );\n },\n }),\n\n // Create branch nodes for static schema record types.\n GraphBuilder.createExtension({\n id: `${meta.id}/static-schemas`,\n match: (node: Node.Node) =>\n Obj.instanceOf(Collection.Managed, node.data) && node.data.key === Type.getTypename(Type.PersistentType)\n ? Option.some(node.data)\n : Option.none(),\n connector: (collection, get) => {\n const client = get(capabilities.atom(ClientCapabilities.Client)).at(0);\n const space = getSpace(collection);\n if (!space) {\n return Effect.succeed([]);\n }\n\n // Get staticRecords from properties snapshot (AtomObj cached via Atom.family).\n const propertiesSnapshot = get(AtomObj.make(space.properties));\n const staticRecords = (propertiesSnapshot.staticRecords ?? []) as string[];\n\n return Effect.succeed(\n staticRecords\n .map((typename) => client?.graph.schemaRegistry.query({ typename, location: ['runtime'] }).runSync()[0])\n .filter(isNonNullable)\n .map((schema) => createStaticSchemaNode({ schema, space })),\n );\n },\n }),\n\n // Create actions for static schema record types.\n GraphBuilder.createExtension({\n id: `${meta.id}/static-schema-actions`,\n match: (node) => {\n const space = isSpace(node.properties.space) ? node.properties.space : undefined;\n return space && Schema.isSchema(node.data) ? Option.some({ space, schema: node.data }) : Option.none();\n },\n actions: ({ space, schema }, get) => {\n const schemas =\n get(capabilities.atom(ClientCapabilities.Client))\n .at(0)\n ?.graph.schemaRegistry.query({ location: ['runtime'] })\n .runSync() ?? [];\n const filter = Filter.or(\n ...schemas\n .filter((schema) => ViewAnnotation.get(schema).pipe(Option.getOrElse(() => false)))\n .map((schema) => Filter.type(schema)),\n );\n\n const objects = get(AtomQuery.make(space.db, filter));\n\n // Filter views that match the schema typename using AtomObj and AtomRef (cached via Atom.family).\n const targetTypename = Type.getTypename(schema as Type.Obj.Any);\n const filteredViews = objects.filter((viewObject) => {\n const viewSnapshot = get(AtomObj.make(viewObject));\n const viewRef = (viewSnapshot as any).view;\n const viewTarget = viewRef ? get(AtomObj.make(viewRef)) : undefined;\n return getTypenameFromQuery((viewTarget as any)?.query?.ast) === targetTypename;\n });\n const deletable = filteredViews.length === 0;\n\n return Effect.succeed(\n createStaticSchemaActions({\n schema: schema as Type.Obj.Any,\n space,\n deletable,\n }),\n );\n },\n }),\n\n // Create nodes for views of record types.\n GraphBuilder.createExtension({\n id: `${meta.id}/schema-views`,\n match: (node) => {\n const space = getSpace(node.data) ?? (isSpace(node.properties.space) ? node.properties.space : undefined);\n return space && (Obj.instanceOf(Type.PersistentType, node.data) || Schema.isSchema(node.data))\n ? Option.some({ space, schema: node.data })\n : Option.none();\n },\n connector: ({ space, schema }, get) => {\n const schemas =\n get(capabilities.atom(ClientCapabilities.Client))\n .at(0)\n ?.graph.schemaRegistry.query({ location: ['runtime'] })\n .runSync() ?? [];\n const filter = Filter.or(\n ...schemas\n .filter((schema) => ViewAnnotation.get(schema).pipe(Option.getOrElse(() => false)))\n .map((schema) => Filter.type(schema)),\n );\n\n const typename = Schema.isSchema(schema) ? Type.getTypename(schema as Type.Obj.Any) : schema.typename;\n const objects = get(AtomQuery.make(space.db, filter));\n\n // Filter and map using AtomObj and AtomRef (cached via Atom.family).\n return Effect.succeed(\n objects\n .filter((object) => {\n const objectSnapshot = get(AtomObj.make(object));\n const viewRef = (objectSnapshot as any).view;\n const viewTarget = viewRef ? get(AtomObj.make(viewRef)) : undefined;\n return getTypenameFromQuery((viewTarget as any)?.query?.ast) === typename;\n })\n .map((object) =>\n createObjectNode({\n object,\n db: space.db,\n resolve: resolve(get),\n droppable: false,\n }),\n )\n .filter(isNonNullable),\n );\n },\n }),\n\n // Create collection actions and action groups.\n GraphBuilder.createExtension({\n id: `${meta.id}/object-actions`,\n match: (node) => {\n const space = getSpace(node.data);\n return space && Obj.isObject(node.data) && Obj.getTypename(node.data) === node.type\n ? Option.some({ space, object: node.data })\n : Option.none();\n },\n actions: ({ space, object }, get) => {\n const schemas =\n get(capabilities.atom(ClientCapabilities.Client))\n .at(0)\n ?.graph.schemaRegistry.query({ location: ['runtime'] })\n .runSync() ?? [];\n const filter = Filter.or(\n ...schemas\n .filter((schema) => ViewAnnotation.get(schema).pipe(Option.getOrElse(() => false)))\n .map((schema) => Filter.type(schema)),\n );\n\n const isSchema = Obj.instanceOf(Type.PersistentType, object);\n\n let deletable = !isSchema && !Obj.instanceOf(Collection.Managed, object);\n if (isSchema) {\n const objects = get(AtomQuery.make(space.db, filter));\n // Filter views using AtomObj and AtomRef (cached via Atom.family).\n const filteredViews = objects.filter((viewObject) => {\n const viewSnapshot = get(AtomObj.make(viewObject));\n const viewRef = (viewSnapshot as any).view;\n const viewTarget = viewRef ? get(AtomObj.make(viewRef)) : undefined;\n return getTypenameFromQuery((viewTarget as any)?.query?.ast) === object.typename;\n });\n deletable = filteredViews.length === 0;\n }\n\n const [appGraph] = get(capabilities.atom(AppCapabilities.AppGraph));\n const ephemeralAtom = capabilities.get(SpaceCapabilities.EphemeralState);\n const ephemeralState = get(ephemeralAtom);\n\n if (!appGraph) {\n return Effect.succeed([]);\n }\n\n return Effect.succeed(\n constructObjectActions({\n object,\n graph: appGraph.graph,\n resolve: resolve(get),\n capabilities,\n deletable,\n navigable: ephemeralState.navigableCollections,\n shareableLinkOrigin,\n }),\n );\n },\n }),\n\n // View selected objects.\n GraphBuilder.createExtension({\n id: `${meta.id}/selected-objects`,\n match: (node) => {\n if (!Obj.isObject(node.data)) {\n return Option.none();\n }\n\n const schema = Obj.getSchema(node.data);\n const isView = Option.fromNullable(schema).pipe(\n Option.flatMap((schema) => ViewAnnotation.get(schema)),\n Option.getOrElse(() => false),\n );\n if (!isView) {\n return Option.none();\n }\n\n return Option.some(node);\n },\n connector: (node) =>\n Effect.succeed([\n {\n id: [node.id, 'selected-objects'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'selected-objects',\n properties: {\n label: ['companion selected objects label', { ns: meta.id }],\n icon: 'ph--tree-view--regular',\n disposition: 'hidden',\n },\n },\n ]),\n }),\n\n // Object settings plank companion.\n GraphBuilder.createExtension({\n id: `${meta.id}/settings`,\n match: NodeMatcher.whenEchoObjectMatches,\n connector: (node) =>\n Effect.succeed([\n {\n id: [node.id, 'settings'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'settings',\n properties: {\n label: ['object settings label', { ns: meta.id }],\n icon: 'ph--sliders--regular',\n disposition: 'hidden',\n position: 'fallback',\n },\n },\n ]),\n }),\n ]);\n\n return Capability.contributes(AppCapabilities.AppGraphBuilder, extensions);\n }),\n);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Effect", "Option", "Schema", "Capability", "AppCapabilities", "SpaceState", "getSpace", "isSpace", "parseId", "DXN", "Filter", "Obj", "Type", "AtomObj", "AtomQuery", "Operation", "ClientCapabilities", "ATTENDABLE_PATH_SEPARATOR", "PLANK_COMPANION_TYPE", "CreateAtom", "GraphBuilder", "NodeMatcher", "Collection", "Expando", "ViewAnnotation", "getTypenameFromQuery", "isNonNullable", "whenSpace", "node", "type", "SPACE_TYPE", "isSpace", "data", "some", "none", "Capability", "makeModule", "fnUntraced", "props", "shareableLinkOrigin", "window", "location", "origin", "capabilities", "Service", "resolve", "get", "typename", "getAll", "AppCapabilities", "Metadata", "find", "id", "metadata", "extensions", "all", "GraphBuilder", "createExtension", "meta", "position", "match", "NodeMatcher", "whenRoot", "actions", "succeed", "SpaceOperation", "OpenCreateSpace", "key", "Operation", "invoke", "properties", "label", "ns", "icon", "testId", "disposition", "Join", "OpenMembers", "client", "ClientCapabilities", "Client", "space", "getActiveSpace", "spaces", "default", "keyBinding", "macos", "windows", "OpenSettings", "connector", "stateAtom", "SpaceCapabilities", "State", "ephemeralAtom", "EphemeralState", "spacesAtom", "CreateAtom", "fromObservable", "isReadyAtom", "isReady", "settingsAtom", "Settings", "settings", "state", "ephemeralState", "spacesOrder", "AtomQuery", "make", "db", "Filter", "Expando", "SHARED", "graph", "AppGraph", "spacesOrderSnapshot", "AtomObj", "undefined", "order", "orderMap", "Map", "map", "index", "spaceStates", "forEach", "SpaceState", "SPACE_READY", "filter", "has", "sort", "a", "b", "i", "showHidden", "SPACE_INACTIVE", "constructSpaceNode", "navigable", "navigableCollections", "personal", "namesCache", "spaceNames", "resolver", "spaceId", "parseId", "s", "atom", "constructSpaceActions", "migrating", "sdkMigrationRunning", "spaceState", "propertiesSnapshot", "collectionRef", "Collection", "collection", "rawRefs", "objects", "ref", "target", "isNonNullable", "object", "createObjectNode", "parentCollection", "Obj", "instanceOf", "getSpace", "collectionSnapshot", "refs", "dxn", "DXN", "tryParse", "asEchoDXN", "echoId", "at", "isObject", "Managed", "schema", "schemaRegistry", "query", "includeSystem", "runSync", "managedCollectionChild", "Type", "getTypename", "PersistentType", "staticRecords", "createStaticSchemaNode", "isSchema", "schemas", "or", "ViewAnnotation", "pipe", "getOrElse", "targetTypename", "filteredViews", "viewObject", "viewSnapshot", "viewRef", "view", "viewTarget", "getTypenameFromQuery", "ast", "deletable", "length", "createStaticSchemaActions", "objectSnapshot", "droppable", "appGraph", "constructObjectActions", "getSchema", "isView", "fromNullable", "flatMap", "join", "ATTENDABLE_PATH_SEPARATOR", "PLANK_COMPANION_TYPE", "whenEchoObjectMatches", "contributes", "AppGraphBuilder"]
|
|
7
|
+
}
|