@dxos/plugin-masonry 0.9.0 → 0.9.1-staging.ee54ba693a

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 (70) hide show
  1. package/PLUGIN.mdl +5 -5
  2. package/dist/lib/neutral/{MasonryContainer-7CXOATRR.mjs → MasonryArticle-3UJZGGFP.mjs} +19 -12
  3. package/dist/lib/neutral/MasonryArticle-3UJZGGFP.mjs.map +7 -0
  4. package/dist/lib/neutral/MasonryPlugin.mjs +3 -3
  5. package/dist/lib/neutral/MasonryPlugin.mjs.map +4 -4
  6. package/dist/lib/neutral/capabilities/index.mjs +2 -2
  7. package/dist/lib/neutral/{chunk-CNXGZZNQ.mjs → chunk-FPDRFJMS.mjs} +6 -6
  8. package/dist/lib/neutral/chunk-FPDRFJMS.mjs.map +7 -0
  9. package/dist/lib/neutral/{chunk-IJ2FIXSI.mjs → chunk-U6BPS6LO.mjs} +21 -12
  10. package/dist/lib/neutral/chunk-U6BPS6LO.mjs.map +7 -0
  11. package/dist/lib/neutral/containers/index.mjs +2 -2
  12. package/dist/lib/neutral/containers/index.mjs.map +3 -3
  13. package/dist/lib/neutral/{create-object-WRCYV4HT.mjs → create-object-HQGLLFNB.mjs} +1 -2
  14. package/dist/lib/neutral/{create-object-WRCYV4HT.mjs.map → create-object-HQGLLFNB.mjs.map} +3 -3
  15. package/dist/lib/neutral/index.mjs +2 -2
  16. package/dist/lib/neutral/meta.json +1 -1
  17. package/dist/lib/neutral/meta.mjs +1 -1
  18. package/dist/lib/neutral/plugin.mjs +1 -1
  19. package/dist/lib/neutral/{react-surface-7CZHE3XA.mjs → react-surface-RE56KT6D.mjs} +3 -3
  20. package/dist/lib/neutral/react-surface-RE56KT6D.mjs.map +7 -0
  21. package/dist/lib/neutral/translations.mjs +1 -1
  22. package/dist/lib/neutral/translations.mjs.map +3 -3
  23. package/dist/lib/neutral/types/index.mjs +1 -1
  24. package/dist/types/dx.config.d.ts +28 -0
  25. package/dist/types/dx.config.d.ts.map +1 -0
  26. package/dist/types/src/capabilities/create-object.d.ts +1 -7
  27. package/dist/types/src/capabilities/create-object.d.ts.map +1 -1
  28. package/dist/types/src/capabilities/index.d.ts +2 -7
  29. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  30. package/dist/types/src/capabilities/react-surface.d.ts +2 -2
  31. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  32. package/dist/types/src/containers/MasonryArticle/MasonryArticle.d.ts +8 -0
  33. package/dist/types/src/containers/MasonryArticle/MasonryArticle.d.ts.map +1 -0
  34. package/dist/types/src/containers/{MasonryContainer/MasonryContainer.stories.d.ts → MasonryArticle/MasonryArticle.stories.d.ts} +1 -1
  35. package/dist/types/src/containers/MasonryArticle/MasonryArticle.stories.d.ts.map +1 -0
  36. package/dist/types/src/containers/MasonryArticle/index.d.ts +2 -0
  37. package/dist/types/src/containers/MasonryArticle/index.d.ts.map +1 -0
  38. package/dist/types/src/containers/index.d.ts +1 -1
  39. package/dist/types/src/containers/index.d.ts.map +1 -1
  40. package/dist/types/src/meta.d.ts +32 -2
  41. package/dist/types/src/meta.d.ts.map +1 -1
  42. package/dist/types/src/types/Masonry.d.ts +3 -5
  43. package/dist/types/src/types/Masonry.d.ts.map +1 -1
  44. package/dist/types/src/types/MasonryAction.d.ts +1 -1
  45. package/dist/types/src/types/MasonryAction.d.ts.map +1 -1
  46. package/dist/types/tsconfig.tsbuildinfo +1 -1
  47. package/dx.config.ts +31 -0
  48. package/package.json +33 -32
  49. package/src/MasonryPlugin.test.ts +1 -1
  50. package/src/MasonryPlugin.tsx +1 -1
  51. package/src/capabilities/create-object.ts +0 -1
  52. package/src/capabilities/react-surface.tsx +2 -2
  53. package/src/containers/{MasonryContainer/MasonryContainer.stories.tsx → MasonryArticle/MasonryArticle.stories.tsx} +2 -2
  54. package/src/containers/{MasonryContainer/MasonryContainer.tsx → MasonryArticle/MasonryArticle.tsx} +16 -18
  55. package/src/containers/MasonryArticle/index.ts +5 -0
  56. package/src/containers/index.ts +1 -1
  57. package/src/meta.ts +2 -24
  58. package/src/translations.ts +1 -1
  59. package/src/types/Masonry.ts +21 -24
  60. package/src/types/MasonryAction.ts +0 -1
  61. package/dist/lib/neutral/MasonryContainer-7CXOATRR.mjs.map +0 -7
  62. package/dist/lib/neutral/chunk-CNXGZZNQ.mjs.map +0 -7
  63. package/dist/lib/neutral/chunk-IJ2FIXSI.mjs.map +0 -7
  64. package/dist/lib/neutral/react-surface-7CZHE3XA.mjs.map +0 -7
  65. package/dist/types/src/containers/MasonryContainer/MasonryContainer.d.ts +0 -11
  66. package/dist/types/src/containers/MasonryContainer/MasonryContainer.d.ts.map +0 -1
  67. package/dist/types/src/containers/MasonryContainer/MasonryContainer.stories.d.ts.map +0 -1
  68. package/dist/types/src/containers/MasonryContainer/index.d.ts +0 -2
  69. package/dist/types/src/containers/MasonryContainer/index.d.ts.map +0 -1
  70. package/src/containers/MasonryContainer/index.ts +0 -5
package/dx.config.ts ADDED
@@ -0,0 +1,31 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Config2 } from '@dxos/app-framework/config';
6
+ import { trim } from '@dxos/util';
7
+
8
+ export default Config2.make({
9
+ plugin: {
10
+ key: 'org.dxos.plugin.masonry',
11
+ name: 'Masonry',
12
+ author: 'DXOS',
13
+ description: trim`
14
+ Masonry renders a live, query-driven collection as a responsive column-balanced card grid.
15
+
16
+ A Masonry object wraps an ECHO View that defines which objects to show and in what order.
17
+ As objects are added or removed — by any peer — the grid reflows automatically, keeping cards
18
+ balanced across columns without manual arrangement.
19
+
20
+ Each card delegates its body to a Surface slot, so other plugins can supply rich, type-specific
21
+ content while Masonry handles layout, search, and context menus.
22
+
23
+ A built-in search bar filters cards client-side by label without modifying the underlying query,
24
+ making it easy to explore large collections without leaving the view.
25
+ `,
26
+ source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-masonry',
27
+ icon: { key: 'ph--wall--regular', hue: 'teal' },
28
+ spec: 'PLUGIN.mdl',
29
+ screenshots: [],
30
+ },
31
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-masonry",
3
- "version": "0.9.0",
3
+ "version": "0.9.1-staging.ee54ba693a",
4
4
  "description": "Masonry DXOS Surface plugin",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -70,47 +70,48 @@
70
70
  "types": "dist/types/src/index.d.ts",
71
71
  "files": [
72
72
  "dist",
73
+ "dx.config.ts",
73
74
  "src",
74
75
  "PLUGIN.mdl"
75
76
  ],
76
77
  "dependencies": {
77
- "@dxos/app-framework": "0.9.0",
78
- "@dxos/compute": "0.9.0",
79
- "@dxos/echo": "0.9.0",
80
- "@dxos/keys": "0.9.0",
81
- "@dxos/app-toolkit": "0.9.0",
82
- "@dxos/effect": "0.9.0",
83
- "@dxos/plugin-client": "0.9.0",
84
- "@dxos/react-client": "0.9.0",
85
- "@dxos/react-ui-masonry": "0.9.0",
86
- "@dxos/react-ui": "0.9.0",
87
- "@dxos/react-ui-search": "0.9.0",
88
- "@dxos/react-ui-menu": "0.9.0",
89
- "@dxos/plugin-space": "0.9.0",
90
- "@dxos/util": "0.9.0",
91
- "@dxos/types": "0.9.0",
92
- "@dxos/schema": "0.9.0"
78
+ "@dxos/app-framework": "0.9.1-staging.ee54ba693a",
79
+ "@dxos/compute": "0.9.1-staging.ee54ba693a",
80
+ "@dxos/app-toolkit": "0.9.1-staging.ee54ba693a",
81
+ "@dxos/echo": "0.9.1-staging.ee54ba693a",
82
+ "@dxos/effect": "0.9.1-staging.ee54ba693a",
83
+ "@dxos/plugin-client": "0.9.1-staging.ee54ba693a",
84
+ "@dxos/keys": "0.9.1-staging.ee54ba693a",
85
+ "@dxos/plugin-space": "0.9.1-staging.ee54ba693a",
86
+ "@dxos/react-client": "0.9.1-staging.ee54ba693a",
87
+ "@dxos/react-ui-menu": "0.9.1-staging.ee54ba693a",
88
+ "@dxos/react-ui-masonry": "0.9.1-staging.ee54ba693a",
89
+ "@dxos/react-ui-search": "0.9.1-staging.ee54ba693a",
90
+ "@dxos/schema": "0.9.1-staging.ee54ba693a",
91
+ "@dxos/util": "0.9.1-staging.ee54ba693a",
92
+ "@dxos/types": "0.9.1-staging.ee54ba693a",
93
+ "@dxos/react-ui": "0.9.1-staging.ee54ba693a"
93
94
  },
94
95
  "devDependencies": {
95
- "@types/react": "~19.2.7",
96
+ "@types/react": "~19.2.17",
96
97
  "@types/react-dom": "~19.2.3",
97
- "effect": "3.21.3",
98
- "react": "~19.2.3",
99
- "react-dom": "~19.2.3",
98
+ "effect": "3.21.4",
99
+ "react": "~19.2.7",
100
+ "react-dom": "~19.2.7",
100
101
  "vite": "^8.0.16",
101
- "@dxos/random": "0.9.0",
102
- "@dxos/plugin-preview": "0.9.0",
103
- "@dxos/plugin-testing": "0.9.0",
104
- "@dxos/plugin-theme": "0.9.0",
105
- "@dxos/storybook-utils": "0.9.0",
106
- "@dxos/ui-theme": "0.9.0"
102
+ "@dxos/plugin-preview": "0.9.1-staging.ee54ba693a",
103
+ "@dxos/plugin-theme": "0.9.1-staging.ee54ba693a",
104
+ "@dxos/plugin-testing": "0.9.1-staging.ee54ba693a",
105
+ "@dxos/random": "0.9.1-staging.ee54ba693a",
106
+ "@dxos/storybook-utils": "0.9.1-staging.ee54ba693a",
107
+ "@dxos/ui-theme": "0.9.1-staging.ee54ba693a"
107
108
  },
108
109
  "peerDependencies": {
109
- "effect": "3.21.3",
110
- "react": "~19.2.3",
111
- "react-dom": "~19.2.3",
112
- "@dxos/react-ui": "0.9.0",
113
- "@dxos/ui-theme": "0.9.0"
110
+ "effect": "3.21.4",
111
+ "react": "~19.2.7",
112
+ "react-dom": "~19.2.7",
113
+ "@dxos/react-ui": "0.9.1-staging.ee54ba693a",
114
+ "@dxos/ui-theme": "0.9.1-staging.ee54ba693a"
114
115
  },
115
116
  "publishConfig": {
116
117
  "access": "public"
@@ -11,7 +11,7 @@ import { MasonryPlugin } from '#plugin';
11
11
 
12
12
  import { meta } from './meta';
13
13
 
14
- const moduleId = (name: string) => `${meta.id}.module.${name}`;
14
+ const moduleId = (name: string) => `${meta.profile.key}.module.${name}`;
15
15
 
16
16
  describe('MasonryPlugin', () => {
17
17
  test('modules activate on the expected events', async ({ expect }) => {
@@ -19,7 +19,7 @@ export const MasonryPlugin = Plugin.define(meta).pipe(
19
19
  AppPlugin.addSurfaceModule({ activate: ReactSurface }),
20
20
  AppPlugin.addTranslationsModule({ translations }),
21
21
  AppPlugin.addPluginAssetModule({
22
- asset: { pluginId: meta.id, path: 'PLUGIN.mdl', content: pluginSpec, mimeType: 'application/x-mdl' },
22
+ asset: { pluginId: meta.profile.key, path: 'PLUGIN.mdl', content: pluginSpec, mimeType: 'application/x-mdl' },
23
23
  }),
24
24
  Plugin.make,
25
25
  );
@@ -27,7 +27,6 @@ export default Capability.makeModule(
27
27
  return yield* Operation.invoke(SpaceOperation.AddObject, {
28
28
  object,
29
29
  target: options.target,
30
- hidden: true,
31
30
  targetNodeId: options.targetNodeId,
32
31
  });
33
32
  }),
@@ -10,7 +10,7 @@ import { Surface } from '@dxos/app-framework/ui';
10
10
  import { AppSurface } from '@dxos/app-toolkit/ui';
11
11
  import { Obj, View } from '@dxos/echo';
12
12
 
13
- import { MasonryContainer } from '#containers';
13
+ import { MasonryArticle } from '#containers';
14
14
  import { Masonry } from '#types';
15
15
 
16
16
  export default Capability.makeModule(() =>
@@ -25,7 +25,7 @@ export default Capability.makeModule(() =>
25
25
  ),
26
26
  component: ({ data, role }) => {
27
27
  const view = Obj.instanceOf(View.View, data.subject) ? data.subject : data.subject.view;
28
- return <MasonryContainer view={view} role={role} />;
28
+ return <MasonryArticle view={view} role={role} />;
29
29
  },
30
30
  }),
31
31
  ]),
@@ -20,7 +20,7 @@ import { Organization } from '@dxos/types';
20
20
 
21
21
  import { Masonry } from '#types';
22
22
 
23
- import { MasonryContainer } from './MasonryContainer';
23
+ import { MasonryArticle } from './MasonryArticle';
24
24
 
25
25
  random.seed(0);
26
26
 
@@ -30,7 +30,7 @@ const StorybookMasonry = () => {
30
30
  const masonries = useQuery(space?.db, Filter.type(Masonry.Masonry));
31
31
  const [masonry] = useObject(masonries.at(0));
32
32
 
33
- return masonry ? <MasonryContainer view={masonry.view} role='story' /> : null;
33
+ return masonry ? <MasonryArticle view={masonry.view} role='story' /> : null;
34
34
  };
35
35
 
36
36
  const meta = {
@@ -9,25 +9,19 @@ import { AppCapabilities } from '@dxos/app-toolkit';
9
9
  import { AppSurface, useObjectMenuItems, useSchemaFilter } from '@dxos/app-toolkit/ui';
10
10
  import { Filter, Obj, Query, type Ref, Type, type View } from '@dxos/echo';
11
11
  import { useObject, useQuery } from '@dxos/react-client/echo';
12
- import { Card, Panel, Toolbar } from '@dxos/react-ui';
12
+ import { Card, Icon, IconButton, Panel, Toolbar } from '@dxos/react-ui';
13
13
  import { Masonry as MasonryComponent } from '@dxos/react-ui-masonry';
14
14
  import { Menu } from '@dxos/react-ui-menu';
15
15
  import { SearchList, useSearchListResults } from '@dxos/react-ui-search';
16
16
  import { getTagFromQuery, getTypeURIFromQuery } from '@dxos/schema';
17
17
  import { isNonNullable } from '@dxos/util';
18
18
 
19
- export type MasonryContainerProps = {
20
- view: View.View;
19
+ export type MasonryArticleProps = {
20
+ view: View.View | Ref.Ref<View.View>;
21
21
  role?: string;
22
22
  };
23
23
 
24
- export const MasonryContainer = ({
25
- view: viewOrRef,
26
- role: _role,
27
- }: {
28
- view: View.View | Ref.Ref<View.View>;
29
- role?: string;
30
- }) => {
24
+ export const MasonryArticle = ({ view: viewOrRef, role: _role }: MasonryArticleProps) => {
31
25
  const [view] = useObject(viewOrRef);
32
26
  const schemas = useCapabilities(AppCapabilities.Schema);
33
27
  const db = view && Obj.getDatabase(view);
@@ -83,8 +77,8 @@ export const MasonryContainer = ({
83
77
  <SearchList.Input placeholder='Search...' />
84
78
  </Toolbar.Root>
85
79
  </Panel.Toolbar>
86
- <Panel.Content>
87
- <MasonryComponent.Content>
80
+ <Panel.Content classNames='pt-trim-md'>
81
+ <MasonryComponent.Content padding centered>
88
82
  <MasonryComponent.Viewport items={results} getId={(data: any) => data?.id} />
89
83
  </MasonryComponent.Content>
90
84
  </Panel.Content>
@@ -102,16 +96,20 @@ const Item = ({ data }: { data: any }) => {
102
96
  <Menu.Root>
103
97
  <Card.Root>
104
98
  <Card.Header>
105
- <Card.Icon icon={icon} />
99
+ <Card.Block>
100
+ <Icon icon={icon} />
101
+ </Card.Block>
106
102
  <Card.Title>{Obj.getLabel(data, { fallback: 'typename' })}</Card.Title>
107
103
  {/* TODO(wittjosiah): Reconcile with Card.Menu. */}
108
- <Menu.Trigger asChild disabled={!objectMenuItems?.length}>
109
- <Toolbar.IconButton iconOnly variant='ghost' icon='ph--dots-three-vertical--regular' label='Actions' />
110
- </Menu.Trigger>
111
- <Menu.Content items={objectMenuItems} />
104
+ <Card.Block end>
105
+ <Menu.Trigger asChild disabled={!objectMenuItems?.length}>
106
+ <IconButton iconOnly variant='ghost' icon='ph--dots-three-vertical--regular' label='Actions' />
107
+ </Menu.Trigger>
108
+ <Menu.Content items={objectMenuItems} />
109
+ </Card.Block>
112
110
  </Card.Header>
113
111
  <Surface.Surface
114
- type={AppSurface.Card}
112
+ type={AppSurface.CardContent}
115
113
  limit={1}
116
114
  data={{ subject: data } satisfies AppSurface.ObjectCardData}
117
115
  />
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ export { MasonryArticle as default } from './MasonryArticle';
@@ -4,4 +4,4 @@
4
4
 
5
5
  import { type ComponentType, lazy } from 'react';
6
6
 
7
- export const MasonryContainer: ComponentType<any> = lazy(() => import('./MasonryContainer'));
7
+ export const MasonryArticle: ComponentType<any> = lazy(() => import('./MasonryArticle'));
package/src/meta.ts CHANGED
@@ -3,29 +3,7 @@
3
3
  //
4
4
 
5
5
  import { Plugin } from '@dxos/app-framework';
6
- import { DXN } from '@dxos/keys';
7
- import { trim } from '@dxos/util';
8
6
 
9
- export const meta = Plugin.makeMeta({
10
- key: DXN.make('org.dxos.plugin.masonry'),
11
- name: 'Masonry',
12
- author: 'DXOS',
13
- description: trim`
14
- Masonry renders a live, query-driven collection as a responsive column-balanced card grid.
7
+ import config from '../dx.config';
15
8
 
16
- A Masonry object wraps an ECHO View that defines which objects to show and in what order.
17
- As objects are added or removed — by any peer — the grid reflows automatically, keeping cards
18
- balanced across columns without manual arrangement.
19
-
20
- Each card delegates its body to a Surface slot, so other plugins can supply rich, type-specific
21
- content while Masonry handles layout, search, and context menus.
22
-
23
- A built-in search bar filters cards client-side by label without modifying the underlying query,
24
- making it easy to explore large collections without leaving the view.
25
- `,
26
- icon: 'ph--wall--regular',
27
- iconHue: 'teal',
28
- source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-masonry',
29
- spec: 'PLUGIN.mdl',
30
- screenshots: [],
31
- });
9
+ export const meta = Plugin.getMetaFromConfig(config);
@@ -22,7 +22,7 @@ export const translations = [
22
22
  'delete-object.label': 'Delete masonry',
23
23
  'object-deleted.label': 'Masonry deleted',
24
24
  },
25
- [meta.id]: {
25
+ [meta.profile.key]: {
26
26
  'plugin.name': 'Masonry',
27
27
  },
28
28
  },
@@ -4,36 +4,33 @@
4
4
 
5
5
  import * as Schema from 'effect/Schema';
6
6
 
7
- // QueryAST is referenced indirectly through `Type.InstanceType<typeof MasonrySchema>`
7
+ // QueryAST is referenced indirectly through the Masonry class
8
8
  // (Ref.Ref(View.View) → View.View → QueryAST.Query) in the emitted .d.ts; the
9
9
  // namespace import keeps the inferred types portable.
10
10
  // eslint-disable-next-line unused-imports/no-unused-imports
11
- import { DXN, Annotation, Obj, QueryAST, Ref, Type, View } from '@dxos/echo';
11
+ import { Annotation, DXN, Obj, QueryAST, Ref, Type, View } from '@dxos/echo';
12
12
  import { FormInputAnnotation, LabelAnnotation } from '@dxos/echo/Annotation';
13
13
  import { ViewAnnotation } from '@dxos/schema';
14
14
 
15
- const MasonrySchema = Schema.Struct({
16
- name: Schema.String.pipe(Schema.optional),
17
-
18
- view: Ref.Ref(View.View).pipe(FormInputAnnotation.set(false)),
19
-
20
- arrangement: Schema.Array(
21
- Schema.Struct({
22
- ids: Schema.Array(Obj.ID),
23
- hidden: Schema.optional(Schema.Boolean),
24
- }),
25
- ).pipe(FormInputAnnotation.set(false), Schema.optional),
26
- // TODO(wittjosiah): Consider Masonry supporting not being just a view but referencing arbitrary data directly.
27
- }).pipe(
28
- LabelAnnotation.set(['name']),
29
- ViewAnnotation.set(['view']),
30
- Annotation.IconAnnotation.set({ icon: 'ph--wall--regular', hue: 'green' }),
31
- Type.makeObject(DXN.make('org.dxos.type.masonry', '0.1.0')),
32
- );
33
-
34
- // TODO(wittjosiah): Try to clean up this type inference.
35
- export interface Masonry extends Type.InstanceType<typeof MasonrySchema> {}
36
- export const Masonry: Type.Obj<Masonry> = MasonrySchema as any;
15
+ export class Masonry extends Type.makeObject<Masonry>(DXN.make('org.dxos.type.masonry', '0.1.0'))(
16
+ Schema.Struct({
17
+ name: Schema.String.pipe(Schema.optional),
18
+
19
+ view: Ref.Ref(View.View).pipe(FormInputAnnotation.set(false)),
20
+
21
+ arrangement: Schema.Array(
22
+ Schema.Struct({
23
+ ids: Schema.Array(Obj.ID),
24
+ hidden: Schema.optional(Schema.Boolean),
25
+ }),
26
+ ).pipe(FormInputAnnotation.set(false), Schema.optional),
27
+ // TODO(wittjosiah): Consider Masonry supporting not being just a view but referencing arbitrary data directly.
28
+ }).pipe(
29
+ LabelAnnotation.set(['name']),
30
+ ViewAnnotation.set(['view']),
31
+ Annotation.IconAnnotation.set({ icon: 'ph--wall--regular', hue: 'green' }),
32
+ ),
33
+ ) {}
37
34
 
38
35
  type MakeProps = Omit<Partial<Obj.MakeProps<typeof Masonry>>, 'view'> & {
39
36
  view: View.View;
@@ -15,6 +15,5 @@ export const MasonryProps = Schema.Struct({
15
15
  location: ['database', 'runtime'],
16
16
  kind: ['user'],
17
17
  }),
18
- Schema.optional,
19
18
  ),
20
19
  });
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/containers/MasonryContainer/MasonryContainer.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useEffect, useMemo, useState } from 'react';\n\nimport { Surface, useCapabilities } from '@dxos/app-framework/ui';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport { AppSurface, useObjectMenuItems, useSchemaFilter } from '@dxos/app-toolkit/ui';\nimport { Filter, Obj, Query, type Ref, Type, type View } from '@dxos/echo';\nimport { useObject, useQuery } from '@dxos/react-client/echo';\nimport { Card, Panel, Toolbar } from '@dxos/react-ui';\nimport { Masonry as MasonryComponent } from '@dxos/react-ui-masonry';\nimport { Menu } from '@dxos/react-ui-menu';\nimport { SearchList, useSearchListResults } from '@dxos/react-ui-search';\nimport { getTagFromQuery, getTypeURIFromQuery } from '@dxos/schema';\nimport { isNonNullable } from '@dxos/util';\n\nexport type MasonryContainerProps = {\n view: View.View;\n role?: string;\n};\n\nexport const MasonryContainer = ({\n view: viewOrRef,\n role: _role,\n}: {\n view: View.View | Ref.Ref<View.View>;\n role?: string;\n}) => {\n const [view] = useObject(viewOrRef);\n const schemas = useCapabilities(AppCapabilities.Schema);\n const db = view && Obj.getDatabase(view);\n const typeUri = view?.query ? getTypeURIFromQuery(view.query.ast) : undefined;\n const tag = view?.query ? getTagFromQuery(view.query.ast) : undefined;\n\n const [cardSchema, setCardSchema] = useState<Type.AnyEntity>();\n\n useEffect(() => {\n const staticSchema = schemas.flat().find((schema) => Type.getURI(schema) === typeUri);\n if (staticSchema) {\n setCardSchema(() => staticSchema);\n return;\n }\n if (typeUri && db) {\n const findInRegistry = () =>\n db.graph.registry\n .list()\n .filter(Type.isType)\n .find((t) => Type.getURI(t) === typeUri);\n setCardSchema(() => findInRegistry());\n return db.graph.registry.changed.on(() => {\n setCardSchema(() => findInRegistry());\n });\n }\n setCardSchema(undefined);\n }, [schemas, typeUri, db]);\n\n const baseFilter = useSchemaFilter(cardSchema);\n const query = useMemo(\n () => (tag ? Query.select(baseFilter).select(Filter.tag(tag)) : Query.select(baseFilter)),\n [baseFilter, tag],\n );\n const objects = useQuery(db, query);\n\n const sortedObjects = useMemo(\n () =>\n objects.filter(isNonNullable).toSorted((a, b) => (Obj.getLabel(a) ?? '').localeCompare(Obj.getLabel(b) ?? '')),\n [objects],\n );\n\n const { results, handleSearch } = useSearchListResults({\n items: sortedObjects,\n extract: (obj) => Obj.getLabel(obj) ?? '',\n });\n\n return (\n <MasonryComponent.Root Tile={Item}>\n <SearchList.Root onSearch={handleSearch}>\n <Panel.Root>\n <Panel.Toolbar asChild>\n <Toolbar.Root>\n <SearchList.Input placeholder='Search...' />\n </Toolbar.Root>\n </Panel.Toolbar>\n <Panel.Content>\n <MasonryComponent.Content>\n <MasonryComponent.Viewport items={results} getId={(data: any) => data?.id} />\n </MasonryComponent.Content>\n </Panel.Content>\n </Panel.Root>\n </SearchList.Root>\n </MasonryComponent.Root>\n );\n};\n\nconst Item = ({ data }: { data: any }) => {\n const objectMenuItems = useObjectMenuItems(data);\n const icon = Obj.getIcon(data)?.icon ?? 'ph--circle-dashed--regular';\n\n return (\n <Menu.Root>\n <Card.Root>\n <Card.Header>\n <Card.Icon icon={icon} />\n <Card.Title>{Obj.getLabel(data, { fallback: 'typename' })}</Card.Title>\n {/* TODO(wittjosiah): Reconcile with Card.Menu. */}\n <Menu.Trigger asChild disabled={!objectMenuItems?.length}>\n <Toolbar.IconButton iconOnly variant='ghost' icon='ph--dots-three-vertical--regular' label='Actions' />\n </Menu.Trigger>\n <Menu.Content items={objectMenuItems} />\n </Card.Header>\n <Surface.Surface\n type={AppSurface.Card}\n limit={1}\n data={{ subject: data } satisfies AppSurface.ObjectCardData}\n />\n </Card.Root>\n </Menu.Root>\n );\n};\n"],
5
- "mappings": "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",
6
- "names": ["React", "useEffect", "useMemo", "useState", "Surface", "useCapabilities", "AppCapabilities", "AppSurface", "useObjectMenuItems", "useSchemaFilter", "Filter", "Obj", "Query", "Type", "useObject", "useQuery", "Card", "Panel", "Toolbar", "Masonry", "MasonryComponent", "Menu", "SearchList", "useSearchListResults", "getTagFromQuery", "getTypeURIFromQuery", "isNonNullable", "MasonryContainer", "view", "viewOrRef", "role", "_role", "schemas", "Schema", "db", "getDatabase", "typeUri", "query", "ast", "undefined", "tag", "cardSchema", "setCardSchema", "staticSchema", "flat", "find", "schema", "getURI", "findInRegistry", "graph", "registry", "list", "filter", "isType", "t", "changed", "on", "baseFilter", "select", "objects", "sortedObjects", "toSorted", "a", "b", "getLabel", "localeCompare", "results", "handleSearch", "items", "extract", "obj", "Root", "Tile", "Item", "onSearch", "asChild", "Input", "placeholder", "Content", "Viewport", "getId", "data", "id", "objectMenuItems", "icon", "getIcon", "Header", "Icon", "Title", "fallback", "Trigger", "disabled", "length", "IconButton", "iconOnly", "variant", "label", "type", "limit", "subject"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/types/Masonry.ts", "../../../src/types/MasonryAction.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\n// QueryAST is referenced indirectly through `Type.InstanceType<typeof MasonrySchema>`\n// (Ref.Ref(View.View) → View.View → QueryAST.Query) in the emitted .d.ts; the\n// namespace import keeps the inferred types portable.\n// eslint-disable-next-line unused-imports/no-unused-imports\nimport { DXN, Annotation, Obj, QueryAST, Ref, Type, View } from '@dxos/echo';\nimport { FormInputAnnotation, LabelAnnotation } from '@dxos/echo/Annotation';\nimport { ViewAnnotation } from '@dxos/schema';\n\nconst MasonrySchema = Schema.Struct({\n name: Schema.String.pipe(Schema.optional),\n\n view: Ref.Ref(View.View).pipe(FormInputAnnotation.set(false)),\n\n arrangement: Schema.Array(\n Schema.Struct({\n ids: Schema.Array(Obj.ID),\n hidden: Schema.optional(Schema.Boolean),\n }),\n ).pipe(FormInputAnnotation.set(false), Schema.optional),\n // TODO(wittjosiah): Consider Masonry supporting not being just a view but referencing arbitrary data directly.\n}).pipe(\n LabelAnnotation.set(['name']),\n ViewAnnotation.set(['view']),\n Annotation.IconAnnotation.set({ icon: 'ph--wall--regular', hue: 'green' }),\n Type.makeObject(DXN.make('org.dxos.type.masonry', '0.1.0')),\n);\n\n// TODO(wittjosiah): Try to clean up this type inference.\nexport interface Masonry extends Type.InstanceType<typeof MasonrySchema> {}\nexport const Masonry: Type.Obj<Masonry> = MasonrySchema as any;\n\ntype MakeProps = Omit<Partial<Obj.MakeProps<typeof Masonry>>, 'view'> & {\n view: View.View;\n};\n\n/**\n * Make a masonry as a view of a data set.\n */\nexport const make = ({ name, arrangement = [], view }: MakeProps): Masonry => {\n return Obj.make(Masonry, { name, view: Ref.make(view), arrangement });\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { TypeInputOptionsAnnotation } from '@dxos/plugin-space';\n\nexport const MasonryProps = Schema.Struct({\n name: Schema.optional(Schema.String),\n // TODO(wittjosiah): This should be a query input instead.\n typename: Schema.String.pipe(\n Schema.annotations({ title: 'Select card type' }),\n TypeInputOptionsAnnotation.set({\n location: ['database', 'runtime'],\n kind: ['user'],\n }),\n Schema.optional,\n ),\n});\n"],
5
- "mappings": ";;;;;AAAA;;;;;AAIA,YAAYA,YAAY;AAMxB,SAASC,KAAKC,YAAYC,KAAeC,KAAKC,MAAMC,YAAY;AAChE,SAASC,qBAAqBC,uBAAuB;AACrD,SAASC,sBAAsB;AAE/B,IAAMC,gBAAuBC,cAAO;EAClCC,MAAaC,cAAOC,KAAYC,eAAQ;EAExCC,MAAMZ,IAAIA,IAAIE,KAAKA,IAAI,EAAEQ,KAAKP,oBAAoBU,IAAI,KAAA,CAAA;EAEtDC,aAAoBC,aACXR,cAAO;IACZS,KAAYD,aAAMhB,IAAIkB,EAAE;IACxBC,QAAeP,gBAAgBQ,cAAO;EACxC,CAAA,CAAA,EACAT,KAAKP,oBAAoBU,IAAI,KAAA,GAAeF,eAAQ;AAExD,CAAA,EAAGD,KACDN,gBAAgBS,IAAI;EAAC;CAAO,GAC5BR,eAAeQ,IAAI;EAAC;CAAO,GAC3Bf,WAAWsB,eAAeP,IAAI;EAAEQ,MAAM;EAAqBC,KAAK;AAAQ,CAAA,GACxErB,KAAKsB,WAAW1B,IAAI2B,KAAK,yBAAyB,OAAA,CAAA,CAAA;AAK7C,IAAMC,UAA6BnB;AASnC,IAAMkB,OAAO,CAAC,EAAEhB,MAAMM,cAAc,CAAA,GAAIF,KAAI,MAAa;AAC9D,SAAOb,IAAIyB,KAAKC,SAAS;IAAEjB;IAAMI,MAAMZ,IAAIwB,KAAKZ,IAAAA;IAAOE;EAAY,CAAA;AACrE;;;AC9CA;;;;AAIA,YAAYY,aAAY;AAExB,SAASC,kCAAkC;AAEpC,IAAMC,eAAsBC,eAAO;EACxCC,MAAaC,iBAAgBC,cAAM;;EAEnCC,UAAiBD,eAAOE,KACfC,oBAAY;IAAEC,OAAO;EAAmB,CAAA,GAC/CT,2BAA2BU,IAAI;IAC7BC,UAAU;MAAC;MAAY;;IACvBC,MAAM;MAAC;;EACT,CAAA,GACOR,gBAAQ;AAEnB,CAAA;",
6
- "names": ["Schema", "DXN", "Annotation", "Obj", "Ref", "Type", "View", "FormInputAnnotation", "LabelAnnotation", "ViewAnnotation", "MasonrySchema", "Struct", "name", "String", "pipe", "optional", "view", "set", "arrangement", "Array", "ids", "ID", "hidden", "Boolean", "IconAnnotation", "icon", "hue", "makeObject", "make", "Masonry", "Schema", "TypeInputOptionsAnnotation", "MasonryProps", "Struct", "name", "optional", "String", "typename", "pipe", "annotations", "title", "set", "location", "kind"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/meta.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\nimport { DXN } from '@dxos/keys';\nimport { trim } from '@dxos/util';\n\nexport const meta = Plugin.makeMeta({\n key: DXN.make('org.dxos.plugin.masonry'),\n name: 'Masonry',\n author: 'DXOS',\n description: trim`\n Masonry renders a live, query-driven collection as a responsive column-balanced card grid.\n\n A Masonry object wraps an ECHO View that defines which objects to show and in what order.\n As objects are added or removed — by any peer — the grid reflows automatically, keeping cards\n balanced across columns without manual arrangement.\n\n Each card delegates its body to a Surface slot, so other plugins can supply rich, type-specific\n content while Masonry handles layout, search, and context menus.\n\n A built-in search bar filters cards client-side by label without modifying the underlying query,\n making it easy to explore large collections without leaving the view.\n `,\n icon: 'ph--wall--regular',\n iconHue: 'teal',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-masonry',\n spec: 'PLUGIN.mdl',\n screenshots: [],\n});\n"],
5
- "mappings": ";AAIA,SAASA,cAAc;AACvB,SAASC,WAAW;AACpB,SAASC,YAAY;AAEd,IAAMC,OAAOH,OAAOI,SAAS;EAClCC,KAAKJ,IAAIK,KAAK,yBAAA;EACdC,MAAM;EACNC,QAAQ;EACRC,aAAaP;;;;;;;;;;;;;EAabQ,MAAM;EACNC,SAAS;EACTC,QAAQ;EACRC,MAAM;EACNC,aAAa,CAAA;AACf,CAAA;",
6
- "names": ["Plugin", "DXN", "trim", "meta", "makeMeta", "key", "make", "name", "author", "description", "icon", "iconHue", "source", "spec", "screenshots"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/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 { AppSurface } from '@dxos/app-toolkit/ui';\nimport { Obj, View } from '@dxos/echo';\n\nimport { MasonryContainer } from '#containers';\nimport { Masonry } from '#types';\n\nexport default Capability.makeModule(() =>\n Effect.succeed(\n Capability.contributes(Capabilities.ReactSurface, [\n Surface.create({\n id: 'root',\n // TODO(wittjosiah): Split into multiple surfaces if this filter proves too strict for non-article roles.\n filter: AppSurface.oneOf(\n AppSurface.object(AppSurface.Article, [Masonry.Masonry, View.View]),\n AppSurface.object(AppSurface.Section, [Masonry.Masonry, View.View]),\n ),\n component: ({ data, role }) => {\n const view = Obj.instanceOf(View.View, data.subject) ? data.subject : data.subject.view;\n return <MasonryContainer view={view} role={role} />;\n },\n }),\n ]),\n ),\n);\n"],
5
- "mappings": ";;;AAIA,YAAYA,YAAY;AACxB,OAAOC,WAAW;AAElB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,eAAe;AACxB,SAASC,kBAAkB;AAC3B,SAASC,KAAKC,YAAY;AAE1B,SAASC,wBAAwB;AACjC,SAASC,eAAe;AAExB,IAAA,wBAAeN,WAAWO,WAAW,MAC5BC,eACLR,WAAWS,YAAYV,aAAaW,cAAc;EAChDT,QAAQU,OAAO;IACbC,IAAI;;IAEJC,QAAQX,WAAWY,MACjBZ,WAAWa,OAAOb,WAAWc,SAAS;MAACV,QAAQA;MAASF,KAAKA;KAAK,GAClEF,WAAWa,OAAOb,WAAWe,SAAS;MAACX,QAAQA;MAASF,KAAKA;KAAK,CAAA;IAEpEc,WAAW,CAAC,EAAEC,MAAMC,KAAI,MAAE;AACxB,YAAMC,OAAOlB,IAAImB,WAAWlB,KAAKA,MAAMe,KAAKI,OAAO,IAAIJ,KAAKI,UAAUJ,KAAKI,QAAQF;AACnF,aAAO,sBAAA,cAAChB,kBAAAA;QAAiBgB;QAAYD;;IACvC;EACF,CAAA;CACD,CAAA,CAAA;",
6
- "names": ["Effect", "React", "Capabilities", "Capability", "Surface", "AppSurface", "Obj", "View", "MasonryContainer", "Masonry", "makeModule", "succeed", "contributes", "ReactSurface", "create", "id", "filter", "oneOf", "object", "Article", "Section", "component", "data", "role", "view", "instanceOf", "subject"]
7
- }
@@ -1,11 +0,0 @@
1
- import React from 'react';
2
- import { type Ref, type View } from '@dxos/echo';
3
- export type MasonryContainerProps = {
4
- view: View.View;
5
- role?: string;
6
- };
7
- export declare const MasonryContainer: ({ view: viewOrRef, role: _role, }: {
8
- view: View.View | Ref.Ref<View.View>;
9
- role?: string;
10
- }) => React.JSX.Element;
11
- //# sourceMappingURL=MasonryContainer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MasonryContainer.d.ts","sourceRoot":"","sources":["../../../../../src/containers/MasonryContainer/MasonryContainer.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAK5D,OAAO,EAAsB,KAAK,GAAG,EAAQ,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAS3E,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,gBAAgB,sCAG1B;IACD,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,sBAiEA,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"MasonryContainer.stories.d.ts","sourceRoot":"","sources":["../../../../../src/containers/MasonryContainer/MasonryContainer.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,KAAK,MAAM,OAAO,CAAC;AA6B1B,QAAA,MAAM,IAAI;;;;;;QAkCN,MAAM;;CAEM,CAAC;eAEF,IAAI;AAEnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC"}
@@ -1,2 +0,0 @@
1
- export { MasonryContainer as default } from './MasonryContainer';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/containers/MasonryContainer/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,IAAI,OAAO,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1,5 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- export { MasonryContainer as default } from './MasonryContainer';