@dxos/plugin-masonry 0.9.1-main.c7dcc2e112 → 0.10.0
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.
- package/dist/lib/neutral/{MasonryContainer-VPNOQ32X.mjs → MasonryArticle-3UJZGGFP.mjs} +10 -5
- package/dist/lib/neutral/MasonryArticle-3UJZGGFP.mjs.map +7 -0
- package/dist/lib/neutral/capabilities/index.mjs +2 -2
- package/dist/lib/neutral/{chunk-CNXGZZNQ.mjs → chunk-FPDRFJMS.mjs} +6 -6
- package/dist/lib/neutral/chunk-FPDRFJMS.mjs.map +7 -0
- package/dist/lib/neutral/containers/index.mjs +2 -2
- package/dist/lib/neutral/containers/index.mjs.map +3 -3
- package/dist/lib/neutral/{create-object-WRCYV4HT.mjs → create-object-HQGLLFNB.mjs} +1 -2
- package/dist/lib/neutral/{create-object-WRCYV4HT.mjs.map → create-object-HQGLLFNB.mjs.map} +3 -3
- package/dist/lib/neutral/index.mjs +1 -1
- package/dist/lib/neutral/meta.json +1 -1
- package/dist/lib/neutral/{react-surface-7CZHE3XA.mjs → react-surface-RE56KT6D.mjs} +3 -3
- package/dist/lib/neutral/react-surface-RE56KT6D.mjs.map +7 -0
- package/dist/lib/neutral/types/index.mjs +1 -1
- package/dist/types/src/capabilities/create-object.d.ts +1 -7
- package/dist/types/src/capabilities/create-object.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts +1 -1
- package/dist/types/src/containers/MasonryArticle/MasonryArticle.d.ts +8 -0
- package/dist/types/src/containers/MasonryArticle/MasonryArticle.d.ts.map +1 -0
- package/dist/types/src/containers/{MasonryContainer/MasonryContainer.stories.d.ts → MasonryArticle/MasonryArticle.stories.d.ts} +1 -1
- package/dist/types/src/containers/MasonryArticle/MasonryArticle.stories.d.ts.map +1 -0
- package/dist/types/src/containers/MasonryArticle/index.d.ts +2 -0
- package/dist/types/src/containers/MasonryArticle/index.d.ts.map +1 -0
- package/dist/types/src/containers/index.d.ts +1 -1
- package/dist/types/src/containers/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +4 -0
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/types/Masonry.d.ts +3 -5
- package/dist/types/src/types/Masonry.d.ts.map +1 -1
- package/dist/types/src/types/MasonryAction.d.ts +1 -1
- package/dist/types/src/types/MasonryAction.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +32 -32
- package/src/capabilities/create-object.ts +0 -1
- package/src/capabilities/react-surface.tsx +2 -2
- package/src/containers/{MasonryContainer/MasonryContainer.stories.tsx → MasonryArticle/MasonryArticle.stories.tsx} +2 -2
- package/src/containers/{MasonryContainer/MasonryContainer.tsx → MasonryArticle/MasonryArticle.tsx} +5 -11
- package/src/containers/MasonryArticle/index.ts +5 -0
- package/src/containers/index.ts +1 -1
- package/src/types/Masonry.ts +21 -24
- package/src/types/MasonryAction.ts +0 -1
- package/dist/lib/neutral/MasonryContainer-VPNOQ32X.mjs.map +0 -7
- package/dist/lib/neutral/chunk-CNXGZZNQ.mjs.map +0 -7
- package/dist/lib/neutral/react-surface-7CZHE3XA.mjs.map +0 -7
- package/dist/types/src/containers/MasonryContainer/MasonryContainer.d.ts +0 -11
- package/dist/types/src/containers/MasonryContainer/MasonryContainer.d.ts.map +0 -1
- package/dist/types/src/containers/MasonryContainer/MasonryContainer.stories.d.ts.map +0 -1
- package/dist/types/src/containers/MasonryContainer/index.d.ts +0 -2
- package/dist/types/src/containers/MasonryContainer/index.d.ts.map +0 -1
- 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.
|
|
3
|
+
"version": "0.10.0",
|
|
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.
|
|
79
|
-
"@dxos/
|
|
80
|
-
"@dxos/
|
|
81
|
-
"@dxos/
|
|
82
|
-
"@dxos/
|
|
83
|
-
"@dxos/
|
|
84
|
-
"@dxos/
|
|
85
|
-
"@dxos/
|
|
86
|
-
"@dxos/
|
|
87
|
-
"@dxos/react-
|
|
88
|
-
"@dxos/react-ui-
|
|
89
|
-
"@dxos/react-ui-search": "0.
|
|
90
|
-
"@dxos/
|
|
91
|
-
"@dxos/types": "0.
|
|
92
|
-
"@dxos/
|
|
93
|
-
"@dxos/
|
|
78
|
+
"@dxos/app-framework": "0.10.0",
|
|
79
|
+
"@dxos/app-toolkit": "0.10.0",
|
|
80
|
+
"@dxos/compute": "0.10.0",
|
|
81
|
+
"@dxos/keys": "0.10.0",
|
|
82
|
+
"@dxos/effect": "0.10.0",
|
|
83
|
+
"@dxos/echo": "0.10.0",
|
|
84
|
+
"@dxos/plugin-client": "0.10.0",
|
|
85
|
+
"@dxos/react-ui": "0.10.0",
|
|
86
|
+
"@dxos/plugin-space": "0.10.0",
|
|
87
|
+
"@dxos/react-client": "0.10.0",
|
|
88
|
+
"@dxos/react-ui-menu": "0.10.0",
|
|
89
|
+
"@dxos/react-ui-search": "0.10.0",
|
|
90
|
+
"@dxos/schema": "0.10.0",
|
|
91
|
+
"@dxos/types": "0.10.0",
|
|
92
|
+
"@dxos/util": "0.10.0",
|
|
93
|
+
"@dxos/react-ui-masonry": "0.10.0"
|
|
94
94
|
},
|
|
95
95
|
"devDependencies": {
|
|
96
|
-
"@types/react": "~19.2.
|
|
96
|
+
"@types/react": "~19.2.17",
|
|
97
97
|
"@types/react-dom": "~19.2.3",
|
|
98
|
-
"effect": "3.21.
|
|
99
|
-
"react": "~19.2.
|
|
100
|
-
"react-dom": "~19.2.
|
|
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.
|
|
103
|
-
"@dxos/plugin-
|
|
104
|
-
"@dxos/
|
|
105
|
-
"@dxos/random": "0.
|
|
106
|
-
"@dxos/
|
|
107
|
-
"@dxos/ui-theme": "0.
|
|
102
|
+
"@dxos/plugin-preview": "0.10.0",
|
|
103
|
+
"@dxos/plugin-testing": "0.10.0",
|
|
104
|
+
"@dxos/plugin-theme": "0.10.0",
|
|
105
|
+
"@dxos/random": "0.10.0",
|
|
106
|
+
"@dxos/storybook-utils": "0.10.0",
|
|
107
|
+
"@dxos/ui-theme": "0.10.0"
|
|
108
108
|
},
|
|
109
109
|
"peerDependencies": {
|
|
110
|
-
"effect": "3.21.
|
|
111
|
-
"react": "~19.2.
|
|
112
|
-
"react-dom": "~19.2.
|
|
113
|
-
"@dxos/react-ui": "0.
|
|
114
|
-
"@dxos/ui-theme": "0.
|
|
110
|
+
"effect": "3.21.4",
|
|
111
|
+
"react": "~19.2.7",
|
|
112
|
+
"react-dom": "~19.2.7",
|
|
113
|
+
"@dxos/react-ui": "0.10.0",
|
|
114
|
+
"@dxos/ui-theme": "0.10.0"
|
|
115
115
|
},
|
|
116
116
|
"publishConfig": {
|
|
117
117
|
"access": "public"
|
|
@@ -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 {
|
|
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 <
|
|
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 {
|
|
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 ? <
|
|
33
|
+
return masonry ? <MasonryArticle view={masonry.view} role='story' /> : null;
|
|
34
34
|
};
|
|
35
35
|
|
|
36
36
|
const meta = {
|
package/src/containers/{MasonryContainer/MasonryContainer.tsx → MasonryArticle/MasonryArticle.tsx}
RENAMED
|
@@ -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
|
|
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
|
|
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>
|
package/src/containers/index.ts
CHANGED
package/src/types/Masonry.ts
CHANGED
|
@@ -4,36 +4,33 @@
|
|
|
4
4
|
|
|
5
5
|
import * as Schema from 'effect/Schema';
|
|
6
6
|
|
|
7
|
-
// QueryAST is referenced indirectly through
|
|
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 {
|
|
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
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
Schema.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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;
|
|
@@ -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 +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"}
|