@dxos/plugin-pipeline 0.8.4-main.52d7546f51 → 0.8.4-main.c351d160a8

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 (96) hide show
  1. package/dist/lib/browser/PipelineContainer-V5KGYEQR.mjs +318 -0
  2. package/dist/lib/browser/PipelineContainer-V5KGYEQR.mjs.map +7 -0
  3. package/dist/lib/browser/{PipelineSettings-YSGSJHBT.mjs → PipelineObjectSettings-QFMIKJH5.mjs} +71 -63
  4. package/dist/lib/browser/PipelineObjectSettings-QFMIKJH5.mjs.map +7 -0
  5. package/dist/lib/browser/app-graph-builder-QQKBLYFD.mjs +56 -0
  6. package/dist/lib/browser/app-graph-builder-QQKBLYFD.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-QWNKLHBY.mjs → chunk-3A235GUD.mjs} +2 -9
  8. package/dist/lib/browser/{chunk-QWNKLHBY.mjs.map → chunk-3A235GUD.mjs.map} +2 -2
  9. package/dist/lib/browser/index.mjs +16 -38
  10. package/dist/lib/browser/index.mjs.map +3 -3
  11. package/dist/lib/browser/meta.json +1 -1
  12. package/dist/lib/browser/{react-surface-JMMCTIL3.mjs → react-surface-7PY3UOEA.mjs} +17 -13
  13. package/dist/lib/browser/react-surface-7PY3UOEA.mjs.map +7 -0
  14. package/dist/lib/browser/types/index.mjs +0 -9
  15. package/dist/types/src/PipelinePlugin.d.ts.map +1 -1
  16. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +1 -1
  17. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -1
  18. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +1 -1
  19. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -1
  20. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +1 -1
  21. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -1
  22. package/dist/types/src/components/PipelineComponent/PipelineColumn.d.ts +9 -0
  23. package/dist/types/src/components/PipelineComponent/PipelineColumn.d.ts.map +1 -0
  24. package/dist/types/src/components/PipelineComponent/PipelineComponent.d.ts +47 -0
  25. package/dist/types/src/components/PipelineComponent/PipelineComponent.d.ts.map +1 -0
  26. package/dist/types/src/components/{PipelineComponent.stories.d.ts → PipelineComponent/PipelineComponent.stories.d.ts} +1 -0
  27. package/dist/types/src/components/PipelineComponent/PipelineComponent.stories.d.ts.map +1 -0
  28. package/dist/types/src/components/PipelineComponent/index.d.ts +3 -0
  29. package/dist/types/src/components/PipelineComponent/index.d.ts.map +1 -0
  30. package/dist/types/src/components/index.d.ts +1 -4
  31. package/dist/types/src/components/index.d.ts.map +1 -1
  32. package/dist/types/src/{components → containers/PipelineContainer}/PipelineContainer.d.ts +3 -4
  33. package/dist/types/src/containers/PipelineContainer/PipelineContainer.d.ts.map +1 -0
  34. package/dist/types/src/{components → containers/PipelineContainer}/PipelineContainer.stories.d.ts +1 -0
  35. package/dist/types/src/containers/PipelineContainer/PipelineContainer.stories.d.ts.map +1 -0
  36. package/dist/types/src/containers/PipelineContainer/index.d.ts +3 -0
  37. package/dist/types/src/containers/PipelineContainer/index.d.ts.map +1 -0
  38. package/dist/types/src/{components/PipelineSettings.d.ts → containers/PipelineObjectSettings/PipelineObjectSettings.d.ts} +1 -2
  39. package/dist/types/src/containers/PipelineObjectSettings/PipelineObjectSettings.d.ts.map +1 -0
  40. package/dist/types/src/containers/PipelineObjectSettings/index.d.ts +3 -0
  41. package/dist/types/src/containers/PipelineObjectSettings/index.d.ts.map +1 -0
  42. package/dist/types/src/containers/index.d.ts +4 -0
  43. package/dist/types/src/containers/index.d.ts.map +1 -0
  44. package/dist/types/src/hooks/index.d.ts +2 -0
  45. package/dist/types/src/hooks/index.d.ts.map +1 -0
  46. package/dist/types/src/hooks/usePipelineBoardModel.d.ts +6 -0
  47. package/dist/types/src/hooks/usePipelineBoardModel.d.ts.map +1 -0
  48. package/dist/types/src/templates/research.d.ts.map +1 -1
  49. package/dist/types/src/translations.d.ts +1 -0
  50. package/dist/types/src/translations.d.ts.map +1 -1
  51. package/dist/types/src/types/index.d.ts +0 -2
  52. package/dist/types/src/types/index.d.ts.map +1 -1
  53. package/dist/types/tsconfig.tsbuildinfo +1 -1
  54. package/package.json +42 -39
  55. package/src/PipelinePlugin.tsx +5 -16
  56. package/src/capabilities/app-graph-builder/app-graph-builder.ts +7 -9
  57. package/src/capabilities/operation-resolver/operation-resolver.ts +1 -21
  58. package/src/capabilities/react-surface/react-surface.tsx +14 -9
  59. package/src/components/{PipelineColumn.tsx → PipelineComponent/PipelineColumn.tsx} +32 -37
  60. package/src/components/{PipelineComponent.stories.tsx → PipelineComponent/PipelineComponent.stories.tsx} +31 -16
  61. package/src/components/PipelineComponent/PipelineComponent.tsx +131 -0
  62. package/src/components/PipelineComponent/index.ts +6 -0
  63. package/src/components/index.ts +1 -7
  64. package/src/{components → containers/PipelineContainer}/PipelineContainer.stories.tsx +92 -89
  65. package/src/containers/PipelineContainer/PipelineContainer.tsx +86 -0
  66. package/src/containers/PipelineContainer/index.ts +7 -0
  67. package/src/{components/PipelineSettings.tsx → containers/PipelineObjectSettings/PipelineObjectSettings.tsx} +71 -58
  68. package/src/containers/PipelineObjectSettings/index.ts +7 -0
  69. package/src/containers/index.ts +8 -0
  70. package/src/hooks/index.ts +5 -0
  71. package/src/hooks/usePipelineBoardModel.ts +79 -0
  72. package/src/meta.ts +1 -1
  73. package/src/templates/research.ts +14 -15
  74. package/src/translations.ts +1 -0
  75. package/src/types/index.ts +0 -3
  76. package/dist/lib/browser/PipelineContainer-I3TPA7ZN.mjs +0 -217
  77. package/dist/lib/browser/PipelineContainer-I3TPA7ZN.mjs.map +0 -7
  78. package/dist/lib/browser/PipelineSettings-YSGSJHBT.mjs.map +0 -7
  79. package/dist/lib/browser/app-graph-builder-NUJB33F7.mjs +0 -65
  80. package/dist/lib/browser/app-graph-builder-NUJB33F7.mjs.map +0 -7
  81. package/dist/lib/browser/chunk-7GVESVYR.mjs +0 -42
  82. package/dist/lib/browser/chunk-7GVESVYR.mjs.map +0 -7
  83. package/dist/lib/browser/react-surface-JMMCTIL3.mjs.map +0 -7
  84. package/dist/types/src/components/PipelineColumn.d.ts +0 -10
  85. package/dist/types/src/components/PipelineColumn.d.ts.map +0 -1
  86. package/dist/types/src/components/PipelineComponent.d.ts +0 -38
  87. package/dist/types/src/components/PipelineComponent.d.ts.map +0 -1
  88. package/dist/types/src/components/PipelineComponent.stories.d.ts.map +0 -1
  89. package/dist/types/src/components/PipelineContainer.d.ts.map +0 -1
  90. package/dist/types/src/components/PipelineContainer.stories.d.ts.map +0 -1
  91. package/dist/types/src/components/PipelineSettings.d.ts.map +0 -1
  92. package/dist/types/src/types/PipelineAction.d.ts +0 -25
  93. package/dist/types/src/types/PipelineAction.d.ts.map +0 -1
  94. package/src/components/PipelineComponent.tsx +0 -103
  95. package/src/components/PipelineContainer.tsx +0 -57
  96. package/src/types/PipelineAction.ts +0 -29
@@ -0,0 +1,318 @@
1
+ import {
2
+ meta
3
+ } from "./chunk-3A235GUD.mjs";
4
+
5
+ // src/containers/PipelineContainer/PipelineContainer.tsx
6
+ import React3, { useCallback, useEffect } from "react";
7
+ import { Capabilities } from "@dxos/app-framework";
8
+ import { useCapability } from "@dxos/app-framework/ui";
9
+ import { useOperationInvoker } from "@dxos/app-framework/ui";
10
+ import { Surface } from "@dxos/app-framework/ui";
11
+ import { OBJECT_ACTIONS_CONTRIBUTION_ID, OBJECT_ACTIONS_CONTRIBUTION_PRIORITY, useObjectMenuItems } from "@dxos/app-toolkit/ui";
12
+ import { COMPANION_PREFIX } from "@dxos/app-toolkit";
13
+ import { DeckOperation } from "@dxos/plugin-deck/types";
14
+ import { Panel } from "@dxos/react-ui";
15
+ import { useAttention } from "@dxos/react-ui-attention";
16
+ import { useMenu } from "@dxos/react-ui-menu";
17
+
18
+ // src/components/PipelineComponent/PipelineColumn.tsx
19
+ import { useComposedRefs } from "@radix-ui/react-compose-refs";
20
+ import * as Function from "effect/Function";
21
+ import * as Option from "effect/Option";
22
+ import React2, { forwardRef, useMemo, useRef, useState } from "react";
23
+ import { Annotation, JsonSchema, Obj as Obj2, Query, Type } from "@dxos/echo";
24
+ import { resolveSchemaWithRegistry } from "@dxos/plugin-space";
25
+ import { Filter, getSpace, useObject } from "@dxos/react-client/echo";
26
+ import { useAsyncEffect, useTranslation as useTranslation2 } from "@dxos/react-ui";
27
+ import { Card } from "@dxos/react-ui";
28
+ import { Board as Board2, Focus, Mosaic } from "@dxos/react-ui-mosaic";
29
+ import { ProjectionModel, createEchoChangeCallback } from "@dxos/schema";
30
+
31
+ // src/components/PipelineComponent/PipelineComponent.tsx
32
+ import { useAtomValue } from "@effect-atom/atom-react";
33
+ import { createContext } from "@radix-ui/react-context";
34
+ import React from "react";
35
+ import { Obj } from "@dxos/echo";
36
+ import { Toolbar, useTranslation } from "@dxos/react-ui";
37
+ import { Board, useBoard, useEventHandlerAdapter } from "@dxos/react-ui-mosaic";
38
+ var itemNoOp = ({ item }) => /* @__PURE__ */ React.createElement("span", null, item.id);
39
+ var PIPELINE_ROOT = "Pipeline.Root";
40
+ var [PipelineRootContext, usePipeline] = createContext(PIPELINE_ROOT, {
41
+ Item: itemNoOp
42
+ });
43
+ var PipelineRoot = ({ children, ...contextValue }) => /* @__PURE__ */ React.createElement(PipelineRootContext, contextValue, children);
44
+ PipelineRoot.displayName = PIPELINE_ROOT;
45
+ var PIPELINE_CONTENT_NAME = "Pipeline.Content";
46
+ var PipelineContent = ({ model, children, ...props }) => /* @__PURE__ */ React.createElement(Board.Root, {
47
+ ...props,
48
+ model
49
+ }, children);
50
+ PipelineContent.displayName = PIPELINE_CONTENT_NAME;
51
+ var PIPELINE_COLUMNS_NAME = "Pipeline.Columns";
52
+ var PipelineColumns = ({ pipeline }) => {
53
+ const { model } = useBoard(PIPELINE_COLUMNS_NAME);
54
+ const columns = useAtomValue(model.columns);
55
+ const eventHandler = useEventHandlerAdapter({
56
+ id: pipeline.id,
57
+ // TODO(wittjosiah): Cast because columns array is readonly.
58
+ items: columns,
59
+ getId: model.getColumnId,
60
+ get: (data) => data,
61
+ make: (object) => object,
62
+ canDrop: ({ source }) => model.isColumn(source.data),
63
+ onChange: (mutate) => Obj.change(pipeline, (p) => mutate(p.columns))
64
+ });
65
+ return /* @__PURE__ */ React.createElement(Board.Content, {
66
+ id: "pipeline",
67
+ eventHandler,
68
+ Tile: PipelineColumn
69
+ });
70
+ };
71
+ PipelineColumns.displayName = PIPELINE_COLUMNS_NAME;
72
+ var PIPELINE_TOOLBAR_NAME = "Pipeline.Toolbar";
73
+ var PipelineToolbar = (props) => {
74
+ const { t } = useTranslation(meta.id);
75
+ const { onAddColumn } = usePipeline(PIPELINE_TOOLBAR_NAME);
76
+ return /* @__PURE__ */ React.createElement(Toolbar.Root, props, /* @__PURE__ */ React.createElement(Toolbar.IconButton, {
77
+ icon: "ph--plus--regular",
78
+ iconOnly: true,
79
+ label: t("add column label"),
80
+ onClick: onAddColumn
81
+ }));
82
+ };
83
+ PipelineToolbar.displayName = PIPELINE_TOOLBAR_NAME;
84
+ var PipelineComponent = {
85
+ Root: PipelineRoot,
86
+ Content: PipelineContent,
87
+ Columns: PipelineColumns,
88
+ Toolbar: PipelineToolbar
89
+ };
90
+
91
+ // src/components/PipelineComponent/PipelineColumn.tsx
92
+ var PIPELINE_COLUMN_NAME = "PipelineColumn";
93
+ var PipelineColumn = ({ data: column, location, classNames, debug }) => {
94
+ const { t } = useTranslation2(meta.id);
95
+ const dragHandleRef = useRef(null);
96
+ const [viewSnapshot] = useObject(column.view);
97
+ const view = column.view.target;
98
+ const space = getSpace(view);
99
+ const { Item } = usePipeline(PIPELINE_COLUMN_NAME);
100
+ const [schema, setSchema] = useState();
101
+ const query = useMemo(() => {
102
+ if (!view) {
103
+ return Query.select(Filter.nothing());
104
+ } else {
105
+ return Query.fromAst(JSON.parse(JSON.stringify(viewSnapshot?.query.ast)));
106
+ }
107
+ }, [
108
+ JSON.stringify(viewSnapshot?.query.ast)
109
+ ]);
110
+ useAsyncEffect(async () => {
111
+ if (!query || !space?.db) {
112
+ return;
113
+ }
114
+ const schema2 = await resolveSchemaWithRegistry(space.db.schemaRegistry, query.ast);
115
+ setSchema(() => schema2);
116
+ }, [
117
+ space,
118
+ query
119
+ ]);
120
+ const projectionModel = useMemo(() => {
121
+ if (!schema || !view) {
122
+ return void 0;
123
+ }
124
+ const jsonSchema = Type.isMutable(schema) ? schema.jsonSchema : JsonSchema.toJsonSchema(schema);
125
+ const change = createEchoChangeCallback(view, Type.isMutable(schema) ? schema : void 0);
126
+ return new ProjectionModel({
127
+ view,
128
+ baseSchema: jsonSchema,
129
+ change
130
+ });
131
+ }, [
132
+ schema,
133
+ view
134
+ ]);
135
+ const Tile = useMemo(() => {
136
+ return /* @__PURE__ */ forwardRef((props, ref) => /* @__PURE__ */ React2.createElement(ItemTile, {
137
+ ...props,
138
+ ref,
139
+ itemProps: {
140
+ item: props.data,
141
+ projectionModel
142
+ }
143
+ }));
144
+ }, [
145
+ Item,
146
+ projectionModel
147
+ ]);
148
+ if (!view) {
149
+ return null;
150
+ }
151
+ return /* @__PURE__ */ React2.createElement(Board2.Column.Root, {
152
+ data: column,
153
+ location,
154
+ classNames: [
155
+ "group/column grid h-full overflow-hidden grid-rows-[var(--dx-rail-action)_1fr]",
156
+ classNames
157
+ ],
158
+ debug,
159
+ dragHandleRef
160
+ }, /* @__PURE__ */ React2.createElement(Board2.Column.Header, {
161
+ label: column.name || t("untitled view title"),
162
+ dragHandleRef
163
+ }), /* @__PURE__ */ React2.createElement(Board2.Column.Body, {
164
+ data: column,
165
+ Tile
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(Mosaic.Tile, {
176
+ asChild: true,
177
+ id: data.id,
178
+ data,
179
+ location,
180
+ debug
181
+ }, /* @__PURE__ */ React2.createElement(Focus.Group, {
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.Menu, null)), /* @__PURE__ */ React2.createElement(Card.Content, null, /* @__PURE__ */ React2.createElement(Item, itemProps)))));
189
+ });
190
+ ItemTile.displayName = ITEM_TILE_NAME;
191
+
192
+ // src/hooks/usePipelineBoardModel.ts
193
+ import { Atom } from "@effect-atom/atom-react";
194
+ import * as Schema from "effect/Schema";
195
+ import { useMemo as useMemo2 } from "react";
196
+ import { Obj as Obj3, Query as Query2 } from "@dxos/echo";
197
+ import { AtomObj, AtomQuery } from "@dxos/echo-atom";
198
+ import { getQueryTarget } from "@dxos/plugin-space";
199
+ import { getSpace as getSpace2, isSpace } from "@dxos/react-client/echo";
200
+ import { Pipeline } from "@dxos/types";
201
+ var usePipelineBoardModel = (pipeline, registry) => useMemo2(() => {
202
+ if (pipeline == null) {
203
+ return emptyPipelineModel;
204
+ }
205
+ const space = getSpace2(pipeline);
206
+ const columnsAtom = AtomObj.makeProperty(pipeline, "columns");
207
+ const columnAtomFamily = Atom.family((viewKey) => Atom.make((get) => {
208
+ const columns = get(columnsAtom);
209
+ return columns.find((c) => c.view.dxn.toString() === viewKey);
210
+ }));
211
+ const itemsAtomFamily = Atom.family((viewKey) => Atom.make((get) => {
212
+ const column = get(columnAtomFamily(viewKey));
213
+ if (column == null) {
214
+ return [];
215
+ }
216
+ const viewSnapshot = get(AtomObj.make(column.view));
217
+ if (!viewSnapshot?.query?.ast) {
218
+ return [];
219
+ }
220
+ const query = Query2.fromAst(JSON.parse(JSON.stringify(viewSnapshot.query.ast)));
221
+ const queryTarget = space ? getQueryTarget(query.ast, space) : void 0;
222
+ if (!queryTarget) {
223
+ return [];
224
+ }
225
+ const raw = get(AtomQuery.make(queryTarget, query));
226
+ return isSpace(queryTarget) ? raw : [
227
+ ...raw
228
+ ].reverse();
229
+ }));
230
+ return {
231
+ getColumnId: (data) => data.view.dxn.toString(),
232
+ getItemId: (data) => data.id,
233
+ isColumn: (obj) => Schema.is(Pipeline.Column)(obj),
234
+ isItem: (obj) => Obj3.isObject(obj),
235
+ columns: columnsAtom,
236
+ items: (column) => itemsAtomFamily(column.view.dxn.toString()),
237
+ getColumns: () => [
238
+ ...registry.get(columnsAtom)
239
+ ],
240
+ getItems: (column) => registry.get(itemsAtomFamily(column.view.dxn.toString())) ?? []
241
+ };
242
+ }, [
243
+ pipeline,
244
+ registry
245
+ ]);
246
+ var emptyColumnsAtom = Atom.make(() => []);
247
+ var emptyItemsAtom = Atom.make(() => []);
248
+ var emptyPipelineModel = {
249
+ getColumnId: (data) => data.view.dxn.toString(),
250
+ getItemId: (data) => data.id,
251
+ isColumn: (obj) => Schema.is(Pipeline.Column)(obj),
252
+ isItem: (obj) => Obj3.isObject(obj),
253
+ columns: emptyColumnsAtom,
254
+ items: () => emptyItemsAtom,
255
+ getColumns: () => [],
256
+ getItems: () => []
257
+ };
258
+
259
+ // src/containers/PipelineContainer/PipelineContainer.tsx
260
+ var PIPELINE_ITEM = "PipelineItem";
261
+ var PipelineContainer = ({ role, subject: pipeline, attendableId }) => {
262
+ const registry = useCapability(Capabilities.AtomRegistry);
263
+ const model = usePipelineBoardModel(pipeline, registry);
264
+ const { invokePromise } = useOperationInvoker();
265
+ const { hasAttention } = useAttention(attendableId);
266
+ const handleColumnAdd = useCallback(() => invokePromise(DeckOperation.ChangeCompanion, {
267
+ companion: `${COMPANION_PREFIX}settings`
268
+ }), [
269
+ invokePromise
270
+ ]);
271
+ return /* @__PURE__ */ React3.createElement(PipelineComponent.Root, {
272
+ Item: PipelineItem,
273
+ onAddColumn: handleColumnAdd
274
+ }, /* @__PURE__ */ React3.createElement(Panel.Root, {
275
+ role
276
+ }, /* @__PURE__ */ React3.createElement(Panel.Toolbar, {
277
+ asChild: true
278
+ }, /* @__PURE__ */ React3.createElement(PipelineComponent.Toolbar, {
279
+ disabled: !hasAttention
280
+ })), /* @__PURE__ */ React3.createElement(Panel.Content, {
281
+ asChild: true
282
+ }, /* @__PURE__ */ React3.createElement(PipelineComponent.Content, {
283
+ model
284
+ }, /* @__PURE__ */ React3.createElement(PipelineComponent.Columns, {
285
+ pipeline
286
+ })))));
287
+ };
288
+ var PipelineItem = ({ item, projectionModel }) => {
289
+ const menu = useMenu(PIPELINE_ITEM);
290
+ const items = useObjectMenuItems(item);
291
+ useEffect(() => {
292
+ menu.addMenuItems({
293
+ id: OBJECT_ACTIONS_CONTRIBUTION_ID,
294
+ mode: "additive",
295
+ priority: OBJECT_ACTIONS_CONTRIBUTION_PRIORITY,
296
+ items
297
+ });
298
+ return () => menu.removeMenuItems(OBJECT_ACTIONS_CONTRIBUTION_ID);
299
+ }, [
300
+ menu,
301
+ items
302
+ ]);
303
+ return /* @__PURE__ */ React3.createElement(Surface.Surface, {
304
+ role: "card--content",
305
+ data: {
306
+ subject: item,
307
+ projection: projectionModel
308
+ },
309
+ limit: 1
310
+ });
311
+ };
312
+
313
+ // src/containers/PipelineContainer/index.ts
314
+ var PipelineContainer_default = PipelineContainer;
315
+ export {
316
+ PipelineContainer_default as default
317
+ };
318
+ //# sourceMappingURL=PipelineContainer-V5KGYEQR.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/PipelineContainer/PipelineContainer.tsx", "../../../src/components/PipelineComponent/PipelineColumn.tsx", "../../../src/components/PipelineComponent/PipelineComponent.tsx", "../../../src/hooks/usePipelineBoardModel.ts", "../../../src/containers/PipelineContainer/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useCallback, useEffect } from 'react';\n\nimport { Capabilities } from '@dxos/app-framework';\nimport { useCapability } from '@dxos/app-framework/ui';\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { Surface } from '@dxos/app-framework/ui';\nimport {\n OBJECT_ACTIONS_CONTRIBUTION_ID,\n OBJECT_ACTIONS_CONTRIBUTION_PRIORITY,\n type SurfaceComponentProps,\n useObjectMenuItems,\n} from '@dxos/app-toolkit/ui';\nimport { COMPANION_PREFIX } from '@dxos/app-toolkit';\nimport { DeckOperation } from '@dxos/plugin-deck/types';\nimport { Panel } from '@dxos/react-ui';\nimport { useAttention } from '@dxos/react-ui-attention';\nimport { useMenu } from '@dxos/react-ui-menu';\nimport { type Pipeline } from '@dxos/types';\n\nimport { type ItemProps, PipelineComponent } from '../../components';\nimport { usePipelineBoardModel } from '../../hooks';\n\nconst PIPELINE_ITEM = 'PipelineItem';\n\nexport type PipelineContainerProps = SurfaceComponentProps<Pipeline.Pipeline>;\n\nexport const PipelineContainer = ({ role, subject: pipeline, attendableId }: PipelineContainerProps) => {\n const registry = useCapability(Capabilities.AtomRegistry);\n const model = usePipelineBoardModel(pipeline, registry);\n const { invokePromise } = useOperationInvoker();\n const { hasAttention } = useAttention(attendableId);\n\n const handleColumnAdd = useCallback(\n () =>\n invokePromise(DeckOperation.ChangeCompanion, {\n companion: `${COMPANION_PREFIX}settings`,\n }),\n [invokePromise],\n );\n\n return (\n <PipelineComponent.Root Item={PipelineItem} onAddColumn={handleColumnAdd}>\n <Panel.Root role={role}>\n <Panel.Toolbar asChild>\n <PipelineComponent.Toolbar disabled={!hasAttention} />\n </Panel.Toolbar>\n <Panel.Content asChild>\n <PipelineComponent.Content model={model}>\n <PipelineComponent.Columns pipeline={pipeline} />\n </PipelineComponent.Content>\n </Panel.Content>\n </Panel.Root>\n </PipelineComponent.Root>\n );\n};\n\nconst PipelineItem = ({ item, projectionModel }: ItemProps) => {\n const menu = useMenu(PIPELINE_ITEM);\n const items = useObjectMenuItems(item);\n\n useEffect(() => {\n menu.addMenuItems({\n id: OBJECT_ACTIONS_CONTRIBUTION_ID,\n mode: 'additive',\n priority: OBJECT_ACTIONS_CONTRIBUTION_PRIORITY,\n items,\n });\n\n return () => menu.removeMenuItems(OBJECT_ACTIONS_CONTRIBUTION_ID);\n }, [menu, items]);\n\n return (\n <Surface.Surface\n role='card--content'\n data={{\n subject: item,\n projection: projectionModel,\n }}\n limit={1}\n />\n );\n};\n", "//\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 { Annotation, JsonSchema, Obj, Query, Type } from '@dxos/echo';\nimport { resolveSchemaWithRegistry } from '@dxos/plugin-space';\nimport { Filter, getSpace, useObject } from '@dxos/react-client/echo';\nimport { useAsyncEffect, useTranslation } from '@dxos/react-ui';\nimport { Card } from '@dxos/react-ui';\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 dragHandleRef = useRef<HTMLButtonElement>(null);\n // Subscribe to the view target for reactivity.\n const [viewSnapshot] = useObject(column.view);\n const view = column.view.target;\n const space = getSpace(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 || !space?.db) {\n return;\n }\n\n const schema = await resolveSchemaWithRegistry(space.db.schemaRegistry, query.ast);\n setSchema(() => schema);\n }, [space, 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 Tile = useMemo(() => {\n return forwardRef<HTMLDivElement, Pick<MosaicTileProps<Obj.Unknown>, 'classNames' | 'location' | 'data' | 'debug'>>(\n (props, ref) => <ItemTile {...props} ref={ref} itemProps={{ item: props.data, projectionModel }} />,\n );\n }, [Item, projectionModel]);\n\n if (!view) {\n return null;\n }\n\n return (\n <Board.Column.Root\n data={column}\n location={location}\n classNames={['group/column grid h-full overflow-hidden grid-rows-[var(--dx-rail-action)_1fr]', classNames]}\n debug={debug}\n dragHandleRef={dragHandleRef}\n >\n <Board.Column.Header label={column.name || t('untitled view title')} dragHandleRef={dragHandleRef} />\n <Board.Column.Body data={column} Tile={Tile} />\n </Board.Column.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 <Mosaic.Tile asChild id={data.id} data={data} location={location} debug={debug}>\n <Focus.Group 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 <Card.Menu />\n </Card.Toolbar>\n <Card.Content>\n <Item {...itemProps} />\n </Card.Content>\n </Card.Root>\n </Focus.Group>\n </Mosaic.Tile>\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 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';\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 = ({ model, children, ...props }: PipelineContentProps) => (\n <Board.Root {...props} model={model}>\n {children}\n </Board.Root>\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 = ({ pipeline }: PipelineColumnsProps) => {\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.change(pipeline, (p) => mutate(p.columns)),\n });\n\n return <Board.Content 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 = (props: ToolbarRootProps) => {\n const { t } = useTranslation(meta.id);\n const { onAddColumn } = usePipeline(PIPELINE_TOOLBAR_NAME);\n\n return (\n <Toolbar.Root {...props}>\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", "//\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 { Obj, Query } from '@dxos/echo';\nimport { AtomObj, AtomQuery } from '@dxos/echo-atom';\nimport { getQueryTarget } from '@dxos/plugin-space';\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", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { PipelineContainer } from './PipelineContainer';\n\nexport default PipelineContainer;\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "useCallback", "useEffect", "Capabilities", "useCapability", "useOperationInvoker", "Surface", "OBJECT_ACTIONS_CONTRIBUTION_ID", "OBJECT_ACTIONS_CONTRIBUTION_PRIORITY", "useObjectMenuItems", "COMPANION_PREFIX", "DeckOperation", "Panel", "useAttention", "useMenu", "useComposedRefs", "Function", "Option", "React", "forwardRef", "useMemo", "useRef", "useState", "Annotation", "JsonSchema", "Obj", "Query", "Type", "resolveSchemaWithRegistry", "Filter", "getSpace", "useObject", "useAsyncEffect", "useTranslation", "Card", "Board", "Focus", "Mosaic", "ProjectionModel", "createEchoChangeCallback", "useAtomValue", "createContext", "React", "Obj", "Toolbar", "useTranslation", "Board", "useBoard", "useEventHandlerAdapter", "itemNoOp", "item", "span", "id", "PIPELINE_ROOT", "PipelineRootContext", "usePipeline", "createContext", "Item", "PipelineRoot", "children", "contextValue", "displayName", "PIPELINE_CONTENT_NAME", "PipelineContent", "model", "props", "Board", "Root", "PIPELINE_COLUMNS_NAME", "PipelineColumns", "pipeline", "useBoard", "columns", "useAtomValue", "eventHandler", "useEventHandlerAdapter", "items", "getId", "getColumnId", "get", "data", "make", "object", "canDrop", "source", "isColumn", "onChange", "mutate", "Obj", "change", "p", "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", "dragHandleRef", "useRef", "viewSnapshot", "useObject", "view", "target", "space", "getSpace", "Item", "usePipeline", "schema", "setSchema", "useState", "query", "useMemo", "Query", "select", "Filter", "nothing", "fromAst", "JSON", "parse", "stringify", "ast", "useAsyncEffect", "db", "resolveSchemaWithRegistry", "schemaRegistry", "projectionModel", "undefined", "jsonSchema", "Type", "isMutable", "JsonSchema", "toJsonSchema", "change", "createEchoChangeCallback", "ProjectionModel", "baseSchema", "Tile", "forwardRef", "props", "ref", "React", "ItemTile", "itemProps", "item", "Board", "Column", "Root", "Header", "label", "name", "Body", "displayName", "ITEM_TILE_NAME", "forwardedRef", "rootRef", "composedRef", "useComposedRefs", "icon", "pipe", "Obj", "getSchema", "fromNullable", "flatMap", "Annotation", "IconAnnotation", "get", "map", "getOrElse", "Mosaic", "asChild", "Focus", "Group", "Card", "Toolbar", "Icon", "Title", "getLabel", "Menu", "Content", "Atom", "Schema", "useMemo", "Obj", "Query", "AtomObj", "AtomQuery", "getQueryTarget", "getSpace", "isSpace", "Pipeline", "usePipelineBoardModel", "pipeline", "registry", "useMemo", "emptyPipelineModel", "space", "getSpace", "columnsAtom", "AtomObj", "makeProperty", "columnAtomFamily", "Atom", "family", "viewKey", "make", "get", "columns", "find", "c", "view", "dxn", "toString", "itemsAtomFamily", "column", "viewSnapshot", "query", "ast", "Query", "fromAst", "JSON", "parse", "stringify", "queryTarget", "getQueryTarget", "undefined", "raw", "AtomQuery", "isSpace", "reverse", "getColumnId", "data", "getItemId", "id", "isColumn", "obj", "is", "Pipeline", "Column", "isItem", "Obj", "isObject", "items", "getColumns", "getItems", "emptyColumnsAtom", "emptyItemsAtom", "PIPELINE_ITEM", "PipelineContainer", "role", "subject", "pipeline", "attendableId", "registry", "useCapability", "Capabilities", "AtomRegistry", "model", "usePipelineBoardModel", "invokePromise", "useOperationInvoker", "hasAttention", "useAttention", "handleColumnAdd", "useCallback", "DeckOperation", "ChangeCompanion", "companion", "COMPANION_PREFIX", "React", "PipelineComponent", "Root", "Item", "PipelineItem", "onAddColumn", "Panel", "Toolbar", "asChild", "disabled", "Content", "Columns", "item", "projectionModel", "menu", "useMenu", "items", "useObjectMenuItems", "useEffect", "addMenuItems", "id", "OBJECT_ACTIONS_CONTRIBUTION_ID", "mode", "priority", "OBJECT_ACTIONS_CONTRIBUTION_PRIORITY", "removeMenuItems", "Surface", "data", "projection", "limit", "PipelineContainer"]
7
+ }
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  meta
3
- } from "./chunk-QWNKLHBY.mjs";
3
+ } from "./chunk-3A235GUD.mjs";
4
4
 
5
- // src/components/PipelineSettings.tsx
5
+ // src/containers/PipelineObjectSettings/PipelineObjectSettings.tsx
6
6
  import * as Schema from "effect/Schema";
7
7
  import React, { useCallback, useMemo, useRef, useState } from "react";
8
- import { DXN, Filter, Obj, Query, Ref, Tag, Type } from "@dxos/echo";
8
+ import { DXN, Filter, JsonSchema, Obj, Query, Ref, Tag } from "@dxos/echo";
9
9
  import { useTypeOptions } from "@dxos/plugin-space";
10
10
  import { resolveSchemaWithRegistry } from "@dxos/plugin-space";
11
- import { getSpace, useQuery } from "@dxos/react-client/echo";
11
+ import { getSpace, useObject, useQuery } from "@dxos/react-client/echo";
12
12
  import { IconButton, useAsyncEffect, useTranslation } from "@dxos/react-ui";
13
13
  import { Form, ViewEditor } from "@dxos/react-ui-form";
14
14
  import { List } from "@dxos/react-ui-list";
15
- import { View } from "@dxos/schema";
16
- import { Pipeline, Task } from "@dxos/types";
15
+ import { ViewModel } from "@dxos/schema";
16
+ import { Pipeline } from "@dxos/types";
17
17
  import { mx, osTranslations, subtleHover } from "@dxos/ui-theme";
18
18
  import { arrayMove } from "@dxos/util";
19
19
  var listGrid = "grid grid-cols-[min-content_1fr_min-content_min-content_min-content]";
@@ -23,11 +23,12 @@ var PipelineObjectSettings = ({ classNames, pipeline }) => {
23
23
  const { t } = useTranslation(meta.id);
24
24
  const space = getSpace(pipeline);
25
25
  const [expandedId, setExpandedId] = useState();
26
- const column = useMemo(() => pipeline.columns.find((column2) => column2.view.dxn.toString() === expandedId), [
27
- pipeline.columns,
26
+ const [columns, updateColumns] = useObject(pipeline, "columns");
27
+ const column = useMemo(() => columns.find((column2) => column2.view.dxn.toString() === expandedId), [
28
+ columns,
28
29
  expandedId
29
30
  ]);
30
- const view = column?.view.target;
31
+ const [view, updateView] = useObject(column?.view);
31
32
  const [schema, setSchema] = useState(() => Schema.Struct({}));
32
33
  const projectionRef = useRef(null);
33
34
  const tags = useQuery(space?.db, Filter.type(Tag.Tag));
@@ -40,10 +41,6 @@ var PipelineObjectSettings = ({ classNames, pipeline }) => {
40
41
  ],
41
42
  kind: [
42
43
  "user"
43
- ],
44
- registered: [
45
- "registered",
46
- "unregistered"
47
44
  ]
48
45
  }
49
46
  });
@@ -60,40 +57,55 @@ var PipelineObjectSettings = ({ classNames, pipeline }) => {
60
57
  view,
61
58
  schema
62
59
  ]);
63
- const handleMove = useCallback((fromIndex, toIndex) => Obj.change(pipeline, (p) => {
64
- arrayMove(p.columns, fromIndex, toIndex);
60
+ const handleMove = useCallback((fromIndex, toIndex) => updateColumns((columns2) => {
61
+ arrayMove(columns2, fromIndex, toIndex);
65
62
  }), [
66
- pipeline
63
+ updateColumns
67
64
  ]);
68
65
  const handleQueryChanged = useCallback(async (newQuery, target) => {
69
66
  if (!view || !space) {
70
67
  return;
71
68
  }
72
69
  const queue = target && DXN.tryParse(target) ? target : void 0;
73
- const query = queue ? Query.fromAst(newQuery).options({
70
+ const query = queue ? Query.fromAst(newQuery).from({
74
71
  queues: [
75
72
  queue
76
73
  ]
77
74
  }) : Query.fromAst(newQuery);
78
- Obj.change(view, (v) => {
79
- v.query.ast = query.ast;
75
+ updateView((view2) => {
76
+ view2.query.ast = query.ast;
80
77
  });
81
78
  const newSchema = await resolveSchemaWithRegistry(space.db.schemaRegistry, query.ast);
82
79
  if (!newSchema) {
83
80
  return;
84
81
  }
85
- const newView = View.make({
82
+ const newView = ViewModel.make({
86
83
  query,
87
- jsonSchema: Type.toJsonSchema(newSchema)
84
+ jsonSchema: JsonSchema.toJsonSchema(newSchema)
88
85
  });
89
- Obj.change(view, (v) => {
90
- v.projection = Obj.getSnapshot(newView).projection;
86
+ updateView((view2) => {
87
+ view2.projection = Obj.getSnapshot(newView).projection;
91
88
  });
92
89
  setSchema(() => newSchema);
93
90
  }, [
94
91
  view,
92
+ updateView,
95
93
  schema
96
94
  ]);
95
+ const handleColumnValuesChanged = useCallback((column2) => (newValues, { changed }) => {
96
+ if (changed["name"]) {
97
+ const columnIndex = columns.findIndex((c) => c === column2);
98
+ if (columnIndex === -1) {
99
+ return;
100
+ }
101
+ updateColumns((cols) => {
102
+ cols[columnIndex].name = newValues.name ?? "";
103
+ });
104
+ }
105
+ }, [
106
+ columns,
107
+ updateColumns
108
+ ]);
97
109
  const handleToggleField = useCallback((column2) => {
98
110
  setExpandedId((prevExpandedId) => prevExpandedId === column2.view.dxn.toString() ? void 0 : column2.view.dxn.toString());
99
111
  }, []);
@@ -101,25 +113,30 @@ var PipelineObjectSettings = ({ classNames, pipeline }) => {
101
113
  if (column2.view.dxn.toString() === expandedId) {
102
114
  setExpandedId(void 0);
103
115
  }
104
- const index = pipeline.columns.findIndex((l) => l === column2);
116
+ const index = columns.findIndex((l) => l === column2);
105
117
  const viewToRemove = await column2.view.load();
106
- Obj.change(pipeline, (p) => {
107
- p.columns.splice(index, 1);
118
+ updateColumns((columns2) => {
119
+ columns2.splice(index, 1);
108
120
  });
109
121
  space?.db.remove(viewToRemove);
110
122
  }, [
111
123
  expandedId,
112
- pipeline.columns,
124
+ columns,
125
+ updateColumns,
113
126
  space
114
127
  ]);
115
128
  const handleAdd = useCallback(() => {
116
- const newView = View.make({
117
- query: Query.select(Filter.type(Task.Task)),
118
- jsonSchema: Type.toJsonSchema(Task.Task)
129
+ if (!space) {
130
+ return;
131
+ }
132
+ const newView = ViewModel.make({
133
+ query: Query.select(Filter.nothing()),
134
+ jsonSchema: JsonSchema.toJsonSchema(Schema.Struct({}))
119
135
  });
120
- Obj.change(pipeline, (p) => {
121
- p.columns.push({
122
- name: "Tasks",
136
+ space.db.add(newView);
137
+ updateColumns((columns2) => {
138
+ columns2.push({
139
+ name: "",
123
140
  // Type assertion needed due to QueryAST type variance.
124
141
  view: Ref.make(newView),
125
142
  order: []
@@ -127,43 +144,33 @@ var PipelineObjectSettings = ({ classNames, pipeline }) => {
127
144
  });
128
145
  setExpandedId(newView.id);
129
146
  }, [
130
- pipeline
131
- ]);
132
- const handleColumnSave = useCallback((values) => {
133
- if (column) {
134
- const columnIndex = pipeline.columns.findIndex((c) => c === column);
135
- Obj.change(pipeline, (p) => {
136
- p.columns[columnIndex].name = values.name;
137
- });
138
- }
139
- }, [
140
- column,
141
- pipeline
147
+ space,
148
+ updateColumns
142
149
  ]);
143
150
  return /* @__PURE__ */ React.createElement("div", {
144
151
  role: "none",
145
- className: mx("plb-cardSpacingBlock overflow-y-auto", classNames)
152
+ className: mx("py-form-padding overflow-y-auto", classNames)
146
153
  }, /* @__PURE__ */ React.createElement("h2", {
147
- className: "text-sm text-description plb-1"
154
+ className: "text-sm text-description py-1"
148
155
  }, t("views label")), /* @__PURE__ */ React.createElement(List.Root, {
149
- items: pipeline.columns,
156
+ items: columns,
150
157
  isItem: Schema.is(Pipeline.Column),
151
158
  getId: (column2) => column2.view.dxn.toString(),
152
159
  onMove: handleMove
153
- }, ({ items: columns }) => /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("div", {
160
+ }, ({ items: columns2 }) => /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("div", {
154
161
  role: "list",
155
162
  className: mx(listGrid)
156
- }, columns.map((column2) => /* @__PURE__ */ React.createElement(List.Item, {
163
+ }, columns2.map((column2) => /* @__PURE__ */ React.createElement(List.Item, {
157
164
  key: column2.view.dxn.toString(),
158
165
  item: column2,
159
166
  classNames: listItemGrid,
160
167
  "aria-expanded": expandedId === column2.view.dxn.toString()
161
168
  }, /* @__PURE__ */ React.createElement("div", {
162
169
  role: "none",
163
- className: mx(subtleHover, listItemGrid, "rounded-sm cursor-pointer min-bs-10")
170
+ className: mx(subtleHover, listItemGrid, "rounded-xs cursor-pointer min-h-10")
164
171
  }, /* @__PURE__ */ React.createElement(List.ItemDragHandle, null), /* @__PURE__ */ React.createElement(List.ItemTitle, {
165
172
  onClick: () => handleToggleField(column2)
166
- }, column2.name), /* @__PURE__ */ React.createElement(List.ItemDeleteButton, {
173
+ }, column2.name || t("untitled view title")), /* @__PURE__ */ React.createElement(List.ItemDeleteButton, {
167
174
  label: t("delete view label"),
168
175
  autoHide: false,
169
176
  onClick: () => handleDelete(column2),
@@ -176,37 +183,38 @@ var PipelineObjectSettings = ({ classNames, pipeline }) => {
176
183
  }),
177
184
  icon: expandedId === column2.view.dxn.toString() ? "ph--caret-down--regular" : "ph--caret-right--regular",
178
185
  onClick: () => handleToggleField(column2)
179
- })), expandedId === column2.view.dxn.toString() && view && /* @__PURE__ */ React.createElement("div", {
186
+ })), expandedId === column2.view.dxn.toString() && column2?.view.target && /* @__PURE__ */ React.createElement("div", {
180
187
  role: "none",
181
- className: "col-span-5 mlb-2 border border-separator rounded-md"
188
+ className: "col-span-5 my-2 border border-separator rounded-md"
182
189
  }, /* @__PURE__ */ React.createElement(Form.Root, {
183
190
  schema: ColumnFormSchema,
184
191
  values: column2,
185
- autoSave: true,
186
- onSave: handleColumnSave
192
+ onValuesChanged: handleColumnValuesChanged(column2)
187
193
  }, /* @__PURE__ */ React.createElement(Form.Content, null, /* @__PURE__ */ React.createElement(Form.FieldSet, null))), /* @__PURE__ */ React.createElement(ViewEditor, {
188
194
  ref: projectionRef,
189
195
  mode: "tag",
190
196
  readonly: true,
191
197
  schema,
192
- view,
198
+ view: column2.view.target,
193
199
  registry: space?.db.schemaRegistry,
200
+ db: space?.db,
194
201
  tags,
195
202
  types,
196
203
  onQueryChanged: handleQueryChanged
197
204
  }))))))), /* @__PURE__ */ React.createElement("div", {
198
205
  role: "none",
199
- className: "mlb-cardSpacingBlock"
206
+ className: "my-form-padding"
200
207
  }, /* @__PURE__ */ React.createElement(IconButton, {
201
208
  icon: "ph--plus--regular",
202
209
  label: t("add view label"),
203
210
  onClick: handleAdd,
204
- classNames: "is-full"
211
+ classNames: "w-full"
205
212
  })));
206
213
  };
207
- var PipelineSettings_default = PipelineObjectSettings;
214
+
215
+ // src/containers/PipelineObjectSettings/index.ts
216
+ var PipelineObjectSettings_default = PipelineObjectSettings;
208
217
  export {
209
- PipelineObjectSettings,
210
- PipelineSettings_default as default
218
+ PipelineObjectSettings_default as default
211
219
  };
212
- //# sourceMappingURL=PipelineSettings-YSGSJHBT.mjs.map
220
+ //# sourceMappingURL=PipelineObjectSettings-QFMIKJH5.mjs.map