@dxos/plugin-kanban 0.8.2-main.36232bc → 0.8.2-main.5885341
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/{artifact-definition-SVNHDJQT.mjs → artifact-definition-OSLO5B6P.mjs} +2 -2
- package/dist/lib/browser/{chunk-K5BYEZ4Z.mjs → chunk-3MVG4VGQ.mjs} +2 -13
- package/dist/lib/browser/chunk-3MVG4VGQ.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +4 -4
- package/dist/lib/browser/intent-resolver-OFEXRD4O.mjs +296 -0
- package/dist/lib/browser/intent-resolver-OFEXRD4O.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-R25PYWQV.mjs → react-surface-RJ5WMSWU.mjs} +56 -26
- package/dist/lib/browser/react-surface-RJ5WMSWU.mjs.map +7 -0
- package/dist/lib/browser/types.mjs +1 -3
- package/dist/lib/node/{artifact-definition-M2XAYUI2.cjs → artifact-definition-ZOUZLESK.cjs} +11 -11
- package/dist/lib/node/{chunk-3EUR6ZR2.cjs → chunk-ZRCL6XVF.cjs} +4 -16
- package/dist/lib/node/chunk-ZRCL6XVF.cjs.map +7 -0
- package/dist/lib/node/index.cjs +16 -16
- package/dist/lib/node/intent-resolver-BCCCN7LD.cjs +307 -0
- package/dist/lib/node/intent-resolver-BCCCN7LD.cjs.map +7 -0
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/{react-surface-FVM64YAQ.cjs → react-surface-LQ7CQFWF.cjs} +61 -31
- package/dist/lib/node/react-surface-LQ7CQFWF.cjs.map +7 -0
- package/dist/lib/node/types.cjs +6 -8
- package/dist/lib/node/types.cjs.map +2 -2
- package/dist/lib/node-esm/{artifact-definition-HQ5I2OO5.mjs → artifact-definition-A7GJP5BI.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-2N7CO3DI.mjs → chunk-ZJJYPR6C.mjs} +2 -13
- package/dist/lib/node-esm/chunk-ZJJYPR6C.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +4 -4
- package/dist/lib/node-esm/intent-resolver-4LPFRDUP.mjs +297 -0
- package/dist/lib/node-esm/intent-resolver-4LPFRDUP.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-LZ7MP3CQ.mjs → react-surface-C7CETLHO.mjs} +56 -26
- package/dist/lib/node-esm/react-surface-C7CETLHO.mjs.map +7 -0
- package/dist/lib/node-esm/types.mjs +1 -3
- package/dist/types/src/capabilities/index.d.ts +1 -1
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts +2 -2
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/components/KanbanContainer.d.ts.map +1 -1
- package/dist/types/src/components/KanbanContainer.stories.d.ts +10 -0
- package/dist/types/src/components/KanbanContainer.stories.d.ts.map +1 -0
- package/dist/types/src/testing/index.d.ts +3 -0
- package/dist/types/src/testing/index.d.ts.map +1 -0
- package/dist/types/src/testing/initialize-kanban.d.ts +17 -0
- package/dist/types/src/testing/initialize-kanban.d.ts.map +1 -0
- package/dist/types/src/testing/kanban-manager.d.ts +7 -0
- package/dist/types/src/testing/kanban-manager.d.ts.map +1 -0
- package/dist/types/src/testing/playwright/smoke.spec.d.ts +2 -0
- package/dist/types/src/testing/playwright/smoke.spec.d.ts.map +1 -0
- package/dist/types/src/types.d.ts +1 -8
- package/dist/types/src/types.d.ts.map +1 -1
- package/package.json +27 -24
- package/src/capabilities/intent-resolver.ts +10 -6
- package/src/capabilities/react-surface.tsx +37 -8
- package/src/components/KanbanContainer.stories.tsx +186 -0
- package/src/components/KanbanContainer.tsx +21 -8
- package/src/testing/index.ts +6 -0
- package/src/testing/initialize-kanban.ts +139 -0
- package/src/testing/kanban-manager.ts +13 -0
- package/src/testing/playwright/playwright.config.cts +18 -0
- package/src/testing/playwright/smoke.spec.ts +7 -0
- package/src/types.ts +1 -17
- package/dist/lib/browser/chunk-K5BYEZ4Z.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-XCDQ5N3Q.mjs +0 -132
- package/dist/lib/browser/intent-resolver-XCDQ5N3Q.mjs.map +0 -7
- package/dist/lib/browser/react-surface-R25PYWQV.mjs.map +0 -7
- package/dist/lib/node/chunk-3EUR6ZR2.cjs.map +0 -7
- package/dist/lib/node/intent-resolver-P3PSZO7H.cjs +0 -146
- package/dist/lib/node/intent-resolver-P3PSZO7H.cjs.map +0 -7
- package/dist/lib/node/react-surface-FVM64YAQ.cjs.map +0 -7
- package/dist/lib/node-esm/chunk-2N7CO3DI.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-4G47V67J.mjs +0 -133
- package/dist/lib/node-esm/intent-resolver-4G47V67J.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-LZ7MP3CQ.mjs.map +0 -7
- /package/dist/lib/browser/{artifact-definition-SVNHDJQT.mjs.map → artifact-definition-OSLO5B6P.mjs.map} +0 -0
- /package/dist/lib/node/{artifact-definition-M2XAYUI2.cjs.map → artifact-definition-ZOUZLESK.cjs.map} +0 -0
- /package/dist/lib/node-esm/{artifact-definition-HQ5I2OO5.mjs.map → artifact-definition-A7GJP5BI.mjs.map} +0 -0
|
@@ -4,32 +4,46 @@ import {
|
|
|
4
4
|
PivotColumnAnnotationId,
|
|
5
5
|
TypenameAnnotationId,
|
|
6
6
|
isKanban
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-3MVG4VGQ.mjs";
|
|
8
8
|
|
|
9
9
|
// packages/plugins/plugin-kanban/src/capabilities/react-surface.tsx
|
|
10
|
-
import React3, { useMemo as
|
|
11
|
-
import { Capabilities, contributes, createSurface } from "@dxos/app-framework";
|
|
10
|
+
import React3, { useMemo as useMemo3 } from "react";
|
|
11
|
+
import { Capabilities, contributes, createSurface, useCapabilities } from "@dxos/app-framework";
|
|
12
|
+
import { getTypenameOrThrow as getTypenameOrThrow2, toJsonSchema as toJsonSchema2 } from "@dxos/echo-schema";
|
|
12
13
|
import { findAnnotation } from "@dxos/effect";
|
|
14
|
+
import { ClientCapabilities } from "@dxos/plugin-client";
|
|
15
|
+
import { useClient as useClient3 } from "@dxos/react-client";
|
|
13
16
|
import { getSpace as getSpace3, isSpace } from "@dxos/react-client/echo";
|
|
14
17
|
import { SelectInput as SelectInput2, useFormValues } from "@dxos/react-ui-form";
|
|
15
18
|
|
|
16
19
|
// packages/plugins/plugin-kanban/src/components/KanbanContainer.tsx
|
|
17
|
-
import React, { useCallback, useEffect, useState } from "react";
|
|
20
|
+
import React, { useCallback, useEffect, useMemo, useState } from "react";
|
|
18
21
|
import { createIntent, useIntentDispatcher } from "@dxos/app-framework";
|
|
22
|
+
import { EchoSchema, getTypenameOrThrow, toJsonSchema } from "@dxos/echo-schema";
|
|
19
23
|
import { useGlobalFilteredObjects } from "@dxos/plugin-search";
|
|
24
|
+
import { useClient } from "@dxos/react-client";
|
|
20
25
|
import { Filter, useQuery, getSpace, live } from "@dxos/react-client/echo";
|
|
21
26
|
import { useKanbanModel, Kanban } from "@dxos/react-ui-kanban";
|
|
22
27
|
import { StackItem } from "@dxos/react-ui-stack";
|
|
23
28
|
import { ViewProjection } from "@dxos/schema";
|
|
24
29
|
var KanbanContainer = ({ kanban }) => {
|
|
30
|
+
const client = useClient();
|
|
25
31
|
const [cardSchema, setCardSchema] = useState();
|
|
26
32
|
const [projection, setProjection] = useState();
|
|
27
33
|
const space = getSpace(kanban);
|
|
28
34
|
const { dispatchPromise: dispatch } = useIntentDispatcher();
|
|
35
|
+
const jsonSchema = useMemo(() => cardSchema instanceof EchoSchema ? cardSchema.jsonSchema : cardSchema ? toJsonSchema(cardSchema) : void 0, [
|
|
36
|
+
cardSchema
|
|
37
|
+
]);
|
|
29
38
|
useEffect(() => {
|
|
30
|
-
|
|
39
|
+
const typename = kanban.cardView?.target?.query?.typename;
|
|
40
|
+
const staticSchema = client.graph.schemaRegistry.schemas.find((schema) => getTypenameOrThrow(schema) === typename);
|
|
41
|
+
if (staticSchema) {
|
|
42
|
+
setCardSchema(() => staticSchema);
|
|
43
|
+
}
|
|
44
|
+
if (!staticSchema && typename && space) {
|
|
31
45
|
const query = space.db.schemaRegistry.query({
|
|
32
|
-
typename
|
|
46
|
+
typename
|
|
33
47
|
});
|
|
34
48
|
const unsubscribe = query.subscribe(() => {
|
|
35
49
|
const [schema] = query.results;
|
|
@@ -46,13 +60,12 @@ var KanbanContainer = ({ kanban }) => {
|
|
|
46
60
|
space
|
|
47
61
|
]);
|
|
48
62
|
useEffect(() => {
|
|
49
|
-
if (kanban.cardView?.target &&
|
|
50
|
-
setProjection(new ViewProjection(
|
|
63
|
+
if (kanban.cardView?.target && jsonSchema) {
|
|
64
|
+
setProjection(new ViewProjection(jsonSchema, kanban.cardView.target));
|
|
51
65
|
}
|
|
52
66
|
}, [
|
|
53
67
|
kanban.cardView?.target,
|
|
54
|
-
|
|
55
|
-
JSON.stringify(cardSchema?.jsonSchema)
|
|
68
|
+
JSON.stringify(jsonSchema)
|
|
56
69
|
]);
|
|
57
70
|
const objects = useQuery(space, cardSchema ? Filter.schema(cardSchema) : Filter.nothing());
|
|
58
71
|
const filteredObjects = useGlobalFilteredObjects(objects);
|
|
@@ -91,11 +104,11 @@ var KanbanContainer = ({ kanban }) => {
|
|
|
91
104
|
};
|
|
92
105
|
|
|
93
106
|
// packages/plugins/plugin-kanban/src/components/KanbanViewEditor.tsx
|
|
94
|
-
import React2, { useCallback as useCallback2, useMemo } from "react";
|
|
107
|
+
import React2, { useCallback as useCallback2, useMemo as useMemo2 } from "react";
|
|
95
108
|
import { createIntent as createIntent2, useIntentDispatcher as useIntentDispatcher2 } from "@dxos/app-framework";
|
|
96
109
|
import { FormatEnum } from "@dxos/echo-schema";
|
|
97
110
|
import { invariant } from "@dxos/invariant";
|
|
98
|
-
import { useClient } from "@dxos/react-client";
|
|
111
|
+
import { useClient as useClient2 } from "@dxos/react-client";
|
|
99
112
|
import { Filter as Filter2, getSpace as getSpace2, useQuery as useQuery2, useSchema } from "@dxos/react-client/echo";
|
|
100
113
|
import { ViewEditor, Form, SelectInput } from "@dxos/react-ui-form";
|
|
101
114
|
import { KanbanSettingsSchema } from "@dxos/react-ui-kanban";
|
|
@@ -103,9 +116,9 @@ import { ViewType, ViewProjection as ViewProjection2 } from "@dxos/schema";
|
|
|
103
116
|
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-kanban/src/components/KanbanViewEditor.tsx";
|
|
104
117
|
var KanbanViewEditor = ({ kanban }) => {
|
|
105
118
|
const { dispatchPromise: dispatch } = useIntentDispatcher2();
|
|
106
|
-
const client =
|
|
119
|
+
const client = useClient2();
|
|
107
120
|
const space = getSpace2(kanban);
|
|
108
|
-
const currentTypename =
|
|
121
|
+
const currentTypename = useMemo2(() => kanban?.cardView?.target?.query?.typename, [
|
|
109
122
|
kanban?.cardView?.target?.query?.typename
|
|
110
123
|
]);
|
|
111
124
|
const schema = useSchema(client, space, currentTypename);
|
|
@@ -138,7 +151,7 @@ var KanbanViewEditor = ({ kanban }) => {
|
|
|
138
151
|
dispatch,
|
|
139
152
|
kanban
|
|
140
153
|
]);
|
|
141
|
-
const projection =
|
|
154
|
+
const projection = useMemo2(() => {
|
|
142
155
|
if (kanban?.cardView?.target && schema) {
|
|
143
156
|
return new ViewProjection2(schema.jsonSchema, kanban.cardView.target);
|
|
144
157
|
}
|
|
@@ -157,12 +170,12 @@ var KanbanViewEditor = ({ kanban }) => {
|
|
|
157
170
|
}, [
|
|
158
171
|
kanban
|
|
159
172
|
]);
|
|
160
|
-
const initialValues =
|
|
173
|
+
const initialValues = useMemo2(() => ({
|
|
161
174
|
columnFieldId: kanban.columnFieldId
|
|
162
175
|
}), [
|
|
163
176
|
kanban.columnFieldId
|
|
164
177
|
]);
|
|
165
|
-
const custom =
|
|
178
|
+
const custom = useMemo2(() => ({
|
|
166
179
|
columnFieldId: (props) => /* @__PURE__ */ React2.createElement(SelectInput, {
|
|
167
180
|
...props,
|
|
168
181
|
options: selectFields
|
|
@@ -211,23 +224,36 @@ var react_surface_default = () => contributes(Capabilities.ReactSurface, [
|
|
|
211
224
|
})
|
|
212
225
|
}),
|
|
213
226
|
createSurface({
|
|
214
|
-
id: `${KANBAN_PLUGIN}/create-initial-schema-form
|
|
227
|
+
id: `${KANBAN_PLUGIN}/create-initial-schema-form`,
|
|
215
228
|
role: "form-input",
|
|
216
229
|
filter: (data) => {
|
|
230
|
+
if (data.prop !== "typename") {
|
|
231
|
+
return false;
|
|
232
|
+
}
|
|
217
233
|
const annotation = findAnnotation(data.schema.ast, TypenameAnnotationId);
|
|
218
234
|
return !!annotation;
|
|
219
235
|
},
|
|
220
236
|
component: ({ data: { target }, ...inputProps }) => {
|
|
237
|
+
const client = useClient3();
|
|
221
238
|
const props = inputProps;
|
|
222
239
|
const space = isSpace(target) ? target : getSpace3(target);
|
|
223
240
|
if (!space) {
|
|
224
241
|
return null;
|
|
225
242
|
}
|
|
226
|
-
const
|
|
243
|
+
const schemaWhitelists = useCapabilities(ClientCapabilities.SchemaWhiteList);
|
|
244
|
+
const whitelistedTypenames = useMemo3(() => new Set(schemaWhitelists.flatMap((typeArray) => typeArray.map((type) => type.typename))), [
|
|
245
|
+
schemaWhitelists
|
|
246
|
+
]);
|
|
247
|
+
const fixed = client.graph.schemaRegistry.schemas.filter((schema) => whitelistedTypenames.has(getTypenameOrThrow2(schema)));
|
|
248
|
+
const dynamic = space?.db.schemaRegistry.query().runSync();
|
|
249
|
+
const typenames = Array.from(/* @__PURE__ */ new Set([
|
|
250
|
+
...fixed.map((schema) => getTypenameOrThrow2(schema)),
|
|
251
|
+
...dynamic.map((schema) => schema.typename)
|
|
252
|
+
])).sort();
|
|
227
253
|
return /* @__PURE__ */ React3.createElement(SelectInput2, {
|
|
228
254
|
...props,
|
|
229
|
-
options:
|
|
230
|
-
value:
|
|
255
|
+
options: typenames.map((typename) => ({
|
|
256
|
+
value: typename
|
|
231
257
|
}))
|
|
232
258
|
});
|
|
233
259
|
}
|
|
@@ -246,14 +272,17 @@ var react_surface_default = () => contributes(Capabilities.ReactSurface, [
|
|
|
246
272
|
return null;
|
|
247
273
|
}
|
|
248
274
|
const { typename } = useFormValues();
|
|
275
|
+
const schemaWhitelists = useCapabilities(ClientCapabilities.SchemaWhiteList);
|
|
276
|
+
const staticSchema = schemaWhitelists.flat().find((schema) => getTypenameOrThrow2(schema) === typename);
|
|
249
277
|
const [selectedSchema] = space?.db.schemaRegistry.query({
|
|
250
278
|
typename
|
|
251
279
|
}).runSync();
|
|
252
|
-
const singleSelectColumns =
|
|
253
|
-
|
|
280
|
+
const singleSelectColumns = useMemo3(() => {
|
|
281
|
+
const properties = staticSchema ? toJsonSchema2(staticSchema).properties : selectedSchema?.jsonSchema?.properties;
|
|
282
|
+
if (!properties) {
|
|
254
283
|
return [];
|
|
255
284
|
}
|
|
256
|
-
const columns = Object.entries(
|
|
285
|
+
const columns = Object.entries(properties).reduce((acc, [key, value]) => {
|
|
257
286
|
if (typeof value === "object" && value?.format === "single-select") {
|
|
258
287
|
acc.push(key);
|
|
259
288
|
}
|
|
@@ -261,7 +290,8 @@ var react_surface_default = () => contributes(Capabilities.ReactSurface, [
|
|
|
261
290
|
}, []);
|
|
262
291
|
return columns;
|
|
263
292
|
}, [
|
|
264
|
-
selectedSchema?.jsonSchema
|
|
293
|
+
selectedSchema?.jsonSchema,
|
|
294
|
+
staticSchema
|
|
265
295
|
]);
|
|
266
296
|
if (!typename) {
|
|
267
297
|
return null;
|
|
@@ -278,4 +308,4 @@ var react_surface_default = () => contributes(Capabilities.ReactSurface, [
|
|
|
278
308
|
export {
|
|
279
309
|
react_surface_default as default
|
|
280
310
|
};
|
|
281
|
-
//# sourceMappingURL=react-surface-
|
|
311
|
+
//# sourceMappingURL=react-surface-RJ5WMSWU.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/capabilities/react-surface.tsx", "../../../src/components/KanbanContainer.tsx", "../../../src/components/KanbanViewEditor.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { Capabilities, contributes, createSurface, useCapabilities } from '@dxos/app-framework';\nimport { getTypenameOrThrow, toJsonSchema, type S } from '@dxos/echo-schema';\nimport { findAnnotation } from '@dxos/effect';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { type CollectionType } from '@dxos/plugin-space/types';\nimport { useClient } from '@dxos/react-client';\nimport { getSpace, isSpace, type Space } from '@dxos/react-client/echo';\nimport { type InputProps, SelectInput, useFormValues } from '@dxos/react-ui-form';\nimport { type KanbanType } from '@dxos/react-ui-kanban';\n\nimport { KanbanContainer, KanbanViewEditor } from '../components';\nimport { KANBAN_PLUGIN } from '../meta';\nimport { isKanban, TypenameAnnotationId, PivotColumnAnnotationId } from '../types';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: `${KANBAN_PLUGIN}/kanban`,\n role: ['article', 'section'],\n filter: (data): data is { subject: KanbanType } => isKanban(data.subject),\n component: ({ data, role }) => <KanbanContainer kanban={data.subject} role={role} />,\n }),\n createSurface({\n id: `${KANBAN_PLUGIN}/object-settings`,\n role: 'object-settings',\n filter: (data): data is { subject: KanbanType } => isKanban(data.subject),\n component: ({ data }) => <KanbanViewEditor kanban={data.subject} />,\n }),\n createSurface({\n id: `${KANBAN_PLUGIN}/create-initial-schema-form`,\n role: 'form-input',\n filter: (data): data is { prop: string; schema: S.Schema<any>; target: Space | CollectionType | undefined } => {\n if (data.prop !== 'typename') {\n return false;\n }\n\n const annotation = findAnnotation<boolean>((data.schema as S.Schema.All).ast, TypenameAnnotationId);\n return !!annotation;\n },\n component: ({ data: { target }, ...inputProps }) => {\n const client = useClient();\n const props = inputProps as any as InputProps;\n const space = isSpace(target) ? target : getSpace(target);\n if (!space) {\n return null;\n }\n\n const schemaWhitelists = useCapabilities(ClientCapabilities.SchemaWhiteList);\n const whitelistedTypenames = useMemo(\n () => new Set(schemaWhitelists.flatMap((typeArray) => typeArray.map((type) => type.typename))),\n [schemaWhitelists],\n );\n\n const fixed = client.graph.schemaRegistry.schemas.filter((schema) =>\n whitelistedTypenames.has(getTypenameOrThrow(schema)),\n );\n const dynamic = space?.db.schemaRegistry.query().runSync();\n const typenames = Array.from(\n new Set<string>([\n ...fixed.map((schema) => getTypenameOrThrow(schema)),\n ...dynamic.map((schema) => schema.typename),\n ]),\n ).sort();\n\n return <SelectInput {...props} options={typenames.map((typename) => ({ value: typename }))} />;\n },\n }),\n createSurface({\n id: `${KANBAN_PLUGIN}/create-initial-schema-form-[pivot-column]`,\n role: 'form-input',\n filter: (data): data is { prop: string; schema: S.Schema<any>; target: Space | CollectionType | undefined } => {\n const annotation = findAnnotation<boolean>((data.schema as S.Schema.All).ast, PivotColumnAnnotationId);\n return !!annotation;\n },\n component: ({ data: { target }, ...inputProps }) => {\n const props = inputProps as any as InputProps;\n const space = isSpace(target) ? target : getSpace(target);\n if (!space) {\n return null;\n }\n const { typename } = useFormValues();\n // TODO(wittjosiah): Unify this schema lookup.\n const schemaWhitelists = useCapabilities(ClientCapabilities.SchemaWhiteList);\n const staticSchema = schemaWhitelists.flat().find((schema) => getTypenameOrThrow(schema) === typename);\n const [selectedSchema] = space?.db.schemaRegistry.query({ typename }).runSync();\n\n const singleSelectColumns = useMemo(() => {\n const properties = staticSchema\n ? toJsonSchema(staticSchema).properties\n : selectedSchema?.jsonSchema?.properties;\n if (!properties) {\n return [];\n }\n\n const columns = Object.entries(properties).reduce<string[]>((acc, [key, value]) => {\n if (typeof value === 'object' && value?.format === 'single-select') {\n acc.push(key);\n }\n return acc;\n }, []);\n\n return columns;\n }, [selectedSchema?.jsonSchema, staticSchema]);\n\n if (!typename) {\n return null;\n }\n\n return <SelectInput {...props} options={singleSelectColumns.map((column) => ({ value: column }))} />;\n },\n }),\n ]);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { EchoSchema, getTypenameOrThrow, toJsonSchema, type TypedObject } from '@dxos/echo-schema';\nimport { useGlobalFilteredObjects } from '@dxos/plugin-search';\nimport { useClient } from '@dxos/react-client';\nimport { Filter, useQuery, getSpace, live } from '@dxos/react-client/echo';\nimport { type KanbanType, useKanbanModel, Kanban } from '@dxos/react-ui-kanban';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { ViewProjection } from '@dxos/schema';\n\nimport { KanbanAction } from '../types';\n\nexport const KanbanContainer = ({ kanban }: { kanban: KanbanType; role: string }) => {\n const client = useClient();\n const [cardSchema, setCardSchema] = useState<TypedObject<any, any>>();\n const [projection, setProjection] = useState<ViewProjection>();\n const space = getSpace(kanban);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n const jsonSchema = useMemo(\n () =>\n cardSchema instanceof EchoSchema ? cardSchema.jsonSchema : cardSchema ? toJsonSchema(cardSchema) : undefined,\n [cardSchema],\n );\n\n useEffect(() => {\n const typename = kanban.cardView?.target?.query?.typename;\n const staticSchema = client.graph.schemaRegistry.schemas.find((schema) => getTypenameOrThrow(schema) === typename);\n if (staticSchema) {\n setCardSchema(() => staticSchema as TypedObject<any, any>);\n }\n if (!staticSchema && typename && space) {\n const query = space.db.schemaRegistry.query({ typename });\n const unsubscribe = query.subscribe(\n () => {\n const [schema] = query.results;\n if (schema) {\n setCardSchema(schema);\n }\n },\n { fire: true },\n );\n return unsubscribe;\n }\n }, [kanban.cardView?.target?.query, space]);\n\n useEffect(() => {\n if (kanban.cardView?.target && jsonSchema) {\n setProjection(new ViewProjection(jsonSchema, kanban.cardView.target));\n }\n // TODO(ZaymonFC): Is there a better way to get notified about deep changes in the json schema?\n }, [kanban.cardView?.target, JSON.stringify(jsonSchema)]);\n\n const objects = useQuery(space, cardSchema ? Filter.schema(cardSchema) : Filter.nothing());\n const filteredObjects = useGlobalFilteredObjects(objects);\n\n const model = useKanbanModel({\n kanban,\n schema: cardSchema,\n projection,\n items: filteredObjects,\n });\n\n const handleAddCard = useCallback(\n (columnValue: string | undefined) => {\n const path = model?.columnFieldPath;\n if (space && cardSchema && path) {\n const card = live(cardSchema, { [path]: columnValue });\n space.db.add(card);\n return card.id;\n }\n },\n [space, cardSchema, model],\n );\n\n const handleRemoveCard = useCallback(\n (card: { id: string }) => {\n void dispatch(createIntent(KanbanAction.DeleteCard, { card }));\n },\n [dispatch],\n );\n\n return (\n <StackItem.Content>\n {model && <Kanban model={model} onAddCard={handleAddCard} onRemoveCard={handleRemoveCard} />}\n </StackItem.Content>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { FormatEnum } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { useClient } from '@dxos/react-client';\nimport { Filter, getSpace, useQuery, useSchema } from '@dxos/react-client/echo';\nimport { ViewEditor, Form, SelectInput, type CustomInputMap } from '@dxos/react-ui-form';\nimport { type KanbanType, KanbanSettingsSchema } from '@dxos/react-ui-kanban';\nimport { ViewType, ViewProjection } from '@dxos/schema';\n\nimport { KanbanAction } from '../types';\n\ntype KanbanViewEditorProps = { kanban: KanbanType };\n\nexport const KanbanViewEditor = ({ kanban }: KanbanViewEditorProps) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const client = useClient();\n const space = getSpace(kanban);\n const currentTypename = useMemo(\n () => kanban?.cardView?.target?.query?.typename,\n [kanban?.cardView?.target?.query?.typename],\n );\n const schema = useSchema(client, space, currentTypename);\n const views = useQuery(space, Filter.schema(ViewType));\n\n const handleUpdateTypename = useCallback(\n (newTypename: string) => {\n invariant(schema);\n const matchingViews = views.filter((view) => view.query.typename === currentTypename);\n for (const view of matchingViews) {\n view.query.typename = newTypename;\n }\n\n schema.mutable.updateTypename(newTypename);\n },\n [views, schema],\n );\n\n const handleDelete = useCallback(\n (fieldId: string) => {\n void dispatch?.(createIntent(KanbanAction.DeleteCardField, { kanban, fieldId }));\n },\n [dispatch, kanban],\n );\n\n const projection = useMemo(() => {\n if (kanban?.cardView?.target && schema) {\n return new ViewProjection(schema.jsonSchema, kanban.cardView.target);\n }\n }, [kanban?.cardView?.target, schema, JSON.stringify(schema)]);\n\n const fieldProjections = projection?.getFieldProjections() || [];\n const selectFields = fieldProjections\n .filter((field) => field.props.format === FormatEnum.SingleSelect)\n .map(({ field }) => ({ value: field.id, label: field.path }));\n\n const onSave = useCallback(\n (values: Partial<{ columnFieldId: string }>) => {\n kanban.columnFieldId = values.columnFieldId;\n },\n [kanban],\n );\n\n const initialValues = useMemo(() => ({ columnFieldId: kanban.columnFieldId }), [kanban.columnFieldId]);\n const custom: CustomInputMap = useMemo(\n () => ({ columnFieldId: (props) => <SelectInput {...props} options={selectFields} /> }),\n [selectFields],\n );\n\n if (!space || !schema || !kanban.cardView?.target) {\n return null;\n }\n\n return (\n <>\n <Form schema={KanbanSettingsSchema} values={initialValues} onSave={onSave} autoSave Custom={custom} />\n <ViewEditor\n registry={space.db.schemaRegistry}\n schema={schema}\n view={kanban.cardView.target}\n onTypenameChanged={schema.readonly ? undefined : handleUpdateTypename}\n onDelete={schema.readonly ? undefined : handleDelete}\n />\n </>\n );\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["React", "useMemo", "Capabilities", "contributes", "createSurface", "useCapabilities", "getTypenameOrThrow", "toJsonSchema", "findAnnotation", "ClientCapabilities", "useClient", "getSpace", "isSpace", "SelectInput", "useFormValues", "React", "useCallback", "useEffect", "useMemo", "useState", "createIntent", "useIntentDispatcher", "EchoSchema", "getTypenameOrThrow", "toJsonSchema", "useGlobalFilteredObjects", "useClient", "Filter", "useQuery", "getSpace", "live", "useKanbanModel", "Kanban", "StackItem", "ViewProjection", "KanbanContainer", "kanban", "client", "useClient", "cardSchema", "setCardSchema", "useState", "projection", "setProjection", "space", "getSpace", "dispatchPromise", "dispatch", "useIntentDispatcher", "jsonSchema", "useMemo", "EchoSchema", "toJsonSchema", "undefined", "useEffect", "typename", "cardView", "target", "query", "staticSchema", "graph", "schemaRegistry", "schemas", "find", "schema", "getTypenameOrThrow", "db", "unsubscribe", "subscribe", "results", "fire", "ViewProjection", "JSON", "stringify", "objects", "useQuery", "Filter", "nothing", "filteredObjects", "useGlobalFilteredObjects", "model", "useKanbanModel", "items", "handleAddCard", "useCallback", "columnValue", "path", "columnFieldPath", "card", "live", "add", "id", "handleRemoveCard", "createIntent", "KanbanAction", "DeleteCard", "StackItem", "Content", "Kanban", "onAddCard", "onRemoveCard", "React", "useCallback", "useMemo", "createIntent", "useIntentDispatcher", "FormatEnum", "invariant", "useClient", "Filter", "getSpace", "useQuery", "useSchema", "ViewEditor", "Form", "SelectInput", "KanbanSettingsSchema", "ViewType", "ViewProjection", "KanbanViewEditor", "kanban", "dispatchPromise", "dispatch", "useIntentDispatcher", "client", "useClient", "space", "getSpace", "currentTypename", "useMemo", "cardView", "target", "query", "typename", "schema", "useSchema", "views", "useQuery", "Filter", "ViewType", "handleUpdateTypename", "useCallback", "newTypename", "invariant", "matchingViews", "filter", "view", "mutable", "updateTypename", "handleDelete", "fieldId", "createIntent", "KanbanAction", "DeleteCardField", "projection", "ViewProjection", "jsonSchema", "JSON", "stringify", "fieldProjections", "getFieldProjections", "selectFields", "field", "props", "format", "FormatEnum", "SingleSelect", "map", "value", "id", "label", "path", "onSave", "values", "columnFieldId", "initialValues", "custom", "React", "SelectInput", "options", "Form", "KanbanSettingsSchema", "autoSave", "Custom", "ViewEditor", "registry", "db", "schemaRegistry", "onTypenameChanged", "readonly", "undefined", "onDelete", "contributes", "Capabilities", "ReactSurface", "createSurface", "id", "KANBAN_PLUGIN", "role", "filter", "data", "isKanban", "subject", "component", "React", "KanbanContainer", "kanban", "KanbanViewEditor", "prop", "annotation", "findAnnotation", "schema", "ast", "TypenameAnnotationId", "target", "inputProps", "client", "useClient", "props", "space", "isSpace", "getSpace", "schemaWhitelists", "useCapabilities", "ClientCapabilities", "SchemaWhiteList", "whitelistedTypenames", "useMemo", "Set", "flatMap", "typeArray", "map", "type", "typename", "fixed", "graph", "schemaRegistry", "schemas", "has", "getTypenameOrThrow", "dynamic", "db", "query", "runSync", "typenames", "Array", "from", "sort", "SelectInput", "options", "value", "PivotColumnAnnotationId", "useFormValues", "staticSchema", "flat", "find", "selectedSchema", "singleSelectColumns", "properties", "toJsonSchema", "jsonSchema", "columns", "Object", "entries", "reduce", "acc", "key", "format", "push", "column"]
|
|
7
|
+
}
|
|
@@ -3,15 +3,13 @@ import {
|
|
|
3
3
|
KanbanAction,
|
|
4
4
|
PivotColumnAnnotationId,
|
|
5
5
|
TypenameAnnotationId,
|
|
6
|
-
createKanban,
|
|
7
6
|
isKanban
|
|
8
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-3MVG4VGQ.mjs";
|
|
9
8
|
export {
|
|
10
9
|
CreateKanbanSchema,
|
|
11
10
|
KanbanAction,
|
|
12
11
|
PivotColumnAnnotationId,
|
|
13
12
|
TypenameAnnotationId,
|
|
14
|
-
createKanban,
|
|
15
13
|
isKanban
|
|
16
14
|
};
|
|
17
15
|
//# sourceMappingURL=types.mjs.map
|
|
@@ -16,12 +16,12 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var
|
|
20
|
-
__export(
|
|
19
|
+
var artifact_definition_ZOUZLESK_exports = {};
|
|
20
|
+
__export(artifact_definition_ZOUZLESK_exports, {
|
|
21
21
|
default: () => artifact_definition_default
|
|
22
22
|
});
|
|
23
|
-
module.exports = __toCommonJS(
|
|
24
|
-
var
|
|
23
|
+
module.exports = __toCommonJS(artifact_definition_ZOUZLESK_exports);
|
|
24
|
+
var import_chunk_ZRCL6XVF = require("./chunk-ZRCL6XVF.cjs");
|
|
25
25
|
var import_effect = require("effect");
|
|
26
26
|
var import_app_framework = require("@dxos/app-framework");
|
|
27
27
|
var import_artifact = require("@dxos/artifact");
|
|
@@ -37,8 +37,8 @@ var QualifiedId = import_echo_schema.S.String.annotations({
|
|
|
37
37
|
});
|
|
38
38
|
var artifact_definition_default = () => {
|
|
39
39
|
const definition = (0, import_artifact.defineArtifact)({
|
|
40
|
-
id: `artifact:${
|
|
41
|
-
name:
|
|
40
|
+
id: `artifact:${import_chunk_ZRCL6XVF.meta.id}`,
|
|
41
|
+
name: import_chunk_ZRCL6XVF.meta.name,
|
|
42
42
|
instructions: `
|
|
43
43
|
- Before adding items to a kanban board, inspect the board to see its schema
|
|
44
44
|
- When adding items, you must not include the 'id' field -- it is automatically generated
|
|
@@ -46,7 +46,7 @@ var artifact_definition_default = () => {
|
|
|
46
46
|
`,
|
|
47
47
|
schema: import_react_ui_kanban.KanbanType,
|
|
48
48
|
tools: [
|
|
49
|
-
(0, import_artifact.defineTool)(
|
|
49
|
+
(0, import_artifact.defineTool)(import_chunk_ZRCL6XVF.meta.id, {
|
|
50
50
|
name: "create",
|
|
51
51
|
description: `
|
|
52
52
|
Create a new kanban board using an existing schema.
|
|
@@ -85,7 +85,7 @@ var artifact_definition_default = () => {
|
|
|
85
85
|
if (!schema) {
|
|
86
86
|
return import_artifact.ToolResult.Error(`Schema not found: ${typename}`);
|
|
87
87
|
}
|
|
88
|
-
const intent = (0, import_effect.pipe)((0, import_app_framework.createIntent)(
|
|
88
|
+
const intent = (0, import_effect.pipe)((0, import_app_framework.createIntent)(import_chunk_ZRCL6XVF.KanbanAction.Create, {
|
|
89
89
|
space: extensions.space,
|
|
90
90
|
typename,
|
|
91
91
|
initialPivotColumn: pivotColumn
|
|
@@ -99,7 +99,7 @@ var artifact_definition_default = () => {
|
|
|
99
99
|
return import_artifact.ToolResult.Success((0, import_assistant.createArtifactElement)(data.id));
|
|
100
100
|
}
|
|
101
101
|
}),
|
|
102
|
-
(0, import_artifact.defineTool)(
|
|
102
|
+
(0, import_artifact.defineTool)(import_chunk_ZRCL6XVF.meta.id, {
|
|
103
103
|
name: "list",
|
|
104
104
|
description: "List all kanban boards in the current space.",
|
|
105
105
|
caption: "Listing kanban boards...",
|
|
@@ -126,7 +126,7 @@ var artifact_definition_default = () => {
|
|
|
126
126
|
return import_artifact.ToolResult.Success(boardInfo);
|
|
127
127
|
}
|
|
128
128
|
}),
|
|
129
|
-
(0, import_artifact.defineTool)(
|
|
129
|
+
(0, import_artifact.defineTool)(import_chunk_ZRCL6XVF.meta.id, {
|
|
130
130
|
name: "inspect",
|
|
131
131
|
description: "Get details about a specific kanban board.",
|
|
132
132
|
caption: "Inspecting kanban board...",
|
|
@@ -189,4 +189,4 @@ var artifact_definition_default = () => {
|
|
|
189
189
|
});
|
|
190
190
|
return (0, import_app_framework.contributes)(import_app_framework.Capabilities.ArtifactDefinition, definition);
|
|
191
191
|
};
|
|
192
|
-
//# sourceMappingURL=artifact-definition-
|
|
192
|
+
//# sourceMappingURL=artifact-definition-ZOUZLESK.cjs.map
|
|
@@ -16,23 +16,21 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var
|
|
20
|
-
__export(
|
|
19
|
+
var chunk_ZRCL6XVF_exports = {};
|
|
20
|
+
__export(chunk_ZRCL6XVF_exports, {
|
|
21
21
|
CreateKanbanSchema: () => CreateKanbanSchema,
|
|
22
22
|
KANBAN_PLUGIN: () => KANBAN_PLUGIN,
|
|
23
23
|
KanbanAction: () => KanbanAction,
|
|
24
24
|
PivotColumnAnnotationId: () => PivotColumnAnnotationId,
|
|
25
25
|
TypenameAnnotationId: () => TypenameAnnotationId,
|
|
26
|
-
createKanban: () => createKanban,
|
|
27
26
|
isKanban: () => isKanban,
|
|
28
27
|
meta: () => meta
|
|
29
28
|
});
|
|
30
|
-
module.exports = __toCommonJS(
|
|
29
|
+
module.exports = __toCommonJS(chunk_ZRCL6XVF_exports);
|
|
31
30
|
var import_SchemaAST = require("effect/SchemaAST");
|
|
32
31
|
var import_echo_schema = require("@dxos/echo-schema");
|
|
33
32
|
var import_echo = require("@dxos/react-client/echo");
|
|
34
33
|
var import_react_ui_kanban = require("@dxos/react-ui-kanban");
|
|
35
|
-
var import_testing = require("@dxos/react-ui-kanban/testing");
|
|
36
34
|
var import_schema = require("@dxos/schema");
|
|
37
35
|
var KANBAN_PLUGIN = "dxos.org/plugin/kanban";
|
|
38
36
|
var meta = {
|
|
@@ -101,15 +99,6 @@ var KanbanAction;
|
|
|
101
99
|
KanbanAction2.DeleteCard = DeleteCard;
|
|
102
100
|
})(KanbanAction || (KanbanAction = {}));
|
|
103
101
|
var isKanban = (object) => object != null && object instanceof import_react_ui_kanban.KanbanType;
|
|
104
|
-
var createKanban = async ({ space, name, typename, initialPivotColumn }) => {
|
|
105
|
-
const { kanban } = await (0, import_testing.initializeKanban)({
|
|
106
|
-
space,
|
|
107
|
-
name,
|
|
108
|
-
typename,
|
|
109
|
-
initialPivotColumn
|
|
110
|
-
});
|
|
111
|
-
return kanban;
|
|
112
|
-
};
|
|
113
102
|
// Annotate the CommonJS export names for ESM import in node:
|
|
114
103
|
0 && (module.exports = {
|
|
115
104
|
CreateKanbanSchema,
|
|
@@ -117,8 +106,7 @@ var createKanban = async ({ space, name, typename, initialPivotColumn }) => {
|
|
|
117
106
|
KanbanAction,
|
|
118
107
|
PivotColumnAnnotationId,
|
|
119
108
|
TypenameAnnotationId,
|
|
120
|
-
createKanban,
|
|
121
109
|
isKanban,
|
|
122
110
|
meta
|
|
123
111
|
});
|
|
124
|
-
//# sourceMappingURL=chunk-
|
|
112
|
+
//# sourceMappingURL=chunk-ZRCL6XVF.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/types.ts", "../../../src/meta.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { TitleAnnotationId } from 'effect/SchemaAST';\n\nimport { S } from '@dxos/echo-schema';\nimport { SpaceSchema } from '@dxos/react-client/echo';\nimport { KanbanType } from '@dxos/react-ui-kanban';\nimport { FieldSchema } from '@dxos/schema';\n\nimport { KANBAN_PLUGIN } from './meta';\n\n/**\n * Kanban data model.\n * A Kanban board is a collection of columns, each of which contains a collection of items.\n * The layout of columns and items is controlled by models.\n * The underlying data model may be represented by direct object relationships\n * (e.g., a column object containing an array of ordered items) or projections constructed\n * by the model (e.g., a query of items based on metadata within a column object).\n */\n\n// TODO(burdon): Move to FormatEnum or SDK.\nexport const TypenameAnnotationId = Symbol.for('@dxos/plugin-kanban/annotation/Typename');\nexport const PivotColumnAnnotationId = Symbol.for('@dxos/plugin-kanban/annotation/PivotColumn');\n\nexport const CreateKanbanSchema = S.Struct({\n name: S.optional(S.String),\n typename: S.optional(\n S.String.annotations({\n [TypenameAnnotationId]: true,\n [TitleAnnotationId]: 'Select card schema (leave empty to start fresh)',\n }),\n ),\n initialPivotColumn: S.optional(\n S.String.annotations({\n [PivotColumnAnnotationId]: true,\n [TitleAnnotationId]: 'Pivot column',\n }),\n ),\n});\n\nexport type CreateKanbanType = S.Schema.Type<typeof CreateKanbanSchema>;\n\nexport namespace KanbanAction {\n const KANBAN_ACTION = `${KANBAN_PLUGIN}/action`;\n\n export class Create extends S.TaggedClass<Create>()(`${KANBAN_ACTION}/create`, {\n input: S.extend(S.Struct({ space: SpaceSchema }), CreateKanbanSchema),\n output: S.Struct({\n object: KanbanType,\n }),\n }) {}\n\n export class DeleteCardField extends S.TaggedClass<DeleteCardField>()(`${KANBAN_ACTION}/delete-card-field`, {\n input: S.Struct({\n kanban: KanbanType,\n fieldId: S.String,\n // TODO(wittjosiah): Separate fields for undo data?\n deletionData: S.optional(\n S.Struct({\n field: FieldSchema,\n // TODO(wittjosiah): This creates a type error.\n // props: PropertySchema,\n props: S.Any,\n index: S.Number,\n }),\n ),\n }),\n output: S.Void,\n }) {}\n\n export class DeleteCard extends S.TaggedClass<DeleteCard>()(`${KANBAN_ACTION}/delete-card`, {\n input: S.Struct({\n card: S.Any, // The card object to delete\n }),\n output: S.Void,\n }) {}\n}\n\n// TODO(burdon): Undo?\n// TODO(burdon): Typescript types (replace proto with annotations?)\n// TODO(burdon): Should pure components depend on ECHO? Relationship between ECHO object/array and Observable.\n// TODO(burdon): Can the plugin configure the object based on the data? E.g., how are the models constructed?\n// TODO(burdon): Create models. Simple first based on actual data.\n// Model is always a projection since the dragging state is tentative.\n\n// TODO(burdon): Extend model for moving items (in and across columns).\nexport interface KanbanModel {\n root: KanbanType;\n}\n\nexport type Location = {\n idx?: number;\n};\n\nexport const isKanban = (object: unknown): object is KanbanType => object != null && object instanceof KanbanType;\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const KANBAN_PLUGIN = 'dxos.org/plugin/kanban';\n\nexport const meta: PluginMeta = {\n id: KANBAN_PLUGIN,\n name: 'Kanban',\n description:\n 'Kanban allows you to explore Table data in sorted columns defined by your custom schema. You can use Kanbans to track progress or trigger custom automations when cards are moved from one state to another.',\n icon: 'ph--kanban--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/experimental/plugin-kanban',\n tags: ['experimental'],\n screenshots: ['https://dxos.network/plugin-details-kanban-dark.png'],\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,uBAAkC;AAElC,yBAAkB;AAClB,kBAA4B;AAC5B,6BAA2B;AAC3B,oBAA4B;ACHrB,IAAMA,gBAAgB;AAEtB,IAAMC,OAAmB;EAC9BC,IAAIF;EACJG,MAAM;EACNC,aACE;EACFC,MAAM;EACNC,QAAQ;EACRC,MAAM;IAAC;;EACPC,aAAa;IAAC;;AAChB;ADMO,IAAMC,uBAAuBC,OAAOC,IAAI,yCAAA;AACxC,IAAMC,0BAA0BF,OAAOC,IAAI,4CAAA;AAE3C,IAAME,qBAAqBC,qBAAEC,OAAO;EACzCZ,MAAMW,qBAAEE,SAASF,qBAAEG,MAAM;EACzBC,UAAUJ,qBAAEE,SACVF,qBAAEG,OAAOE,YAAY;IACnB,CAACV,oBAAAA,GAAuB;IACxB,CAACW,kCAAAA,GAAoB;EACvB,CAAA,CAAA;EAEFC,oBAAoBP,qBAAEE,SACpBF,qBAAEG,OAAOE,YAAY;IACnB,CAACP,uBAAAA,GAA0B;IAC3B,CAACQ,kCAAAA,GAAoB;EACvB,CAAA,CAAA;AAEJ,CAAA;;UAIiBE,eAAAA;AACf,QAAMC,gBAAgB,GAAGvB,aAAAA;EAElB,MAAMwB,eAAeV,qBAAEW,YAAW,EAAW,GAAGF,aAAAA,WAAwB;IAC7EG,OAAOZ,qBAAEa,OAAOb,qBAAEC,OAAO;MAAEa,OAAOC;IAAY,CAAA,GAAIhB,kBAAAA;IAClDiB,QAAQhB,qBAAEC,OAAO;MACfgB,QAAQC;IACV,CAAA;EACF,CAAA,EAAA;EAAI;gBALSR,SAAAA;EAON,MAAMS,wBAAwBnB,qBAAEW,YAAW,EAAoB,GAAGF,aAAAA,sBAAmC;IAC1GG,OAAOZ,qBAAEC,OAAO;MACdmB,QAAQF;MACRG,SAASrB,qBAAEG;;MAEXmB,cAActB,qBAAEE,SACdF,qBAAEC,OAAO;QACPsB,OAAOC;;;QAGPC,OAAOzB,qBAAE0B;QACTC,OAAO3B,qBAAE4B;MACX,CAAA,CAAA;IAEJ,CAAA;IACAZ,QAAQhB,qBAAE6B;EACZ,CAAA,EAAA;EAAI;gBAhBSV,kBAAAA;EAkBN,MAAMW,mBAAmB9B,qBAAEW,YAAW,EAAe,GAAGF,aAAAA,gBAA6B;IAC1FG,OAAOZ,qBAAEC,OAAO;MACd8B,MAAM/B,qBAAE0B;IACV,CAAA;IACAV,QAAQhB,qBAAE6B;EACZ,CAAA,EAAA;EAAI;gBALSC,aAAAA;AAMf,GAlCiBtB,iBAAAA,eAAAA,CAAAA,EAAAA;AAoDV,IAAMwB,WAAW,CAACf,WAA0CA,UAAU,QAAQA,kBAAkBC;",
|
|
6
|
+
"names": ["KANBAN_PLUGIN", "meta", "id", "name", "description", "icon", "source", "tags", "screenshots", "TypenameAnnotationId", "Symbol", "for", "PivotColumnAnnotationId", "CreateKanbanSchema", "S", "Struct", "optional", "String", "typename", "annotations", "TitleAnnotationId", "initialPivotColumn", "KanbanAction", "KANBAN_ACTION", "Create", "TaggedClass", "input", "extend", "space", "SpaceSchema", "output", "object", "KanbanType", "DeleteCardField", "kanban", "fieldId", "deletionData", "field", "FieldSchema", "props", "Any", "index", "Number", "Void", "DeleteCard", "card", "isKanban"]
|
|
7
|
+
}
|
package/dist/lib/node/index.cjs
CHANGED
|
@@ -28,12 +28,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
29
|
var node_exports = {};
|
|
30
30
|
__export(node_exports, {
|
|
31
|
-
KANBAN_PLUGIN: () =>
|
|
31
|
+
KANBAN_PLUGIN: () => import_chunk_ZRCL6XVF.KANBAN_PLUGIN,
|
|
32
32
|
KanbanPlugin: () => KanbanPlugin,
|
|
33
|
-
meta: () =>
|
|
33
|
+
meta: () => import_chunk_ZRCL6XVF.meta
|
|
34
34
|
});
|
|
35
35
|
module.exports = __toCommonJS(node_exports);
|
|
36
|
-
var
|
|
36
|
+
var import_chunk_ZRCL6XVF = require("./chunk-ZRCL6XVF.cjs");
|
|
37
37
|
var import_app_framework = require("@dxos/app-framework");
|
|
38
38
|
var import_plugin_client = require("@dxos/plugin-client");
|
|
39
39
|
var import_plugin_space = require("@dxos/plugin-space");
|
|
@@ -41,9 +41,9 @@ var import_types = require("@dxos/plugin-space/types");
|
|
|
41
41
|
var import_react_ui_kanban = require("@dxos/react-ui-kanban");
|
|
42
42
|
var import_app_framework2 = require("@dxos/app-framework");
|
|
43
43
|
var import_react_ui_kanban2 = require("@dxos/react-ui-kanban");
|
|
44
|
-
var ArtifactDefinition = (0, import_app_framework2.lazy)(() => import("./artifact-definition-
|
|
45
|
-
var IntentResolver = (0, import_app_framework2.lazy)(() => import("./intent-resolver-
|
|
46
|
-
var ReactSurface = (0, import_app_framework2.lazy)(() => import("./react-surface-
|
|
44
|
+
var ArtifactDefinition = (0, import_app_framework2.lazy)(() => import("./artifact-definition-ZOUZLESK.cjs"));
|
|
45
|
+
var IntentResolver = (0, import_app_framework2.lazy)(() => import("./intent-resolver-BCCCN7LD.cjs"));
|
|
46
|
+
var ReactSurface = (0, import_app_framework2.lazy)(() => import("./react-surface-LQ7CQFWF.cjs"));
|
|
47
47
|
var translations_default = [
|
|
48
48
|
{
|
|
49
49
|
"en-US": {
|
|
@@ -51,7 +51,7 @@ var translations_default = [
|
|
|
51
51
|
"typename label": "Kanban",
|
|
52
52
|
"object name placeholder": "New kanban"
|
|
53
53
|
},
|
|
54
|
-
[
|
|
54
|
+
[import_chunk_ZRCL6XVF.KANBAN_PLUGIN]: {
|
|
55
55
|
"plugin name": "Kanban",
|
|
56
56
|
"kanban title label": "Title",
|
|
57
57
|
"column title label": "Column title",
|
|
@@ -68,9 +68,9 @@ var translations_default = [
|
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
];
|
|
71
|
-
var KanbanPlugin = () => (0, import_app_framework.definePlugin)(
|
|
71
|
+
var KanbanPlugin = () => (0, import_app_framework.definePlugin)(import_chunk_ZRCL6XVF.meta, [
|
|
72
72
|
(0, import_app_framework.defineModule)({
|
|
73
|
-
id: `${
|
|
73
|
+
id: `${import_chunk_ZRCL6XVF.meta.id}/module/translations`,
|
|
74
74
|
activatesOn: import_app_framework.Events.SetupTranslations,
|
|
75
75
|
activate: () => (0, import_app_framework.contributes)(import_app_framework.Capabilities.Translations, [
|
|
76
76
|
...translations_default,
|
|
@@ -78,7 +78,7 @@ var KanbanPlugin = () => (0, import_app_framework.definePlugin)(import_chunk_3EU
|
|
|
78
78
|
])
|
|
79
79
|
}),
|
|
80
80
|
(0, import_app_framework.defineModule)({
|
|
81
|
-
id: `${
|
|
81
|
+
id: `${import_chunk_ZRCL6XVF.meta.id}/module/metadata`,
|
|
82
82
|
activatesOn: import_app_framework.Events.SetupMetadata,
|
|
83
83
|
activate: () => (0, import_app_framework.contributes)(import_app_framework.Capabilities.Metadata, {
|
|
84
84
|
id: import_react_ui_kanban.KanbanType.typename,
|
|
@@ -88,29 +88,29 @@ var KanbanPlugin = () => (0, import_app_framework.definePlugin)(import_chunk_3EU
|
|
|
88
88
|
})
|
|
89
89
|
}),
|
|
90
90
|
(0, import_app_framework.defineModule)({
|
|
91
|
-
id: `${
|
|
91
|
+
id: `${import_chunk_ZRCL6XVF.meta.id}/module/object-form`,
|
|
92
92
|
activatesOn: import_plugin_client.ClientEvents.SetupSchema,
|
|
93
93
|
activate: () => (0, import_app_framework.contributes)(import_plugin_space.SpaceCapabilities.ObjectForm, (0, import_types.defineObjectForm)({
|
|
94
94
|
objectSchema: import_react_ui_kanban.KanbanType,
|
|
95
|
-
formSchema:
|
|
96
|
-
getIntent: (props, options) => (0, import_app_framework.createIntent)(
|
|
95
|
+
formSchema: import_chunk_ZRCL6XVF.CreateKanbanSchema,
|
|
96
|
+
getIntent: (props, options) => (0, import_app_framework.createIntent)(import_chunk_ZRCL6XVF.KanbanAction.Create, {
|
|
97
97
|
...props,
|
|
98
98
|
space: options.space
|
|
99
99
|
})
|
|
100
100
|
}))
|
|
101
101
|
}),
|
|
102
102
|
(0, import_app_framework.defineModule)({
|
|
103
|
-
id: `${
|
|
103
|
+
id: `${import_chunk_ZRCL6XVF.meta.id}/module/react-surface`,
|
|
104
104
|
activatesOn: import_app_framework.Events.SetupReactSurface,
|
|
105
105
|
activate: ReactSurface
|
|
106
106
|
}),
|
|
107
107
|
(0, import_app_framework.defineModule)({
|
|
108
|
-
id: `${
|
|
108
|
+
id: `${import_chunk_ZRCL6XVF.meta.id}/module/intent-resolver`,
|
|
109
109
|
activatesOn: import_app_framework.Events.SetupIntentResolver,
|
|
110
110
|
activate: IntentResolver
|
|
111
111
|
}),
|
|
112
112
|
(0, import_app_framework.defineModule)({
|
|
113
|
-
id: `${
|
|
113
|
+
id: `${import_chunk_ZRCL6XVF.meta.id}/module/artifact-definition`,
|
|
114
114
|
activatesOn: import_app_framework.Events.SetupArtifactDefinition,
|
|
115
115
|
activate: ArtifactDefinition
|
|
116
116
|
})
|