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