@dxos/plugin-stack 0.8.4-main.406dc2a → 0.8.4-main.548089c

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 (35) hide show
  1. package/dist/lib/browser/{StackContainer-RFJDTQBT.mjs → StackContainer-DD3ZD5OE.mjs} +11 -9
  2. package/dist/lib/browser/StackContainer-DD3ZD5OE.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-MS4QSWEZ.mjs → chunk-UIKFKRFJ.mjs} +6 -2
  4. package/dist/lib/browser/chunk-UIKFKRFJ.mjs.map +7 -0
  5. package/dist/lib/browser/index.mjs +2 -2
  6. package/dist/lib/browser/meta.json +1 -1
  7. package/dist/lib/browser/{react-surface-DGGN5OPM.mjs → react-surface-HVPK7YZQ.mjs} +6 -7
  8. package/dist/lib/browser/react-surface-HVPK7YZQ.mjs.map +7 -0
  9. package/dist/lib/node-esm/{StackContainer-HL6KYBW2.mjs → StackContainer-JGWPXSUF.mjs} +11 -9
  10. package/dist/lib/node-esm/StackContainer-JGWPXSUF.mjs.map +7 -0
  11. package/dist/lib/node-esm/{chunk-5FDDKAPB.mjs → chunk-BGVQYUYP.mjs} +6 -2
  12. package/dist/lib/node-esm/chunk-BGVQYUYP.mjs.map +7 -0
  13. package/dist/lib/node-esm/index.mjs +2 -2
  14. package/dist/lib/node-esm/meta.json +1 -1
  15. package/dist/lib/node-esm/{react-surface-TEOPQTLH.mjs → react-surface-HYSD7AC2.mjs} +6 -7
  16. package/dist/lib/node-esm/react-surface-HYSD7AC2.mjs.map +7 -0
  17. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  18. package/dist/types/src/components/StackContainer.d.ts +2 -2
  19. package/dist/types/src/components/StackContainer.d.ts.map +1 -1
  20. package/dist/types/src/meta.d.ts.map +1 -1
  21. package/dist/types/src/types/types.d.ts +2 -2
  22. package/dist/types/src/types/types.d.ts.map +1 -1
  23. package/dist/types/tsconfig.tsbuildinfo +1 -1
  24. package/package.json +25 -24
  25. package/src/capabilities/react-surface.tsx +4 -5
  26. package/src/components/StackContainer.tsx +29 -18
  27. package/src/components/StackSection.tsx +1 -1
  28. package/src/meta.ts +5 -1
  29. package/src/types/types.ts +2 -2
  30. package/dist/lib/browser/StackContainer-RFJDTQBT.mjs.map +0 -7
  31. package/dist/lib/browser/chunk-MS4QSWEZ.mjs.map +0 -7
  32. package/dist/lib/browser/react-surface-DGGN5OPM.mjs.map +0 -7
  33. package/dist/lib/node-esm/StackContainer-HL6KYBW2.mjs.map +0 -7
  34. package/dist/lib/node-esm/chunk-5FDDKAPB.mjs.map +0 -7
  35. package/dist/lib/node-esm/react-surface-TEOPQTLH.mjs.map +0 -7
@@ -1,13 +1,14 @@
1
1
  import {
2
2
  meta
3
- } from "./chunk-MS4QSWEZ.mjs";
3
+ } from "./chunk-UIKFKRFJ.mjs";
4
4
 
5
5
  // src/components/StackContainer.tsx
6
6
  import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
7
7
  import * as Option from "effect/Option";
8
8
  import React3, { useCallback, useState as useState2 } from "react";
9
- import { Capabilities, LayoutAction, createIntent, useAppGraph, useCapabilities, useIntentDispatcher } from "@dxos/app-framework";
10
- import { fullyQualifiedId, isLiveObject } from "@dxos/client/echo";
9
+ import { Capabilities, LayoutAction, createIntent } from "@dxos/app-framework";
10
+ import { useAppGraph, useCapabilities, useIntentDispatcher } from "@dxos/app-framework/react";
11
+ import { isLiveObject } from "@dxos/client/echo";
11
12
  import { Obj } from "@dxos/echo";
12
13
  import { SpaceAction } from "@dxos/plugin-space/types";
13
14
  import { Toolbar, toLocalizedString, useTranslation as useTranslation2 } from "@dxos/react-ui";
@@ -33,7 +34,7 @@ var useStack = () => useContext(StackContext);
33
34
  import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
34
35
  import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
35
36
  import React2, { useMemo, useState } from "react";
36
- import { Surface } from "@dxos/app-framework";
37
+ import { Surface } from "@dxos/app-framework/react";
37
38
  import { DropdownMenu, Icon, IconButton, useTranslation } from "@dxos/react-ui";
38
39
  import { useAttentionAttributes } from "@dxos/react-ui-attention";
39
40
  import { StackItem } from "@dxos/react-ui-stack";
@@ -192,19 +193,19 @@ var StackContainer = ({ id, collection }) => {
192
193
  const metadata = allMetadata.find((m) => m.id === (Obj.getTypename(object) ?? "never"))?.metadata;
193
194
  const view = {
194
195
  // ...stack.sections[object.id],
195
- collapsed: collapsedSections[fullyQualifiedId(object)],
196
+ collapsed: collapsedSections[Obj.getDXN(object).toString()],
196
197
  title: object?.title ?? // TODO(wittjosiah): `getNode` is not reactive.
197
- toLocalizedString(graph.getNode(fullyQualifiedId(object)).pipe(Option.getOrNull)?.properties.label, t)
198
+ toLocalizedString(graph.getNode(Obj.getDXN(object).toString()).pipe(Option.getOrNull)?.properties.label, t)
198
199
  };
199
200
  return {
200
- id: fullyQualifiedId(object),
201
+ id: Obj.getDXN(object).toString(),
201
202
  object,
202
203
  metadata,
203
204
  view
204
205
  };
205
206
  }) ?? [];
206
207
  const handleDelete = useCallback(async (id2) => {
207
- const index = collection.objects.map((object2) => object2.target).filter(isNonNullable).findIndex((section) => fullyQualifiedId(section) === id2);
208
+ const index = collection.objects.map((object2) => object2.target).filter(isNonNullable).findIndex((section) => Obj.getDXN(section).toString() === id2);
208
209
  const object = collection.objects[index].target;
209
210
  if (isLiveObject(object)) {
210
211
  await dispatch(createIntent(SpaceAction.RemoveObjects, {
@@ -266,6 +267,7 @@ var StackContainer = ({ id, collection }) => {
266
267
  icon: "ph--plus--regular",
267
268
  iconOnly: true,
268
269
  label: "Add section",
270
+ "data-testid": "stack.addSection",
269
271
  onClick: handleAddSection
270
272
  })), /* @__PURE__ */ React3.createElement(AttentionProvider, {
271
273
  id
@@ -294,4 +296,4 @@ var StackContainer_default = StackContainer;
294
296
  export {
295
297
  StackContainer_default as default
296
298
  };
297
- //# sourceMappingURL=StackContainer-RFJDTQBT.mjs.map
299
+ //# sourceMappingURL=StackContainer-DD3ZD5OE.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/StackContainer.tsx", "../../../src/components/StackContext.tsx", "../../../src/components/StackSection.tsx", "../../../src/components/CaretDownUp.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport React, { useCallback, useState } from 'react';\n\nimport { Capabilities, LayoutAction, createIntent } from '@dxos/app-framework';\nimport { useAppGraph, useCapabilities, useIntentDispatcher } from '@dxos/app-framework/react';\nimport { isLiveObject } from '@dxos/client/echo';\nimport { Obj } from '@dxos/echo';\nimport { SpaceAction } from '@dxos/plugin-space/types';\nimport { Toolbar, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { AttentionProvider } from '@dxos/react-ui-attention';\nimport { Stack, StackItem } from '@dxos/react-ui-stack';\nimport { type Collection } from '@dxos/schema';\nimport { isNonNullable } from '@dxos/util';\n\nimport { meta } from '../meta';\nimport {\n type AddSectionPosition,\n type CollapsedSections,\n type StackSectionItem,\n type StackSectionMetadata,\n type StackSectionView,\n} from '../types';\n\nimport { StackContext } from './StackContext';\nimport { StackSection } from './StackSection';\n\ntype StackContainerProps = {\n id: string;\n collection: Collection.Collection;\n};\n\nconst StackContainer = ({ id, collection }: StackContainerProps) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const { graph } = useAppGraph();\n const { t } = useTranslation(meta.id);\n const allMetadata = useCapabilities(Capabilities.Metadata);\n const [collapsedSections, setCollapsedSections] = useState<CollapsedSections>({});\n\n // TODO(wittjosiah): Re-implement stack views with relations.\n // const defaultStack = useMemo(() => Obj.make(StackViewType, { sections: {} }), [collection]);\n // const stack = (collection.views[StackViewType.typename]?.target as StackViewType | undefined) ?? defaultStack;\n // useEffect(() => {\n // if (!collection.views[StackViewType.typename]) {\n // collection.views[StackViewType.typename] = Ref.make(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 .map((object) => object.target)\n .filter(isNonNullable)\n .map((object) => {\n const metadata = allMetadata.find((m) => m.id === (Obj.getTypename(object) ?? 'never'))\n ?.metadata as StackSectionMetadata;\n const view = {\n // ...stack.sections[object.id],\n collapsed: collapsedSections[Obj.getDXN(object).toString()],\n title:\n (object as any)?.title ??\n // TODO(wittjosiah): `getNode` is not reactive.\n toLocalizedString(graph.getNode(Obj.getDXN(object).toString()).pipe(Option.getOrNull)?.properties.label, t),\n } as StackSectionView;\n return { id: Obj.getDXN(object).toString(), object, metadata, view } satisfies StackSectionItem;\n }) ?? [];\n\n const handleDelete = useCallback(\n async (id: string) => {\n const index = collection.objects\n .map((object) => object.target)\n .filter(isNonNullable)\n .findIndex((section) => Obj.getDXN(section).toString() === id);\n const object = collection.objects[index].target;\n if (isLiveObject(object)) {\n await dispatch(\n createIntent(SpaceAction.RemoveObjects, {\n objects: [object],\n target: collection,\n }),\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 [collection, dispatch],\n );\n\n const handleAdd = useCallback(\n async (id: string, position: AddSectionPosition) => {\n await dispatch?.(\n // TODO(wittjosiah): Use object creation dialog.\n createIntent(LayoutAction.UpdateDialog, {\n part: 'dialog',\n subject: `${meta.id}/AddSectionDialog`,\n options: {\n blockAlign: 'start',\n props: {\n path: id,\n position,\n collection,\n },\n },\n }),\n );\n },\n [collection, dispatch],\n );\n\n const handleNavigate = useCallback(\n async (id: string) => {\n await dispatch(createIntent(LayoutAction.Open, { part: 'main', subject: [id] }));\n },\n [dispatch],\n );\n\n const handleCollapse = useCallback(\n (id: string, collapsed: boolean) => setCollapsedSections((prev) => ({ ...prev, [id]: collapsed })),\n [],\n );\n\n const handleAddSection = useCallback(\n () =>\n dispatch?.(\n createIntent(SpaceAction.OpenCreateObject, {\n target: collection,\n navigable: false,\n }),\n ),\n [collection, dispatch],\n );\n\n return (\n <StackItem.Content\n toolbar\n classNames='container-max-width overflow-hidden border-l border-r border-subduedSeparator'\n >\n <Toolbar.Root>\n <Toolbar.IconButton\n icon='ph--plus--regular'\n iconOnly\n label='Add section'\n data-testid='stack.addSection'\n onClick={handleAddSection}\n />\n </Toolbar.Root>\n <AttentionProvider id={id}>\n <StackContext.Provider\n value={{\n onCollapse: handleCollapse,\n onNavigate: handleNavigate,\n onDelete: handleDelete,\n onAdd: handleAdd,\n }}\n >\n <Stack orientation='vertical' size='intrinsic' id={id} data-testid='main.stack' classNames='overflow-y-auto'>\n {items.map((item) => (\n <StackSection key={item.id} {...item} />\n ))}\n </Stack>\n </StackContext.Provider>\n </AttentionProvider>\n </StackItem.Content>\n );\n};\n\nexport default StackContainer;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { createContext, useContext } from 'react';\n\nimport { type AddSectionPosition } from '../types';\n\nexport type StackContextValue = {\n onCollapse: (id: string, collapsed: boolean) => void;\n onNavigate: (id: string) => Promise<void>;\n onDelete: (id: string) => Promise<void>;\n onAdd: (id: string, position: AddSectionPosition) => void;\n};\n\nexport const StackContext = createContext<StackContextValue>({\n onCollapse: () => {},\n onNavigate: async () => {},\n onDelete: async () => {},\n onAdd: () => {},\n});\n\nexport const useStack = () => useContext(StackContext);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as CollapsiblePrimitive from '@radix-ui/react-collapsible';\nimport React, { useMemo, useState } from 'react';\n\nimport { Surface } from '@dxos/app-framework/react';\nimport { DropdownMenu, Icon, IconButton, useTranslation } from '@dxos/react-ui';\nimport { useAttentionAttributes } from '@dxos/react-ui-attention';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { getSize, mx, textBlockWidth } from '@dxos/react-ui-theme';\n\nimport { meta } from '../meta';\nimport { type StackSectionItem } from '../types';\n\nimport { CaretDownUp } from './CaretDownUp';\nimport { useStack } from './StackContext';\n\nconst sectionActionDimensions = 'p-1 mlb-1 shrink-0 min-bs-0 is-[--rail-action] bs-min';\n\nexport type StackSectionProps = StackSectionItem;\n\nexport const StackSection = ({\n id,\n view,\n object,\n metadata: { icon = 'ph--placeholder--regular' },\n}: StackSectionProps) => {\n const { t } = useTranslation(meta.id);\n const { onNavigate, onAdd, onCollapse, onDelete } = useStack();\n const [optionsMenuOpen, setOptionsMenuOpen] = useState(false);\n const attentionAttrs = useAttentionAttributes(id);\n const stackItem = useMemo(() => ({ id }), [id]);\n\n return (\n <CollapsiblePrimitive.Root asChild open={!view.collapsed} onOpenChange={(nextOpen) => onCollapse?.(id, !nextOpen)}>\n <StackItem.Root item={stackItem} role='section' {...attentionAttrs}>\n <StackItem.Heading classNames='attention-surface'>\n <span className='sr-only'>{view.title}</span>\n <StackItem.HeadingStickyContent>\n <DropdownMenu.Root\n {...{\n open: optionsMenuOpen,\n onOpenChange: setOptionsMenuOpen,\n }}\n >\n <DropdownMenu.Trigger asChild>\n <StackItem.SigilButton>\n <Icon icon={icon} size={5} classNames='transition-opacity' />\n </StackItem.SigilButton>\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content>\n <DropdownMenu.Viewport>\n {view.collapsed ? (\n <DropdownMenu.Item onClick={() => onNavigate(id)} data-testid='section.navigate-to'>\n <Icon icon='ph--arrow-right--regular' size={5} />\n <span className='mis-2 grow'>{t('navigate to section label')}</span>\n </DropdownMenu.Item>\n ) : (\n <CollapsiblePrimitive.Trigger asChild>\n <DropdownMenu.Item>\n <CaretDownUp className={getSize(5)} />\n <span className='mis-2 grow'>{t('collapse label')}</span>\n </DropdownMenu.Item>\n </CollapsiblePrimitive.Trigger>\n )}\n <DropdownMenu.Item onClick={() => onAdd(id, 'before')} data-testid='section.add-before'>\n <Icon icon='ph--arrow-line-up--regular' size={5} />\n <span className='mis-2 grow'>{t('add section before label')}</span>\n </DropdownMenu.Item>\n <DropdownMenu.Item onClick={() => onAdd(id, 'after')} data-testid='section.add-after'>\n <Icon icon='ph--arrow-line-down--regular' size={5} />\n <span className='mis-2 grow'>{t('add section after label')}</span>\n </DropdownMenu.Item>\n <DropdownMenu.Item onClick={() => onDelete(id)} data-testid='section.remove'>\n <Icon icon='ph--trash--regular' size={5} />\n <span className='mis-2 grow'>{t('remove section label')}</span>\n </DropdownMenu.Item>\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n {view.collapsed ? (\n <CollapsiblePrimitive.Trigger asChild>\n <IconButton\n iconOnly\n variant='ghost'\n label={t('expand label')}\n icon='ph--caret-up-down--regular'\n classNames={sectionActionDimensions}\n />\n </CollapsiblePrimitive.Trigger>\n ) : (\n <IconButton\n iconOnly\n variant='ghost'\n onClick={() => onNavigate(id)}\n label={t('navigate to section label')}\n icon='ph--arrow-right--regular'\n data-testid='section.navigate-to'\n classNames={sectionActionDimensions}\n />\n )}\n </StackItem.HeadingStickyContent>\n </StackItem.Heading>\n <CollapsiblePrimitive.Content>\n <Surface role='section' data={{ subject: object }} limit={1} placeholder={<></>} />\n </CollapsiblePrimitive.Content>\n {view.collapsed && (\n <StackItem.Content classNames='attention-surface'>\n <h2 className={mx('flex items-center p-4 font-medium', textBlockWidth)}>{view.title}</h2>\n </StackItem.Content>\n )}\n </StackItem.Root>\n </CollapsiblePrimitive.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type ComponentPropsWithoutRef } from 'react';\n\nexport const CaretDownUp = ({ children, ...props }: ComponentPropsWithoutRef<'svg'>) => {\n return (\n <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256' {...props}>\n <rect width='256' height='256' fill='none' />\n <polyline\n points='80 224 128 176 176 224'\n fill='none'\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='16'\n />\n <polyline\n points='80 32 128 80 176 32'\n fill='none'\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='16'\n />\n {children}\n </svg>\n );\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["Option", "React", "useCallback", "useState", "Capabilities", "LayoutAction", "createIntent", "useAppGraph", "useCapabilities", "useIntentDispatcher", "isLiveObject", "Obj", "SpaceAction", "Toolbar", "toLocalizedString", "useTranslation", "AttentionProvider", "Stack", "StackItem", "isNonNullable", "createContext", "useContext", "StackContext", "createContext", "onCollapse", "onNavigate", "onDelete", "onAdd", "useStack", "useContext", "CollapsiblePrimitive", "React", "useMemo", "useState", "Surface", "DropdownMenu", "Icon", "IconButton", "useTranslation", "useAttentionAttributes", "StackItem", "getSize", "mx", "textBlockWidth", "React", "CaretDownUp", "children", "props", "svg", "xmlns", "viewBox", "rect", "width", "height", "fill", "polyline", "points", "stroke", "strokeLinecap", "strokeLinejoin", "strokeWidth", "sectionActionDimensions", "StackSection", "id", "view", "object", "metadata", "icon", "t", "useTranslation", "meta", "onNavigate", "onAdd", "onCollapse", "onDelete", "useStack", "optionsMenuOpen", "setOptionsMenuOpen", "useState", "attentionAttrs", "useAttentionAttributes", "stackItem", "useMemo", "React", "Root", "asChild", "open", "collapsed", "onOpenChange", "nextOpen", "StackItem", "item", "role", "Heading", "classNames", "span", "className", "title", "HeadingStickyContent", "DropdownMenu", "Trigger", "SigilButton", "Icon", "size", "Portal", "Content", "Viewport", "Item", "onClick", "data-testid", "CaretDownUp", "getSize", "Arrow", "IconButton", "iconOnly", "variant", "label", "Surface", "data", "subject", "limit", "placeholder", "h2", "mx", "textBlockWidth", "StackContainer", "id", "collection", "dispatchPromise", "dispatch", "useIntentDispatcher", "graph", "useAppGraph", "t", "useTranslation", "meta", "allMetadata", "useCapabilities", "Capabilities", "Metadata", "collapsedSections", "setCollapsedSections", "useState", "items", "objects", "map", "object", "target", "filter", "isNonNullable", "metadata", "find", "m", "Obj", "getTypename", "view", "collapsed", "getDXN", "toString", "title", "toLocalizedString", "getNode", "pipe", "getOrNull", "properties", "label", "handleDelete", "useCallback", "index", "findIndex", "section", "isLiveObject", "createIntent", "SpaceAction", "RemoveObjects", "handleAdd", "position", "LayoutAction", "UpdateDialog", "part", "subject", "options", "blockAlign", "props", "path", "handleNavigate", "Open", "handleCollapse", "prev", "handleAddSection", "OpenCreateObject", "navigable", "React", "StackItem", "Content", "toolbar", "classNames", "Toolbar", "Root", "IconButton", "icon", "iconOnly", "data-testid", "onClick", "AttentionProvider", "StackContext", "Provider", "value", "onCollapse", "onNavigate", "onDelete", "onAdd", "Stack", "orientation", "size", "item", "StackSection", "key"]
7
+ }
@@ -1,11 +1,15 @@
1
1
  // src/meta.ts
2
+ import { trim } from "@dxos/util";
2
3
  var SECTION_IDENTIFIER = "dxos.org/type/StackSection";
3
4
  var meta = {
4
5
  id: "dxos.org/plugin/stack",
5
6
  // TODO(wittjosiah): Prevents "stacks" language from being exposed to users in settings panel.
6
7
  // Conside renaming this to the collection plugin and trying to factor more collections logic from the space plugin.
7
8
  name: "Collections",
8
- description: "View collections of objects within the deck.",
9
+ description: trim`
10
+ Organize and view curated collections of workspace objects in customizable layouts.
11
+ Group related items together and manage collections with sections and filtering.
12
+ `,
9
13
  icon: "ph--stack-simple--regular",
10
14
  source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-stack"
11
15
  };
@@ -14,4 +18,4 @@ export {
14
18
  SECTION_IDENTIFIER,
15
19
  meta
16
20
  };
17
- //# sourceMappingURL=chunk-MS4QSWEZ.mjs.map
21
+ //# sourceMappingURL=chunk-UIKFKRFJ.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/meta.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\nimport { trim } from '@dxos/util';\n\nexport const SECTION_IDENTIFIER = 'dxos.org/type/StackSection';\n\nexport const meta: PluginMeta = {\n id: 'dxos.org/plugin/stack',\n // TODO(wittjosiah): Prevents \"stacks\" language from being exposed to users in settings panel.\n // Conside renaming this to the collection plugin and trying to factor more collections logic from the space plugin.\n name: 'Collections',\n description: trim`\n Organize and view curated collections of workspace objects in customizable layouts.\n Group related items together and manage collections with sections and filtering.\n `,\n icon: 'ph--stack-simple--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-stack',\n};\n"],
5
+ "mappings": ";AAKA,SAASA,YAAY;AAEd,IAAMC,qBAAqB;AAE3B,IAAMC,OAAmB;EAC9BC,IAAI;;;EAGJC,MAAM;EACNC,aAAaC;;;;EAIbC,MAAM;EACNC,QAAQ;AACV;",
6
+ "names": ["trim", "SECTION_IDENTIFIER", "meta", "id", "name", "description", "trim", "icon", "source"]
7
+ }
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  SECTION_IDENTIFIER,
6
6
  meta
7
- } from "./chunk-MS4QSWEZ.mjs";
7
+ } from "./chunk-UIKFKRFJ.mjs";
8
8
 
9
9
  // src/StackPlugin.ts
10
10
  import { Capabilities, Events, contributes, defineModule, definePlugin } from "@dxos/app-framework";
@@ -12,7 +12,7 @@ import { ClientCapabilities, ClientEvents } from "@dxos/plugin-client";
12
12
 
13
13
  // src/capabilities/index.ts
14
14
  import { lazy } from "@dxos/app-framework";
15
- var ReactSurface = lazy(() => import("./react-surface-DGGN5OPM.mjs"));
15
+ var ReactSurface = lazy(() => import("./react-surface-HVPK7YZQ.mjs"));
16
16
 
17
17
  // src/translations.ts
18
18
  import { translations as stackTranslations } from "@dxos/react-ui-stack";
@@ -1 +1 @@
1
- {"inputs":{"src/meta.ts":{"bytes":2047,"imports":[],"format":"esm"},"src/components/StackSettings.tsx":{"bytes":3545,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"src/components/StackContext.tsx":{"bytes":1834,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/components/CaretDownUp.tsx":{"bytes":3228,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/components/StackSection.tsx":{"bytes":17860,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-collapsible","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"src/components/CaretDownUp.tsx","kind":"import-statement","original":"./CaretDownUp"},{"path":"src/components/StackContext.tsx","kind":"import-statement","original":"./StackContext"}],"format":"esm"},"src/components/StackContainer.tsx":{"bytes":19306,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"effect/Option","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"src/components/StackContext.tsx","kind":"import-statement","original":"./StackContext"},{"path":"src/components/StackSection.tsx","kind":"import-statement","original":"./StackSection"}],"format":"esm"},"src/components/index.ts":{"bytes":858,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/components/StackSettings.tsx","kind":"import-statement","original":"./StackSettings"},{"path":"src/components/StackContainer.tsx","kind":"dynamic-import","original":"./StackContainer"}],"format":"esm"},"src/capabilities/react-surface.tsx":{"bytes":4020,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"src/components/index.ts","kind":"import-statement","original":"../components"},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"src/capabilities/index.ts":{"bytes":778,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/capabilities/react-surface.tsx","kind":"dynamic-import","original":"./react-surface"}],"format":"esm"},"src/translations.ts":{"bytes":4437,"imports":[{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"src/types/stack.ts":{"bytes":3643,"imports":[{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/echo/internal","kind":"import-statement","external":true}],"format":"esm"},"src/types/index.ts":{"bytes":499,"imports":[{"path":"src/types/stack.ts","kind":"import-statement","original":"./stack"}],"format":"esm"},"src/StackPlugin.ts":{"bytes":6689,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"src/capabilities/index.ts","kind":"import-statement","original":"./capabilities"},{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/translations.ts","kind":"import-statement","original":"./translations"},{"path":"src/types/index.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"src/index.ts":{"bytes":547,"imports":[{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/StackPlugin.ts","kind":"import-statement","original":"./StackPlugin"}],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":5372},"dist/lib/browser/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-NHMDZYOB.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-MS4QSWEZ.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"dist/lib/browser/react-surface-DGGN5OPM.mjs","kind":"dynamic-import"},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true}],"exports":["SECTION_IDENTIFIER","StackPlugin","meta"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0},"src/StackPlugin.ts":{"bytesInOutput":1394},"src/capabilities/index.ts":{"bytesInOutput":115},"src/translations.ts":{"bytesInOutput":1268}},"bytes":3093},"dist/lib/browser/types/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/browser/types/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-NHMDZYOB.mjs","kind":"import-statement"}],"exports":["SectionSchema","StackViewType"],"entryPoint":"src/types/index.ts","inputs":{},"bytes":154},"dist/lib/browser/chunk-NHMDZYOB.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1695},"dist/lib/browser/chunk-NHMDZYOB.mjs":{"imports":[{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/echo/internal","kind":"import-statement","external":true}],"exports":["SectionSchema","StackViewType"],"inputs":{"src/types/stack.ts":{"bytesInOutput":605},"src/types/index.ts":{"bytesInOutput":0}},"bytes":717},"dist/lib/browser/StackContainer-RFJDTQBT.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":21594},"dist/lib/browser/StackContainer-RFJDTQBT.mjs":{"imports":[{"path":"dist/lib/browser/chunk-MS4QSWEZ.mjs","kind":"import-statement"},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"effect/Option","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-collapsible","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/components/StackContainer.tsx","inputs":{"src/components/StackContainer.tsx":{"bytesInOutput":4500},"src/components/StackContext.tsx":{"bytesInOutput":265},"src/components/StackSection.tsx":{"bytesInOutput":5406},"src/components/CaretDownUp.tsx":{"bytesInOutput":972}},"bytes":11510},"dist/lib/browser/react-surface-DGGN5OPM.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3516},"dist/lib/browser/react-surface-DGGN5OPM.mjs":{"imports":[{"path":"dist/lib/browser/chunk-MS4QSWEZ.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"dist/lib/browser/StackContainer-RFJDTQBT.mjs","kind":"dynamic-import"}],"exports":["default"],"entryPoint":"src/capabilities/react-surface.tsx","inputs":{"src/capabilities/react-surface.tsx":{"bytesInOutput":706},"src/components/index.ts":{"bytesInOutput":104},"src/components/StackSettings.tsx":{"bytesInOutput":263}},"bytes":1390},"dist/lib/browser/chunk-MS4QSWEZ.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":957},"dist/lib/browser/chunk-MS4QSWEZ.mjs":{"imports":[],"exports":["SECTION_IDENTIFIER","meta"],"inputs":{"src/meta.ts":{"bytesInOutput":524}},"bytes":625}}}
1
+ {"inputs":{"src/meta.ts":{"bytes":2526,"imports":[{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/components/StackSettings.tsx":{"bytes":3545,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"src/components/StackContext.tsx":{"bytes":1834,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/components/CaretDownUp.tsx":{"bytes":3228,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/components/StackSection.tsx":{"bytes":17874,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-collapsible","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework/react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"src/components/CaretDownUp.tsx","kind":"import-statement","original":"./CaretDownUp"},{"path":"src/components/StackContext.tsx","kind":"import-statement","original":"./StackContext"}],"format":"esm"},"src/components/StackContainer.tsx":{"bytes":19859,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"effect/Option","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-framework/react","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"src/components/StackContext.tsx","kind":"import-statement","original":"./StackContext"},{"path":"src/components/StackSection.tsx","kind":"import-statement","original":"./StackSection"}],"format":"esm"},"src/components/index.ts":{"bytes":858,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/components/StackSettings.tsx","kind":"import-statement","original":"./StackSettings"},{"path":"src/components/StackContainer.tsx","kind":"dynamic-import","original":"./StackContainer"}],"format":"esm"},"src/capabilities/react-surface.tsx":{"bytes":3873,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"src/components/index.ts","kind":"import-statement","original":"../components"},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"src/capabilities/index.ts":{"bytes":778,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/capabilities/react-surface.tsx","kind":"dynamic-import","original":"./react-surface"}],"format":"esm"},"src/translations.ts":{"bytes":4437,"imports":[{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"src/types/stack.ts":{"bytes":3643,"imports":[{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/echo/internal","kind":"import-statement","external":true}],"format":"esm"},"src/types/index.ts":{"bytes":499,"imports":[{"path":"src/types/stack.ts","kind":"import-statement","original":"./stack"}],"format":"esm"},"src/StackPlugin.ts":{"bytes":6689,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"src/capabilities/index.ts","kind":"import-statement","original":"./capabilities"},{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/translations.ts","kind":"import-statement","original":"./translations"},{"path":"src/types/index.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"src/index.ts":{"bytes":547,"imports":[{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/StackPlugin.ts","kind":"import-statement","original":"./StackPlugin"}],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":5372},"dist/lib/browser/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-NHMDZYOB.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-UIKFKRFJ.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"dist/lib/browser/react-surface-HVPK7YZQ.mjs","kind":"dynamic-import"},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true}],"exports":["SECTION_IDENTIFIER","StackPlugin","meta"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0},"src/StackPlugin.ts":{"bytesInOutput":1394},"src/capabilities/index.ts":{"bytesInOutput":115},"src/translations.ts":{"bytesInOutput":1268}},"bytes":3093},"dist/lib/browser/types/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/browser/types/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-NHMDZYOB.mjs","kind":"import-statement"}],"exports":["SectionSchema","StackViewType"],"entryPoint":"src/types/index.ts","inputs":{},"bytes":154},"dist/lib/browser/chunk-NHMDZYOB.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1695},"dist/lib/browser/chunk-NHMDZYOB.mjs":{"imports":[{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/echo/internal","kind":"import-statement","external":true}],"exports":["SectionSchema","StackViewType"],"inputs":{"src/types/stack.ts":{"bytesInOutput":605},"src/types/index.ts":{"bytesInOutput":0}},"bytes":717},"dist/lib/browser/StackContainer-DD3ZD5OE.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":21901},"dist/lib/browser/StackContainer-DD3ZD5OE.mjs":{"imports":[{"path":"dist/lib/browser/chunk-UIKFKRFJ.mjs","kind":"import-statement"},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"effect/Option","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-framework/react","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-collapsible","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework/react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/components/StackContainer.tsx","inputs":{"src/components/StackContainer.tsx":{"bytesInOutput":4587},"src/components/StackContext.tsx":{"bytesInOutput":265},"src/components/StackSection.tsx":{"bytesInOutput":5412},"src/components/CaretDownUp.tsx":{"bytesInOutput":972}},"bytes":11603},"dist/lib/browser/react-surface-HVPK7YZQ.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3434},"dist/lib/browser/react-surface-HVPK7YZQ.mjs":{"imports":[{"path":"dist/lib/browser/chunk-UIKFKRFJ.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"dist/lib/browser/StackContainer-DD3ZD5OE.mjs","kind":"dynamic-import"}],"exports":["default"],"entryPoint":"src/capabilities/react-surface.tsx","inputs":{"src/capabilities/react-surface.tsx":{"bytesInOutput":655},"src/components/index.ts":{"bytesInOutput":104},"src/components/StackSettings.tsx":{"bytesInOutput":263}},"bytes":1339},"dist/lib/browser/chunk-UIKFKRFJ.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1168},"dist/lib/browser/chunk-UIKFKRFJ.mjs":{"imports":[{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["SECTION_IDENTIFIER","meta"],"inputs":{"src/meta.ts":{"bytesInOutput":695}},"bytes":796}}}
@@ -1,13 +1,12 @@
1
1
  import {
2
2
  meta
3
- } from "./chunk-MS4QSWEZ.mjs";
3
+ } from "./chunk-UIKFKRFJ.mjs";
4
4
 
5
5
  // src/capabilities/react-surface.tsx
6
6
  import React2 from "react";
7
7
  import { Capabilities, contributes, createSurface } from "@dxos/app-framework";
8
8
  import { Obj } from "@dxos/echo";
9
- import { fullyQualifiedId } from "@dxos/react-client/echo";
10
- import { DataType } from "@dxos/schema";
9
+ import { Collection } from "@dxos/schema";
11
10
 
12
11
  // src/components/index.ts
13
12
  import { lazy } from "react";
@@ -19,17 +18,17 @@ import { Input, useTranslation } from "@dxos/react-ui";
19
18
  import { ControlGroup, ControlItemInput, ControlPage, ControlSection } from "@dxos/react-ui-form";
20
19
 
21
20
  // src/components/index.ts
22
- var StackContainer = lazy(() => import("./StackContainer-RFJDTQBT.mjs"));
21
+ var StackContainer = lazy(() => import("./StackContainer-DD3ZD5OE.mjs"));
23
22
 
24
23
  // src/capabilities/react-surface.tsx
25
24
  var react_surface_default = (() => contributes(Capabilities.ReactSurface, createSurface({
26
25
  id: `${meta.id}/article`,
27
26
  role: "article",
28
- filter: (data) => Obj.instanceOf(DataType.Collection, data.subject),
27
+ filter: (data) => Obj.instanceOf(Collection.Collection, data.subject),
29
28
  component: ({ data }) => {
30
29
  const id = typeof data.id === "string" ? data.id : void 0;
31
30
  return /* @__PURE__ */ React2.createElement(StackContainer, {
32
- id: id ?? fullyQualifiedId(data.subject),
31
+ id: id ?? Obj.getDXN(data.subject).toString(),
33
32
  collection: data.subject
34
33
  });
35
34
  }
@@ -37,4 +36,4 @@ var react_surface_default = (() => contributes(Capabilities.ReactSurface, create
37
36
  export {
38
37
  react_surface_default as default
39
38
  };
40
- //# sourceMappingURL=react-surface-DGGN5OPM.mjs.map
39
+ //# sourceMappingURL=react-surface-HVPK7YZQ.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/react-surface.tsx", "../../../src/components/index.ts", "../../../src/components/StackSettings.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Capabilities, contributes, createSurface } from '@dxos/app-framework';\nimport { Obj } from '@dxos/echo';\nimport { Collection } from '@dxos/schema';\n\nimport { StackContainer } from '../components';\nimport { meta } from '../meta';\n\nexport default () =>\n contributes(\n Capabilities.ReactSurface,\n createSurface({\n id: `${meta.id}/article`,\n role: 'article',\n filter: (data): data is { id?: string; subject: Collection.Collection } =>\n Obj.instanceOf(Collection.Collection, data.subject),\n component: ({ data }) => {\n // This allows the id to be overridden by the surface for situations where the id of the collection\n // is not the same as the id of what is being represented (e.g., a space with a root collection).\n const id = typeof data.id === 'string' ? data.id : undefined;\n return <StackContainer id={id ?? Obj.getDXN(data.subject).toString()} collection={data.subject} />;\n },\n }),\n );\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport const StackContainer = lazy(() => import('./StackContainer'));\n\nexport * from './StackSettings';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Input, useTranslation } from '@dxos/react-ui';\nimport { ControlGroup, ControlItemInput, ControlPage, ControlSection } from '@dxos/react-ui-form';\n\nimport { meta } from '../meta';\nimport { type StackSettingsProps } from '../types';\n\nexport const StackSettings = ({ settings }: { settings: StackSettingsProps }) => {\n const { t } = useTranslation(meta.id);\n\n return (\n <ControlPage>\n <ControlSection title={t('settings title', { ns: meta.id })}>\n <ControlGroup>\n <ControlItemInput title={t('settings separation label')}>\n <Input.Switch\n checked={settings.separation}\n onCheckedChange={(checked) => (settings.separation = !!checked)}\n />\n </ControlItemInput>\n </ControlGroup>\n </ControlSection>\n </ControlPage>\n );\n};\n"],
5
+ "mappings": ";;;;;AAIA,OAAOA,YAAW;AAElB,SAASC,cAAcC,aAAaC,qBAAqB;AACzD,SAASC,WAAW;AACpB,SAASC,kBAAkB;;;ACJ3B,SAASC,YAAY;;;;ACArB,OAAOC,WAAW;AAElB,SAASC,OAAOC,sBAAsB;AACtC,SAASC,cAAcC,kBAAkBC,aAAaC,sBAAsB;;;ADDrE,IAAMC,iBAAiBC,KAAK,MAAM,OAAO,+BAAA,CAAA;;;ADOhD,IAAA,yBAAe,MACbC,YACEC,aAAaC,cACbC,cAAc;EACZC,IAAI,GAAGC,KAAKD,EAAE;EACdE,MAAM;EACNC,QAAQ,CAACC,SACPC,IAAIC,WAAWC,WAAWA,YAAYH,KAAKI,OAAO;EACpDC,WAAW,CAAC,EAAEL,KAAI,MAAE;AAGlB,UAAMJ,KAAK,OAAOI,KAAKJ,OAAO,WAAWI,KAAKJ,KAAKU;AACnD,WAAO,gBAAAC,OAAA,cAACC,gBAAAA;MAAeZ,IAAIA,MAAMK,IAAIQ,OAAOT,KAAKI,OAAO,EAAEM,SAAQ;MAAIC,YAAYX,KAAKI;;EACzF;AACF,CAAA,CAAA;",
6
+ "names": ["React", "Capabilities", "contributes", "createSurface", "Obj", "Collection", "lazy", "React", "Input", "useTranslation", "ControlGroup", "ControlItemInput", "ControlPage", "ControlSection", "StackContainer", "lazy", "contributes", "Capabilities", "ReactSurface", "createSurface", "id", "meta", "role", "filter", "data", "Obj", "instanceOf", "Collection", "subject", "component", "undefined", "React", "StackContainer", "getDXN", "toString", "collection"]
7
+ }
@@ -1,14 +1,15 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  meta
4
- } from "./chunk-5FDDKAPB.mjs";
4
+ } from "./chunk-BGVQYUYP.mjs";
5
5
 
6
6
  // src/components/StackContainer.tsx
7
7
  import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
8
8
  import * as Option from "effect/Option";
9
9
  import React3, { useCallback, useState as useState2 } from "react";
10
- import { Capabilities, LayoutAction, createIntent, useAppGraph, useCapabilities, useIntentDispatcher } from "@dxos/app-framework";
11
- import { fullyQualifiedId, isLiveObject } from "@dxos/client/echo";
10
+ import { Capabilities, LayoutAction, createIntent } from "@dxos/app-framework";
11
+ import { useAppGraph, useCapabilities, useIntentDispatcher } from "@dxos/app-framework/react";
12
+ import { isLiveObject } from "@dxos/client/echo";
12
13
  import { Obj } from "@dxos/echo";
13
14
  import { SpaceAction } from "@dxos/plugin-space/types";
14
15
  import { Toolbar, toLocalizedString, useTranslation as useTranslation2 } from "@dxos/react-ui";
@@ -34,7 +35,7 @@ var useStack = () => useContext(StackContext);
34
35
  import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
35
36
  import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
36
37
  import React2, { useMemo, useState } from "react";
37
- import { Surface } from "@dxos/app-framework";
38
+ import { Surface } from "@dxos/app-framework/react";
38
39
  import { DropdownMenu, Icon, IconButton, useTranslation } from "@dxos/react-ui";
39
40
  import { useAttentionAttributes } from "@dxos/react-ui-attention";
40
41
  import { StackItem } from "@dxos/react-ui-stack";
@@ -193,19 +194,19 @@ var StackContainer = ({ id, collection }) => {
193
194
  const metadata = allMetadata.find((m) => m.id === (Obj.getTypename(object) ?? "never"))?.metadata;
194
195
  const view = {
195
196
  // ...stack.sections[object.id],
196
- collapsed: collapsedSections[fullyQualifiedId(object)],
197
+ collapsed: collapsedSections[Obj.getDXN(object).toString()],
197
198
  title: object?.title ?? // TODO(wittjosiah): `getNode` is not reactive.
198
- toLocalizedString(graph.getNode(fullyQualifiedId(object)).pipe(Option.getOrNull)?.properties.label, t)
199
+ toLocalizedString(graph.getNode(Obj.getDXN(object).toString()).pipe(Option.getOrNull)?.properties.label, t)
199
200
  };
200
201
  return {
201
- id: fullyQualifiedId(object),
202
+ id: Obj.getDXN(object).toString(),
202
203
  object,
203
204
  metadata,
204
205
  view
205
206
  };
206
207
  }) ?? [];
207
208
  const handleDelete = useCallback(async (id2) => {
208
- const index = collection.objects.map((object2) => object2.target).filter(isNonNullable).findIndex((section) => fullyQualifiedId(section) === id2);
209
+ const index = collection.objects.map((object2) => object2.target).filter(isNonNullable).findIndex((section) => Obj.getDXN(section).toString() === id2);
209
210
  const object = collection.objects[index].target;
210
211
  if (isLiveObject(object)) {
211
212
  await dispatch(createIntent(SpaceAction.RemoveObjects, {
@@ -267,6 +268,7 @@ var StackContainer = ({ id, collection }) => {
267
268
  icon: "ph--plus--regular",
268
269
  iconOnly: true,
269
270
  label: "Add section",
271
+ "data-testid": "stack.addSection",
270
272
  onClick: handleAddSection
271
273
  })), /* @__PURE__ */ React3.createElement(AttentionProvider, {
272
274
  id
@@ -295,4 +297,4 @@ var StackContainer_default = StackContainer;
295
297
  export {
296
298
  StackContainer_default as default
297
299
  };
298
- //# sourceMappingURL=StackContainer-HL6KYBW2.mjs.map
300
+ //# sourceMappingURL=StackContainer-JGWPXSUF.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/StackContainer.tsx", "../../../src/components/StackContext.tsx", "../../../src/components/StackSection.tsx", "../../../src/components/CaretDownUp.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport React, { useCallback, useState } from 'react';\n\nimport { Capabilities, LayoutAction, createIntent } from '@dxos/app-framework';\nimport { useAppGraph, useCapabilities, useIntentDispatcher } from '@dxos/app-framework/react';\nimport { isLiveObject } from '@dxos/client/echo';\nimport { Obj } from '@dxos/echo';\nimport { SpaceAction } from '@dxos/plugin-space/types';\nimport { Toolbar, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { AttentionProvider } from '@dxos/react-ui-attention';\nimport { Stack, StackItem } from '@dxos/react-ui-stack';\nimport { type Collection } from '@dxos/schema';\nimport { isNonNullable } from '@dxos/util';\n\nimport { meta } from '../meta';\nimport {\n type AddSectionPosition,\n type CollapsedSections,\n type StackSectionItem,\n type StackSectionMetadata,\n type StackSectionView,\n} from '../types';\n\nimport { StackContext } from './StackContext';\nimport { StackSection } from './StackSection';\n\ntype StackContainerProps = {\n id: string;\n collection: Collection.Collection;\n};\n\nconst StackContainer = ({ id, collection }: StackContainerProps) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const { graph } = useAppGraph();\n const { t } = useTranslation(meta.id);\n const allMetadata = useCapabilities(Capabilities.Metadata);\n const [collapsedSections, setCollapsedSections] = useState<CollapsedSections>({});\n\n // TODO(wittjosiah): Re-implement stack views with relations.\n // const defaultStack = useMemo(() => Obj.make(StackViewType, { sections: {} }), [collection]);\n // const stack = (collection.views[StackViewType.typename]?.target as StackViewType | undefined) ?? defaultStack;\n // useEffect(() => {\n // if (!collection.views[StackViewType.typename]) {\n // collection.views[StackViewType.typename] = Ref.make(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 .map((object) => object.target)\n .filter(isNonNullable)\n .map((object) => {\n const metadata = allMetadata.find((m) => m.id === (Obj.getTypename(object) ?? 'never'))\n ?.metadata as StackSectionMetadata;\n const view = {\n // ...stack.sections[object.id],\n collapsed: collapsedSections[Obj.getDXN(object).toString()],\n title:\n (object as any)?.title ??\n // TODO(wittjosiah): `getNode` is not reactive.\n toLocalizedString(graph.getNode(Obj.getDXN(object).toString()).pipe(Option.getOrNull)?.properties.label, t),\n } as StackSectionView;\n return { id: Obj.getDXN(object).toString(), object, metadata, view } satisfies StackSectionItem;\n }) ?? [];\n\n const handleDelete = useCallback(\n async (id: string) => {\n const index = collection.objects\n .map((object) => object.target)\n .filter(isNonNullable)\n .findIndex((section) => Obj.getDXN(section).toString() === id);\n const object = collection.objects[index].target;\n if (isLiveObject(object)) {\n await dispatch(\n createIntent(SpaceAction.RemoveObjects, {\n objects: [object],\n target: collection,\n }),\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 [collection, dispatch],\n );\n\n const handleAdd = useCallback(\n async (id: string, position: AddSectionPosition) => {\n await dispatch?.(\n // TODO(wittjosiah): Use object creation dialog.\n createIntent(LayoutAction.UpdateDialog, {\n part: 'dialog',\n subject: `${meta.id}/AddSectionDialog`,\n options: {\n blockAlign: 'start',\n props: {\n path: id,\n position,\n collection,\n },\n },\n }),\n );\n },\n [collection, dispatch],\n );\n\n const handleNavigate = useCallback(\n async (id: string) => {\n await dispatch(createIntent(LayoutAction.Open, { part: 'main', subject: [id] }));\n },\n [dispatch],\n );\n\n const handleCollapse = useCallback(\n (id: string, collapsed: boolean) => setCollapsedSections((prev) => ({ ...prev, [id]: collapsed })),\n [],\n );\n\n const handleAddSection = useCallback(\n () =>\n dispatch?.(\n createIntent(SpaceAction.OpenCreateObject, {\n target: collection,\n navigable: false,\n }),\n ),\n [collection, dispatch],\n );\n\n return (\n <StackItem.Content\n toolbar\n classNames='container-max-width overflow-hidden border-l border-r border-subduedSeparator'\n >\n <Toolbar.Root>\n <Toolbar.IconButton\n icon='ph--plus--regular'\n iconOnly\n label='Add section'\n data-testid='stack.addSection'\n onClick={handleAddSection}\n />\n </Toolbar.Root>\n <AttentionProvider id={id}>\n <StackContext.Provider\n value={{\n onCollapse: handleCollapse,\n onNavigate: handleNavigate,\n onDelete: handleDelete,\n onAdd: handleAdd,\n }}\n >\n <Stack orientation='vertical' size='intrinsic' id={id} data-testid='main.stack' classNames='overflow-y-auto'>\n {items.map((item) => (\n <StackSection key={item.id} {...item} />\n ))}\n </Stack>\n </StackContext.Provider>\n </AttentionProvider>\n </StackItem.Content>\n );\n};\n\nexport default StackContainer;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { createContext, useContext } from 'react';\n\nimport { type AddSectionPosition } from '../types';\n\nexport type StackContextValue = {\n onCollapse: (id: string, collapsed: boolean) => void;\n onNavigate: (id: string) => Promise<void>;\n onDelete: (id: string) => Promise<void>;\n onAdd: (id: string, position: AddSectionPosition) => void;\n};\n\nexport const StackContext = createContext<StackContextValue>({\n onCollapse: () => {},\n onNavigate: async () => {},\n onDelete: async () => {},\n onAdd: () => {},\n});\n\nexport const useStack = () => useContext(StackContext);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as CollapsiblePrimitive from '@radix-ui/react-collapsible';\nimport React, { useMemo, useState } from 'react';\n\nimport { Surface } from '@dxos/app-framework/react';\nimport { DropdownMenu, Icon, IconButton, useTranslation } from '@dxos/react-ui';\nimport { useAttentionAttributes } from '@dxos/react-ui-attention';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { getSize, mx, textBlockWidth } from '@dxos/react-ui-theme';\n\nimport { meta } from '../meta';\nimport { type StackSectionItem } from '../types';\n\nimport { CaretDownUp } from './CaretDownUp';\nimport { useStack } from './StackContext';\n\nconst sectionActionDimensions = 'p-1 mlb-1 shrink-0 min-bs-0 is-[--rail-action] bs-min';\n\nexport type StackSectionProps = StackSectionItem;\n\nexport const StackSection = ({\n id,\n view,\n object,\n metadata: { icon = 'ph--placeholder--regular' },\n}: StackSectionProps) => {\n const { t } = useTranslation(meta.id);\n const { onNavigate, onAdd, onCollapse, onDelete } = useStack();\n const [optionsMenuOpen, setOptionsMenuOpen] = useState(false);\n const attentionAttrs = useAttentionAttributes(id);\n const stackItem = useMemo(() => ({ id }), [id]);\n\n return (\n <CollapsiblePrimitive.Root asChild open={!view.collapsed} onOpenChange={(nextOpen) => onCollapse?.(id, !nextOpen)}>\n <StackItem.Root item={stackItem} role='section' {...attentionAttrs}>\n <StackItem.Heading classNames='attention-surface'>\n <span className='sr-only'>{view.title}</span>\n <StackItem.HeadingStickyContent>\n <DropdownMenu.Root\n {...{\n open: optionsMenuOpen,\n onOpenChange: setOptionsMenuOpen,\n }}\n >\n <DropdownMenu.Trigger asChild>\n <StackItem.SigilButton>\n <Icon icon={icon} size={5} classNames='transition-opacity' />\n </StackItem.SigilButton>\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content>\n <DropdownMenu.Viewport>\n {view.collapsed ? (\n <DropdownMenu.Item onClick={() => onNavigate(id)} data-testid='section.navigate-to'>\n <Icon icon='ph--arrow-right--regular' size={5} />\n <span className='mis-2 grow'>{t('navigate to section label')}</span>\n </DropdownMenu.Item>\n ) : (\n <CollapsiblePrimitive.Trigger asChild>\n <DropdownMenu.Item>\n <CaretDownUp className={getSize(5)} />\n <span className='mis-2 grow'>{t('collapse label')}</span>\n </DropdownMenu.Item>\n </CollapsiblePrimitive.Trigger>\n )}\n <DropdownMenu.Item onClick={() => onAdd(id, 'before')} data-testid='section.add-before'>\n <Icon icon='ph--arrow-line-up--regular' size={5} />\n <span className='mis-2 grow'>{t('add section before label')}</span>\n </DropdownMenu.Item>\n <DropdownMenu.Item onClick={() => onAdd(id, 'after')} data-testid='section.add-after'>\n <Icon icon='ph--arrow-line-down--regular' size={5} />\n <span className='mis-2 grow'>{t('add section after label')}</span>\n </DropdownMenu.Item>\n <DropdownMenu.Item onClick={() => onDelete(id)} data-testid='section.remove'>\n <Icon icon='ph--trash--regular' size={5} />\n <span className='mis-2 grow'>{t('remove section label')}</span>\n </DropdownMenu.Item>\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n {view.collapsed ? (\n <CollapsiblePrimitive.Trigger asChild>\n <IconButton\n iconOnly\n variant='ghost'\n label={t('expand label')}\n icon='ph--caret-up-down--regular'\n classNames={sectionActionDimensions}\n />\n </CollapsiblePrimitive.Trigger>\n ) : (\n <IconButton\n iconOnly\n variant='ghost'\n onClick={() => onNavigate(id)}\n label={t('navigate to section label')}\n icon='ph--arrow-right--regular'\n data-testid='section.navigate-to'\n classNames={sectionActionDimensions}\n />\n )}\n </StackItem.HeadingStickyContent>\n </StackItem.Heading>\n <CollapsiblePrimitive.Content>\n <Surface role='section' data={{ subject: object }} limit={1} placeholder={<></>} />\n </CollapsiblePrimitive.Content>\n {view.collapsed && (\n <StackItem.Content classNames='attention-surface'>\n <h2 className={mx('flex items-center p-4 font-medium', textBlockWidth)}>{view.title}</h2>\n </StackItem.Content>\n )}\n </StackItem.Root>\n </CollapsiblePrimitive.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type ComponentPropsWithoutRef } from 'react';\n\nexport const CaretDownUp = ({ children, ...props }: ComponentPropsWithoutRef<'svg'>) => {\n return (\n <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256' {...props}>\n <rect width='256' height='256' fill='none' />\n <polyline\n points='80 224 128 176 176 224'\n fill='none'\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='16'\n />\n <polyline\n points='80 32 128 80 176 32'\n fill='none'\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='16'\n />\n {children}\n </svg>\n );\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["Option", "React", "useCallback", "useState", "Capabilities", "LayoutAction", "createIntent", "useAppGraph", "useCapabilities", "useIntentDispatcher", "isLiveObject", "Obj", "SpaceAction", "Toolbar", "toLocalizedString", "useTranslation", "AttentionProvider", "Stack", "StackItem", "isNonNullable", "createContext", "useContext", "StackContext", "createContext", "onCollapse", "onNavigate", "onDelete", "onAdd", "useStack", "useContext", "CollapsiblePrimitive", "React", "useMemo", "useState", "Surface", "DropdownMenu", "Icon", "IconButton", "useTranslation", "useAttentionAttributes", "StackItem", "getSize", "mx", "textBlockWidth", "React", "CaretDownUp", "children", "props", "svg", "xmlns", "viewBox", "rect", "width", "height", "fill", "polyline", "points", "stroke", "strokeLinecap", "strokeLinejoin", "strokeWidth", "sectionActionDimensions", "StackSection", "id", "view", "object", "metadata", "icon", "t", "useTranslation", "meta", "onNavigate", "onAdd", "onCollapse", "onDelete", "useStack", "optionsMenuOpen", "setOptionsMenuOpen", "useState", "attentionAttrs", "useAttentionAttributes", "stackItem", "useMemo", "React", "Root", "asChild", "open", "collapsed", "onOpenChange", "nextOpen", "StackItem", "item", "role", "Heading", "classNames", "span", "className", "title", "HeadingStickyContent", "DropdownMenu", "Trigger", "SigilButton", "Icon", "size", "Portal", "Content", "Viewport", "Item", "onClick", "data-testid", "CaretDownUp", "getSize", "Arrow", "IconButton", "iconOnly", "variant", "label", "Surface", "data", "subject", "limit", "placeholder", "h2", "mx", "textBlockWidth", "StackContainer", "id", "collection", "dispatchPromise", "dispatch", "useIntentDispatcher", "graph", "useAppGraph", "t", "useTranslation", "meta", "allMetadata", "useCapabilities", "Capabilities", "Metadata", "collapsedSections", "setCollapsedSections", "useState", "items", "objects", "map", "object", "target", "filter", "isNonNullable", "metadata", "find", "m", "Obj", "getTypename", "view", "collapsed", "getDXN", "toString", "title", "toLocalizedString", "getNode", "pipe", "getOrNull", "properties", "label", "handleDelete", "useCallback", "index", "findIndex", "section", "isLiveObject", "createIntent", "SpaceAction", "RemoveObjects", "handleAdd", "position", "LayoutAction", "UpdateDialog", "part", "subject", "options", "blockAlign", "props", "path", "handleNavigate", "Open", "handleCollapse", "prev", "handleAddSection", "OpenCreateObject", "navigable", "React", "StackItem", "Content", "toolbar", "classNames", "Toolbar", "Root", "IconButton", "icon", "iconOnly", "data-testid", "onClick", "AttentionProvider", "StackContext", "Provider", "value", "onCollapse", "onNavigate", "onDelete", "onAdd", "Stack", "orientation", "size", "item", "StackSection", "key"]
7
+ }
@@ -1,13 +1,17 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
 
3
3
  // src/meta.ts
4
+ import { trim } from "@dxos/util";
4
5
  var SECTION_IDENTIFIER = "dxos.org/type/StackSection";
5
6
  var meta = {
6
7
  id: "dxos.org/plugin/stack",
7
8
  // TODO(wittjosiah): Prevents "stacks" language from being exposed to users in settings panel.
8
9
  // Conside renaming this to the collection plugin and trying to factor more collections logic from the space plugin.
9
10
  name: "Collections",
10
- description: "View collections of objects within the deck.",
11
+ description: trim`
12
+ Organize and view curated collections of workspace objects in customizable layouts.
13
+ Group related items together and manage collections with sections and filtering.
14
+ `,
11
15
  icon: "ph--stack-simple--regular",
12
16
  source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-stack"
13
17
  };
@@ -16,4 +20,4 @@ export {
16
20
  SECTION_IDENTIFIER,
17
21
  meta
18
22
  };
19
- //# sourceMappingURL=chunk-5FDDKAPB.mjs.map
23
+ //# sourceMappingURL=chunk-BGVQYUYP.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/meta.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\nimport { trim } from '@dxos/util';\n\nexport const SECTION_IDENTIFIER = 'dxos.org/type/StackSection';\n\nexport const meta: PluginMeta = {\n id: 'dxos.org/plugin/stack',\n // TODO(wittjosiah): Prevents \"stacks\" language from being exposed to users in settings panel.\n // Conside renaming this to the collection plugin and trying to factor more collections logic from the space plugin.\n name: 'Collections',\n description: trim`\n Organize and view curated collections of workspace objects in customizable layouts.\n Group related items together and manage collections with sections and filtering.\n `,\n icon: 'ph--stack-simple--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-stack',\n};\n"],
5
+ "mappings": ";;;AAKA,SAASA,YAAY;AAEd,IAAMC,qBAAqB;AAE3B,IAAMC,OAAmB;EAC9BC,IAAI;;;EAGJC,MAAM;EACNC,aAAaC;;;;EAIbC,MAAM;EACNC,QAAQ;AACV;",
6
+ "names": ["trim", "SECTION_IDENTIFIER", "meta", "id", "name", "description", "trim", "icon", "source"]
7
+ }
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  SECTION_IDENTIFIER,
7
7
  meta
8
- } from "./chunk-5FDDKAPB.mjs";
8
+ } from "./chunk-BGVQYUYP.mjs";
9
9
 
10
10
  // src/StackPlugin.ts
11
11
  import { Capabilities, Events, contributes, defineModule, definePlugin } from "@dxos/app-framework";
@@ -13,7 +13,7 @@ import { ClientCapabilities, ClientEvents } from "@dxos/plugin-client";
13
13
 
14
14
  // src/capabilities/index.ts
15
15
  import { lazy } from "@dxos/app-framework";
16
- var ReactSurface = lazy(() => import("./react-surface-TEOPQTLH.mjs"));
16
+ var ReactSurface = lazy(() => import("./react-surface-HYSD7AC2.mjs"));
17
17
 
18
18
  // src/translations.ts
19
19
  import { translations as stackTranslations } from "@dxos/react-ui-stack";