@dxos/plugin-pipeline 0.8.4-main.c351d160a8 → 0.8.4-main.d9fc60f731
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +102 -5
- package/PLUGIN.mdl +345 -0
- package/README.md +1 -1
- package/dist/lib/neutral/PipelineArticle-6JIVXMYF.mjs +69 -0
- package/dist/lib/neutral/PipelineArticle-6JIVXMYF.mjs.map +7 -0
- package/dist/lib/neutral/PipelinePlugin.mjs +38 -0
- package/dist/lib/neutral/PipelinePlugin.mjs.map +7 -0
- package/dist/lib/neutral/PipelinePlugin.node.mjs +21 -0
- package/dist/lib/neutral/PipelinePlugin.node.mjs.map +7 -0
- package/dist/lib/neutral/PipelinePlugin.workerd.mjs +16 -0
- package/dist/lib/neutral/PipelinePlugin.workerd.mjs.map +7 -0
- package/dist/lib/{browser/PipelineObjectSettings-QFMIKJH5.mjs → neutral/PipelineProperties-JXY3AVOY.mjs} +54 -65
- package/dist/lib/neutral/PipelineProperties-JXY3AVOY.mjs.map +7 -0
- package/dist/lib/neutral/app-graph-builder-ZLGRWRJU.mjs +44 -0
- package/dist/lib/neutral/app-graph-builder-ZLGRWRJU.mjs.map +7 -0
- package/dist/lib/neutral/capabilities/index.mjs +11 -0
- package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
- package/dist/lib/neutral/chunk-CYXDAAKN.mjs +35 -0
- package/dist/lib/neutral/chunk-CYXDAAKN.mjs.map +7 -0
- package/dist/lib/neutral/components/index.mjs +203 -0
- package/dist/lib/neutral/components/index.mjs.map +7 -0
- package/dist/lib/neutral/containers/index.mjs +9 -0
- package/dist/lib/neutral/containers/index.mjs.map +7 -0
- package/dist/lib/neutral/create-object-6Z4MMGX4.mjs +26 -0
- package/dist/lib/neutral/create-object-6Z4MMGX4.mjs.map +7 -0
- package/dist/lib/neutral/hooks/index.mjs +70 -0
- package/dist/lib/neutral/hooks/index.mjs.map +7 -0
- package/dist/lib/neutral/index.mjs +7 -0
- package/dist/lib/neutral/meta.json +1 -0
- package/dist/lib/neutral/meta.mjs +7 -0
- package/dist/lib/neutral/meta.mjs.map +7 -0
- package/dist/lib/neutral/plugin.mjs +11 -0
- package/dist/lib/neutral/plugin.mjs.map +7 -0
- package/dist/lib/{browser/react-surface-7PY3UOEA.mjs → neutral/react-surface-QG7QSZSS.mjs} +12 -24
- package/dist/lib/neutral/react-surface-QG7QSZSS.mjs.map +7 -0
- package/dist/lib/neutral/translations.mjs +39 -0
- package/dist/lib/neutral/translations.mjs.map +7 -0
- package/dist/lib/neutral/types/index.mjs.map +7 -0
- package/dist/types/src/PipelinePlugin.d.ts +1 -0
- package/dist/types/src/PipelinePlugin.d.ts.map +1 -1
- package/dist/types/src/PipelinePlugin.node.d.ts +4 -0
- package/dist/types/src/PipelinePlugin.node.d.ts.map +1 -0
- package/dist/types/src/PipelinePlugin.test.d.ts +2 -0
- package/dist/types/src/PipelinePlugin.test.d.ts.map +1 -0
- package/dist/types/src/PipelinePlugin.workerd.d.ts +4 -0
- package/dist/types/src/PipelinePlugin.workerd.d.ts.map +1 -0
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
- package/dist/types/src/capabilities/create-object.d.ts +11 -0
- package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +9 -3
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
- package/dist/types/src/components/PipelineComponent/PipelineColumn.d.ts +4 -4
- package/dist/types/src/components/PipelineComponent/PipelineColumn.d.ts.map +1 -1
- package/dist/types/src/components/PipelineComponent/PipelineComponent.d.ts +22 -16
- package/dist/types/src/components/PipelineComponent/PipelineComponent.d.ts.map +1 -1
- package/dist/types/src/components/PipelineComponent/PipelineComponent.stories.d.ts +44 -25
- package/dist/types/src/components/PipelineComponent/PipelineComponent.stories.d.ts.map +1 -1
- package/dist/types/src/containers/PipelineArticle/PipelineArticle.d.ts +6 -0
- package/dist/types/src/containers/PipelineArticle/PipelineArticle.d.ts.map +1 -0
- package/dist/types/src/containers/PipelineArticle/PipelineArticle.stories.d.ts +76 -0
- package/dist/types/src/containers/PipelineArticle/PipelineArticle.stories.d.ts.map +1 -0
- package/dist/types/src/containers/PipelineArticle/index.d.ts +2 -0
- package/dist/types/src/containers/PipelineArticle/index.d.ts.map +1 -0
- package/dist/types/src/containers/PipelineProperties/PipelineProperties.d.ts +11 -0
- package/dist/types/src/containers/PipelineProperties/PipelineProperties.d.ts.map +1 -0
- package/dist/types/src/containers/PipelineProperties/index.d.ts +2 -0
- package/dist/types/src/containers/PipelineProperties/index.d.ts.map +1 -0
- package/dist/types/src/containers/index.d.ts +2 -2
- package/dist/types/src/containers/index.d.ts.map +1 -1
- package/dist/types/src/hooks/usePipelineBoardModel.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +0 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +1 -1
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/plugin.d.ts +3 -0
- package/dist/types/src/plugin.d.ts.map +1 -0
- package/dist/types/src/templates/research.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +44 -26
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +103 -58
- package/src/PipelinePlugin.node.ts +19 -0
- package/src/PipelinePlugin.test.ts +27 -0
- package/src/PipelinePlugin.tsx +12 -19
- package/src/PipelinePlugin.workerd.ts +16 -0
- package/src/capabilities/app-graph-builder.ts +40 -0
- package/src/capabilities/create-object.ts +30 -0
- package/src/capabilities/index.ts +5 -3
- package/src/capabilities/{react-surface/react-surface.tsx → react-surface.tsx} +13 -15
- package/src/components/PipelineComponent/PipelineColumn.tsx +69 -55
- package/src/components/PipelineComponent/PipelineComponent.stories.tsx +18 -20
- package/src/components/PipelineComponent/PipelineComponent.tsx +22 -13
- package/src/containers/{PipelineContainer/PipelineContainer.stories.tsx → PipelineArticle/PipelineArticle.stories.tsx} +43 -47
- package/src/containers/{PipelineContainer/PipelineContainer.tsx → PipelineArticle/PipelineArticle.tsx} +12 -14
- package/src/containers/PipelineArticle/index.ts +5 -0
- package/src/containers/{PipelineObjectSettings/PipelineObjectSettings.tsx → PipelineProperties/PipelineProperties.tsx} +66 -70
- package/src/containers/PipelineProperties/index.ts +5 -0
- package/src/containers/index.ts +2 -2
- package/src/hooks/usePipelineBoardModel.ts +6 -6
- package/src/index.ts +0 -1
- package/src/meta.ts +19 -6
- package/src/plugin.ts +9 -0
- package/src/templates/research.ts +2 -2
- package/src/translations.ts +24 -23
- package/src/vite-env.d.ts +10 -0
- package/dist/lib/browser/PipelineContainer-V5KGYEQR.mjs +0 -318
- package/dist/lib/browser/PipelineContainer-V5KGYEQR.mjs.map +0 -7
- package/dist/lib/browser/PipelineObjectSettings-QFMIKJH5.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-QQKBLYFD.mjs +0 -56
- package/dist/lib/browser/app-graph-builder-QQKBLYFD.mjs.map +0 -7
- package/dist/lib/browser/chunk-3A235GUD.mjs +0 -21
- package/dist/lib/browser/chunk-3A235GUD.mjs.map +0 -7
- package/dist/lib/browser/index.mjs +0 -87
- package/dist/lib/browser/index.mjs.map +0 -7
- package/dist/lib/browser/meta.json +0 -1
- package/dist/lib/browser/react-surface-7PY3UOEA.mjs.map +0 -7
- package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +0 -1
- package/dist/types/src/capabilities/app-graph-builder/index.d.ts +0 -3
- package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/operation-resolver/index.d.ts +0 -2
- package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +0 -5
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-surface/index.d.ts +0 -3
- package/dist/types/src/capabilities/react-surface/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +0 -1
- package/dist/types/src/containers/PipelineContainer/PipelineContainer.d.ts +0 -6
- package/dist/types/src/containers/PipelineContainer/PipelineContainer.d.ts.map +0 -1
- package/dist/types/src/containers/PipelineContainer/PipelineContainer.stories.d.ts +0 -57
- package/dist/types/src/containers/PipelineContainer/PipelineContainer.stories.d.ts.map +0 -1
- package/dist/types/src/containers/PipelineContainer/index.d.ts +0 -3
- package/dist/types/src/containers/PipelineContainer/index.d.ts.map +0 -1
- package/dist/types/src/containers/PipelineObjectSettings/PipelineObjectSettings.d.ts +0 -11
- package/dist/types/src/containers/PipelineObjectSettings/PipelineObjectSettings.d.ts.map +0 -1
- package/dist/types/src/containers/PipelineObjectSettings/index.d.ts +0 -3
- package/dist/types/src/containers/PipelineObjectSettings/index.d.ts.map +0 -1
- package/src/capabilities/app-graph-builder/app-graph-builder.ts +0 -49
- package/src/capabilities/app-graph-builder/index.ts +0 -7
- package/src/capabilities/operation-resolver/index.ts +0 -5
- package/src/capabilities/operation-resolver/operation-resolver.ts +0 -9
- package/src/capabilities/react-surface/index.ts +0 -7
- package/src/containers/PipelineContainer/index.ts +0 -7
- package/src/containers/PipelineObjectSettings/index.ts +0 -7
- /package/dist/lib/{browser/types → neutral}/index.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/types/index.mjs +0 -0
- /package/dist/types/src/capabilities/{app-graph-builder/app-graph-builder.d.ts → app-graph-builder.d.ts} +0 -0
- /package/dist/types/src/capabilities/{react-surface/react-surface.d.ts → react-surface.d.ts} +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/PipelinePlugin.node.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\nimport { AppPlugin } from '@dxos/app-toolkit';\nimport { Pipeline } from '@dxos/types';\n\nimport { AppGraphBuilder, CreateObject } from '#capabilities';\nimport { meta } from '#meta';\n\nexport const PipelinePlugin = Plugin.define(meta).pipe(\n AppPlugin.addAppGraphModule({ activate: AppGraphBuilder }),\n AppPlugin.addCreateObjectModule({ activate: CreateObject }),\n AppPlugin.addSchemaModule({ schema: [Pipeline.Pipeline] }),\n Plugin.make,\n);\n\nexport default PipelinePlugin;\n"],
|
|
5
|
+
"mappings": ";AAIA,SAASA,cAAc;AACvB,SAASC,iBAAiB;AAC1B,SAASC,gBAAgB;AAEzB,SAASC,iBAAiBC,oBAAoB;AAC9C,SAASC,YAAY;AAEd,IAAMC,iBAAiBN,OAAOO,OAAOF,IAAAA,EAAMG,KAChDP,UAAUQ,kBAAkB;EAAEC,UAAUP;AAAgB,CAAA,GACxDF,UAAUU,sBAAsB;EAAED,UAAUN;AAAa,CAAA,GACzDH,UAAUW,gBAAgB;EAAEC,QAAQ;IAACX,SAASA;;AAAU,CAAA,GACxDF,OAAOc,IAAI;AAGb,IAAA,8BAAeR;",
|
|
6
|
+
"names": ["Plugin", "AppPlugin", "Pipeline", "AppGraphBuilder", "CreateObject", "meta", "PipelinePlugin", "define", "pipe", "addAppGraphModule", "activate", "addCreateObjectModule", "addSchemaModule", "schema", "make"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// src/PipelinePlugin.workerd.ts
|
|
2
|
+
import { Plugin } from "@dxos/app-framework";
|
|
3
|
+
import { AppPlugin } from "@dxos/app-toolkit";
|
|
4
|
+
import { Pipeline } from "@dxos/types";
|
|
5
|
+
import { meta } from "#meta";
|
|
6
|
+
var PipelinePlugin = Plugin.define(meta).pipe(AppPlugin.addSchemaModule({
|
|
7
|
+
schema: [
|
|
8
|
+
Pipeline.Pipeline
|
|
9
|
+
]
|
|
10
|
+
}), Plugin.make);
|
|
11
|
+
var PipelinePlugin_workerd_default = PipelinePlugin;
|
|
12
|
+
export {
|
|
13
|
+
PipelinePlugin,
|
|
14
|
+
PipelinePlugin_workerd_default as default
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=PipelinePlugin.workerd.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/PipelinePlugin.workerd.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\nimport { AppPlugin } from '@dxos/app-toolkit';\nimport { Pipeline } from '@dxos/types';\n\nimport { meta } from '#meta';\n\nexport const PipelinePlugin = Plugin.define(meta).pipe(\n AppPlugin.addSchemaModule({ schema: [Pipeline.Pipeline] }),\n Plugin.make,\n);\n\nexport default PipelinePlugin;\n"],
|
|
5
|
+
"mappings": ";AAIA,SAASA,cAAc;AACvB,SAASC,iBAAiB;AAC1B,SAASC,gBAAgB;AAEzB,SAASC,YAAY;AAEd,IAAMC,iBAAiBJ,OAAOK,OAAOF,IAAAA,EAAMG,KAChDL,UAAUM,gBAAgB;EAAEC,QAAQ;IAACN,SAASA;;AAAU,CAAA,GACxDF,OAAOS,IAAI;AAGb,IAAA,iCAAeL;",
|
|
6
|
+
"names": ["Plugin", "AppPlugin", "Pipeline", "meta", "PipelinePlugin", "define", "pipe", "addSchemaModule", "schema", "make"]
|
|
7
|
+
}
|
|
@@ -1,39 +1,36 @@
|
|
|
1
|
-
|
|
2
|
-
meta
|
|
3
|
-
} from "./chunk-3A235GUD.mjs";
|
|
4
|
-
|
|
5
|
-
// src/containers/PipelineObjectSettings/PipelineObjectSettings.tsx
|
|
1
|
+
// src/containers/PipelineProperties/PipelineProperties.tsx
|
|
6
2
|
import * as Schema from "effect/Schema";
|
|
7
3
|
import React, { useCallback, useMemo, useRef, useState } from "react";
|
|
8
|
-
import {
|
|
9
|
-
import { useTypeOptions } from "@dxos/
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
4
|
+
import { resolveSchemaWithRegistry } from "@dxos/app-toolkit/query";
|
|
5
|
+
import { useTypeOptions } from "@dxos/app-toolkit/ui";
|
|
6
|
+
import { EID, Filter, JsonSchema, Obj, Query, Ref, Scope, Tag } from "@dxos/echo";
|
|
7
|
+
import { useObject, useQuery } from "@dxos/react-client/echo";
|
|
12
8
|
import { IconButton, useAsyncEffect, useTranslation } from "@dxos/react-ui";
|
|
13
9
|
import { Form, ViewEditor } from "@dxos/react-ui-form";
|
|
14
10
|
import { List } from "@dxos/react-ui-list";
|
|
15
11
|
import { ViewModel } from "@dxos/schema";
|
|
16
12
|
import { Pipeline } from "@dxos/types";
|
|
17
|
-
import { mx, osTranslations
|
|
13
|
+
import { mx, osTranslations } from "@dxos/ui-theme";
|
|
18
14
|
import { arrayMove } from "@dxos/util";
|
|
15
|
+
import { meta } from "#meta";
|
|
19
16
|
var listGrid = "grid grid-cols-[min-content_1fr_min-content_min-content_min-content]";
|
|
20
17
|
var listItemGrid = "grid grid-cols-subgrid col-span-5";
|
|
21
18
|
var ColumnFormSchema = Pipeline.Column.pipe(Schema.mutable, Schema.pick("name"));
|
|
22
|
-
var
|
|
19
|
+
var PipelineProperties = ({ classNames, pipeline }) => {
|
|
23
20
|
const { t } = useTranslation(meta.id);
|
|
24
|
-
const
|
|
21
|
+
const db = Obj.getDatabase(pipeline);
|
|
25
22
|
const [expandedId, setExpandedId] = useState();
|
|
26
23
|
const [columns, updateColumns] = useObject(pipeline, "columns");
|
|
27
|
-
const column = useMemo(() => columns.find((column2) => column2.view.
|
|
24
|
+
const column = useMemo(() => columns.find((column2) => column2.view.uri === expandedId), [
|
|
28
25
|
columns,
|
|
29
26
|
expandedId
|
|
30
27
|
]);
|
|
31
28
|
const [view, updateView] = useObject(column?.view);
|
|
32
|
-
const [
|
|
29
|
+
const [type, setType] = useState();
|
|
33
30
|
const projectionRef = useRef(null);
|
|
34
|
-
const tags = useQuery(
|
|
31
|
+
const tags = useQuery(db, Filter.type(Tag.Tag));
|
|
35
32
|
const types = useTypeOptions({
|
|
36
|
-
|
|
33
|
+
db,
|
|
37
34
|
annotation: {
|
|
38
35
|
location: [
|
|
39
36
|
"database",
|
|
@@ -45,17 +42,17 @@ var PipelineObjectSettings = ({ classNames, pipeline }) => {
|
|
|
45
42
|
}
|
|
46
43
|
});
|
|
47
44
|
useAsyncEffect(async () => {
|
|
48
|
-
if (!view?.query || !
|
|
45
|
+
if (!view?.query || !db) {
|
|
49
46
|
return;
|
|
50
47
|
}
|
|
51
|
-
const
|
|
52
|
-
if (
|
|
53
|
-
|
|
48
|
+
const foundType = await resolveSchemaWithRegistry(db, view.query.ast);
|
|
49
|
+
if (foundType && foundType !== type) {
|
|
50
|
+
setType(() => foundType);
|
|
54
51
|
}
|
|
55
52
|
}, [
|
|
56
|
-
|
|
53
|
+
db,
|
|
57
54
|
view,
|
|
58
|
-
|
|
55
|
+
type
|
|
59
56
|
]);
|
|
60
57
|
const handleMove = useCallback((fromIndex, toIndex) => updateColumns((columns2) => {
|
|
61
58
|
arrayMove(columns2, fromIndex, toIndex);
|
|
@@ -63,34 +60,33 @@ var PipelineObjectSettings = ({ classNames, pipeline }) => {
|
|
|
63
60
|
updateColumns
|
|
64
61
|
]);
|
|
65
62
|
const handleQueryChanged = useCallback(async (newQuery, target) => {
|
|
66
|
-
if (!view || !
|
|
63
|
+
if (!view || !db) {
|
|
67
64
|
return;
|
|
68
65
|
}
|
|
69
|
-
const queue = target
|
|
70
|
-
const query = queue ? Query.fromAst(newQuery).from(
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
]
|
|
74
|
-
}) : Query.fromAst(newQuery);
|
|
66
|
+
const queue = target;
|
|
67
|
+
const query = queue ? Query.fromAst(newQuery).from([
|
|
68
|
+
Scope.feed(`dxn:queue:data:${EID.getSpaceId(queue)}:${EID.getEntityId(queue)}`)
|
|
69
|
+
]) : Query.fromAst(newQuery);
|
|
75
70
|
updateView((view2) => {
|
|
76
71
|
view2.query.ast = query.ast;
|
|
77
72
|
});
|
|
78
|
-
const
|
|
79
|
-
if (!
|
|
73
|
+
const newType = await resolveSchemaWithRegistry(db, query.ast);
|
|
74
|
+
if (!newType) {
|
|
80
75
|
return;
|
|
81
76
|
}
|
|
82
77
|
const newView = ViewModel.make({
|
|
83
78
|
query,
|
|
84
|
-
jsonSchema:
|
|
79
|
+
jsonSchema: newType.jsonSchema
|
|
85
80
|
});
|
|
86
81
|
updateView((view2) => {
|
|
87
82
|
view2.projection = Obj.getSnapshot(newView).projection;
|
|
88
83
|
});
|
|
89
|
-
|
|
84
|
+
setType(() => newType);
|
|
90
85
|
}, [
|
|
86
|
+
db,
|
|
91
87
|
view,
|
|
92
88
|
updateView,
|
|
93
|
-
|
|
89
|
+
type
|
|
94
90
|
]);
|
|
95
91
|
const handleColumnValuesChanged = useCallback((column2) => (newValues, { changed }) => {
|
|
96
92
|
if (changed["name"]) {
|
|
@@ -107,10 +103,10 @@ var PipelineObjectSettings = ({ classNames, pipeline }) => {
|
|
|
107
103
|
updateColumns
|
|
108
104
|
]);
|
|
109
105
|
const handleToggleField = useCallback((column2) => {
|
|
110
|
-
setExpandedId((prevExpandedId) => prevExpandedId === column2.view.
|
|
106
|
+
setExpandedId((prevExpandedId) => prevExpandedId === column2.view.uri ? void 0 : column2.view.uri);
|
|
111
107
|
}, []);
|
|
112
108
|
const handleDelete = useCallback(async (column2) => {
|
|
113
|
-
if (column2.view.
|
|
109
|
+
if (column2.view.uri === expandedId) {
|
|
114
110
|
setExpandedId(void 0);
|
|
115
111
|
}
|
|
116
112
|
const index = columns.findIndex((l) => l === column2);
|
|
@@ -118,22 +114,22 @@ var PipelineObjectSettings = ({ classNames, pipeline }) => {
|
|
|
118
114
|
updateColumns((columns2) => {
|
|
119
115
|
columns2.splice(index, 1);
|
|
120
116
|
});
|
|
121
|
-
|
|
117
|
+
db?.remove(viewToRemove);
|
|
122
118
|
}, [
|
|
123
119
|
expandedId,
|
|
124
120
|
columns,
|
|
125
121
|
updateColumns,
|
|
126
|
-
|
|
122
|
+
db
|
|
127
123
|
]);
|
|
128
124
|
const handleAdd = useCallback(() => {
|
|
129
|
-
if (!
|
|
125
|
+
if (!db) {
|
|
130
126
|
return;
|
|
131
127
|
}
|
|
132
128
|
const newView = ViewModel.make({
|
|
133
129
|
query: Query.select(Filter.nothing()),
|
|
134
130
|
jsonSchema: JsonSchema.toJsonSchema(Schema.Struct({}))
|
|
135
131
|
});
|
|
136
|
-
|
|
132
|
+
db.add(newView);
|
|
137
133
|
updateColumns((columns2) => {
|
|
138
134
|
columns2.push({
|
|
139
135
|
name: "",
|
|
@@ -144,77 +140,70 @@ var PipelineObjectSettings = ({ classNames, pipeline }) => {
|
|
|
144
140
|
});
|
|
145
141
|
setExpandedId(newView.id);
|
|
146
142
|
}, [
|
|
147
|
-
|
|
143
|
+
db,
|
|
148
144
|
updateColumns
|
|
149
145
|
]);
|
|
150
146
|
return /* @__PURE__ */ React.createElement("div", {
|
|
151
|
-
role: "none",
|
|
152
147
|
className: mx("py-form-padding overflow-y-auto", classNames)
|
|
153
148
|
}, /* @__PURE__ */ React.createElement("h2", {
|
|
154
149
|
className: "text-sm text-description py-1"
|
|
155
|
-
}, t("views
|
|
150
|
+
}, t("views.label")), /* @__PURE__ */ React.createElement(List.Root, {
|
|
156
151
|
items: columns,
|
|
157
152
|
isItem: Schema.is(Pipeline.Column),
|
|
158
|
-
getId: (column2) => column2.view.
|
|
153
|
+
getId: (column2) => column2.view.uri,
|
|
159
154
|
onMove: handleMove
|
|
160
155
|
}, ({ items: columns2 }) => /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("div", {
|
|
161
156
|
role: "list",
|
|
162
157
|
className: mx(listGrid)
|
|
163
158
|
}, columns2.map((column2) => /* @__PURE__ */ React.createElement(List.Item, {
|
|
164
|
-
key: column2.view.
|
|
159
|
+
key: column2.view.uri,
|
|
165
160
|
item: column2,
|
|
166
161
|
classNames: listItemGrid,
|
|
167
|
-
"aria-expanded": expandedId === column2.view.
|
|
162
|
+
"aria-expanded": expandedId === column2.view.uri
|
|
168
163
|
}, /* @__PURE__ */ React.createElement("div", {
|
|
169
|
-
|
|
170
|
-
className: mx(subtleHover, listItemGrid, "rounded-xs cursor-pointer min-h-10")
|
|
164
|
+
className: mx(listItemGrid, "dx-hover rounded-xs cursor-pointer min-h-10")
|
|
171
165
|
}, /* @__PURE__ */ React.createElement(List.ItemDragHandle, null), /* @__PURE__ */ React.createElement(List.ItemTitle, {
|
|
172
166
|
onClick: () => handleToggleField(column2)
|
|
173
|
-
}, column2.name || t("untitled
|
|
174
|
-
label: t("delete
|
|
167
|
+
}, column2.name || t("untitled-view.title")), /* @__PURE__ */ React.createElement(List.ItemDeleteButton, {
|
|
168
|
+
label: t("delete-view.label"),
|
|
175
169
|
autoHide: false,
|
|
176
170
|
onClick: () => handleDelete(column2),
|
|
177
171
|
"data-testid": "view.delete"
|
|
178
172
|
}), /* @__PURE__ */ React.createElement(IconButton, {
|
|
179
173
|
iconOnly: true,
|
|
180
174
|
variant: "ghost",
|
|
181
|
-
label: t("toggle
|
|
175
|
+
label: t("toggle-expand.label", {
|
|
182
176
|
ns: osTranslations
|
|
183
177
|
}),
|
|
184
|
-
icon: expandedId === column2.view.
|
|
178
|
+
icon: expandedId === column2.view.uri ? "ph--caret-down--regular" : "ph--caret-right--regular",
|
|
185
179
|
onClick: () => handleToggleField(column2)
|
|
186
|
-
})), expandedId === column2.view.
|
|
187
|
-
role: "none",
|
|
180
|
+
})), expandedId === column2.view.uri && column2?.view.target && /* @__PURE__ */ React.createElement("div", {
|
|
188
181
|
className: "col-span-5 my-2 border border-separator rounded-md"
|
|
189
182
|
}, /* @__PURE__ */ React.createElement(Form.Root, {
|
|
190
183
|
schema: ColumnFormSchema,
|
|
191
184
|
values: column2,
|
|
192
185
|
onValuesChanged: handleColumnValuesChanged(column2)
|
|
193
|
-
}, /* @__PURE__ */ React.createElement(Form.Content, null, /* @__PURE__ */ React.createElement(Form.FieldSet, null))), /* @__PURE__ */ React.createElement(ViewEditor, {
|
|
186
|
+
}, /* @__PURE__ */ React.createElement(Form.Content, null, /* @__PURE__ */ React.createElement(Form.FieldSet, null))), type && /* @__PURE__ */ React.createElement(ViewEditor, {
|
|
194
187
|
ref: projectionRef,
|
|
195
188
|
mode: "tag",
|
|
196
189
|
readonly: true,
|
|
197
|
-
|
|
190
|
+
type,
|
|
198
191
|
view: column2.view.target,
|
|
199
|
-
registry:
|
|
200
|
-
db
|
|
192
|
+
registry: db?.graph.registry,
|
|
193
|
+
db,
|
|
201
194
|
tags,
|
|
202
195
|
types,
|
|
203
196
|
onQueryChanged: handleQueryChanged
|
|
204
197
|
}))))))), /* @__PURE__ */ React.createElement("div", {
|
|
205
|
-
role: "none",
|
|
206
198
|
className: "my-form-padding"
|
|
207
199
|
}, /* @__PURE__ */ React.createElement(IconButton, {
|
|
208
200
|
icon: "ph--plus--regular",
|
|
209
|
-
label: t("add
|
|
201
|
+
label: t("add-view.label"),
|
|
210
202
|
onClick: handleAdd,
|
|
211
203
|
classNames: "w-full"
|
|
212
204
|
})));
|
|
213
205
|
};
|
|
214
|
-
|
|
215
|
-
// src/containers/PipelineObjectSettings/index.ts
|
|
216
|
-
var PipelineObjectSettings_default = PipelineObjectSettings;
|
|
217
206
|
export {
|
|
218
|
-
|
|
207
|
+
PipelineProperties as default
|
|
219
208
|
};
|
|
220
|
-
//# sourceMappingURL=
|
|
209
|
+
//# sourceMappingURL=PipelineProperties-JXY3AVOY.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/containers/PipelineProperties/PipelineProperties.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 { resolveSchemaWithRegistry } from '@dxos/app-toolkit/query';\nimport { useTypeOptions } from '@dxos/app-toolkit/ui';\nimport { EID, Filter, JsonSchema, Obj, Query, type QueryAST, Ref, Scope, Tag, type Type } from '@dxos/echo';\nimport { type JsonPath, type Mutable } from '@dxos/echo/internal';\nimport { 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, ViewModel } from '@dxos/schema';\nimport { Pipeline } from '@dxos/types';\nimport { mx, osTranslations } 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\nexport type PipelinePropertiesProps = ThemedClassName<{\n pipeline: Pipeline.Pipeline;\n}>;\n\n/**\n * Supports editing the pipeline view.\n */\nexport const PipelineProperties = ({ classNames, pipeline }: PipelinePropertiesProps) => {\n const { t } = useTranslation(meta.id);\n const db = Obj.getDatabase(pipeline);\n const [expandedId, setExpandedId] = useState<string>();\n const [columns, updateColumns] = useObject(pipeline, 'columns');\n const column = useMemo(() => columns.find((column) => column.view.uri === expandedId), [columns, expandedId]);\n const [view, updateView] = useObject(column?.view);\n const [type, setType] = useState<Type.AnyEntity>();\n const projectionRef = useRef<ProjectionModel>(null);\n const tags = useQuery(db, Filter.type(Tag.Tag));\n const types = useTypeOptions({\n db,\n annotation: {\n location: ['database', 'runtime'],\n kind: ['user'],\n },\n });\n\n useAsyncEffect(async () => {\n if (!view?.query || !db) {\n return;\n }\n\n const foundType = await resolveSchemaWithRegistry(db, view.query.ast);\n if (foundType && foundType !== type) {\n setType(() => foundType);\n }\n }, [db, view, type]);\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?: EID.EID) => {\n if (!view || !db) {\n return;\n }\n\n const queue = target;\n const query = queue\n ? Query.fromAst(newQuery).from([\n Scope.feed(`dxn:queue:data:${EID.getSpaceId(queue)}:${EID.getEntityId(queue)}`),\n ])\n : Query.fromAst(newQuery);\n updateView((view) => {\n view.query.ast = query.ast as Mutable<typeof query.ast>;\n });\n const newType = await resolveSchemaWithRegistry(db, query.ast);\n if (!newType) {\n return;\n }\n\n const newView = ViewModel.make({\n query,\n jsonSchema: newType.jsonSchema,\n });\n updateView((view) => {\n view.projection = Obj.getSnapshot(newView).projection as Mutable<typeof view.projection>;\n });\n\n setType(() => newType);\n },\n [db, view, updateView, type],\n );\n\n const handleColumnValuesChanged = useCallback(\n (column: Pipeline.Column) =>\n (newValues: { name?: string }, { changed }: { changed: Record<JsonPath, boolean> }) => {\n if (changed['name' as JsonPath]) {\n const columnIndex = columns.findIndex((c) => c === column);\n if (columnIndex === -1) {\n return;\n }\n updateColumns((cols) => {\n cols[columnIndex].name = newValues.name ?? '';\n });\n }\n },\n [columns, updateColumns],\n );\n\n const handleToggleField = useCallback((column: Pipeline.Column) => {\n setExpandedId((prevExpandedId) => (prevExpandedId === column.view.uri ? undefined : column.view.uri));\n }, []);\n\n const handleDelete = useCallback(\n async (column: Pipeline.Column) => {\n if (column.view.uri === 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 db?.remove(viewToRemove);\n },\n [expandedId, columns, updateColumns, db],\n );\n\n const handleAdd = useCallback(() => {\n if (!db) {\n return;\n }\n const newView = ViewModel.make({\n query: Query.select(Filter.nothing()),\n jsonSchema: JsonSchema.toJsonSchema(Schema.Struct({})),\n });\n db.add(newView);\n updateColumns((columns) => {\n columns.push({\n name: '',\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 }, [db, updateColumns]);\n\n return (\n <div className={mx('py-form-padding overflow-y-auto', classNames)}>\n <h2 className='text-sm text-description py-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.uri}\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.uri}\n item={column}\n classNames={listItemGrid}\n aria-expanded={expandedId === column.view.uri}\n >\n <div className={mx(listItemGrid, 'dx-hover rounded-xs cursor-pointer min-h-10')}>\n <List.ItemDragHandle />\n <List.ItemTitle onClick={() => handleToggleField(column)}>\n {column.name || t('untitled-view.title')}\n </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={expandedId === column.view.uri ? 'ph--caret-down--regular' : 'ph--caret-right--regular'}\n onClick={() => handleToggleField(column)}\n />\n </div>\n {expandedId === column.view.uri && column?.view.target && (\n <div className='col-span-5 my-2 border border-separator rounded-md'>\n <Form.Root\n schema={ColumnFormSchema}\n values={column}\n onValuesChanged={handleColumnValuesChanged(column)}\n >\n <Form.Content>\n <Form.FieldSet />\n </Form.Content>\n </Form.Root>\n {type && (\n <ViewEditor\n ref={projectionRef}\n mode='tag'\n readonly\n type={type}\n view={column.view.target}\n registry={db?.graph.registry}\n db={db}\n tags={tags}\n types={types}\n onQueryChanged={handleQueryChanged}\n />\n )}\n </div>\n )}\n </List.Item>\n ))}\n </div>\n </>\n )}\n </List.Root>\n\n <div className='my-form-padding'>\n <IconButton icon='ph--plus--regular' label={t('add-view.label')} onClick={handleAdd} classNames='w-full' />\n </div>\n </div>\n );\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Schema", "React", "useCallback", "useMemo", "useRef", "useState", "resolveSchemaWithRegistry", "useTypeOptions", "EID", "Filter", "JsonSchema", "Obj", "Query", "Ref", "Scope", "Tag", "useObject", "useQuery", "IconButton", "useAsyncEffect", "useTranslation", "Form", "ViewEditor", "List", "ViewModel", "Pipeline", "mx", "osTranslations", "arrayMove", "meta", "listGrid", "listItemGrid", "ColumnFormSchema", "Column", "pipe", "mutable", "pick", "PipelineProperties", "classNames", "pipeline", "t", "id", "db", "getDatabase", "expandedId", "setExpandedId", "columns", "updateColumns", "column", "find", "view", "uri", "updateView", "type", "setType", "projectionRef", "tags", "types", "annotation", "location", "kind", "query", "foundType", "ast", "handleMove", "fromIndex", "toIndex", "handleQueryChanged", "newQuery", "target", "queue", "fromAst", "from", "feed", "getSpaceId", "getEntityId", "newType", "newView", "make", "jsonSchema", "projection", "getSnapshot", "handleColumnValuesChanged", "newValues", "changed", "columnIndex", "findIndex", "c", "cols", "name", "handleToggleField", "prevExpandedId", "undefined", "handleDelete", "index", "l", "viewToRemove", "load", "splice", "remove", "handleAdd", "select", "nothing", "toJsonSchema", "Struct", "add", "push", "order", "div", "className", "h2", "Root", "items", "isItem", "is", "getId", "onMove", "role", "map", "Item", "key", "item", "aria-expanded", "ItemDragHandle", "ItemTitle", "onClick", "ItemDeleteButton", "label", "autoHide", "data-testid", "iconOnly", "variant", "ns", "icon", "schema", "values", "onValuesChanged", "Content", "FieldSet", "ref", "mode", "readonly", "registry", "graph", "onQueryChanged"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// src/capabilities/app-graph-builder.ts
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import { Capability } from "@dxos/app-framework";
|
|
4
|
+
import { AppCapabilities, AppNode } from "@dxos/app-toolkit";
|
|
5
|
+
import { GraphBuilder } from "@dxos/plugin-graph";
|
|
6
|
+
import { Pipeline } from "@dxos/types";
|
|
7
|
+
import { meta } from "#meta";
|
|
8
|
+
var app_graph_builder_default = Capability.makeModule(Effect.fnUntraced(function* () {
|
|
9
|
+
const extensions = yield* Effect.all([
|
|
10
|
+
GraphBuilder.createTypeExtension({
|
|
11
|
+
id: "triggers",
|
|
12
|
+
type: Pipeline.Pipeline,
|
|
13
|
+
connector: () => Effect.succeed([
|
|
14
|
+
AppNode.makeCompanion({
|
|
15
|
+
id: "invocations",
|
|
16
|
+
label: [
|
|
17
|
+
"pipeline-invocations.label",
|
|
18
|
+
{
|
|
19
|
+
ns: meta.id
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
icon: "ph--clock-countdown--regular",
|
|
23
|
+
data: "invocations"
|
|
24
|
+
}),
|
|
25
|
+
AppNode.makeCompanion({
|
|
26
|
+
id: "automation",
|
|
27
|
+
label: [
|
|
28
|
+
"pipeline-automation.label",
|
|
29
|
+
{
|
|
30
|
+
ns: meta.id
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
icon: "ph--lightning--regular",
|
|
34
|
+
data: "automation"
|
|
35
|
+
})
|
|
36
|
+
])
|
|
37
|
+
})
|
|
38
|
+
]);
|
|
39
|
+
return Capability.contributes(AppCapabilities.AppGraphBuilder, extensions);
|
|
40
|
+
}));
|
|
41
|
+
export {
|
|
42
|
+
app_graph_builder_default as default
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=app-graph-builder-ZLGRWRJU.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/capabilities/app-graph-builder.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppCapabilities, AppNode } from '@dxos/app-toolkit';\nimport { GraphBuilder } from '@dxos/plugin-graph';\nimport { Pipeline } from '@dxos/types';\n\nimport { meta } from '#meta';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const extensions = yield* Effect.all([\n GraphBuilder.createTypeExtension({\n id: 'triggers',\n type: Pipeline.Pipeline,\n connector: () =>\n Effect.succeed([\n AppNode.makeCompanion({\n id: 'invocations',\n label: ['pipeline-invocations.label', { ns: meta.id }],\n icon: 'ph--clock-countdown--regular',\n data: 'invocations',\n }),\n AppNode.makeCompanion({\n id: 'automation',\n label: ['pipeline-automation.label', { ns: meta.id }],\n icon: 'ph--lightning--regular',\n data: 'automation',\n }),\n ]),\n }),\n ]);\n\n return Capability.contributes(AppCapabilities.AppGraphBuilder, extensions);\n }),\n);\n"],
|
|
5
|
+
"mappings": ";AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,iBAAiBC,eAAe;AACzC,SAASC,oBAAoB;AAC7B,SAASC,gBAAgB;AAEzB,SAASC,YAAY;AAErB,IAAA,4BAAeL,WAAWM,WACjBC,kBAAW,aAAA;AAChB,QAAMC,aAAa,OAAcC,WAAI;IACnCN,aAAaO,oBAAoB;MAC/BC,IAAI;MACJC,MAAMR,SAASA;MACfS,WAAW,MACFC,eAAQ;QACbZ,QAAQa,cAAc;UACpBJ,IAAI;UACJK,OAAO;YAAC;YAA8B;cAAEC,IAAIZ,KAAKM;YAAG;;UACpDO,MAAM;UACNC,MAAM;QACR,CAAA;QACAjB,QAAQa,cAAc;UACpBJ,IAAI;UACJK,OAAO;YAAC;YAA6B;cAAEC,IAAIZ,KAAKM;YAAG;;UACnDO,MAAM;UACNC,MAAM;QACR,CAAA;OACD;IACL,CAAA;GACD;AAED,SAAOnB,WAAWoB,YAAYnB,gBAAgBoB,iBAAiBb,UAAAA;AACjE,CAAA,CAAA;",
|
|
6
|
+
"names": ["Effect", "Capability", "AppCapabilities", "AppNode", "GraphBuilder", "Pipeline", "meta", "makeModule", "fnUntraced", "extensions", "all", "createTypeExtension", "id", "type", "connector", "succeed", "makeCompanion", "label", "ns", "icon", "data", "contributes", "AppGraphBuilder"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// src/capabilities/index.ts
|
|
2
|
+
import { Capability } from "@dxos/app-framework";
|
|
3
|
+
var AppGraphBuilder = Capability.lazy("AppGraphBuilder", () => import("../app-graph-builder-ZLGRWRJU.mjs"));
|
|
4
|
+
var CreateObject = Capability.lazy("CreateObject", () => import("../create-object-6Z4MMGX4.mjs"));
|
|
5
|
+
var ReactSurface = Capability.lazy("ReactSurface", () => import("../react-surface-QG7QSZSS.mjs"));
|
|
6
|
+
export {
|
|
7
|
+
AppGraphBuilder,
|
|
8
|
+
CreateObject,
|
|
9
|
+
ReactSurface
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/capabilities/index.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const AppGraphBuilder = Capability.lazy('AppGraphBuilder', () => import('./app-graph-builder'));\nexport const CreateObject = Capability.lazy('CreateObject', () => import('./create-object'));\nexport const ReactSurface = Capability.lazy('ReactSurface', () => import('./react-surface'));\n"],
|
|
5
|
+
"mappings": ";AAIA,SAASA,kBAAkB;AAEpB,IAAMC,kBAAkBD,WAAWE,KAAK,mBAAmB,MAAM,OAAO,mCAAA,CAAA;AACxE,IAAMC,eAAeH,WAAWE,KAAK,gBAAgB,MAAM,OAAO,+BAAA,CAAA;AAClE,IAAME,eAAeJ,WAAWE,KAAK,gBAAgB,MAAM,OAAO,+BAAA,CAAA;",
|
|
6
|
+
"names": ["Capability", "AppGraphBuilder", "lazy", "CreateObject", "ReactSurface"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// src/meta.ts
|
|
2
|
+
import { Plugin } from "@dxos/app-framework";
|
|
3
|
+
import { DXN } from "@dxos/keys";
|
|
4
|
+
import { trim } from "@dxos/util";
|
|
5
|
+
var meta = Plugin.makeMeta({
|
|
6
|
+
key: DXN.make("org.dxos.plugin.pipeline"),
|
|
7
|
+
name: "Pipelines",
|
|
8
|
+
author: "DXOS",
|
|
9
|
+
description: trim`
|
|
10
|
+
A multi-column Kanban-style pipeline plugin for DXOS Composer.
|
|
11
|
+
Each Pipeline holds an ordered set of Columns; each Column is backed by a ViewModel whose query
|
|
12
|
+
can select any ECHO object type — messages, contacts, documents, or custom types — from the active space.
|
|
13
|
+
|
|
14
|
+
Columns are fully configurable through the Settings companion panel, where users can add, rename,
|
|
15
|
+
reorder, and delete columns and edit the underlying query and projection for each column.
|
|
16
|
+
Objects can be dragged between columns and the full pipeline state, including column order and
|
|
17
|
+
per-column item order, persists collaboratively via ECHO.
|
|
18
|
+
|
|
19
|
+
A built-in Research template scaffolds a four-column pipeline wired to the Mailbox, Contacts,
|
|
20
|
+
Organizations, and Notes objects in the space, providing an out-of-the-box CRM-style workflow.
|
|
21
|
+
Pipeline articles also expose Invocations and Automation companion tabs for AI-driven automation.
|
|
22
|
+
`,
|
|
23
|
+
icon: "ph--path--regular",
|
|
24
|
+
iconHue: "purple",
|
|
25
|
+
source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-pipeline",
|
|
26
|
+
spec: "PLUGIN.mdl",
|
|
27
|
+
tags: [
|
|
28
|
+
"labs"
|
|
29
|
+
]
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
export {
|
|
33
|
+
meta
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=chunk-CYXDAAKN.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/meta.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\nimport { DXN } from '@dxos/keys';\nimport { trim } from '@dxos/util';\n\nexport const meta = Plugin.makeMeta({\n key: DXN.make('org.dxos.plugin.pipeline'),\n name: 'Pipelines',\n author: 'DXOS',\n description: trim`\n A multi-column Kanban-style pipeline plugin for DXOS Composer.\n Each Pipeline holds an ordered set of Columns; each Column is backed by a ViewModel whose query\n can select any ECHO object type — messages, contacts, documents, or custom types — from the active space.\n\n Columns are fully configurable through the Settings companion panel, where users can add, rename,\n reorder, and delete columns and edit the underlying query and projection for each column.\n Objects can be dragged between columns and the full pipeline state, including column order and\n per-column item order, persists collaboratively via ECHO.\n\n A built-in Research template scaffolds a four-column pipeline wired to the Mailbox, Contacts,\n Organizations, and Notes objects in the space, providing an out-of-the-box CRM-style workflow.\n Pipeline articles also expose Invocations and Automation companion tabs for AI-driven automation.\n `,\n icon: 'ph--path--regular',\n iconHue: 'purple',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-pipeline',\n spec: 'PLUGIN.mdl',\n tags: ['labs'],\n});\n"],
|
|
5
|
+
"mappings": ";AAIA,SAASA,cAAc;AACvB,SAASC,WAAW;AACpB,SAASC,YAAY;AAEd,IAAMC,OAAOH,OAAOI,SAAS;EAClCC,KAAKJ,IAAIK,KAAK,0BAAA;EACdC,MAAM;EACNC,QAAQ;EACRC,aAAaP;;;;;;;;;;;;;;EAcbQ,MAAM;EACNC,SAAS;EACTC,QAAQ;EACRC,MAAM;EACNC,MAAM;IAAC;;AACT,CAAA;",
|
|
6
|
+
"names": ["Plugin", "DXN", "trim", "meta", "makeMeta", "key", "make", "name", "author", "description", "icon", "iconHue", "source", "spec", "tags"]
|
|
7
|
+
}
|