@dxos/plugin-stack 0.8.4-main.21d9917 → 0.8.4-main.2244d791bb

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/lib/browser/{StackContainer-FUGH3ZJH.mjs → StackContainer-TFG62M42.mjs} +9 -8
  2. package/dist/lib/browser/StackContainer-TFG62M42.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-MZUNZ6A3.mjs → chunk-CD32XYEB.mjs} +3 -3
  4. package/dist/lib/browser/{chunk-MZUNZ6A3.mjs.map → chunk-CD32XYEB.mjs.map} +3 -3
  5. package/dist/lib/browser/index.mjs +9 -8
  6. package/dist/lib/browser/index.mjs.map +3 -3
  7. package/dist/lib/browser/meta.json +1 -1
  8. package/dist/lib/browser/{react-surface-ZEFLABZS.mjs → react-surface-RMMCIEXY.mjs} +6 -5
  9. package/dist/lib/browser/react-surface-RMMCIEXY.mjs.map +7 -0
  10. package/dist/lib/browser/types/index.mjs +1 -1
  11. package/dist/lib/node-esm/{StackContainer-PTZGEQFQ.mjs → StackContainer-G4QUICWO.mjs} +9 -8
  12. package/dist/lib/node-esm/StackContainer-G4QUICWO.mjs.map +7 -0
  13. package/dist/lib/node-esm/{chunk-BHDJHEFJ.mjs → chunk-26XWE7UY.mjs} +3 -3
  14. package/dist/lib/node-esm/{chunk-BHDJHEFJ.mjs.map → chunk-26XWE7UY.mjs.map} +3 -3
  15. package/dist/lib/node-esm/index.mjs +9 -8
  16. package/dist/lib/node-esm/index.mjs.map +3 -3
  17. package/dist/lib/node-esm/meta.json +1 -1
  18. package/dist/lib/node-esm/{react-surface-JQOFHBYS.mjs → react-surface-R5QS3JT6.mjs} +6 -5
  19. package/dist/lib/node-esm/react-surface-R5QS3JT6.mjs.map +7 -0
  20. package/dist/lib/node-esm/types/index.mjs +1 -1
  21. package/dist/types/src/StackPlugin.d.ts.map +1 -1
  22. package/dist/types/src/capabilities/react-surface/index.d.ts +1 -1
  23. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -1
  24. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +2 -2
  25. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -1
  26. package/dist/types/src/components/StackContainer.d.ts +1 -1
  27. package/dist/types/src/components/StackContainer.d.ts.map +1 -1
  28. package/dist/types/src/components/index.d.ts +1 -1
  29. package/dist/types/src/types/stack.d.ts +1 -1
  30. package/dist/types/tsconfig.tsbuildinfo +1 -1
  31. package/package.json +27 -26
  32. package/src/StackPlugin.ts +6 -5
  33. package/src/capabilities/react-surface/react-surface.tsx +4 -3
  34. package/src/components/StackContainer.tsx +7 -6
  35. package/src/components/StackSection.tsx +2 -2
  36. package/src/components/StackSettings.tsx +9 -9
  37. package/src/types/stack.ts +1 -1
  38. package/dist/lib/browser/StackContainer-FUGH3ZJH.mjs.map +0 -7
  39. package/dist/lib/browser/react-surface-ZEFLABZS.mjs.map +0 -7
  40. package/dist/lib/node-esm/StackContainer-PTZGEQFQ.mjs.map +0 -7
  41. package/dist/lib/node-esm/react-surface-JQOFHBYS.mjs.map +0 -7
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-stack",
3
- "version": "0.8.4-main.21d9917",
3
+ "version": "0.8.4-main.2244d791bb",
4
4
  "description": "DXOS Surface plugin for Stack entities",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -41,27 +41,28 @@
41
41
  "dependencies": {
42
42
  "@fluentui/react-tabster": "9.26.11",
43
43
  "@radix-ui/react-collapsible": "1.1.3",
44
- "effect": "3.19.11",
44
+ "effect": "3.19.16",
45
45
  "node-fetch": "^2.6.0",
46
46
  "react-is": "~19.2.0",
47
- "@dxos/async": "0.8.4-main.21d9917",
48
- "@dxos/app-framework": "0.8.4-main.21d9917",
49
- "@dxos/echo": "0.8.4-main.21d9917",
50
- "@dxos/client": "0.8.4-main.21d9917",
51
- "@dxos/invariant": "0.8.4-main.21d9917",
52
- "@dxos/operation": "0.8.4-main.21d9917",
53
- "@dxos/plugin-deck": "0.8.4-main.21d9917",
54
- "@dxos/plugin-graph": "0.8.4-main.21d9917",
55
- "@dxos/plugin-client": "0.8.4-main.21d9917",
56
- "@dxos/plugin-space": "0.8.4-main.21d9917",
57
- "@dxos/react-client": "0.8.4-main.21d9917",
58
- "@dxos/react-ui-attention": "0.8.4-main.21d9917",
59
- "@dxos/react-ui-form": "0.8.4-main.21d9917",
60
- "@dxos/react-ui-stack": "0.8.4-main.21d9917",
61
- "@dxos/react-ui-searchlist": "0.8.4-main.21d9917",
62
- "@dxos/schema": "0.8.4-main.21d9917",
63
- "@dxos/types": "0.8.4-main.21d9917",
64
- "@dxos/util": "0.8.4-main.21d9917"
47
+ "@dxos/app-framework": "0.8.4-main.2244d791bb",
48
+ "@dxos/app-toolkit": "0.8.4-main.2244d791bb",
49
+ "@dxos/async": "0.8.4-main.2244d791bb",
50
+ "@dxos/client": "0.8.4-main.2244d791bb",
51
+ "@dxos/echo": "0.8.4-main.2244d791bb",
52
+ "@dxos/operation": "0.8.4-main.2244d791bb",
53
+ "@dxos/invariant": "0.8.4-main.2244d791bb",
54
+ "@dxos/plugin-client": "0.8.4-main.2244d791bb",
55
+ "@dxos/plugin-deck": "0.8.4-main.2244d791bb",
56
+ "@dxos/plugin-graph": "0.8.4-main.2244d791bb",
57
+ "@dxos/react-client": "0.8.4-main.2244d791bb",
58
+ "@dxos/react-ui-attention": "0.8.4-main.2244d791bb",
59
+ "@dxos/react-ui-form": "0.8.4-main.2244d791bb",
60
+ "@dxos/plugin-space": "0.8.4-main.2244d791bb",
61
+ "@dxos/react-ui-searchlist": "0.8.4-main.2244d791bb",
62
+ "@dxos/react-ui-stack": "0.8.4-main.2244d791bb",
63
+ "@dxos/schema": "0.8.4-main.2244d791bb",
64
+ "@dxos/types": "0.8.4-main.2244d791bb",
65
+ "@dxos/util": "0.8.4-main.2244d791bb"
65
66
  },
66
67
  "devDependencies": {
67
68
  "@babel/core": "^7.18.13",
@@ -70,16 +71,16 @@
70
71
  "react": "~19.2.3",
71
72
  "react-dom": "~19.2.3",
72
73
  "vite": "7.1.9",
73
- "@dxos/react-ui": "0.8.4-main.21d9917",
74
- "@dxos/storybook-utils": "0.8.4-main.21d9917",
75
- "@dxos/ui-theme": "0.8.4-main.21d9917"
74
+ "@dxos/react-ui": "0.8.4-main.2244d791bb",
75
+ "@dxos/ui-theme": "0.8.4-main.2244d791bb",
76
+ "@dxos/storybook-utils": "0.8.4-main.2244d791bb"
76
77
  },
77
78
  "peerDependencies": {
78
- "effect": "3.19.11",
79
+ "effect": "3.19.16",
79
80
  "react": "~19.2.3",
80
81
  "react-dom": "~19.2.3",
81
- "@dxos/react-ui": "0.8.4-main.21d9917",
82
- "@dxos/ui-theme": "0.8.4-main.21d9917"
82
+ "@dxos/ui-theme": "0.8.4-main.2244d791bb",
83
+ "@dxos/react-ui": "0.8.4-main.2244d791bb"
83
84
  },
84
85
  "publishConfig": {
85
86
  "access": "public"
@@ -2,7 +2,8 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { Common, Plugin } from '@dxos/app-framework';
5
+ import { Plugin } from '@dxos/app-framework';
6
+ import { AppPlugin } from '@dxos/app-toolkit';
6
7
  import { type Obj } from '@dxos/echo';
7
8
 
8
9
  import { ReactSurface } from './capabilities';
@@ -11,8 +12,7 @@ import { translations } from './translations';
11
12
  import { StackViewType } from './types';
12
13
 
13
14
  export const StackPlugin = Plugin.define(meta).pipe(
14
- Common.Plugin.addTranslationsModule({ translations }),
15
- Common.Plugin.addMetadataModule({
15
+ AppPlugin.addMetadataModule({
16
16
  metadata: {
17
17
  id: SECTION_IDENTIFIER,
18
18
  metadata: {
@@ -29,7 +29,8 @@ export const StackPlugin = Plugin.define(meta).pipe(
29
29
  },
30
30
  },
31
31
  }),
32
- Common.Plugin.addSchemaModule({ schema: [StackViewType] }),
33
- Common.Plugin.addSurfaceModule({ activate: ReactSurface }),
32
+ AppPlugin.addSchemaModule({ schema: [StackViewType] }),
33
+ AppPlugin.addSurfaceModule({ activate: ReactSurface }),
34
+ AppPlugin.addTranslationsModule({ translations }),
34
35
  Plugin.make,
35
36
  );
@@ -5,7 +5,8 @@
5
5
  import * as Effect from 'effect/Effect';
6
6
  import React from 'react';
7
7
 
8
- import { Capability, Common } from '@dxos/app-framework';
8
+ import { Capabilities, Capability } from '@dxos/app-framework';
9
+ import { Surface } from '@dxos/app-framework/ui';
9
10
  import { Obj } from '@dxos/echo';
10
11
  import { Collection } from '@dxos/schema';
11
12
 
@@ -15,8 +16,8 @@ import { meta } from '../../meta';
15
16
  export default Capability.makeModule(() =>
16
17
  Effect.succeed(
17
18
  Capability.contributes(
18
- Common.Capability.ReactSurface,
19
- Common.createSurface({
19
+ Capabilities.ReactSurface,
20
+ Surface.create({
20
21
  id: `${meta.id}/article`,
21
22
  role: 'article',
22
23
  filter: (data): data is { id?: string; subject: Collection.Collection } =>
@@ -5,9 +5,10 @@
5
5
  import * as Option from 'effect/Option';
6
6
  import React, { useCallback, useState } from 'react';
7
7
 
8
- import { Common } from '@dxos/app-framework';
9
- import { useAppGraph, useCapabilities, useOperationInvoker } from '@dxos/app-framework/react';
10
- import { type SurfaceComponentProps } from '@dxos/app-framework/react';
8
+ import { useCapabilities, useOperationInvoker } from '@dxos/app-framework/ui';
9
+ import { AppCapabilities, LayoutOperation } from '@dxos/app-toolkit';
10
+ import { type SurfaceComponentProps } from '@dxos/app-toolkit/ui';
11
+ import { useAppGraph } from '@dxos/app-toolkit/ui';
11
12
  import { Obj } from '@dxos/echo';
12
13
  import { Graph } from '@dxos/plugin-graph';
13
14
  import { SpaceOperation } from '@dxos/plugin-space/types';
@@ -37,7 +38,7 @@ const StackContainer = ({ id, subject: collection }: StackContainerProps) => {
37
38
  const { invokePromise } = useOperationInvoker();
38
39
  const { graph } = useAppGraph();
39
40
  const { t } = useTranslation(meta.id);
40
- const allMetadata = useCapabilities(Common.Capability.Metadata);
41
+ const allMetadata = useCapabilities(AppCapabilities.Metadata);
41
42
  const [collapsedSections, setCollapsedSections] = useState<CollapsedSections>({});
42
43
 
43
44
  // TODO(wittjosiah): Re-implement stack views with relations.
@@ -95,7 +96,7 @@ const StackContainer = ({ id, subject: collection }: StackContainerProps) => {
95
96
  const handleAdd = useCallback(
96
97
  async (id: string, position: AddSectionPosition) => {
97
98
  // TODO(wittjosiah): Use object creation dialog.
98
- await invokePromise(Common.LayoutOperation.UpdateDialog, {
99
+ await invokePromise(LayoutOperation.UpdateDialog, {
99
100
  subject: `${meta.id}/AddSectionDialog`,
100
101
  blockAlign: 'start',
101
102
  props: {
@@ -110,7 +111,7 @@ const StackContainer = ({ id, subject: collection }: StackContainerProps) => {
110
111
 
111
112
  const handleNavigate = useCallback(
112
113
  async (id: string) => {
113
- await invokePromise(Common.LayoutOperation.Open, { subject: [id] });
114
+ await invokePromise(LayoutOperation.Open, { subject: [id] });
114
115
  },
115
116
  [invokePromise],
116
117
  );
@@ -5,7 +5,7 @@
5
5
  import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
6
6
  import React, { useMemo, useState } from 'react';
7
7
 
8
- import { Surface } from '@dxos/app-framework/react';
8
+ import { Surface } from '@dxos/app-framework/ui';
9
9
  import { DropdownMenu, Icon, IconButton, useTranslation } from '@dxos/react-ui';
10
10
  import { useAttentionAttributes } from '@dxos/react-ui-attention';
11
11
  import { StackItem } from '@dxos/react-ui-stack';
@@ -107,7 +107,7 @@ export const StackSection = ({
107
107
  </StackItem.HeadingStickyContent>
108
108
  </StackItem.Heading>
109
109
  <CollapsiblePrimitive.Content>
110
- <Surface role='section' data={{ subject: object }} limit={1} placeholder={<></>} />
110
+ <Surface.Surface role='section' data={{ subject: object }} limit={1} placeholder={<></>} />
111
111
  </CollapsiblePrimitive.Content>
112
112
  {view.collapsed && (
113
113
  <StackItem.Content classNames='attention-surface'>
@@ -5,7 +5,7 @@
5
5
  import React from 'react';
6
6
 
7
7
  import { Input, useTranslation } from '@dxos/react-ui';
8
- import { ControlGroup, ControlItemInput, ControlPage, ControlSection } from '@dxos/react-ui-form';
8
+ import { Settings } from '@dxos/react-ui-form';
9
9
 
10
10
  import { meta } from '../meta';
11
11
  import { type StackSettingsProps } from '../types';
@@ -14,17 +14,17 @@ export const StackSettings = ({ settings }: { settings: StackSettingsProps }) =>
14
14
  const { t } = useTranslation(meta.id);
15
15
 
16
16
  return (
17
- <ControlPage>
18
- <ControlSection title={t('settings title', { ns: meta.id })}>
19
- <ControlGroup>
20
- <ControlItemInput title={t('settings separation label')}>
17
+ <Settings.Root>
18
+ <Settings.Section title={t('settings title', { ns: meta.id })}>
19
+ <Settings.Group>
20
+ <Settings.ItemInput title={t('settings separation label')}>
21
21
  <Input.Switch
22
22
  checked={settings.separation}
23
23
  onCheckedChange={(checked) => (settings.separation = !!checked)}
24
24
  />
25
- </ControlItemInput>
26
- </ControlGroup>
27
- </ControlSection>
28
- </ControlPage>
25
+ </Settings.ItemInput>
26
+ </Settings.Group>
27
+ </Settings.Section>
28
+ </Settings.Root>
29
29
  );
30
30
  };
@@ -20,7 +20,7 @@ export const SectionSchema = Schema.Struct({
20
20
 
21
21
  // TODO(wittjosiah): This needs a relation to be connected to a stack.
22
22
  export const StackViewType = Schema.Struct({
23
- sections: Schema.mutable(Schema.Record({ key: Schema.String, value: SectionSchema })),
23
+ sections: Schema.Record({ key: Schema.String, value: SectionSchema }),
24
24
  }).pipe(
25
25
  Type.object({
26
26
  typename: 'dxos.org/type/StackView',
@@ -1,7 +0,0 @@
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 { Common } from '@dxos/app-framework';\nimport { useAppGraph, useCapabilities, useOperationInvoker } from '@dxos/app-framework/react';\nimport { type SurfaceComponentProps } from '@dxos/app-framework/react';\nimport { Obj } from '@dxos/echo';\nimport { Graph } from '@dxos/plugin-graph';\nimport { SpaceOperation } 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 = SurfaceComponentProps<Collection.Collection> & {\n id: string;\n};\n\nconst StackContainer = ({ id, subject: collection }: StackContainerProps) => {\n const { invokePromise } = useOperationInvoker();\n const { graph } = useAppGraph();\n const { t } = useTranslation(meta.id);\n const allMetadata = useCapabilities(Common.Capability.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(\n Graph.getNode(graph, Obj.getDXN(object).toString()).pipe(Option.getOrNull)?.properties.label,\n t,\n ),\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 (Obj.isObject(object)) {\n await invokePromise(SpaceOperation.RemoveObjects, {\n objects: [object],\n target: 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 [collection, invokePromise],\n );\n\n const handleAdd = useCallback(\n async (id: string, position: AddSectionPosition) => {\n // TODO(wittjosiah): Use object creation dialog.\n await invokePromise(Common.LayoutOperation.UpdateDialog, {\n subject: `${meta.id}/AddSectionDialog`,\n blockAlign: 'start',\n props: {\n path: id,\n position,\n collection,\n },\n });\n },\n [collection, invokePromise],\n );\n\n const handleNavigate = useCallback(\n async (id: string) => {\n await invokePromise(Common.LayoutOperation.Open, { subject: [id] });\n },\n [invokePromise],\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 invokePromise(SpaceOperation.OpenCreateObject, {\n target: collection,\n navigable: false,\n }),\n [collection, invokePromise],\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/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": ";;;;;AAIA,YAAYA,YAAY;AACxB,OAAOC,UAASC,aAAaC,YAAAA,iBAAgB;AAE7C,SAASC,cAAc;AACvB,SAASC,aAAaC,iBAAiBC,2BAA2B;AAElE,SAASC,WAAW;AACpB,SAASC,aAAa;AACtB,SAASC,sBAAsB;AAC/B,SAASC,SAASC,mBAAmBC,kBAAAA,uBAAsB;AAC3D,SAASC,yBAAyB;AAClC,SAASC,OAAOC,aAAAA,kBAAiB;AAEjC,SAASC,qBAAqB;;;ACb9B,SAASC,eAAeC,kBAAkB;AAWnC,IAAMC,eAAeC,8BAAiC;EAC3DC,YAAY,MAAA;EAAO;EACnBC,YAAY,YAAA;EAAa;EACzBC,UAAU,YAAA;EAAa;EACvBC,OAAO,MAAA;EAAO;AAChB,CAAA;AAEO,IAAMC,WAAW,MAAMC,WAAWP,YAAAA;;;AClBzC,YAAYQ,0BAA0B;AACtC,OAAOC,UAASC,SAASC,gBAAgB;AAEzC,SAASC,eAAe;AACxB,SAASC,cAAcC,MAAMC,YAAYC,sBAAsB;AAC/D,SAASC,8BAA8B;AACvC,SAASC,iBAAiB;AAC1B,SAASC,SAASC,IAAIC,sBAAsB;;;ACP5C,OAAOC,WAA8C;AAE9C,IAAMC,cAAc,CAAC,EAAEC,UAAU,GAAGC,MAAAA,MAAwC;AACjF,SACE,sBAAA,cAACC,OAAAA;IAAIC,OAAM;IAA6BC,SAAQ;IAAe,GAAGH;KAChE,sBAAA,cAACI,QAAAA;IAAKC,OAAM;IAAMC,QAAO;IAAMC,MAAK;MACpC,sBAAA,cAACC,YAAAA;IACCC,QAAO;IACPF,MAAK;IACLG,QAAO;IACPC,eAAc;IACdC,gBAAe;IACfC,aAAY;MAEd,sBAAA,cAACL,YAAAA;IACCC,QAAO;IACPF,MAAK;IACLG,QAAO;IACPC,eAAc;IACdC,gBAAe;IACfC,aAAY;MAEbd,QAAAA;AAGP;;;ADVA,IAAMe,0BAA0B;AAIzB,IAAMC,eAAe,CAAC,EAC3BC,IACAC,MACAC,QACAC,UAAU,EAAEC,OAAO,2BAA0B,EAAE,MAC7B;AAClB,QAAM,EAAEC,EAAC,IAAKC,eAAeC,KAAKP,EAAE;AACpC,QAAM,EAAEQ,YAAYC,OAAOC,YAAYC,SAAQ,IAAKC,SAAAA;AACpD,QAAM,CAACC,iBAAiBC,kBAAAA,IAAsBC,SAAS,KAAA;AACvD,QAAMC,iBAAiBC,uBAAuBjB,EAAAA;AAC9C,QAAMkB,YAAYC,QAAQ,OAAO;IAAEnB;EAAG,IAAI;IAACA;GAAG;AAE9C,SACE,gBAAAoB,OAAA,cAAsBC,2BAAI;IAACC,SAAAA;IAAQC,MAAM,CAACtB,KAAKuB;IAAWC,cAAc,CAACC,aAAahB,aAAaV,IAAI,CAAC0B,QAAAA;KACtG,gBAAAN,OAAA,cAACO,UAAUN,MAAI;IAACO,MAAMV;IAAWW,MAAK;IAAW,GAAGb;KAClD,gBAAAI,OAAA,cAACO,UAAUG,SAAO;IAACC,YAAW;KAC5B,gBAAAX,OAAA,cAACY,QAAAA;IAAKC,WAAU;KAAWhC,KAAKiC,KAAK,GACrC,gBAAAd,OAAA,cAACO,UAAUQ,sBAAoB,MAC7B,gBAAAf,OAAA,cAACgB,aAAaf,MACR;IACFE,MAAMV;IACNY,cAAcX;EAChB,GAEA,gBAAAM,OAAA,cAACgB,aAAaC,SAAO;IAACf,SAAAA;KACpB,gBAAAF,OAAA,cAACO,UAAUW,aAAW,MACpB,gBAAAlB,OAAA,cAACmB,MAAAA;IAAKnC;IAAYoC,MAAM;IAAGT,YAAW;QAG1C,gBAAAX,OAAA,cAACgB,aAAaK,QAAM,MAClB,gBAAArB,OAAA,cAACgB,aAAaM,SAAO,MACnB,gBAAAtB,OAAA,cAACgB,aAAaO,UAAQ,MACnB1C,KAAKuB,YACJ,gBAAAJ,OAAA,cAACgB,aAAaQ,MAAI;IAACC,SAAS,MAAMrC,WAAWR,EAAAA;IAAK8C,eAAY;KAC5D,gBAAA1B,OAAA,cAACmB,MAAAA;IAAKnC,MAAK;IAA2BoC,MAAM;MAC5C,gBAAApB,OAAA,cAACY,QAAAA;IAAKC,WAAU;KAAc5B,EAAE,2BAAA,CAAA,CAAA,IAGlC,gBAAAe,OAAA,cAAsBiB,8BAAO;IAACf,SAAAA;KAC5B,gBAAAF,OAAA,cAACgB,aAAaQ,MAAI,MAChB,gBAAAxB,OAAA,cAAC2B,aAAAA;IAAYd,WAAWe,QAAQ,CAAA;MAChC,gBAAA5B,OAAA,cAACY,QAAAA;IAAKC,WAAU;KAAc5B,EAAE,gBAAA,CAAA,CAAA,CAAA,GAItC,gBAAAe,OAAA,cAACgB,aAAaQ,MAAI;IAACC,SAAS,MAAMpC,MAAMT,IAAI,QAAA;IAAW8C,eAAY;KACjE,gBAAA1B,OAAA,cAACmB,MAAAA;IAAKnC,MAAK;IAA6BoC,MAAM;MAC9C,gBAAApB,OAAA,cAACY,QAAAA;IAAKC,WAAU;KAAc5B,EAAE,0BAAA,CAAA,CAAA,GAElC,gBAAAe,OAAA,cAACgB,aAAaQ,MAAI;IAACC,SAAS,MAAMpC,MAAMT,IAAI,OAAA;IAAU8C,eAAY;KAChE,gBAAA1B,OAAA,cAACmB,MAAAA;IAAKnC,MAAK;IAA+BoC,MAAM;MAChD,gBAAApB,OAAA,cAACY,QAAAA;IAAKC,WAAU;KAAc5B,EAAE,yBAAA,CAAA,CAAA,GAElC,gBAAAe,OAAA,cAACgB,aAAaQ,MAAI;IAACC,SAAS,MAAMlC,SAASX,EAAAA;IAAK8C,eAAY;KAC1D,gBAAA1B,OAAA,cAACmB,MAAAA;IAAKnC,MAAK;IAAqBoC,MAAM;MACtC,gBAAApB,OAAA,cAACY,QAAAA;IAAKC,WAAU;KAAc5B,EAAE,sBAAA,CAAA,CAAA,CAAA,GAGpC,gBAAAe,OAAA,cAACgB,aAAaa,OAAK,IAAA,CAAA,CAAA,CAAA,GAIxBhD,KAAKuB,YACJ,gBAAAJ,OAAA,cAAsBiB,8BAAO;IAACf,SAAAA;KAC5B,gBAAAF,OAAA,cAAC8B,YAAAA;IACCC,UAAAA;IACAC,SAAQ;IACRC,OAAOhD,EAAE,cAAA;IACTD,MAAK;IACL2B,YAAYjC;QAIhB,gBAAAsB,OAAA,cAAC8B,YAAAA;IACCC,UAAAA;IACAC,SAAQ;IACRP,SAAS,MAAMrC,WAAWR,EAAAA;IAC1BqD,OAAOhD,EAAE,2BAAA;IACTD,MAAK;IACL0C,eAAY;IACZf,YAAYjC;QAKpB,gBAAAsB,OAAA,cAAsBsB,8BAAO,MAC3B,gBAAAtB,OAAA,cAACkC,SAAAA;IAAQzB,MAAK;IAAU0B,MAAM;MAAEC,SAAStD;IAAO;IAAGuD,OAAO;IAAGC,aAAa,gBAAAtC,OAAA,cAAAA,OAAA,UAAA,IAAA;OAE3EnB,KAAKuB,aACJ,gBAAAJ,OAAA,cAACO,UAAUe,SAAO;IAACX,YAAW;KAC5B,gBAAAX,OAAA,cAACuC,MAAAA;IAAG1B,WAAW2B,GAAG,qCAAqCC,cAAAA;KAAkB5D,KAAKiC,KAAK,CAAA,CAAA,CAAA;AAM/F;;;AFpFA,IAAM4B,iBAAiB,CAAC,EAAEC,IAAIC,SAASC,WAAU,MAAuB;AACtE,QAAM,EAAEC,cAAa,IAAKC,oBAAAA;AAC1B,QAAM,EAAEC,MAAK,IAAKC,YAAAA;AAClB,QAAM,EAAEC,EAAC,IAAKC,gBAAeC,KAAKT,EAAE;AACpC,QAAMU,cAAcC,gBAAgBC,OAAOC,WAAWC,QAAQ;AAC9D,QAAM,CAACC,mBAAmBC,oBAAAA,IAAwBC,UAA4B,CAAC,CAAA;AAW/E,QAAMC,QACJhB,WAAWiB,QAGRC,IAAI,CAACC,WAAWA,OAAOC,MAAM,EAC7BC,OAAOC,aAAAA,EACPJ,IAAI,CAACC,WAAAA;AACJ,UAAMI,WAAWf,YAAYgB,KAAK,CAACC,MAAMA,EAAE3B,QAAQ4B,IAAIC,YAAYR,MAAAA,KAAW,QAAM,GAChFI;AACJ,UAAMK,OAAO;;MAEXC,WAAWhB,kBAAkBa,IAAII,OAAOX,MAAAA,EAAQY,SAAQ,CAAA;MACxDC,OACGb,QAAgBa;MAEjBC,kBACEC,MAAMC,QAAQhC,OAAOuB,IAAII,OAAOX,MAAAA,EAAQY,SAAQ,CAAA,EAAIK,KAAYC,gBAAS,GAAGC,WAAWC,OACvFlC,CAAAA;IAEN;AACA,WAAO;MAAEP,IAAI4B,IAAII,OAAOX,MAAAA,EAAQY,SAAQ;MAAIZ;MAAQI;MAAUK;IAAK;EACrE,CAAA,KAAM,CAAA;AAEV,QAAMY,eAAeC,YACnB,OAAO3C,QAAAA;AACL,UAAM4C,QAAQ1C,WAAWiB,QACtBC,IAAI,CAACC,YAAWA,QAAOC,MAAM,EAC7BC,OAAOC,aAAAA,EACPqB,UAAU,CAACC,YAAYlB,IAAII,OAAOc,OAAAA,EAASb,SAAQ,MAAOjC,GAAAA;AAC7D,UAAMqB,SAASnB,WAAWiB,QAAQyB,KAAAA,EAAOtB;AACzC,QAAIM,IAAImB,SAAS1B,MAAAA,GAAS;AACxB,YAAMlB,cAAc6C,eAAeC,eAAe;QAChD9B,SAAS;UAACE;;QACVC,QAAQpB;MACV,CAAA;IAIF;EACF,GACA;IAACA;IAAYC;GAAc;AAG7B,QAAM+C,YAAYP,YAChB,OAAO3C,KAAYmD,aAAAA;AAEjB,UAAMhD,cAAcS,OAAOwC,gBAAgBC,cAAc;MACvDpD,SAAS,GAAGQ,KAAKT,EAAE;MACnBsD,YAAY;MACZC,OAAO;QACLC,MAAMxD;QACNmD;QACAjD;MACF;IACF,CAAA;EACF,GACA;IAACA;IAAYC;GAAc;AAG7B,QAAMsD,iBAAiBd,YACrB,OAAO3C,QAAAA;AACL,UAAMG,cAAcS,OAAOwC,gBAAgBM,MAAM;MAAEzD,SAAS;QAACD;;IAAI,CAAA;EACnE,GACA;IAACG;GAAc;AAGjB,QAAMwD,iBAAiBhB,YACrB,CAAC3C,KAAY+B,cAAuBf,qBAAqB,CAAC4C,UAAU;IAAE,GAAGA;IAAM,CAAC5D,GAAAA,GAAK+B;EAAU,EAAA,GAC/F,CAAA,CAAE;AAGJ,QAAM8B,mBAAmBlB,YACvB,MACExC,cAAc6C,eAAec,kBAAkB;IAC7CxC,QAAQpB;IACR6D,WAAW;EACb,CAAA,GACF;IAAC7D;IAAYC;GAAc;AAG7B,SACE,gBAAA6D,OAAA,cAACC,WAAUC,SAAO;IAChBC,SAAAA;IACAC,YAAW;KAEX,gBAAAJ,OAAA,cAACK,QAAQC,MAAI,MACX,gBAAAN,OAAA,cAACK,QAAQE,YAAU;IACjBC,MAAK;IACLC,UAAAA;IACAhC,OAAM;IACNiC,eAAY;IACZC,SAASd;OAGb,gBAAAG,OAAA,cAACY,mBAAAA;IAAkB5E;KACjB,gBAAAgE,OAAA,cAACa,aAAaC,UAAQ;IACpBC,OAAO;MACLC,YAAYrB;MACZsB,YAAYxB;MACZyB,UAAUxC;MACVyC,OAAOjC;IACT;KAEA,gBAAAc,OAAA,cAACoB,OAAAA;IAAMC,aAAY;IAAWC,MAAK;IAAYtF;IAAQ0E,eAAY;IAAaN,YAAW;KACxFlD,MAAME,IAAI,CAACmE,SACV,gBAAAvB,OAAA,cAACwB,cAAAA;IAAaC,KAAKF,KAAKvF;IAAK,GAAGuF;;AAO9C;AAEA,IAAA,yBAAexF;",
6
- "names": ["Option", "React", "useCallback", "useState", "Common", "useAppGraph", "useCapabilities", "useOperationInvoker", "Obj", "Graph", "SpaceOperation", "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", "subject", "collection", "invokePromise", "useOperationInvoker", "graph", "useAppGraph", "t", "useTranslation", "meta", "allMetadata", "useCapabilities", "Common", "Capability", "Metadata", "collapsedSections", "setCollapsedSections", "useState", "items", "objects", "map", "object", "target", "filter", "isNonNullable", "metadata", "find", "m", "Obj", "getTypename", "view", "collapsed", "getDXN", "toString", "title", "toLocalizedString", "Graph", "getNode", "pipe", "getOrNull", "properties", "label", "handleDelete", "useCallback", "index", "findIndex", "section", "isObject", "SpaceOperation", "RemoveObjects", "handleAdd", "position", "LayoutOperation", "UpdateDialog", "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,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/react-surface/react-surface.tsx", "../../../src/components/index.ts", "../../../src/components/StackSettings.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport React from 'react';\n\nimport { Capability, Common } 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 Capability.makeModule(() =>\n Effect.succeed(\n Capability.contributes(\n Common.Capability.ReactSurface,\n Common.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: ({ role, 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()} role={role} subject={data.subject} />;\n },\n }),\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,YAAYA,YAAY;AACxB,OAAOC,YAAW;AAElB,SAASC,YAAYC,cAAc;AACnC,SAASC,WAAW;AACpB,SAASC,kBAAkB;;;ACL3B,SAASC,YAAY;;;ACArB,OAAOC,WAAW;AAElB,SAASC,OAAOC,sBAAsB;AACtC,SAASC,cAAcC,kBAAkBC,aAAaC,sBAAsB;;;ADDrE,IAAMC,iBAAiBC,KAAK,MAAM,OAAO,+BAAA,CAAA;;;ADQhD,IAAA,wBAAeC,WAAWC,WAAW,MAC5BC,eACLF,WAAWG,YACTC,OAAOJ,WAAWK,cAClBD,OAAOE,cAAc;EACnBC,IAAI,GAAGC,KAAKD,EAAE;EACdE,MAAM;EACNC,QAAQ,CAACC,SACPC,IAAIC,WAAWC,WAAWA,YAAYH,KAAKI,OAAO;EACpDC,WAAW,CAAC,EAAEP,MAAME,KAAI,MAAE;AAGxB,UAAMJ,KAAK,OAAOI,KAAKJ,OAAO,WAAWI,KAAKJ,KAAKU;AACnD,WAAO,gBAAAC,OAAA,cAACC,gBAAAA;MAAeZ,IAAIA,MAAMK,IAAIQ,OAAOT,KAAKI,OAAO,EAAEM,SAAQ;MAAIZ;MAAYM,SAASJ,KAAKI;;EAClG;AACF,CAAA,CAAA,CAAA,CAAA;",
6
- "names": ["Effect", "React", "Capability", "Common", "Obj", "Collection", "lazy", "React", "Input", "useTranslation", "ControlGroup", "ControlItemInput", "ControlPage", "ControlSection", "StackContainer", "lazy", "Capability", "makeModule", "succeed", "contributes", "Common", "ReactSurface", "createSurface", "id", "meta", "role", "filter", "data", "Obj", "instanceOf", "Collection", "subject", "component", "undefined", "React", "StackContainer", "getDXN", "toString"]
7
- }
@@ -1,7 +0,0 @@
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 { Common } from '@dxos/app-framework';\nimport { useAppGraph, useCapabilities, useOperationInvoker } from '@dxos/app-framework/react';\nimport { type SurfaceComponentProps } from '@dxos/app-framework/react';\nimport { Obj } from '@dxos/echo';\nimport { Graph } from '@dxos/plugin-graph';\nimport { SpaceOperation } 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 = SurfaceComponentProps<Collection.Collection> & {\n id: string;\n};\n\nconst StackContainer = ({ id, subject: collection }: StackContainerProps) => {\n const { invokePromise } = useOperationInvoker();\n const { graph } = useAppGraph();\n const { t } = useTranslation(meta.id);\n const allMetadata = useCapabilities(Common.Capability.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(\n Graph.getNode(graph, Obj.getDXN(object).toString()).pipe(Option.getOrNull)?.properties.label,\n t,\n ),\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 (Obj.isObject(object)) {\n await invokePromise(SpaceOperation.RemoveObjects, {\n objects: [object],\n target: 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 [collection, invokePromise],\n );\n\n const handleAdd = useCallback(\n async (id: string, position: AddSectionPosition) => {\n // TODO(wittjosiah): Use object creation dialog.\n await invokePromise(Common.LayoutOperation.UpdateDialog, {\n subject: `${meta.id}/AddSectionDialog`,\n blockAlign: 'start',\n props: {\n path: id,\n position,\n collection,\n },\n });\n },\n [collection, invokePromise],\n );\n\n const handleNavigate = useCallback(\n async (id: string) => {\n await invokePromise(Common.LayoutOperation.Open, { subject: [id] });\n },\n [invokePromise],\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 invokePromise(SpaceOperation.OpenCreateObject, {\n target: collection,\n navigable: false,\n }),\n [collection, invokePromise],\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/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", "Common", "useAppGraph", "useCapabilities", "useOperationInvoker", "Obj", "Graph", "SpaceOperation", "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", "subject", "collection", "invokePromise", "useOperationInvoker", "graph", "useAppGraph", "t", "useTranslation", "meta", "allMetadata", "useCapabilities", "Common", "Capability", "Metadata", "collapsedSections", "setCollapsedSections", "useState", "items", "objects", "map", "object", "target", "filter", "isNonNullable", "metadata", "find", "m", "Obj", "getTypename", "view", "collapsed", "getDXN", "toString", "title", "toLocalizedString", "Graph", "getNode", "pipe", "getOrNull", "properties", "label", "handleDelete", "useCallback", "index", "findIndex", "section", "isObject", "SpaceOperation", "RemoveObjects", "handleAdd", "position", "LayoutOperation", "UpdateDialog", "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,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/react-surface/react-surface.tsx", "../../../src/components/index.ts", "../../../src/components/StackSettings.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport React from 'react';\n\nimport { Capability, Common } 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 Capability.makeModule(() =>\n Effect.succeed(\n Capability.contributes(\n Common.Capability.ReactSurface,\n Common.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: ({ role, 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()} role={role} subject={data.subject} />;\n },\n }),\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,YAAYA,YAAY;AACxB,OAAOC,YAAW;AAElB,SAASC,YAAYC,cAAc;AACnC,SAASC,WAAW;AACpB,SAASC,kBAAkB;;;ACL3B,SAASC,YAAY;;;ACArB,OAAOC,WAAW;AAElB,SAASC,OAAOC,sBAAsB;AACtC,SAASC,cAAcC,kBAAkBC,aAAaC,sBAAsB;;;ADDrE,IAAMC,iBAAiBC,KAAK,MAAM,OAAO,+BAAA,CAAA;;;ADQhD,IAAA,wBAAeC,WAAWC,WAAW,MAC5BC,eACLF,WAAWG,YACTC,OAAOJ,WAAWK,cAClBD,OAAOE,cAAc;EACnBC,IAAI,GAAGC,KAAKD,EAAE;EACdE,MAAM;EACNC,QAAQ,CAACC,SACPC,IAAIC,WAAWC,WAAWA,YAAYH,KAAKI,OAAO;EACpDC,WAAW,CAAC,EAAEP,MAAME,KAAI,MAAE;AAGxB,UAAMJ,KAAK,OAAOI,KAAKJ,OAAO,WAAWI,KAAKJ,KAAKU;AACnD,WAAO,gBAAAC,OAAA,cAACC,gBAAAA;MAAeZ,IAAIA,MAAMK,IAAIQ,OAAOT,KAAKI,OAAO,EAAEM,SAAQ;MAAIZ;MAAYM,SAASJ,KAAKI;;EAClG;AACF,CAAA,CAAA,CAAA,CAAA;",
6
- "names": ["Effect", "React", "Capability", "Common", "Obj", "Collection", "lazy", "React", "Input", "useTranslation", "ControlGroup", "ControlItemInput", "ControlPage", "ControlSection", "StackContainer", "lazy", "Capability", "makeModule", "succeed", "contributes", "Common", "ReactSurface", "createSurface", "id", "meta", "role", "filter", "data", "Obj", "instanceOf", "Collection", "subject", "component", "undefined", "React", "StackContainer", "getDXN", "toString"]
7
- }