@dxos/plugin-pipeline 0.8.4-main.1068cf700f → 0.8.4-main.2244d791bb
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-I3TPA7ZN.mjs → PipelineContainer-2BRZPECS.mjs} +122 -50
- package/dist/lib/browser/PipelineContainer-2BRZPECS.mjs.map +7 -0
- package/dist/lib/browser/{PipelineSettings-YSGSJHBT.mjs → PipelineSettings-R54RTVWZ.mjs} +38 -29
- package/dist/lib/browser/PipelineSettings-R54RTVWZ.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +1 -1
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-JMMCTIL3.mjs → react-surface-CMTEEE6F.mjs} +3 -3
- 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 +13 -7
- 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/PipelineContainer.d.ts.map +1 -1
- package/dist/types/src/components/PipelineSettings.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +39 -38
- package/src/components/PipelineColumn.tsx +32 -32
- package/src/components/PipelineComponent.stories.tsx +11 -4
- package/src/components/PipelineComponent.tsx +100 -17
- package/src/components/PipelineContainer.stories.tsx +5 -5
- package/src/components/PipelineContainer.tsx +6 -2
- package/src/components/PipelineSettings.tsx +33 -28
- package/dist/lib/browser/PipelineContainer-I3TPA7ZN.mjs.map +0 -7
- package/dist/lib/browser/PipelineSettings-YSGSJHBT.mjs.map +0 -7
- /package/dist/lib/browser/{react-surface-JMMCTIL3.mjs.map → react-surface-CMTEEE6F.mjs.map} +0 -0
|
@@ -4,32 +4,44 @@ import {
|
|
|
4
4
|
|
|
5
5
|
// src/components/PipelineContainer.tsx
|
|
6
6
|
import React3, { useCallback } from "react";
|
|
7
|
+
import { Capabilities } from "@dxos/app-framework";
|
|
8
|
+
import { useCapability } from "@dxos/app-framework/ui";
|
|
7
9
|
import { useOperationInvoker } from "@dxos/app-framework/ui";
|
|
8
10
|
import { Surface } from "@dxos/app-framework/ui";
|
|
9
|
-
import { Obj as
|
|
11
|
+
import { Obj as Obj3 } from "@dxos/echo";
|
|
10
12
|
import { ATTENDABLE_PATH_SEPARATOR, DeckOperation } from "@dxos/plugin-deck/types";
|
|
11
13
|
import { Layout } from "@dxos/react-ui";
|
|
12
14
|
import { useAttention } from "@dxos/react-ui-attention";
|
|
13
15
|
|
|
14
16
|
// src/components/PipelineComponent.tsx
|
|
17
|
+
import { Atom, useAtomValue as useAtomValue2 } from "@effect-atom/atom-react";
|
|
15
18
|
import { createContext } from "@radix-ui/react-context";
|
|
16
|
-
import
|
|
17
|
-
import {
|
|
19
|
+
import * as Schema from "effect/Schema";
|
|
20
|
+
import React2, { useMemo as useMemo2 } from "react";
|
|
21
|
+
import { Obj as Obj2, Query as Query2 } from "@dxos/echo";
|
|
22
|
+
import { AtomObj, AtomQuery } from "@dxos/echo-atom";
|
|
23
|
+
import { getQueryTarget } from "@dxos/plugin-space";
|
|
24
|
+
import { getSpace as getSpace2, isSpace } from "@dxos/react-client/echo";
|
|
18
25
|
import { Toolbar, useTranslation as useTranslation2 } from "@dxos/react-ui";
|
|
19
|
-
import {
|
|
26
|
+
import { Board as Board2, useBoard as useBoard2, useEventHandlerAdapter } from "@dxos/react-ui-mosaic";
|
|
27
|
+
import { Pipeline } from "@dxos/types";
|
|
20
28
|
|
|
21
29
|
// src/components/PipelineColumn.tsx
|
|
30
|
+
import { useAtomValue } from "@effect-atom/atom-react";
|
|
22
31
|
import { useComposedRefs } from "@radix-ui/react-compose-refs";
|
|
23
32
|
import React, { forwardRef, useMemo, useRef, useState } from "react";
|
|
24
33
|
import { Obj, Query, Type } from "@dxos/echo";
|
|
25
|
-
import {
|
|
26
|
-
import { Filter, getSpace,
|
|
27
|
-
import {
|
|
28
|
-
import { Card, Focus, Mosaic } from "@dxos/react-ui-mosaic";
|
|
34
|
+
import { resolveSchemaWithRegistry } from "@dxos/plugin-space";
|
|
35
|
+
import { Filter, getSpace, useObject } from "@dxos/react-client/echo";
|
|
36
|
+
import { useAsyncEffect, useTranslation } from "@dxos/react-ui";
|
|
37
|
+
import { Board, Card, Focus, Mosaic, useBoard } from "@dxos/react-ui-mosaic";
|
|
29
38
|
import { ProjectionModel, createEchoChangeCallback } from "@dxos/schema";
|
|
39
|
+
import { mx } from "@dxos/ui-theme";
|
|
30
40
|
var PIPELINE_COLUMN_NAME = "PipelineColumn";
|
|
31
|
-
var PipelineColumn = ({ column }) => {
|
|
41
|
+
var PipelineColumn = ({ data: column, location, classNames, debug }) => {
|
|
32
42
|
const { t } = useTranslation(meta.id);
|
|
43
|
+
const { model } = useBoard(PIPELINE_COLUMN_NAME);
|
|
44
|
+
const items = useAtomValue(model.items(column));
|
|
33
45
|
const [viewSnapshot] = useObject(column.view);
|
|
34
46
|
const view = column.view.target;
|
|
35
47
|
const space = getSpace(view);
|
|
@@ -45,7 +57,7 @@ var PipelineColumn = ({ column }) => {
|
|
|
45
57
|
JSON.stringify(viewSnapshot?.query.ast)
|
|
46
58
|
]);
|
|
47
59
|
useAsyncEffect(async () => {
|
|
48
|
-
if (!query || !space) {
|
|
60
|
+
if (!query || !space?.db) {
|
|
49
61
|
return;
|
|
50
62
|
}
|
|
51
63
|
const schema2 = await resolveSchemaWithRegistry(space.db.schemaRegistry, query.ast);
|
|
@@ -54,16 +66,6 @@ var PipelineColumn = ({ column }) => {
|
|
|
54
66
|
space,
|
|
55
67
|
query
|
|
56
68
|
]);
|
|
57
|
-
const queryTarget = getQueryTarget(query.ast, space);
|
|
58
|
-
const items = useQuery(queryTarget, query);
|
|
59
|
-
const sortedItems = useMemo(() => {
|
|
60
|
-
return isSpace(queryTarget) ? items : [
|
|
61
|
-
...items.reverse()
|
|
62
|
-
];
|
|
63
|
-
}, [
|
|
64
|
-
queryTarget,
|
|
65
|
-
items
|
|
66
|
-
]);
|
|
67
69
|
const projectionModel = useMemo(() => {
|
|
68
70
|
if (!schema || !view) {
|
|
69
71
|
return void 0;
|
|
@@ -95,24 +97,25 @@ var PipelineColumn = ({ column }) => {
|
|
|
95
97
|
if (!view) {
|
|
96
98
|
return null;
|
|
97
99
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
+
const dragHandleRef = useRef(null);
|
|
101
|
+
return /* @__PURE__ */ React.createElement(Board.Column.Root, {
|
|
102
|
+
data: column,
|
|
103
|
+
location,
|
|
104
|
+
classNames,
|
|
105
|
+
debug,
|
|
106
|
+
dragHandleRef
|
|
100
107
|
}, /* @__PURE__ */ React.createElement("div", {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
}, /* @__PURE__ */ React.createElement(
|
|
109
|
-
|
|
110
|
-
}, /* @__PURE__ */ React.createElement(Mosaic.Stack, {
|
|
111
|
-
orientation: "vertical",
|
|
112
|
-
items: sortedItems,
|
|
113
|
-
getId: (item) => item.id,
|
|
108
|
+
role: "none",
|
|
109
|
+
"data-testid": "board-column",
|
|
110
|
+
className: mx("group/column grid bs-full overflow-hidden grid-rows-[var(--rail-action)_1fr]", classNames)
|
|
111
|
+
}, /* @__PURE__ */ React.createElement(Board.Column.Header, {
|
|
112
|
+
classNames: "border-be border-separator",
|
|
113
|
+
label: column.name ?? t("untitled view title"),
|
|
114
|
+
dragHandleRef
|
|
115
|
+
}), /* @__PURE__ */ React.createElement(Board.Column.Body, {
|
|
116
|
+
data: column,
|
|
114
117
|
Tile
|
|
115
|
-
})))
|
|
118
|
+
})));
|
|
116
119
|
};
|
|
117
120
|
PipelineColumn.displayName = PIPELINE_COLUMN_NAME;
|
|
118
121
|
var ITEM_TILE_NAME = "ItemTile";
|
|
@@ -138,23 +141,89 @@ ItemTile.displayName = ITEM_TILE_NAME;
|
|
|
138
141
|
// src/components/PipelineComponent.tsx
|
|
139
142
|
var itemNoOp = ({ item }) => /* @__PURE__ */ React2.createElement("span", null, item.id);
|
|
140
143
|
var PIPELINE_ROOT = "Pipeline.Root";
|
|
141
|
-
var [
|
|
144
|
+
var [PipelineRootContext, usePipeline] = createContext(PIPELINE_ROOT, {
|
|
142
145
|
Item: itemNoOp
|
|
143
146
|
});
|
|
147
|
+
var PipelineRoot = ({ model, children, ...contextValue }) => /* @__PURE__ */ React2.createElement(PipelineRootContext, contextValue, /* @__PURE__ */ React2.createElement(Board2.Root, {
|
|
148
|
+
model
|
|
149
|
+
}, children));
|
|
144
150
|
PipelineRoot.displayName = PIPELINE_ROOT;
|
|
151
|
+
var emptyColumnsAtom = Atom.make(() => []);
|
|
152
|
+
var emptyItemsAtom = Atom.make(() => []);
|
|
153
|
+
var emptyPipelineModel = {
|
|
154
|
+
getColumnId: (data) => data.view.dxn.toString(),
|
|
155
|
+
getItemId: (data) => data.id,
|
|
156
|
+
isColumn: (obj) => Schema.is(Pipeline.Column)(obj),
|
|
157
|
+
isItem: (obj) => Obj2.isObject(obj),
|
|
158
|
+
columns: emptyColumnsAtom,
|
|
159
|
+
items: () => emptyItemsAtom,
|
|
160
|
+
getColumns: () => [],
|
|
161
|
+
getItems: () => []
|
|
162
|
+
};
|
|
163
|
+
var usePipelineBoardModel = (pipeline, registry) => useMemo2(() => {
|
|
164
|
+
if (pipeline == null) {
|
|
165
|
+
return emptyPipelineModel;
|
|
166
|
+
}
|
|
167
|
+
const space = getSpace2(pipeline);
|
|
168
|
+
const columnsAtom = AtomObj.makeProperty(pipeline, "columns");
|
|
169
|
+
const columnAtomFamily = Atom.family((viewKey) => Atom.make((get) => {
|
|
170
|
+
const columns = get(columnsAtom);
|
|
171
|
+
return columns.find((c) => c.view.dxn.toString() === viewKey);
|
|
172
|
+
}));
|
|
173
|
+
const itemsAtomFamily = Atom.family((viewKey) => Atom.make((get) => {
|
|
174
|
+
const column = get(columnAtomFamily(viewKey));
|
|
175
|
+
if (column == null) {
|
|
176
|
+
return [];
|
|
177
|
+
}
|
|
178
|
+
const viewSnapshot = get(AtomObj.make(column.view));
|
|
179
|
+
if (!viewSnapshot?.query?.ast) {
|
|
180
|
+
return [];
|
|
181
|
+
}
|
|
182
|
+
const query = Query2.fromAst(JSON.parse(JSON.stringify(viewSnapshot.query.ast)));
|
|
183
|
+
const queryTarget = space ? getQueryTarget(query.ast, space) : void 0;
|
|
184
|
+
if (!queryTarget) {
|
|
185
|
+
return [];
|
|
186
|
+
}
|
|
187
|
+
const raw = get(AtomQuery.make(queryTarget, query));
|
|
188
|
+
return isSpace(queryTarget) ? raw : [
|
|
189
|
+
...raw
|
|
190
|
+
].reverse();
|
|
191
|
+
}));
|
|
192
|
+
return {
|
|
193
|
+
getColumnId: (data) => data.view.dxn.toString(),
|
|
194
|
+
getItemId: (data) => data.id,
|
|
195
|
+
isColumn: (obj) => Schema.is(Pipeline.Column)(obj),
|
|
196
|
+
isItem: (obj) => Obj2.isObject(obj),
|
|
197
|
+
columns: columnsAtom,
|
|
198
|
+
items: (column) => itemsAtomFamily(column.view.dxn.toString()),
|
|
199
|
+
getColumns: () => [
|
|
200
|
+
...registry.get(columnsAtom)
|
|
201
|
+
],
|
|
202
|
+
getItems: (column) => registry.get(itemsAtomFamily(column.view.dxn.toString())) ?? []
|
|
203
|
+
};
|
|
204
|
+
}, [
|
|
205
|
+
pipeline,
|
|
206
|
+
registry
|
|
207
|
+
]);
|
|
145
208
|
var PIPELINE_CONTENT_NAME = "Pipeline.Content";
|
|
146
209
|
var PipelineContent = ({ pipeline }) => {
|
|
147
|
-
const
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
})
|
|
157
|
-
|
|
210
|
+
const { model } = useBoard2(PIPELINE_CONTENT_NAME);
|
|
211
|
+
const columns = useAtomValue2(model.columns);
|
|
212
|
+
const eventHandler = useEventHandlerAdapter({
|
|
213
|
+
id: pipeline.id,
|
|
214
|
+
// TODO(wittjosiah): Cast because columns array is readonly.
|
|
215
|
+
items: columns,
|
|
216
|
+
getId: model.getColumnId,
|
|
217
|
+
get: (data) => data,
|
|
218
|
+
make: (object) => object,
|
|
219
|
+
canDrop: ({ source }) => model.isColumn(source.data),
|
|
220
|
+
onChange: (mutate) => Obj2.change(pipeline, (p) => mutate(p.columns))
|
|
221
|
+
});
|
|
222
|
+
return /* @__PURE__ */ React2.createElement(Board2.Content, {
|
|
223
|
+
id: "pipeline",
|
|
224
|
+
eventHandler,
|
|
225
|
+
Tile: PipelineColumn
|
|
226
|
+
});
|
|
158
227
|
};
|
|
159
228
|
PipelineContent.displayName = PIPELINE_CONTENT_NAME;
|
|
160
229
|
var PIPELINE_TOOLBAR_NAME = "Pipeline.Toolbar";
|
|
@@ -177,8 +246,10 @@ var PipelineComponent = {
|
|
|
177
246
|
|
|
178
247
|
// src/components/PipelineContainer.tsx
|
|
179
248
|
var PipelineContainer = ({ role, subject: pipeline }) => {
|
|
249
|
+
const registry = useCapability(Capabilities.AtomRegistry);
|
|
250
|
+
const model = usePipelineBoardModel(pipeline, registry);
|
|
180
251
|
const { invokePromise } = useOperationInvoker();
|
|
181
|
-
const attendableId =
|
|
252
|
+
const attendableId = Obj3.getDXN(pipeline).toString();
|
|
182
253
|
const { hasAttention } = useAttention(attendableId);
|
|
183
254
|
const handleColumnAdd = useCallback(() => invokePromise(DeckOperation.ChangeCompanion, {
|
|
184
255
|
primary: attendableId,
|
|
@@ -192,6 +263,7 @@ var PipelineContainer = ({ role, subject: pipeline }) => {
|
|
|
192
263
|
toolbar: true
|
|
193
264
|
}, /* @__PURE__ */ React3.createElement(PipelineComponent.Root, {
|
|
194
265
|
Item: PipelineItem,
|
|
266
|
+
model,
|
|
195
267
|
onAddColumn: handleColumnAdd
|
|
196
268
|
}, /* @__PURE__ */ React3.createElement(PipelineComponent.Toolbar, {
|
|
197
269
|
disabled: !hasAttention
|
|
@@ -214,4 +286,4 @@ export {
|
|
|
214
286
|
PipelineContainer,
|
|
215
287
|
PipelineContainer_default as default
|
|
216
288
|
};
|
|
217
|
-
//# sourceMappingURL=PipelineContainer-
|
|
289
|
+
//# sourceMappingURL=PipelineContainer-2BRZPECS.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/PipelineContainer.tsx", "../../../src/components/PipelineComponent.tsx", "../../../src/components/PipelineColumn.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useCallback } 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 { type SurfaceComponentProps } from '@dxos/app-toolkit/ui';\nimport { Obj } from '@dxos/echo';\nimport { ATTENDABLE_PATH_SEPARATOR, DeckOperation } from '@dxos/plugin-deck/types';\nimport { Layout } from '@dxos/react-ui';\nimport { useAttention } from '@dxos/react-ui-attention';\nimport { type Pipeline as PipelineType } from '@dxos/types';\n\nimport { type ItemProps, PipelineComponent, usePipelineBoardModel } from './PipelineComponent';\n\nexport type PipelineContainerProps = SurfaceComponentProps<PipelineType.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 primary: attendableId,\n companion: `${attendableId}${ATTENDABLE_PATH_SEPARATOR}settings`,\n }),\n [invokePromise, attendableId],\n );\n\n return (\n <Layout.Main role={role} toolbar>\n <PipelineComponent.Root Item={PipelineItem} model={model} onAddColumn={handleColumnAdd}>\n <PipelineComponent.Toolbar disabled={!hasAttention} />\n <PipelineComponent.Content pipeline={pipeline} />\n </PipelineComponent.Root>\n </Layout.Main>\n );\n};\n\nconst PipelineItem = ({ item, projectionModel }: ItemProps) => {\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\nexport default PipelineContainer;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom, type Registry, useAtomValue } from '@effect-atom/atom-react';\nimport { createContext } from '@radix-ui/react-context';\nimport * as Schema from 'effect/Schema';\nimport React, { type FC, type PropsWithChildren, 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 { 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 { Pipeline, type Pipeline as PipelineType } 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\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 // onAddItem?: (schema: Schema.Schema.AnyNoContext) => void;\n onAddColumn?: () => void;\n};\n\n//\n// Root\n//\n\ntype PipelineRootProps = PropsWithChildren<\n PipelineContextValue & {\n model: BoardModel<PipelineType.Column, Obj.Unknown>;\n }\n>;\n\nconst PIPELINE_ROOT = 'Pipeline.Root';\n\nconst [PipelineRootContext, usePipeline] = createContext<PipelineContextValue>(PIPELINE_ROOT, {\n Item: itemNoOp,\n});\n\nconst PipelineRoot = ({ model, children, ...contextValue }: PipelineRootProps) => (\n <PipelineRootContext {...contextValue}>\n <Board.Root model={model}>{children}</Board.Root>\n </PipelineRootContext>\n);\n\nPipelineRoot.displayName = PIPELINE_ROOT;\n\n//\n// usePipelineBoardModel\n//\n\nconst emptyColumnsAtom = Atom.make(() => [] as PipelineType.Column[]);\nconst emptyItemsAtom = Atom.make(() => [] as Obj.Unknown[]);\nconst emptyPipelineModel: BoardModel<PipelineType.Column, Obj.Unknown> = {\n getColumnId: (data) => (data as PipelineType.Column).view.dxn.toString(),\n getItemId: (data) => (data as Obj.Unknown).id,\n isColumn: (obj: unknown): obj is PipelineType.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\nconst usePipelineBoardModel = (\n pipeline: PipelineType.Pipeline | undefined,\n registry: Registry.Registry,\n): BoardModel<PipelineType.Column, Obj.Unknown> =>\n useMemo<BoardModel<PipelineType.Column, Obj.Unknown>>(() => {\n if (pipeline == null) {\n return emptyPipelineModel;\n }\n const space = getSpace(pipeline);\n const columnsAtom = AtomObj.makeProperty(pipeline, 'columns');\n const columnAtomFamily = Atom.family<string, Atom.Atom<PipelineType.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 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 return {\n getColumnId: (data) => (data as PipelineType.Column).view.dxn.toString(),\n getItemId: (data) => (data as Obj.Unknown).id,\n isColumn: (obj: unknown): obj is PipelineType.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\n//\n// Content\n//\n\nconst PIPELINE_CONTENT_NAME = 'Pipeline.Content';\n\ntype PipelineContentProps = {\n pipeline: PipelineType.Pipeline;\n};\n\nconst PipelineContent = ({ pipeline }: PipelineContentProps) => {\n const { model } = useBoard(PIPELINE_CONTENT_NAME);\n const columns = useAtomValue(model.columns);\n const eventHandler = useEventHandlerAdapter<PipelineType.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 PipelineType.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\nPipelineContent.displayName = PIPELINE_CONTENT_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 Toolbar: PipelineToolbar,\n};\n\nexport { usePipeline, usePipelineBoardModel };\n\nexport type { ItemProps, PipelineContextValue, PipelineRootProps };\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useAtomValue } from '@effect-atom/atom-react';\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 { 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 { Board, Card, Focus, Mosaic, type MosaicTileProps, useBoard } from '@dxos/react-ui-mosaic';\nimport { ProjectionModel, createEchoChangeCallback } from '@dxos/schema';\nimport { type Pipeline } from '@dxos/types';\nimport { mx } from '@dxos/ui-theme';\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 { model } = useBoard<Pipeline.Column, Obj.Unknown>(PIPELINE_COLUMN_NAME);\n const items = useAtomValue(model.items(column));\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 : Type.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 const dragHandleRef = useRef<HTMLButtonElement>(null);\n\n return (\n <Board.Column.Root\n data={column}\n location={location}\n classNames={classNames}\n debug={debug}\n dragHandleRef={dragHandleRef}\n >\n <div\n role='none'\n data-testid='board-column'\n className={mx('group/column grid bs-full overflow-hidden grid-rows-[var(--rail-action)_1fr]', classNames)}\n >\n <Board.Column.Header\n classNames='border-be border-separator'\n label={column.name ?? t('untitled view title')}\n dragHandleRef={dragHandleRef}\n />\n <Board.Column.Body data={column} Tile={Tile} />\n </div>\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\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>{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"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["React", "useCallback", "Capabilities", "useCapability", "useOperationInvoker", "Surface", "Obj", "ATTENDABLE_PATH_SEPARATOR", "DeckOperation", "Layout", "useAttention", "Atom", "useAtomValue", "createContext", "Schema", "React", "useMemo", "Obj", "Query", "AtomObj", "AtomQuery", "getQueryTarget", "getSpace", "isSpace", "Toolbar", "useTranslation", "Board", "useBoard", "useEventHandlerAdapter", "Pipeline", "useAtomValue", "useComposedRefs", "React", "forwardRef", "useMemo", "useRef", "useState", "Obj", "Query", "Type", "resolveSchemaWithRegistry", "Filter", "getSpace", "useObject", "useAsyncEffect", "useTranslation", "Board", "Card", "Focus", "Mosaic", "useBoard", "ProjectionModel", "createEchoChangeCallback", "mx", "PIPELINE_COLUMN_NAME", "PipelineColumn", "data", "column", "location", "classNames", "debug", "t", "useTranslation", "meta", "id", "model", "useBoard", "items", "useAtomValue", "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", "toJsonSchema", "change", "createEchoChangeCallback", "ProjectionModel", "baseSchema", "Tile", "forwardRef", "props", "ref", "ItemTile", "itemProps", "item", "dragHandleRef", "useRef", "Board", "Column", "Root", "div", "role", "data-testid", "className", "mx", "Header", "label", "name", "Body", "displayName", "ITEM_TILE_NAME", "forwardedRef", "rootRef", "composedRef", "useComposedRefs", "Mosaic", "asChild", "Focus", "Group", "Card", "Toolbar", "DragHandle", "Title", "Obj", "getLabel", "Menu", "Content", "itemNoOp", "item", "React", "span", "id", "PIPELINE_ROOT", "PipelineRootContext", "usePipeline", "createContext", "Item", "PipelineRoot", "model", "children", "contextValue", "Board", "Root", "displayName", "emptyColumnsAtom", "Atom", "make", "emptyItemsAtom", "emptyPipelineModel", "getColumnId", "data", "view", "dxn", "toString", "getItemId", "isColumn", "obj", "is", "Pipeline", "Column", "isItem", "Obj", "isObject", "columns", "items", "getColumns", "getItems", "usePipelineBoardModel", "pipeline", "registry", "useMemo", "space", "getSpace", "columnsAtom", "AtomObj", "makeProperty", "columnAtomFamily", "family", "viewKey", "get", "find", "c", "itemsAtomFamily", "column", "viewSnapshot", "query", "ast", "Query", "fromAst", "JSON", "parse", "stringify", "queryTarget", "getQueryTarget", "undefined", "raw", "AtomQuery", "isSpace", "reverse", "PIPELINE_CONTENT_NAME", "PipelineContent", "useBoard", "useAtomValue", "eventHandler", "useEventHandlerAdapter", "getId", "object", "canDrop", "source", "onChange", "mutate", "change", "p", "Content", "Tile", "PipelineColumn", "PIPELINE_TOOLBAR_NAME", "PipelineToolbar", "props", "t", "useTranslation", "meta", "onAddColumn", "Toolbar", "IconButton", "icon", "iconOnly", "label", "onClick", "PipelineComponent", "PipelineContainer", "role", "subject", "pipeline", "registry", "useCapability", "Capabilities", "AtomRegistry", "model", "usePipelineBoardModel", "invokePromise", "useOperationInvoker", "attendableId", "Obj", "getDXN", "toString", "hasAttention", "useAttention", "handleColumnAdd", "useCallback", "DeckOperation", "ChangeCompanion", "primary", "companion", "ATTENDABLE_PATH_SEPARATOR", "React", "Layout", "Main", "toolbar", "PipelineComponent", "Root", "Item", "PipelineItem", "onAddColumn", "Toolbar", "disabled", "Content", "item", "projectionModel", "Surface", "data", "projection", "limit"]
|
|
7
|
+
}
|
|
@@ -5,10 +5,10 @@ import {
|
|
|
5
5
|
// src/components/PipelineSettings.tsx
|
|
6
6
|
import * as Schema from "effect/Schema";
|
|
7
7
|
import React, { useCallback, useMemo, useRef, useState } from "react";
|
|
8
|
-
import { DXN, Filter,
|
|
8
|
+
import { DXN, Filter, Query, Ref, Tag, Type } 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";
|
|
@@ -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,10 +61,10 @@ 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) {
|
|
@@ -75,8 +76,8 @@ var PipelineObjectSettings = ({ classNames, pipeline }) => {
|
|
|
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) {
|
|
@@ -86,12 +87,13 @@ var PipelineObjectSettings = ({ classNames, pipeline }) => {
|
|
|
86
87
|
query,
|
|
87
88
|
jsonSchema: Type.toJsonSchema(newSchema)
|
|
88
89
|
});
|
|
89
|
-
|
|
90
|
-
|
|
90
|
+
updateView((view2) => {
|
|
91
|
+
view2.projection = newView.projection;
|
|
91
92
|
});
|
|
92
93
|
setSchema(() => newSchema);
|
|
93
94
|
}, [
|
|
94
95
|
view,
|
|
96
|
+
updateView,
|
|
95
97
|
schema
|
|
96
98
|
]);
|
|
97
99
|
const handleToggleField = useCallback((column2) => {
|
|
@@ -101,24 +103,29 @@ var PipelineObjectSettings = ({ classNames, pipeline }) => {
|
|
|
101
103
|
if (column2.view.dxn.toString() === expandedId) {
|
|
102
104
|
setExpandedId(void 0);
|
|
103
105
|
}
|
|
104
|
-
const index =
|
|
106
|
+
const index = columns.findIndex((l) => l === column2);
|
|
105
107
|
const viewToRemove = await column2.view.load();
|
|
106
|
-
|
|
107
|
-
|
|
108
|
+
updateColumns((columns2) => {
|
|
109
|
+
columns2.splice(index, 1);
|
|
108
110
|
});
|
|
109
111
|
space?.db.remove(viewToRemove);
|
|
110
112
|
}, [
|
|
111
113
|
expandedId,
|
|
112
|
-
|
|
114
|
+
columns,
|
|
115
|
+
updateColumns,
|
|
113
116
|
space
|
|
114
117
|
]);
|
|
115
118
|
const handleAdd = useCallback(() => {
|
|
119
|
+
if (!space) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
116
122
|
const newView = View.make({
|
|
117
123
|
query: Query.select(Filter.type(Task.Task)),
|
|
118
124
|
jsonSchema: Type.toJsonSchema(Task.Task)
|
|
119
125
|
});
|
|
120
|
-
|
|
121
|
-
|
|
126
|
+
space.db.add(newView);
|
|
127
|
+
updateColumns((columns2) => {
|
|
128
|
+
columns2.push({
|
|
122
129
|
name: "Tasks",
|
|
123
130
|
// Type assertion needed due to QueryAST type variance.
|
|
124
131
|
view: Ref.make(newView),
|
|
@@ -127,18 +134,20 @@ var PipelineObjectSettings = ({ classNames, pipeline }) => {
|
|
|
127
134
|
});
|
|
128
135
|
setExpandedId(newView.id);
|
|
129
136
|
}, [
|
|
130
|
-
|
|
137
|
+
space,
|
|
138
|
+
updateColumns
|
|
131
139
|
]);
|
|
132
140
|
const handleColumnSave = useCallback((values) => {
|
|
133
141
|
if (column) {
|
|
134
|
-
const columnIndex =
|
|
135
|
-
|
|
136
|
-
|
|
142
|
+
const columnIndex = columns.findIndex((c) => c === column);
|
|
143
|
+
updateColumns((columns2) => {
|
|
144
|
+
columns2[columnIndex].name = values.name;
|
|
137
145
|
});
|
|
138
146
|
}
|
|
139
147
|
}, [
|
|
140
148
|
column,
|
|
141
|
-
|
|
149
|
+
columns,
|
|
150
|
+
updateColumns
|
|
142
151
|
]);
|
|
143
152
|
return /* @__PURE__ */ React.createElement("div", {
|
|
144
153
|
role: "none",
|
|
@@ -146,14 +155,14 @@ var PipelineObjectSettings = ({ classNames, pipeline }) => {
|
|
|
146
155
|
}, /* @__PURE__ */ React.createElement("h2", {
|
|
147
156
|
className: "text-sm text-description plb-1"
|
|
148
157
|
}, t("views label")), /* @__PURE__ */ React.createElement(List.Root, {
|
|
149
|
-
items:
|
|
158
|
+
items: columns,
|
|
150
159
|
isItem: Schema.is(Pipeline.Column),
|
|
151
160
|
getId: (column2) => column2.view.dxn.toString(),
|
|
152
161
|
onMove: handleMove
|
|
153
|
-
}, ({ items:
|
|
162
|
+
}, ({ items: columns2 }) => /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("div", {
|
|
154
163
|
role: "list",
|
|
155
164
|
className: mx(listGrid)
|
|
156
|
-
},
|
|
165
|
+
}, columns2.map((column2) => /* @__PURE__ */ React.createElement(List.Item, {
|
|
157
166
|
key: column2.view.dxn.toString(),
|
|
158
167
|
item: column2,
|
|
159
168
|
classNames: listItemGrid,
|
|
@@ -176,7 +185,7 @@ var PipelineObjectSettings = ({ classNames, pipeline }) => {
|
|
|
176
185
|
}),
|
|
177
186
|
icon: expandedId === column2.view.dxn.toString() ? "ph--caret-down--regular" : "ph--caret-right--regular",
|
|
178
187
|
onClick: () => handleToggleField(column2)
|
|
179
|
-
})), expandedId === column2.view.dxn.toString() && view && /* @__PURE__ */ React.createElement("div", {
|
|
188
|
+
})), expandedId === column2.view.dxn.toString() && column2?.view.target && /* @__PURE__ */ React.createElement("div", {
|
|
180
189
|
role: "none",
|
|
181
190
|
className: "col-span-5 mlb-2 border border-separator rounded-md"
|
|
182
191
|
}, /* @__PURE__ */ React.createElement(Form.Root, {
|
|
@@ -189,7 +198,7 @@ var PipelineObjectSettings = ({ classNames, pipeline }) => {
|
|
|
189
198
|
mode: "tag",
|
|
190
199
|
readonly: true,
|
|
191
200
|
schema,
|
|
192
|
-
view,
|
|
201
|
+
view: column2.view.target,
|
|
193
202
|
registry: space?.db.schemaRegistry,
|
|
194
203
|
tags,
|
|
195
204
|
types,
|
|
@@ -209,4 +218,4 @@ export {
|
|
|
209
218
|
PipelineObjectSettings,
|
|
210
219
|
PipelineSettings_default as default
|
|
211
220
|
};
|
|
212
|
-
//# sourceMappingURL=PipelineSettings-
|
|
221
|
+
//# sourceMappingURL=PipelineSettings-R54RTVWZ.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/PipelineSettings.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\nimport React, { useCallback, useMemo, useRef, useState } from 'react';\n\nimport { DXN, Filter, Query, type QueryAST, Ref, Tag, Type } from '@dxos/echo';\nimport { type Mutable } from '@dxos/echo/internal';\nimport { useTypeOptions } from '@dxos/plugin-space';\nimport { resolveSchemaWithRegistry } from '@dxos/plugin-space';\nimport { getSpace, useObject, useQuery } from '@dxos/react-client/echo';\nimport { IconButton, type ThemedClassName, useAsyncEffect, useTranslation } from '@dxos/react-ui';\nimport { Form, ViewEditor } from '@dxos/react-ui-form';\nimport { List } from '@dxos/react-ui-list';\nimport { type ProjectionModel, View } from '@dxos/schema';\nimport { Pipeline, Task } from '@dxos/types';\nimport { mx, osTranslations, subtleHover } from '@dxos/ui-theme';\nimport { arrayMove } from '@dxos/util';\n\nimport { meta } from '../meta';\n\nconst listGrid = 'grid grid-cols-[min-content_1fr_min-content_min-content_min-content]';\nconst listItemGrid = 'grid grid-cols-subgrid col-span-5';\n\nconst ColumnFormSchema = Pipeline.Column.pipe(Schema.mutable, Schema.pick('name'));\n\n// TODO(burdon): Standardize Object/Plugin settings.\nexport type PipelineObjectSettingsProps = ThemedClassName<{\n pipeline: Pipeline.Pipeline;\n}>;\n\n/**\n * Supports editing the pipeline view.\n */\nexport const PipelineObjectSettings = ({ classNames, pipeline }: PipelineObjectSettingsProps) => {\n const { t } = useTranslation(meta.id);\n const space = getSpace(pipeline);\n const [expandedId, setExpandedId] = useState<string>();\n const [columns, updateColumns] = useObject(pipeline, 'columns');\n const column = useMemo(\n () => columns.find((column) => column.view.dxn.toString() === expandedId),\n [columns, expandedId],\n );\n const [view, updateView] = useObject(column?.view);\n const [schema, setSchema] = useState<Schema.Schema.AnyNoContext>(() => Schema.Struct({}));\n const projectionRef = useRef<ProjectionModel>(null);\n const tags = useQuery(space?.db, Filter.type(Tag.Tag));\n const types = useTypeOptions({\n space,\n annotation: {\n location: ['database', 'runtime'],\n kind: ['user'],\n registered: ['registered', 'unregistered'],\n },\n });\n\n useAsyncEffect(async () => {\n if (!view?.query || !space) {\n return;\n }\n\n const foundSchema = await resolveSchemaWithRegistry(space.db.schemaRegistry, view.query.ast);\n if (foundSchema && foundSchema !== schema) {\n setSchema(() => foundSchema);\n }\n }, [space, view, schema]);\n\n const handleMove = useCallback(\n (fromIndex: number, toIndex: number) =>\n updateColumns((columns) => {\n arrayMove(columns, fromIndex, toIndex);\n }),\n [updateColumns],\n );\n\n const handleQueryChanged = useCallback(\n async (newQuery: QueryAST.Query, target?: string) => {\n if (!view || !space) {\n return;\n }\n\n const queue = target && DXN.tryParse(target) ? target : undefined;\n const query = queue ? Query.fromAst(newQuery).options({ queues: [queue] }) : Query.fromAst(newQuery);\n updateView((view) => {\n view.query.ast = query.ast as Mutable<typeof query.ast>;\n });\n const newSchema = await resolveSchemaWithRegistry(space.db.schemaRegistry, query.ast);\n if (!newSchema) {\n return;\n }\n\n const newView = View.make({\n query,\n jsonSchema: Type.toJsonSchema(newSchema),\n });\n updateView((view) => {\n view.projection = newView.projection as Mutable<typeof view.projection>;\n });\n\n setSchema(() => newSchema);\n },\n [view, updateView, schema],\n );\n\n const handleToggleField = useCallback((column: Pipeline.Column) => {\n setExpandedId((prevExpandedId) =>\n prevExpandedId === column.view.dxn.toString() ? undefined : column.view.dxn.toString(),\n );\n }, []);\n\n const handleDelete = useCallback(\n async (column: Pipeline.Column) => {\n if (column.view.dxn.toString() === expandedId) {\n setExpandedId(undefined);\n }\n\n const index = columns.findIndex((l) => l === column);\n const viewToRemove = await column.view.load();\n updateColumns((columns) => {\n columns.splice(index, 1);\n });\n space?.db.remove(viewToRemove);\n },\n [expandedId, columns, updateColumns, space],\n );\n\n const handleAdd = useCallback(() => {\n if (!space) {\n return;\n }\n const newView = View.make({\n query: Query.select(Filter.type(Task.Task)),\n jsonSchema: Type.toJsonSchema(Task.Task),\n });\n space.db.add(newView);\n updateColumns((columns) => {\n columns.push({\n name: 'Tasks',\n // Type assertion needed due to QueryAST type variance.\n view: Ref.make(newView) as (typeof columns)[number]['view'],\n order: [],\n });\n });\n setExpandedId(newView.id);\n }, [space, updateColumns]);\n\n const handleColumnSave = useCallback(\n (values: Schema.Schema.Type<typeof ColumnFormSchema>) => {\n if (column) {\n const columnIndex = columns.findIndex((c) => c === column);\n updateColumns((columns) => {\n columns[columnIndex].name = values.name;\n });\n }\n },\n [column, columns, updateColumns],\n );\n\n return (\n <div role='none' className={mx('plb-cardSpacingBlock overflow-y-auto', classNames)}>\n <h2 className='text-sm text-description plb-1'>{t('views label')}</h2>\n\n <List.Root<Pipeline.Column>\n items={columns}\n isItem={Schema.is(Pipeline.Column)}\n getId={(column) => column.view.dxn.toString()}\n onMove={handleMove}\n >\n {({ items: columns }) => (\n <>\n <div role='list' className={mx(listGrid)}>\n {columns.map((column) => (\n <List.Item<Pipeline.Column>\n key={column.view.dxn.toString()}\n item={column}\n classNames={listItemGrid}\n aria-expanded={expandedId === column.view.dxn.toString()}\n >\n <div role='none' className={mx(subtleHover, listItemGrid, 'rounded-sm cursor-pointer min-bs-10')}>\n <List.ItemDragHandle />\n <List.ItemTitle onClick={() => handleToggleField(column)}>{column.name}</List.ItemTitle>\n <List.ItemDeleteButton\n label={t('delete view label')}\n autoHide={false}\n onClick={() => handleDelete(column)}\n data-testid='view.delete'\n />\n <IconButton\n iconOnly\n variant='ghost'\n label={t('toggle expand label', { ns: osTranslations })}\n icon={\n expandedId === column.view.dxn.toString()\n ? 'ph--caret-down--regular'\n : 'ph--caret-right--regular'\n }\n onClick={() => handleToggleField(column)}\n />\n </div>\n {expandedId === column.view.dxn.toString() && column?.view.target && (\n <div role='none' className='col-span-5 mlb-2 border border-separator rounded-md'>\n <Form.Root schema={ColumnFormSchema} values={column} autoSave onSave={handleColumnSave}>\n <Form.Content>\n <Form.FieldSet />\n </Form.Content>\n </Form.Root>\n <ViewEditor\n ref={projectionRef}\n mode='tag'\n readonly\n schema={schema}\n view={column.view.target}\n registry={space?.db.schemaRegistry}\n tags={tags}\n types={types}\n onQueryChanged={handleQueryChanged}\n />\n </div>\n )}\n </List.Item>\n ))}\n </div>\n </>\n )}\n </List.Root>\n\n <div role='none' className='mlb-cardSpacingBlock'>\n <IconButton icon='ph--plus--regular' label={t('add view label')} onClick={handleAdd} classNames='is-full' />\n </div>\n </div>\n );\n};\n\nexport default PipelineObjectSettings;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Schema", "React", "useCallback", "useMemo", "useRef", "useState", "DXN", "Filter", "Query", "Ref", "Tag", "Type", "useTypeOptions", "resolveSchemaWithRegistry", "getSpace", "useObject", "useQuery", "IconButton", "useAsyncEffect", "useTranslation", "Form", "ViewEditor", "List", "View", "Pipeline", "Task", "mx", "osTranslations", "subtleHover", "arrayMove", "listGrid", "listItemGrid", "ColumnFormSchema", "Pipeline", "Column", "pipe", "mutable", "pick", "PipelineObjectSettings", "classNames", "pipeline", "t", "useTranslation", "meta", "id", "space", "getSpace", "expandedId", "setExpandedId", "useState", "columns", "updateColumns", "useObject", "column", "useMemo", "find", "view", "dxn", "toString", "updateView", "schema", "setSchema", "Struct", "projectionRef", "useRef", "tags", "useQuery", "db", "Filter", "type", "Tag", "types", "useTypeOptions", "annotation", "location", "kind", "registered", "useAsyncEffect", "query", "foundSchema", "resolveSchemaWithRegistry", "schemaRegistry", "ast", "handleMove", "useCallback", "fromIndex", "toIndex", "arrayMove", "handleQueryChanged", "newQuery", "target", "queue", "DXN", "tryParse", "undefined", "Query", "fromAst", "options", "queues", "newSchema", "newView", "View", "make", "jsonSchema", "Type", "toJsonSchema", "projection", "handleToggleField", "prevExpandedId", "handleDelete", "index", "findIndex", "l", "viewToRemove", "load", "splice", "remove", "handleAdd", "select", "Task", "add", "push", "name", "Ref", "order", "handleColumnSave", "values", "columnIndex", "c", "div", "role", "className", "mx", "h2", "List", "Root", "items", "isItem", "is", "getId", "onMove", "map", "Item", "key", "item", "aria-expanded", "subtleHover", "ItemDragHandle", "ItemTitle", "onClick", "ItemDeleteButton", "label", "autoHide", "data-testid", "IconButton", "iconOnly", "variant", "ns", "osTranslations", "icon", "Form", "autoSave", "onSave", "Content", "FieldSet", "ViewEditor", "ref", "mode", "readonly", "registry", "onQueryChanged"]
|
|
7
|
+
}
|
|
@@ -40,7 +40,7 @@ var operation_resolver_default = Capability2.makeModule(() => Effect.succeed(Cap
|
|
|
40
40
|
|
|
41
41
|
// src/capabilities/react-surface/index.ts
|
|
42
42
|
import { Capability as Capability3 } from "@dxos/app-framework";
|
|
43
|
-
var ReactSurface = Capability3.lazy("ReactSurface", () => import("./react-surface-
|
|
43
|
+
var ReactSurface = Capability3.lazy("ReactSurface", () => import("./react-surface-CMTEEE6F.mjs"));
|
|
44
44
|
|
|
45
45
|
// src/translations.ts
|
|
46
46
|
import { Pipeline as Pipeline2 } from "@dxos/types";
|