@dxos/plugin-masonry 0.8.4-main.c351d160a8 → 0.8.4-main.d9fc60f731

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 (102) hide show
  1. package/LICENSE +102 -5
  2. package/PLUGIN.mdl +328 -0
  3. package/README.md +1 -1
  4. package/dist/lib/neutral/MasonryContainer-XXJXCOOA.mjs +96 -0
  5. package/dist/lib/neutral/MasonryContainer-XXJXCOOA.mjs.map +7 -0
  6. package/dist/lib/neutral/MasonryPlugin.mjs +38 -0
  7. package/dist/lib/neutral/MasonryPlugin.mjs.map +7 -0
  8. package/dist/lib/neutral/capabilities/index.mjs +11 -0
  9. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  10. package/dist/lib/neutral/chunk-IJ2FIXSI.mjs +32 -0
  11. package/dist/lib/neutral/chunk-IJ2FIXSI.mjs.map +7 -0
  12. package/dist/lib/{browser/chunk-ANLADCDB.mjs → neutral/chunk-SS54S63V.mjs} +10 -11
  13. package/dist/lib/neutral/chunk-SS54S63V.mjs.map +7 -0
  14. package/dist/lib/neutral/components/index.mjs +1 -0
  15. package/dist/lib/neutral/containers/index.mjs +9 -0
  16. package/dist/lib/neutral/containers/index.mjs.map +7 -0
  17. package/dist/lib/neutral/create-object-WRCYV4HT.mjs +39 -0
  18. package/dist/lib/neutral/create-object-WRCYV4HT.mjs.map +7 -0
  19. package/dist/lib/neutral/index.mjs +14 -0
  20. package/dist/lib/neutral/meta.json +1 -0
  21. package/dist/lib/neutral/meta.mjs +8 -0
  22. package/dist/lib/neutral/plugin.mjs +12 -0
  23. package/dist/lib/neutral/plugin.mjs.map +7 -0
  24. package/dist/lib/{browser/react-surface-E3X4DF5N.mjs → neutral/react-surface-7CZHE3XA.mjs} +15 -22
  25. package/dist/lib/neutral/react-surface-7CZHE3XA.mjs.map +7 -0
  26. package/dist/lib/neutral/translations.mjs +30 -0
  27. package/dist/lib/neutral/translations.mjs.map +7 -0
  28. package/dist/lib/{browser → neutral}/types/index.mjs +1 -1
  29. package/dist/lib/neutral/types/index.mjs.map +7 -0
  30. package/dist/types/src/MasonryPlugin.d.ts +1 -0
  31. package/dist/types/src/MasonryPlugin.d.ts.map +1 -1
  32. package/dist/types/src/MasonryPlugin.test.d.ts +2 -0
  33. package/dist/types/src/MasonryPlugin.test.d.ts.map +1 -0
  34. package/dist/types/src/capabilities/create-object.d.ts +11 -0
  35. package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
  36. package/dist/types/src/capabilities/index.d.ts +8 -1
  37. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  38. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  39. package/dist/types/src/containers/MasonryContainer/MasonryContainer.d.ts +1 -2
  40. package/dist/types/src/containers/MasonryContainer/MasonryContainer.d.ts.map +1 -1
  41. package/dist/types/src/containers/MasonryContainer/MasonryContainer.stories.d.ts.map +1 -1
  42. package/dist/types/src/containers/MasonryContainer/index.d.ts +1 -2
  43. package/dist/types/src/containers/MasonryContainer/index.d.ts.map +1 -1
  44. package/dist/types/src/index.d.ts +1 -1
  45. package/dist/types/src/index.d.ts.map +1 -1
  46. package/dist/types/src/meta.d.ts +1 -1
  47. package/dist/types/src/meta.d.ts.map +1 -1
  48. package/dist/types/src/plugin.d.ts +3 -0
  49. package/dist/types/src/plugin.d.ts.map +1 -0
  50. package/dist/types/src/translations.d.ts +20 -20
  51. package/dist/types/src/translations.d.ts.map +1 -1
  52. package/dist/types/src/types/Masonry.d.ts +6 -6
  53. package/dist/types/src/types/Masonry.d.ts.map +1 -1
  54. package/dist/types/tsconfig.tsbuildinfo +1 -1
  55. package/package.json +79 -46
  56. package/src/MasonryPlugin.test.ts +26 -0
  57. package/src/MasonryPlugin.tsx +13 -26
  58. package/src/capabilities/create-object.ts +36 -0
  59. package/src/capabilities/index.ts +4 -1
  60. package/src/capabilities/{react-surface/react-surface.tsx → react-surface.tsx} +10 -9
  61. package/src/containers/MasonryContainer/MasonryContainer.stories.tsx +11 -13
  62. package/src/containers/MasonryContainer/MasonryContainer.tsx +63 -41
  63. package/src/containers/MasonryContainer/index.ts +1 -3
  64. package/src/index.ts +1 -2
  65. package/src/meta.ts +19 -7
  66. package/src/plugin.ts +9 -0
  67. package/src/translations.ts +12 -12
  68. package/src/types/Masonry.ts +12 -13
  69. package/src/types/MasonryAction.ts +1 -1
  70. package/src/vite-env.d.ts +10 -0
  71. package/dist/lib/browser/MasonryContainer-Q7VPG6YS.mjs +0 -84
  72. package/dist/lib/browser/MasonryContainer-Q7VPG6YS.mjs.map +0 -7
  73. package/dist/lib/browser/chunk-7W5GV4MG.mjs +0 -19
  74. package/dist/lib/browser/chunk-7W5GV4MG.mjs.map +0 -7
  75. package/dist/lib/browser/chunk-ANLADCDB.mjs.map +0 -7
  76. package/dist/lib/browser/index.mjs +0 -78
  77. package/dist/lib/browser/index.mjs.map +0 -7
  78. package/dist/lib/browser/meta.json +0 -1
  79. package/dist/lib/browser/react-surface-E3X4DF5N.mjs.map +0 -7
  80. package/dist/lib/node-esm/MasonryContainer-NQGW3OZD.mjs +0 -85
  81. package/dist/lib/node-esm/MasonryContainer-NQGW3OZD.mjs.map +0 -7
  82. package/dist/lib/node-esm/chunk-CCWUD5KF.mjs +0 -21
  83. package/dist/lib/node-esm/chunk-CCWUD5KF.mjs.map +0 -7
  84. package/dist/lib/node-esm/chunk-GHHWMU6E.mjs +0 -68
  85. package/dist/lib/node-esm/chunk-GHHWMU6E.mjs.map +0 -7
  86. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
  87. package/dist/lib/node-esm/index.mjs +0 -79
  88. package/dist/lib/node-esm/index.mjs.map +0 -7
  89. package/dist/lib/node-esm/meta.json +0 -1
  90. package/dist/lib/node-esm/react-surface-4C6BZVEJ.mjs +0 -43
  91. package/dist/lib/node-esm/react-surface-4C6BZVEJ.mjs.map +0 -7
  92. package/dist/lib/node-esm/types/index.mjs +0 -11
  93. package/dist/types/src/capabilities/react-surface/index.d.ts +0 -3
  94. package/dist/types/src/capabilities/react-surface/index.d.ts.map +0 -1
  95. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +0 -1
  96. package/src/capabilities/react-surface/index.ts +0 -7
  97. /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs +0 -0
  98. /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs.map +0 -0
  99. /package/dist/lib/{browser/types → neutral/components}/index.mjs.map +0 -0
  100. /package/dist/lib/{node-esm/types → neutral}/index.mjs.map +0 -0
  101. /package/dist/lib/{node-esm/chunk-HSLMI22Q.mjs.map → neutral/meta.mjs.map} +0 -0
  102. /package/dist/types/src/capabilities/{react-surface/react-surface.d.ts → react-surface.d.ts} +0 -0
@@ -4,12 +4,15 @@
4
4
 
5
5
  import * as Schema from 'effect/Schema';
6
6
 
7
- import { Annotation, Obj, Ref, Type } from '@dxos/echo';
8
- import { View } from '@dxos/echo';
7
+ // QueryAST is referenced indirectly through `Type.InstanceType<typeof MasonrySchema>`
8
+ // (Ref.Ref(View.View) View.View QueryAST.Query) in the emitted .d.ts; the
9
+ // namespace import keeps the inferred types portable.
10
+ // eslint-disable-next-line unused-imports/no-unused-imports
11
+ import { DXN, Annotation, Obj, QueryAST, Ref, Type, View } from '@dxos/echo';
9
12
  import { FormInputAnnotation, LabelAnnotation } from '@dxos/echo/internal';
10
13
  import { ViewAnnotation } from '@dxos/schema';
11
14
 
12
- export const Masonry = Schema.Struct({
15
+ const MasonrySchema = Schema.Struct({
13
16
  name: Schema.String.pipe(Schema.optional),
14
17
 
15
18
  view: Ref.Ref(View.View).pipe(FormInputAnnotation.set(false)),
@@ -22,19 +25,15 @@ export const Masonry = Schema.Struct({
22
25
  ).pipe(FormInputAnnotation.set(false), Schema.optional),
23
26
  // TODO(wittjosiah): Consider Masonry supporting not being just a view but referencing arbitrary data directly.
24
27
  }).pipe(
25
- Type.object({
26
- typename: 'org.dxos.type.masonry',
27
- version: '0.1.0',
28
- }),
29
28
  LabelAnnotation.set(['name']),
30
- ViewAnnotation.set(true),
31
- Annotation.IconAnnotation.set({
32
- icon: 'ph--wall--regular',
33
- hue: 'green',
34
- }),
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')),
35
32
  );
36
33
 
37
- export interface Masonry extends Schema.Schema.Type<typeof Masonry> {}
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;
38
37
 
39
38
  type MakeProps = Omit<Partial<Obj.MakeProps<typeof Masonry>>, 'view'> & {
40
39
  view: View.View;
@@ -4,7 +4,7 @@
4
4
 
5
5
  import * as Schema from 'effect/Schema';
6
6
 
7
- import { TypeInputOptionsAnnotation } from '@dxos/plugin-space/types';
7
+ import { TypeInputOptionsAnnotation } from '@dxos/plugin-space';
8
8
 
9
9
  export const MasonryProps = Schema.Struct({
10
10
  name: Schema.optional(Schema.String),
@@ -0,0 +1,10 @@
1
+ /// <reference types="vite/client" />
2
+
3
+ //
4
+ // Copyright 2026 DXOS.org
5
+ //
6
+
7
+ declare module '*.mdl?raw' {
8
+ const content: string;
9
+ export default content;
10
+ }
@@ -1,84 +0,0 @@
1
- import "./chunk-J5LGTIGS.mjs";
2
-
3
- // src/containers/MasonryContainer/MasonryContainer.tsx
4
- import * as Function from "effect/Function";
5
- import * as Option from "effect/Option";
6
- import React, { useEffect, useState } from "react";
7
- import { Surface, useCapabilities } from "@dxos/app-framework/ui";
8
- import { AppCapabilities } from "@dxos/app-toolkit";
9
- import { useObjectMenuItems } from "@dxos/app-toolkit/ui";
10
- import { Annotation, Filter, Obj, Type } from "@dxos/echo";
11
- import { useGlobalFilteredObjects } from "@dxos/plugin-search";
12
- import { useObject, useQuery } from "@dxos/react-client/echo";
13
- import { Card, Toolbar } from "@dxos/react-ui";
14
- import { Masonry as MasonryComponent } from "@dxos/react-ui-masonry";
15
- import { Menu } from "@dxos/react-ui-menu";
16
- import { getTypenameFromQuery } from "@dxos/schema";
17
- var MasonryContainer = ({ view: viewOrRef, role: _role }) => {
18
- const [view] = useObject(viewOrRef);
19
- const schemas = useCapabilities(AppCapabilities.Schema);
20
- const db = view && Obj.getDatabase(view);
21
- const typename = view?.query ? getTypenameFromQuery(view.query.ast) : void 0;
22
- const [cardSchema, setCardSchema] = useState();
23
- useEffect(() => {
24
- const staticSchema = schemas.flat().find((schema) => Type.getTypename(schema) === typename);
25
- if (staticSchema) {
26
- setCardSchema(() => staticSchema);
27
- }
28
- if (!staticSchema && typename && db) {
29
- const query = db.schemaRegistry.query({
30
- typename
31
- });
32
- const unsubscribe = query.subscribe(() => {
33
- const [schema] = query.results;
34
- if (schema) {
35
- setCardSchema(schema);
36
- }
37
- }, {
38
- fire: true
39
- });
40
- return unsubscribe;
41
- }
42
- }, [
43
- schemas,
44
- typename,
45
- db
46
- ]);
47
- const objects = useQuery(db, cardSchema ? Filter.type(cardSchema) : Filter.nothing());
48
- const filteredObjects = useGlobalFilteredObjects(objects);
49
- return /* @__PURE__ */ React.createElement(MasonryComponent.Root, {
50
- items: filteredObjects,
51
- render: Item,
52
- classNames: "w-full max-w-full h-full max-h-full overflow-y-auto p-4"
53
- });
54
- };
55
- var Item = ({ data }) => {
56
- const objectMenuItems = useObjectMenuItems(data);
57
- const icon = Function.pipe(Obj.getSchema(data), Option.fromNullable, Option.flatMap(Annotation.IconAnnotation.get), Option.map(({ icon: icon2 }) => icon2), Option.getOrElse(() => "ph--placeholder--regular"));
58
- return /* @__PURE__ */ React.createElement(Menu.Root, null, /* @__PURE__ */ React.createElement(Card.Root, null, /* @__PURE__ */ React.createElement(Card.Toolbar, null, /* @__PURE__ */ React.createElement(Card.Icon, {
59
- icon
60
- }), /* @__PURE__ */ React.createElement(Card.Title, null, Obj.getLabel(data)), /* @__PURE__ */ React.createElement(Menu.Trigger, {
61
- asChild: true,
62
- disabled: !objectMenuItems?.length
63
- }, /* @__PURE__ */ React.createElement(Toolbar.IconButton, {
64
- iconOnly: true,
65
- variant: "ghost",
66
- icon: "ph--dots-three-vertical--regular",
67
- label: "Actions"
68
- })), /* @__PURE__ */ React.createElement(Menu.Content, {
69
- items: objectMenuItems
70
- })), /* @__PURE__ */ React.createElement(Surface.Surface, {
71
- role: "card--content",
72
- limit: 1,
73
- data: {
74
- subject: data
75
- }
76
- })));
77
- };
78
-
79
- // src/containers/MasonryContainer/index.ts
80
- var MasonryContainer_default = MasonryContainer;
81
- export {
82
- MasonryContainer_default as default
83
- };
84
- //# sourceMappingURL=MasonryContainer-Q7VPG6YS.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/containers/MasonryContainer/MasonryContainer.tsx", "../../../src/containers/MasonryContainer/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Function from 'effect/Function';\nimport * as Option from 'effect/Option';\nimport type * as Schema from 'effect/Schema';\nimport React, { useEffect, useState } from 'react';\n\nimport { Surface, useCapabilities } from '@dxos/app-framework/ui';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport { useObjectMenuItems } from '@dxos/app-toolkit/ui';\nimport { Annotation, Filter, Obj, type Ref, Type } from '@dxos/echo';\nimport { type View } from '@dxos/echo';\nimport { useGlobalFilteredObjects } from '@dxos/plugin-search';\nimport { useObject, useQuery } from '@dxos/react-client/echo';\nimport { Card, Toolbar } from '@dxos/react-ui';\nimport { Masonry as MasonryComponent } from '@dxos/react-ui-masonry';\nimport { Menu } from '@dxos/react-ui-menu';\nimport { getTypenameFromQuery } from '@dxos/schema';\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 typename = view?.query ? getTypenameFromQuery(view.query.ast) : undefined;\n\n const [cardSchema, setCardSchema] = useState<Schema.Schema.AnyNoContext>();\n\n useEffect(() => {\n const staticSchema = schemas.flat().find((schema) => Type.getTypename(schema) === typename);\n if (staticSchema) {\n setCardSchema(() => staticSchema);\n }\n if (!staticSchema && typename && db) {\n const query = db.schemaRegistry.query({ typename });\n const unsubscribe = query.subscribe(\n () => {\n const [schema] = query.results;\n if (schema) {\n setCardSchema(schema);\n }\n },\n { fire: true },\n );\n return unsubscribe;\n }\n }, [schemas, typename, db]);\n\n const objects = useQuery(db, cardSchema ? Filter.type(cardSchema) : Filter.nothing());\n const filteredObjects = useGlobalFilteredObjects(objects);\n\n return (\n <MasonryComponent.Root\n items={filteredObjects}\n render={Item as any}\n classNames='w-full max-w-full h-full max-h-full overflow-y-auto p-4'\n />\n );\n};\n\nconst Item = ({ data }: { data: any }) => {\n const objectMenuItems = useObjectMenuItems(data);\n const icon = Function.pipe(\n Obj.getSchema(data),\n Option.fromNullable,\n Option.flatMap(Annotation.IconAnnotation.get),\n Option.map(({ icon }) => icon),\n Option.getOrElse(() => 'ph--placeholder--regular'),\n );\n\n return (\n <Menu.Root>\n <Card.Root>\n <Card.Toolbar>\n <Card.Icon icon={icon} />\n <Card.Title>{Obj.getLabel(data)}</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.Toolbar>\n <Surface.Surface role='card--content' limit={1} data={{ subject: data }} />\n </Card.Root>\n </Menu.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { MasonryContainer } from './MasonryContainer';\n\nexport default MasonryContainer;\n"],
5
- "mappings": ";;;AAIA,YAAYA,cAAc;AAC1B,YAAYC,YAAY;AAExB,OAAOC,SAASC,WAAWC,gBAAgB;AAE3C,SAASC,SAASC,uBAAuB;AACzC,SAASC,uBAAuB;AAChC,SAASC,0BAA0B;AACnC,SAASC,YAAYC,QAAQC,KAAeC,YAAY;AAExD,SAASC,gCAAgC;AACzC,SAASC,WAAWC,gBAAgB;AACpC,SAASC,MAAMC,eAAe;AAC9B,SAASC,WAAWC,wBAAwB;AAC5C,SAASC,YAAY;AACrB,SAASC,4BAA4B;AAO9B,IAAMC,mBAAmB,CAAC,EAC/BC,MAAMC,WACNC,MAAMC,MAAK,MAIZ;AACC,QAAM,CAACH,IAAAA,IAAQI,UAAUH,SAAAA;AACzB,QAAMI,UAAUC,gBAAgBC,gBAAgBC,MAAM;AACtD,QAAMC,KAAKT,QAAQU,IAAIC,YAAYX,IAAAA;AACnC,QAAMY,WAAWZ,MAAMa,QAAQC,qBAAqBd,KAAKa,MAAME,GAAG,IAAIC;AAEtE,QAAM,CAACC,YAAYC,aAAAA,IAAiBC,SAAAA;AAEpCC,YAAU,MAAA;AACR,UAAMC,eAAehB,QAAQiB,KAAI,EAAGC,KAAK,CAACC,WAAWC,KAAKC,YAAYF,MAAAA,MAAYZ,QAAAA;AAClF,QAAIS,cAAc;AAChBH,oBAAc,MAAMG,YAAAA;IACtB;AACA,QAAI,CAACA,gBAAgBT,YAAYH,IAAI;AACnC,YAAMI,QAAQJ,GAAGkB,eAAed,MAAM;QAAED;MAAS,CAAA;AACjD,YAAMgB,cAAcf,MAAMgB,UACxB,MAAA;AACE,cAAM,CAACL,MAAAA,IAAUX,MAAMiB;AACvB,YAAIN,QAAQ;AACVN,wBAAcM,MAAAA;QAChB;MACF,GACA;QAAEO,MAAM;MAAK,CAAA;AAEf,aAAOH;IACT;EACF,GAAG;IAACvB;IAASO;IAAUH;GAAG;AAE1B,QAAMuB,UAAUC,SAASxB,IAAIQ,aAAaiB,OAAOC,KAAKlB,UAAAA,IAAciB,OAAOE,QAAO,CAAA;AAClF,QAAMC,kBAAkBC,yBAAyBN,OAAAA;AAEjD,SACE,sBAAA,cAACO,iBAAiBC,MAAI;IACpBC,OAAOJ;IACPK,QAAQC;IACRC,YAAW;;AAGjB;AAEA,IAAMD,OAAO,CAAC,EAAEE,KAAI,MAAiB;AACnC,QAAMC,kBAAkBC,mBAAmBF,IAAAA;AAC3C,QAAMG,OAAgBC,cACpBvC,IAAIwC,UAAUL,IAAAA,GACPM,qBACAC,eAAQC,WAAWC,eAAeC,GAAG,GACrCC,WAAI,CAAC,EAAER,MAAAA,MAAI,MAAOA,KAAAA,GAClBS,iBAAU,MAAM,0BAAA,CAAA;AAGzB,SACE,sBAAA,cAACC,KAAKlB,MAAI,MACR,sBAAA,cAACmB,KAAKnB,MAAI,MACR,sBAAA,cAACmB,KAAKC,SAAO,MACX,sBAAA,cAACD,KAAKE,MAAI;IAACb;MACX,sBAAA,cAACW,KAAKG,OAAK,MAAEpD,IAAIqD,SAASlB,IAAAA,CAAAA,GAE1B,sBAAA,cAACa,KAAKM,SAAO;IAACC,SAAAA;IAAQC,UAAU,CAACpB,iBAAiBqB;KAChD,sBAAA,cAACP,QAAQQ,YAAU;IAACC,UAAAA;IAASC,SAAQ;IAAQtB,MAAK;IAAmCuB,OAAM;OAE7F,sBAAA,cAACb,KAAKc,SAAO;IAAC/B,OAAOK;OAEvB,sBAAA,cAAC2B,QAAQA,SAAO;IAACvE,MAAK;IAAgBwE,OAAO;IAAG7B,MAAM;MAAE8B,SAAS9B;IAAK;;AAI9E;;;AC5FA,IAAA,2BAAe+B;",
6
- "names": ["Function", "Option", "React", "useEffect", "useState", "Surface", "useCapabilities", "AppCapabilities", "useObjectMenuItems", "Annotation", "Filter", "Obj", "Type", "useGlobalFilteredObjects", "useObject", "useQuery", "Card", "Toolbar", "Masonry", "MasonryComponent", "Menu", "getTypenameFromQuery", "MasonryContainer", "view", "viewOrRef", "role", "_role", "useObject", "schemas", "useCapabilities", "AppCapabilities", "Schema", "db", "Obj", "getDatabase", "typename", "query", "getTypenameFromQuery", "ast", "undefined", "cardSchema", "setCardSchema", "useState", "useEffect", "staticSchema", "flat", "find", "schema", "Type", "getTypename", "schemaRegistry", "unsubscribe", "subscribe", "results", "fire", "objects", "useQuery", "Filter", "type", "nothing", "filteredObjects", "useGlobalFilteredObjects", "MasonryComponent", "Root", "items", "render", "Item", "classNames", "data", "objectMenuItems", "useObjectMenuItems", "icon", "pipe", "getSchema", "fromNullable", "flatMap", "Annotation", "IconAnnotation", "get", "map", "getOrElse", "Menu", "Card", "Toolbar", "Icon", "Title", "getLabel", "Trigger", "asChild", "disabled", "length", "IconButton", "iconOnly", "variant", "label", "Content", "Surface", "limit", "subject", "MasonryContainer"]
7
- }
@@ -1,19 +0,0 @@
1
- // src/meta.ts
2
- import { trim } from "@dxos/util";
3
- var meta = {
4
- id: "org.dxos.plugin.masonry",
5
- name: "Masonry",
6
- description: trim`
7
- Responsive grid layout that displays query results in an adaptive masonry pattern.
8
- Visualize collections of cards, images, or mixed content that automatically adjusts to available screen space.
9
- `,
10
- icon: "ph--wall--regular",
11
- iconHue: "green",
12
- source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-masonry",
13
- screenshots: []
14
- };
15
-
16
- export {
17
- meta
18
- };
19
- //# sourceMappingURL=chunk-7W5GV4MG.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/meta.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { trim } from '@dxos/util';\n\nexport const meta: Plugin.Meta = {\n id: 'org.dxos.plugin.masonry',\n name: 'Masonry',\n description: trim`\n Responsive grid layout that displays query results in an adaptive masonry pattern.\n Visualize collections of cards, images, or mixed content that automatically adjusts to available screen space.\n `,\n icon: 'ph--wall--regular',\n iconHue: 'green',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-masonry',\n screenshots: [],\n};\n"],
5
- "mappings": ";AAKA,SAASA,YAAY;AAEd,IAAMC,OAAoB;EAC/BC,IAAI;EACJC,MAAM;EACNC,aAAaC;;;;EAIbC,MAAM;EACNC,SAAS;EACTC,QAAQ;EACRC,aAAa,CAAA;AACf;",
6
- "names": ["trim", "meta", "id", "name", "description", "trim", "icon", "iconHue", "source", "screenshots"]
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\nimport { Annotation, Obj, Ref, Type } from '@dxos/echo';\nimport { View } from '@dxos/echo';\nimport { FormInputAnnotation, LabelAnnotation } from '@dxos/echo/internal';\nimport { ViewAnnotation } from '@dxos/schema';\n\nexport const Masonry = 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 Type.object({\n typename: 'org.dxos.type.masonry',\n version: '0.1.0',\n }),\n LabelAnnotation.set(['name']),\n ViewAnnotation.set(true),\n Annotation.IconAnnotation.set({\n icon: 'ph--wall--regular',\n hue: 'green',\n }),\n);\n\nexport interface Masonry extends Schema.Schema.Type<typeof Masonry> {}\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/types';\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;AAExB,SAASC,YAAYC,KAAKC,KAAKC,YAAY;AAC3C,SAASC,YAAY;AACrB,SAASC,qBAAqBC,uBAAuB;AACrD,SAASC,sBAAsB;AAExB,IAAMC,UAAiBC,cAAO;EACnCC,MAAaC,cAAOC,KAAYC,eAAQ;EAExCC,MAAMC,IAAIA,IAAIC,KAAKA,IAAI,EAAEJ,KAAKK,oBAAoBC,IAAI,KAAA,CAAA;EAEtDC,aAAoBC,aACXX,cAAO;IACZY,KAAYD,aAAME,IAAIC,EAAE;IACxBC,QAAeX,gBAAgBY,cAAO;EACxC,CAAA,CAAA,EACAb,KAAKK,oBAAoBC,IAAI,KAAA,GAAeL,eAAQ;AAExD,CAAA,EAAGD,KACDc,KAAKC,OAAO;EACVC,UAAU;EACVC,SAAS;AACX,CAAA,GACAC,gBAAgBZ,IAAI;EAAC;CAAO,GAC5Ba,eAAeb,IAAI,IAAA,GACnBc,WAAWC,eAAef,IAAI;EAC5BgB,MAAM;EACNC,KAAK;AACP,CAAA,CAAA;AAYK,IAAMC,OAAO,CAAC,EAAE1B,MAAMS,cAAc,CAAA,GAAIL,KAAI,MAAa;AAC9D,SAAOQ,IAAIc,KAAK5B,SAAS;IAAEE;IAAMI,MAAMC,IAAIqB,KAAKtB,IAAAA;IAAOK;EAAY,CAAA;AACrE;;;AC/CA;;;;AAIA,YAAYkB,aAAY;AAExB,SAASC,kCAAkC;AAEpC,IAAMC,eAAsBC,eAAO;EACxCC,MAAaC,iBAAgBC,cAAM;;EAEnCC,UAAiBD,eAAOE,KACfC,oBAAY;IAAEC,OAAO;EAAmB,CAAA,GAC/CC,2BAA2BC,IAAI;IAC7BC,UAAU;MAAC;MAAY;;IACvBC,MAAM;MAAC;;EACT,CAAA,GACOT,gBAAQ;AAEnB,CAAA;",
6
- "names": ["Schema", "Annotation", "Obj", "Ref", "Type", "View", "FormInputAnnotation", "LabelAnnotation", "ViewAnnotation", "Masonry", "Struct", "name", "String", "pipe", "optional", "view", "Ref", "View", "FormInputAnnotation", "set", "arrangement", "Array", "ids", "Obj", "ID", "hidden", "Boolean", "Type", "object", "typename", "version", "LabelAnnotation", "ViewAnnotation", "Annotation", "IconAnnotation", "icon", "hue", "make", "Schema", "TypeInputOptionsAnnotation", "MasonryProps", "Struct", "name", "optional", "String", "typename", "pipe", "annotations", "title", "TypeInputOptionsAnnotation", "set", "location", "kind"]
7
- }
@@ -1,78 +0,0 @@
1
- import {
2
- meta
3
- } from "./chunk-7W5GV4MG.mjs";
4
- import {
5
- MasonryAction_exports,
6
- Masonry_exports
7
- } from "./chunk-ANLADCDB.mjs";
8
- import "./chunk-J5LGTIGS.mjs";
9
-
10
- // src/MasonryPlugin.tsx
11
- import * as Effect from "effect/Effect";
12
- import * as Option from "effect/Option";
13
- import { Plugin } from "@dxos/app-framework";
14
- import { AppPlugin } from "@dxos/app-toolkit";
15
- import { Annotation, Type as Type2 } from "@dxos/echo";
16
- import { ViewModel } from "@dxos/schema";
17
-
18
- // src/capabilities/react-surface/index.ts
19
- import { Capability } from "@dxos/app-framework";
20
- var ReactSurface = Capability.lazy("ReactSurface", () => import("./react-surface-E3X4DF5N.mjs"));
21
-
22
- // src/translations.ts
23
- import { Type } from "@dxos/echo";
24
- var translations = [
25
- {
26
- "en-US": {
27
- [Type.getTypename(Masonry_exports.Masonry)]: {
28
- "typename label": "Masonry",
29
- "typename label_zero": "Masonries",
30
- "typename label_one": "Masonry",
31
- "typename label_other": "Masonries",
32
- "object name placeholder": "New masonry",
33
- "add object label": "Add masonry",
34
- "rename object label": "Rename masonry",
35
- "delete object label": "Delete masonry",
36
- "object deleted label": "Masonry deleted"
37
- },
38
- [meta.id]: {
39
- "plugin name": "Masonry"
40
- }
41
- }
42
- }
43
- ];
44
-
45
- // src/MasonryPlugin.tsx
46
- var MasonryPlugin = Plugin.define(meta).pipe(AppPlugin.addMetadataModule({
47
- metadata: {
48
- id: Type2.getTypename(Masonry_exports.Masonry),
49
- metadata: {
50
- icon: Annotation.IconAnnotation.get(Masonry_exports.Masonry).pipe(Option.getOrThrow).icon,
51
- iconHue: Annotation.IconAnnotation.get(Masonry_exports.Masonry).pipe(Option.getOrThrow).hue ?? "white",
52
- inputSchema: MasonryAction_exports.MasonryProps,
53
- createObject: (props, { db }) => Effect.promise(async () => {
54
- const { view } = await ViewModel.makeFromDatabase({
55
- db,
56
- typename: props.typename
57
- });
58
- return Masonry_exports.make({
59
- name: props.name,
60
- view
61
- });
62
- })
63
- }
64
- }
65
- }), AppPlugin.addSchemaModule({
66
- schema: [
67
- Masonry_exports.Masonry
68
- ]
69
- }), AppPlugin.addSurfaceModule({
70
- activate: ReactSurface
71
- }), AppPlugin.addTranslationsModule({
72
- translations
73
- }), Plugin.make);
74
- export {
75
- MasonryPlugin,
76
- meta
77
- };
78
- //# sourceMappingURL=index.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/MasonryPlugin.tsx", "../../../src/capabilities/react-surface/index.ts", "../../../src/translations.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport * as Option from 'effect/Option';\n\nimport { Plugin } from '@dxos/app-framework';\nimport { AppPlugin } from '@dxos/app-toolkit';\nimport { Annotation, Type } from '@dxos/echo';\nimport { type CreateObject } from '@dxos/plugin-space/types';\nimport { ViewModel } from '@dxos/schema';\n\nimport { ReactSurface } from './capabilities';\nimport { meta } from './meta';\nimport { translations } from './translations';\nimport { Masonry, MasonryAction } from './types';\n\nexport const MasonryPlugin = Plugin.define(meta).pipe(\n AppPlugin.addMetadataModule({\n metadata: {\n id: Type.getTypename(Masonry.Masonry),\n metadata: {\n icon: Annotation.IconAnnotation.get(Masonry.Masonry).pipe(Option.getOrThrow).icon,\n iconHue: Annotation.IconAnnotation.get(Masonry.Masonry).pipe(Option.getOrThrow).hue ?? 'white',\n inputSchema: MasonryAction.MasonryProps,\n createObject: ((props, { db }) =>\n Effect.promise(async () => {\n const { view } = await ViewModel.makeFromDatabase({ db, typename: props.typename });\n return Masonry.make({ name: props.name, view });\n })) satisfies CreateObject,\n },\n },\n }),\n AppPlugin.addSchemaModule({ schema: [Masonry.Masonry] }),\n AppPlugin.addSurfaceModule({ activate: ReactSurface }),\n AppPlugin.addTranslationsModule({ translations }),\n Plugin.make,\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const ReactSurface = Capability.lazy('ReactSurface', () => import('./react-surface'));\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Type } from '@dxos/echo';\nimport { type Resource } from '@dxos/react-ui';\n\nimport { meta } from './meta';\nimport { Masonry } from './types';\n\nexport const translations = [\n {\n 'en-US': {\n [Type.getTypename(Masonry.Masonry)]: {\n 'typename label': 'Masonry',\n 'typename label_zero': 'Masonries',\n 'typename label_one': 'Masonry',\n 'typename label_other': 'Masonries',\n 'object name placeholder': 'New masonry',\n 'add object label': 'Add masonry',\n 'rename object label': 'Rename masonry',\n 'delete object label': 'Delete masonry',\n 'object deleted label': 'Masonry deleted',\n },\n [meta.id]: {\n 'plugin name': 'Masonry',\n },\n },\n },\n] as const satisfies Resource[];\n"],
5
- "mappings": ";;;;;;;;;;AAIA,YAAYA,YAAY;AAExB,YAAYC,YAAY;AAExB,SAASC,cAAc;AACvB,SAASC,iBAAiB;AAC1B,SAASC,YAAYC,QAAAA,aAAY;AAEjC,SAASC,iBAAiB;;;ACR1B,SAASC,kBAAkB;AAEpB,IAAMC,eAAeC,WAAWC,KAAK,gBAAgB,MAAM,OAAO,8BAAA,CAAA;;;ACFzE,SAASC,YAAY;AAMd,IAAMC,eAAe;EAC1B;IACE,SAAS;MACP,CAACC,KAAKC,YAAYC,gBAAQA,OAAO,CAAA,GAAI;QACnC,kBAAkB;QAClB,uBAAuB;QACvB,sBAAsB;QACtB,wBAAwB;QACxB,2BAA2B;QAC3B,oBAAoB;QACpB,uBAAuB;QACvB,uBAAuB;QACvB,wBAAwB;MAC1B;MACA,CAACC,KAAKC,EAAE,GAAG;QACT,eAAe;MACjB;IACF;EACF;;;;AFTK,IAAMC,gBAAgBC,OAAOC,OAAOC,IAAAA,EAAMC,KAC/CC,UAAUC,kBAAkB;EAC1BC,UAAU;IACRC,IAAIC,MAAKC,YAAYC,gBAAQA,OAAO;IACpCJ,UAAU;MACRK,MAAMC,WAAWC,eAAeC,IAAIJ,gBAAQA,OAAO,EAAEP,KAAYY,iBAAU,EAAEJ;MAC7EK,SAASJ,WAAWC,eAAeC,IAAIJ,gBAAQA,OAAO,EAAEP,KAAYY,iBAAU,EAAEE,OAAO;MACvFC,aAAaC,sBAAcC;MAC3BC,cAAe,CAACC,OAAO,EAAEC,GAAE,MAClBC,eAAQ,YAAA;AACb,cAAM,EAAEC,KAAI,IAAK,MAAMC,UAAUC,iBAAiB;UAAEJ;UAAIK,UAAUN,MAAMM;QAAS,CAAA;AACjF,eAAOlB,gBAAQmB,KAAK;UAAEC,MAAMR,MAAMQ;UAAML;QAAK,CAAA;MAC/C,CAAA;IACJ;EACF;AACF,CAAA,GACArB,UAAU2B,gBAAgB;EAAEC,QAAQ;IAACtB,gBAAQA;;AAAS,CAAA,GACtDN,UAAU6B,iBAAiB;EAAEC,UAAUC;AAAa,CAAA,GACpD/B,UAAUgC,sBAAsB;EAAEC;AAAa,CAAA,GAC/CrC,OAAO6B,IAAI;",
6
- "names": ["Effect", "Option", "Plugin", "AppPlugin", "Annotation", "Type", "ViewModel", "Capability", "ReactSurface", "Capability", "lazy", "Type", "translations", "Type", "getTypename", "Masonry", "meta", "id", "MasonryPlugin", "Plugin", "define", "meta", "pipe", "AppPlugin", "addMetadataModule", "metadata", "id", "Type", "getTypename", "Masonry", "icon", "Annotation", "IconAnnotation", "get", "getOrThrow", "iconHue", "hue", "inputSchema", "MasonryAction", "MasonryProps", "createObject", "props", "db", "promise", "view", "ViewModel", "makeFromDatabase", "typename", "make", "name", "addSchemaModule", "schema", "addSurfaceModule", "activate", "ReactSurface", "addTranslationsModule", "translations"]
7
- }
@@ -1 +0,0 @@
1
- {"inputs":{"src/meta.ts":{"bytes":1966,"imports":[{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/containers/MasonryContainer/MasonryContainer.tsx":{"bytes":12077,"imports":[{"path":"effect/Function","kind":"import-statement","external":true},{"path":"effect/Option","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit/ui","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/plugin-search","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-masonry","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"format":"esm"},"src/containers/MasonryContainer/index.ts":{"bytes":702,"imports":[{"path":"src/containers/MasonryContainer/MasonryContainer.tsx","kind":"import-statement","original":"./MasonryContainer"}],"format":"esm"},"src/containers/index.ts":{"bytes":823,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/containers/MasonryContainer/index.ts","kind":"dynamic-import","original":"./MasonryContainer"}],"format":"esm"},"src/types/Masonry.ts":{"bytes":4879,"imports":[{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/internal","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"format":"esm"},"src/types/MasonryAction.ts":{"bytes":2249,"imports":[{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true}],"format":"esm"},"src/types/index.ts":{"bytes":708,"imports":[{"path":"src/types/Masonry.ts","kind":"import-statement","original":"./Masonry"},{"path":"src/types/MasonryAction.ts","kind":"import-statement","original":"./MasonryAction"}],"format":"esm"},"src/capabilities/react-surface/react-surface.tsx":{"bytes":4191,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"src/containers/index.ts","kind":"import-statement","original":"../../containers"},{"path":"src/meta.ts","kind":"import-statement","original":"../../meta"},{"path":"src/types/index.ts","kind":"import-statement","original":"../../types"}],"format":"esm"},"src/capabilities/react-surface/index.ts":{"bytes":911,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/capabilities/react-surface/react-surface.tsx","kind":"dynamic-import","original":"./react-surface"}],"format":"esm"},"src/capabilities/index.ts":{"bytes":488,"imports":[{"path":"src/capabilities/react-surface/index.ts","kind":"import-statement","original":"./react-surface"}],"format":"esm"},"src/translations.ts":{"bytes":2818,"imports":[{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/types/index.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"src/MasonryPlugin.tsx":{"bytes":5853,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Option","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"src/capabilities/index.ts","kind":"import-statement","original":"./capabilities"},{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/translations.ts","kind":"import-statement","original":"./translations"},{"path":"src/types/index.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"src/index.ts":{"bytes":555,"imports":[{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/MasonryPlugin.tsx","kind":"import-statement","original":"./MasonryPlugin"}],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4551},"dist/lib/browser/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-7W5GV4MG.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-ANLADCDB.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Option","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"dist/lib/browser/react-surface-E3X4DF5N.mjs","kind":"dynamic-import"},{"path":"@dxos/echo","kind":"import-statement","external":true}],"exports":["MasonryPlugin","meta"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0},"src/MasonryPlugin.tsx":{"bytesInOutput":1198},"src/capabilities/react-surface/index.ts":{"bytesInOutput":148},"src/capabilities/index.ts":{"bytesInOutput":0},"src/translations.ts":{"bytesInOutput":618}},"bytes":2316},"dist/lib/browser/types/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/browser/types/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-ANLADCDB.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"}],"exports":["Masonry","MasonryAction"],"entryPoint":"src/types/index.ts","inputs":{},"bytes":234},"dist/lib/browser/MasonryContainer-Q7VPG6YS.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6852},"dist/lib/browser/MasonryContainer-Q7VPG6YS.mjs":{"imports":[{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"effect/Function","kind":"import-statement","external":true},{"path":"effect/Option","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit/ui","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/plugin-search","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-masonry","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/containers/MasonryContainer/index.ts","inputs":{"src/containers/MasonryContainer/MasonryContainer.tsx":{"bytesInOutput":3101},"src/containers/MasonryContainer/index.ts":{"bytesInOutput":49}},"bytes":3388},"dist/lib/browser/react-surface-E3X4DF5N.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2397},"dist/lib/browser/react-surface-E3X4DF5N.mjs":{"imports":[{"path":"dist/lib/browser/chunk-7W5GV4MG.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-ANLADCDB.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"dist/lib/browser/MasonryContainer-Q7VPG6YS.mjs","kind":"dynamic-import"}],"exports":["default"],"entryPoint":"src/capabilities/react-surface/react-surface.tsx","inputs":{"src/capabilities/react-surface/react-surface.tsx":{"bytesInOutput":837},"src/containers/index.ts":{"bytesInOutput":108}},"bytes":1314},"dist/lib/browser/chunk-7W5GV4MG.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":948},"dist/lib/browser/chunk-7W5GV4MG.mjs":{"imports":[{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["meta"],"inputs":{"src/meta.ts":{"bytesInOutput":482}},"bytes":561},"dist/lib/browser/chunk-ANLADCDB.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3716},"dist/lib/browser/chunk-ANLADCDB.mjs":{"imports":[{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/internal","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true}],"exports":["MasonryAction_exports","Masonry_exports"],"inputs":{"src/types/Masonry.ts":{"bytesInOutput":1043},"src/types/index.ts":{"bytesInOutput":0},"src/types/MasonryAction.ts":{"bytesInOutput":596}},"bytes":1846},"dist/lib/browser/chunk-J5LGTIGS.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/browser/chunk-J5LGTIGS.mjs":{"imports":[],"exports":["__export"],"inputs":{},"bytes":235}}}
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/react-surface/react-surface.tsx", "../../../src/containers/index.ts"],
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 { Obj } from '@dxos/echo';\nimport { View } from '@dxos/echo';\n\nimport { MasonryContainer } from '../../containers';\nimport { meta } from '../../meta';\nimport { Masonry } from '../../types';\n\nexport default Capability.makeModule(() =>\n Effect.succeed(\n Capability.contributes(Capabilities.ReactSurface, [\n Surface.create({\n id: meta.id,\n role: ['article', 'section'],\n filter: (data): data is { subject: Masonry.Masonry | View.View } =>\n Obj.instanceOf(Masonry.Masonry, data.subject) || Obj.instanceOf(View.View, data.subject),\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", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type ComponentType, lazy } from 'react';\n\nexport const MasonryContainer: ComponentType<any> = lazy(() => import('./MasonryContainer'));\n"],
5
- "mappings": ";;;;;;;;;AAIA,YAAYA,YAAY;AACxB,OAAOC,WAAW;AAElB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,eAAe;AACxB,SAASC,WAAW;AACpB,SAASC,YAAY;;;ACNrB,SAA6BC,YAAY;AAElC,IAAMC,mBAAuCC,KAAK,MAAM,OAAO,iCAAA,CAAA;;;ADUtE,IAAA,wBAAeC,WAAWC,WAAW,MAC5BC,eACLF,WAAWG,YAAYC,aAAaC,cAAc;EAChDC,QAAQC,OAAO;IACbC,IAAIC,KAAKD;IACTE,MAAM;MAAC;MAAW;;IAClBC,QAAQ,CAACC,SACPC,IAAIC,WAAWC,gBAAQA,SAASH,KAAKI,OAAO,KAAKH,IAAIC,WAAWG,KAAKA,MAAML,KAAKI,OAAO;IACzFE,WAAW,CAAC,EAAEN,MAAMF,KAAI,MAAE;AACxB,YAAMS,OAAON,IAAIC,WAAWG,KAAKA,MAAML,KAAKI,OAAO,IAAIJ,KAAKI,UAAUJ,KAAKI,QAAQG;AACnF,aAAO,sBAAA,cAACC,kBAAAA;QAAiBD;QAAYT;;IACvC;EACF,CAAA;CACD,CAAA,CAAA;",
6
- "names": ["Effect", "React", "Capabilities", "Capability", "Surface", "Obj", "View", "lazy", "MasonryContainer", "lazy", "Capability", "makeModule", "succeed", "contributes", "Capabilities", "ReactSurface", "Surface", "create", "id", "meta", "role", "filter", "data", "Obj", "instanceOf", "Masonry", "subject", "View", "component", "view", "MasonryContainer"]
7
- }
@@ -1,85 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import "./chunk-HSLMI22Q.mjs";
3
-
4
- // src/containers/MasonryContainer/MasonryContainer.tsx
5
- import * as Function from "effect/Function";
6
- import * as Option from "effect/Option";
7
- import React, { useEffect, useState } from "react";
8
- import { Surface, useCapabilities } from "@dxos/app-framework/ui";
9
- import { AppCapabilities } from "@dxos/app-toolkit";
10
- import { useObjectMenuItems } from "@dxos/app-toolkit/ui";
11
- import { Annotation, Filter, Obj, Type } from "@dxos/echo";
12
- import { useGlobalFilteredObjects } from "@dxos/plugin-search";
13
- import { useObject, useQuery } from "@dxos/react-client/echo";
14
- import { Card, Toolbar } from "@dxos/react-ui";
15
- import { Masonry as MasonryComponent } from "@dxos/react-ui-masonry";
16
- import { Menu } from "@dxos/react-ui-menu";
17
- import { getTypenameFromQuery } from "@dxos/schema";
18
- var MasonryContainer = ({ view: viewOrRef, role: _role }) => {
19
- const [view] = useObject(viewOrRef);
20
- const schemas = useCapabilities(AppCapabilities.Schema);
21
- const db = view && Obj.getDatabase(view);
22
- const typename = view?.query ? getTypenameFromQuery(view.query.ast) : void 0;
23
- const [cardSchema, setCardSchema] = useState();
24
- useEffect(() => {
25
- const staticSchema = schemas.flat().find((schema) => Type.getTypename(schema) === typename);
26
- if (staticSchema) {
27
- setCardSchema(() => staticSchema);
28
- }
29
- if (!staticSchema && typename && db) {
30
- const query = db.schemaRegistry.query({
31
- typename
32
- });
33
- const unsubscribe = query.subscribe(() => {
34
- const [schema] = query.results;
35
- if (schema) {
36
- setCardSchema(schema);
37
- }
38
- }, {
39
- fire: true
40
- });
41
- return unsubscribe;
42
- }
43
- }, [
44
- schemas,
45
- typename,
46
- db
47
- ]);
48
- const objects = useQuery(db, cardSchema ? Filter.type(cardSchema) : Filter.nothing());
49
- const filteredObjects = useGlobalFilteredObjects(objects);
50
- return /* @__PURE__ */ React.createElement(MasonryComponent.Root, {
51
- items: filteredObjects,
52
- render: Item,
53
- classNames: "w-full max-w-full h-full max-h-full overflow-y-auto p-4"
54
- });
55
- };
56
- var Item = ({ data }) => {
57
- const objectMenuItems = useObjectMenuItems(data);
58
- const icon = Function.pipe(Obj.getSchema(data), Option.fromNullable, Option.flatMap(Annotation.IconAnnotation.get), Option.map(({ icon: icon2 }) => icon2), Option.getOrElse(() => "ph--placeholder--regular"));
59
- return /* @__PURE__ */ React.createElement(Menu.Root, null, /* @__PURE__ */ React.createElement(Card.Root, null, /* @__PURE__ */ React.createElement(Card.Toolbar, null, /* @__PURE__ */ React.createElement(Card.Icon, {
60
- icon
61
- }), /* @__PURE__ */ React.createElement(Card.Title, null, Obj.getLabel(data)), /* @__PURE__ */ React.createElement(Menu.Trigger, {
62
- asChild: true,
63
- disabled: !objectMenuItems?.length
64
- }, /* @__PURE__ */ React.createElement(Toolbar.IconButton, {
65
- iconOnly: true,
66
- variant: "ghost",
67
- icon: "ph--dots-three-vertical--regular",
68
- label: "Actions"
69
- })), /* @__PURE__ */ React.createElement(Menu.Content, {
70
- items: objectMenuItems
71
- })), /* @__PURE__ */ React.createElement(Surface.Surface, {
72
- role: "card--content",
73
- limit: 1,
74
- data: {
75
- subject: data
76
- }
77
- })));
78
- };
79
-
80
- // src/containers/MasonryContainer/index.ts
81
- var MasonryContainer_default = MasonryContainer;
82
- export {
83
- MasonryContainer_default as default
84
- };
85
- //# sourceMappingURL=MasonryContainer-NQGW3OZD.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/containers/MasonryContainer/MasonryContainer.tsx", "../../../src/containers/MasonryContainer/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Function from 'effect/Function';\nimport * as Option from 'effect/Option';\nimport type * as Schema from 'effect/Schema';\nimport React, { useEffect, useState } from 'react';\n\nimport { Surface, useCapabilities } from '@dxos/app-framework/ui';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport { useObjectMenuItems } from '@dxos/app-toolkit/ui';\nimport { Annotation, Filter, Obj, type Ref, Type } from '@dxos/echo';\nimport { type View } from '@dxos/echo';\nimport { useGlobalFilteredObjects } from '@dxos/plugin-search';\nimport { useObject, useQuery } from '@dxos/react-client/echo';\nimport { Card, Toolbar } from '@dxos/react-ui';\nimport { Masonry as MasonryComponent } from '@dxos/react-ui-masonry';\nimport { Menu } from '@dxos/react-ui-menu';\nimport { getTypenameFromQuery } from '@dxos/schema';\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 typename = view?.query ? getTypenameFromQuery(view.query.ast) : undefined;\n\n const [cardSchema, setCardSchema] = useState<Schema.Schema.AnyNoContext>();\n\n useEffect(() => {\n const staticSchema = schemas.flat().find((schema) => Type.getTypename(schema) === typename);\n if (staticSchema) {\n setCardSchema(() => staticSchema);\n }\n if (!staticSchema && typename && db) {\n const query = db.schemaRegistry.query({ typename });\n const unsubscribe = query.subscribe(\n () => {\n const [schema] = query.results;\n if (schema) {\n setCardSchema(schema);\n }\n },\n { fire: true },\n );\n return unsubscribe;\n }\n }, [schemas, typename, db]);\n\n const objects = useQuery(db, cardSchema ? Filter.type(cardSchema) : Filter.nothing());\n const filteredObjects = useGlobalFilteredObjects(objects);\n\n return (\n <MasonryComponent.Root\n items={filteredObjects}\n render={Item as any}\n classNames='w-full max-w-full h-full max-h-full overflow-y-auto p-4'\n />\n );\n};\n\nconst Item = ({ data }: { data: any }) => {\n const objectMenuItems = useObjectMenuItems(data);\n const icon = Function.pipe(\n Obj.getSchema(data),\n Option.fromNullable,\n Option.flatMap(Annotation.IconAnnotation.get),\n Option.map(({ icon }) => icon),\n Option.getOrElse(() => 'ph--placeholder--regular'),\n );\n\n return (\n <Menu.Root>\n <Card.Root>\n <Card.Toolbar>\n <Card.Icon icon={icon} />\n <Card.Title>{Obj.getLabel(data)}</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.Toolbar>\n <Surface.Surface role='card--content' limit={1} data={{ subject: data }} />\n </Card.Root>\n </Menu.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { MasonryContainer } from './MasonryContainer';\n\nexport default MasonryContainer;\n"],
5
- "mappings": ";;;;AAIA,YAAYA,cAAc;AAC1B,YAAYC,YAAY;AAExB,OAAOC,SAASC,WAAWC,gBAAgB;AAE3C,SAASC,SAASC,uBAAuB;AACzC,SAASC,uBAAuB;AAChC,SAASC,0BAA0B;AACnC,SAASC,YAAYC,QAAQC,KAAeC,YAAY;AAExD,SAASC,gCAAgC;AACzC,SAASC,WAAWC,gBAAgB;AACpC,SAASC,MAAMC,eAAe;AAC9B,SAASC,WAAWC,wBAAwB;AAC5C,SAASC,YAAY;AACrB,SAASC,4BAA4B;AAO9B,IAAMC,mBAAmB,CAAC,EAC/BC,MAAMC,WACNC,MAAMC,MAAK,MAIZ;AACC,QAAM,CAACH,IAAAA,IAAQI,UAAUH,SAAAA;AACzB,QAAMI,UAAUC,gBAAgBC,gBAAgBC,MAAM;AACtD,QAAMC,KAAKT,QAAQU,IAAIC,YAAYX,IAAAA;AACnC,QAAMY,WAAWZ,MAAMa,QAAQC,qBAAqBd,KAAKa,MAAME,GAAG,IAAIC;AAEtE,QAAM,CAACC,YAAYC,aAAAA,IAAiBC,SAAAA;AAEpCC,YAAU,MAAA;AACR,UAAMC,eAAehB,QAAQiB,KAAI,EAAGC,KAAK,CAACC,WAAWC,KAAKC,YAAYF,MAAAA,MAAYZ,QAAAA;AAClF,QAAIS,cAAc;AAChBH,oBAAc,MAAMG,YAAAA;IACtB;AACA,QAAI,CAACA,gBAAgBT,YAAYH,IAAI;AACnC,YAAMI,QAAQJ,GAAGkB,eAAed,MAAM;QAAED;MAAS,CAAA;AACjD,YAAMgB,cAAcf,MAAMgB,UACxB,MAAA;AACE,cAAM,CAACL,MAAAA,IAAUX,MAAMiB;AACvB,YAAIN,QAAQ;AACVN,wBAAcM,MAAAA;QAChB;MACF,GACA;QAAEO,MAAM;MAAK,CAAA;AAEf,aAAOH;IACT;EACF,GAAG;IAACvB;IAASO;IAAUH;GAAG;AAE1B,QAAMuB,UAAUC,SAASxB,IAAIQ,aAAaiB,OAAOC,KAAKlB,UAAAA,IAAciB,OAAOE,QAAO,CAAA;AAClF,QAAMC,kBAAkBC,yBAAyBN,OAAAA;AAEjD,SACE,sBAAA,cAACO,iBAAiBC,MAAI;IACpBC,OAAOJ;IACPK,QAAQC;IACRC,YAAW;;AAGjB;AAEA,IAAMD,OAAO,CAAC,EAAEE,KAAI,MAAiB;AACnC,QAAMC,kBAAkBC,mBAAmBF,IAAAA;AAC3C,QAAMG,OAAgBC,cACpBvC,IAAIwC,UAAUL,IAAAA,GACPM,qBACAC,eAAQC,WAAWC,eAAeC,GAAG,GACrCC,WAAI,CAAC,EAAER,MAAAA,MAAI,MAAOA,KAAAA,GAClBS,iBAAU,MAAM,0BAAA,CAAA;AAGzB,SACE,sBAAA,cAACC,KAAKlB,MAAI,MACR,sBAAA,cAACmB,KAAKnB,MAAI,MACR,sBAAA,cAACmB,KAAKC,SAAO,MACX,sBAAA,cAACD,KAAKE,MAAI;IAACb;MACX,sBAAA,cAACW,KAAKG,OAAK,MAAEpD,IAAIqD,SAASlB,IAAAA,CAAAA,GAE1B,sBAAA,cAACa,KAAKM,SAAO;IAACC,SAAAA;IAAQC,UAAU,CAACpB,iBAAiBqB;KAChD,sBAAA,cAACP,QAAQQ,YAAU;IAACC,UAAAA;IAASC,SAAQ;IAAQtB,MAAK;IAAmCuB,OAAM;OAE7F,sBAAA,cAACb,KAAKc,SAAO;IAAC/B,OAAOK;OAEvB,sBAAA,cAAC2B,QAAQA,SAAO;IAACvE,MAAK;IAAgBwE,OAAO;IAAG7B,MAAM;MAAE8B,SAAS9B;IAAK;;AAI9E;;;AC5FA,IAAA,2BAAe+B;",
6
- "names": ["Function", "Option", "React", "useEffect", "useState", "Surface", "useCapabilities", "AppCapabilities", "useObjectMenuItems", "Annotation", "Filter", "Obj", "Type", "useGlobalFilteredObjects", "useObject", "useQuery", "Card", "Toolbar", "Masonry", "MasonryComponent", "Menu", "getTypenameFromQuery", "MasonryContainer", "view", "viewOrRef", "role", "_role", "useObject", "schemas", "useCapabilities", "AppCapabilities", "Schema", "db", "Obj", "getDatabase", "typename", "query", "getTypenameFromQuery", "ast", "undefined", "cardSchema", "setCardSchema", "useState", "useEffect", "staticSchema", "flat", "find", "schema", "Type", "getTypename", "schemaRegistry", "unsubscribe", "subscribe", "results", "fire", "objects", "useQuery", "Filter", "type", "nothing", "filteredObjects", "useGlobalFilteredObjects", "MasonryComponent", "Root", "items", "render", "Item", "classNames", "data", "objectMenuItems", "useObjectMenuItems", "icon", "pipe", "getSchema", "fromNullable", "flatMap", "Annotation", "IconAnnotation", "get", "map", "getOrElse", "Menu", "Card", "Toolbar", "Icon", "Title", "getLabel", "Trigger", "asChild", "disabled", "length", "IconButton", "iconOnly", "variant", "label", "Content", "Surface", "limit", "subject", "MasonryContainer"]
7
- }
@@ -1,21 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
-
3
- // src/meta.ts
4
- import { trim } from "@dxos/util";
5
- var meta = {
6
- id: "org.dxos.plugin.masonry",
7
- name: "Masonry",
8
- description: trim`
9
- Responsive grid layout that displays query results in an adaptive masonry pattern.
10
- Visualize collections of cards, images, or mixed content that automatically adjusts to available screen space.
11
- `,
12
- icon: "ph--wall--regular",
13
- iconHue: "green",
14
- source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-masonry",
15
- screenshots: []
16
- };
17
-
18
- export {
19
- meta
20
- };
21
- //# sourceMappingURL=chunk-CCWUD5KF.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/meta.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { trim } from '@dxos/util';\n\nexport const meta: Plugin.Meta = {\n id: 'org.dxos.plugin.masonry',\n name: 'Masonry',\n description: trim`\n Responsive grid layout that displays query results in an adaptive masonry pattern.\n Visualize collections of cards, images, or mixed content that automatically adjusts to available screen space.\n `,\n icon: 'ph--wall--regular',\n iconHue: 'green',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-masonry',\n screenshots: [],\n};\n"],
5
- "mappings": ";;;AAKA,SAASA,YAAY;AAEd,IAAMC,OAAoB;EAC/BC,IAAI;EACJC,MAAM;EACNC,aAAaC;;;;EAIbC,MAAM;EACNC,SAAS;EACTC,QAAQ;EACRC,aAAa,CAAA;AACf;",
6
- "names": ["trim", "meta", "id", "name", "description", "trim", "icon", "iconHue", "source", "screenshots"]
7
- }
@@ -1,68 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- __export
4
- } from "./chunk-HSLMI22Q.mjs";
5
-
6
- // src/types/Masonry.ts
7
- var Masonry_exports = {};
8
- __export(Masonry_exports, {
9
- Masonry: () => Masonry,
10
- make: () => make
11
- });
12
- import * as Schema from "effect/Schema";
13
- import { Annotation, Obj, Ref, Type } from "@dxos/echo";
14
- import { View } from "@dxos/echo";
15
- import { FormInputAnnotation, LabelAnnotation } from "@dxos/echo/internal";
16
- import { ViewAnnotation } from "@dxos/schema";
17
- var Masonry = Schema.Struct({
18
- name: Schema.String.pipe(Schema.optional),
19
- view: Ref.Ref(View.View).pipe(FormInputAnnotation.set(false)),
20
- arrangement: Schema.Array(Schema.Struct({
21
- ids: Schema.Array(Obj.ID),
22
- hidden: Schema.optional(Schema.Boolean)
23
- })).pipe(FormInputAnnotation.set(false), Schema.optional)
24
- }).pipe(Type.object({
25
- typename: "org.dxos.type.masonry",
26
- version: "0.1.0"
27
- }), LabelAnnotation.set([
28
- "name"
29
- ]), ViewAnnotation.set(true), Annotation.IconAnnotation.set({
30
- icon: "ph--wall--regular",
31
- hue: "green"
32
- }));
33
- var make = ({ name, arrangement = [], view }) => {
34
- return Obj.make(Masonry, {
35
- name,
36
- view: Ref.make(view),
37
- arrangement
38
- });
39
- };
40
-
41
- // src/types/MasonryAction.ts
42
- var MasonryAction_exports = {};
43
- __export(MasonryAction_exports, {
44
- MasonryProps: () => MasonryProps
45
- });
46
- import * as Schema2 from "effect/Schema";
47
- import { TypeInputOptionsAnnotation } from "@dxos/plugin-space/types";
48
- var MasonryProps = Schema2.Struct({
49
- name: Schema2.optional(Schema2.String),
50
- // TODO(wittjosiah): This should be a query input instead.
51
- typename: Schema2.String.pipe(Schema2.annotations({
52
- title: "Select card type"
53
- }), TypeInputOptionsAnnotation.set({
54
- location: [
55
- "database",
56
- "runtime"
57
- ],
58
- kind: [
59
- "user"
60
- ]
61
- }), Schema2.optional)
62
- });
63
-
64
- export {
65
- Masonry_exports,
66
- MasonryAction_exports
67
- };
68
- //# sourceMappingURL=chunk-GHHWMU6E.mjs.map
@@ -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\nimport { Annotation, Obj, Ref, Type } from '@dxos/echo';\nimport { View } from '@dxos/echo';\nimport { FormInputAnnotation, LabelAnnotation } from '@dxos/echo/internal';\nimport { ViewAnnotation } from '@dxos/schema';\n\nexport const Masonry = 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 Type.object({\n typename: 'org.dxos.type.masonry',\n version: '0.1.0',\n }),\n LabelAnnotation.set(['name']),\n ViewAnnotation.set(true),\n Annotation.IconAnnotation.set({\n icon: 'ph--wall--regular',\n hue: 'green',\n }),\n);\n\nexport interface Masonry extends Schema.Schema.Type<typeof Masonry> {}\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/types';\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;AAExB,SAASC,YAAYC,KAAKC,KAAKC,YAAY;AAC3C,SAASC,YAAY;AACrB,SAASC,qBAAqBC,uBAAuB;AACrD,SAASC,sBAAsB;AAExB,IAAMC,UAAiBC,cAAO;EACnCC,MAAaC,cAAOC,KAAYC,eAAQ;EAExCC,MAAMC,IAAIA,IAAIC,KAAKA,IAAI,EAAEJ,KAAKK,oBAAoBC,IAAI,KAAA,CAAA;EAEtDC,aAAoBC,aACXX,cAAO;IACZY,KAAYD,aAAME,IAAIC,EAAE;IACxBC,QAAeX,gBAAgBY,cAAO;EACxC,CAAA,CAAA,EACAb,KAAKK,oBAAoBC,IAAI,KAAA,GAAeL,eAAQ;AAExD,CAAA,EAAGD,KACDc,KAAKC,OAAO;EACVC,UAAU;EACVC,SAAS;AACX,CAAA,GACAC,gBAAgBZ,IAAI;EAAC;CAAO,GAC5Ba,eAAeb,IAAI,IAAA,GACnBc,WAAWC,eAAef,IAAI;EAC5BgB,MAAM;EACNC,KAAK;AACP,CAAA,CAAA;AAYK,IAAMC,OAAO,CAAC,EAAE1B,MAAMS,cAAc,CAAA,GAAIL,KAAI,MAAa;AAC9D,SAAOQ,IAAIc,KAAK5B,SAAS;IAAEE;IAAMI,MAAMC,IAAIqB,KAAKtB,IAAAA;IAAOK;EAAY,CAAA;AACrE;;;AC/CA;;;;AAIA,YAAYkB,aAAY;AAExB,SAASC,kCAAkC;AAEpC,IAAMC,eAAsBC,eAAO;EACxCC,MAAaC,iBAAgBC,cAAM;;EAEnCC,UAAiBD,eAAOE,KACfC,oBAAY;IAAEC,OAAO;EAAmB,CAAA,GAC/CC,2BAA2BC,IAAI;IAC7BC,UAAU;MAAC;MAAY;;IACvBC,MAAM;MAAC;;EACT,CAAA,GACOT,gBAAQ;AAEnB,CAAA;",
6
- "names": ["Schema", "Annotation", "Obj", "Ref", "Type", "View", "FormInputAnnotation", "LabelAnnotation", "ViewAnnotation", "Masonry", "Struct", "name", "String", "pipe", "optional", "view", "Ref", "View", "FormInputAnnotation", "set", "arrangement", "Array", "ids", "Obj", "ID", "hidden", "Boolean", "Type", "object", "typename", "version", "LabelAnnotation", "ViewAnnotation", "Annotation", "IconAnnotation", "icon", "hue", "make", "Schema", "TypeInputOptionsAnnotation", "MasonryProps", "Struct", "name", "optional", "String", "typename", "pipe", "annotations", "title", "TypeInputOptionsAnnotation", "set", "location", "kind"]
7
- }
@@ -1,11 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- var __defProp = Object.defineProperty;
3
- var __export = (target, all) => {
4
- for (var name in all)
5
- __defProp(target, name, { get: all[name], enumerable: true });
6
- };
7
-
8
- export {
9
- __export
10
- };
11
- //# sourceMappingURL=chunk-HSLMI22Q.mjs.map