@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.
- 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.9.1-
|
|
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-
|
|
79
|
-
"@dxos/compute": "0.9.1-
|
|
80
|
-
"@dxos/
|
|
81
|
-
"@dxos/echo": "0.9.1-
|
|
82
|
-
"@dxos/
|
|
83
|
-
"@dxos/plugin-client": "0.9.1-
|
|
84
|
-
"@dxos/
|
|
85
|
-
"@dxos/
|
|
86
|
-
"@dxos/react-client": "0.9.1-
|
|
87
|
-
"@dxos/react-ui": "0.9.1-
|
|
88
|
-
"@dxos/react-ui-masonry": "0.9.1-
|
|
89
|
-
"@dxos/react-ui-search": "0.9.1-
|
|
90
|
-
"@dxos/
|
|
91
|
-
"@dxos/
|
|
92
|
-
"@dxos/
|
|
93
|
-
"@dxos/
|
|
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.
|
|
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.9.1-
|
|
103
|
-
"@dxos/plugin-theme": "0.9.1-
|
|
104
|
-
"@dxos/
|
|
105
|
-
"@dxos/random": "0.9.1-
|
|
106
|
-
"@dxos/
|
|
107
|
-
"@dxos/ui-theme": "0.9.1-
|
|
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.
|
|
111
|
-
"react": "~19.2.
|
|
112
|
-
"react-dom": "~19.2.
|
|
113
|
-
"@dxos/react-ui": "0.9.1-
|
|
114
|
-
"@dxos/ui-theme": "0.9.1-
|
|
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"
|
|
@@ -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"}
|