@dxos/plugin-masonry 0.9.1-main.c7dcc2e112 → 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 (50) hide show
  1. package/dist/lib/neutral/{MasonryContainer-VPNOQ32X.mjs → MasonryArticle-3UJZGGFP.mjs} +10 -5
  2. package/dist/lib/neutral/MasonryArticle-3UJZGGFP.mjs.map +7 -0
  3. package/dist/lib/neutral/capabilities/index.mjs +2 -2
  4. package/dist/lib/neutral/{chunk-CNXGZZNQ.mjs → chunk-FPDRFJMS.mjs} +6 -6
  5. package/dist/lib/neutral/chunk-FPDRFJMS.mjs.map +7 -0
  6. package/dist/lib/neutral/containers/index.mjs +2 -2
  7. package/dist/lib/neutral/containers/index.mjs.map +3 -3
  8. package/dist/lib/neutral/{create-object-WRCYV4HT.mjs → create-object-HQGLLFNB.mjs} +1 -2
  9. package/dist/lib/neutral/{create-object-WRCYV4HT.mjs.map → create-object-HQGLLFNB.mjs.map} +3 -3
  10. package/dist/lib/neutral/index.mjs +1 -1
  11. package/dist/lib/neutral/meta.json +1 -1
  12. package/dist/lib/neutral/{react-surface-7CZHE3XA.mjs → react-surface-RE56KT6D.mjs} +3 -3
  13. package/dist/lib/neutral/react-surface-RE56KT6D.mjs.map +7 -0
  14. package/dist/lib/neutral/types/index.mjs +1 -1
  15. package/dist/types/src/capabilities/create-object.d.ts +1 -7
  16. package/dist/types/src/capabilities/create-object.d.ts.map +1 -1
  17. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  18. package/dist/types/src/containers/MasonryArticle/MasonryArticle.d.ts +8 -0
  19. package/dist/types/src/containers/MasonryArticle/MasonryArticle.d.ts.map +1 -0
  20. package/dist/types/src/containers/{MasonryContainer/MasonryContainer.stories.d.ts → MasonryArticle/MasonryArticle.stories.d.ts} +1 -1
  21. package/dist/types/src/containers/MasonryArticle/MasonryArticle.stories.d.ts.map +1 -0
  22. package/dist/types/src/containers/MasonryArticle/index.d.ts +2 -0
  23. package/dist/types/src/containers/MasonryArticle/index.d.ts.map +1 -0
  24. package/dist/types/src/containers/index.d.ts +1 -1
  25. package/dist/types/src/containers/index.d.ts.map +1 -1
  26. package/dist/types/src/meta.d.ts +4 -0
  27. package/dist/types/src/meta.d.ts.map +1 -1
  28. package/dist/types/src/types/Masonry.d.ts +3 -5
  29. package/dist/types/src/types/Masonry.d.ts.map +1 -1
  30. package/dist/types/src/types/MasonryAction.d.ts +1 -1
  31. package/dist/types/src/types/MasonryAction.d.ts.map +1 -1
  32. package/dist/types/tsconfig.tsbuildinfo +1 -1
  33. package/package.json +32 -32
  34. package/src/capabilities/create-object.ts +0 -1
  35. package/src/capabilities/react-surface.tsx +2 -2
  36. package/src/containers/{MasonryContainer/MasonryContainer.stories.tsx → MasonryArticle/MasonryArticle.stories.tsx} +2 -2
  37. package/src/containers/{MasonryContainer/MasonryContainer.tsx → MasonryArticle/MasonryArticle.tsx} +5 -11
  38. package/src/containers/MasonryArticle/index.ts +5 -0
  39. package/src/containers/index.ts +1 -1
  40. package/src/types/Masonry.ts +21 -24
  41. package/src/types/MasonryAction.ts +0 -1
  42. package/dist/lib/neutral/MasonryContainer-VPNOQ32X.mjs.map +0 -7
  43. package/dist/lib/neutral/chunk-CNXGZZNQ.mjs.map +0 -7
  44. package/dist/lib/neutral/react-surface-7CZHE3XA.mjs.map +0 -7
  45. package/dist/types/src/containers/MasonryContainer/MasonryContainer.d.ts +0 -11
  46. package/dist/types/src/containers/MasonryContainer/MasonryContainer.d.ts.map +0 -1
  47. package/dist/types/src/containers/MasonryContainer/MasonryContainer.stories.d.ts.map +0 -1
  48. package/dist/types/src/containers/MasonryContainer/index.d.ts +0 -2
  49. package/dist/types/src/containers/MasonryContainer/index.d.ts.map +0 -1
  50. package/src/containers/MasonryContainer/index.ts +0 -5
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-masonry",
3
- "version": "0.9.1-main.c7dcc2e112",
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",
@@ -75,43 +75,43 @@
75
75
  "PLUGIN.mdl"
76
76
  ],
77
77
  "dependencies": {
78
- "@dxos/app-framework": "0.9.1-main.c7dcc2e112",
79
- "@dxos/compute": "0.9.1-main.c7dcc2e112",
80
- "@dxos/effect": "0.9.1-main.c7dcc2e112",
81
- "@dxos/echo": "0.9.1-main.c7dcc2e112",
82
- "@dxos/plugin-space": "0.9.1-main.c7dcc2e112",
83
- "@dxos/plugin-client": "0.9.1-main.c7dcc2e112",
84
- "@dxos/app-toolkit": "0.9.1-main.c7dcc2e112",
85
- "@dxos/keys": "0.9.1-main.c7dcc2e112",
86
- "@dxos/react-client": "0.9.1-main.c7dcc2e112",
87
- "@dxos/react-ui": "0.9.1-main.c7dcc2e112",
88
- "@dxos/react-ui-masonry": "0.9.1-main.c7dcc2e112",
89
- "@dxos/react-ui-search": "0.9.1-main.c7dcc2e112",
90
- "@dxos/react-ui-menu": "0.9.1-main.c7dcc2e112",
91
- "@dxos/types": "0.9.1-main.c7dcc2e112",
92
- "@dxos/schema": "0.9.1-main.c7dcc2e112",
93
- "@dxos/util": "0.9.1-main.c7dcc2e112"
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"
94
94
  },
95
95
  "devDependencies": {
96
- "@types/react": "~19.2.7",
96
+ "@types/react": "~19.2.17",
97
97
  "@types/react-dom": "~19.2.3",
98
- "effect": "3.21.3",
99
- "react": "~19.2.3",
100
- "react-dom": "~19.2.3",
98
+ "effect": "3.21.4",
99
+ "react": "~19.2.7",
100
+ "react-dom": "~19.2.7",
101
101
  "vite": "^8.0.16",
102
- "@dxos/plugin-preview": "0.9.1-main.c7dcc2e112",
103
- "@dxos/plugin-theme": "0.9.1-main.c7dcc2e112",
104
- "@dxos/storybook-utils": "0.9.1-main.c7dcc2e112",
105
- "@dxos/random": "0.9.1-main.c7dcc2e112",
106
- "@dxos/plugin-testing": "0.9.1-main.c7dcc2e112",
107
- "@dxos/ui-theme": "0.9.1-main.c7dcc2e112"
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"
108
108
  },
109
109
  "peerDependencies": {
110
- "effect": "3.21.3",
111
- "react": "~19.2.3",
112
- "react-dom": "~19.2.3",
113
- "@dxos/react-ui": "0.9.1-main.c7dcc2e112",
114
- "@dxos/ui-theme": "0.9.1-main.c7dcc2e112"
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"
115
115
  },
116
116
  "publishConfig": {
117
117
  "access": "public"
@@ -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 = {
@@ -16,18 +16,12 @@ 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>
@@ -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'));
@@ -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, Icon, IconButton, 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.Block>\n <Icon icon={icon} />\n </Card.Block>\n <Card.Title>{Obj.getLabel(data, { fallback: 'typename' })}</Card.Title>\n {/* TODO(wittjosiah): Reconcile with Card.Menu. */}\n <Card.Block end>\n <Menu.Trigger asChild disabled={!objectMenuItems?.length}>\n <IconButton iconOnly variant='ghost' icon='ph--dots-three-vertical--regular' label='Actions' />\n </Menu.Trigger>\n <Menu.Content items={objectMenuItems} />\n </Card.Block>\n </Card.Header>\n <Surface.Surface\n type={AppSurface.CardContent}\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", "Icon", "IconButton", "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", "Block", "Title", "fallback", "end", "Trigger", "disabled", "length", "iconOnly", "variant", "label", "type", "CardContent", "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/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';