@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
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
meta
|
|
3
|
-
} from "./chunk-HSMQFM57.mjs";
|
|
4
|
-
|
|
5
|
-
// src/components/CollectionArticle.tsx
|
|
6
|
-
import React, { useMemo } from "react";
|
|
7
|
-
import { Common } from "@dxos/app-framework";
|
|
8
|
-
import { useAppGraph, useOperationInvoker } from "@dxos/app-framework/react";
|
|
9
|
-
import { Filter, Obj } from "@dxos/echo";
|
|
10
|
-
import { Graph, Node, useActionRunner, useConnections } from "@dxos/plugin-graph";
|
|
11
|
-
import { useClient } from "@dxos/react-client";
|
|
12
|
-
import { getSpace, useQuery } from "@dxos/react-client/echo";
|
|
13
|
-
import { Toolbar, toLocalizedString, useTranslation } from "@dxos/react-ui";
|
|
14
|
-
import { Card, Layout, Mosaic } from "@dxos/react-ui-mosaic";
|
|
15
|
-
import { SearchList, useSearchListResults } from "@dxos/react-ui-searchlist";
|
|
16
|
-
import { Collection } from "@dxos/schema";
|
|
17
|
-
var CollectionArticle = ({ subject }) => {
|
|
18
|
-
const { t } = useTranslation(meta.id);
|
|
19
|
-
const { items, handleSearch } = useCollectionItems(subject);
|
|
20
|
-
return /* @__PURE__ */ React.createElement(Layout.Main, {
|
|
21
|
-
toolbar: true
|
|
22
|
-
}, /* @__PURE__ */ React.createElement(SearchList.Root, {
|
|
23
|
-
onSearch: handleSearch
|
|
24
|
-
}, /* @__PURE__ */ React.createElement(Toolbar.Root, null, /* @__PURE__ */ React.createElement(SearchList.Input, {
|
|
25
|
-
placeholder: t("search placeholder")
|
|
26
|
-
})), /* @__PURE__ */ React.createElement(SearchList.Content, null, /* @__PURE__ */ React.createElement(Mosaic.Container, {
|
|
27
|
-
asChild: true
|
|
28
|
-
}, /* @__PURE__ */ React.createElement(Mosaic.Viewport, {
|
|
29
|
-
padding: true
|
|
30
|
-
}, /* @__PURE__ */ React.createElement(Mosaic.Stack, {
|
|
31
|
-
items,
|
|
32
|
-
getId: (node) => node.id,
|
|
33
|
-
Tile: NodeTile
|
|
34
|
-
}))))));
|
|
35
|
-
};
|
|
36
|
-
var NodeTile = ({ data: node }) => {
|
|
37
|
-
const { t } = useTranslation(meta.id);
|
|
38
|
-
const { graph } = useAppGraph();
|
|
39
|
-
const { invokeSync } = useOperationInvoker();
|
|
40
|
-
const runAction = useActionRunner();
|
|
41
|
-
const label = toLocalizedString(node.properties.label, t);
|
|
42
|
-
const icon = node.properties.icon ?? "ph--placeholder--regular";
|
|
43
|
-
const handleClick = () => {
|
|
44
|
-
if (Node.isAction(node)) {
|
|
45
|
-
const [parent] = Graph.getConnections(graph, node.id, "inbound");
|
|
46
|
-
if (parent) {
|
|
47
|
-
void runAction(node, {
|
|
48
|
-
parent
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
} else {
|
|
52
|
-
invokeSync(Common.LayoutOperation.Open, {
|
|
53
|
-
subject: [
|
|
54
|
-
node.id
|
|
55
|
-
]
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
return /* @__PURE__ */ React.createElement(Card.Root, {
|
|
60
|
-
fullWidth: true
|
|
61
|
-
}, /* @__PURE__ */ React.createElement(Card.Toolbar, null, /* @__PURE__ */ React.createElement(Card.ToolbarIconButton, {
|
|
62
|
-
variant: "ghost",
|
|
63
|
-
label,
|
|
64
|
-
icon
|
|
65
|
-
}), /* @__PURE__ */ React.createElement(Card.Title, {
|
|
66
|
-
onClick: handleClick
|
|
67
|
-
}, label), /* @__PURE__ */ React.createElement(Card.Menu, null)));
|
|
68
|
-
};
|
|
69
|
-
var CollectionArticle_default = CollectionArticle;
|
|
70
|
-
var useRegularCollectionItems = (collection) => {
|
|
71
|
-
const { graph } = useAppGraph();
|
|
72
|
-
const collectionId = Obj.getDXN(collection).toString();
|
|
73
|
-
const children = useConnections(graph, collectionId, "outbound");
|
|
74
|
-
return useMemo(() => children.filter((node) => {
|
|
75
|
-
if (Obj.isObject(node.data)) {
|
|
76
|
-
return true;
|
|
77
|
-
}
|
|
78
|
-
return Node.isAction(node) && node.properties.disposition === "item";
|
|
79
|
-
}), [
|
|
80
|
-
children
|
|
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
|
-
const objects = useQuery(space?.db, schema ? Filter.type(schema) : Filter.nothing());
|
|
96
|
-
return useMemo(() => objects.map((obj) => ({
|
|
97
|
-
id: Obj.getDXN(obj).toString(),
|
|
98
|
-
type: "managed-object",
|
|
99
|
-
data: obj,
|
|
100
|
-
properties: {
|
|
101
|
-
label: Obj.getLabel(obj) ?? obj.id,
|
|
102
|
-
icon: "ph--placeholder--regular"
|
|
103
|
-
}
|
|
104
|
-
})), [
|
|
105
|
-
objects
|
|
106
|
-
]);
|
|
107
|
-
};
|
|
108
|
-
var useCollectionItems = (collection) => {
|
|
109
|
-
const isManaged = Obj.instanceOf(Collection.Managed, collection);
|
|
110
|
-
const regularItems = useRegularCollectionItems(collection);
|
|
111
|
-
const managedItems = useManagedCollectionItems(collection);
|
|
112
|
-
const items = isManaged ? managedItems : regularItems;
|
|
113
|
-
const { results, handleSearch } = useSearchListResults({
|
|
114
|
-
items,
|
|
115
|
-
extract: (node) => {
|
|
116
|
-
const label = node.properties.label;
|
|
117
|
-
return typeof label === "string" ? label : label?.en ?? node.id;
|
|
118
|
-
}
|
|
119
|
-
});
|
|
120
|
-
return {
|
|
121
|
-
items: results,
|
|
122
|
-
handleSearch
|
|
123
|
-
};
|
|
124
|
-
};
|
|
125
|
-
export {
|
|
126
|
-
CollectionArticle,
|
|
127
|
-
CollectionArticle_default as default
|
|
128
|
-
};
|
|
129
|
-
//# sourceMappingURL=CollectionArticle-XPNA6EHZ.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/CollectionArticle.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { Common } from '@dxos/app-framework';\nimport { type SurfaceComponentProps, useAppGraph, useOperationInvoker } from '@dxos/app-framework/react';\nimport { Filter, Obj } from '@dxos/echo';\nimport { Graph, Node, useActionRunner, useConnections } from '@dxos/plugin-graph';\nimport { useClient } from '@dxos/react-client';\nimport { getSpace, useQuery } from '@dxos/react-client/echo';\nimport { Toolbar, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { Card, Layout, Mosaic, type StackTileComponent } from '@dxos/react-ui-mosaic';\nimport { SearchList, useSearchListResults } from '@dxos/react-ui-searchlist';\nimport { Collection } from '@dxos/schema';\n\nimport { meta } from '../meta';\n\n/**\n *\n */\nexport const CollectionArticle = ({ subject }: SurfaceComponentProps<Collection.Collection | Collection.Managed>) => {\n const { t } = useTranslation(meta.id);\n const { items, handleSearch } = useCollectionItems(subject);\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 <Mosaic.Viewport padding>\n <Mosaic.Stack items={items} getId={(node) => node.id} Tile={NodeTile} />\n </Mosaic.Viewport>\n </Mosaic.Container>\n </SearchList.Content>\n </SearchList.Root>\n </Layout.Main>\n );\n};\n\nconst NodeTile: StackTileComponent<Node.Node> = ({ data: node }) => {\n const { t } = useTranslation(meta.id);\n const { graph } = useAppGraph();\n const { invokeSync } = useOperationInvoker();\n const runAction = useActionRunner();\n\n const label = toLocalizedString(node.properties.label, t);\n const icon = node.properties.icon ?? 'ph--placeholder--regular';\n\n const handleClick = () => {\n if (Node.isAction(node)) {\n // Run action if this is an action node.\n const [parent] = Graph.getConnections(graph, node.id, 'inbound');\n if (parent) {\n void runAction(node, { parent });\n }\n } else {\n // Navigate to the node.\n invokeSync(Common.LayoutOperation.Open, { subject: [node.id] });\n }\n };\n\n return (\n <Card.Root fullWidth>\n <Card.Toolbar>\n <Card.ToolbarIconButton variant='ghost' label={label} icon={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 using graph connections.\n */\nconst useRegularCollectionItems = (collection: Collection.Collection) => {\n const { graph } = useAppGraph();\n const collectionId = Obj.getDXN(collection).toString();\n const children = useConnections(graph, collectionId, 'outbound');\n\n // Filter children to those which are objects or actions with disposition 'item'.\n return useMemo(\n () =>\n children.filter((node) => {\n // Include regular objects.\n if (Obj.isObject(node.data)) {\n return true;\n }\n // Include actions with disposition 'item'.\n return Node.isAction(node) && node.properties.disposition === 'item';\n }),\n [children],\n );\n};\n\n/**\n * Hook to get items from a managed collection by querying the space.\n */\nconst useManagedCollectionItems = (collection: Collection.Managed) => {\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 const objects = useQuery(space?.db, schema ? Filter.type(schema) : Filter.nothing());\n\n // Convert objects to node-like items for consistent rendering.\n return useMemo(\n () =>\n objects.map(\n (obj) =>\n ({\n id: Obj.getDXN(obj).toString(),\n type: 'managed-object',\n data: obj,\n properties: {\n label: Obj.getLabel(obj) ?? obj.id,\n icon: 'ph--placeholder--regular',\n },\n }) as Node.Node,\n ),\n [objects],\n );\n};\n\n/**\n * Combined hook to get collection items with search/filter support.\n */\nconst useCollectionItems = (collection: Collection.Collection | Collection.Managed) => {\n const isManaged = Obj.instanceOf(Collection.Managed, collection);\n\n // Call both hooks unconditionally to satisfy React's rules of hooks.\n const regularItems = useRegularCollectionItems(collection as Collection.Collection);\n const managedItems = useManagedCollectionItems(collection as Collection.Managed);\n\n const items = isManaged ? managedItems : regularItems;\n\n // Use searchlist results for filtering.\n const { results, handleSearch } = useSearchListResults({\n items,\n extract: (node) => {\n const label = node.properties.label;\n return typeof label === 'string' ? label : (label?.en ?? node.id);\n },\n });\n\n return { items: results, handleSearch };\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["React", "useMemo", "Common", "useAppGraph", "useOperationInvoker", "Filter", "Obj", "Graph", "Node", "useActionRunner", "useConnections", "useClient", "getSpace", "useQuery", "Toolbar", "toLocalizedString", "useTranslation", "Card", "Layout", "Mosaic", "SearchList", "useSearchListResults", "Collection", "CollectionArticle", "subject", "t", "useTranslation", "meta", "id", "items", "handleSearch", "useCollectionItems", "Layout", "Main", "toolbar", "SearchList", "Root", "onSearch", "Toolbar", "Input", "placeholder", "Content", "Mosaic", "Container", "asChild", "Viewport", "padding", "Stack", "getId", "node", "Tile", "NodeTile", "data", "graph", "useAppGraph", "invokeSync", "useOperationInvoker", "runAction", "useActionRunner", "label", "toLocalizedString", "properties", "icon", "handleClick", "Node", "isAction", "parent", "Graph", "getConnections", "Common", "LayoutOperation", "Open", "Card", "fullWidth", "ToolbarIconButton", "variant", "Title", "onClick", "Menu", "useRegularCollectionItems", "collection", "collectionId", "Obj", "getDXN", "toString", "children", "useConnections", "useMemo", "filter", "isObject", "disposition", "useManagedCollectionItems", "client", "useClient", "space", "getSpace", "schema", "schemaRegistry", "query", "typename", "key", "location", "runSync", "objects", "useQuery", "db", "Filter", "type", "nothing", "map", "obj", "getLabel", "isManaged", "instanceOf", "Collection", "Managed", "regularItems", "managedItems", "results", "useSearchListResults", "extract", "en"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
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 { useSelected } from '@dxos/react-ui-attention';\nimport { Card } from '@dxos/react-ui-mosaic';\nimport { Layout } 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": "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",
|
|
6
|
-
"names": ["React", "forwardRef", "Obj", "Filter", "useQuery", "useSchema", "Callout", "Toolbar", "useTranslation", "useSelected", "Card", "Layout", "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
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
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, type SurfaceComponentProps } from '@dxos/app-framework/react';\nimport { type Obj } from '@dxos/echo';\nimport { Toolbar } from '@dxos/react-ui';\nimport { Layout } from '@dxos/react-ui-mosaic';\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 role={role} ref={forwardedRef}>\n <Toolbar.Root />\n <BaseObjectSettings object={object}>\n <Surface role='base-object-settings' data={data} />\n <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", "ref", "Toolbar", "Root", "BaseObjectSettings", "Surface", "ObjectDetails"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
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/react';\nimport { type SurfaceComponentProps } from '@dxos/app-framework/react';\nimport { type Database, Entity, Filter, Obj, Ref, Relation } from '@dxos/echo';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { useTranslation } from '@dxos/react-ui';\nimport { Masonry } from '@dxos/react-ui-masonry';\nimport { Layout, 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 <div role='none' className={mx('flex flex-col gap-4 p-4 is-full overflow-y-auto')}>\n <div role='none' className={mx('flex is-full card-max-width')}>\n <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 </div>\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 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", "useTranslation", "Masonry", "Layout", "Card", "MosaicCard", "mx", "isNonNullable", "RecordArticle", "role", "subject", "t", "useTranslation", "meta", "id", "db", "Obj", "getDatabase", "data", "useMemo", "related", "useRelatedObjects", "references", "relations", "singleColumn", "length", "Layout", "Main", "div", "className", "mx", "Surface", "limit", "label", "Masonry", "Root", "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,7 +0,0 @@
|
|
|
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, Common } from '@dxos/app-framework';\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 } 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* () {\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(Common.Capability.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(Common.Capability.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(Common.Capability.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'] })\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 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(Common.Capability.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 }),\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(Common.Capability.AppGraphBuilder, extensions);\n }),\n);\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["Effect", "Option", "Schema", "Capability", "Common", "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", "capabilities", "Service", "resolve", "get", "typename", "getAll", "Common", "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", "location", "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
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/app-graph-serializer/app-graph-serializer.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability, Common } from '@dxos/app-framework';\nimport { isSpace } from '@dxos/client/echo';\nimport { Obj } from '@dxos/echo';\nimport { Collection } from '@dxos/schema';\n\nimport { meta } from '../../meta';\nimport { translations } from '../../translations';\nimport { SPACE_TYPE, SpaceOperation } from '../../types';\nimport { SPACES } from '../../util';\n\nconst COLLECTION_TYPE = Collection.Collection.typename;\n\n// https://stackoverflow.com/a/19016910\nconst DIRECTORY_TYPE = 'text/directory';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n // Get context for lazy capability access in callbacks.\n const capabilities = yield* Capability.Service;\n\n return Capability.contributes(Common.Capability.AppGraphSerializer, [\n {\n inputType: SPACES,\n outputType: DIRECTORY_TYPE,\n serialize: (node) => ({\n name: translations[0]['en-US'][meta.id]['spaces label'] ?? 'Spaces',\n data: translations[0]['en-US'][meta.id]['spaces label'] ?? 'Spaces',\n type: DIRECTORY_TYPE,\n }),\n deserialize: () => {\n // No-op.\n },\n },\n {\n inputType: SPACE_TYPE,\n outputType: DIRECTORY_TYPE,\n serialize: (node) => ({\n name: node.data.properties.name ?? translations[0]['en-US'][meta.id]['unnamed space label'],\n data: node.data.properties.name ?? translations[0]['en-US'][meta.id]['unnamed space label'],\n type: DIRECTORY_TYPE,\n }),\n deserialize: async (data) => {\n const { invokePromise } = capabilities.get(Common.Capability.OperationInvoker);\n const result = await invokePromise(SpaceOperation.Create, { name: data.name, edgeReplication: true });\n return result.data?.space;\n },\n },\n {\n inputType: COLLECTION_TYPE,\n outputType: DIRECTORY_TYPE,\n serialize: (node) => ({\n name: node.data.name ?? translations[0]['en-US'][meta.id]['object name placeholder'],\n data: node.data.name ?? translations[0]['en-US'][meta.id]['object name placeholder'],\n type: DIRECTORY_TYPE,\n }),\n deserialize: async (data, ancestors) => {\n const space = ancestors.find(isSpace);\n const collection =\n ancestors.findLast((ancestor) => Obj.instanceOf(Collection.Collection, ancestor)) ??\n space?.properties[COLLECTION_TYPE]?.target;\n if (!space || !collection) {\n return;\n }\n\n const { invokePromise } = capabilities.get(Common.Capability.OperationInvoker);\n const result = await invokePromise(SpaceOperation.AddObject, {\n target: collection,\n object: Obj.make(Collection.Collection, { name: data.name, objects: [] }),\n });\n\n return result.data?.object;\n },\n },\n ]);\n }),\n);\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,YAAYC,cAAc;AACnC,SAASC,eAAe;AACxB,SAASC,WAAW;AACpB,SAASC,kBAAkB;AAO3B,IAAMC,kBAAkBC,WAAWA,WAAWC;AAG9C,IAAMC,iBAAiB;AAEvB,IAAA,+BAAeC,WAAWC,WACjBC,kBAAW,aAAA;AAEhB,QAAMC,eAAe,OAAOH,WAAWI;AAEvC,SAAOJ,WAAWK,YAAYC,OAAON,WAAWO,oBAAoB;IAClE;MACEC,WAAWC;MACXC,YAAYX;MACZY,WAAW,CAACC,UAAU;QACpBC,MAAMC,aAAa,CAAA,EAAG,OAAA,EAASC,KAAKC,EAAE,EAAE,cAAA,KAAmB;QAC3DC,MAAMH,aAAa,CAAA,EAAG,OAAA,EAASC,KAAKC,EAAE,EAAE,cAAA,KAAmB;QAC3DE,MAAMnB;MACR;MACAoB,aAAa,MAAA;MAEb;IACF;IACA;MACEX,WAAWY;MACXV,YAAYX;MACZY,WAAW,CAACC,UAAU;QACpBC,MAAMD,KAAKK,KAAKI,WAAWR,QAAQC,aAAa,CAAA,EAAG,OAAA,EAASC,KAAKC,EAAE,EAAE,qBAAA;QACrEC,MAAML,KAAKK,KAAKI,WAAWR,QAAQC,aAAa,CAAA,EAAG,OAAA,EAASC,KAAKC,EAAE,EAAE,qBAAA;QACrEE,MAAMnB;MACR;MACAoB,aAAa,OAAOF,SAAAA;AAClB,cAAM,EAAEK,cAAa,IAAKnB,aAAaoB,IAAIjB,OAAON,WAAWwB,gBAAgB;AAC7E,cAAMC,SAAS,MAAMH,cAAcI,eAAeC,QAAQ;UAAEd,MAAMI,KAAKJ;UAAMe,iBAAiB;QAAK,CAAA;AACnG,eAAOH,OAAOR,MAAMY;MACtB;IACF;IACA;MACErB,WAAWZ;MACXc,YAAYX;MACZY,WAAW,CAACC,UAAU;QACpBC,MAAMD,KAAKK,KAAKJ,QAAQC,aAAa,CAAA,EAAG,OAAA,EAASC,KAAKC,EAAE,EAAE,yBAAA;QAC1DC,MAAML,KAAKK,KAAKJ,QAAQC,aAAa,CAAA,EAAG,OAAA,EAASC,KAAKC,EAAE,EAAE,yBAAA;QAC1DE,MAAMnB;MACR;MACAoB,aAAa,OAAOF,MAAMa,cAAAA;AACxB,cAAMD,QAAQC,UAAUC,KAAKC,OAAAA;AAC7B,cAAMC,aACJH,UAAUI,SAAS,CAACC,aAAaC,IAAIC,WAAWxC,WAAWA,YAAYsC,QAAAA,CAAAA,KACvEN,OAAOR,WAAWzB,eAAAA,GAAkB0C;AACtC,YAAI,CAACT,SAAS,CAACI,YAAY;AACzB;QACF;AAEA,cAAM,EAAEX,cAAa,IAAKnB,aAAaoB,IAAIjB,OAAON,WAAWwB,gBAAgB;AAC7E,cAAMC,SAAS,MAAMH,cAAcI,eAAea,WAAW;UAC3DD,QAAQL;UACRO,QAAQJ,IAAIK,KAAK5C,WAAWA,YAAY;YAAEgB,MAAMI,KAAKJ;YAAM6B,SAAS,CAAA;UAAG,CAAA;QACzE,CAAA;AAEA,eAAOjB,OAAOR,MAAMuB;MACtB;IACF;GACD;AACH,CAAA,CAAA;",
|
|
6
|
-
"names": ["Effect", "Capability", "Common", "isSpace", "Obj", "Collection", "COLLECTION_TYPE", "Collection", "typename", "DIRECTORY_TYPE", "Capability", "makeModule", "fnUntraced", "capabilities", "Service", "contributes", "Common", "AppGraphSerializer", "inputType", "SPACES", "outputType", "serialize", "node", "name", "translations", "meta", "id", "data", "type", "deserialize", "SPACE_TYPE", "properties", "invokePromise", "get", "OperationInvoker", "result", "SpaceOperation", "Create", "edgeReplication", "space", "ancestors", "find", "isSpace", "collection", "findLast", "ancestor", "Obj", "instanceOf", "target", "AddObject", "object", "make", "objects"]
|
|
7
|
-
}
|