@dxos/plugin-stack 0.6.11 → 0.6.12-main.568932b
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/{StackMain-XRQRNZ4I.mjs → StackMain-S6IHUCHE.mjs} +10 -8
- package/dist/lib/browser/StackMain-S6IHUCHE.mjs.map +7 -0
- package/dist/lib/browser/{chunk-R5KXWF2W.mjs → chunk-BA6WV7BZ.mjs} +9 -3
- package/dist/lib/browser/{chunk-R5KXWF2W.mjs.map → chunk-BA6WV7BZ.mjs.map} +3 -3
- package/dist/lib/browser/{chunk-AYDYMPJK.mjs → chunk-H4O4KKLZ.mjs} +2 -5
- package/dist/lib/browser/chunk-H4O4KKLZ.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +8 -6
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/meta.mjs +1 -1
- package/dist/lib/browser/types/index.mjs +1 -1
- package/dist/lib/node/{StackMain-XJGYFDDN.cjs → StackMain-VMUL2GWO.cjs} +23 -21
- package/dist/lib/node/StackMain-VMUL2GWO.cjs.map +7 -0
- package/dist/lib/node/{chunk-EMD6A66G.cjs → chunk-ACPGRTG3.cjs} +12 -6
- package/dist/lib/node/{chunk-EMD6A66G.cjs.map → chunk-ACPGRTG3.cjs.map} +3 -3
- package/dist/lib/node/{chunk-I42JKRXR.cjs → chunk-PGL7XDNJ.cjs} +5 -18
- package/dist/lib/node/chunk-PGL7XDNJ.cjs.map +7 -0
- package/dist/lib/node/index.cjs +51 -49
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.cjs +4 -4
- package/dist/lib/node/meta.cjs.map +1 -1
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/types/index.cjs +3 -3
- package/dist/lib/node/types/index.cjs.map +1 -1
- package/dist/lib/node-esm/StackMain-N3JKHRYY.mjs +279 -0
- package/dist/lib/node-esm/StackMain-N3JKHRYY.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-DIM4KTS3.mjs +29 -0
- package/dist/lib/node-esm/chunk-DIM4KTS3.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-T42IEBEL.mjs +18 -0
- package/dist/lib/node-esm/chunk-T42IEBEL.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +288 -0
- package/dist/lib/node-esm/index.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -0
- package/dist/lib/node-esm/meta.mjs +12 -0
- package/dist/lib/node-esm/meta.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +10 -0
- package/dist/lib/node-esm/types/index.mjs.map +7 -0
- package/dist/types/src/StackPlugin.d.ts.map +1 -1
- package/dist/types/src/components/StackMain.d.ts +2 -1
- package/dist/types/src/components/StackMain.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +2 -1
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +1 -4
- package/dist/types/src/meta.d.ts.map +1 -1
- package/package.json +33 -29
- package/src/StackPlugin.tsx +16 -7
- package/src/components/StackMain.tsx +48 -44
- package/src/meta.tsx +1 -5
- package/src/types/stack.ts +2 -2
- package/dist/lib/browser/StackMain-XRQRNZ4I.mjs.map +0 -7
- package/dist/lib/browser/chunk-AYDYMPJK.mjs.map +0 -7
- package/dist/lib/node/StackMain-XJGYFDDN.cjs.map +0 -7
- package/dist/lib/node/chunk-I42JKRXR.cjs.map +0 -7
|
@@ -26,13 +26,13 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
26
26
|
mod
|
|
27
27
|
));
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var
|
|
30
|
-
__export(
|
|
29
|
+
var StackMain_VMUL2GWO_exports = {};
|
|
30
|
+
__export(StackMain_VMUL2GWO_exports, {
|
|
31
31
|
default: () => StackMain_default
|
|
32
32
|
});
|
|
33
|
-
module.exports = __toCommonJS(
|
|
34
|
-
var
|
|
35
|
-
var
|
|
33
|
+
module.exports = __toCommonJS(StackMain_VMUL2GWO_exports);
|
|
34
|
+
var import_chunk_PGL7XDNJ = require("./chunk-PGL7XDNJ.cjs");
|
|
35
|
+
var import_chunk_ACPGRTG3 = require("./chunk-ACPGRTG3.cjs");
|
|
36
36
|
var import_react = require("@phosphor-icons/react");
|
|
37
37
|
var import_react2 = __toESM(require("react"));
|
|
38
38
|
var import_app_framework = require("@dxos/app-framework");
|
|
@@ -41,6 +41,7 @@ var import_plugin_graph = require("@dxos/plugin-graph");
|
|
|
41
41
|
var import_plugin_space = require("@dxos/plugin-space");
|
|
42
42
|
var import_echo = require("@dxos/react-client/echo");
|
|
43
43
|
var import_react_ui = require("@dxos/react-ui");
|
|
44
|
+
var import_react_ui_attention = require("@dxos/react-ui-attention");
|
|
44
45
|
var import_react_ui_mosaic = require("@dxos/react-ui-mosaic");
|
|
45
46
|
var import_react_ui_stack = require("@dxos/react-ui-stack");
|
|
46
47
|
var import_util = require("@dxos/util");
|
|
@@ -85,15 +86,15 @@ var AddSection = ({ collection }) => {
|
|
|
85
86
|
axis: "grid"
|
|
86
87
|
});
|
|
87
88
|
const dispatch = (0, import_app_framework2.useIntentDispatcher)();
|
|
88
|
-
const { t } = (0, import_react_ui2.useTranslation)(
|
|
89
|
-
const stackPlugin = (0, import_app_framework2.usePlugin)(
|
|
89
|
+
const { t } = (0, import_react_ui2.useTranslation)(import_chunk_PGL7XDNJ.STACK_PLUGIN);
|
|
90
|
+
const stackPlugin = (0, import_app_framework2.usePlugin)(import_chunk_PGL7XDNJ.STACK_PLUGIN);
|
|
90
91
|
const stackCreators = stackPlugin?.provides?.stack.creators ?? [];
|
|
91
92
|
const handleAdd = (0, import_react3.useCallback)(async (creator) => {
|
|
92
93
|
const { data: section } = await dispatch(creator.intent) ?? {};
|
|
93
94
|
collection.objects = [
|
|
94
95
|
section
|
|
95
96
|
];
|
|
96
|
-
const stack = collection.views[
|
|
97
|
+
const stack = collection.views[import_chunk_ACPGRTG3.StackViewType.typename];
|
|
97
98
|
if (stack) {
|
|
98
99
|
stack.sections[section.id] = {};
|
|
99
100
|
}
|
|
@@ -129,27 +130,26 @@ var SectionContent = ({ data }) => {
|
|
|
129
130
|
placeholder: /* @__PURE__ */ import_react2.default.createElement(import_react2.default.Fragment, null)
|
|
130
131
|
});
|
|
131
132
|
};
|
|
132
|
-
var StackMain = ({ collection, separation }) => {
|
|
133
|
+
var StackMain = ({ id, collection, separation }) => {
|
|
133
134
|
const dispatch = (0, import_app_framework.useIntentDispatcher)();
|
|
134
135
|
const { graph } = (0, import_plugin_graph.useGraph)();
|
|
135
|
-
const { t } = (0, import_react_ui.useTranslation)(
|
|
136
|
+
const { t } = (0, import_react_ui.useTranslation)(import_chunk_PGL7XDNJ.STACK_PLUGIN);
|
|
136
137
|
const metadataPlugin = (0, import_app_framework.useResolvePlugin)(import_app_framework.parseMetadataResolverPlugin);
|
|
137
|
-
const defaultStack = (0, import_react2.useMemo)(() => (0, import_echo_schema.create)(
|
|
138
|
+
const defaultStack = (0, import_react2.useMemo)(() => (0, import_echo_schema.create)(import_chunk_ACPGRTG3.StackViewType, {
|
|
138
139
|
sections: {}
|
|
139
140
|
}), [
|
|
140
141
|
collection
|
|
141
142
|
]);
|
|
142
|
-
const stack = collection.views[
|
|
143
|
+
const stack = collection.views[import_chunk_ACPGRTG3.StackViewType.typename] ?? defaultStack;
|
|
143
144
|
const [collapsedSections, setCollapsedSections] = (0, import_react2.useState)({});
|
|
144
145
|
(0, import_react2.useEffect)(() => {
|
|
145
|
-
if (!collection.views[
|
|
146
|
-
collection.views[
|
|
146
|
+
if (!collection.views[import_chunk_ACPGRTG3.StackViewType.typename]) {
|
|
147
|
+
collection.views[import_chunk_ACPGRTG3.StackViewType.typename] = stack;
|
|
147
148
|
}
|
|
148
149
|
}, [
|
|
149
150
|
collection,
|
|
150
151
|
stack
|
|
151
152
|
]);
|
|
152
|
-
const id = `stack-${collection.id}`;
|
|
153
153
|
const items = collection.objects.filter(import_util.nonNullable).map((object) => {
|
|
154
154
|
const metadata = metadataPlugin?.provides.metadata.resolver((0, import_echo_schema.getType)(object)?.objectId ?? "never");
|
|
155
155
|
const view = {
|
|
@@ -165,7 +165,7 @@ var StackMain = ({ collection, separation }) => {
|
|
|
165
165
|
};
|
|
166
166
|
}) ?? [];
|
|
167
167
|
const handleOver = ({ active, over }) => {
|
|
168
|
-
if (active.type !==
|
|
168
|
+
if (active.type !== import_chunk_PGL7XDNJ.SECTION_IDENTIFIER) {
|
|
169
169
|
return "reject";
|
|
170
170
|
}
|
|
171
171
|
if (import_react_ui_mosaic.Path.parent(active.path) === import_react_ui_mosaic.Path.parent(over.path)) {
|
|
@@ -237,7 +237,7 @@ var StackMain = ({ collection, separation }) => {
|
|
|
237
237
|
action: import_app_framework.LayoutAction.SET_LAYOUT,
|
|
238
238
|
data: {
|
|
239
239
|
element: "dialog",
|
|
240
|
-
component: `${
|
|
240
|
+
component: `${import_chunk_PGL7XDNJ.STACK_PLUGIN}/AddSectionDialog`,
|
|
241
241
|
subject: {
|
|
242
242
|
path,
|
|
243
243
|
position,
|
|
@@ -252,11 +252,13 @@ var StackMain = ({ collection, separation }) => {
|
|
|
252
252
|
[id2]: collapsed
|
|
253
253
|
}));
|
|
254
254
|
};
|
|
255
|
-
return /* @__PURE__ */ import_react2.default.createElement(
|
|
255
|
+
return /* @__PURE__ */ import_react2.default.createElement(import_react_ui_attention.AttentionProvider, {
|
|
256
|
+
id
|
|
257
|
+
}, /* @__PURE__ */ import_react2.default.createElement(import_react_ui_mosaic.Mosaic.Root, null, /* @__PURE__ */ import_react2.default.createElement(import_react_ui_mosaic.Mosaic.DragOverlay, null), /* @__PURE__ */ import_react2.default.createElement(import_react_ui_stack.Stack, {
|
|
256
258
|
id,
|
|
257
259
|
"data-testid": "main.stack",
|
|
258
260
|
SectionContent,
|
|
259
|
-
type:
|
|
261
|
+
type: import_chunk_PGL7XDNJ.SECTION_IDENTIFIER,
|
|
260
262
|
items,
|
|
261
263
|
separation,
|
|
262
264
|
emptyComponent: /* @__PURE__ */ import_react2.default.createElement("span", {
|
|
@@ -289,7 +291,7 @@ var StackMain = ({ collection, separation }) => {
|
|
|
289
291
|
})
|
|
290
292
|
}, /* @__PURE__ */ import_react2.default.createElement(import_react.Plus, null), /* @__PURE__ */ import_react2.default.createElement("span", {
|
|
291
293
|
className: "sr-only"
|
|
292
|
-
}, t("add section label")))));
|
|
294
|
+
}, t("add section label"))))));
|
|
293
295
|
};
|
|
294
296
|
var StackMain_default = StackMain;
|
|
295
|
-
//# sourceMappingURL=StackMain-
|
|
297
|
+
//# sourceMappingURL=StackMain-VMUL2GWO.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 { AttentionProvider } from '@dxos/react-ui-attention';\nimport { type MosaicDataItem, type MosaicDropEvent, type MosaicMoveEvent, Mosaic, 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 id: string;\n collection: CollectionType;\n separation?: boolean;\n};\n\nconst StackMain = ({ id, 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 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 {\n action: LayoutAction.SCROLL_INTO_VIEW,\n data: { id: toId },\n },\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 <AttentionProvider id={id}>\n <Mosaic.Root>\n <Mosaic.DragOverlay />\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 </Mosaic.Root>\n </AttentionProvider>\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 border-separator shadow-sm hover:bg-hoverSurface 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-scrim shrink-0 border-r border-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", "AttentionProvider", "Mosaic", "Root", "DragOverlay", "Stack", "emptyComponent", "onDrop", "onOver", "onDeleteSection", "onNavigateToSection", "onAddSection", "onCollapseSection", "Button", "classNames", "Plus"]
|
|
7
|
+
}
|
|
@@ -16,24 +16,30 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var
|
|
20
|
-
__export(
|
|
19
|
+
var chunk_ACPGRTG3_exports = {};
|
|
20
|
+
__export(chunk_ACPGRTG3_exports, {
|
|
21
21
|
SectionSchema: () => SectionSchema,
|
|
22
22
|
StackViewType: () => StackViewType
|
|
23
23
|
});
|
|
24
|
-
module.exports = __toCommonJS(
|
|
24
|
+
module.exports = __toCommonJS(chunk_ACPGRTG3_exports);
|
|
25
25
|
var import_echo_schema = require("@dxos/echo-schema");
|
|
26
26
|
var SectionSchema = import_echo_schema.S.Struct({
|
|
27
27
|
height: import_echo_schema.S.optional(import_echo_schema.S.Number),
|
|
28
28
|
// Space for data that isn't stack-specific but is specific to this view instance.
|
|
29
29
|
// e.g. cover/fill for an image
|
|
30
|
-
custom: import_echo_schema.S.optional(import_echo_schema.S.Record(
|
|
30
|
+
custom: import_echo_schema.S.optional(import_echo_schema.S.Record({
|
|
31
|
+
key: import_echo_schema.S.String,
|
|
32
|
+
value: import_echo_schema.S.Any
|
|
33
|
+
}))
|
|
31
34
|
});
|
|
32
35
|
var StackViewType = class extends (0, import_echo_schema.TypedObject)({
|
|
33
36
|
typename: "dxos.org/type/StackView",
|
|
34
37
|
version: "0.1.0"
|
|
35
38
|
})({
|
|
36
|
-
sections: import_echo_schema.S.mutable(import_echo_schema.S.Record(
|
|
39
|
+
sections: import_echo_schema.S.mutable(import_echo_schema.S.Record({
|
|
40
|
+
key: import_echo_schema.S.String,
|
|
41
|
+
value: SectionSchema
|
|
42
|
+
}))
|
|
37
43
|
}) {
|
|
38
44
|
};
|
|
39
45
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -41,4 +47,4 @@ var StackViewType = class extends (0, import_echo_schema.TypedObject)({
|
|
|
41
47
|
SectionSchema,
|
|
42
48
|
StackViewType
|
|
43
49
|
});
|
|
44
|
-
//# sourceMappingURL=chunk-
|
|
50
|
+
//# sourceMappingURL=chunk-ACPGRTG3.cjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
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,
|
|
6
|
-
"names": ["SectionSchema", "S", "Struct", "height", "optional", "Number", "custom", "Record", "String", "Any", "StackViewType", "TypedObject", "typename", "version", "sections", "mutable"]
|
|
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({ key: S.String, value: S.Any })),\n});\n\nexport class StackViewType extends TypedObject({ typename: 'dxos.org/type/StackView', version: '0.1.0' })({\n sections: S.mutable(S.Record({ key: S.String, value: SectionSchema })),\n}) {}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAIA,yBAA+B;AAOxB,IAAMA,gBAAgBC,qBAAEC,OAAO;EACpCC,QAAQF,qBAAEG,SAASH,qBAAEI,MAAM;;;EAG3BC,QAAQL,qBAAEG,SAASH,qBAAEM,OAAO;IAAEC,KAAKP,qBAAEQ;IAAQC,OAAOT,qBAAEU;EAAI,CAAA,CAAA;AAC5D,CAAA;AAEO,IAAMC,gBAAN,kBAA4BC,gCAAY;EAAEC,UAAU;EAA2BC,SAAS;AAAQ,CAAA,EAAG;EACxGC,UAAUf,qBAAEgB,QAAQhB,qBAAEM,OAAO;IAAEC,KAAKP,qBAAEQ;IAAQC,OAAOV;EAAc,CAAA,CAAA;AACrE,CAAA,EAAA;AAAI;",
|
|
6
|
+
"names": ["SectionSchema", "S", "Struct", "height", "optional", "Number", "custom", "Record", "key", "String", "value", "Any", "StackViewType", "TypedObject", "typename", "version", "sections", "mutable"]
|
|
7
7
|
}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
2
|
var __defProp = Object.defineProperty;
|
|
4
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
6
|
var __export = (target, all) => {
|
|
9
7
|
for (var name in all)
|
|
@@ -17,32 +15,21 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
17
15
|
}
|
|
18
16
|
return to;
|
|
19
17
|
};
|
|
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
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var
|
|
30
|
-
__export(
|
|
19
|
+
var chunk_PGL7XDNJ_exports = {};
|
|
20
|
+
__export(chunk_PGL7XDNJ_exports, {
|
|
31
21
|
SECTION_IDENTIFIER: () => SECTION_IDENTIFIER,
|
|
32
22
|
STACK_PLUGIN: () => STACK_PLUGIN,
|
|
33
23
|
meta_default: () => meta_default
|
|
34
24
|
});
|
|
35
|
-
module.exports = __toCommonJS(
|
|
36
|
-
var import_react = require("@phosphor-icons/react");
|
|
37
|
-
var import_react2 = __toESM(require("react"));
|
|
25
|
+
module.exports = __toCommonJS(chunk_PGL7XDNJ_exports);
|
|
38
26
|
var STACK_PLUGIN = "dxos.org/plugin/stack";
|
|
39
27
|
var SECTION_IDENTIFIER = "dxos.org/type/StackSection";
|
|
40
28
|
var meta_default = {
|
|
41
29
|
id: STACK_PLUGIN,
|
|
42
30
|
// TODO(wittjosiah): Prevents "stacks" language from being exposed to users in settings panel.
|
|
43
31
|
name: "Collections",
|
|
44
|
-
|
|
45
|
-
iconSymbol: "ph--stack-simple--regular"
|
|
32
|
+
icon: "ph--stack-simple--regular"
|
|
46
33
|
};
|
|
47
34
|
// Annotate the CommonJS export names for ESM import in node:
|
|
48
35
|
0 && (module.exports = {
|
|
@@ -50,4 +37,4 @@ var meta_default = {
|
|
|
50
37
|
STACK_PLUGIN,
|
|
51
38
|
meta_default
|
|
52
39
|
});
|
|
53
|
-
//# sourceMappingURL=chunk-
|
|
40
|
+
//# sourceMappingURL=chunk-PGL7XDNJ.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/meta.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\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 icon: 'ph--stack-simple--regular',\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAIO,IAAMA,eAAe;AACrB,IAAMC,qBAAqB;AAElC,IAAA,eAAe;EACbC,IAAIF;;EAEJG,MAAM;EACNC,MAAM;AACR;",
|
|
6
|
+
"names": ["STACK_PLUGIN", "SECTION_IDENTIFIER", "id", "name", "icon"]
|
|
7
|
+
}
|
package/dist/lib/node/index.cjs
CHANGED
|
@@ -28,31 +28,31 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
29
|
var node_exports = {};
|
|
30
30
|
__export(node_exports, {
|
|
31
|
-
SectionSchema: () =>
|
|
31
|
+
SectionSchema: () => import_chunk_ACPGRTG3.SectionSchema,
|
|
32
32
|
StackPlugin: () => StackPlugin,
|
|
33
|
-
StackViewType: () =>
|
|
33
|
+
StackViewType: () => import_chunk_ACPGRTG3.StackViewType,
|
|
34
34
|
default: () => src_default
|
|
35
35
|
});
|
|
36
36
|
module.exports = __toCommonJS(node_exports);
|
|
37
|
-
var
|
|
38
|
-
var
|
|
39
|
-
var import_react = require("
|
|
40
|
-
var import_react2 = __toESM(require("react"));
|
|
37
|
+
var import_chunk_PGL7XDNJ = require("./chunk-PGL7XDNJ.cjs");
|
|
38
|
+
var import_chunk_ACPGRTG3 = require("./chunk-ACPGRTG3.cjs");
|
|
39
|
+
var import_react = __toESM(require("react"));
|
|
41
40
|
var import_echo_schema = require("@dxos/echo-schema");
|
|
42
41
|
var import_local_storage = require("@dxos/local-storage");
|
|
43
42
|
var import_types = require("@dxos/plugin-space/types");
|
|
43
|
+
var import_echo = require("@dxos/react-client/echo");
|
|
44
44
|
var import_react_ui = require("@dxos/react-ui");
|
|
45
45
|
var import_react_ui_theme = require("@dxos/react-ui-theme");
|
|
46
|
+
var import_react2 = __toESM(require("react"));
|
|
46
47
|
var import_react3 = __toESM(require("react"));
|
|
47
|
-
var import_react4 = __toESM(require("react"));
|
|
48
48
|
var import_plugin_settings = require("@dxos/plugin-settings");
|
|
49
49
|
var import_react_ui2 = require("@dxos/react-ui");
|
|
50
|
-
var
|
|
51
|
-
var
|
|
50
|
+
var import_react4 = require("@phosphor-icons/react");
|
|
51
|
+
var import_react5 = __toESM(require("react"));
|
|
52
52
|
var import_app_framework = require("@dxos/app-framework");
|
|
53
53
|
var import_echo_schema2 = require("@dxos/echo-schema");
|
|
54
54
|
var import_types2 = require("@dxos/plugin-ipfs/types");
|
|
55
|
-
var
|
|
55
|
+
var import_echo2 = require("@dxos/react-client/echo");
|
|
56
56
|
var import_react_ui3 = require("@dxos/react-ui");
|
|
57
57
|
var import_react_ui_mosaic = require("@dxos/react-ui-mosaic");
|
|
58
58
|
var import_react_ui_searchlist = require("@dxos/react-ui-searchlist");
|
|
@@ -60,10 +60,10 @@ var import_react_ui_theme2 = require("@dxos/react-ui-theme");
|
|
|
60
60
|
var import_util = require("@dxos/util");
|
|
61
61
|
var import_react_ui_stack = require("@dxos/react-ui-stack");
|
|
62
62
|
var StackSettings = ({ settings }) => {
|
|
63
|
-
const { t } = (0, import_react_ui2.useTranslation)(
|
|
64
|
-
return /* @__PURE__ */
|
|
63
|
+
const { t } = (0, import_react_ui2.useTranslation)(import_chunk_PGL7XDNJ.STACK_PLUGIN);
|
|
64
|
+
return /* @__PURE__ */ import_react3.default.createElement(import_react3.default.Fragment, null, /* @__PURE__ */ import_react3.default.createElement(import_plugin_settings.SettingsValue, {
|
|
65
65
|
label: t("settings separation label")
|
|
66
|
-
}, /* @__PURE__ */
|
|
66
|
+
}, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Input.Switch, {
|
|
67
67
|
checked: settings.separation,
|
|
68
68
|
onCheckedChange: (checked) => settings.separation = !!checked
|
|
69
69
|
})));
|
|
@@ -72,18 +72,18 @@ var dataHasAddSectionDialogProps = (data) => {
|
|
|
72
72
|
return "subject" in data && typeof data.subject === "object" && !!data.subject && "position" in data.subject && typeof data.subject.position === "string" && "collection" in data.subject;
|
|
73
73
|
};
|
|
74
74
|
var AddSectionDialog = ({ path, position, collection }) => {
|
|
75
|
-
const { t } = (0, import_react_ui3.useTranslation)(
|
|
76
|
-
const stackPlugin = (0, import_app_framework.usePlugin)(
|
|
75
|
+
const { t } = (0, import_react_ui3.useTranslation)(import_chunk_PGL7XDNJ.STACK_PLUGIN);
|
|
76
|
+
const stackPlugin = (0, import_app_framework.usePlugin)(import_chunk_PGL7XDNJ.STACK_PLUGIN);
|
|
77
77
|
const fileManagerPlugin = (0, import_app_framework.useResolvePlugin)(import_app_framework.parseFileManagerPlugin);
|
|
78
|
-
const fileRef = (0,
|
|
78
|
+
const fileRef = (0, import_react5.useRef)(null);
|
|
79
79
|
const { dispatch } = (0, import_app_framework.useIntent)();
|
|
80
|
-
const space = (0,
|
|
81
|
-
const [pending, setPending] = (0,
|
|
82
|
-
const [uploadError, setUploadError] = (0,
|
|
83
|
-
const handleAdd = (0,
|
|
80
|
+
const space = (0, import_echo2.getSpace)(collection);
|
|
81
|
+
const [pending, setPending] = (0, import_react5.useState)(false);
|
|
82
|
+
const [uploadError, setUploadError] = (0, import_react5.useState)();
|
|
83
|
+
const handleAdd = (0, import_react5.useCallback)((sectionObject) => {
|
|
84
84
|
const index = position === "beforeAll" ? 0 : position === "afterAll" ? collection.objects.length : collection.objects.filter(import_util.nonNullable).findIndex((section) => section.id === import_react_ui_mosaic.Path.last(path));
|
|
85
85
|
collection.objects.splice(index + (position === "after" ? 1 : 0), 0, sectionObject);
|
|
86
|
-
const stack = collection.views[
|
|
86
|
+
const stack = collection.views[import_chunk_ACPGRTG3.StackViewType.typename];
|
|
87
87
|
if (stack) {
|
|
88
88
|
stack.sections[sectionObject.id] = {};
|
|
89
89
|
}
|
|
@@ -118,20 +118,20 @@ var AddSectionDialog = ({ path, position, collection }) => {
|
|
|
118
118
|
setUploadError(err);
|
|
119
119
|
}
|
|
120
120
|
} : void 0;
|
|
121
|
-
return /* @__PURE__ */
|
|
121
|
+
return /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.Dialog.Content, null, /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.Dialog.Title, null, t(`add section ${position} dialog title`)), /* @__PURE__ */ import_react5.default.createElement(import_react_ui_searchlist.SearchList.Root, {
|
|
122
122
|
label: t("add section input placeholder")
|
|
123
|
-
}, /* @__PURE__ */
|
|
123
|
+
}, /* @__PURE__ */ import_react5.default.createElement(import_react_ui_searchlist.SearchList.Input, {
|
|
124
124
|
placeholder: t("add section input placeholder"),
|
|
125
125
|
classNames: "pli-3",
|
|
126
126
|
disabled: pending
|
|
127
|
-
}), /* @__PURE__ */
|
|
127
|
+
}), /* @__PURE__ */ import_react5.default.createElement(import_react_ui_searchlist.SearchList.Content, {
|
|
128
128
|
classNames: "min-bs-24 bs-fit max-bs-64 overflow-auto",
|
|
129
129
|
...pending && {
|
|
130
130
|
inert: "true"
|
|
131
131
|
}
|
|
132
132
|
}, stackPlugin?.provides?.stack.creators?.map(({ id, icon: Icon, label: propsLabel, testId, intent }) => {
|
|
133
133
|
const label = (0, import_react_ui3.toLocalizedString)(propsLabel, t);
|
|
134
|
-
return /* @__PURE__ */
|
|
134
|
+
return /* @__PURE__ */ import_react5.default.createElement(import_react_ui_searchlist.SearchList.Item, {
|
|
135
135
|
value: label,
|
|
136
136
|
key: id,
|
|
137
137
|
onSelect: async () => {
|
|
@@ -146,31 +146,31 @@ var AddSectionDialog = ({ path, position, collection }) => {
|
|
|
146
146
|
},
|
|
147
147
|
classNames: "flex items-center gap-2 pli-2",
|
|
148
148
|
"data-testid": testId
|
|
149
|
-
}, Icon && /* @__PURE__ */
|
|
149
|
+
}, Icon && /* @__PURE__ */ import_react5.default.createElement(Icon, {
|
|
150
150
|
className: (0, import_react_ui_theme2.mx)((0, import_react_ui_theme2.getSize)(4), "shrink-0")
|
|
151
|
-
}), /* @__PURE__ */
|
|
151
|
+
}), /* @__PURE__ */ import_react5.default.createElement("span", {
|
|
152
152
|
className: "grow truncate"
|
|
153
153
|
}, label));
|
|
154
|
-
}), handleFileUpload && /* @__PURE__ */
|
|
154
|
+
}), handleFileUpload && /* @__PURE__ */ import_react5.default.createElement(import_react_ui_searchlist.SearchList.Item, {
|
|
155
155
|
value: t("upload file label"),
|
|
156
156
|
classNames: "flex items-center gap-2 pli-2",
|
|
157
157
|
onSelect: () => fileRef.current?.click()
|
|
158
|
-
}, /* @__PURE__ */
|
|
158
|
+
}, /* @__PURE__ */ import_react5.default.createElement(import_react4.FilePlus, null), /* @__PURE__ */ import_react5.default.createElement("span", {
|
|
159
159
|
className: "grow truncate"
|
|
160
|
-
}, t("upload file label"))), uploadError && /* @__PURE__ */
|
|
160
|
+
}, t("upload file label"))), uploadError && /* @__PURE__ */ import_react5.default.createElement("div", {
|
|
161
161
|
className: "text-error-500"
|
|
162
|
-
}, uploadError.message))), handleFileUpload && /* @__PURE__ */
|
|
162
|
+
}, uploadError.message))), handleFileUpload && /* @__PURE__ */ import_react5.default.createElement("input", {
|
|
163
163
|
type: "file",
|
|
164
164
|
className: "sr-only",
|
|
165
165
|
ref: fileRef,
|
|
166
166
|
onChange: ({ target: { files } }) => files && handleFileUpload(files[0])
|
|
167
167
|
}));
|
|
168
168
|
};
|
|
169
|
-
var StackMain =
|
|
169
|
+
var StackMain = import_react2.default.lazy(() => import("./StackMain-VMUL2GWO.cjs"));
|
|
170
170
|
var translations_default = [
|
|
171
171
|
{
|
|
172
172
|
"en-US": {
|
|
173
|
-
[
|
|
173
|
+
[import_chunk_PGL7XDNJ.STACK_PLUGIN]: {
|
|
174
174
|
"plugin name": "Stacks",
|
|
175
175
|
"settings separation label": "Separate sections",
|
|
176
176
|
"add section beforeAll dialog title": "Add a section to the start",
|
|
@@ -186,21 +186,21 @@ var translations_default = [
|
|
|
186
186
|
...import_react_ui_stack.translations
|
|
187
187
|
];
|
|
188
188
|
var StackPlugin = () => {
|
|
189
|
-
const settings = new import_local_storage.LocalStorageStore(
|
|
189
|
+
const settings = new import_local_storage.LocalStorageStore(import_chunk_PGL7XDNJ.STACK_PLUGIN, {
|
|
190
190
|
separation: true
|
|
191
191
|
});
|
|
192
192
|
const stackState = (0, import_echo_schema.create)({
|
|
193
193
|
creators: []
|
|
194
194
|
});
|
|
195
195
|
return {
|
|
196
|
-
meta:
|
|
196
|
+
meta: import_chunk_PGL7XDNJ.meta_default,
|
|
197
197
|
ready: async (plugins) => {
|
|
198
198
|
settings.prop({
|
|
199
199
|
key: "separation",
|
|
200
200
|
type: import_local_storage.LocalStorageStore.bool()
|
|
201
201
|
});
|
|
202
202
|
for (const plugin of plugins) {
|
|
203
|
-
if (plugin.meta.id ===
|
|
203
|
+
if (plugin.meta.id === import_chunk_PGL7XDNJ.STACK_PLUGIN) {
|
|
204
204
|
continue;
|
|
205
205
|
}
|
|
206
206
|
if (Array.isArray(plugin.provides?.stack?.creators)) {
|
|
@@ -212,17 +212,16 @@ var StackPlugin = () => {
|
|
|
212
212
|
settings: settings.values,
|
|
213
213
|
metadata: {
|
|
214
214
|
records: {
|
|
215
|
-
[
|
|
215
|
+
[import_chunk_ACPGRTG3.StackViewType.typename]: {
|
|
216
216
|
placeholder: [
|
|
217
217
|
"stack title placeholder",
|
|
218
218
|
{
|
|
219
|
-
ns:
|
|
219
|
+
ns: import_chunk_PGL7XDNJ.STACK_PLUGIN
|
|
220
220
|
}
|
|
221
221
|
],
|
|
222
|
-
icon:
|
|
223
|
-
iconSymbol: "ph--stack-simple--regular"
|
|
222
|
+
icon: "ph--stack-simple--regular"
|
|
224
223
|
},
|
|
225
|
-
[
|
|
224
|
+
[import_chunk_PGL7XDNJ.SECTION_IDENTIFIER]: {
|
|
226
225
|
parse: (section, type) => {
|
|
227
226
|
switch (type) {
|
|
228
227
|
case "node":
|
|
@@ -243,39 +242,42 @@ var StackPlugin = () => {
|
|
|
243
242
|
translations: translations_default,
|
|
244
243
|
echo: {
|
|
245
244
|
schema: [
|
|
246
|
-
|
|
245
|
+
import_chunk_ACPGRTG3.StackViewType
|
|
247
246
|
]
|
|
248
247
|
},
|
|
249
248
|
surface: {
|
|
250
249
|
component: ({ data, role }) => {
|
|
251
250
|
switch (data.component) {
|
|
252
|
-
case `${
|
|
253
|
-
return dataHasAddSectionDialogProps(data) ? /* @__PURE__ */
|
|
251
|
+
case `${import_chunk_PGL7XDNJ.STACK_PLUGIN}/AddSectionDialog`:
|
|
252
|
+
return dataHasAddSectionDialogProps(data) ? /* @__PURE__ */ import_react.default.createElement(AddSectionDialog, data.subject) : null;
|
|
254
253
|
}
|
|
255
254
|
const primary = data.active ?? data.object;
|
|
255
|
+
const id = typeof data.id === "string" ? data.id : void 0;
|
|
256
256
|
switch (role) {
|
|
257
257
|
case "main":
|
|
258
|
-
return primary instanceof import_types.CollectionType ? /* @__PURE__ */
|
|
258
|
+
return primary instanceof import_types.CollectionType ? /* @__PURE__ */ import_react.default.createElement(import_react_ui.Main.Content, {
|
|
259
259
|
bounce: true,
|
|
260
260
|
classNames: [
|
|
261
261
|
import_react_ui_theme.baseSurface,
|
|
262
262
|
import_react_ui_theme.topbarBlockPaddingStart,
|
|
263
263
|
import_react_ui_theme.bottombarBlockPaddingEnd
|
|
264
264
|
]
|
|
265
|
-
}, /* @__PURE__ */
|
|
265
|
+
}, /* @__PURE__ */ import_react.default.createElement(StackMain, {
|
|
266
|
+
id: id ?? (0, import_echo.fullyQualifiedId)(primary),
|
|
266
267
|
collection: primary,
|
|
267
268
|
separation: settings.values.separation
|
|
268
269
|
})) : null;
|
|
269
270
|
case "article":
|
|
270
|
-
return primary instanceof import_types.CollectionType ? /* @__PURE__ */
|
|
271
|
+
return primary instanceof import_types.CollectionType ? /* @__PURE__ */ import_react.default.createElement("div", {
|
|
271
272
|
role: "none",
|
|
272
273
|
className: "row-span-2 overflow-auto"
|
|
273
|
-
}, /* @__PURE__ */
|
|
274
|
+
}, /* @__PURE__ */ import_react.default.createElement(StackMain, {
|
|
275
|
+
id: id ?? (0, import_echo.fullyQualifiedId)(primary),
|
|
274
276
|
collection: primary,
|
|
275
277
|
separation: settings.values.separation
|
|
276
278
|
})) : null;
|
|
277
279
|
case "settings": {
|
|
278
|
-
return data.plugin ===
|
|
280
|
+
return data.plugin === import_chunk_PGL7XDNJ.meta_default.id ? /* @__PURE__ */ import_react.default.createElement(StackSettings, {
|
|
279
281
|
settings: settings.values
|
|
280
282
|
}) : null;
|
|
281
283
|
}
|