@dxos/plugin-masonry 0.8.4-staging.60fe92afc8 → 0.9.1-main.c7dcc2e112
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/PLUGIN.mdl +5 -5
- package/dist/lib/neutral/{MasonryContainer-7CXOATRR.mjs → MasonryContainer-VPNOQ32X.mjs} +10 -8
- package/dist/lib/neutral/MasonryContainer-VPNOQ32X.mjs.map +7 -0
- package/dist/lib/neutral/MasonryPlugin.mjs +3 -3
- package/dist/lib/neutral/MasonryPlugin.mjs.map +4 -4
- package/dist/lib/neutral/{chunk-IJ2FIXSI.mjs → chunk-U6BPS6LO.mjs} +21 -12
- package/dist/lib/neutral/chunk-U6BPS6LO.mjs.map +7 -0
- package/dist/lib/neutral/containers/index.mjs +1 -1
- package/dist/lib/neutral/index.mjs +1 -1
- package/dist/lib/neutral/meta.json +1 -1
- package/dist/lib/neutral/meta.mjs +1 -1
- package/dist/lib/neutral/plugin.mjs +1 -1
- package/dist/lib/neutral/translations.mjs +1 -1
- package/dist/lib/neutral/translations.mjs.map +3 -3
- package/dist/types/dx.config.d.ts +28 -0
- package/dist/types/dx.config.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +2 -7
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts +2 -2
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +28 -2
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dx.config.ts +31 -0
- package/package.json +26 -25
- package/src/MasonryPlugin.test.ts +1 -1
- package/src/MasonryPlugin.tsx +1 -1
- package/src/containers/MasonryContainer/MasonryContainer.tsx +11 -7
- package/src/meta.ts +2 -24
- package/src/translations.ts +1 -1
- package/dist/lib/neutral/MasonryContainer-7CXOATRR.mjs.map +0 -7
- package/dist/lib/neutral/chunk-IJ2FIXSI.mjs.map +0 -7
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.
|
|
3
|
+
"version": "0.9.1-main.c7dcc2e112",
|
|
4
4
|
"description": "Masonry DXOS Surface plugin",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -70,26 +70,27 @@
|
|
|
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-
|
|
78
|
-
"@dxos/
|
|
79
|
-
"@dxos/
|
|
80
|
-
"@dxos/
|
|
81
|
-
"@dxos/
|
|
82
|
-
"@dxos/
|
|
83
|
-
"@dxos/
|
|
84
|
-
"@dxos/
|
|
85
|
-
"@dxos/
|
|
86
|
-
"@dxos/react-ui": "0.
|
|
87
|
-
"@dxos/react-ui-
|
|
88
|
-
"@dxos/react-ui-search": "0.
|
|
89
|
-
"@dxos/react-ui-
|
|
90
|
-
"@dxos/types": "0.
|
|
91
|
-
"@dxos/schema": "0.
|
|
92
|
-
"@dxos/util": "0.
|
|
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"
|
|
93
94
|
},
|
|
94
95
|
"devDependencies": {
|
|
95
96
|
"@types/react": "~19.2.7",
|
|
@@ -98,19 +99,19 @@
|
|
|
98
99
|
"react": "~19.2.3",
|
|
99
100
|
"react-dom": "~19.2.3",
|
|
100
101
|
"vite": "^8.0.16",
|
|
101
|
-
"@dxos/plugin-preview": "0.
|
|
102
|
-
"@dxos/plugin-
|
|
103
|
-
"@dxos/storybook-utils": "0.
|
|
104
|
-
"@dxos/
|
|
105
|
-
"@dxos/
|
|
106
|
-
"@dxos/
|
|
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"
|
|
107
108
|
},
|
|
108
109
|
"peerDependencies": {
|
|
109
110
|
"effect": "3.21.3",
|
|
110
111
|
"react": "~19.2.3",
|
|
111
112
|
"react-dom": "~19.2.3",
|
|
112
|
-
"@dxos/react-ui": "0.
|
|
113
|
-
"@dxos/ui-theme": "0.
|
|
113
|
+
"@dxos/react-ui": "0.9.1-main.c7dcc2e112",
|
|
114
|
+
"@dxos/ui-theme": "0.9.1-main.c7dcc2e112"
|
|
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.
|
|
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 }) => {
|
package/src/MasonryPlugin.tsx
CHANGED
|
@@ -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.
|
|
22
|
+
asset: { pluginId: meta.profile.key, path: 'PLUGIN.mdl', content: pluginSpec, mimeType: 'application/x-mdl' },
|
|
23
23
|
}),
|
|
24
24
|
Plugin.make,
|
|
25
25
|
);
|
|
@@ -9,7 +9,7 @@ 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';
|
|
@@ -102,16 +102,20 @@ const Item = ({ data }: { data: any }) => {
|
|
|
102
102
|
<Menu.Root>
|
|
103
103
|
<Card.Root>
|
|
104
104
|
<Card.Header>
|
|
105
|
-
<Card.
|
|
105
|
+
<Card.Block>
|
|
106
|
+
<Icon icon={icon} />
|
|
107
|
+
</Card.Block>
|
|
106
108
|
<Card.Title>{Obj.getLabel(data, { fallback: 'typename' })}</Card.Title>
|
|
107
109
|
{/* TODO(wittjosiah): Reconcile with Card.Menu. */}
|
|
108
|
-
<
|
|
109
|
-
<
|
|
110
|
-
|
|
111
|
-
|
|
110
|
+
<Card.Block end>
|
|
111
|
+
<Menu.Trigger asChild disabled={!objectMenuItems?.length}>
|
|
112
|
+
<IconButton iconOnly variant='ghost' icon='ph--dots-three-vertical--regular' label='Actions' />
|
|
113
|
+
</Menu.Trigger>
|
|
114
|
+
<Menu.Content items={objectMenuItems} />
|
|
115
|
+
</Card.Block>
|
|
112
116
|
</Card.Header>
|
|
113
117
|
<Surface.Surface
|
|
114
|
-
type={AppSurface.
|
|
118
|
+
type={AppSurface.CardContent}
|
|
115
119
|
limit={1}
|
|
116
120
|
data={{ subject: data } satisfies AppSurface.ObjectCardData}
|
|
117
121
|
/>
|
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
|
-
|
|
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
|
-
|
|
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);
|
package/src/translations.ts
CHANGED
|
@@ -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/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
|
-
}
|