@dxos/plugin-pipeline 0.8.4-main.9be5663bfe → 0.8.4-main.bc2380dfbc

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 (106) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +1 -1
  3. package/dist/lib/neutral/PipelineArticle-6JIVXMYF.mjs +69 -0
  4. package/dist/lib/neutral/PipelineArticle-6JIVXMYF.mjs.map +7 -0
  5. package/dist/lib/neutral/PipelinePlugin.mjs +26 -0
  6. package/dist/lib/neutral/PipelinePlugin.mjs.map +7 -0
  7. package/dist/lib/neutral/PipelinePlugin.node.mjs +21 -0
  8. package/dist/lib/neutral/PipelinePlugin.node.mjs.map +7 -0
  9. package/dist/lib/neutral/PipelinePlugin.workerd.mjs +16 -0
  10. package/dist/lib/neutral/PipelinePlugin.workerd.mjs.map +7 -0
  11. package/dist/lib/neutral/PipelineProperties-GED4FJSS.mjs +211 -0
  12. package/dist/lib/neutral/PipelineProperties-GED4FJSS.mjs.map +7 -0
  13. package/dist/lib/neutral/app-graph-builder-ZLGRWRJU.mjs +44 -0
  14. package/dist/lib/neutral/app-graph-builder-ZLGRWRJU.mjs.map +7 -0
  15. package/dist/lib/neutral/capabilities/index.mjs +11 -0
  16. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  17. package/dist/lib/neutral/chunk-ULB5DKWO.mjs +21 -0
  18. package/dist/lib/neutral/chunk-ULB5DKWO.mjs.map +7 -0
  19. package/dist/lib/neutral/components/index.mjs +206 -0
  20. package/dist/lib/neutral/components/index.mjs.map +7 -0
  21. package/dist/lib/neutral/containers/index.mjs +9 -0
  22. package/dist/lib/neutral/containers/index.mjs.map +7 -0
  23. package/dist/lib/neutral/create-object-ZJYFACOI.mjs +25 -0
  24. package/dist/lib/neutral/create-object-ZJYFACOI.mjs.map +7 -0
  25. package/dist/lib/neutral/hooks/index.mjs +70 -0
  26. package/dist/lib/neutral/hooks/index.mjs.map +7 -0
  27. package/dist/lib/neutral/index.mjs +7 -0
  28. package/dist/lib/neutral/meta.json +1 -0
  29. package/dist/lib/neutral/meta.mjs +7 -0
  30. package/dist/lib/neutral/meta.mjs.map +7 -0
  31. package/dist/lib/neutral/plugin.mjs +11 -0
  32. package/dist/lib/neutral/plugin.mjs.map +7 -0
  33. package/dist/lib/neutral/react-surface-4W5YLCHT.mjs +49 -0
  34. package/dist/lib/neutral/react-surface-4W5YLCHT.mjs.map +7 -0
  35. package/dist/lib/neutral/translations.mjs +38 -0
  36. package/dist/lib/neutral/translations.mjs.map +7 -0
  37. package/dist/lib/neutral/types/index.mjs.map +7 -0
  38. package/dist/types/src/PipelinePlugin.d.ts +1 -0
  39. package/dist/types/src/PipelinePlugin.d.ts.map +1 -1
  40. package/dist/types/src/PipelinePlugin.node.d.ts +4 -0
  41. package/dist/types/src/PipelinePlugin.node.d.ts.map +1 -0
  42. package/dist/types/src/PipelinePlugin.test.d.ts +2 -0
  43. package/dist/types/src/PipelinePlugin.test.d.ts.map +1 -0
  44. package/dist/types/src/PipelinePlugin.workerd.d.ts +4 -0
  45. package/dist/types/src/PipelinePlugin.workerd.d.ts.map +1 -0
  46. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  47. package/dist/types/src/capabilities/create-object.d.ts +11 -0
  48. package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
  49. package/dist/types/src/capabilities/index.d.ts +6 -0
  50. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  51. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  52. package/dist/types/src/components/PipelineComponent/PipelineColumn.d.ts +4 -4
  53. package/dist/types/src/components/PipelineComponent/PipelineColumn.d.ts.map +1 -1
  54. package/dist/types/src/components/PipelineComponent/PipelineComponent.d.ts +4 -0
  55. package/dist/types/src/components/PipelineComponent/PipelineComponent.d.ts.map +1 -1
  56. package/dist/types/src/components/PipelineComponent/PipelineComponent.stories.d.ts +44 -25
  57. package/dist/types/src/components/PipelineComponent/PipelineComponent.stories.d.ts.map +1 -1
  58. package/dist/types/src/containers/PipelineArticle/PipelineArticle.d.ts +6 -0
  59. package/dist/types/src/containers/PipelineArticle/PipelineArticle.d.ts.map +1 -0
  60. package/dist/types/src/containers/PipelineArticle/PipelineArticle.stories.d.ts +76 -0
  61. package/dist/types/src/containers/PipelineArticle/PipelineArticle.stories.d.ts.map +1 -0
  62. package/dist/types/src/containers/PipelineArticle/index.d.ts +2 -0
  63. package/dist/types/src/containers/PipelineArticle/index.d.ts.map +1 -0
  64. package/dist/types/src/containers/PipelineProperties/PipelineProperties.d.ts.map +1 -1
  65. package/dist/types/src/containers/index.d.ts +1 -1
  66. package/dist/types/src/containers/index.d.ts.map +1 -1
  67. package/dist/types/src/hooks/usePipelineBoardModel.d.ts.map +1 -1
  68. package/dist/types/src/index.d.ts +0 -1
  69. package/dist/types/src/index.d.ts.map +1 -1
  70. package/dist/types/src/plugin.d.ts +3 -0
  71. package/dist/types/src/plugin.d.ts.map +1 -0
  72. package/dist/types/src/templates/research.d.ts.map +1 -1
  73. package/dist/types/src/translations.d.ts +44 -26
  74. package/dist/types/src/translations.d.ts.map +1 -1
  75. package/dist/types/tsconfig.tsbuildinfo +1 -1
  76. package/package.json +98 -61
  77. package/src/PipelinePlugin.node.ts +19 -0
  78. package/src/PipelinePlugin.test.ts +27 -0
  79. package/src/PipelinePlugin.tsx +5 -30
  80. package/src/PipelinePlugin.workerd.ts +16 -0
  81. package/src/capabilities/create-object.ts +29 -0
  82. package/src/capabilities/index.ts +1 -0
  83. package/src/capabilities/react-surface.tsx +7 -10
  84. package/src/components/PipelineComponent/PipelineColumn.tsx +9 -9
  85. package/src/components/PipelineComponent/PipelineComponent.stories.tsx +5 -7
  86. package/src/components/PipelineComponent/PipelineComponent.tsx +1 -1
  87. package/src/containers/{PipelineContainer/PipelineContainer.stories.tsx → PipelineArticle/PipelineArticle.stories.tsx} +18 -19
  88. package/src/containers/{PipelineContainer/PipelineContainer.tsx → PipelineArticle/PipelineArticle.tsx} +8 -10
  89. package/src/containers/PipelineArticle/index.ts +5 -0
  90. package/src/containers/PipelineProperties/PipelineProperties.tsx +23 -23
  91. package/src/containers/index.ts +1 -1
  92. package/src/index.ts +0 -1
  93. package/src/plugin.ts +9 -0
  94. package/src/templates/research.ts +2 -2
  95. package/dist/lib/browser/index.mjs +0 -98
  96. package/dist/lib/browser/index.mjs.map +0 -7
  97. package/dist/lib/browser/meta.json +0 -1
  98. package/dist/types/src/containers/PipelineContainer/PipelineContainer.d.ts +0 -6
  99. package/dist/types/src/containers/PipelineContainer/PipelineContainer.d.ts.map +0 -1
  100. package/dist/types/src/containers/PipelineContainer/PipelineContainer.stories.d.ts +0 -57
  101. package/dist/types/src/containers/PipelineContainer/PipelineContainer.stories.d.ts.map +0 -1
  102. package/dist/types/src/containers/PipelineContainer/index.d.ts +0 -2
  103. package/dist/types/src/containers/PipelineContainer/index.d.ts.map +0 -1
  104. package/src/containers/PipelineContainer/index.ts +0 -5
  105. /package/dist/lib/{browser/types → neutral}/index.mjs.map +0 -0
  106. /package/dist/lib/{browser → neutral}/types/index.mjs +0 -0
@@ -0,0 +1,21 @@
1
+ // src/meta.ts
2
+ import { trim } from "@dxos/util";
3
+ var meta = {
4
+ id: "org.dxos.plugin.pipeline",
5
+ name: "Pipelines",
6
+ description: trim`
7
+ Pipelines for organizing tasks, milestones, and deliverables.
8
+ Track progress across multiple pipelines and coordinate team activities in a structured environment.
9
+ `,
10
+ icon: "ph--path--regular",
11
+ iconHue: "purple",
12
+ source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-pipeline",
13
+ tags: [
14
+ "labs"
15
+ ]
16
+ };
17
+
18
+ export {
19
+ meta
20
+ };
21
+ //# sourceMappingURL=chunk-ULB5DKWO.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/meta.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 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.pipeline',\n name: 'Pipelines',\n description: trim`\n Pipelines for organizing tasks, milestones, and deliverables.\n Track progress across multiple pipelines and coordinate team activities in a structured environment.\n `,\n icon: 'ph--path--regular',\n iconHue: 'purple',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-pipeline',\n tags: ['labs'],\n};\n"],
5
+ "mappings": ";AAKA,SAASA,YAAY;AAEd,IAAMC,OAAoB;EAC/BC,IAAI;EACJC,MAAM;EACNC,aAAaJ;;;;EAIbK,MAAM;EACNC,SAAS;EACTC,QAAQ;EACRC,MAAM;IAAC;;AACT;",
6
+ "names": ["trim", "meta", "id", "name", "description", "icon", "iconHue", "source", "tags"]
7
+ }
@@ -0,0 +1,206 @@
1
+ // src/components/PipelineComponent/PipelineColumn.tsx
2
+ import { useComposedRefs } from "@radix-ui/react-compose-refs";
3
+ import * as Function from "effect/Function";
4
+ import * as Option from "effect/Option";
5
+ import React2, { forwardRef, useMemo, useRef, useState } from "react";
6
+ import { resolveSchemaWithRegistry } from "@dxos/app-toolkit/query";
7
+ import { Annotation, Filter, JsonSchema, Obj as Obj2, Query, Type } from "@dxos/echo";
8
+ import { useObject } from "@dxos/react-client/echo";
9
+ import { Panel, Toolbar as Toolbar2, useAsyncEffect, useTranslation as useTranslation2 } from "@dxos/react-ui";
10
+ import { Card } from "@dxos/react-ui";
11
+ import { Menu } from "@dxos/react-ui-menu";
12
+ import { Board as Board2, Focus, Mosaic } from "@dxos/react-ui-mosaic";
13
+ import { ProjectionModel, createEchoChangeCallback } from "@dxos/schema";
14
+ import { meta as meta2 } from "#meta";
15
+
16
+ // src/components/PipelineComponent/PipelineComponent.tsx
17
+ import { useAtomValue } from "@effect-atom/atom-react";
18
+ import { createContext } from "@radix-ui/react-context";
19
+ import { Slot } from "@radix-ui/react-slot";
20
+ import React from "react";
21
+ import { Obj } from "@dxos/echo";
22
+ import { Toolbar, useTranslation } from "@dxos/react-ui";
23
+ import { Board, useBoard, useEventHandlerAdapter } from "@dxos/react-ui-mosaic";
24
+ import { composable, composableProps, slottable } from "@dxos/ui-theme";
25
+ import { meta } from "#meta";
26
+ var itemNoOp = ({ item }) => /* @__PURE__ */ React.createElement("span", null, item.id);
27
+ var PIPELINE_ROOT = "Pipeline.Root";
28
+ var [PipelineRootContext, usePipeline] = createContext(PIPELINE_ROOT, {
29
+ Item: itemNoOp
30
+ });
31
+ var PipelineRoot = ({ children, ...contextValue }) => /* @__PURE__ */ React.createElement(PipelineRootContext, contextValue, children);
32
+ PipelineRoot.displayName = PIPELINE_ROOT;
33
+ var PIPELINE_CONTENT_NAME = "Pipeline.Content";
34
+ var PipelineContent = slottable(({ asChild, model, children, ...props }, forwardedRef) => {
35
+ const Comp = asChild ? Slot : "div";
36
+ return /* @__PURE__ */ React.createElement(Board.Root, {
37
+ model
38
+ }, /* @__PURE__ */ React.createElement(Comp, {
39
+ ...composableProps(props),
40
+ ref: forwardedRef
41
+ }, children));
42
+ });
43
+ PipelineContent.displayName = PIPELINE_CONTENT_NAME;
44
+ var PIPELINE_COLUMNS_NAME = "Pipeline.Columns";
45
+ var PipelineColumns = composable(({ pipeline, ...props }) => {
46
+ const { model } = useBoard(PIPELINE_COLUMNS_NAME);
47
+ const columns = useAtomValue(model.columns);
48
+ const eventHandler = useEventHandlerAdapter({
49
+ id: pipeline.id,
50
+ // TODO(wittjosiah): Cast because columns array is readonly.
51
+ items: columns,
52
+ getId: model.getColumnId,
53
+ get: (data) => data,
54
+ make: (object) => object,
55
+ canDrop: ({ source }) => model.isColumn(source.data),
56
+ onChange: (mutate) => Obj.update(pipeline, (pipeline2) => mutate(pipeline2.columns))
57
+ });
58
+ return /* @__PURE__ */ React.createElement(Board.Content, {
59
+ ...props,
60
+ id: "pipeline",
61
+ eventHandler,
62
+ Tile: PipelineColumn
63
+ });
64
+ });
65
+ PipelineColumns.displayName = PIPELINE_COLUMNS_NAME;
66
+ var PIPELINE_TOOLBAR_NAME = "Pipeline.Toolbar";
67
+ var PipelineToolbar = composable(({ children, ...props }, forwardedRef) => {
68
+ const { t } = useTranslation(meta.id);
69
+ const { onAddColumn } = usePipeline(PIPELINE_TOOLBAR_NAME);
70
+ return /* @__PURE__ */ React.createElement(Toolbar.Root, {
71
+ ...composableProps(props),
72
+ ref: forwardedRef
73
+ }, /* @__PURE__ */ React.createElement(Toolbar.IconButton, {
74
+ icon: "ph--plus--regular",
75
+ iconOnly: true,
76
+ label: t("add-column.label"),
77
+ onClick: onAddColumn
78
+ }));
79
+ });
80
+ PipelineToolbar.displayName = PIPELINE_TOOLBAR_NAME;
81
+ var PipelineComponent = {
82
+ Root: PipelineRoot,
83
+ Content: PipelineContent,
84
+ Columns: PipelineColumns,
85
+ Toolbar: PipelineToolbar
86
+ };
87
+
88
+ // src/components/PipelineComponent/PipelineColumn.tsx
89
+ var PIPELINE_COLUMN_NAME = "PipelineColumn";
90
+ var PipelineColumn = ({ data: column, location, classNames, debug }) => {
91
+ const { t } = useTranslation2(meta2.id);
92
+ const [dragHandle, setDragHandle] = useState(null);
93
+ const [viewSnapshot] = useObject(column.view);
94
+ const view = column.view.target;
95
+ const db = view && Obj2.getDatabase(view);
96
+ const { Item } = usePipeline(PIPELINE_COLUMN_NAME);
97
+ const [schema, setSchema] = useState();
98
+ const query = useMemo(() => {
99
+ if (!view) {
100
+ return Query.select(Filter.nothing());
101
+ } else {
102
+ return Query.fromAst(JSON.parse(JSON.stringify(viewSnapshot?.query.ast)));
103
+ }
104
+ }, [
105
+ JSON.stringify(viewSnapshot?.query.ast)
106
+ ]);
107
+ useAsyncEffect(async () => {
108
+ if (!query || !db) {
109
+ return;
110
+ }
111
+ const schema2 = await resolveSchemaWithRegistry(db.schemaRegistry, query.ast);
112
+ setSchema(() => schema2);
113
+ }, [
114
+ db,
115
+ query
116
+ ]);
117
+ const projectionModel = useMemo(() => {
118
+ if (!schema || !view) {
119
+ return void 0;
120
+ }
121
+ const jsonSchema = Type.isMutable(schema) ? schema.jsonSchema : JsonSchema.toJsonSchema(schema);
122
+ const change = createEchoChangeCallback(view, Type.isMutable(schema) ? schema : void 0);
123
+ return new ProjectionModel({
124
+ view,
125
+ baseSchema: jsonSchema,
126
+ change
127
+ });
128
+ }, [
129
+ schema,
130
+ view
131
+ ]);
132
+ const PipelineTile = useMemo(() => {
133
+ return /* @__PURE__ */ forwardRef((props, ref) => /* @__PURE__ */ React2.createElement(ItemTile, {
134
+ ...props,
135
+ itemProps: {
136
+ item: props.data,
137
+ projectionModel
138
+ },
139
+ ref
140
+ }));
141
+ }, [
142
+ projectionModel
143
+ ]);
144
+ if (!view) {
145
+ return null;
146
+ }
147
+ return /* @__PURE__ */ React2.createElement(Panel.Root, {
148
+ asChild: true
149
+ }, /* @__PURE__ */ React2.createElement(Board2.Column.Root, {
150
+ debug,
151
+ data: column,
152
+ location,
153
+ classNames,
154
+ dragHandle
155
+ }, /* @__PURE__ */ React2.createElement(Panel.Toolbar, {
156
+ asChild: true
157
+ }, /* @__PURE__ */ React2.createElement(Board2.Column.Header, {
158
+ classNames: "_opacity-10",
159
+ label: column.name || t("untitled-view.title"),
160
+ dragHandleRef: setDragHandle
161
+ })), /* @__PURE__ */ React2.createElement(Panel.Content, {
162
+ asChild: true
163
+ }, /* @__PURE__ */ React2.createElement(Board2.Column.Body, {
164
+ data: column,
165
+ Tile: PipelineTile
166
+ }))));
167
+ };
168
+ PipelineColumn.displayName = PIPELINE_COLUMN_NAME;
169
+ var ITEM_TILE_NAME = "ItemTile";
170
+ var ItemTile = /* @__PURE__ */ forwardRef(({ classNames, data, location, debug, itemProps }, forwardedRef) => {
171
+ const rootRef = useRef(null);
172
+ const composedRef = useComposedRefs(rootRef, forwardedRef);
173
+ const { Item } = usePipeline(ITEM_TILE_NAME);
174
+ const icon = Function.pipe(Obj2.getSchema(data), Option.fromNullable, Option.flatMap(Annotation.IconAnnotation.get), Option.map(({ icon: icon2 }) => icon2), Option.getOrElse(() => "ph--placeholder--regular"));
175
+ return /* @__PURE__ */ React2.createElement(Menu.Root, null, /* @__PURE__ */ React2.createElement(Mosaic.Tile, {
176
+ asChild: true,
177
+ id: data.id,
178
+ data,
179
+ location,
180
+ debug
181
+ }, /* @__PURE__ */ React2.createElement(Focus.Item, {
182
+ asChild: true
183
+ }, /* @__PURE__ */ React2.createElement(Card.Root, {
184
+ classNames,
185
+ ref: composedRef
186
+ }, /* @__PURE__ */ React2.createElement(Card.Toolbar, null, /* @__PURE__ */ React2.createElement(Card.Icon, {
187
+ icon
188
+ }), /* @__PURE__ */ React2.createElement(Card.Title, null, Obj2.getLabel(data)), /* @__PURE__ */ React2.createElement(Card.IconBlock, {
189
+ padding: true
190
+ }, /* @__PURE__ */ React2.createElement(Menu.Trigger, {
191
+ asChild: true
192
+ }, /* @__PURE__ */ React2.createElement(Toolbar2.IconButton, {
193
+ iconOnly: true,
194
+ variant: "ghost",
195
+ icon: "ph--dots-three-vertical--regular",
196
+ label: "Actions"
197
+ })), /* @__PURE__ */ React2.createElement(Menu.Content, null))), /* @__PURE__ */ React2.createElement(Card.Content, null, /* @__PURE__ */ React2.createElement(Item, itemProps))))));
198
+ });
199
+ ItemTile.displayName = ITEM_TILE_NAME;
200
+ export {
201
+ PipelineColumn,
202
+ PipelineComponent,
203
+ PipelineToolbar,
204
+ usePipeline
205
+ };
206
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/components/PipelineComponent/PipelineColumn.tsx", "../../../../src/components/PipelineComponent/PipelineComponent.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport * as Function from 'effect/Function';\nimport * as Option from 'effect/Option';\nimport type * as Schema from 'effect/Schema';\nimport React, { forwardRef, useMemo, useRef, useState } from 'react';\n\nimport { resolveSchemaWithRegistry } from '@dxos/app-toolkit/query';\nimport { Annotation, Filter, JsonSchema, Obj, Query, Type } from '@dxos/echo';\nimport { useObject } from '@dxos/react-client/echo';\nimport { Panel, Toolbar, useAsyncEffect, useTranslation } from '@dxos/react-ui';\nimport { Card } from '@dxos/react-ui';\nimport { Menu } from '@dxos/react-ui-menu';\nimport { Board, Focus, Mosaic, type MosaicTileProps } from '@dxos/react-ui-mosaic';\nimport { ProjectionModel, createEchoChangeCallback } from '@dxos/schema';\nimport { type Pipeline } from '@dxos/types';\n\nimport { meta } from '#meta';\n\nimport { type ItemProps, usePipeline } from './PipelineComponent';\n\n//\n// PipelineColumn\n//\n\nconst PIPELINE_COLUMN_NAME = 'PipelineColumn';\n\nexport type PipelineColumnProps = Pick<MosaicTileProps<Pipeline.Column>, 'classNames' | 'location' | 'data' | 'debug'>;\n\n// TODO(wittjosiah): Support item DnD reordering (ordering needs to be stored on the view presentation collection).\nexport const PipelineColumn = ({ data: column, location, classNames, debug }: PipelineColumnProps) => {\n const { t } = useTranslation(meta.id);\n const [dragHandle, setDragHandle] = useState<HTMLButtonElement | null>(null);\n // Subscribe to the view target for reactivity.\n const [viewSnapshot] = useObject(column.view);\n const view = column.view.target;\n const db = view && Obj.getDatabase(view);\n const { Item } = usePipeline(PIPELINE_COLUMN_NAME);\n const [schema, setSchema] = useState<Schema.Schema.AnyNoContext>();\n const query = useMemo(() => {\n if (!view) {\n return Query.select(Filter.nothing());\n } else {\n // NOTE: Snapshot is required to prevent signal read in prohibited scope.\n // TODO(wittjosiah): Without stringify, filter.filters remains a proxied array.\n return Query.fromAst(JSON.parse(JSON.stringify(viewSnapshot?.query.ast)));\n }\n }, [JSON.stringify(viewSnapshot?.query.ast)]);\n\n useAsyncEffect(async () => {\n if (!query || !db) {\n return;\n }\n\n const schema = await resolveSchemaWithRegistry(db.schemaRegistry, query.ast);\n setSchema(() => schema);\n }, [db, query]);\n\n const projectionModel = useMemo(() => {\n if (!schema || !view) {\n return undefined;\n }\n\n // For mutable schemas (EchoSchema), use the live jsonSchema reference for reactivity.\n const jsonSchema = Type.isMutable(schema) ? schema.jsonSchema : JsonSchema.toJsonSchema(schema);\n const change = createEchoChangeCallback(view, Type.isMutable(schema) ? schema : undefined);\n return new ProjectionModel({ view, baseSchema: jsonSchema, change });\n }, [schema, view]);\n\n const PipelineTile = useMemo(() => {\n return forwardRef<HTMLDivElement, Pick<MosaicTileProps<Obj.Unknown>, 'classNames' | 'location' | 'data' | 'debug'>>(\n (props, ref) => <ItemTile {...props} itemProps={{ item: props.data, projectionModel }} ref={ref} />,\n );\n }, [projectionModel]);\n\n if (!view) {\n return null;\n }\n\n return (\n <Panel.Root asChild>\n <Board.Column.Root\n debug={debug}\n data={column}\n location={location}\n classNames={classNames}\n dragHandle={dragHandle}\n >\n <Panel.Toolbar asChild>\n <Board.Column.Header\n classNames='_opacity-10'\n label={column.name || t('untitled-view.title')}\n dragHandleRef={setDragHandle}\n />\n </Panel.Toolbar>\n <Panel.Content asChild>\n <Board.Column.Body data={column} Tile={PipelineTile} />\n </Panel.Content>\n </Board.Column.Root>\n </Panel.Root>\n );\n};\n\nPipelineColumn.displayName = PIPELINE_COLUMN_NAME;\n\n//\n// ItemTile\n//\n\nconst ITEM_TILE_NAME = 'ItemTile';\n\ntype ItemTileProps = Pick<MosaicTileProps<Obj.Unknown>, 'classNames' | 'location' | 'data' | 'debug'> & {\n itemProps: ItemProps;\n};\n\nconst ItemTile = forwardRef<HTMLDivElement, ItemTileProps>(\n ({ classNames, data, location, debug, itemProps }, forwardedRef) => {\n const rootRef = useRef<HTMLDivElement>(null);\n const composedRef = useComposedRefs<HTMLDivElement>(rootRef, forwardedRef);\n const { Item } = usePipeline(ITEM_TILE_NAME);\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 <Mosaic.Tile asChild id={data.id} data={data} location={location} debug={debug}>\n <Focus.Item asChild>\n <Card.Root classNames={classNames} ref={composedRef}>\n <Card.Toolbar>\n <Card.Icon icon={icon} />\n <Card.Title>{Obj.getLabel(data)}</Card.Title>\n {/* TODO(wittjosiah): Reconcile with Card.Menu. */}\n <Card.IconBlock padding>\n <Menu.Trigger asChild>\n <Toolbar.IconButton\n iconOnly\n variant='ghost'\n icon='ph--dots-three-vertical--regular'\n label='Actions'\n />\n </Menu.Trigger>\n <Menu.Content />\n </Card.IconBlock>\n </Card.Toolbar>\n <Card.Content>\n <Item {...itemProps} />\n </Card.Content>\n </Card.Root>\n </Focus.Item>\n </Mosaic.Tile>\n </Menu.Root>\n );\n },\n);\n\nItemTile.displayName = ITEM_TILE_NAME;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport { createContext } from '@radix-ui/react-context';\nimport { Slot } from '@radix-ui/react-slot';\nimport React, { type FC, type PropsWithChildren } from 'react';\n\nimport { Obj } from '@dxos/echo';\nimport { Toolbar, type ToolbarRootProps, useTranslation } from '@dxos/react-ui';\nimport { Board, type BoardModel, useBoard, useEventHandlerAdapter } from '@dxos/react-ui-mosaic';\nimport { type ProjectionModel } from '@dxos/schema';\nimport { type Pipeline } from '@dxos/types';\nimport { composable, composableProps, slottable } from '@dxos/ui-theme';\n\nimport { meta } from '#meta';\n\nimport { PipelineColumn } from './PipelineColumn';\n\ntype ItemProps = {\n item: Obj.Unknown;\n projectionModel?: ProjectionModel;\n};\n\nconst itemNoOp = ({ item }: ItemProps) => <span>{item.id}</span>;\n\n//\n// Root\n//\n\ntype PipelineContextValue = {\n Item: FC<ItemProps>;\n // TODO(wittjosiah): Support adding items.\n // If the created item doesn't match the current query, it will not be visible.\n // TODO(wittjosiah): onAddItem?: (schema: Schema.Schema.AnyNoContext) => void;\n onAddColumn?: () => void;\n};\n\ntype PipelineRootProps = PropsWithChildren<PipelineContextValue>;\n\nconst PIPELINE_ROOT = 'Pipeline.Root';\n\nconst [PipelineRootContext, usePipeline] = createContext<PipelineContextValue>(PIPELINE_ROOT, {\n Item: itemNoOp,\n});\n\nconst PipelineRoot = ({ children, ...contextValue }: PipelineRootProps) => (\n <PipelineRootContext {...contextValue}>{children}</PipelineRootContext>\n);\n\nPipelineRoot.displayName = PIPELINE_ROOT;\n\n//\n// Content\n//\n\nconst PIPELINE_CONTENT_NAME = 'Pipeline.Content';\n\ntype PipelineContentProps = PropsWithChildren<{\n model: BoardModel<Pipeline.Column, Obj.Unknown>;\n}>;\n\nconst PipelineContent = slottable<HTMLDivElement, PipelineContentProps>(\n ({ asChild, model, children, ...props }, forwardedRef) => {\n const Comp = asChild ? Slot : 'div';\n return (\n <Board.Root model={model}>\n <Comp {...composableProps(props)} ref={forwardedRef}>\n {children}\n </Comp>\n </Board.Root>\n );\n },\n);\n\nPipelineContent.displayName = PIPELINE_CONTENT_NAME;\n\n//\n// Columns\n//\n\nconst PIPELINE_COLUMNS_NAME = 'Pipeline.Columns';\n\ntype PipelineColumnsProps = {\n pipeline: Pipeline.Pipeline;\n};\n\nconst PipelineColumns = composable<HTMLDivElement, PipelineColumnsProps>(({ pipeline, ...props }) => {\n const { model } = useBoard(PIPELINE_COLUMNS_NAME);\n const columns = useAtomValue(model.columns);\n const eventHandler = useEventHandlerAdapter<Pipeline.Column, Obj.Unknown>({\n id: pipeline.id,\n // TODO(wittjosiah): Cast because columns array is readonly.\n items: columns as any,\n getId: model.getColumnId,\n get: (data) => data as unknown as Obj.Unknown,\n make: (object) => object as unknown as Pipeline.Column,\n canDrop: ({ source }) => model.isColumn(source.data),\n onChange: (mutate) => Obj.update(pipeline, (pipeline) => mutate(pipeline.columns)),\n });\n\n return <Board.Content {...props} id='pipeline' eventHandler={eventHandler} Tile={PipelineColumn} />;\n});\n\nPipelineColumns.displayName = PIPELINE_COLUMNS_NAME;\n\n//\n// Toolbar\n//\n\nconst PIPELINE_TOOLBAR_NAME = 'Pipeline.Toolbar';\n\nexport const PipelineToolbar = composable<HTMLDivElement, ToolbarRootProps>(({ children, ...props }, forwardedRef) => {\n const { t } = useTranslation(meta.id);\n const { onAddColumn } = usePipeline(PIPELINE_TOOLBAR_NAME);\n\n return (\n <Toolbar.Root {...composableProps(props)} ref={forwardedRef}>\n <Toolbar.IconButton icon='ph--plus--regular' iconOnly label={t('add-column.label')} onClick={onAddColumn} />\n </Toolbar.Root>\n );\n});\n\nPipelineToolbar.displayName = PIPELINE_TOOLBAR_NAME;\n\n//\n// Project\n//\n\nexport const PipelineComponent = {\n Root: PipelineRoot,\n Content: PipelineContent,\n Columns: PipelineColumns,\n Toolbar: PipelineToolbar,\n};\n\nexport { usePipeline };\n\nexport type { ItemProps, PipelineContextValue, PipelineRootProps, PipelineContentProps, PipelineColumnsProps };\n"],
5
+ "mappings": ";AAIA,SAASA,uBAAuB;AAChC,YAAYC,cAAc;AAC1B,YAAYC,YAAY;AAExB,OAAOC,UAASC,YAAYC,SAASC,QAAQC,gBAAgB;AAE7D,SAASC,iCAAiC;AAC1C,SAASC,YAAYC,QAAQC,YAAYC,OAAAA,MAAKC,OAAOC,YAAY;AACjE,SAASC,iBAAiB;AAC1B,SAASC,OAAOC,WAAAA,UAASC,gBAAgBC,kBAAAA,uBAAsB;AAC/D,SAASC,YAAY;AACrB,SAASC,YAAY;AACrB,SAASC,SAAAA,QAAOC,OAAOC,cAAoC;AAC3D,SAASC,iBAAiBC,gCAAgC;AAG1D,SAASC,QAAAA,aAAY;;;AChBrB,SAASC,oBAAoB;AAC7B,SAASC,qBAAqB;AAC9B,SAASC,YAAY;AACrB,OAAOC,WAAgD;AAEvD,SAASC,WAAW;AACpB,SAASC,SAAgCC,sBAAsB;AAC/D,SAASC,OAAwBC,UAAUC,8BAA8B;AAGzE,SAASC,YAAYC,iBAAiBC,iBAAiB;AAEvD,SAASC,YAAY;AASrB,IAAMC,WAAW,CAAC,EAAEC,KAAI,MAAkB,sBAAA,cAACC,QAAAA,MAAMD,KAAKE,EAAE;AAgBxD,IAAMC,gBAAgB;AAEtB,IAAM,CAACC,qBAAqBC,WAAAA,IAAeC,cAAoCH,eAAe;EAC5FI,MAAMR;AACR,CAAA;AAEA,IAAMS,eAAe,CAAC,EAAEC,UAAU,GAAGC,aAAAA,MACnC,sBAAA,cAACN,qBAAwBM,cAAeD,QAAAA;AAG1CD,aAAaG,cAAcR;AAM3B,IAAMS,wBAAwB;AAM9B,IAAMC,kBAAkBC,UACtB,CAAC,EAAEC,SAASC,OAAOP,UAAU,GAAGQ,MAAAA,GAASC,iBAAAA;AACvC,QAAMC,OAAOJ,UAAUK,OAAO;AAC9B,SACE,sBAAA,cAACC,MAAMC,MAAI;IAACN;KACV,sBAAA,cAACG,MAAAA;IAAM,GAAGI,gBAAgBN,KAAAA;IAAQO,KAAKN;KACpCT,QAAAA,CAAAA;AAIT,CAAA;AAGFI,gBAAgBF,cAAcC;AAM9B,IAAMa,wBAAwB;AAM9B,IAAMC,kBAAkBC,WAAiD,CAAC,EAAEC,UAAU,GAAGX,MAAAA,MAAO;AAC9F,QAAM,EAAED,MAAK,IAAKa,SAASJ,qBAAAA;AAC3B,QAAMK,UAAUC,aAAaf,MAAMc,OAAO;AAC1C,QAAME,eAAeC,uBAAqD;IACxE/B,IAAI0B,SAAS1B;;IAEbgC,OAAOJ;IACPK,OAAOnB,MAAMoB;IACbC,KAAK,CAACC,SAASA;IACfC,MAAM,CAACC,WAAWA;IAClBC,SAAS,CAAC,EAAEC,OAAM,MAAO1B,MAAM2B,SAASD,OAAOJ,IAAI;IACnDM,UAAU,CAACC,WAAWC,IAAIC,OAAOnB,UAAU,CAACA,cAAaiB,OAAOjB,UAASE,OAAO,CAAA;EAClF,CAAA;AAEA,SAAO,sBAAA,cAACT,MAAM2B,SAAO;IAAE,GAAG/B;IAAOf,IAAG;IAAW8B;IAA4BiB,MAAMC;;AACnF,CAAA;AAEAxB,gBAAgBf,cAAcc;AAM9B,IAAM0B,wBAAwB;AAEvB,IAAMC,kBAAkBzB,WAA6C,CAAC,EAAElB,UAAU,GAAGQ,MAAAA,GAASC,iBAAAA;AACnG,QAAM,EAAEmC,EAAC,IAAKC,eAAeC,KAAKrD,EAAE;AACpC,QAAM,EAAEsD,YAAW,IAAKnD,YAAY8C,qBAAAA;AAEpC,SACE,sBAAA,cAACM,QAAQnC,MAAI;IAAE,GAAGC,gBAAgBN,KAAAA;IAAQO,KAAKN;KAC7C,sBAAA,cAACuC,QAAQC,YAAU;IAACC,MAAK;IAAoBC,UAAAA;IAASC,OAAOR,EAAE,kBAAA;IAAqBS,SAASN;;AAGnG,CAAA;AAEAJ,gBAAgBzC,cAAcwC;AAMvB,IAAMY,oBAAoB;EAC/BzC,MAAMd;EACNwC,SAASnC;EACTmD,SAAStC;EACT+B,SAASL;AACX;;;AD3GA,IAAMa,uBAAuB;AAKtB,IAAMC,iBAAiB,CAAC,EAAEC,MAAMC,QAAQC,UAAUC,YAAYC,MAAK,MAAuB;AAC/F,QAAM,EAAEC,EAAC,IAAKC,gBAAeC,MAAKC,EAAE;AACpC,QAAM,CAACC,YAAYC,aAAAA,IAAiBC,SAAmC,IAAA;AAEvE,QAAM,CAACC,YAAAA,IAAgBC,UAAUZ,OAAOa,IAAI;AAC5C,QAAMA,OAAOb,OAAOa,KAAKC;AACzB,QAAMC,KAAKF,QAAQG,KAAIC,YAAYJ,IAAAA;AACnC,QAAM,EAAEK,KAAI,IAAKC,YAAYtB,oBAAAA;AAC7B,QAAM,CAACuB,QAAQC,SAAAA,IAAaX,SAAAA;AAC5B,QAAMY,QAAQC,QAAQ,MAAA;AACpB,QAAI,CAACV,MAAM;AACT,aAAOW,MAAMC,OAAOC,OAAOC,QAAO,CAAA;IACpC,OAAO;AAGL,aAAOH,MAAMI,QAAQC,KAAKC,MAAMD,KAAKE,UAAUpB,cAAcW,MAAMU,GAAAA,CAAAA,CAAAA;IACrE;EACF,GAAG;IAACH,KAAKE,UAAUpB,cAAcW,MAAMU,GAAAA;GAAK;AAE5CC,iBAAe,YAAA;AACb,QAAI,CAACX,SAAS,CAACP,IAAI;AACjB;IACF;AAEA,UAAMK,UAAS,MAAMc,0BAA0BnB,GAAGoB,gBAAgBb,MAAMU,GAAG;AAC3EX,cAAU,MAAMD,OAAAA;EAClB,GAAG;IAACL;IAAIO;GAAM;AAEd,QAAMc,kBAAkBb,QAAQ,MAAA;AAC9B,QAAI,CAACH,UAAU,CAACP,MAAM;AACpB,aAAOwB;IACT;AAGA,UAAMC,aAAaC,KAAKC,UAAUpB,MAAAA,IAAUA,OAAOkB,aAAaG,WAAWC,aAAatB,MAAAA;AACxF,UAAMuB,SAASC,yBAAyB/B,MAAM0B,KAAKC,UAAUpB,MAAAA,IAAUA,SAASiB,MAAAA;AAChF,WAAO,IAAIQ,gBAAgB;MAAEhC;MAAMiC,YAAYR;MAAYK;IAAO,CAAA;EACpE,GAAG;IAACvB;IAAQP;GAAK;AAEjB,QAAMkC,eAAexB,QAAQ,MAAA;AAC3B,WAAOyB,2BACL,CAACC,OAAOC,QAAQ,gBAAAC,OAAA,cAACC,UAAAA;MAAU,GAAGH;MAAOI,WAAW;QAAEC,MAAML,MAAMlD;QAAMqC;MAAgB;MAAGc;;EAE3F,GAAG;IAACd;GAAgB;AAEpB,MAAI,CAACvB,MAAM;AACT,WAAO;EACT;AAEA,SACE,gBAAAsC,OAAA,cAACI,MAAMC,MAAI;IAACC,SAAAA;KACV,gBAAAN,OAAA,cAACO,OAAMC,OAAOH,MAAI;IAChBrD;IACAJ,MAAMC;IACNC;IACAC;IACAM;KAEA,gBAAA2C,OAAA,cAACI,MAAMK,SAAO;IAACH,SAAAA;KACb,gBAAAN,OAAA,cAACO,OAAMC,OAAOE,QAAM;IAClB3D,YAAW;IACX4D,OAAO9D,OAAO+D,QAAQ3D,EAAE,qBAAA;IACxB4D,eAAevD;OAGnB,gBAAA0C,OAAA,cAACI,MAAMU,SAAO;IAACR,SAAAA;KACb,gBAAAN,OAAA,cAACO,OAAMC,OAAOO,MAAI;IAACnE,MAAMC;IAAQmE,MAAMpB;;AAKjD;AAEAjD,eAAesE,cAAcvE;AAM7B,IAAMwE,iBAAiB;AAMvB,IAAMjB,WAAWJ,2BACf,CAAC,EAAE9C,YAAYH,MAAME,UAAUE,OAAOkD,UAAS,GAAIiB,iBAAAA;AACjD,QAAMC,UAAUC,OAAuB,IAAA;AACvC,QAAMC,cAAcC,gBAAgCH,SAASD,YAAAA;AAC7D,QAAM,EAAEpD,KAAI,IAAKC,YAAYkD,cAAAA;AAC7B,QAAMM,OAAgBC,cACpB5D,KAAI6D,UAAU9E,IAAAA,GACP+E,qBACAC,eAAQC,WAAWC,eAAeC,GAAG,GACrCC,WAAI,CAAC,EAAER,MAAAA,MAAI,MAAOA,KAAAA,GAClBS,iBAAU,MAAM,0BAAA,CAAA;AAGzB,SACE,gBAAAjC,OAAA,cAACkC,KAAK7B,MAAI,MACR,gBAAAL,OAAA,cAACmC,OAAOnB,MAAI;IAACV,SAAAA;IAAQlD,IAAIR,KAAKQ;IAAIR;IAAYE;IAAoBE;KAChE,gBAAAgD,OAAA,cAACoC,MAAMrE,MAAI;IAACuC,SAAAA;KACV,gBAAAN,OAAA,cAACqC,KAAKhC,MAAI;IAACtD;IAAwBgD,KAAKuB;KACtC,gBAAAtB,OAAA,cAACqC,KAAK5B,SAAO,MACX,gBAAAT,OAAA,cAACqC,KAAKC,MAAI;IAACd;MACX,gBAAAxB,OAAA,cAACqC,KAAKE,OAAK,MAAE1E,KAAI2E,SAAS5F,IAAAA,CAAAA,GAE1B,gBAAAoD,OAAA,cAACqC,KAAKI,WAAS;IAACC,SAAAA;KACd,gBAAA1C,OAAA,cAACkC,KAAKS,SAAO;IAACrC,SAAAA;KACZ,gBAAAN,OAAA,cAACS,SAAQmC,YAAU;IACjBC,UAAAA;IACAC,SAAQ;IACRtB,MAAK;IACLb,OAAM;OAGV,gBAAAX,OAAA,cAACkC,KAAKpB,SAAO,IAAA,CAAA,CAAA,GAGjB,gBAAAd,OAAA,cAACqC,KAAKvB,SAAO,MACX,gBAAAd,OAAA,cAACjC,MAASmC,SAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAOxB,CAAA;AAGFD,SAASgB,cAAcC;",
6
+ "names": ["useComposedRefs", "Function", "Option", "React", "forwardRef", "useMemo", "useRef", "useState", "resolveSchemaWithRegistry", "Annotation", "Filter", "JsonSchema", "Obj", "Query", "Type", "useObject", "Panel", "Toolbar", "useAsyncEffect", "useTranslation", "Card", "Menu", "Board", "Focus", "Mosaic", "ProjectionModel", "createEchoChangeCallback", "meta", "useAtomValue", "createContext", "Slot", "React", "Obj", "Toolbar", "useTranslation", "Board", "useBoard", "useEventHandlerAdapter", "composable", "composableProps", "slottable", "meta", "itemNoOp", "item", "span", "id", "PIPELINE_ROOT", "PipelineRootContext", "usePipeline", "createContext", "Item", "PipelineRoot", "children", "contextValue", "displayName", "PIPELINE_CONTENT_NAME", "PipelineContent", "slottable", "asChild", "model", "props", "forwardedRef", "Comp", "Slot", "Board", "Root", "composableProps", "ref", "PIPELINE_COLUMNS_NAME", "PipelineColumns", "composable", "pipeline", "useBoard", "columns", "useAtomValue", "eventHandler", "useEventHandlerAdapter", "items", "getId", "getColumnId", "get", "data", "make", "object", "canDrop", "source", "isColumn", "onChange", "mutate", "Obj", "update", "Content", "Tile", "PipelineColumn", "PIPELINE_TOOLBAR_NAME", "PipelineToolbar", "t", "useTranslation", "meta", "onAddColumn", "Toolbar", "IconButton", "icon", "iconOnly", "label", "onClick", "PipelineComponent", "Columns", "PIPELINE_COLUMN_NAME", "PipelineColumn", "data", "column", "location", "classNames", "debug", "t", "useTranslation", "meta", "id", "dragHandle", "setDragHandle", "useState", "viewSnapshot", "useObject", "view", "target", "db", "Obj", "getDatabase", "Item", "usePipeline", "schema", "setSchema", "query", "useMemo", "Query", "select", "Filter", "nothing", "fromAst", "JSON", "parse", "stringify", "ast", "useAsyncEffect", "resolveSchemaWithRegistry", "schemaRegistry", "projectionModel", "undefined", "jsonSchema", "Type", "isMutable", "JsonSchema", "toJsonSchema", "change", "createEchoChangeCallback", "ProjectionModel", "baseSchema", "PipelineTile", "forwardRef", "props", "ref", "React", "ItemTile", "itemProps", "item", "Panel", "Root", "asChild", "Board", "Column", "Toolbar", "Header", "label", "name", "dragHandleRef", "Content", "Body", "Tile", "displayName", "ITEM_TILE_NAME", "forwardedRef", "rootRef", "useRef", "composedRef", "useComposedRefs", "icon", "pipe", "getSchema", "fromNullable", "flatMap", "Annotation", "IconAnnotation", "get", "map", "getOrElse", "Menu", "Mosaic", "Focus", "Card", "Icon", "Title", "getLabel", "IconBlock", "padding", "Trigger", "IconButton", "iconOnly", "variant"]
7
+ }
@@ -0,0 +1,9 @@
1
+ // src/containers/index.ts
2
+ import { lazy } from "react";
3
+ var PipelineArticle = lazy(() => import("../PipelineArticle-6JIVXMYF.mjs"));
4
+ var PipelineProperties = lazy(() => import("../PipelineProperties-GED4FJSS.mjs"));
5
+ export {
6
+ PipelineArticle,
7
+ PipelineProperties
8
+ };
9
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/containers/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type ComponentType, lazy } from 'react';\n\nexport const PipelineArticle: ComponentType<any> = lazy(() => import('./PipelineArticle'));\nexport const PipelineProperties: ComponentType<any> = lazy(() => import('./PipelineProperties'));\n"],
5
+ "mappings": ";AAIA,SAA6BA,YAAY;AAElC,IAAMC,kBAAsCD,KAAK,MAAM,OAAO,iCAAA,CAAA;AAC9D,IAAME,qBAAyCF,KAAK,MAAM,OAAO,oCAAA,CAAA;",
6
+ "names": ["lazy", "PipelineArticle", "PipelineProperties"]
7
+ }
@@ -0,0 +1,25 @@
1
+ // src/capabilities/create-object.ts
2
+ import * as Effect from "effect/Effect";
3
+ import { Capability } from "@dxos/app-framework";
4
+ import { Operation } from "@dxos/compute";
5
+ import { SpaceOperation } from "@dxos/plugin-space";
6
+ import { SpaceCapabilities } from "@dxos/plugin-space";
7
+ import { Pipeline } from "@dxos/types";
8
+ var create_object_default = Capability.makeModule(Effect.fnUntraced(function* () {
9
+ return Capability.contributes(SpaceCapabilities.CreateObjectEntry, {
10
+ id: Pipeline.Pipeline.typename,
11
+ createObject: (props, options) => Effect.gen(function* () {
12
+ const object = Pipeline.make(props);
13
+ return yield* Operation.invoke(SpaceOperation.AddObject, {
14
+ object,
15
+ target: options.target,
16
+ hidden: true,
17
+ targetNodeId: options.targetNodeId
18
+ });
19
+ })
20
+ });
21
+ }));
22
+ export {
23
+ create_object_default as default
24
+ };
25
+ //# sourceMappingURL=create-object-ZJYFACOI.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/create-object.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { Operation } from '@dxos/compute';\nimport { SpaceOperation } from '@dxos/plugin-space';\nimport { SpaceCapabilities } from '@dxos/plugin-space';\nimport { Pipeline } from '@dxos/types';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n return Capability.contributes(SpaceCapabilities.CreateObjectEntry, {\n id: Pipeline.Pipeline.typename,\n createObject: (props, options) =>\n Effect.gen(function* () {\n const object = Pipeline.make(props);\n return yield* Operation.invoke(SpaceOperation.AddObject, {\n object,\n target: options.target,\n hidden: true,\n targetNodeId: options.targetNodeId,\n });\n }),\n });\n }),\n);\n"],
5
+ "mappings": ";AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,iBAAiB;AAC1B,SAASC,sBAAsB;AAC/B,SAASC,yBAAyB;AAClC,SAASC,gBAAgB;AAEzB,IAAA,wBAAeJ,WAAWK,WACjBC,kBAAW,aAAA;AAChB,SAAON,WAAWO,YAAYJ,kBAAkBK,mBAAmB;IACjEC,IAAIL,SAASA,SAASM;IACtBC,cAAc,CAACC,OAAOC,YACbC,WAAI,aAAA;AACT,YAAMC,SAASX,SAASY,KAAKJ,KAAAA;AAC7B,aAAO,OAAOX,UAAUgB,OAAOf,eAAegB,WAAW;QACvDH;QACAI,QAAQN,QAAQM;QAChBC,QAAQ;QACRC,cAAcR,QAAQQ;MACxB,CAAA;IACF,CAAA;EACJ,CAAA;AACF,CAAA,CAAA;",
6
+ "names": ["Effect", "Capability", "Operation", "SpaceOperation", "SpaceCapabilities", "Pipeline", "makeModule", "fnUntraced", "contributes", "CreateObjectEntry", "id", "typename", "createObject", "props", "options", "gen", "object", "make", "invoke", "AddObject", "target", "hidden", "targetNodeId"]
7
+ }
@@ -0,0 +1,70 @@
1
+ // src/hooks/usePipelineBoardModel.ts
2
+ import { Atom } from "@effect-atom/atom-react";
3
+ import * as Schema from "effect/Schema";
4
+ import { useMemo } from "react";
5
+ import { getQueryTarget } from "@dxos/app-toolkit/query";
6
+ import { Obj, Query } from "@dxos/echo";
7
+ import { AtomObj, AtomQuery } from "@dxos/echo-atom";
8
+ import { getSpace, isSpace } from "@dxos/react-client/echo";
9
+ import { Pipeline } from "@dxos/types";
10
+ var usePipelineBoardModel = (pipeline, registry) => useMemo(() => {
11
+ if (pipeline == null) {
12
+ return emptyPipelineModel;
13
+ }
14
+ const space = getSpace(pipeline);
15
+ const columnsAtom = AtomObj.makeProperty(pipeline, "columns");
16
+ const columnAtomFamily = Atom.family((viewKey) => Atom.make((get) => {
17
+ const columns = get(columnsAtom);
18
+ return columns.find((c) => c.view.dxn.toString() === viewKey);
19
+ }));
20
+ const itemsAtomFamily = Atom.family((viewKey) => Atom.make((get) => {
21
+ const column = get(columnAtomFamily(viewKey));
22
+ if (column == null) {
23
+ return [];
24
+ }
25
+ const viewSnapshot = get(AtomObj.make(column.view));
26
+ if (!viewSnapshot?.query?.ast) {
27
+ return [];
28
+ }
29
+ const query = Query.fromAst(JSON.parse(JSON.stringify(viewSnapshot.query.ast)));
30
+ const queryTarget = space ? getQueryTarget(query.ast, space) : void 0;
31
+ if (!queryTarget) {
32
+ return [];
33
+ }
34
+ const raw = get(AtomQuery.make(queryTarget, query));
35
+ return isSpace(queryTarget) ? raw : [
36
+ ...raw
37
+ ].reverse();
38
+ }));
39
+ return {
40
+ getColumnId: (data) => data.view.dxn.toString(),
41
+ getItemId: (data) => data.id,
42
+ isColumn: (obj) => Schema.is(Pipeline.Column)(obj),
43
+ isItem: (obj) => Obj.isObject(obj),
44
+ columns: columnsAtom,
45
+ items: (column) => itemsAtomFamily(column.view.dxn.toString()),
46
+ getColumns: () => [
47
+ ...registry.get(columnsAtom)
48
+ ],
49
+ getItems: (column) => registry.get(itemsAtomFamily(column.view.dxn.toString())) ?? []
50
+ };
51
+ }, [
52
+ pipeline,
53
+ registry
54
+ ]);
55
+ var emptyColumnsAtom = Atom.make(() => []);
56
+ var emptyItemsAtom = Atom.make(() => []);
57
+ var emptyPipelineModel = {
58
+ getColumnId: (data) => data.view.dxn.toString(),
59
+ getItemId: (data) => data.id,
60
+ isColumn: (obj) => Schema.is(Pipeline.Column)(obj),
61
+ isItem: (obj) => Obj.isObject(obj),
62
+ columns: emptyColumnsAtom,
63
+ items: () => emptyItemsAtom,
64
+ getColumns: () => [],
65
+ getItems: () => []
66
+ };
67
+ export {
68
+ usePipelineBoardModel
69
+ };
70
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/hooks/usePipelineBoardModel.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom, type Registry } from '@effect-atom/atom-react';\nimport * as Schema from 'effect/Schema';\nimport { useMemo } from 'react';\n\nimport { getQueryTarget } from '@dxos/app-toolkit/query';\nimport { Obj, Query } from '@dxos/echo';\nimport { AtomObj, AtomQuery } from '@dxos/echo-atom';\nimport { getSpace, isSpace } from '@dxos/react-client/echo';\nimport { type BoardModel } from '@dxos/react-ui-mosaic';\nimport { Pipeline } from '@dxos/types';\n\nexport const usePipelineBoardModel = (\n pipeline: Pipeline.Pipeline | undefined,\n registry: Registry.Registry,\n): BoardModel<Pipeline.Column, Obj.Unknown> =>\n useMemo<BoardModel<Pipeline.Column, Obj.Unknown>>(() => {\n if (pipeline == null) {\n return emptyPipelineModel;\n }\n\n const space = getSpace(pipeline);\n const columnsAtom = AtomObj.makeProperty(pipeline, 'columns');\n const columnAtomFamily = Atom.family<string, Atom.Atom<Pipeline.Column | undefined>>((viewKey: string) =>\n Atom.make((get) => {\n const columns = get(columnsAtom);\n return columns.find((c) => c.view.dxn.toString() === viewKey);\n }),\n );\n\n const itemsAtomFamily = Atom.family<string, Atom.Atom<Obj.Unknown[]>>((viewKey: string) =>\n Atom.make((get) => {\n const column = get(columnAtomFamily(viewKey));\n if (column == null) {\n return [];\n }\n const viewSnapshot = get(AtomObj.make(column.view));\n if (!viewSnapshot?.query?.ast) {\n return [];\n }\n const query = Query.fromAst(JSON.parse(JSON.stringify(viewSnapshot.query.ast)));\n const queryTarget = space ? getQueryTarget(query.ast, space) : undefined;\n if (!queryTarget) {\n return [];\n }\n const raw = get(AtomQuery.make(queryTarget, query));\n return isSpace(queryTarget) ? raw : [...raw].reverse();\n }),\n );\n\n return {\n getColumnId: (data) => (data as Pipeline.Column).view.dxn.toString(),\n getItemId: (data) => (data as Obj.Unknown).id,\n isColumn: (obj: unknown): obj is Pipeline.Column => Schema.is(Pipeline.Column)(obj),\n isItem: (obj: unknown): obj is Obj.Unknown => Obj.isObject(obj),\n columns: columnsAtom,\n items: (column) => itemsAtomFamily(column.view.dxn.toString()),\n getColumns: () => [...registry.get(columnsAtom)],\n getItems: (column) => registry.get(itemsAtomFamily(column.view.dxn.toString())) ?? [],\n };\n }, [pipeline, registry]);\n\nconst emptyColumnsAtom = Atom.make(() => [] as Pipeline.Column[]);\n\nconst emptyItemsAtom = Atom.make(() => [] as Obj.Unknown[]);\n\nconst emptyPipelineModel: BoardModel<Pipeline.Column, Obj.Unknown> = {\n getColumnId: (data) => (data as Pipeline.Column).view.dxn.toString(),\n getItemId: (data) => (data as Obj.Unknown).id,\n isColumn: (obj: unknown): obj is Pipeline.Column => Schema.is(Pipeline.Column)(obj),\n isItem: (obj): obj is Obj.Unknown => Obj.isObject(obj),\n columns: emptyColumnsAtom,\n items: () => emptyItemsAtom,\n getColumns: () => [],\n getItems: () => [],\n};\n"],
5
+ "mappings": ";AAIA,SAASA,YAA2B;AACpC,YAAYC,YAAY;AACxB,SAASC,eAAe;AAExB,SAASC,sBAAsB;AAC/B,SAASC,KAAKC,aAAa;AAC3B,SAASC,SAASC,iBAAiB;AACnC,SAASC,UAAUC,eAAe;AAElC,SAASC,gBAAgB;AAElB,IAAMC,wBAAwB,CACnCC,UACAC,aAEAX,QAAkD,MAAA;AAChD,MAAIU,YAAY,MAAM;AACpB,WAAOE;EACT;AAEA,QAAMC,QAAQP,SAASI,QAAAA;AACvB,QAAMI,cAAcV,QAAQW,aAAaL,UAAU,SAAA;AACnD,QAAMM,mBAAmBlB,KAAKmB,OAAuD,CAACC,YACpFpB,KAAKqB,KAAK,CAACC,QAAAA;AACT,UAAMC,UAAUD,IAAIN,WAAAA;AACpB,WAAOO,QAAQC,KAAK,CAACC,MAAMA,EAAEC,KAAKC,IAAIC,SAAQ,MAAOR,OAAAA;EACvD,CAAA,CAAA;AAGF,QAAMS,kBAAkB7B,KAAKmB,OAAyC,CAACC,YACrEpB,KAAKqB,KAAK,CAACC,QAAAA;AACT,UAAMQ,SAASR,IAAIJ,iBAAiBE,OAAAA,CAAAA;AACpC,QAAIU,UAAU,MAAM;AAClB,aAAO,CAAA;IACT;AACA,UAAMC,eAAeT,IAAIhB,QAAQe,KAAKS,OAAOJ,IAAI,CAAA;AACjD,QAAI,CAACK,cAAcC,OAAOC,KAAK;AAC7B,aAAO,CAAA;IACT;AACA,UAAMD,QAAQ3B,MAAM6B,QAAQC,KAAKC,MAAMD,KAAKE,UAAUN,aAAaC,MAAMC,GAAG,CAAA,CAAA;AAC5E,UAAMK,cAAcvB,QAAQZ,eAAe6B,MAAMC,KAAKlB,KAAAA,IAASwB;AAC/D,QAAI,CAACD,aAAa;AAChB,aAAO,CAAA;IACT;AACA,UAAME,MAAMlB,IAAIf,UAAUc,KAAKiB,aAAaN,KAAAA,CAAAA;AAC5C,WAAOvB,QAAQ6B,WAAAA,IAAeE,MAAM;SAAIA;MAAKC,QAAO;EACtD,CAAA,CAAA;AAGF,SAAO;IACLC,aAAa,CAACC,SAAUA,KAAyBjB,KAAKC,IAAIC,SAAQ;IAClEgB,WAAW,CAACD,SAAUA,KAAqBE;IAC3CC,UAAU,CAACC,QAAgDC,UAAGtC,SAASuC,MAAM,EAAEF,GAAAA;IAC/EG,QAAQ,CAACH,QAAqC3C,IAAI+C,SAASJ,GAAAA;IAC3DxB,SAASP;IACToC,OAAO,CAACtB,WAAWD,gBAAgBC,OAAOJ,KAAKC,IAAIC,SAAQ,CAAA;IAC3DyB,YAAY,MAAM;SAAIxC,SAASS,IAAIN,WAAAA;;IACnCsC,UAAU,CAACxB,WAAWjB,SAASS,IAAIO,gBAAgBC,OAAOJ,KAAKC,IAAIC,SAAQ,CAAA,CAAA,KAAQ,CAAA;EACrF;AACF,GAAG;EAAChB;EAAUC;CAAS;AAEzB,IAAM0C,mBAAmBvD,KAAKqB,KAAK,MAAM,CAAA,CAAE;AAE3C,IAAMmC,iBAAiBxD,KAAKqB,KAAK,MAAM,CAAA,CAAE;AAEzC,IAAMP,qBAA+D;EACnE4B,aAAa,CAACC,SAAUA,KAAyBjB,KAAKC,IAAIC,SAAQ;EAClEgB,WAAW,CAACD,SAAUA,KAAqBE;EAC3CC,UAAU,CAACC,QAAgDC,UAAGtC,SAASuC,MAAM,EAAEF,GAAAA;EAC/EG,QAAQ,CAACH,QAA4B3C,IAAI+C,SAASJ,GAAAA;EAClDxB,SAASgC;EACTH,OAAO,MAAMI;EACbH,YAAY,MAAM,CAAA;EAClBC,UAAU,MAAM,CAAA;AAClB;",
6
+ "names": ["Atom", "Schema", "useMemo", "getQueryTarget", "Obj", "Query", "AtomObj", "AtomQuery", "getSpace", "isSpace", "Pipeline", "usePipelineBoardModel", "pipeline", "registry", "emptyPipelineModel", "space", "columnsAtom", "makeProperty", "columnAtomFamily", "family", "viewKey", "make", "get", "columns", "find", "c", "view", "dxn", "toString", "itemsAtomFamily", "column", "viewSnapshot", "query", "ast", "fromAst", "JSON", "parse", "stringify", "queryTarget", "undefined", "raw", "reverse", "getColumnId", "data", "getItemId", "id", "isColumn", "obj", "is", "Column", "isItem", "isObject", "items", "getColumns", "getItems", "emptyColumnsAtom", "emptyItemsAtom"]
7
+ }
@@ -0,0 +1,7 @@
1
+ import {
2
+ meta
3
+ } from "./chunk-ULB5DKWO.mjs";
4
+ export {
5
+ meta
6
+ };
7
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"inputs":{"src/meta.ts":{"bytes":1832,"imports":[{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/index.ts":{"bytes":368,"imports":[{"path":"src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"src/PipelinePlugin.tsx":{"bytes":2992,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true},{"path":"#capabilities","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true}],"format":"esm"},"src/PipelinePlugin.node.ts":{"bytes":2333,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true},{"path":"#capabilities","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true}],"format":"esm"},"src/PipelinePlugin.workerd.ts":{"bytes":1605,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true}],"format":"esm"},"src/capabilities/app-graph-builder.ts":{"bytes":4665,"imports":[{"path":"effect/Effect","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/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true}],"format":"esm"},"src/capabilities/create-object.ts":{"bytes":3371,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/compute","kind":"import-statement","external":true},{"path":"@dxos/plugin-space","kind":"import-statement","external":true},{"path":"@dxos/plugin-space","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true}],"format":"esm"},"src/capabilities/react-surface.tsx":{"bytes":7143,"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/app-toolkit/ui","kind":"import-statement","external":true},{"path":"@dxos/devtools","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true},{"path":"#containers","kind":"import-statement","external":true}],"format":"esm"},"src/capabilities/index.ts":{"bytes":1492,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/capabilities/app-graph-builder.ts","kind":"dynamic-import","original":"./app-graph-builder"},{"path":"src/capabilities/create-object.ts","kind":"dynamic-import","original":"./create-object"},{"path":"src/capabilities/react-surface.tsx","kind":"dynamic-import","original":"./react-surface"}],"format":"esm"},"src/components/PipelineComponent/PipelineComponent.tsx":{"bytes":12700,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true},{"path":"src/components/PipelineComponent/PipelineColumn.tsx","kind":"import-statement","original":"./PipelineColumn"}],"format":"esm"},"src/components/PipelineComponent/PipelineColumn.tsx":{"bytes":19927,"imports":[{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"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-toolkit/query","kind":"import-statement","external":true},{"path":"@dxos/echo","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","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true},{"path":"src/components/PipelineComponent/PipelineComponent.tsx","kind":"import-statement","original":"./PipelineComponent"}],"format":"esm"},"src/components/PipelineComponent/index.ts":{"bytes":503,"imports":[{"path":"src/components/PipelineComponent/PipelineColumn.tsx","kind":"import-statement","original":"./PipelineColumn"},{"path":"src/components/PipelineComponent/PipelineComponent.tsx","kind":"import-statement","original":"./PipelineComponent"}],"format":"esm"},"src/components/index.ts":{"bytes":401,"imports":[{"path":"src/components/PipelineComponent/index.ts","kind":"import-statement","original":"./PipelineComponent"}],"format":"esm"},"src/containers/PipelineArticle/PipelineArticle.tsx":{"bytes":9244,"imports":[{"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/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit/ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"#components","kind":"import-statement","external":true},{"path":"#hooks","kind":"import-statement","external":true}],"format":"esm"},"src/containers/PipelineArticle/index.ts":{"bytes":524,"imports":[{"path":"src/containers/PipelineArticle/PipelineArticle.tsx","kind":"import-statement","original":"./PipelineArticle"}],"format":"esm"},"src/containers/PipelineProperties/PipelineProperties.tsx":{"bytes":29016,"imports":[{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit/query","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/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-list","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true}],"format":"esm"},"src/containers/PipelineProperties/index.ts":{"bytes":542,"imports":[{"path":"src/containers/PipelineProperties/PipelineProperties.tsx","kind":"import-statement","original":"./PipelineProperties"}],"format":"esm"},"src/containers/index.ts":{"bytes":1028,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/containers/PipelineArticle/index.ts","kind":"dynamic-import","original":"./PipelineArticle"},{"path":"src/containers/PipelineProperties/index.ts","kind":"dynamic-import","original":"./PipelineProperties"}],"format":"esm"},"src/hooks/usePipelineBoardModel.ts":{"bytes":10694,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit/query","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-atom","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true}],"format":"esm"},"src/hooks/index.ts":{"bytes":409,"imports":[{"path":"src/hooks/usePipelineBoardModel.ts","kind":"import-statement","original":"./usePipelineBoardModel"}],"format":"esm"},"src/plugin.ts":{"bytes":865,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"#plugin","kind":"dynamic-import","external":true}],"format":"esm"},"src/translations.ts":{"bytes":4002,"imports":[{"path":"@dxos/types","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true}],"format":"esm"},"src/types/index.ts":{"bytes":288,"imports":[],"format":"esm"}},"outputs":{"dist/lib/neutral/PipelineProperties-GED4FJSS.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":15518},"dist/lib/neutral/PipelineProperties-GED4FJSS.mjs":{"imports":[{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit/query","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/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-list","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/containers/PipelineProperties/index.ts","inputs":{"src/containers/PipelineProperties/PipelineProperties.tsx":{"bytesInOutput":7261},"src/containers/PipelineProperties/index.ts":{"bytesInOutput":0}},"bytes":7422},"dist/lib/neutral/meta.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/neutral/meta.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-ULB5DKWO.mjs","kind":"import-statement"}],"exports":["meta"],"entryPoint":"src/meta.ts","inputs":{},"bytes":100},"dist/lib/neutral/plugin.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":445},"dist/lib/neutral/plugin.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-ULB5DKWO.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"#plugin","kind":"dynamic-import","external":true}],"exports":["PipelinePlugin"],"entryPoint":"src/plugin.ts","inputs":{"src/plugin.ts":{"bytesInOutput":111}},"bytes":241},"dist/lib/neutral/translations.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1877},"dist/lib/neutral/translations.mjs":{"imports":[{"path":"@dxos/types","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true}],"exports":["translations"],"entryPoint":"src/translations.ts","inputs":{"src/translations.ts":{"bytesInOutput":1117}},"bytes":1209},"dist/lib/neutral/types/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/neutral/types/index.mjs":{"imports":[],"exports":[],"entryPoint":"src/types/index.ts","inputs":{"src/types/index.ts":{"bytesInOutput":0}},"bytes":35},"dist/lib/neutral/app-graph-builder-ZLGRWRJU.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2197},"dist/lib/neutral/app-graph-builder-ZLGRWRJU.mjs":{"imports":[{"path":"effect/Effect","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/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/app-graph-builder.ts","inputs":{"src/capabilities/app-graph-builder.ts":{"bytesInOutput":1187}},"bytes":1335},"dist/lib/neutral/create-object-ZJYFACOI.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1758},"dist/lib/neutral/create-object-ZJYFACOI.mjs":{"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/compute","kind":"import-statement","external":true},{"path":"@dxos/plugin-space","kind":"import-statement","external":true},{"path":"@dxos/plugin-space","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/create-object.ts","inputs":{"src/capabilities/create-object.ts":{"bytesInOutput":786}},"bytes":922},"dist/lib/neutral/react-surface-4W5YLCHT.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3539},"dist/lib/neutral/react-surface-4W5YLCHT.mjs":{"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/app-toolkit/ui","kind":"import-statement","external":true},{"path":"@dxos/devtools","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true},{"path":"#containers","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/react-surface.tsx","inputs":{"src/capabilities/react-surface.tsx":{"bytesInOutput":1762}},"bytes":1899},"dist/lib/neutral/PipelineArticle-6JIVXMYF.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4864},"dist/lib/neutral/PipelineArticle-6JIVXMYF.mjs":{"imports":[{"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/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit/ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"#components","kind":"import-statement","external":true},{"path":"#hooks","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/containers/PipelineArticle/index.ts","inputs":{"src/containers/PipelineArticle/PipelineArticle.tsx":{"bytesInOutput":2430},"src/containers/PipelineArticle/index.ts":{"bytesInOutput":0}},"bytes":2579},"dist/lib/neutral/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/neutral/index.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-ULB5DKWO.mjs","kind":"import-statement"}],"exports":["meta"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0}},"bytes":101},"dist/lib/neutral/chunk-ULB5DKWO.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":907},"dist/lib/neutral/chunk-ULB5DKWO.mjs":{"imports":[{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["meta"],"inputs":{"src/meta.ts":{"bytesInOutput":463}},"bytes":542},"dist/lib/neutral/PipelinePlugin.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1582},"dist/lib/neutral/PipelinePlugin.mjs":{"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true},{"path":"#capabilities","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true}],"exports":["PipelinePlugin","default"],"entryPoint":"src/PipelinePlugin.tsx","inputs":{"src/PipelinePlugin.tsx":{"bytesInOutput":697}},"bytes":833},"dist/lib/neutral/PipelinePlugin.node.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1229},"dist/lib/neutral/PipelinePlugin.node.mjs":{"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true},{"path":"#capabilities","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true}],"exports":["PipelinePlugin","default"],"entryPoint":"src/PipelinePlugin.node.ts","inputs":{"src/PipelinePlugin.node.ts":{"bytesInOutput":531}},"bytes":681},"dist/lib/neutral/PipelinePlugin.workerd.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":836},"dist/lib/neutral/PipelinePlugin.workerd.mjs":{"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true}],"exports":["PipelinePlugin","default"],"entryPoint":"src/PipelinePlugin.workerd.ts","inputs":{"src/PipelinePlugin.workerd.ts":{"bytesInOutput":346}},"bytes":505},"dist/lib/neutral/capabilities/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":783},"dist/lib/neutral/capabilities/index.mjs":{"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"dist/lib/neutral/app-graph-builder-ZLGRWRJU.mjs","kind":"dynamic-import"},{"path":"dist/lib/neutral/create-object-ZJYFACOI.mjs","kind":"dynamic-import"},{"path":"dist/lib/neutral/react-surface-4W5YLCHT.mjs","kind":"dynamic-import"}],"exports":["AppGraphBuilder","CreateObject","ReactSurface"],"entryPoint":"src/capabilities/index.ts","inputs":{"src/capabilities/index.ts":{"bytesInOutput":357}},"bytes":483},"dist/lib/neutral/components/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":17914},"dist/lib/neutral/components/index.mjs":{"imports":[{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"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-toolkit/query","kind":"import-statement","external":true},{"path":"@dxos/echo","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","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true}],"exports":["PipelineColumn","PipelineComponent","PipelineToolbar","usePipeline"],"entryPoint":"src/components/index.ts","inputs":{"src/components/PipelineComponent/PipelineColumn.tsx":{"bytesInOutput":4793},"src/components/PipelineComponent/PipelineComponent.tsx":{"bytesInOutput":2800},"src/components/PipelineComponent/index.ts":{"bytesInOutput":0},"src/components/index.ts":{"bytesInOutput":0}},"bytes":7882},"dist/lib/neutral/containers/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":572},"dist/lib/neutral/containers/index.mjs":{"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"dist/lib/neutral/PipelineArticle-6JIVXMYF.mjs","kind":"dynamic-import"},{"path":"dist/lib/neutral/PipelineProperties-GED4FJSS.mjs","kind":"dynamic-import"}],"exports":["PipelineArticle","PipelineProperties"],"entryPoint":"src/containers/index.ts","inputs":{"src/containers/index.ts":{"bytesInOutput":190}},"bytes":304},"dist/lib/neutral/hooks/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":5824},"dist/lib/neutral/hooks/index.mjs":{"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit/query","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-atom","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true}],"exports":["usePipelineBoardModel"],"entryPoint":"src/hooks/index.ts","inputs":{"src/hooks/usePipelineBoardModel.ts":{"bytesInOutput":2300},"src/hooks/index.ts":{"bytesInOutput":0}},"bytes":2409}}}
@@ -0,0 +1,7 @@
1
+ import {
2
+ meta
3
+ } from "./chunk-ULB5DKWO.mjs";
4
+ export {
5
+ meta
6
+ };
7
+ //# sourceMappingURL=meta.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,11 @@
1
+ import {
2
+ meta
3
+ } from "./chunk-ULB5DKWO.mjs";
4
+
5
+ // src/plugin.ts
6
+ import { Plugin } from "@dxos/app-framework";
7
+ var PipelinePlugin = Plugin.lazy(meta, () => import("#plugin"));
8
+ export {
9
+ PipelinePlugin
10
+ };
11
+ //# sourceMappingURL=plugin.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/plugin.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\n\nimport { meta } from './meta';\n\nexport const PipelinePlugin = Plugin.lazy(meta, () => import('#plugin'));\n"],
5
+ "mappings": ";;;;;AAIA,SAASA,cAAc;AAIhB,IAAMC,iBAAiBC,OAAOC,KAAKC,MAAM,MAAM,OAAO,SAAA,CAAA;",
6
+ "names": ["Plugin", "PipelinePlugin", "Plugin", "lazy", "meta"]
7
+ }
@@ -0,0 +1,49 @@
1
+ // src/capabilities/react-surface.tsx
2
+ import * as Effect from "effect/Effect";
3
+ import React from "react";
4
+ import { Capabilities, Capability } from "@dxos/app-framework";
5
+ import { Surface } from "@dxos/app-framework/ui";
6
+ import { AppSurface } from "@dxos/app-toolkit/ui";
7
+ import { InvocationTraceContainer } from "@dxos/devtools";
8
+ import { Obj } from "@dxos/echo";
9
+ import { Panel } from "@dxos/react-ui";
10
+ import { Pipeline } from "@dxos/types";
11
+ import { PipelineArticle, PipelineProperties } from "#containers";
12
+ var react_surface_default = Capability.makeModule(() => Effect.succeed(Capability.contributes(Capabilities.ReactSurface, [
13
+ Surface.create({
14
+ id: "root",
15
+ filter: AppSurface.object(AppSurface.Article, Pipeline.Pipeline),
16
+ component: ({ data, role }) => /* @__PURE__ */ React.createElement(PipelineArticle, {
17
+ role,
18
+ subject: data.subject,
19
+ attendableId: data.attendableId
20
+ })
21
+ }),
22
+ Surface.create({
23
+ id: "companion.invocations",
24
+ filter: AppSurface.allOf(AppSurface.literal(AppSurface.Article, "invocations"), AppSurface.companion(AppSurface.Article, Pipeline.Pipeline)),
25
+ component: ({ data, role }) => {
26
+ const db = Obj.getDatabase(data.companionTo);
27
+ return /* @__PURE__ */ React.createElement(Panel.Root, {
28
+ role,
29
+ className: "dx-document"
30
+ }, /* @__PURE__ */ React.createElement(Panel.Content, {
31
+ asChild: true
32
+ }, /* @__PURE__ */ React.createElement(InvocationTraceContainer, {
33
+ db,
34
+ detailAxis: "block"
35
+ })));
36
+ }
37
+ }),
38
+ Surface.create({
39
+ id: "object-properties",
40
+ filter: AppSurface.object(AppSurface.ObjectProperties, Pipeline.Pipeline),
41
+ component: ({ data }) => /* @__PURE__ */ React.createElement(PipelineProperties, {
42
+ pipeline: data.subject
43
+ })
44
+ })
45
+ ])));
46
+ export {
47
+ react_surface_default as default
48
+ };
49
+ //# sourceMappingURL=react-surface-4W5YLCHT.mjs.map