@dxos/plugin-board 0.8.4-main.3eb6e50203 → 0.8.4-main.4a85c3132b

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 (59) hide show
  1. package/dist/lib/browser/{chunk-DCLJ4HOC.mjs → BoardContainer-QVVN3MXA.mjs} +18 -27
  2. package/dist/lib/browser/BoardContainer-QVVN3MXA.mjs.map +7 -0
  3. package/dist/lib/browser/chunk-DX5POLPL.mjs +19 -0
  4. package/dist/lib/browser/chunk-DX5POLPL.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  6. package/dist/lib/browser/chunk-J5LGTIGS.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-7VKDDGS7.mjs → chunk-KO5FZQGF.mjs} +6 -8
  8. package/dist/lib/browser/chunk-KO5FZQGF.mjs.map +7 -0
  9. package/dist/lib/browser/index.mjs +4 -5
  10. package/dist/lib/browser/meta.json +1 -1
  11. package/dist/lib/browser/{react-surface-3ECZMYLQ.mjs → react-surface-DBUDXBXD.mjs} +10 -4
  12. package/dist/lib/browser/react-surface-DBUDXBXD.mjs.map +7 -0
  13. package/dist/lib/browser/types/index.mjs +2 -1
  14. package/dist/lib/node-esm/{chunk-HICZFU5T.mjs → BoardContainer-U2P3DS4B.mjs} +17 -27
  15. package/dist/lib/node-esm/BoardContainer-U2P3DS4B.mjs.map +7 -0
  16. package/dist/lib/node-esm/{chunk-UGVRNKWV.mjs → chunk-4C3UI73P.mjs} +6 -8
  17. package/dist/lib/node-esm/chunk-4C3UI73P.mjs.map +7 -0
  18. package/dist/lib/node-esm/chunk-BKJL6RLQ.mjs +21 -0
  19. package/dist/lib/node-esm/chunk-BKJL6RLQ.mjs.map +7 -0
  20. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  21. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  22. package/dist/lib/node-esm/index.mjs +4 -5
  23. package/dist/lib/node-esm/meta.json +1 -1
  24. package/dist/lib/node-esm/{react-surface-W7FPI7BR.mjs → react-surface-SFB3GP7U.mjs} +10 -4
  25. package/dist/lib/node-esm/react-surface-SFB3GP7U.mjs.map +7 -0
  26. package/dist/lib/node-esm/types/index.mjs +2 -1
  27. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +1 -1
  28. package/dist/types/src/components/index.d.ts +0 -1
  29. package/dist/types/src/components/index.d.ts.map +1 -1
  30. package/dist/types/src/{components → containers/BoardContainer}/BoardContainer.d.ts +1 -1
  31. package/dist/types/src/containers/BoardContainer/BoardContainer.d.ts.map +1 -0
  32. package/dist/types/src/{components → containers/BoardContainer}/BoardContainer.stories.d.ts +1 -1
  33. package/dist/types/src/containers/BoardContainer/BoardContainer.stories.d.ts.map +1 -0
  34. package/dist/types/src/containers/BoardContainer/index.d.ts +3 -0
  35. package/dist/types/src/containers/BoardContainer/index.d.ts.map +1 -0
  36. package/dist/types/src/containers/index.d.ts +3 -0
  37. package/dist/types/src/containers/index.d.ts.map +1 -0
  38. package/dist/types/src/index.d.ts +0 -1
  39. package/dist/types/src/index.d.ts.map +1 -1
  40. package/dist/types/src/types/Board.d.ts +3 -3
  41. package/dist/types/src/types/Board.d.ts.map +1 -1
  42. package/dist/types/tsconfig.tsbuildinfo +1 -1
  43. package/package.json +41 -41
  44. package/src/capabilities/react-surface/react-surface.tsx +1 -1
  45. package/src/components/index.ts +0 -2
  46. package/src/{components → containers/BoardContainer}/BoardContainer.stories.tsx +5 -4
  47. package/src/{components → containers/BoardContainer}/BoardContainer.tsx +22 -18
  48. package/src/containers/BoardContainer/index.ts +7 -0
  49. package/src/containers/index.ts +7 -0
  50. package/src/index.ts +0 -1
  51. package/src/types/Board.ts +2 -2
  52. package/dist/lib/browser/chunk-7VKDDGS7.mjs.map +0 -7
  53. package/dist/lib/browser/chunk-DCLJ4HOC.mjs.map +0 -7
  54. package/dist/lib/browser/react-surface-3ECZMYLQ.mjs.map +0 -7
  55. package/dist/lib/node-esm/chunk-HICZFU5T.mjs.map +0 -7
  56. package/dist/lib/node-esm/chunk-UGVRNKWV.mjs.map +0 -7
  57. package/dist/lib/node-esm/react-surface-W7FPI7BR.mjs.map +0 -7
  58. package/dist/types/src/components/BoardContainer.d.ts.map +0 -1
  59. package/dist/types/src/components/BoardContainer.stories.d.ts.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-board",
3
- "version": "0.8.4-main.3eb6e50203",
3
+ "version": "0.8.4-main.4a85c3132b",
4
4
  "description": "Surface plugin for card baords",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -14,15 +14,15 @@
14
14
  "type": "module",
15
15
  "exports": {
16
16
  ".": {
17
+ "source": "./src/index.ts",
17
18
  "browser": "./dist/lib/browser/index.mjs",
18
19
  "node": "./dist/lib/node-esm/index.mjs",
19
- "source": "./src/index.ts",
20
20
  "types": "./dist/types/src/index.d.ts"
21
21
  },
22
22
  "./types": {
23
+ "source": "./src/types/index.ts",
23
24
  "browser": "./dist/lib/browser/types/index.mjs",
24
25
  "node": "./dist/lib/node-esm/types/index.mjs",
25
- "source": "./src/types/index.ts",
26
26
  "types": "./dist/types/src/types/index.d.ts"
27
27
  }
28
28
  },
@@ -40,55 +40,55 @@
40
40
  ],
41
41
  "dependencies": {
42
42
  "effect": "3.19.16",
43
- "@dxos/ai": "0.8.4-main.3eb6e50203",
44
- "@dxos/app-framework": "0.8.4-main.3eb6e50203",
45
- "@dxos/assistant": "0.8.4-main.3eb6e50203",
46
- "@dxos/blueprints": "0.8.4-main.3eb6e50203",
47
- "@dxos/async": "0.8.4-main.3eb6e50203",
48
- "@dxos/client": "0.8.4-main.3eb6e50203",
49
- "@dxos/echo": "0.8.4-main.3eb6e50203",
50
- "@dxos/echo-react": "0.8.4-main.3eb6e50203",
51
- "@dxos/effect": "0.8.4-main.3eb6e50203",
52
- "@dxos/invariant": "0.8.4-main.3eb6e50203",
53
- "@dxos/log": "0.8.4-main.3eb6e50203",
54
- "@dxos/operation": "0.8.4-main.3eb6e50203",
55
- "@dxos/plugin-client": "0.8.4-main.3eb6e50203",
56
- "@dxos/plugin-search": "0.8.4-main.3eb6e50203",
57
- "@dxos/app-toolkit": "0.8.4-main.3eb6e50203",
58
- "@dxos/plugin-space": "0.8.4-main.3eb6e50203",
59
- "@dxos/plugin-graph": "0.8.4-main.3eb6e50203",
60
- "@dxos/random": "0.8.4-main.3eb6e50203",
61
- "@dxos/react-ui": "0.8.4-main.3eb6e50203",
62
- "@dxos/react-ui-attention": "0.8.4-main.3eb6e50203",
63
- "@dxos/react-ui-form": "0.8.4-main.3eb6e50203",
64
- "@dxos/react-ui-board": "0.8.4-main.3eb6e50203",
65
- "@dxos/react-ui-mosaic": "0.8.4-main.3eb6e50203",
66
- "@dxos/react-ui-stack": "0.8.4-main.3eb6e50203",
67
- "@dxos/schema": "0.8.4-main.3eb6e50203",
68
- "@dxos/types": "0.8.4-main.3eb6e50203",
69
- "@dxos/util": "0.8.4-main.3eb6e50203",
70
- "@dxos/react-client": "0.8.4-main.3eb6e50203"
43
+ "@dxos/ai": "0.8.4-main.4a85c3132b",
44
+ "@dxos/app-framework": "0.8.4-main.4a85c3132b",
45
+ "@dxos/app-toolkit": "0.8.4-main.4a85c3132b",
46
+ "@dxos/assistant": "0.8.4-main.4a85c3132b",
47
+ "@dxos/async": "0.8.4-main.4a85c3132b",
48
+ "@dxos/echo": "0.8.4-main.4a85c3132b",
49
+ "@dxos/echo-react": "0.8.4-main.4a85c3132b",
50
+ "@dxos/client": "0.8.4-main.4a85c3132b",
51
+ "@dxos/effect": "0.8.4-main.4a85c3132b",
52
+ "@dxos/blueprints": "0.8.4-main.4a85c3132b",
53
+ "@dxos/log": "0.8.4-main.4a85c3132b",
54
+ "@dxos/invariant": "0.8.4-main.4a85c3132b",
55
+ "@dxos/operation": "0.8.4-main.4a85c3132b",
56
+ "@dxos/plugin-client": "0.8.4-main.4a85c3132b",
57
+ "@dxos/plugin-graph": "0.8.4-main.4a85c3132b",
58
+ "@dxos/plugin-space": "0.8.4-main.4a85c3132b",
59
+ "@dxos/react-client": "0.8.4-main.4a85c3132b",
60
+ "@dxos/plugin-search": "0.8.4-main.4a85c3132b",
61
+ "@dxos/random": "0.8.4-main.4a85c3132b",
62
+ "@dxos/react-ui": "0.8.4-main.4a85c3132b",
63
+ "@dxos/react-ui-attention": "0.8.4-main.4a85c3132b",
64
+ "@dxos/react-ui-board": "0.8.4-main.4a85c3132b",
65
+ "@dxos/react-ui-form": "0.8.4-main.4a85c3132b",
66
+ "@dxos/react-ui-mosaic": "0.8.4-main.4a85c3132b",
67
+ "@dxos/react-ui-stack": "0.8.4-main.4a85c3132b",
68
+ "@dxos/schema": "0.8.4-main.4a85c3132b",
69
+ "@dxos/types": "0.8.4-main.4a85c3132b",
70
+ "@dxos/util": "0.8.4-main.4a85c3132b"
71
71
  },
72
72
  "devDependencies": {
73
73
  "@types/react": "~19.2.7",
74
74
  "@types/react-dom": "~19.2.3",
75
75
  "react": "~19.2.3",
76
76
  "react-dom": "~19.2.3",
77
- "vite": "7.1.9",
78
- "@dxos/plugin-preview": "0.8.4-main.3eb6e50203",
79
- "@dxos/plugin-testing": "0.8.4-main.3eb6e50203",
80
- "@dxos/react-ui-syntax-highlighter": "0.8.4-main.3eb6e50203",
81
- "@dxos/storybook-utils": "0.8.4-main.3eb6e50203",
82
- "@dxos/test-utils": "0.8.4-main.3eb6e50203",
83
- "@dxos/ui-theme": "0.8.4-main.3eb6e50203",
84
- "@dxos/plugin-theme": "0.8.4-main.3eb6e50203"
77
+ "vite": "^7.1.11",
78
+ "@dxos/plugin-preview": "0.8.4-main.4a85c3132b",
79
+ "@dxos/plugin-testing": "0.8.4-main.4a85c3132b",
80
+ "@dxos/plugin-theme": "0.8.4-main.4a85c3132b",
81
+ "@dxos/react-ui-syntax-highlighter": "0.8.4-main.4a85c3132b",
82
+ "@dxos/storybook-utils": "0.8.4-main.4a85c3132b",
83
+ "@dxos/test-utils": "0.8.4-main.4a85c3132b",
84
+ "@dxos/ui-theme": "0.8.4-main.4a85c3132b"
85
85
  },
86
86
  "peerDependencies": {
87
87
  "effect": "3.19.16",
88
88
  "react": "~19.2.3",
89
89
  "react-dom": "~19.2.3",
90
- "@dxos/react-ui": "0.8.4-main.3eb6e50203",
91
- "@dxos/ui-theme": "0.8.4-main.3eb6e50203"
90
+ "@dxos/react-ui": "0.8.4-main.4a85c3132b",
91
+ "@dxos/ui-theme": "0.8.4-main.4a85c3132b"
92
92
  },
93
93
  "publishConfig": {
94
94
  "access": "public"
@@ -9,7 +9,7 @@ import { Capabilities, Capability } from '@dxos/app-framework';
9
9
  import { Surface } from '@dxos/app-framework/ui';
10
10
  import { Obj } from '@dxos/echo';
11
11
 
12
- import { BoardContainer } from '../../components';
12
+ import { BoardContainer } from '../../containers';
13
13
  import { meta } from '../../meta';
14
14
  import { Board } from '../../types';
15
15
 
@@ -1,5 +1,3 @@
1
1
  //
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
-
5
- export * from './BoardContainer';
@@ -13,12 +13,12 @@ import { PreviewPlugin } from '@dxos/plugin-preview';
13
13
  import { StorybookPlugin, corePlugins } from '@dxos/plugin-testing';
14
14
  import { faker } from '@dxos/random';
15
15
  import { Filter, Ref, useQuery, useSpaces } from '@dxos/react-client/echo';
16
- import { withTheme } from '@dxos/react-ui/testing';
16
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
17
17
  import { translations as stackTranslations } from '@dxos/react-ui-stack';
18
18
  import { Organization, Person } from '@dxos/types';
19
19
 
20
- import { translations } from '../translations';
21
- import { Board } from '../types';
20
+ import { translations } from '../../translations';
21
+ import { Board } from '../../types';
22
22
 
23
23
  import { BoardContainer } from './BoardContainer';
24
24
 
@@ -69,10 +69,11 @@ const DefaultStory = () => {
69
69
  //
70
70
 
71
71
  const meta = {
72
- title: 'plugins/plugin-board/Board',
72
+ title: 'plugins/plugin-board/containers/BoardContainer',
73
73
  render: DefaultStory,
74
74
  decorators: [
75
75
  withTheme(),
76
+ withLayout({ layout: 'fullscreen' }),
76
77
  withPluginManager({
77
78
  plugins: [
78
79
  ...corePlugins(),
@@ -10,13 +10,13 @@ import { Filter, Obj, Ref } from '@dxos/echo';
10
10
  import { useObject, useObjects } from '@dxos/echo-react';
11
11
  import { invariant } from '@dxos/invariant';
12
12
  import { useQuery } from '@dxos/react-client/echo';
13
- import { Layout } from '@dxos/react-ui';
13
+ import { Panel } from '@dxos/react-ui';
14
14
  import { useAttention } from '@dxos/react-ui-attention';
15
15
  import { Board, type BoardController, type BoardRootProps, type Position } from '@dxos/react-ui-board';
16
16
  import { ObjectPicker, type ObjectPickerContentProps } from '@dxos/react-ui-form';
17
17
  import { isNonNullable } from '@dxos/util';
18
18
 
19
- import { type Board as BoardType } from '../types';
19
+ import { type Board as BoardType } from '../../types';
20
20
 
21
21
  const DEFAULT_POSITION = { x: 0, y: 0 } satisfies Position;
22
22
 
@@ -128,22 +128,26 @@ export const BoardContainer = ({ role, subject: board }: BoardContainerProps) =>
128
128
  setPickerState(nextOpen ? { position: DEFAULT_POSITION } : null);
129
129
  }}
130
130
  >
131
- <Layout.Main role={role} toolbar>
132
- <Board.Toolbar disabled={!hasAttention} />
133
- <Board.Container>
134
- <Board.Viewport classNames='border-none'>
135
- <Board.Backdrop />
136
- <Board.Content>
137
- {items?.map((item, index) => (
138
- <Board.Cell item={item} key={index} layout={board.layout?.cells[item.id] ?? { x: 0, y: 0 }}>
139
- <Surface.Surface role='card--content' data={{ subject: item }} limit={1} />
140
- </Board.Cell>
141
- ))}
142
- </Board.Content>
143
- </Board.Viewport>
144
- </Board.Container>
145
- </Layout.Main>
146
- <ObjectPicker.Content options={options} onSelect={handleSelect} classNames='popover-card-width' />
131
+ <Panel.Root role={role}>
132
+ <Panel.Toolbar asChild>
133
+ <Board.Toolbar disabled={!hasAttention} />
134
+ </Panel.Toolbar>
135
+ <Panel.Content asChild>
136
+ <Board.Container>
137
+ <Board.Viewport classNames='border-none'>
138
+ <Board.Backdrop />
139
+ <Board.Content>
140
+ {items?.map((item, index) => (
141
+ <Board.Cell item={item} key={index} layout={board.layout?.cells[item.id] ?? { x: 0, y: 0 }}>
142
+ <Surface.Surface role='card--content' data={{ subject: item }} limit={1} />
143
+ </Board.Cell>
144
+ ))}
145
+ </Board.Content>
146
+ </Board.Viewport>
147
+ </Board.Container>
148
+ </Panel.Content>
149
+ </Panel.Root>
150
+ <ObjectPicker.Content options={options} onSelect={handleSelect} classNames='dx-card-popover-width' />
147
151
  <ObjectPicker.VirtualTrigger virtualRef={addTriggerRef} />
148
152
  </ObjectPicker.Root>
149
153
  </Board.Root>
@@ -0,0 +1,7 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { BoardContainer } from './BoardContainer';
6
+
7
+ export default BoardContainer;
@@ -0,0 +1,7 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { type ComponentType, lazy } from 'react';
6
+
7
+ export const BoardContainer: ComponentType<any> = lazy(() => import('./BoardContainer'));
package/src/index.ts CHANGED
@@ -2,7 +2,6 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- export * from './components';
6
5
  export * from './meta';
7
6
  export * from './types';
8
7
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  import * as Schema from 'effect/Schema';
6
6
 
7
- import { Obj, Type } from '@dxos/echo';
7
+ import { Obj, Ref, Type } from '@dxos/echo';
8
8
  import { FormInputAnnotation, LabelAnnotation } from '@dxos/echo/internal';
9
9
  import { BoardLayout, defaultLayout } from '@dxos/react-ui-board';
10
10
 
@@ -13,7 +13,7 @@ import { BoardLayout, defaultLayout } from '@dxos/react-ui-board';
13
13
  */
14
14
  export const Board = Schema.Struct({
15
15
  name: Schema.String.pipe(Schema.optional),
16
- items: Type.Ref(Type.Obj).pipe(Schema.Array, FormInputAnnotation.set(false)),
16
+ items: Ref.Ref(Obj.Unknown).pipe(Schema.Array, FormInputAnnotation.set(false)),
17
17
  layout: BoardLayout.pipe(FormInputAnnotation.set(false)),
18
18
  }).pipe(
19
19
  Type.object({
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/types/Board.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Obj, Type } from '@dxos/echo';\nimport { FormInputAnnotation, LabelAnnotation } from '@dxos/echo/internal';\nimport { BoardLayout, defaultLayout } from '@dxos/react-ui-board';\n\n/**\n * Board and layout.\n */\nexport const Board = Schema.Struct({\n name: Schema.String.pipe(Schema.optional),\n items: Type.Ref(Type.Obj).pipe(Schema.Array, FormInputAnnotation.set(false)),\n layout: BoardLayout.pipe(FormInputAnnotation.set(false)),\n}).pipe(\n Type.object({\n typename: 'dxos.org/type/Board',\n version: '0.1.0',\n }),\n LabelAnnotation.set(['name']),\n);\n\nexport interface Board extends Schema.Schema.Type<typeof Board> {}\n\nexport const makeBoard = (props: Partial<Obj.MakeProps<typeof Board>> = {}) =>\n Obj.make(Board, {\n items: [],\n layout: defaultLayout,\n ...props,\n });\n"],
5
- "mappings": ";;;;;;;AAAA;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,KAAKC,YAAY;AAC1B,SAASC,qBAAqBC,uBAAuB;AACrD,SAASC,aAAaC,qBAAqB;AAKpC,IAAMC,QAAeC,cAAO;EACjCC,MAAaC,cAAOC,KAAYC,eAAQ;EACxCC,OAAOC,KAAKC,IAAID,KAAKE,GAAG,EAAEL,KAAYM,cAAOC,oBAAoBC,IAAI,KAAA,CAAA;EACrEC,QAAQC,YAAYV,KAAKO,oBAAoBC,IAAI,KAAA,CAAA;AACnD,CAAA,EAAGR,KACDG,KAAKQ,OAAO;EACVC,UAAU;EACVC,SAAS;AACX,CAAA,GACAC,gBAAgBN,IAAI;EAAC;CAAO,CAAA;AAKvB,IAAMO,YAAY,CAACC,QAA8C,CAAC,MACvEX,IAAIY,KAAKrB,OAAO;EACdM,OAAO,CAAA;EACPO,QAAQS;EACR,GAAGF;AACL,CAAA;",
6
- "names": ["Schema", "Obj", "Type", "FormInputAnnotation", "LabelAnnotation", "BoardLayout", "defaultLayout", "Board", "Struct", "name", "String", "pipe", "optional", "items", "Type", "Ref", "Obj", "Array", "FormInputAnnotation", "set", "layout", "BoardLayout", "object", "typename", "version", "LabelAnnotation", "makeBoard", "props", "make", "defaultLayout"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/BoardContainer.tsx", "../../../src/meta.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useMemo, useRef, useState } from 'react';\n\nimport { Surface } from '@dxos/app-framework/ui';\nimport { type SurfaceComponentProps } from '@dxos/app-toolkit/ui';\nimport { Filter, Obj, Ref } from '@dxos/echo';\nimport { useObject, useObjects } from '@dxos/echo-react';\nimport { invariant } from '@dxos/invariant';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { Layout } from '@dxos/react-ui';\nimport { useAttention } from '@dxos/react-ui-attention';\nimport { Board, type BoardController, type BoardRootProps, type Position } from '@dxos/react-ui-board';\nimport { ObjectPicker, type ObjectPickerContentProps } from '@dxos/react-ui-form';\nimport { isNonNullable } from '@dxos/util';\n\nimport { type Board as BoardType } from '../types';\n\nconst DEFAULT_POSITION = { x: 0, y: 0 } satisfies Position;\n\ntype PickerState = {\n position: Position;\n};\n\nexport type BoardContainerProps = SurfaceComponentProps<BoardType.Board>;\n\nexport const BoardContainer = ({ role, subject: board }: BoardContainerProps) => {\n const controller = useRef<BoardController>(null);\n const [boardItems] = useObject(board, 'items');\n const items = useObjects(boardItems ?? []);\n const addTriggerRef = useRef<HTMLButtonElement | null>(null);\n const [pickerState, setPickerState] = useState<PickerState | null>(null);\n const attendableId = Obj.getDXN(board).toString();\n const { hasAttention } = useAttention(attendableId);\n\n const db = Obj.getDatabase(board);\n // TODO(burdon): Use search.\n const objects = useQuery(db, Filter.everything());\n const options = useMemo<ObjectPickerContentProps['options']>(\n () =>\n objects\n .filter((obj) => obj.id !== board.id)\n .map((obj) => {\n const label = Obj.getLabel(obj);\n if (label) {\n return {\n id: obj.id,\n label,\n hue: 'neutral' as const,\n };\n }\n })\n .filter(isNonNullable)\n .sort(({ label: a }, { label: b }) => a.toLocaleLowerCase().localeCompare(b.toLocaleLowerCase())),\n [objects],\n );\n\n const handleAdd = useCallback<NonNullable<BoardRootProps['onAdd']>>(\n async (anchor, position = DEFAULT_POSITION) => {\n const db = Obj.getDatabase(board);\n invariant(db);\n addTriggerRef.current = anchor;\n setPickerState({\n position,\n });\n },\n [board],\n );\n\n // TODO(burdon): Use intents so can be undone.\n const handleDelete = useCallback<NonNullable<BoardRootProps['onDelete']>>(\n (id) => {\n // TODO(burdon): Impl. DXN.equals and pass in DXN from `id`.\n const idx = board.items.findIndex((ref) => ref.dxn.asEchoDXN()?.echoId === id);\n Obj.change(board, (b) => {\n if (idx !== -1) {\n b.items.splice(idx, 1);\n }\n delete b.layout.cells[id];\n });\n },\n [board],\n );\n\n const handleMove = useCallback<NonNullable<BoardRootProps['onMove']>>(\n (id, position) => {\n const layout = board.layout.cells[id];\n Obj.change(board, (b) => {\n b.layout.cells[id] = { ...layout, ...position };\n });\n },\n [board],\n );\n\n const handleSelect = useCallback<NonNullable<ObjectPickerContentProps['onSelect']>>(\n (id) => {\n if (!pickerState) {\n return;\n }\n\n // Find the selected object by id from the space.\n const selectedObject = objects.find((obj) => obj.id === id);\n if (!Obj.isObject(selectedObject)) {\n return;\n }\n\n // Create a reference to the selected object and add it to the board.\n Obj.change(board, (b) => {\n b.items.push(Ref.make(selectedObject));\n\n // Set the layout position for the new item.\n b.layout.cells[selectedObject.id.toString()] = pickerState.position;\n });\n\n // Close the picker.\n setPickerState(null);\n },\n [pickerState, objects, board],\n );\n\n return (\n <Board.Root ref={controller} layout={board.layout} onAdd={handleAdd} onDelete={handleDelete} onMove={handleMove}>\n <ObjectPicker.Root\n open={!!pickerState}\n onOpenChange={(nextOpen: boolean) => {\n setPickerState(nextOpen ? { position: DEFAULT_POSITION } : null);\n }}\n >\n <Layout.Main role={role} toolbar>\n <Board.Toolbar disabled={!hasAttention} />\n <Board.Container>\n <Board.Viewport classNames='border-none'>\n <Board.Backdrop />\n <Board.Content>\n {items?.map((item, index) => (\n <Board.Cell item={item} key={index} layout={board.layout?.cells[item.id] ?? { x: 0, y: 0 }}>\n <Surface.Surface role='card--content' data={{ subject: item }} limit={1} />\n </Board.Cell>\n ))}\n </Board.Content>\n </Board.Viewport>\n </Board.Container>\n </Layout.Main>\n <ObjectPicker.Content options={options} onSelect={handleSelect} classNames='popover-card-width' />\n <ObjectPicker.VirtualTrigger virtualRef={addTriggerRef} />\n </ObjectPicker.Root>\n </Board.Root>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { trim } from '@dxos/util';\n\nexport const meta: Plugin.Meta = {\n id: 'dxos.org/plugin/board',\n name: 'Board',\n description: trim`\n Infinite canvas workspace that combines sticky notes, media, and whiteboarding tools.\n Arrange and connect ideas freely in a visual space perfect for brainstorming and creative collaboration.\n `,\n icon: 'ph--squares-four--regular',\n iconHue: 'green',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-board',\n screenshots: [],\n};\n"],
5
- "mappings": "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",
6
- "names": ["React", "useCallback", "useMemo", "useRef", "useState", "Surface", "Filter", "Obj", "Ref", "useObject", "useObjects", "invariant", "useQuery", "Layout", "useAttention", "Board", "ObjectPicker", "isNonNullable", "DEFAULT_POSITION", "x", "y", "BoardContainer", "role", "subject", "board", "controller", "boardItems", "items", "addTriggerRef", "pickerState", "setPickerState", "attendableId", "getDXN", "toString", "hasAttention", "db", "getDatabase", "objects", "everything", "options", "filter", "obj", "id", "map", "label", "getLabel", "hue", "sort", "a", "b", "toLocaleLowerCase", "localeCompare", "handleAdd", "anchor", "position", "current", "handleDelete", "idx", "findIndex", "ref", "dxn", "asEchoDXN", "echoId", "change", "splice", "layout", "cells", "handleMove", "handleSelect", "selectedObject", "find", "isObject", "push", "make", "Root", "onAdd", "onDelete", "onMove", "open", "onOpenChange", "nextOpen", "Main", "toolbar", "Toolbar", "disabled", "Container", "Viewport", "classNames", "Backdrop", "Content", "item", "index", "Cell", "key", "data", "limit", "onSelect", "VirtualTrigger", "virtualRef", "trim", "meta", "id", "name", "description", "trim", "icon", "iconHue", "source", "screenshots"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/react-surface/react-surface.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport React from 'react';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { Surface } from '@dxos/app-framework/ui';\nimport { Obj } from '@dxos/echo';\n\nimport { BoardContainer } from '../../components';\nimport { meta } from '../../meta';\nimport { Board } from '../../types';\n\nexport default Capability.makeModule(() =>\n Effect.succeed(\n Capability.contributes(Capabilities.ReactSurface, [\n Surface.create({\n id: meta.id,\n role: ['article', 'section'],\n filter: (data): data is { subject: Board.Board } => Obj.instanceOf(Board.Board, data.subject),\n component: ({ role, data }) => <BoardContainer role={role} subject={data.subject} />,\n }),\n ]),\n ),\n);\n"],
5
- "mappings": ";;;;;;;;;AAIA,YAAYA,YAAY;AACxB,OAAOC,WAAW;AAElB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,eAAe;AACxB,SAASC,WAAW;AAMpB,IAAA,wBAAeC,WAAWC,WAAW,MAC5BC,eACLF,WAAWG,YAAYC,aAAaC,cAAc;EAChDC,QAAQC,OAAO;IACbC,IAAIC,KAAKD;IACTE,MAAM;MAAC;MAAW;;IAClBC,QAAQ,CAACC,SAA2CC,IAAIC,WAAWC,cAAMA,OAAOH,KAAKI,OAAO;IAC5FC,WAAW,CAAC,EAAEP,MAAME,KAAI,MAAO,sBAAA,cAACM,gBAAAA;MAAeR;MAAYM,SAASJ,KAAKI;;EAC3E,CAAA;CACD,CAAA,CAAA;",
6
- "names": ["Effect", "React", "Capabilities", "Capability", "Surface", "Obj", "Capability", "makeModule", "succeed", "contributes", "Capabilities", "ReactSurface", "Surface", "create", "id", "meta", "role", "filter", "data", "Obj", "instanceOf", "Board", "subject", "component", "BoardContainer"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/BoardContainer.tsx", "../../../src/meta.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useMemo, useRef, useState } from 'react';\n\nimport { Surface } from '@dxos/app-framework/ui';\nimport { type SurfaceComponentProps } from '@dxos/app-toolkit/ui';\nimport { Filter, Obj, Ref } from '@dxos/echo';\nimport { useObject, useObjects } from '@dxos/echo-react';\nimport { invariant } from '@dxos/invariant';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { Layout } from '@dxos/react-ui';\nimport { useAttention } from '@dxos/react-ui-attention';\nimport { Board, type BoardController, type BoardRootProps, type Position } from '@dxos/react-ui-board';\nimport { ObjectPicker, type ObjectPickerContentProps } from '@dxos/react-ui-form';\nimport { isNonNullable } from '@dxos/util';\n\nimport { type Board as BoardType } from '../types';\n\nconst DEFAULT_POSITION = { x: 0, y: 0 } satisfies Position;\n\ntype PickerState = {\n position: Position;\n};\n\nexport type BoardContainerProps = SurfaceComponentProps<BoardType.Board>;\n\nexport const BoardContainer = ({ role, subject: board }: BoardContainerProps) => {\n const controller = useRef<BoardController>(null);\n const [boardItems] = useObject(board, 'items');\n const items = useObjects(boardItems ?? []);\n const addTriggerRef = useRef<HTMLButtonElement | null>(null);\n const [pickerState, setPickerState] = useState<PickerState | null>(null);\n const attendableId = Obj.getDXN(board).toString();\n const { hasAttention } = useAttention(attendableId);\n\n const db = Obj.getDatabase(board);\n // TODO(burdon): Use search.\n const objects = useQuery(db, Filter.everything());\n const options = useMemo<ObjectPickerContentProps['options']>(\n () =>\n objects\n .filter((obj) => obj.id !== board.id)\n .map((obj) => {\n const label = Obj.getLabel(obj);\n if (label) {\n return {\n id: obj.id,\n label,\n hue: 'neutral' as const,\n };\n }\n })\n .filter(isNonNullable)\n .sort(({ label: a }, { label: b }) => a.toLocaleLowerCase().localeCompare(b.toLocaleLowerCase())),\n [objects],\n );\n\n const handleAdd = useCallback<NonNullable<BoardRootProps['onAdd']>>(\n async (anchor, position = DEFAULT_POSITION) => {\n const db = Obj.getDatabase(board);\n invariant(db);\n addTriggerRef.current = anchor;\n setPickerState({\n position,\n });\n },\n [board],\n );\n\n // TODO(burdon): Use intents so can be undone.\n const handleDelete = useCallback<NonNullable<BoardRootProps['onDelete']>>(\n (id) => {\n // TODO(burdon): Impl. DXN.equals and pass in DXN from `id`.\n const idx = board.items.findIndex((ref) => ref.dxn.asEchoDXN()?.echoId === id);\n Obj.change(board, (b) => {\n if (idx !== -1) {\n b.items.splice(idx, 1);\n }\n delete b.layout.cells[id];\n });\n },\n [board],\n );\n\n const handleMove = useCallback<NonNullable<BoardRootProps['onMove']>>(\n (id, position) => {\n const layout = board.layout.cells[id];\n Obj.change(board, (b) => {\n b.layout.cells[id] = { ...layout, ...position };\n });\n },\n [board],\n );\n\n const handleSelect = useCallback<NonNullable<ObjectPickerContentProps['onSelect']>>(\n (id) => {\n if (!pickerState) {\n return;\n }\n\n // Find the selected object by id from the space.\n const selectedObject = objects.find((obj) => obj.id === id);\n if (!Obj.isObject(selectedObject)) {\n return;\n }\n\n // Create a reference to the selected object and add it to the board.\n Obj.change(board, (b) => {\n b.items.push(Ref.make(selectedObject));\n\n // Set the layout position for the new item.\n b.layout.cells[selectedObject.id.toString()] = pickerState.position;\n });\n\n // Close the picker.\n setPickerState(null);\n },\n [pickerState, objects, board],\n );\n\n return (\n <Board.Root ref={controller} layout={board.layout} onAdd={handleAdd} onDelete={handleDelete} onMove={handleMove}>\n <ObjectPicker.Root\n open={!!pickerState}\n onOpenChange={(nextOpen: boolean) => {\n setPickerState(nextOpen ? { position: DEFAULT_POSITION } : null);\n }}\n >\n <Layout.Main role={role} toolbar>\n <Board.Toolbar disabled={!hasAttention} />\n <Board.Container>\n <Board.Viewport classNames='border-none'>\n <Board.Backdrop />\n <Board.Content>\n {items?.map((item, index) => (\n <Board.Cell item={item} key={index} layout={board.layout?.cells[item.id] ?? { x: 0, y: 0 }}>\n <Surface.Surface role='card--content' data={{ subject: item }} limit={1} />\n </Board.Cell>\n ))}\n </Board.Content>\n </Board.Viewport>\n </Board.Container>\n </Layout.Main>\n <ObjectPicker.Content options={options} onSelect={handleSelect} classNames='popover-card-width' />\n <ObjectPicker.VirtualTrigger virtualRef={addTriggerRef} />\n </ObjectPicker.Root>\n </Board.Root>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { trim } from '@dxos/util';\n\nexport const meta: Plugin.Meta = {\n id: 'dxos.org/plugin/board',\n name: 'Board',\n description: trim`\n Infinite canvas workspace that combines sticky notes, media, and whiteboarding tools.\n Arrange and connect ideas freely in a visual space perfect for brainstorming and creative collaboration.\n `,\n icon: 'ph--squares-four--regular',\n iconHue: 'green',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-board',\n screenshots: [],\n};\n"],
5
- "mappings": "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",
6
- "names": ["React", "useCallback", "useMemo", "useRef", "useState", "Surface", "Filter", "Obj", "Ref", "useObject", "useObjects", "invariant", "useQuery", "Layout", "useAttention", "Board", "ObjectPicker", "isNonNullable", "DEFAULT_POSITION", "x", "y", "BoardContainer", "role", "subject", "board", "controller", "boardItems", "items", "addTriggerRef", "pickerState", "setPickerState", "attendableId", "getDXN", "toString", "hasAttention", "db", "getDatabase", "objects", "everything", "options", "filter", "obj", "id", "map", "label", "getLabel", "hue", "sort", "a", "b", "toLocaleLowerCase", "localeCompare", "handleAdd", "anchor", "position", "current", "handleDelete", "idx", "findIndex", "ref", "dxn", "asEchoDXN", "echoId", "change", "splice", "layout", "cells", "handleMove", "handleSelect", "selectedObject", "find", "isObject", "push", "make", "Root", "onAdd", "onDelete", "onMove", "open", "onOpenChange", "nextOpen", "Main", "toolbar", "Toolbar", "disabled", "Container", "Viewport", "classNames", "Backdrop", "Content", "item", "index", "Cell", "key", "data", "limit", "onSelect", "VirtualTrigger", "virtualRef", "trim", "meta", "id", "name", "description", "trim", "icon", "iconHue", "source", "screenshots"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/types/Board.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Obj, Type } from '@dxos/echo';\nimport { FormInputAnnotation, LabelAnnotation } from '@dxos/echo/internal';\nimport { BoardLayout, defaultLayout } from '@dxos/react-ui-board';\n\n/**\n * Board and layout.\n */\nexport const Board = Schema.Struct({\n name: Schema.String.pipe(Schema.optional),\n items: Type.Ref(Type.Obj).pipe(Schema.Array, FormInputAnnotation.set(false)),\n layout: BoardLayout.pipe(FormInputAnnotation.set(false)),\n}).pipe(\n Type.object({\n typename: 'dxos.org/type/Board',\n version: '0.1.0',\n }),\n LabelAnnotation.set(['name']),\n);\n\nexport interface Board extends Schema.Schema.Type<typeof Board> {}\n\nexport const makeBoard = (props: Partial<Obj.MakeProps<typeof Board>> = {}) =>\n Obj.make(Board, {\n items: [],\n layout: defaultLayout,\n ...props,\n });\n"],
5
- "mappings": ";;;;;;;;AAAA;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,KAAKC,YAAY;AAC1B,SAASC,qBAAqBC,uBAAuB;AACrD,SAASC,aAAaC,qBAAqB;AAKpC,IAAMC,QAAeC,cAAO;EACjCC,MAAaC,cAAOC,KAAYC,eAAQ;EACxCC,OAAOC,KAAKC,IAAID,KAAKE,GAAG,EAAEL,KAAYM,cAAOC,oBAAoBC,IAAI,KAAA,CAAA;EACrEC,QAAQC,YAAYV,KAAKO,oBAAoBC,IAAI,KAAA,CAAA;AACnD,CAAA,EAAGR,KACDG,KAAKQ,OAAO;EACVC,UAAU;EACVC,SAAS;AACX,CAAA,GACAC,gBAAgBN,IAAI;EAAC;CAAO,CAAA;AAKvB,IAAMO,YAAY,CAACC,QAA8C,CAAC,MACvEX,IAAIY,KAAKrB,OAAO;EACdM,OAAO,CAAA;EACPO,QAAQS;EACR,GAAGF;AACL,CAAA;",
6
- "names": ["Schema", "Obj", "Type", "FormInputAnnotation", "LabelAnnotation", "BoardLayout", "defaultLayout", "Board", "Struct", "name", "String", "pipe", "optional", "items", "Type", "Ref", "Obj", "Array", "FormInputAnnotation", "set", "layout", "BoardLayout", "object", "typename", "version", "LabelAnnotation", "makeBoard", "props", "make", "defaultLayout"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/react-surface/react-surface.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport React from 'react';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { Surface } from '@dxos/app-framework/ui';\nimport { Obj } from '@dxos/echo';\n\nimport { BoardContainer } from '../../components';\nimport { meta } from '../../meta';\nimport { Board } from '../../types';\n\nexport default Capability.makeModule(() =>\n Effect.succeed(\n Capability.contributes(Capabilities.ReactSurface, [\n Surface.create({\n id: meta.id,\n role: ['article', 'section'],\n filter: (data): data is { subject: Board.Board } => Obj.instanceOf(Board.Board, data.subject),\n component: ({ role, data }) => <BoardContainer role={role} subject={data.subject} />,\n }),\n ]),\n ),\n);\n"],
5
- "mappings": ";;;;;;;;;;AAIA,YAAYA,YAAY;AACxB,OAAOC,WAAW;AAElB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,eAAe;AACxB,SAASC,WAAW;AAMpB,IAAA,wBAAeC,WAAWC,WAAW,MAC5BC,eACLF,WAAWG,YAAYC,aAAaC,cAAc;EAChDC,QAAQC,OAAO;IACbC,IAAIC,KAAKD;IACTE,MAAM;MAAC;MAAW;;IAClBC,QAAQ,CAACC,SAA2CC,IAAIC,WAAWC,cAAMA,OAAOH,KAAKI,OAAO;IAC5FC,WAAW,CAAC,EAAEP,MAAME,KAAI,MAAO,sBAAA,cAACM,gBAAAA;MAAeR;MAAYM,SAASJ,KAAKI;;EAC3E,CAAA;CACD,CAAA,CAAA;",
6
- "names": ["Effect", "React", "Capabilities", "Capability", "Surface", "Obj", "Capability", "makeModule", "succeed", "contributes", "Capabilities", "ReactSurface", "Surface", "create", "id", "meta", "role", "filter", "data", "Obj", "instanceOf", "Board", "subject", "component", "BoardContainer"]
7
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"BoardContainer.d.ts","sourceRoot":"","sources":["../../../../src/components/BoardContainer.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAiD,MAAM,OAAO,CAAC;AAGtE,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAWlE,OAAO,EAAE,KAAK,KAAK,IAAI,SAAS,EAAE,MAAM,UAAU,CAAC;AAQnD,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAEzE,eAAO,MAAM,cAAc,GAAI,0BAA0B,mBAAmB,sBA0H3E,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"BoardContainer.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/BoardContainer.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,KAA8B,MAAM,OAAO,CAAC;AAcnD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAkDjC,QAAA,MAAM,IAAI;;;;;;;;yBA9DG,CAAQ,KAAK,CAAC,KAAK,CAAE,QAAO,CAAC;;;;;;;;;;yBAO5B,CAAQ,IAAI,CAAC,EAAE,CAAC;;;;;;;;;;;;;;;;;;;CAmG7B,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC"}