@dxos/plugin-space 0.8.4-main.84f28bd → 0.8.4-main.c1de068
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/CollectionMain-D2B75XBS.mjs +31 -0
- package/dist/lib/browser/CollectionMain-D2B75XBS.mjs.map +7 -0
- package/dist/lib/browser/ObjectDetailsPanel-YPTDQKMG.mjs +88 -0
- package/dist/lib/browser/ObjectDetailsPanel-YPTDQKMG.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-builder-PMDF6PJV.mjs → app-graph-builder-7CZZJS3S.mjs} +138 -22
- package/dist/lib/browser/app-graph-builder-7CZZJS3S.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-serializer-UKYMBX4O.mjs → app-graph-serializer-H6AW7KGS.mjs} +4 -4
- package/dist/lib/browser/{chunk-XXIPJLJF.mjs → chunk-CEFHNVU7.mjs} +2 -1
- package/dist/lib/browser/chunk-CEFHNVU7.mjs.map +7 -0
- package/dist/lib/browser/{chunk-C7KGJTAL.mjs → chunk-JS3MMC42.mjs} +2 -1
- package/dist/lib/browser/{chunk-C7KGJTAL.mjs.map → chunk-JS3MMC42.mjs.map} +3 -3
- package/dist/lib/browser/{chunk-6VLSHG4A.mjs → chunk-QACNNDOT.mjs} +64 -3
- package/dist/lib/browser/chunk-QACNNDOT.mjs.map +7 -0
- package/dist/lib/browser/{chunk-S6NY637J.mjs → chunk-SGTQ52SU.mjs} +57 -3
- package/dist/lib/browser/chunk-SGTQ52SU.mjs.map +7 -0
- package/dist/lib/browser/{chunk-GVTXQCIW.mjs → chunk-V7MJSSBQ.mjs} +355 -286
- package/dist/lib/browser/chunk-V7MJSSBQ.mjs.map +7 -0
- package/dist/lib/browser/{chunk-WBSEOLEM.mjs → chunk-XUYKJUU7.mjs} +124 -21
- package/dist/lib/browser/chunk-XUYKJUU7.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +98 -9
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-WK5WYFH3.mjs → intent-resolver-TIXVDYN7.mjs} +164 -14
- package/dist/lib/browser/intent-resolver-TIXVDYN7.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-root-7S6FIC5G.mjs → react-root-N2J7TDRX.mjs} +5 -5
- package/dist/lib/browser/{react-surface-6C3YJNDK.mjs → react-surface-TPNLWJJH.mjs} +35 -14
- package/dist/lib/browser/react-surface-TPNLWJJH.mjs.map +7 -0
- package/dist/lib/browser/{schema-defs-K3B3OAH4.mjs → schema-defs-Z6FC4AHC.mjs} +2 -2
- package/dist/lib/browser/{settings-XNWYRWNM.mjs → settings-4IMP5RYT.mjs} +2 -2
- package/dist/lib/browser/{spaces-ready-K7NSNBHM.mjs → spaces-ready-TOPG6IV4.mjs} +4 -4
- package/dist/lib/browser/{state-522XTUR4.mjs → state-QYZAB45H.mjs} +2 -2
- package/dist/lib/browser/types/index.mjs +1 -1
- package/dist/lib/node-esm/CollectionMain-ZJIFCWKZ.mjs +32 -0
- package/dist/lib/node-esm/CollectionMain-ZJIFCWKZ.mjs.map +7 -0
- package/dist/lib/node-esm/ObjectDetailsPanel-QKZEDSZK.mjs +89 -0
- package/dist/lib/node-esm/ObjectDetailsPanel-QKZEDSZK.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-builder-TO72W6MI.mjs → app-graph-builder-KGIGWC72.mjs} +138 -22
- package/dist/lib/node-esm/app-graph-builder-KGIGWC72.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-serializer-LA3IZDXJ.mjs → app-graph-serializer-2ICUGQQT.mjs} +4 -4
- package/dist/lib/node-esm/{chunk-HJJHLWKY.mjs → chunk-4AOMYKDE.mjs} +124 -21
- package/dist/lib/node-esm/chunk-4AOMYKDE.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-72QMMRKC.mjs → chunk-5HHYE264.mjs} +2 -1
- package/dist/lib/node-esm/{chunk-72QMMRKC.mjs.map → chunk-5HHYE264.mjs.map} +3 -3
- package/dist/lib/node-esm/{chunk-AT7LGFER.mjs → chunk-5T3ZH23B.mjs} +2 -1
- package/dist/lib/node-esm/chunk-5T3ZH23B.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-OUBADVJE.mjs → chunk-6X5DLJM5.mjs} +355 -286
- package/dist/lib/node-esm/chunk-6X5DLJM5.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-2THX6G4C.mjs → chunk-JH6F4C3I.mjs} +57 -3
- package/dist/lib/node-esm/chunk-JH6F4C3I.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-SXD6T2N4.mjs → chunk-P442DOQ3.mjs} +64 -3
- package/dist/lib/node-esm/chunk-P442DOQ3.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +98 -9
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-HSR27ME4.mjs → intent-resolver-MHGHRGDT.mjs} +164 -14
- package/dist/lib/node-esm/intent-resolver-MHGHRGDT.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-root-HUK3ANLV.mjs → react-root-KW3TGJGY.mjs} +5 -5
- package/dist/lib/node-esm/{react-surface-AGAWX7DD.mjs → react-surface-UUIUUD6P.mjs} +35 -14
- package/dist/lib/node-esm/react-surface-UUIUUD6P.mjs.map +7 -0
- package/dist/lib/node-esm/{schema-defs-4MCDG4DV.mjs → schema-defs-WHJM7UZE.mjs} +2 -2
- package/dist/lib/node-esm/{settings-YGKHGFPH.mjs → settings-SAOBPND3.mjs} +2 -2
- package/dist/lib/node-esm/{spaces-ready-UM2P3DCR.mjs → spaces-ready-HIUKNDZK.mjs} +4 -4
- package/dist/lib/node-esm/{state-C4IOXPZP.mjs → state-ZVEHQ4BJ.mjs} +2 -2
- 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.d.ts.map +1 -1
- package/dist/types/src/capabilities/capabilities.d.ts +9 -3
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
- package/dist/types/src/components/CollectionMain.d.ts +1 -0
- package/dist/types/src/components/CollectionMain.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +3 -2
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
- package/dist/types/src/components/MembersContainer.d.ts.map +1 -1
- package/dist/types/src/components/MenuFooter.d.ts.map +1 -1
- package/dist/types/src/components/ObjectDetailsPanel.d.ts +9 -0
- package/dist/types/src/components/ObjectDetailsPanel.d.ts.map +1 -0
- package/dist/types/src/components/PersistenceStatus.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/SyncStatus.d.ts +1 -1
- package/dist/types/src/components/SyncStatus/status.d.ts +5 -5
- package/dist/types/src/components/ViewEditor.d.ts +8 -0
- package/dist/types/src/components/ViewEditor.d.ts.map +1 -0
- package/dist/types/src/components/index.d.ts +8 -1
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/events.d.ts +1 -0
- package/dist/types/src/events.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +61 -0
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +82 -2
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +27 -2
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +47 -49
- package/src/SpacePlugin.ts +87 -4
- package/src/capabilities/app-graph-builder.ts +165 -5
- package/src/capabilities/capabilities.ts +8 -3
- package/src/capabilities/intent-resolver.ts +114 -5
- package/src/capabilities/react-surface.tsx +47 -10
- package/src/components/AwaitingObject.tsx +4 -6
- package/src/components/CollectionMain.tsx +2 -0
- package/src/components/CreateDialog/CreateObjectDialog.tsx +29 -25
- package/src/components/MembersContainer.tsx +5 -3
- package/src/components/MenuFooter.tsx +2 -3
- package/src/components/ObjectDetailsPanel.tsx +77 -0
- package/src/components/PersistenceStatus.tsx +5 -6
- package/src/components/PopoverRenameObject.tsx +2 -2
- package/src/components/SyncStatus/SyncStatus.tsx +1 -1
- package/src/components/SyncStatus/status.ts +4 -4
- package/src/components/ViewEditor.tsx +64 -0
- package/src/components/index.ts +6 -1
- package/src/events.ts +1 -0
- package/src/translations.ts +62 -0
- package/src/types/types.ts +56 -3
- package/src/util.tsx +115 -20
- package/dist/lib/browser/app-graph-builder-PMDF6PJV.mjs.map +0 -7
- package/dist/lib/browser/chunk-6VLSHG4A.mjs.map +0 -7
- package/dist/lib/browser/chunk-GVTXQCIW.mjs.map +0 -7
- package/dist/lib/browser/chunk-S6NY637J.mjs.map +0 -7
- package/dist/lib/browser/chunk-WBSEOLEM.mjs.map +0 -7
- package/dist/lib/browser/chunk-XXIPJLJF.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-WK5WYFH3.mjs.map +0 -7
- package/dist/lib/browser/react-surface-6C3YJNDK.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-TO72W6MI.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-2THX6G4C.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-AT7LGFER.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HJJHLWKY.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-OUBADVJE.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-SXD6T2N4.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-HSR27ME4.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-AGAWX7DD.mjs.map +0 -7
- /package/dist/lib/browser/{app-graph-serializer-UKYMBX4O.mjs.map → app-graph-serializer-H6AW7KGS.mjs.map} +0 -0
- /package/dist/lib/browser/{react-root-7S6FIC5G.mjs.map → react-root-N2J7TDRX.mjs.map} +0 -0
- /package/dist/lib/browser/{schema-defs-K3B3OAH4.mjs.map → schema-defs-Z6FC4AHC.mjs.map} +0 -0
- /package/dist/lib/browser/{settings-XNWYRWNM.mjs.map → settings-4IMP5RYT.mjs.map} +0 -0
- /package/dist/lib/browser/{spaces-ready-K7NSNBHM.mjs.map → spaces-ready-TOPG6IV4.mjs.map} +0 -0
- /package/dist/lib/browser/{state-522XTUR4.mjs.map → state-QYZAB45H.mjs.map} +0 -0
- /package/dist/lib/node-esm/{app-graph-serializer-LA3IZDXJ.mjs.map → app-graph-serializer-2ICUGQQT.mjs.map} +0 -0
- /package/dist/lib/node-esm/{react-root-HUK3ANLV.mjs.map → react-root-KW3TGJGY.mjs.map} +0 -0
- /package/dist/lib/node-esm/{schema-defs-4MCDG4DV.mjs.map → schema-defs-WHJM7UZE.mjs.map} +0 -0
- /package/dist/lib/node-esm/{settings-YGKHGFPH.mjs.map → settings-SAOBPND3.mjs.map} +0 -0
- /package/dist/lib/node-esm/{spaces-ready-UM2P3DCR.mjs.map → spaces-ready-HIUKNDZK.mjs.map} +0 -0
- /package/dist/lib/node-esm/{state-C4IOXPZP.mjs.map → state-ZVEHQ4BJ.mjs.map} +0 -0
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
JoinDialog,
|
|
11
11
|
MembersContainer,
|
|
12
12
|
MenuFooter,
|
|
13
|
+
ObjectDetailsPanel,
|
|
13
14
|
ObjectSettingsContainer,
|
|
14
15
|
POPOVER_RENAME_OBJECT,
|
|
15
16
|
POPOVER_RENAME_SPACE,
|
|
@@ -20,17 +21,18 @@ import {
|
|
|
20
21
|
SpacePluginSettings,
|
|
21
22
|
SpacePresence,
|
|
22
23
|
SpaceSettingsContainer,
|
|
23
|
-
SyncStatus
|
|
24
|
-
|
|
24
|
+
SyncStatus,
|
|
25
|
+
ViewEditor
|
|
26
|
+
} from "./chunk-V7MJSSBQ.mjs";
|
|
25
27
|
import "./chunk-VLBRSGJ2.mjs";
|
|
26
28
|
import {
|
|
27
29
|
SpaceCapabilities
|
|
28
|
-
} from "./chunk-
|
|
29
|
-
import "./chunk-
|
|
30
|
+
} from "./chunk-CEFHNVU7.mjs";
|
|
31
|
+
import "./chunk-XUYKJUU7.mjs";
|
|
30
32
|
import {
|
|
31
33
|
HueAnnotationId,
|
|
32
34
|
IconAnnotationId
|
|
33
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-SGTQ52SU.mjs";
|
|
34
36
|
import {
|
|
35
37
|
SPACE_PLUGIN
|
|
36
38
|
} from "./chunk-FBCGT5YY.mjs";
|
|
@@ -43,7 +45,7 @@ import { findAnnotation } from "@dxos/effect";
|
|
|
43
45
|
import { SettingsStore } from "@dxos/local-storage";
|
|
44
46
|
import { ClientCapabilities } from "@dxos/plugin-client";
|
|
45
47
|
import { useClient } from "@dxos/react-client";
|
|
46
|
-
import { getSpace, isLiveObject, isSpace, parseId, SpaceState, useSpace } from "@dxos/react-client/echo";
|
|
48
|
+
import { fullyQualifiedId, getSpace, isLiveObject, isSpace, parseId, SpaceState, useSpace } from "@dxos/react-client/echo";
|
|
47
49
|
import { Input, useTranslation } from "@dxos/react-ui";
|
|
48
50
|
import { SelectInput } from "@dxos/react-ui-form";
|
|
49
51
|
import { HuePicker, IconPicker } from "@dxos/react-ui-pickers";
|
|
@@ -145,6 +147,16 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
|
|
|
145
147
|
});
|
|
146
148
|
}
|
|
147
149
|
}),
|
|
150
|
+
createSurface({
|
|
151
|
+
id: `${SPACE_PLUGIN}/selected-objects`,
|
|
152
|
+
role: "article",
|
|
153
|
+
filter: (data) => Obj.instanceOf(DataType.View, data.companionTo) && data.subject === "selected-objects",
|
|
154
|
+
component: ({ data }) => /* @__PURE__ */ React.createElement(ObjectDetailsPanel, {
|
|
155
|
+
key: fullyQualifiedId(data.companionTo),
|
|
156
|
+
objectId: fullyQualifiedId(data.companionTo),
|
|
157
|
+
view: data.companionTo
|
|
158
|
+
})
|
|
159
|
+
}),
|
|
148
160
|
createSurface({
|
|
149
161
|
id: JOIN_DIALOG,
|
|
150
162
|
role: "dialog",
|
|
@@ -229,21 +241,22 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
|
|
|
229
241
|
}
|
|
230
242
|
const annotation = findAnnotation(schema.ast, TypenameAnnotationId);
|
|
231
243
|
const schemaWhitelists = useCapabilities(ClientCapabilities.SchemaWhiteList);
|
|
232
|
-
const whitelistedTypenames = useMemo(() => new Set(schemaWhitelists.flatMap((typeArray) => typeArray.map((type) => type
|
|
244
|
+
const whitelistedTypenames = useMemo(() => new Set(schemaWhitelists.flatMap((typeArray) => typeArray.map((type) => Type.getTypename(type)))), [
|
|
233
245
|
schemaWhitelists
|
|
234
246
|
]);
|
|
235
247
|
const objectForms = useCapabilities(SpaceCapabilities.ObjectForm);
|
|
236
|
-
const objectFormTypenames = useMemo(() => new Set(objectForms.map((form) => Type.getTypename(form.objectSchema)).filter((typename) => !OMIT.includes(typename))), [
|
|
248
|
+
const objectFormTypenames = useMemo(() => new Set(objectForms.map((form) => Type.getTypename(form.objectSchema)).filter((typename) => !OMIT.includes(typename) && !typename.endsWith("View"))), [
|
|
237
249
|
objectForms
|
|
238
250
|
]);
|
|
239
251
|
const fixed = client.graph.schemaRegistry.schemas.filter((schema2) => {
|
|
240
252
|
const limitedStatic = annotation.includes("limited-static") && whitelistedTypenames.has(Type.getTypename(schema2));
|
|
253
|
+
const unusedStatic = annotation.includes("unused-static") && whitelistedTypenames.has(Type.getTypename(schema2)) && !space.properties.staticRecords?.includes(Type.getTypename(schema2));
|
|
241
254
|
const objectForm = annotation.includes("object-form") && objectFormTypenames.has(Type.getTypename(schema2));
|
|
242
|
-
return annotation.includes("static") || limitedStatic || objectForm;
|
|
255
|
+
return annotation.includes("static") || limitedStatic || unusedStatic || objectForm;
|
|
243
256
|
});
|
|
244
257
|
const dynamic = space?.db.schemaRegistry.query().runSync();
|
|
245
258
|
const typenames = Array.from(/* @__PURE__ */ new Set([
|
|
246
|
-
...annotation.includes("limited-static") || annotation.includes("static") || annotation.includes("object-form") ? fixed.map((schema2) => Type.getTypename(schema2)) : [],
|
|
259
|
+
...annotation.includes("limited-static") || annotation.includes("unused-static") || annotation.includes("static") || annotation.includes("object-form") ? fixed.map((schema2) => Type.getTypename(schema2)) : [],
|
|
247
260
|
...annotation.includes("dynamic") ? dynamic.map((schema2) => schema2.typename) : []
|
|
248
261
|
])).sort();
|
|
249
262
|
const options = useMemo(() => typenames.map((typename) => ({
|
|
@@ -252,7 +265,7 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
|
|
|
252
265
|
ns: typename,
|
|
253
266
|
defaultValue: typename
|
|
254
267
|
})
|
|
255
|
-
})), [
|
|
268
|
+
})).toSorted((a, b) => a.label.localeCompare(b.label)), [
|
|
256
269
|
t,
|
|
257
270
|
typenames
|
|
258
271
|
]);
|
|
@@ -262,9 +275,17 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
|
|
|
262
275
|
});
|
|
263
276
|
}
|
|
264
277
|
}),
|
|
278
|
+
createSurface({
|
|
279
|
+
id: `${SPACE_PLUGIN}/object-settings`,
|
|
280
|
+
role: "object-settings",
|
|
281
|
+
filter: (data) => Obj.instanceOf(DataType.View, data.subject),
|
|
282
|
+
component: ({ data }) => /* @__PURE__ */ React.createElement(ViewEditor, {
|
|
283
|
+
view: data.subject
|
|
284
|
+
})
|
|
285
|
+
}),
|
|
265
286
|
createSurface({
|
|
266
287
|
id: POPOVER_RENAME_SPACE,
|
|
267
|
-
role: "popover",
|
|
288
|
+
role: "card--popover",
|
|
268
289
|
filter: (data) => data.component === POPOVER_RENAME_SPACE && isSpace(data.props),
|
|
269
290
|
component: ({ data }) => /* @__PURE__ */ React.createElement(PopoverRenameSpace, {
|
|
270
291
|
space: data.props
|
|
@@ -272,7 +293,7 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
|
|
|
272
293
|
}),
|
|
273
294
|
createSurface({
|
|
274
295
|
id: POPOVER_RENAME_OBJECT,
|
|
275
|
-
role: "popover",
|
|
296
|
+
role: "card--popover",
|
|
276
297
|
filter: (data) => data.component === POPOVER_RENAME_OBJECT && isLiveObject(data.props),
|
|
277
298
|
component: ({ data }) => /* @__PURE__ */ React.createElement(PopoverRenameObject, {
|
|
278
299
|
object: data.props
|
|
@@ -350,4 +371,4 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
|
|
|
350
371
|
export {
|
|
351
372
|
react_surface_default as default
|
|
352
373
|
};
|
|
353
|
-
//# sourceMappingURL=react-surface-
|
|
374
|
+
//# sourceMappingURL=react-surface-TPNLWJJH.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/capabilities/react-surface.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Schema } from 'effect';\nimport React, { useCallback, useMemo } from 'react';\n\nimport {\n Capabilities,\n contributes,\n createSurface,\n Surface,\n useCapabilities,\n useCapability,\n useLayout,\n} from '@dxos/app-framework';\nimport { Obj, Type } from '@dxos/echo';\nimport { findAnnotation } from '@dxos/effect';\nimport { SettingsStore } from '@dxos/local-storage';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { useClient } from '@dxos/react-client';\nimport {\n fullyQualifiedId,\n getSpace,\n isLiveObject,\n isSpace,\n parseId,\n SpaceState,\n useSpace,\n type Space,\n} from '@dxos/react-client/echo';\nimport { Input, useTranslation } from '@dxos/react-ui';\nimport { type InputProps, SelectInput } from '@dxos/react-ui-form';\nimport { HuePicker, IconPicker } from '@dxos/react-ui-pickers';\nimport { DataType, type TypenameAnnotation, TypenameAnnotationId } from '@dxos/schema';\nimport { type JoinPanelProps } from '@dxos/shell/react';\n\nimport { SpaceCapabilities } from './capabilities';\nimport {\n CollectionMain,\n CollectionSection,\n CREATE_OBJECT_DIALOG,\n CREATE_SPACE_DIALOG,\n CreateObjectDialog,\n CreateSpaceDialog,\n InlineSyncStatus,\n JOIN_DIALOG,\n JoinDialog,\n MembersContainer,\n MenuFooter,\n ObjectDetailsPanel,\n ObjectSettingsContainer,\n POPOVER_RENAME_OBJECT,\n POPOVER_RENAME_SPACE,\n PopoverRenameObject,\n PopoverRenameSpace,\n SchemaContainer,\n SmallPresenceLive,\n SpacePluginSettings,\n SpacePresence,\n SpaceSettingsContainer,\n SyncStatus,\n ViewEditor,\n type CreateObjectDialogProps,\n} from '../components';\nimport { SPACE_PLUGIN } from '../meta';\nimport { HueAnnotationId, IconAnnotationId, type SpaceSettingsProps } from '../types';\n\ntype ReactSurfaceOptions = {\n createInvitationUrl: (invitationCode: string) => string;\n};\n\nconst OMIT = [DataType.Collection.typename, DataType.QueryCollection.typename];\n\nexport default ({ createInvitationUrl }: ReactSurfaceOptions) =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: `${SPACE_PLUGIN}/article`,\n role: 'article',\n filter: (data): data is { subject: Space } =>\n // TODO(wittjosiah): Need to avoid shotgun parsing space state everywhere.\n isSpace(data.subject) && data.subject.state.get() === SpaceState.SPACE_READY,\n component: ({ data, role, ...rest }) => (\n <Surface\n data={{\n id: data.subject.id,\n subject: data.subject.properties[DataType.Collection.typename]?.target,\n }}\n role={role}\n {...rest}\n />\n ),\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/collection-fallback`,\n role: 'article',\n position: 'fallback',\n filter: (data): data is { subject: DataType.Collection } => Obj.instanceOf(DataType.Collection, data.subject),\n component: ({ data }) => <CollectionMain collection={data.subject} />,\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/plugin-settings`,\n role: 'article',\n filter: (data): data is { subject: SettingsStore<SpaceSettingsProps> } =>\n data.subject instanceof SettingsStore && data.subject.prefix === SPACE_PLUGIN,\n component: ({ data: { subject } }) => <SpacePluginSettings settings={subject.value} />,\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/companion/object-settings`,\n role: 'article',\n filter: (data): data is { companionTo: Obj.Any } => Obj.isObject(data.companionTo) && data.subject === 'settings',\n component: ({ data, role }) => <ObjectSettingsContainer object={data.companionTo} role={role} />,\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/space-settings-properties`,\n role: 'article',\n filter: (data): data is { subject: string } => data.subject === `${SPACE_PLUGIN}/properties`,\n component: () => {\n const layout = useLayout();\n const { spaceId } = parseId(layout.workspace);\n const space = useSpace(spaceId);\n if (!space || !spaceId) {\n return null;\n }\n\n return <SpaceSettingsContainer space={space} />;\n },\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/space-settings-members`,\n role: 'article',\n position: 'hoist',\n filter: (data): data is { subject: string } => data.subject === `${SPACE_PLUGIN}/members`,\n component: () => {\n const layout = useLayout();\n const { spaceId } = parseId(layout.workspace);\n const space = useSpace(spaceId);\n if (!space || !spaceId) {\n return null;\n }\n\n return <MembersContainer space={space} createInvitationUrl={createInvitationUrl} />;\n },\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/space-settings-schema`,\n role: 'article',\n filter: (data): data is { subject: string } => data.subject === `${SPACE_PLUGIN}/schema`,\n component: () => {\n const layout = useLayout();\n const { spaceId } = parseId(layout.workspace);\n const space = useSpace(spaceId);\n if (!space || !spaceId) {\n return null;\n }\n\n return <SchemaContainer space={space} />;\n },\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/selected-objects`,\n role: 'article',\n filter: (data): data is { companionTo: DataType.View; subject: 'selected-objects' } =>\n Obj.instanceOf(DataType.View, data.companionTo) && data.subject === 'selected-objects',\n component: ({ data }) => (\n <ObjectDetailsPanel\n key={fullyQualifiedId(data.companionTo)}\n objectId={fullyQualifiedId(data.companionTo)}\n view={data.companionTo}\n />\n ),\n }),\n createSurface({\n id: JOIN_DIALOG,\n role: 'dialog',\n filter: (data): data is { props: JoinPanelProps } => data.component === JOIN_DIALOG,\n component: ({ data }) => <JoinDialog {...data.props} />,\n }),\n createSurface({\n id: CREATE_SPACE_DIALOG,\n role: 'dialog',\n filter: (data): data is any => data.component === CREATE_SPACE_DIALOG,\n component: () => <CreateSpaceDialog />,\n }),\n createSurface({\n id: CREATE_OBJECT_DIALOG,\n role: 'dialog',\n filter: (data): data is { props: CreateObjectDialogProps } => data.component === CREATE_OBJECT_DIALOG,\n component: ({ data }) => <CreateObjectDialog {...data.props} />,\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/create-initial-space-form-[hue]`,\n role: 'form-input',\n filter: (data): data is { prop: string; schema: Schema.Schema<any> } => {\n const annotation = findAnnotation<boolean>((data.schema as Schema.Schema.All).ast, HueAnnotationId);\n return !!annotation;\n },\n component: ({ data: _, ...inputProps }) => {\n const { label, disabled, type, getValue, onValueChange } = inputProps as any as InputProps;\n const handleChange = useCallback((nextHue: string) => onValueChange(type, nextHue), [onValueChange]);\n const handleReset = useCallback(() => onValueChange(type, undefined), [onValueChange]);\n return (\n <Input.Root>\n <Input.Label>{label}</Input.Label>\n <HuePicker disabled={disabled} value={getValue() ?? ''} onChange={handleChange} onReset={handleReset} />\n </Input.Root>\n );\n },\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/create-initial-space-form-[icon]`,\n role: 'form-input',\n filter: (data): data is { prop: string; schema: Schema.Schema<any> } => {\n const annotation = findAnnotation<boolean>((data.schema as Schema.Schema.All).ast, IconAnnotationId);\n return !!annotation;\n },\n component: ({ data: _, ...inputProps }) => {\n const { label, disabled, type, getValue, onValueChange } = inputProps as any as InputProps;\n const handleChange = useCallback((nextIcon: string) => onValueChange(type, nextIcon), [onValueChange]);\n const handleReset = useCallback(() => onValueChange(type, undefined), [onValueChange]);\n return (\n <Input.Root>\n <Input.Label>{label}</Input.Label>\n <IconPicker disabled={disabled} value={getValue() ?? ''} onChange={handleChange} onReset={handleReset} />\n </Input.Root>\n );\n },\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/typename-form-input`,\n role: 'form-input',\n filter: (\n data,\n ): data is { prop: string; schema: Schema.Schema<any>; target: Space | DataType.Collection | undefined } => {\n if (data.prop !== 'typename') {\n return false;\n }\n\n const annotation = findAnnotation((data.schema as Schema.Schema.All).ast, TypenameAnnotationId);\n return !!annotation;\n },\n component: ({ data: { schema, target }, ...inputProps }) => {\n const { t } = useTranslation();\n const client = useClient();\n const props = inputProps as any as InputProps;\n const space = isSpace(target) ? target : getSpace(target);\n if (!space) {\n return null;\n }\n\n const annotation = findAnnotation<TypenameAnnotation[]>(schema.ast, TypenameAnnotationId)!;\n\n const schemaWhitelists = useCapabilities(ClientCapabilities.SchemaWhiteList);\n const whitelistedTypenames = useMemo(\n () => new Set(schemaWhitelists.flatMap((typeArray) => typeArray.map((type) => Type.getTypename(type)))),\n [schemaWhitelists],\n );\n\n const objectForms = useCapabilities(SpaceCapabilities.ObjectForm);\n const objectFormTypenames = useMemo(\n () =>\n new Set(\n objectForms\n .map((form) => Type.getTypename(form.objectSchema))\n // TODO(wittjosiah): Remove.\n .filter((typename) => !OMIT.includes(typename) && !typename.endsWith('View')),\n ),\n [objectForms],\n );\n\n const fixed = client.graph.schemaRegistry.schemas.filter((schema) => {\n const limitedStatic =\n annotation.includes('limited-static') && whitelistedTypenames.has(Type.getTypename(schema));\n const unusedStatic =\n annotation.includes('unused-static') &&\n whitelistedTypenames.has(Type.getTypename(schema)) &&\n !space.properties.staticRecords?.includes(Type.getTypename(schema));\n const objectForm = annotation.includes('object-form') && objectFormTypenames.has(Type.getTypename(schema));\n return annotation.includes('static') || limitedStatic || unusedStatic || objectForm;\n });\n const dynamic = space?.db.schemaRegistry.query().runSync();\n const typenames = Array.from(\n new Set<string>([\n ...(annotation.includes('limited-static') ||\n annotation.includes('unused-static') ||\n annotation.includes('static') ||\n annotation.includes('object-form')\n ? fixed.map((schema) => Type.getTypename(schema))\n : []),\n ...(annotation.includes('dynamic') ? dynamic.map((schema) => schema.typename) : []),\n ]),\n ).sort();\n\n const options = useMemo(\n () =>\n typenames\n .map((typename) => ({\n value: typename,\n label: t('typename label', { ns: typename, defaultValue: typename }),\n }))\n .toSorted((a, b) => a.label.localeCompare(b.label)),\n [t, typenames],\n );\n\n return <SelectInput {...props} options={options} />;\n },\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/object-settings`,\n role: 'object-settings',\n filter: (data): data is { subject: DataType.View } => Obj.instanceOf(DataType.View, data.subject),\n component: ({ data }) => <ViewEditor view={data.subject} />,\n }),\n createSurface({\n id: POPOVER_RENAME_SPACE,\n role: 'card--popover',\n filter: (data): data is { props: Space } => data.component === POPOVER_RENAME_SPACE && isSpace(data.props),\n component: ({ data }) => <PopoverRenameSpace space={data.props} />,\n }),\n createSurface({\n id: POPOVER_RENAME_OBJECT,\n role: 'card--popover',\n filter: (data): data is { props: Obj.Any } =>\n data.component === POPOVER_RENAME_OBJECT && isLiveObject(data.props),\n component: ({ data }) => <PopoverRenameObject object={data.props} />,\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/menu-footer`,\n role: 'menu-footer',\n filter: (data): data is { subject: Obj.Any } => Obj.isObject(data.subject),\n component: ({ data }) => <MenuFooter object={data.subject} />,\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/navtree-presence`,\n role: 'navtree-item-end',\n filter: (data): data is { id: string; subject: Obj.Any; open?: boolean } =>\n typeof data.id === 'string' && Obj.isObject(data.subject),\n component: ({ data }) => {\n // TODO(wittjosiah): Doesn't need to be mutable but readonly type messes with ComplexMap.\n const state = useCapability(SpaceCapabilities.MutableState);\n return <SmallPresenceLive id={data.id} open={data.open} viewers={state.viewersByObject[data.id]} />;\n },\n }),\n // TODO(wittjosiah): Attention glyph for non-echo items should be handled elsewhere.\n createSurface({\n id: `${SPACE_PLUGIN}/navtree-presence-fallback`,\n role: 'navtree-item-end',\n position: 'fallback',\n filter: (data): data is { id: string; open?: boolean } => typeof data.id === 'string',\n component: ({ data }) => <SmallPresenceLive id={data.id} open={data.open} />,\n }),\n // TODO(wittjosiah): Broken?\n createSurface({\n id: `${SPACE_PLUGIN}/navtree-sync-status`,\n role: 'navtree-item-end',\n filter: (data): data is { subject: Space; open?: boolean } => isSpace(data.subject),\n component: ({ data }) => <InlineSyncStatus space={data.subject} open={data.open} />,\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/navbar-presence`,\n role: 'navbar-end',\n position: 'hoist',\n filter: (data): data is { subject: Space | Obj.Any } => isSpace(data.subject) || Obj.isObject(data.subject),\n component: ({ data }) => {\n const space = isSpace(data.subject) ? data.subject : getSpace(data.subject);\n const object = isSpace(data.subject)\n ? data.subject.state.get() === SpaceState.SPACE_READY\n ? (space?.properties[DataType.Collection.typename]?.target as DataType.Collection)\n : undefined\n : data.subject;\n\n return object ? <SpacePresence object={object} /> : null;\n },\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/collection-section`,\n role: 'section',\n filter: (data): data is { subject: DataType.Collection } => Obj.instanceOf(DataType.Collection, data.subject),\n component: ({ data }) => <CollectionSection collection={data.subject} />,\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/status`,\n role: 'status',\n component: () => <SyncStatus />,\n }),\n ]);\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,OAAOA,SAASC,aAAaC,eAAe;AAE5C,SACEC,cACAC,aACAC,eACAC,SACAC,iBACAC,eACAC,iBACK;AACP,SAASC,KAAKC,YAAY;AAC1B,SAASC,sBAAsB;AAC/B,SAASC,qBAAqB;AAC9B,SAASC,0BAA0B;AACnC,SAASC,iBAAiB;AAC1B,SACEC,kBACAC,UACAC,cACAC,SACAC,SACAC,YACAC,gBAEK;AACP,SAASC,OAAOC,sBAAsB;AACtC,SAA0BC,mBAAmB;AAC7C,SAASC,WAAWC,kBAAkB;AACtC,SAASC,UAAmCC,4BAA4B;AAsCxE,IAAMC,OAAO;EAACC,SAASC,WAAWC;EAAUF,SAASG,gBAAgBD;;AAErE,IAAA,wBAAe,CAAC,EAAEE,oBAAmB,MACnCC,YAAYC,aAAaC,cAAc;EACrCC,cAAc;IACZC,IAAI,GAAGC,YAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC;;MAEPC,QAAQD,KAAKE,OAAO,KAAKF,KAAKE,QAAQC,MAAMC,IAAG,MAAOC,WAAWC;;IACnEC,WAAW,CAAC,EAAEP,MAAMF,MAAM,GAAGU,KAAAA,MAC3B,sBAAA,cAACC,SAAAA;MACCT,MAAM;QACJJ,IAAII,KAAKE,QAAQN;QACjBM,SAASF,KAAKE,QAAQQ,WAAWvB,SAASC,WAAWC,QAAQ,GAAGsB;MAClE;MACAb;MACC,GAAGU;;EAGV,CAAA;EACAb,cAAc;IACZC,IAAI,GAAGC,YAAAA;IACPC,MAAM;IACNc,UAAU;IACVb,QAAQ,CAACC,SAAmDa,IAAIC,WAAW3B,SAASC,YAAYY,KAAKE,OAAO;IAC5GK,WAAW,CAAC,EAAEP,KAAI,MAAO,sBAAA,cAACe,gBAAAA;MAAeC,YAAYhB,KAAKE;;EAC5D,CAAA;EACAP,cAAc;IACZC,IAAI,GAAGC,YAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SACPA,KAAKE,mBAAmBe,iBAAiBjB,KAAKE,QAAQgB,WAAWrB;IACnEU,WAAW,CAAC,EAAEP,MAAM,EAAEE,QAAO,EAAE,MAAO,sBAAA,cAACiB,qBAAAA;MAAoBC,UAAUlB,QAAQmB;;EAC/E,CAAA;EACA1B,cAAc;IACZC,IAAI,GAAGC,YAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SAA2Ca,IAAIS,SAAStB,KAAKuB,WAAW,KAAKvB,KAAKE,YAAY;IACvGK,WAAW,CAAC,EAAEP,MAAMF,KAAI,MAAO,sBAAA,cAAC0B,yBAAAA;MAAwBC,QAAQzB,KAAKuB;MAAazB;;EACpF,CAAA;EACAH,cAAc;IACZC,IAAI,GAAGC,YAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SAAsCA,KAAKE,YAAY,GAAGL,YAAAA;IACnEU,WAAW,MAAA;AACT,YAAMmB,SAASC,UAAAA;AACf,YAAM,EAAEC,QAAO,IAAKC,QAAQH,OAAOI,SAAS;AAC5C,YAAMC,QAAQC,SAASJ,OAAAA;AACvB,UAAI,CAACG,SAAS,CAACH,SAAS;AACtB,eAAO;MACT;AAEA,aAAO,sBAAA,cAACK,wBAAAA;QAAuBF;;IACjC;EACF,CAAA;EACApC,cAAc;IACZC,IAAI,GAAGC,YAAAA;IACPC,MAAM;IACNc,UAAU;IACVb,QAAQ,CAACC,SAAsCA,KAAKE,YAAY,GAAGL,YAAAA;IACnEU,WAAW,MAAA;AACT,YAAMmB,SAASC,UAAAA;AACf,YAAM,EAAEC,QAAO,IAAKC,QAAQH,OAAOI,SAAS;AAC5C,YAAMC,QAAQC,SAASJ,OAAAA;AACvB,UAAI,CAACG,SAAS,CAACH,SAAS;AACtB,eAAO;MACT;AAEA,aAAO,sBAAA,cAACM,kBAAAA;QAAiBH;QAAcxC;;IACzC;EACF,CAAA;EACAI,cAAc;IACZC,IAAI,GAAGC,YAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SAAsCA,KAAKE,YAAY,GAAGL,YAAAA;IACnEU,WAAW,MAAA;AACT,YAAMmB,SAASC,UAAAA;AACf,YAAM,EAAEC,QAAO,IAAKC,QAAQH,OAAOI,SAAS;AAC5C,YAAMC,QAAQC,SAASJ,OAAAA;AACvB,UAAI,CAACG,SAAS,CAACH,SAAS;AACtB,eAAO;MACT;AAEA,aAAO,sBAAA,cAACO,iBAAAA;QAAgBJ;;IAC1B;EACF,CAAA;EACApC,cAAc;IACZC,IAAI,GAAGC,YAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SACPa,IAAIC,WAAW3B,SAASiD,MAAMpC,KAAKuB,WAAW,KAAKvB,KAAKE,YAAY;IACtEK,WAAW,CAAC,EAAEP,KAAI,MAChB,sBAAA,cAACqC,oBAAAA;MACCC,KAAKC,iBAAiBvC,KAAKuB,WAAW;MACtCiB,UAAUD,iBAAiBvC,KAAKuB,WAAW;MAC3CkB,MAAMzC,KAAKuB;;EAGjB,CAAA;EACA5B,cAAc;IACZC,IAAI8C;IACJ5C,MAAM;IACNC,QAAQ,CAACC,SAA4CA,KAAKO,cAAcmC;IACxEnC,WAAW,CAAC,EAAEP,KAAI,MAAO,sBAAA,cAAC2C,YAAe3C,KAAK4C,KAAK;EACrD,CAAA;EACAjD,cAAc;IACZC,IAAIiD;IACJ/C,MAAM;IACNC,QAAQ,CAACC,SAAsBA,KAAKO,cAAcsC;IAClDtC,WAAW,MAAM,sBAAA,cAACuC,mBAAAA,IAAAA;EACpB,CAAA;EACAnD,cAAc;IACZC,IAAImD;IACJjD,MAAM;IACNC,QAAQ,CAACC,SAAqDA,KAAKO,cAAcwC;IACjFxC,WAAW,CAAC,EAAEP,KAAI,MAAO,sBAAA,cAACgD,oBAAuBhD,KAAK4C,KAAK;EAC7D,CAAA;EACAjD,cAAc;IACZC,IAAI,GAAGC,YAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SAAAA;AACP,YAAMiD,aAAaC,eAAyBlD,KAAKmD,OAA6BC,KAAKC,eAAAA;AACnF,aAAO,CAAC,CAACJ;IACX;IACA1C,WAAW,CAAC,EAAEP,MAAMsD,GAAG,GAAGC,WAAAA,MAAY;AACpC,YAAM,EAAEC,OAAOC,UAAUC,MAAMC,UAAUC,cAAa,IAAKL;AAC3D,YAAMM,eAAeC,YAAY,CAACC,YAAoBH,cAAcF,MAAMK,OAAAA,GAAU;QAACH;OAAc;AACnG,YAAMI,cAAcF,YAAY,MAAMF,cAAcF,MAAMO,MAAAA,GAAY;QAACL;OAAc;AACrF,aACE,sBAAA,cAACM,MAAMC,MAAI,MACT,sBAAA,cAACD,MAAME,OAAK,MAAEZ,KAAAA,GACd,sBAAA,cAACa,WAAAA;QAAUZ;QAAoBpC,OAAOsC,SAAAA,KAAc;QAAIW,UAAUT;QAAcU,SAASP;;IAG/F;EACF,CAAA;EACArE,cAAc;IACZC,IAAI,GAAGC,YAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SAAAA;AACP,YAAMiD,aAAaC,eAAyBlD,KAAKmD,OAA6BC,KAAKoB,gBAAAA;AACnF,aAAO,CAAC,CAACvB;IACX;IACA1C,WAAW,CAAC,EAAEP,MAAMsD,GAAG,GAAGC,WAAAA,MAAY;AACpC,YAAM,EAAEC,OAAOC,UAAUC,MAAMC,UAAUC,cAAa,IAAKL;AAC3D,YAAMM,eAAeC,YAAY,CAACW,aAAqBb,cAAcF,MAAMe,QAAAA,GAAW;QAACb;OAAc;AACrG,YAAMI,cAAcF,YAAY,MAAMF,cAAcF,MAAMO,MAAAA,GAAY;QAACL;OAAc;AACrF,aACE,sBAAA,cAACM,MAAMC,MAAI,MACT,sBAAA,cAACD,MAAME,OAAK,MAAEZ,KAAAA,GACd,sBAAA,cAACkB,YAAAA;QAAWjB;QAAoBpC,OAAOsC,SAAAA,KAAc;QAAIW,UAAUT;QAAcU,SAASP;;IAGhG;EACF,CAAA;EACArE,cAAc;IACZC,IAAI,GAAGC,YAAAA;IACPC,MAAM;IACNC,QAAQ,CACNC,SAAAA;AAEA,UAAIA,KAAK2E,SAAS,YAAY;AAC5B,eAAO;MACT;AAEA,YAAM1B,aAAaC,eAAgBlD,KAAKmD,OAA6BC,KAAKwB,oBAAAA;AAC1E,aAAO,CAAC,CAAC3B;IACX;IACA1C,WAAW,CAAC,EAAEP,MAAM,EAAEmD,QAAQxC,OAAM,GAAI,GAAG4C,WAAAA,MAAY;AACrD,YAAM,EAAEsB,EAAC,IAAKC,eAAAA;AACd,YAAMC,SAASC,UAAAA;AACf,YAAMpC,QAAQW;AACd,YAAMxB,QAAQ9B,QAAQU,MAAAA,IAAUA,SAASsE,SAAStE,MAAAA;AAClD,UAAI,CAACoB,OAAO;AACV,eAAO;MACT;AAEA,YAAMkB,aAAaC,eAAqCC,OAAOC,KAAKwB,oBAAAA;AAEpE,YAAMM,mBAAmBC,gBAAgBC,mBAAmBC,eAAe;AAC3E,YAAMC,uBAAuBC,QAC3B,MAAM,IAAIC,IAAIN,iBAAiBO,QAAQ,CAACC,cAAcA,UAAUC,IAAI,CAACjC,SAASkC,KAAKC,YAAYnC,IAAAA,CAAAA,CAAAA,CAAAA,GAC/F;QAACwB;OAAiB;AAGpB,YAAMY,cAAcX,gBAAgBY,kBAAkBC,UAAU;AAChE,YAAMC,sBAAsBV,QAC1B,MACE,IAAIC,IACFM,YACGH,IAAI,CAACO,SAASN,KAAKC,YAAYK,KAAKC,YAAY,CAAA,EAEhDpG,OAAO,CAACV,aAAa,CAACH,KAAKkH,SAAS/G,QAAAA,KAAa,CAACA,SAASgH,SAAS,MAAA,CAAA,CAAA,GAE3E;QAACP;OAAY;AAGf,YAAMQ,QAAQvB,OAAOwB,MAAMC,eAAeC,QAAQ1G,OAAO,CAACoD,YAAAA;AACxD,cAAMuD,gBACJzD,WAAWmD,SAAS,gBAAA,KAAqBd,qBAAqBqB,IAAIf,KAAKC,YAAY1C,OAAAA,CAAAA;AACrF,cAAMyD,eACJ3D,WAAWmD,SAAS,eAAA,KACpBd,qBAAqBqB,IAAIf,KAAKC,YAAY1C,OAAAA,CAAAA,KAC1C,CAACpB,MAAMrB,WAAWmG,eAAeT,SAASR,KAAKC,YAAY1C,OAAAA,CAAAA;AAC7D,cAAM2D,aAAa7D,WAAWmD,SAAS,aAAA,KAAkBH,oBAAoBU,IAAIf,KAAKC,YAAY1C,OAAAA,CAAAA;AAClG,eAAOF,WAAWmD,SAAS,QAAA,KAAaM,iBAAiBE,gBAAgBE;MAC3E,CAAA;AACA,YAAMC,UAAUhF,OAAOiF,GAAGR,eAAeS,MAAAA,EAAQC,QAAAA;AACjD,YAAMC,YAAYC,MAAMC,KACtB,oBAAI7B,IAAY;WACVvC,WAAWmD,SAAS,gBAAA,KACxBnD,WAAWmD,SAAS,eAAA,KACpBnD,WAAWmD,SAAS,QAAA,KACpBnD,WAAWmD,SAAS,aAAA,IAChBE,MAAMX,IAAI,CAACxC,YAAWyC,KAAKC,YAAY1C,OAAAA,CAAAA,IACvC,CAAA;WACAF,WAAWmD,SAAS,SAAA,IAAaW,QAAQpB,IAAI,CAACxC,YAAWA,QAAO9D,QAAQ,IAAI,CAAA;OACjF,CAAA,EACDiI,KAAI;AAEN,YAAMC,UAAUhC,QACd,MACE4B,UACGxB,IAAI,CAACtG,cAAc;QAClBgC,OAAOhC;QACPmE,OAAOqB,EAAE,kBAAkB;UAAE2C,IAAInI;UAAUoI,cAAcpI;QAAS,CAAA;MACpE,EAAA,EACCqI,SAAS,CAACC,GAAGC,MAAMD,EAAEnE,MAAMqE,cAAcD,EAAEpE,KAAK,CAAA,GACrD;QAACqB;QAAGsC;OAAU;AAGhB,aAAO,sBAAA,cAACW,aAAAA;QAAa,GAAGlF;QAAO2E;;IACjC;EACF,CAAA;EACA5H,cAAc;IACZC,IAAI,GAAGC,YAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SAA6Ca,IAAIC,WAAW3B,SAASiD,MAAMpC,KAAKE,OAAO;IAChGK,WAAW,CAAC,EAAEP,KAAI,MAAO,sBAAA,cAAC+H,YAAAA;MAAWtF,MAAMzC,KAAKE;;EAClD,CAAA;EACAP,cAAc;IACZC,IAAIoI;IACJlI,MAAM;IACNC,QAAQ,CAACC,SAAmCA,KAAKO,cAAcyH,wBAAwB/H,QAAQD,KAAK4C,KAAK;IACzGrC,WAAW,CAAC,EAAEP,KAAI,MAAO,sBAAA,cAACiI,oBAAAA;MAAmBlG,OAAO/B,KAAK4C;;EAC3D,CAAA;EACAjD,cAAc;IACZC,IAAIsI;IACJpI,MAAM;IACNC,QAAQ,CAACC,SACPA,KAAKO,cAAc2H,yBAAyBC,aAAanI,KAAK4C,KAAK;IACrErC,WAAW,CAAC,EAAEP,KAAI,MAAO,sBAAA,cAACoI,qBAAAA;MAAoB3G,QAAQzB,KAAK4C;;EAC7D,CAAA;EACAjD,cAAc;IACZC,IAAI,GAAGC,YAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SAAuCa,IAAIS,SAAStB,KAAKE,OAAO;IACzEK,WAAW,CAAC,EAAEP,KAAI,MAAO,sBAAA,cAACqI,YAAAA;MAAW5G,QAAQzB,KAAKE;;EACpD,CAAA;EACAP,cAAc;IACZC,IAAI,GAAGC,YAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SACP,OAAOA,KAAKJ,OAAO,YAAYiB,IAAIS,SAAStB,KAAKE,OAAO;IAC1DK,WAAW,CAAC,EAAEP,KAAI,MAAE;AAElB,YAAMG,QAAQmI,cAAcvC,kBAAkBwC,YAAY;AAC1D,aAAO,sBAAA,cAACC,mBAAAA;QAAkB5I,IAAII,KAAKJ;QAAI6I,MAAMzI,KAAKyI;QAAMC,SAASvI,MAAMwI,gBAAgB3I,KAAKJ,EAAE;;IAChG;EACF,CAAA;;EAEAD,cAAc;IACZC,IAAI,GAAGC,YAAAA;IACPC,MAAM;IACNc,UAAU;IACVb,QAAQ,CAACC,SAAiD,OAAOA,KAAKJ,OAAO;IAC7EW,WAAW,CAAC,EAAEP,KAAI,MAAO,sBAAA,cAACwI,mBAAAA;MAAkB5I,IAAII,KAAKJ;MAAI6I,MAAMzI,KAAKyI;;EACtE,CAAA;;EAEA9I,cAAc;IACZC,IAAI,GAAGC,YAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SAAqDC,QAAQD,KAAKE,OAAO;IAClFK,WAAW,CAAC,EAAEP,KAAI,MAAO,sBAAA,cAAC4I,kBAAAA;MAAiB7G,OAAO/B,KAAKE;MAASuI,MAAMzI,KAAKyI;;EAC7E,CAAA;EACA9I,cAAc;IACZC,IAAI,GAAGC,YAAAA;IACPC,MAAM;IACNc,UAAU;IACVb,QAAQ,CAACC,SAA+CC,QAAQD,KAAKE,OAAO,KAAKW,IAAIS,SAAStB,KAAKE,OAAO;IAC1GK,WAAW,CAAC,EAAEP,KAAI,MAAE;AAClB,YAAM+B,QAAQ9B,QAAQD,KAAKE,OAAO,IAAIF,KAAKE,UAAU+E,SAASjF,KAAKE,OAAO;AAC1E,YAAMuB,SAASxB,QAAQD,KAAKE,OAAO,IAC/BF,KAAKE,QAAQC,MAAMC,IAAG,MAAOC,WAAWC,cACrCyB,OAAOrB,WAAWvB,SAASC,WAAWC,QAAQ,GAAGsB,SAClDsD,SACFjE,KAAKE;AAET,aAAOuB,SAAS,sBAAA,cAACoH,eAAAA;QAAcpH;WAAqB;IACtD;EACF,CAAA;EACA9B,cAAc;IACZC,IAAI,GAAGC,YAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SAAmDa,IAAIC,WAAW3B,SAASC,YAAYY,KAAKE,OAAO;IAC5GK,WAAW,CAAC,EAAEP,KAAI,MAAO,sBAAA,cAAC8I,mBAAAA;MAAkB9H,YAAYhB,KAAKE;;EAC/D,CAAA;EACAP,cAAc;IACZC,IAAI,GAAGC,YAAAA;IACPC,MAAM;IACNS,WAAW,MAAM,sBAAA,cAACwI,YAAAA,IAAAA;EACpB,CAAA;CACD;",
|
|
6
|
+
"names": ["React", "useCallback", "useMemo", "Capabilities", "contributes", "createSurface", "Surface", "useCapabilities", "useCapability", "useLayout", "Obj", "Type", "findAnnotation", "SettingsStore", "ClientCapabilities", "useClient", "fullyQualifiedId", "getSpace", "isLiveObject", "isSpace", "parseId", "SpaceState", "useSpace", "Input", "useTranslation", "SelectInput", "HuePicker", "IconPicker", "DataType", "TypenameAnnotationId", "OMIT", "DataType", "Collection", "typename", "QueryCollection", "createInvitationUrl", "contributes", "Capabilities", "ReactSurface", "createSurface", "id", "SPACE_PLUGIN", "role", "filter", "data", "isSpace", "subject", "state", "get", "SpaceState", "SPACE_READY", "component", "rest", "Surface", "properties", "target", "position", "Obj", "instanceOf", "CollectionMain", "collection", "SettingsStore", "prefix", "SpacePluginSettings", "settings", "value", "isObject", "companionTo", "ObjectSettingsContainer", "object", "layout", "useLayout", "spaceId", "parseId", "workspace", "space", "useSpace", "SpaceSettingsContainer", "MembersContainer", "SchemaContainer", "View", "ObjectDetailsPanel", "key", "fullyQualifiedId", "objectId", "view", "JOIN_DIALOG", "JoinDialog", "props", "CREATE_SPACE_DIALOG", "CreateSpaceDialog", "CREATE_OBJECT_DIALOG", "CreateObjectDialog", "annotation", "findAnnotation", "schema", "ast", "HueAnnotationId", "_", "inputProps", "label", "disabled", "type", "getValue", "onValueChange", "handleChange", "useCallback", "nextHue", "handleReset", "undefined", "Input", "Root", "Label", "HuePicker", "onChange", "onReset", "IconAnnotationId", "nextIcon", "IconPicker", "prop", "TypenameAnnotationId", "t", "useTranslation", "client", "useClient", "getSpace", "schemaWhitelists", "useCapabilities", "ClientCapabilities", "SchemaWhiteList", "whitelistedTypenames", "useMemo", "Set", "flatMap", "typeArray", "map", "Type", "getTypename", "objectForms", "SpaceCapabilities", "ObjectForm", "objectFormTypenames", "form", "objectSchema", "includes", "endsWith", "fixed", "graph", "schemaRegistry", "schemas", "limitedStatic", "has", "unusedStatic", "staticRecords", "objectForm", "dynamic", "db", "query", "runSync", "typenames", "Array", "from", "sort", "options", "ns", "defaultValue", "toSorted", "a", "b", "localeCompare", "SelectInput", "ViewEditor", "POPOVER_RENAME_SPACE", "PopoverRenameSpace", "POPOVER_RENAME_OBJECT", "isLiveObject", "PopoverRenameObject", "MenuFooter", "useCapability", "MutableState", "SmallPresenceLive", "open", "viewers", "viewersByObject", "InlineSyncStatus", "SpacePresence", "CollectionSection", "SyncStatus"]
|
|
7
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SpaceCapabilities
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-CEFHNVU7.mjs";
|
|
4
4
|
import "./chunk-FBCGT5YY.mjs";
|
|
5
5
|
|
|
6
6
|
// src/capabilities/schema-defs.ts
|
|
@@ -23,4 +23,4 @@ var schema_defs_default = (context) => {
|
|
|
23
23
|
export {
|
|
24
24
|
schema_defs_default as default
|
|
25
25
|
};
|
|
26
|
-
//# sourceMappingURL=schema-defs-
|
|
26
|
+
//# sourceMappingURL=schema-defs-Z6FC4AHC.mjs.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SpaceSettingsSchema
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-SGTQ52SU.mjs";
|
|
4
4
|
import {
|
|
5
5
|
meta
|
|
6
6
|
} from "./chunk-FBCGT5YY.mjs";
|
|
@@ -21,4 +21,4 @@ var settings_default = () => {
|
|
|
21
21
|
export {
|
|
22
22
|
settings_default as default
|
|
23
23
|
};
|
|
24
|
-
//# sourceMappingURL=settings-
|
|
24
|
+
//# sourceMappingURL=settings-4IMP5RYT.mjs.map
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SpaceCapabilities
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-CEFHNVU7.mjs";
|
|
4
4
|
import {
|
|
5
5
|
COMPOSER_SPACE_LOCK,
|
|
6
6
|
SHARED
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-XUYKJUU7.mjs";
|
|
8
8
|
import {
|
|
9
9
|
SpaceAction
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-SGTQ52SU.mjs";
|
|
11
11
|
import "./chunk-FBCGT5YY.mjs";
|
|
12
12
|
|
|
13
13
|
// src/capabilities/spaces-ready.ts
|
|
@@ -196,4 +196,4 @@ var spaces_ready_default = async (context) => {
|
|
|
196
196
|
export {
|
|
197
197
|
spaces_ready_default as default
|
|
198
198
|
};
|
|
199
|
-
//# sourceMappingURL=spaces-ready-
|
|
199
|
+
//# sourceMappingURL=spaces-ready-TOPG6IV4.mjs.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SpaceCapabilities
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-CEFHNVU7.mjs";
|
|
4
4
|
import {
|
|
5
5
|
SPACE_PLUGIN
|
|
6
6
|
} from "./chunk-FBCGT5YY.mjs";
|
|
@@ -44,4 +44,4 @@ var state_default = (context) => {
|
|
|
44
44
|
export {
|
|
45
45
|
state_default as default
|
|
46
46
|
};
|
|
47
|
-
//# sourceMappingURL=state-
|
|
47
|
+
//# sourceMappingURL=state-QYZAB45H.mjs.map
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
SPACE_PLUGIN
|
|
4
|
+
} from "./chunk-HWNG4MEU.mjs";
|
|
5
|
+
|
|
6
|
+
// src/components/CollectionMain.tsx
|
|
7
|
+
import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
|
|
8
|
+
import React from "react";
|
|
9
|
+
import { useTranslation } from "@dxos/react-ui";
|
|
10
|
+
import { baseSurface, descriptionMessage, mx } from "@dxos/react-ui-theme";
|
|
11
|
+
var CollectionMain = ({ collection }) => {
|
|
12
|
+
var _effect = _useSignals();
|
|
13
|
+
try {
|
|
14
|
+
const { t } = useTranslation(SPACE_PLUGIN);
|
|
15
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
16
|
+
role: "none",
|
|
17
|
+
className: mx(baseSurface, "min-bs-screen is-full flex items-center justify-center p-8"),
|
|
18
|
+
"data-testid": "composer.firstRunMessage"
|
|
19
|
+
}, /* @__PURE__ */ React.createElement("p", {
|
|
20
|
+
role: "alert",
|
|
21
|
+
className: mx(descriptionMessage, "rounded-md p-8 font-normal text-lg max-is-[24rem] break-words")
|
|
22
|
+
}, collection.name ?? t("unnamed collection label")));
|
|
23
|
+
} finally {
|
|
24
|
+
_effect.f();
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
var CollectionMain_default = CollectionMain;
|
|
28
|
+
export {
|
|
29
|
+
CollectionMain,
|
|
30
|
+
CollectionMain_default as default
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=CollectionMain-ZJIFCWKZ.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/CollectionMain.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useTranslation } from '@dxos/react-ui';\nimport { baseSurface, descriptionMessage, mx } from '@dxos/react-ui-theme';\nimport { type DataType } from '@dxos/schema';\n\nimport { SPACE_PLUGIN } from '../meta';\n\nexport const CollectionMain = ({ collection }: { collection: DataType.Collection }) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n\n return (\n <div\n role='none'\n className={mx(baseSurface, 'min-bs-screen is-full flex items-center justify-center p-8')}\n data-testid='composer.firstRunMessage'\n >\n <p\n role='alert'\n className={mx(descriptionMessage, 'rounded-md p-8 font-normal text-lg max-is-[24rem] break-words')}\n >\n {collection.name ?? t('unnamed collection label')}\n </p>\n </div>\n );\n};\n\nexport default CollectionMain;\n"],
|
|
5
|
+
"mappings": ";;;;;;;AAIA,OAAOA,WAAW;AAElB,SAASC,sBAAsB;AAC/B,SAASC,aAAaC,oBAAoBC,UAAU;AAK7C,IAAMC,iBAAiB,CAAC,EAAEC,WAAU,MAAuC;;;AAChF,UAAM,EAAEC,EAAC,IAAKC,eAAeC,YAAAA;AAE7B,WACE,sBAAA,cAACC,OAAAA;MACCC,MAAK;MACLC,WAAWC,GAAGC,aAAa,4DAAA;MAC3BC,eAAY;OAEZ,sBAAA,cAACC,KAAAA;MACCL,MAAK;MACLC,WAAWC,GAAGI,oBAAoB,+DAAA;OAEjCX,WAAWY,QAAQX,EAAE,0BAAA,CAAA,CAAA;;;;AAI9B;AAEA,IAAA,yBAAeF;",
|
|
6
|
+
"names": ["React", "useTranslation", "baseSurface", "descriptionMessage", "mx", "CollectionMain", "collection", "t", "useTranslation", "SPACE_PLUGIN", "div", "role", "className", "mx", "baseSurface", "data-testid", "p", "descriptionMessage", "name"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
SPACE_PLUGIN
|
|
4
|
+
} from "./chunk-HWNG4MEU.mjs";
|
|
5
|
+
|
|
6
|
+
// src/components/ObjectDetailsPanel.tsx
|
|
7
|
+
import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
|
|
8
|
+
import React, { useCallback } from "react";
|
|
9
|
+
import { setValue } from "@dxos/echo-schema";
|
|
10
|
+
import { invariant } from "@dxos/invariant";
|
|
11
|
+
import { useClient } from "@dxos/react-client";
|
|
12
|
+
import { getSpace, Filter, useQuery, useSchema } from "@dxos/react-client/echo";
|
|
13
|
+
import { Callout, useTranslation } from "@dxos/react-ui";
|
|
14
|
+
import { useSelected } from "@dxos/react-ui-attention";
|
|
15
|
+
import { Form, useRefQueryLookupHandler } from "@dxos/react-ui-form";
|
|
16
|
+
import { isNonNullable } from "@dxos/util";
|
|
17
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/ObjectDetailsPanel.tsx";
|
|
18
|
+
var ObjectDetailsPanel = ({ objectId, view }) => {
|
|
19
|
+
var _effect = _useSignals();
|
|
20
|
+
try {
|
|
21
|
+
const { t } = useTranslation(SPACE_PLUGIN);
|
|
22
|
+
const client = useClient();
|
|
23
|
+
const space = getSpace(view);
|
|
24
|
+
const schema = useSchema(client, space, view.query?.typename);
|
|
25
|
+
const queriedObjects = useQuery(space, schema ? Filter.type(schema) : Filter.nothing());
|
|
26
|
+
const selectedRows = useSelected(objectId, "multi");
|
|
27
|
+
const selectedObjects = selectedRows.map((id) => queriedObjects.find((obj) => obj.id === id)).filter(isNonNullable);
|
|
28
|
+
const handleRefQueryLookup = useRefQueryLookupHandler({
|
|
29
|
+
space
|
|
30
|
+
});
|
|
31
|
+
const handleSave = useCallback((values, { changed }) => {
|
|
32
|
+
const id = values.id;
|
|
33
|
+
invariant(typeof id === "string", void 0, {
|
|
34
|
+
F: __dxlog_file,
|
|
35
|
+
L: 36,
|
|
36
|
+
S: void 0,
|
|
37
|
+
A: [
|
|
38
|
+
"typeof id === 'string'",
|
|
39
|
+
""
|
|
40
|
+
]
|
|
41
|
+
});
|
|
42
|
+
const object = queriedObjects.find((obj) => obj.id === id);
|
|
43
|
+
invariant(object, void 0, {
|
|
44
|
+
F: __dxlog_file,
|
|
45
|
+
L: 38,
|
|
46
|
+
S: void 0,
|
|
47
|
+
A: [
|
|
48
|
+
"object",
|
|
49
|
+
""
|
|
50
|
+
]
|
|
51
|
+
});
|
|
52
|
+
const changedPaths = Object.keys(changed).filter((path) => changed[path]);
|
|
53
|
+
for (const path of changedPaths) {
|
|
54
|
+
const value = values[path];
|
|
55
|
+
setValue(object, path, value);
|
|
56
|
+
}
|
|
57
|
+
}, [
|
|
58
|
+
queriedObjects
|
|
59
|
+
]);
|
|
60
|
+
if (selectedObjects.length === 0) {
|
|
61
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
62
|
+
role: "none",
|
|
63
|
+
className: "plb-cardSpacingBlock pli-cardSpacingInline"
|
|
64
|
+
}, /* @__PURE__ */ React.createElement(Callout.Root, {
|
|
65
|
+
classNames: "is-full"
|
|
66
|
+
}, /* @__PURE__ */ React.createElement(Callout.Title, null, t("row details no selection label"))));
|
|
67
|
+
}
|
|
68
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
69
|
+
role: "none",
|
|
70
|
+
className: "bs-full is-full flex flex-col p-2 gap-1 overflow-y-auto"
|
|
71
|
+
}, schema && selectedObjects.map((object) => /* @__PURE__ */ React.createElement("div", {
|
|
72
|
+
key: object.id,
|
|
73
|
+
className: "border border-separator rounded"
|
|
74
|
+
}, /* @__PURE__ */ React.createElement(Form, {
|
|
75
|
+
autoSave: true,
|
|
76
|
+
schema,
|
|
77
|
+
values: object,
|
|
78
|
+
onSave: handleSave,
|
|
79
|
+
onQueryRefOptions: handleRefQueryLookup
|
|
80
|
+
}))));
|
|
81
|
+
} finally {
|
|
82
|
+
_effect.f();
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
var ObjectDetailsPanel_default = ObjectDetailsPanel;
|
|
86
|
+
export {
|
|
87
|
+
ObjectDetailsPanel_default as default
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=ObjectDetailsPanel-QKZEDSZK.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/ObjectDetailsPanel.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport { type JsonPath, setValue } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { useClient } from '@dxos/react-client';\nimport { getSpace, Filter, useQuery, useSchema } from '@dxos/react-client/echo';\nimport { Callout, useTranslation } from '@dxos/react-ui';\nimport { useSelected } from '@dxos/react-ui-attention';\nimport { Form, useRefQueryLookupHandler } from '@dxos/react-ui-form';\nimport { type DataType } from '@dxos/schema';\nimport { isNonNullable } from '@dxos/util';\n\nimport { SPACE_PLUGIN } from '../meta';\n\ntype RowDetailsPanelProps = { objectId: string; view: DataType.View };\n\nconst ObjectDetailsPanel = ({ objectId, view }: RowDetailsPanelProps) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n const client = useClient();\n const space = getSpace(view);\n const schema = useSchema(client, space, view.query?.typename);\n\n const queriedObjects = useQuery(space, 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 const handleRefQueryLookup = useRefQueryLookupHandler({ space });\n\n const handleSave = useCallback(\n (values: any, { changed }: { changed: Record<JsonPath, boolean> }) => {\n const id = values.id;\n invariant(typeof id === 'string');\n const object = queriedObjects.find((obj) => obj.id === id);\n invariant(object);\n\n const changedPaths = Object.keys(changed).filter((path) => changed[path as JsonPath]) as JsonPath[];\n for (const path of changedPaths) {\n const value = values[path];\n setValue(object, path, value);\n }\n },\n [queriedObjects],\n );\n\n if (selectedObjects.length === 0) {\n return (\n <div role='none' className='plb-cardSpacingBlock pli-cardSpacingInline'>\n <Callout.Root classNames='is-full'>\n <Callout.Title>{t('row details no selection label')}</Callout.Title>\n </Callout.Root>\n </div>\n );\n }\n\n return (\n <div role='none' className='bs-full is-full flex flex-col p-2 gap-1 overflow-y-auto'>\n {schema &&\n selectedObjects.map((object) => (\n <div key={object.id} className='border border-separator rounded'>\n <Form\n autoSave\n schema={schema}\n values={object}\n onSave={handleSave}\n onQueryRefOptions={handleRefQueryLookup}\n />\n </div>\n ))}\n </div>\n );\n};\n\nexport default ObjectDetailsPanel;\n"],
|
|
5
|
+
"mappings": ";;;;;;;AAIA,OAAOA,SAASC,mBAAmB;AAEnC,SAAwBC,gBAAgB;AACxC,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB;AAC1B,SAASC,UAAUC,QAAQC,UAAUC,iBAAiB;AACtD,SAASC,SAASC,sBAAsB;AACxC,SAASC,mBAAmB;AAC5B,SAASC,MAAMC,gCAAgC;AAE/C,SAASC,qBAAqB;;AAM9B,IAAMC,qBAAqB,CAAC,EAAEC,UAAUC,KAAI,MAAwB;;;AAClE,UAAM,EAAEC,EAAC,IAAKC,eAAeC,YAAAA;AAC7B,UAAMC,SAASC,UAAAA;AACf,UAAMC,QAAQC,SAASP,IAAAA;AACvB,UAAMQ,SAASC,UAAUL,QAAQE,OAAON,KAAKU,OAAOC,QAAAA;AAEpD,UAAMC,iBAAiBC,SAASP,OAAOE,SAASM,OAAOC,KAAKP,MAAAA,IAAUM,OAAOE,QAAO,CAAA;AACpF,UAAMC,eAAeC,YAAYnB,UAAU,OAAA;AAC3C,UAAMoB,kBAAkBF,aAAaG,IAAI,CAACC,OAAOT,eAAeU,KAAK,CAACC,QAAQA,IAAIF,OAAOA,EAAAA,CAAAA,EAAKG,OAAOC,aAAAA;AAErG,UAAMC,uBAAuBC,yBAAyB;MAAErB;IAAM,CAAA;AAE9D,UAAMsB,aAAaC,YACjB,CAACC,QAAa,EAAEC,QAAO,MAA0C;AAC/D,YAAMV,KAAKS,OAAOT;AAClBW,gBAAU,OAAOX,OAAO,UAAA,QAAA;;;;;;;;;AACxB,YAAMY,SAASrB,eAAeU,KAAK,CAACC,QAAQA,IAAIF,OAAOA,EAAAA;AACvDW,gBAAUC,QAAAA,QAAAA;;;;;;;;;AAEV,YAAMC,eAAeC,OAAOC,KAAKL,OAAAA,EAASP,OAAO,CAACa,SAASN,QAAQM,IAAAA,CAAiB;AACpF,iBAAWA,QAAQH,cAAc;AAC/B,cAAMI,QAAQR,OAAOO,IAAAA;AACrBE,iBAASN,QAAQI,MAAMC,KAAAA;MACzB;IACF,GACA;MAAC1B;KAAe;AAGlB,QAAIO,gBAAgBqB,WAAW,GAAG;AAChC,aACE,sBAAA,cAACC,OAAAA;QAAIC,MAAK;QAAOC,WAAU;SACzB,sBAAA,cAACC,QAAQC,MAAI;QAACC,YAAW;SACvB,sBAAA,cAACF,QAAQG,OAAK,MAAE9C,EAAE,gCAAA,CAAA,CAAA,CAAA;IAI1B;AAEA,WACE,sBAAA,cAACwC,OAAAA;MAAIC,MAAK;MAAOC,WAAU;OACxBnC,UACCW,gBAAgBC,IAAI,CAACa,WACnB,sBAAA,cAACQ,OAAAA;MAAIO,KAAKf,OAAOZ;MAAIsB,WAAU;OAC7B,sBAAA,cAACM,MAAAA;MACCC,UAAAA;MACA1C;MACAsB,QAAQG;MACRkB,QAAQvB;MACRwB,mBAAmB1B;;;;;AAMjC;AAEA,IAAA,6BAAe5B;",
|
|
6
|
+
"names": ["React", "useCallback", "setValue", "invariant", "useClient", "getSpace", "Filter", "useQuery", "useSchema", "Callout", "useTranslation", "useSelected", "Form", "useRefQueryLookupHandler", "isNonNullable", "ObjectDetailsPanel", "objectId", "view", "t", "useTranslation", "SPACE_PLUGIN", "client", "useClient", "space", "getSpace", "schema", "useSchema", "query", "typename", "queriedObjects", "useQuery", "Filter", "type", "nothing", "selectedRows", "useSelected", "selectedObjects", "map", "id", "find", "obj", "filter", "isNonNullable", "handleRefQueryLookup", "useRefQueryLookupHandler", "handleSave", "useCallback", "values", "changed", "invariant", "object", "changedPaths", "Object", "keys", "path", "value", "setValue", "length", "div", "role", "className", "Callout", "Root", "classNames", "Title", "key", "Form", "autoSave", "onSave", "onQueryRefOptions"]
|
|
7
|
+
}
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./chunk-SSLBYZEY.mjs";
|
|
5
5
|
import {
|
|
6
6
|
SpaceCapabilities
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-5T3ZH23B.mjs";
|
|
8
8
|
import {
|
|
9
9
|
SHARED,
|
|
10
10
|
SPACES,
|
|
@@ -12,19 +12,21 @@ import {
|
|
|
12
12
|
constructSpaceActions,
|
|
13
13
|
constructSpaceNode,
|
|
14
14
|
createObjectNode,
|
|
15
|
+
createStaticSchemaActions,
|
|
16
|
+
createStaticSchemaNode,
|
|
15
17
|
rxFromQuery
|
|
16
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-4AOMYKDE.mjs";
|
|
17
19
|
import {
|
|
18
20
|
SPACE_TYPE,
|
|
19
21
|
SpaceAction
|
|
20
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-JH6F4C3I.mjs";
|
|
21
23
|
import {
|
|
22
24
|
SPACE_PLUGIN
|
|
23
25
|
} from "./chunk-HWNG4MEU.mjs";
|
|
24
26
|
|
|
25
27
|
// src/capabilities/app-graph-builder.ts
|
|
26
28
|
import { Rx } from "@effect-rx/rx-react";
|
|
27
|
-
import { Array, Option, pipe } from "effect";
|
|
29
|
+
import { Array, Option, pipe, Schema } from "effect";
|
|
28
30
|
import { Capabilities, contributes, createIntent } from "@dxos/app-framework";
|
|
29
31
|
import { getSpace, SpaceState, isSpace } from "@dxos/client/echo";
|
|
30
32
|
import { Filter, Obj, Query, Type } from "@dxos/echo";
|
|
@@ -69,7 +71,7 @@ var app_graph_builder_default = (context) => {
|
|
|
69
71
|
} else {
|
|
70
72
|
log.warn("spaces order object not found", void 0, {
|
|
71
73
|
F: __dxlog_file,
|
|
72
|
-
L:
|
|
74
|
+
L: 70,
|
|
73
75
|
S: void 0,
|
|
74
76
|
C: (f, a) => f(...a)
|
|
75
77
|
});
|
|
@@ -310,26 +312,140 @@ var app_graph_builder_default = (context) => {
|
|
|
310
312
|
}), Option.getOrElse(() => [])));
|
|
311
313
|
}
|
|
312
314
|
}),
|
|
315
|
+
// Static schema records.
|
|
316
|
+
createExtension({
|
|
317
|
+
id: `${SPACE_PLUGIN}/static-schemas`,
|
|
318
|
+
connector: (node) => {
|
|
319
|
+
const client = context.getCapability(ClientCapabilities.Client);
|
|
320
|
+
return Rx.make((get) => pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(DataType.QueryCollection, node2.data) && node2.data.query.typename === DataType.StoredSchema.typename ? Option.some(node2.data) : Option.none()), Option.flatMap((collection) => {
|
|
321
|
+
const space = getSpace(collection);
|
|
322
|
+
return space?.properties.staticRecords ? Option.some(space) : Option.none();
|
|
323
|
+
}), Option.map((space) => {
|
|
324
|
+
return get(rxFromSignal(() => space.properties.staticRecords ?? [])).map((typename) => client.graph.schemaRegistry.schemas.find((schema) => Type.getTypename(schema) === typename)).filter(isNonNullable).map((schema) => createStaticSchemaNode({
|
|
325
|
+
schema,
|
|
326
|
+
space
|
|
327
|
+
}));
|
|
328
|
+
}), Option.getOrElse(() => [])));
|
|
329
|
+
}
|
|
330
|
+
}),
|
|
331
|
+
// Create static schema actions.
|
|
332
|
+
createExtension({
|
|
333
|
+
id: `${SPACE_PLUGIN}/static-schema-actions`,
|
|
334
|
+
actions: (node) => {
|
|
335
|
+
let query;
|
|
336
|
+
return Rx.make((get) => pipe(get(node), Option.flatMap((node2) => {
|
|
337
|
+
const space = isSpace(node2.properties.space) ? node2.properties.space : void 0;
|
|
338
|
+
return space && Schema.isSchema(node2.data) ? Option.some({
|
|
339
|
+
space,
|
|
340
|
+
schema: node2.data
|
|
341
|
+
}) : Option.none();
|
|
342
|
+
}), Option.map(({ space, schema }) => {
|
|
343
|
+
if (!query) {
|
|
344
|
+
query = space.db.query(Filter.type(DataType.View));
|
|
345
|
+
}
|
|
346
|
+
const views = get(rxFromQuery(query));
|
|
347
|
+
const filteredViews = get(rxFromSignal(() => (
|
|
348
|
+
// TODO(wittjosiah): Remove cast.
|
|
349
|
+
views.filter((view) => view.query.typename === Type.getTypename(schema))
|
|
350
|
+
)));
|
|
351
|
+
const deletable = filteredViews.length === 0;
|
|
352
|
+
return createStaticSchemaActions({
|
|
353
|
+
schema,
|
|
354
|
+
space,
|
|
355
|
+
deletable
|
|
356
|
+
});
|
|
357
|
+
}), Option.getOrElse(() => [])));
|
|
358
|
+
}
|
|
359
|
+
}),
|
|
360
|
+
// Create nodes for schema views.
|
|
361
|
+
createExtension({
|
|
362
|
+
id: `${SPACE_PLUGIN}/schema-views`,
|
|
363
|
+
connector: (node) => {
|
|
364
|
+
let query;
|
|
365
|
+
return Rx.make((get) => pipe(get(node), Option.flatMap((node2) => {
|
|
366
|
+
const space = getSpace(node2.data) ?? (isSpace(node2.properties.space) ? node2.properties.space : void 0);
|
|
367
|
+
return space && (Obj.instanceOf(DataType.StoredSchema, node2.data) || Schema.isSchema(node2.data)) ? Option.some({
|
|
368
|
+
space,
|
|
369
|
+
schema: node2.data
|
|
370
|
+
}) : Option.none();
|
|
371
|
+
}), Option.map(({ space, schema }) => {
|
|
372
|
+
if (!query) {
|
|
373
|
+
query = space.db.query(Filter.type(DataType.View));
|
|
374
|
+
}
|
|
375
|
+
const typename = Schema.isSchema(schema) ? Type.getTypename(schema) : schema.typename;
|
|
376
|
+
return get(rxFromQuery(query)).filter((view) => view.query.typename === typename).map((view) => get(rxFromSignal(() => createObjectNode({
|
|
377
|
+
object: view,
|
|
378
|
+
space,
|
|
379
|
+
resolve,
|
|
380
|
+
droppable: false
|
|
381
|
+
})))).filter(isNonNullable);
|
|
382
|
+
}), Option.getOrElse(() => [])));
|
|
383
|
+
}
|
|
384
|
+
}),
|
|
313
385
|
// Create collection actions and action groups.
|
|
314
386
|
createExtension({
|
|
315
387
|
id: `${SPACE_PLUGIN}/object-actions`,
|
|
316
|
-
actions: (node) =>
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
388
|
+
actions: (node) => {
|
|
389
|
+
let query;
|
|
390
|
+
return Rx.make((get) => pipe(get(node), Option.flatMap((node2) => {
|
|
391
|
+
const space = getSpace(node2.data);
|
|
392
|
+
return space && Obj.isObject(node2.data) ? Option.some({
|
|
393
|
+
space,
|
|
394
|
+
object: node2.data
|
|
395
|
+
}) : Option.none();
|
|
396
|
+
}), Option.flatMap(({ space, object }) => {
|
|
397
|
+
const isSchema = Obj.instanceOf(DataType.StoredSchema, object);
|
|
398
|
+
if (!query && isSchema) {
|
|
399
|
+
query = space.db.query(Filter.type(DataType.View));
|
|
400
|
+
}
|
|
401
|
+
let deletable = !isSchema;
|
|
402
|
+
if (isSchema && query) {
|
|
403
|
+
const views = get(rxFromQuery(query));
|
|
404
|
+
const filteredViews = get(rxFromSignal(() => views.filter((view) => view.query.typename === object.typename)));
|
|
405
|
+
deletable = filteredViews.length === 0;
|
|
406
|
+
}
|
|
407
|
+
const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));
|
|
408
|
+
const [appGraph] = get(context.capabilities(Capabilities.AppGraph));
|
|
409
|
+
const [state] = get(context.capabilities(SpaceCapabilities.State));
|
|
410
|
+
const objectForms = get(context.capabilities(SpaceCapabilities.ObjectForm));
|
|
411
|
+
if (!dispatcher || !appGraph || !state) {
|
|
412
|
+
return Option.none();
|
|
413
|
+
} else {
|
|
414
|
+
return Option.some({
|
|
415
|
+
object,
|
|
416
|
+
graph: appGraph.graph,
|
|
417
|
+
dispatch: dispatcher.dispatchPromise,
|
|
418
|
+
objectForms,
|
|
419
|
+
deletable,
|
|
420
|
+
navigable: get(rxFromSignal(() => state.navigableCollections))
|
|
421
|
+
});
|
|
422
|
+
}
|
|
423
|
+
}), Option.map((params) => constructObjectActions(params)), Option.getOrElse(() => [])));
|
|
424
|
+
}
|
|
425
|
+
}),
|
|
426
|
+
// View selected objects.
|
|
427
|
+
createExtension({
|
|
428
|
+
id: `${SPACE_PLUGIN}/selected-objects`,
|
|
429
|
+
connector: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(DataType.View, node2.data) ? Option.some(node2) : Option.none()), Option.map((node2) => [
|
|
430
|
+
{
|
|
431
|
+
id: [
|
|
432
|
+
node2.id,
|
|
433
|
+
"selected-objects"
|
|
434
|
+
].join(ATTENDABLE_PATH_SEPARATOR),
|
|
435
|
+
type: PLANK_COMPANION_TYPE,
|
|
436
|
+
data: "selected-objects",
|
|
437
|
+
properties: {
|
|
438
|
+
label: [
|
|
439
|
+
"companion selected objects label",
|
|
440
|
+
{
|
|
441
|
+
ns: SPACE_PLUGIN
|
|
442
|
+
}
|
|
443
|
+
],
|
|
444
|
+
icon: "ph--tree-view--regular",
|
|
445
|
+
disposition: "hidden"
|
|
446
|
+
}
|
|
331
447
|
}
|
|
332
|
-
|
|
448
|
+
]), Option.getOrElse(() => [])))
|
|
333
449
|
}),
|
|
334
450
|
// Object settings plank companion.
|
|
335
451
|
createExtension({
|
|
@@ -361,4 +477,4 @@ var app_graph_builder_default = (context) => {
|
|
|
361
477
|
export {
|
|
362
478
|
app_graph_builder_default as default
|
|
363
479
|
};
|
|
364
|
-
//# sourceMappingURL=app-graph-builder-
|
|
480
|
+
//# sourceMappingURL=app-graph-builder-KGIGWC72.mjs.map
|