@dxos/plugin-stack 0.6.8-main.046e6cf

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.
Files changed (65) hide show
  1. package/LICENSE +8 -0
  2. package/README.md +15 -0
  3. package/dist/lib/browser/StackMain-MDOKSAYA.mjs +276 -0
  4. package/dist/lib/browser/StackMain-MDOKSAYA.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-AYDYMPJK.mjs +19 -0
  6. package/dist/lib/browser/chunk-AYDYMPJK.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-R5KXWF2W.mjs +21 -0
  8. package/dist/lib/browser/chunk-R5KXWF2W.mjs.map +7 -0
  9. package/dist/lib/browser/index.mjs +285 -0
  10. package/dist/lib/browser/index.mjs.map +7 -0
  11. package/dist/lib/browser/meta.json +1 -0
  12. package/dist/lib/browser/meta.mjs +11 -0
  13. package/dist/lib/browser/meta.mjs.map +7 -0
  14. package/dist/lib/browser/types/index.mjs +9 -0
  15. package/dist/lib/browser/types/index.mjs.map +7 -0
  16. package/dist/lib/node/StackMain-AXFLSTLI.cjs +295 -0
  17. package/dist/lib/node/StackMain-AXFLSTLI.cjs.map +7 -0
  18. package/dist/lib/node/chunk-EMD6A66G.cjs +44 -0
  19. package/dist/lib/node/chunk-EMD6A66G.cjs.map +7 -0
  20. package/dist/lib/node/chunk-I42JKRXR.cjs +53 -0
  21. package/dist/lib/node/chunk-I42JKRXR.cjs.map +7 -0
  22. package/dist/lib/node/index.cjs +298 -0
  23. package/dist/lib/node/index.cjs.map +7 -0
  24. package/dist/lib/node/meta.cjs +32 -0
  25. package/dist/lib/node/meta.cjs.map +7 -0
  26. package/dist/lib/node/meta.json +1 -0
  27. package/dist/lib/node/types/index.cjs +31 -0
  28. package/dist/lib/node/types/index.cjs.map +7 -0
  29. package/dist/types/src/StackPlugin.d.ts +4 -0
  30. package/dist/types/src/StackPlugin.d.ts.map +1 -0
  31. package/dist/types/src/components/AddSection.d.ts +6 -0
  32. package/dist/types/src/components/AddSection.d.ts.map +1 -0
  33. package/dist/types/src/components/AddSectionDialog.d.ts +14 -0
  34. package/dist/types/src/components/AddSectionDialog.d.ts.map +1 -0
  35. package/dist/types/src/components/StackMain.d.ts +9 -0
  36. package/dist/types/src/components/StackMain.d.ts.map +1 -0
  37. package/dist/types/src/components/StackSettings.d.ts +6 -0
  38. package/dist/types/src/components/StackSettings.d.ts.map +1 -0
  39. package/dist/types/src/components/index.d.ts +8 -0
  40. package/dist/types/src/components/index.d.ts.map +1 -0
  41. package/dist/types/src/index.d.ts +5 -0
  42. package/dist/types/src/index.d.ts.map +1 -0
  43. package/dist/types/src/meta.d.ts +12 -0
  44. package/dist/types/src/meta.d.ts.map +1 -0
  45. package/dist/types/src/translations.d.ts +30 -0
  46. package/dist/types/src/translations.d.ts.map +1 -0
  47. package/dist/types/src/types/index.d.ts +3 -0
  48. package/dist/types/src/types/index.d.ts.map +1 -0
  49. package/dist/types/src/types/stack.d.ts +26 -0
  50. package/dist/types/src/types/stack.d.ts.map +1 -0
  51. package/dist/types/src/types/types.d.ts +34 -0
  52. package/dist/types/src/types/types.d.ts.map +1 -0
  53. package/package.json +91 -0
  54. package/src/StackPlugin.tsx +101 -0
  55. package/src/components/AddSection.tsx +102 -0
  56. package/src/components/AddSectionDialog.tsx +130 -0
  57. package/src/components/StackMain.tsx +216 -0
  58. package/src/components/StackSettings.tsx +23 -0
  59. package/src/components/index.ts +11 -0
  60. package/src/index.ts +11 -0
  61. package/src/meta.tsx +17 -0
  62. package/src/translations.ts +26 -0
  63. package/src/types/index.ts +6 -0
  64. package/src/types/stack.ts +21 -0
  65. package/src/types/types.ts +47 -0
@@ -0,0 +1,295 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var StackMain_AXFLSTLI_exports = {};
30
+ __export(StackMain_AXFLSTLI_exports, {
31
+ default: () => StackMain_default
32
+ });
33
+ module.exports = __toCommonJS(StackMain_AXFLSTLI_exports);
34
+ var import_chunk_I42JKRXR = require("./chunk-I42JKRXR.cjs");
35
+ var import_chunk_EMD6A66G = require("./chunk-EMD6A66G.cjs");
36
+ var import_react = require("@phosphor-icons/react");
37
+ var import_react2 = __toESM(require("react"));
38
+ var import_app_framework = require("@dxos/app-framework");
39
+ var import_echo_schema = require("@dxos/echo-schema");
40
+ var import_plugin_graph = require("@dxos/plugin-graph");
41
+ var import_plugin_space = require("@dxos/plugin-space");
42
+ var import_echo = require("@dxos/react-client/echo");
43
+ var import_react_ui = require("@dxos/react-ui");
44
+ var import_react_ui_mosaic = require("@dxos/react-ui-mosaic");
45
+ var import_react_ui_stack = require("@dxos/react-ui-stack");
46
+ var import_util = require("@dxos/util");
47
+ var import_react_tabster = require("@fluentui/react-tabster");
48
+ var import_react3 = __toESM(require("react"));
49
+ var import_app_framework2 = require("@dxos/app-framework");
50
+ var import_react_ui2 = require("@dxos/react-ui");
51
+ var import_react_ui_theme = require("@dxos/react-ui-theme");
52
+ var CreatorTile = ({ Icon, label, testId, handleAdd }) => {
53
+ const onClick = (0, import_react3.useCallback)((_) => handleAdd(), [
54
+ handleAdd
55
+ ]);
56
+ const onKeyDown = (0, import_react3.useCallback)((event) => {
57
+ if (event.key === "Enter" || event.key === " ") {
58
+ event.preventDefault();
59
+ handleAdd();
60
+ }
61
+ }, [
62
+ handleAdd
63
+ ]);
64
+ return /* @__PURE__ */ import_react3.default.createElement("div", {
65
+ role: "button",
66
+ "aria-label": label,
67
+ tabIndex: 0,
68
+ className: (0, import_react_ui_theme.mx)("flex items-center w-[10rem] h-16 overflow-hidden", "border rounded-md separator-separator shadow-sm hover:surface-hover cursor-pointer"),
69
+ onClick,
70
+ onKeyDown,
71
+ "data-testid": testId
72
+ }, /* @__PURE__ */ import_react3.default.createElement("div", {
73
+ className: "flex h-full w-12 items-center justify-center bg-neutral-800 shrink-0 border-r separator-separator"
74
+ }, /* @__PURE__ */ import_react3.default.createElement(Icon, {
75
+ weight: "thin",
76
+ className: (0, import_react_ui_theme.getSize)(6)
77
+ })), /* @__PURE__ */ import_react3.default.createElement("div", {
78
+ className: "overflow-hidden items-center p-2 px-3"
79
+ }, /* @__PURE__ */ import_react3.default.createElement("span", {
80
+ className: "capitalize"
81
+ }, label)));
82
+ };
83
+ var AddSection = ({ collection }) => {
84
+ const domAttributes = (0, import_react_tabster.useArrowNavigationGroup)({
85
+ axis: "grid"
86
+ });
87
+ const dispatch = (0, import_app_framework2.useIntentDispatcher)();
88
+ const { t } = (0, import_react_ui2.useTranslation)(import_chunk_I42JKRXR.STACK_PLUGIN);
89
+ const stackPlugin = (0, import_app_framework2.usePlugin)(import_chunk_I42JKRXR.STACK_PLUGIN);
90
+ const stackCreators = stackPlugin?.provides?.stack.creators ?? [];
91
+ const handleAdd = (0, import_react3.useCallback)(async (creator) => {
92
+ const { data: section } = await dispatch(creator.intent) ?? {};
93
+ collection.objects = [
94
+ section
95
+ ];
96
+ const stack = collection.views[import_chunk_EMD6A66G.StackViewType.typename];
97
+ if (stack) {
98
+ stack.sections[section.id] = {};
99
+ }
100
+ }, [
101
+ collection,
102
+ dispatch
103
+ ]);
104
+ if (stackCreators.length === 0) {
105
+ return null;
106
+ }
107
+ return /* @__PURE__ */ import_react3.default.createElement("div", {
108
+ ...domAttributes,
109
+ role: "none",
110
+ className: "flex flex-wrap items-center p-8 gap-4"
111
+ }, stackCreators.map((creator) => {
112
+ const { id, type, icon, testId } = creator;
113
+ return /* @__PURE__ */ import_react3.default.createElement(CreatorTile, {
114
+ key: id,
115
+ label: (0, import_react_ui2.toLocalizedString)(type, t),
116
+ testId,
117
+ Icon: icon,
118
+ handleAdd: () => handleAdd(creator)
119
+ });
120
+ }));
121
+ };
122
+ var SectionContent = ({ data }) => {
123
+ return /* @__PURE__ */ import_react2.default.createElement(import_app_framework.Surface, {
124
+ role: "section",
125
+ data: {
126
+ object: data
127
+ },
128
+ limit: 1,
129
+ placeholder: /* @__PURE__ */ import_react2.default.createElement(import_react2.default.Fragment, null)
130
+ });
131
+ };
132
+ var StackMain = ({ collection, separation }) => {
133
+ const dispatch = (0, import_app_framework.useIntentDispatcher)();
134
+ const { graph } = (0, import_plugin_graph.useGraph)();
135
+ const { t } = (0, import_react_ui.useTranslation)(import_chunk_I42JKRXR.STACK_PLUGIN);
136
+ const metadataPlugin = (0, import_app_framework.useResolvePlugin)(import_app_framework.parseMetadataResolverPlugin);
137
+ const defaultStack = (0, import_react2.useMemo)(() => (0, import_echo_schema.create)(import_chunk_EMD6A66G.StackViewType, {
138
+ sections: {}
139
+ }), [
140
+ collection
141
+ ]);
142
+ const stack = collection.views[import_chunk_EMD6A66G.StackViewType.typename] ?? defaultStack;
143
+ const [collapsedSections, setCollapsedSections] = (0, import_react2.useState)({});
144
+ (0, import_react2.useEffect)(() => {
145
+ if (!collection.views[import_chunk_EMD6A66G.StackViewType.typename]) {
146
+ collection.views[import_chunk_EMD6A66G.StackViewType.typename] = stack;
147
+ }
148
+ }, [
149
+ collection,
150
+ stack
151
+ ]);
152
+ const id = `stack-${collection.id}`;
153
+ const items = collection.objects.filter(import_util.nonNullable).map((object) => {
154
+ const metadata = metadataPlugin?.provides.metadata.resolver((0, import_echo_schema.getType)(object)?.objectId ?? "never");
155
+ const view = {
156
+ ...stack.sections[object.id],
157
+ collapsed: collapsedSections[(0, import_echo.fullyQualifiedId)(object)],
158
+ title: object?.title ?? (0, import_react_ui.toLocalizedString)(graph.findNode((0, import_echo.fullyQualifiedId)(object))?.properties.label, t)
159
+ };
160
+ return {
161
+ id: (0, import_echo.fullyQualifiedId)(object),
162
+ object,
163
+ metadata,
164
+ view
165
+ };
166
+ }) ?? [];
167
+ const handleOver = ({ active, over }) => {
168
+ if (active.type !== import_chunk_I42JKRXR.SECTION_IDENTIFIER) {
169
+ return "reject";
170
+ }
171
+ if (import_react_ui_mosaic.Path.parent(active.path) === import_react_ui_mosaic.Path.parent(over.path)) {
172
+ return "rearrange";
173
+ }
174
+ const parseData = metadataPlugin?.provides.metadata.resolver(active.type)?.parse;
175
+ const data = parseData ? parseData(active.item, "object") : active.item;
176
+ if (!(0, import_echo_schema.isReactiveObject)(data)) {
177
+ return "reject";
178
+ }
179
+ const exists = items.findIndex(({ id: id2 }) => id2 === active.item.id) >= 0;
180
+ if (!exists) {
181
+ return "transfer";
182
+ } else {
183
+ return "reject";
184
+ }
185
+ };
186
+ const handleDrop = ({ operation, active, over }) => {
187
+ if ((active.path === import_react_ui_mosaic.Path.create(id, active.item.id) || active.path === id) && (operation !== "copy" || over.path === import_react_ui_mosaic.Path.create(id, over.item.id) || over.path === id)) {
188
+ collection.objects.splice(active.position, 1);
189
+ delete stack.sections[active.item.id];
190
+ }
191
+ const parseData = metadataPlugin?.provides.metadata.resolver(active.type)?.parse;
192
+ const object = parseData?.(active.item, "object");
193
+ if (object && over.path === import_react_ui_mosaic.Path.create(id, over.item.id)) {
194
+ collection.objects.splice(over.position, 0, object);
195
+ } else if (object && over.path === id) {
196
+ collection.objects.push(object);
197
+ }
198
+ if (!stack.sections[object.id]) {
199
+ stack.sections[object.id] = {};
200
+ }
201
+ };
202
+ const handleDelete = async (path) => {
203
+ const index = collection.objects.filter(import_util.nonNullable).findIndex((section) => (0, import_echo.fullyQualifiedId)(section) === import_react_ui_mosaic.Path.last(path));
204
+ if (index >= 0) {
205
+ await dispatch({
206
+ action: import_plugin_space.SpaceAction.REMOVE_OBJECT,
207
+ data: {
208
+ object: collection.objects[index],
209
+ collection
210
+ }
211
+ });
212
+ }
213
+ };
214
+ const handleNavigate = async (object) => {
215
+ const toId = (0, import_echo.fullyQualifiedId)(object);
216
+ await dispatch([
217
+ {
218
+ action: import_app_framework.NavigationAction.OPEN,
219
+ data: {
220
+ activeParts: {
221
+ main: [
222
+ toId
223
+ ]
224
+ }
225
+ }
226
+ },
227
+ {
228
+ action: import_app_framework.LayoutAction.SCROLL_INTO_VIEW,
229
+ data: {
230
+ id: toId
231
+ }
232
+ }
233
+ ]);
234
+ };
235
+ const handleAddSection = (path, position) => {
236
+ void dispatch?.({
237
+ action: import_app_framework.LayoutAction.SET_LAYOUT,
238
+ data: {
239
+ element: "dialog",
240
+ component: `${import_chunk_I42JKRXR.STACK_PLUGIN}/AddSectionDialog`,
241
+ subject: {
242
+ path,
243
+ position,
244
+ collection
245
+ }
246
+ }
247
+ });
248
+ };
249
+ const handleCollapseSection = (id2, collapsed) => {
250
+ setCollapsedSections((prev) => ({
251
+ ...prev,
252
+ [id2]: collapsed
253
+ }));
254
+ };
255
+ return /* @__PURE__ */ import_react2.default.createElement(import_react2.default.Fragment, null, /* @__PURE__ */ import_react2.default.createElement(import_react_ui_stack.Stack, {
256
+ id,
257
+ "data-testid": "main.stack",
258
+ SectionContent,
259
+ type: import_chunk_I42JKRXR.SECTION_IDENTIFIER,
260
+ items,
261
+ separation,
262
+ emptyComponent: /* @__PURE__ */ import_react2.default.createElement("span", {
263
+ "data-testid": "stack.empty"
264
+ }),
265
+ onDrop: handleDrop,
266
+ onOver: handleOver,
267
+ onDeleteSection: handleDelete,
268
+ onNavigateToSection: handleNavigate,
269
+ onAddSection: handleAddSection,
270
+ onCollapseSection: handleCollapseSection
271
+ }), items.length === 0 ? /* @__PURE__ */ import_react2.default.createElement(AddSection, {
272
+ collection
273
+ }) : /* @__PURE__ */ import_react2.default.createElement("div", {
274
+ role: "none",
275
+ className: "flex mlb-2 pli-2 justify-center"
276
+ }, /* @__PURE__ */ import_react2.default.createElement(import_react_ui.Button, {
277
+ "data-testid": "stack.createSection",
278
+ classNames: "gap-2",
279
+ onClick: () => dispatch?.({
280
+ action: import_app_framework.LayoutAction.SET_LAYOUT,
281
+ data: {
282
+ element: "dialog",
283
+ component: "dxos.org/plugin/stack/AddSectionDialog",
284
+ subject: {
285
+ position: "afterAll",
286
+ collection
287
+ }
288
+ }
289
+ })
290
+ }, /* @__PURE__ */ import_react2.default.createElement(import_react.Plus, null), /* @__PURE__ */ import_react2.default.createElement("span", {
291
+ className: "sr-only"
292
+ }, t("add section label")))));
293
+ };
294
+ var StackMain_default = StackMain;
295
+ //# sourceMappingURL=StackMain-AXFLSTLI.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/StackMain.tsx", "../../../src/components/AddSection.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Plus } from '@phosphor-icons/react';\nimport React, { useEffect, useMemo, useState } from 'react';\n\nimport {\n LayoutAction,\n NavigationAction,\n parseMetadataResolverPlugin,\n Surface,\n useIntentDispatcher,\n useResolvePlugin,\n} from '@dxos/app-framework';\nimport { create, getType, isReactiveObject } from '@dxos/echo-schema';\nimport { useGraph } from '@dxos/plugin-graph';\nimport { SpaceAction } from '@dxos/plugin-space';\nimport { type CollectionType } from '@dxos/plugin-space/types';\nimport { fullyQualifiedId } from '@dxos/react-client/echo';\nimport { Button, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { type MosaicDataItem, type MosaicDropEvent, type MosaicMoveEvent, Path } from '@dxos/react-ui-mosaic';\nimport {\n type AddSectionPosition,\n type CollapsedSections,\n Stack,\n type StackProps,\n type StackSectionItem,\n} from '@dxos/react-ui-stack';\nimport { nonNullable } from '@dxos/util';\n\nimport { AddSection } from './AddSection';\nimport { SECTION_IDENTIFIER, STACK_PLUGIN } from '../meta';\nimport { StackViewType } from '../types';\n\nconst SectionContent: StackProps['SectionContent'] = ({ data }) => {\n // TODO(wittjosiah): Better section placeholder.\n return <Surface role='section' data={{ object: data }} limit={1} placeholder={<></>} />;\n};\n\ntype StackMainProps = {\n collection: CollectionType;\n separation?: boolean;\n};\n\nconst StackMain = ({ collection, separation }: StackMainProps) => {\n const dispatch = useIntentDispatcher();\n const { graph } = useGraph();\n const { t } = useTranslation(STACK_PLUGIN);\n const metadataPlugin = useResolvePlugin(parseMetadataResolverPlugin);\n const defaultStack = useMemo(() => create(StackViewType, { sections: {} }), [collection]);\n const stack = (collection.views[StackViewType.typename] as StackViewType) ?? defaultStack;\n const [collapsedSections, setCollapsedSections] = useState<CollapsedSections>({});\n\n useEffect(() => {\n if (!collection.views[StackViewType.typename]) {\n collection.views[StackViewType.typename] = stack;\n }\n }, [collection, stack]);\n\n const id = `stack-${collection.id}`;\n const items =\n collection.objects\n // TODO(wittjosiah): Should the database handle this differently?\n // TODO(wittjosiah): Render placeholders for missing objects so they can be removed from the stack?\n .filter(nonNullable)\n .map((object) => {\n const metadata = metadataPlugin?.provides.metadata.resolver(\n getType(object)?.objectId ?? 'never',\n ) as StackSectionItem['metadata'];\n const view = {\n ...stack.sections[object.id],\n collapsed: collapsedSections[fullyQualifiedId(object)],\n title:\n (object as any)?.title ?? toLocalizedString(graph.findNode(fullyQualifiedId(object))?.properties.label, t),\n } as StackSectionItem['view'];\n return { id: fullyQualifiedId(object), object, metadata, view };\n }) ?? [];\n\n const handleOver = ({ active, over }: MosaicMoveEvent<number>) => {\n // TODO(thure): Eventually Stack should handle foreign draggables.\n if (active.type !== SECTION_IDENTIFIER) {\n return 'reject';\n }\n if (Path.parent(active.path) === Path.parent(over.path)) {\n return 'rearrange';\n }\n\n const parseData = metadataPlugin?.provides.metadata.resolver(active.type)?.parse;\n const data = parseData ? parseData(active.item, 'object') : active.item;\n\n // TODO(wittjosiah): Prevent dropping items which don't have a section renderer?\n // Perhaps stack plugin should just provide a fallback section renderer.\n if (!isReactiveObject(data)) {\n return 'reject';\n }\n\n const exists = items.findIndex(({ id }) => id === active.item.id) >= 0;\n if (!exists) {\n return 'transfer';\n } else {\n return 'reject';\n }\n };\n\n const handleDrop = ({ operation, active, over }: MosaicDropEvent<number>) => {\n if (\n (active.path === Path.create(id, active.item.id) || active.path === id) &&\n (operation !== 'copy' || over.path === Path.create(id, over.item.id) || over.path === id)\n ) {\n collection.objects.splice(active.position!, 1);\n delete stack.sections[active.item.id];\n }\n\n const parseData = metadataPlugin?.provides.metadata.resolver(active.type)?.parse;\n const object = parseData?.(active.item, 'object');\n if (object && over.path === Path.create(id, over.item.id)) {\n collection.objects.splice(over.position!, 0, object);\n } else if (object && over.path === id) {\n collection.objects.push(object);\n }\n\n if (!stack.sections[object.id]) {\n stack.sections[object.id] = {};\n }\n };\n\n const handleDelete = async (path: string) => {\n const index = collection.objects\n .filter(nonNullable)\n .findIndex((section) => fullyQualifiedId(section) === Path.last(path));\n if (index >= 0) {\n await dispatch({\n action: SpaceAction.REMOVE_OBJECT,\n data: { object: collection.objects[index], collection },\n });\n\n // TODO(wittjosiah): The section should also be removed, but needs to be restored if the action is undone.\n // delete stack.sections[Path.last(path)];\n }\n };\n\n // TODO(wittjosiah): Factor out.\n\n const handleNavigate = async (object: MosaicDataItem) => {\n const toId = fullyQualifiedId(object);\n await dispatch([\n {\n action: NavigationAction.OPEN,\n data: { activeParts: { main: [toId] } },\n },\n { action: LayoutAction.SCROLL_INTO_VIEW, data: { id: toId } },\n ]);\n };\n\n const handleAddSection = (path: string, position: AddSectionPosition) => {\n void dispatch?.({\n action: LayoutAction.SET_LAYOUT,\n data: {\n element: 'dialog',\n component: `${STACK_PLUGIN}/AddSectionDialog`,\n subject: { path, position, collection },\n },\n });\n };\n\n const handleCollapseSection = (id: string, collapsed: boolean) => {\n setCollapsedSections((prev) => ({ ...prev, [id]: collapsed }));\n };\n\n return (\n <>\n <Stack\n id={id}\n data-testid='main.stack'\n SectionContent={SectionContent}\n type={SECTION_IDENTIFIER}\n items={items}\n separation={separation}\n emptyComponent={<span data-testid='stack.empty'></span>}\n onDrop={handleDrop}\n onOver={handleOver}\n onDeleteSection={handleDelete}\n onNavigateToSection={handleNavigate}\n onAddSection={handleAddSection}\n onCollapseSection={handleCollapseSection}\n />\n\n {items.length === 0 ? (\n <AddSection collection={collection} />\n ) : (\n <div role='none' className='flex mlb-2 pli-2 justify-center'>\n <Button\n data-testid='stack.createSection'\n classNames='gap-2'\n onClick={() =>\n dispatch?.({\n action: LayoutAction.SET_LAYOUT,\n data: {\n element: 'dialog',\n component: 'dxos.org/plugin/stack/AddSectionDialog',\n subject: { position: 'afterAll', collection },\n },\n })\n }\n >\n <Plus />\n <span className='sr-only'>{t('add section label')}</span>\n </Button>\n </div>\n )}\n </>\n );\n};\n\nexport default StackMain;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport { type IconProps } from '@phosphor-icons/react';\nimport React, { type FC, type KeyboardEvent, type MouseEvent, useCallback } from 'react';\n\nimport { usePlugin, useIntentDispatcher } from '@dxos/app-framework';\nimport { type CollectionType } from '@dxos/plugin-space/types';\nimport { toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { getSize, mx } from '@dxos/react-ui-theme';\n\nimport { STACK_PLUGIN } from '../meta';\nimport { StackViewType, type StackSectionCreator, type StackPluginProvides } from '../types';\n\nconst CreatorTile = ({\n Icon,\n label,\n testId,\n handleAdd,\n}: {\n Icon: FC<IconProps>;\n testId: string;\n label: string;\n handleAdd: () => void;\n}) => {\n const onClick = useCallback((_: MouseEvent<HTMLDivElement>) => handleAdd(), [handleAdd]);\n const onKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n handleAdd();\n }\n },\n [handleAdd],\n );\n\n return (\n <div\n role='button'\n aria-label={label}\n tabIndex={0}\n className={mx(\n 'flex items-center w-[10rem] h-16 overflow-hidden',\n 'border rounded-md separator-separator shadow-sm hover:surface-hover cursor-pointer',\n )}\n onClick={onClick}\n onKeyDown={onKeyDown}\n data-testid={testId}\n >\n <div className='flex h-full w-12 items-center justify-center bg-neutral-800 shrink-0 border-r separator-separator'>\n <Icon weight='thin' className={getSize(6)} />\n </div>\n <div className='overflow-hidden items-center p-2 px-3'>\n <span className='capitalize'>{label}</span>\n </div>\n </div>\n );\n};\n\nexport const AddSection = ({ collection }: { collection: CollectionType }) => {\n const domAttributes = useArrowNavigationGroup({ axis: 'grid' });\n const dispatch = useIntentDispatcher();\n const { t } = useTranslation(STACK_PLUGIN);\n\n const stackPlugin = usePlugin<StackPluginProvides>(STACK_PLUGIN);\n const stackCreators = stackPlugin?.provides?.stack.creators ?? [];\n\n const handleAdd = useCallback(\n async (creator: StackSectionCreator) => {\n const { data: section } = (await dispatch(creator.intent)) ?? {};\n collection.objects = [section];\n const stack = collection.views[StackViewType.typename];\n if (stack) {\n stack.sections[section.id] = {};\n }\n },\n [collection, dispatch],\n );\n\n if (stackCreators.length === 0) {\n return null;\n }\n\n return (\n <div {...domAttributes} role='none' className='flex flex-wrap items-center p-8 gap-4'>\n {stackCreators.map((creator) => {\n const { id, type, icon, testId } = creator;\n return (\n <CreatorTile\n key={id}\n label={toLocalizedString(type, t)}\n testId={testId}\n Icon={icon}\n handleAdd={() => handleAdd(creator)}\n />\n );\n })}\n </div>\n );\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["import_react", "import_app_framework", "import_react_ui", "CreatorTile", "Icon", "label", "testId", "handleAdd", "onClick", "useCallback", "_", "onKeyDown", "event", "key", "preventDefault", "React", "div", "role", "aria-label", "tabIndex", "className", "mx", "data-testid", "weight", "getSize", "span", "AddSection", "collection", "domAttributes", "useArrowNavigationGroup", "axis", "dispatch", "useIntentDispatcher", "t", "useTranslation", "STACK_PLUGIN", "stackPlugin", "usePlugin", "stackCreators", "provides", "stack", "creators", "creator", "data", "section", "intent", "objects", "views", "StackViewType", "typename", "sections", "id", "length", "map", "type", "icon", "toLocalizedString", "SectionContent", "Surface", "object", "limit", "placeholder", "StackMain", "separation", "graph", "useGraph", "metadataPlugin", "useResolvePlugin", "parseMetadataResolverPlugin", "defaultStack", "useMemo", "create", "collapsedSections", "setCollapsedSections", "useState", "useEffect", "items", "filter", "nonNullable", "metadata", "resolver", "getType", "objectId", "view", "collapsed", "fullyQualifiedId", "title", "findNode", "properties", "handleOver", "active", "over", "SECTION_IDENTIFIER", "Path", "parent", "path", "parseData", "parse", "item", "isReactiveObject", "exists", "findIndex", "handleDrop", "operation", "splice", "position", "push", "handleDelete", "index", "last", "action", "SpaceAction", "REMOVE_OBJECT", "handleNavigate", "toId", "NavigationAction", "OPEN", "activeParts", "main", "LayoutAction", "SCROLL_INTO_VIEW", "handleAddSection", "SET_LAYOUT", "element", "component", "subject", "handleCollapseSection", "prev", "Stack", "emptyComponent", "onDrop", "onOver", "onDeleteSection", "onNavigateToSection", "onAddSection", "onCollapseSection", "Button", "classNames", "Plus"]
7
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var chunk_EMD6A66G_exports = {};
20
+ __export(chunk_EMD6A66G_exports, {
21
+ SectionSchema: () => SectionSchema,
22
+ StackViewType: () => StackViewType
23
+ });
24
+ module.exports = __toCommonJS(chunk_EMD6A66G_exports);
25
+ var import_echo_schema = require("@dxos/echo-schema");
26
+ var SectionSchema = import_echo_schema.S.Struct({
27
+ height: import_echo_schema.S.optional(import_echo_schema.S.Number),
28
+ // Space for data that isn't stack-specific but is specific to this view instance.
29
+ // e.g. cover/fill for an image
30
+ custom: import_echo_schema.S.optional(import_echo_schema.S.Record(import_echo_schema.S.String, import_echo_schema.S.Any))
31
+ });
32
+ var StackViewType = class extends (0, import_echo_schema.TypedObject)({
33
+ typename: "dxos.org/type/StackView",
34
+ version: "0.1.0"
35
+ })({
36
+ sections: import_echo_schema.S.mutable(import_echo_schema.S.Record(import_echo_schema.S.String, SectionSchema))
37
+ }) {
38
+ };
39
+ // Annotate the CommonJS export names for ESM import in node:
40
+ 0 && (module.exports = {
41
+ SectionSchema,
42
+ StackViewType
43
+ });
44
+ //# sourceMappingURL=chunk-EMD6A66G.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/types/stack.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { S, TypedObject } from '@dxos/echo-schema';\n\n// All section metadata needs to be optional/have defaults.\n// Any objects added to the collection will start with the section defaults.\n// If an object is removed from the collection without removing the section metadata this is fine.\n// Stack component should cleanup the superfluous data on future edits.\n\nexport const SectionSchema = S.Struct({\n height: S.optional(S.Number),\n // Space for data that isn't stack-specific but is specific to this view instance.\n // e.g. cover/fill for an image\n custom: S.optional(S.Record(S.String, S.Any)),\n});\n\nexport class StackViewType extends TypedObject({ typename: 'dxos.org/type/StackView', version: '0.1.0' })({\n sections: S.mutable(S.Record(S.String, SectionSchema)),\n}) {}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAIA,yBAA+B;AAOxB,IAAMA,gBAAgBC,qBAAEC,OAAO;EACpCC,QAAQF,qBAAEG,SAASH,qBAAEI,MAAM;;;EAG3BC,QAAQL,qBAAEG,SAASH,qBAAEM,OAAON,qBAAEO,QAAQP,qBAAEQ,GAAG,CAAA;AAC7C,CAAA;AAEO,IAAMC,gBAAN,kBAA4BC,gCAAY;EAAEC,UAAU;EAA2BC,SAAS;AAAQ,CAAA,EAAG;EACxGC,UAAUb,qBAAEc,QAAQd,qBAAEM,OAAON,qBAAEO,QAAQR,aAAAA,CAAAA;AACzC,CAAA,EAAA;AAAI;",
6
+ "names": ["SectionSchema", "S", "Struct", "height", "optional", "Number", "custom", "Record", "String", "Any", "StackViewType", "TypedObject", "typename", "version", "sections", "mutable"]
7
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var chunk_I42JKRXR_exports = {};
30
+ __export(chunk_I42JKRXR_exports, {
31
+ SECTION_IDENTIFIER: () => SECTION_IDENTIFIER,
32
+ STACK_PLUGIN: () => STACK_PLUGIN,
33
+ meta_default: () => meta_default
34
+ });
35
+ module.exports = __toCommonJS(chunk_I42JKRXR_exports);
36
+ var import_react = require("@phosphor-icons/react");
37
+ var import_react2 = __toESM(require("react"));
38
+ var STACK_PLUGIN = "dxos.org/plugin/stack";
39
+ var SECTION_IDENTIFIER = "dxos.org/type/StackSection";
40
+ var meta_default = {
41
+ id: STACK_PLUGIN,
42
+ // TODO(wittjosiah): Prevents "stacks" language from being exposed to users in settings panel.
43
+ name: "Collections",
44
+ iconComponent: (props) => /* @__PURE__ */ import_react2.default.createElement(import_react.StackSimple, props),
45
+ iconSymbol: "ph--stack-simple--regular"
46
+ };
47
+ // Annotate the CommonJS export names for ESM import in node:
48
+ 0 && (module.exports = {
49
+ SECTION_IDENTIFIER,
50
+ STACK_PLUGIN,
51
+ meta_default
52
+ });
53
+ //# sourceMappingURL=chunk-I42JKRXR.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/meta.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type IconProps, StackSimple } from '@phosphor-icons/react';\nimport React from 'react';\n\nexport const STACK_PLUGIN = 'dxos.org/plugin/stack';\nexport const SECTION_IDENTIFIER = 'dxos.org/type/StackSection';\n\nexport default {\n id: STACK_PLUGIN,\n // TODO(wittjosiah): Prevents \"stacks\" language from being exposed to users in settings panel.\n name: 'Collections',\n iconComponent: (props: IconProps) => <StackSimple {...props} />,\n iconSymbol: 'ph--stack-simple--regular',\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAA4C;AAC5C,IAAAA,gBAAkB;AAEX,IAAMC,eAAe;AACrB,IAAMC,qBAAqB;AAElC,IAAA,eAAe;EACbC,IAAIF;;EAEJG,MAAM;EACNC,eAAe,CAACC,UAAqB,8BAAAC,QAAA,cAACC,0BAAgBF,KAAAA;EACtDG,YAAY;AACd;",
6
+ "names": ["import_react", "STACK_PLUGIN", "SECTION_IDENTIFIER", "id", "name", "iconComponent", "props", "React", "StackSimple", "iconSymbol"]
7
+ }