@dxos/plugin-kanban 0.8.2-main.2f9c567 → 0.8.2-main.36232bc

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/dist/lib/browser/{artifact-definition-VGRBHXJ6.mjs → artifact-definition-SVNHDJQT.mjs} +10 -10
  2. package/dist/lib/browser/artifact-definition-SVNHDJQT.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-6JAA7YSW.mjs → chunk-K5BYEZ4Z.mjs} +35 -23
  4. package/dist/lib/browser/chunk-K5BYEZ4Z.mjs.map +7 -0
  5. package/dist/lib/browser/index.mjs +4 -4
  6. package/dist/lib/browser/intent-resolver-XCDQ5N3Q.mjs +132 -0
  7. package/dist/lib/browser/intent-resolver-XCDQ5N3Q.mjs.map +7 -0
  8. package/dist/lib/browser/meta.json +1 -1
  9. package/dist/lib/browser/{react-surface-H5UD7LKX.mjs → react-surface-R25PYWQV.mjs} +26 -56
  10. package/dist/lib/browser/react-surface-R25PYWQV.mjs.map +7 -0
  11. package/dist/lib/browser/types.mjs +3 -1
  12. package/dist/lib/node/{artifact-definition-KDTULJLX.cjs → artifact-definition-M2XAYUI2.cjs} +17 -17
  13. package/dist/lib/node/artifact-definition-M2XAYUI2.cjs.map +7 -0
  14. package/dist/lib/node/{chunk-O4U7ZQ2I.cjs → chunk-3EUR6ZR2.cjs} +38 -25
  15. package/dist/lib/node/chunk-3EUR6ZR2.cjs.map +7 -0
  16. package/dist/lib/node/index.cjs +16 -16
  17. package/dist/lib/node/intent-resolver-P3PSZO7H.cjs +146 -0
  18. package/dist/lib/node/intent-resolver-P3PSZO7H.cjs.map +7 -0
  19. package/dist/lib/node/meta.json +1 -1
  20. package/dist/lib/node/{react-surface-LKFQ3TZH.cjs → react-surface-FVM64YAQ.cjs} +31 -61
  21. package/dist/lib/node/react-surface-FVM64YAQ.cjs.map +7 -0
  22. package/dist/lib/node/types.cjs +8 -6
  23. package/dist/lib/node/types.cjs.map +2 -2
  24. package/dist/lib/node-esm/{artifact-definition-G2R5LF26.mjs → artifact-definition-HQ5I2OO5.mjs} +10 -10
  25. package/dist/lib/node-esm/artifact-definition-HQ5I2OO5.mjs.map +7 -0
  26. package/dist/lib/node-esm/{chunk-NOC32MF5.mjs → chunk-2N7CO3DI.mjs} +35 -23
  27. package/dist/lib/node-esm/chunk-2N7CO3DI.mjs.map +7 -0
  28. package/dist/lib/node-esm/index.mjs +4 -4
  29. package/dist/lib/node-esm/intent-resolver-4G47V67J.mjs +133 -0
  30. package/dist/lib/node-esm/intent-resolver-4G47V67J.mjs.map +7 -0
  31. package/dist/lib/node-esm/meta.json +1 -1
  32. package/dist/lib/node-esm/{react-surface-TUKDSY4T.mjs → react-surface-LZ7MP3CQ.mjs} +26 -56
  33. package/dist/lib/node-esm/react-surface-LZ7MP3CQ.mjs.map +7 -0
  34. package/dist/lib/node-esm/types.mjs +3 -1
  35. package/dist/types/src/capabilities/index.d.ts +1 -1
  36. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  37. package/dist/types/src/capabilities/intent-resolver.d.ts +2 -2
  38. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  39. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  40. package/dist/types/src/components/KanbanContainer.d.ts.map +1 -1
  41. package/dist/types/src/types.d.ts +41 -34
  42. package/dist/types/src/types.d.ts.map +1 -1
  43. package/package.json +25 -29
  44. package/src/capabilities/artifact-definition.ts +8 -8
  45. package/src/capabilities/intent-resolver.ts +6 -10
  46. package/src/capabilities/react-surface.tsx +12 -46
  47. package/src/components/KanbanContainer.tsx +8 -21
  48. package/src/types.ts +43 -26
  49. package/dist/lib/browser/artifact-definition-VGRBHXJ6.mjs.map +0 -7
  50. package/dist/lib/browser/chunk-6JAA7YSW.mjs.map +0 -7
  51. package/dist/lib/browser/intent-resolver-44SXCRIH.mjs +0 -297
  52. package/dist/lib/browser/intent-resolver-44SXCRIH.mjs.map +0 -7
  53. package/dist/lib/browser/react-surface-H5UD7LKX.mjs.map +0 -7
  54. package/dist/lib/node/artifact-definition-KDTULJLX.cjs.map +0 -7
  55. package/dist/lib/node/chunk-O4U7ZQ2I.cjs.map +0 -7
  56. package/dist/lib/node/intent-resolver-23TVN46D.cjs +0 -308
  57. package/dist/lib/node/intent-resolver-23TVN46D.cjs.map +0 -7
  58. package/dist/lib/node/react-surface-LKFQ3TZH.cjs.map +0 -7
  59. package/dist/lib/node-esm/artifact-definition-G2R5LF26.mjs.map +0 -7
  60. package/dist/lib/node-esm/chunk-NOC32MF5.mjs.map +0 -7
  61. package/dist/lib/node-esm/intent-resolver-SUADAOIJ.mjs +0 -298
  62. package/dist/lib/node-esm/intent-resolver-SUADAOIJ.mjs.map +0 -7
  63. package/dist/lib/node-esm/react-surface-TUKDSY4T.mjs.map +0 -7
  64. package/dist/types/src/components/KanbanContainer.stories.d.ts +0 -10
  65. package/dist/types/src/components/KanbanContainer.stories.d.ts.map +0 -1
  66. package/dist/types/src/testing/index.d.ts +0 -3
  67. package/dist/types/src/testing/index.d.ts.map +0 -1
  68. package/dist/types/src/testing/initialize-kanban.d.ts +0 -17
  69. package/dist/types/src/testing/initialize-kanban.d.ts.map +0 -1
  70. package/dist/types/src/testing/kanban-manager.d.ts +0 -7
  71. package/dist/types/src/testing/kanban-manager.d.ts.map +0 -1
  72. package/dist/types/src/testing/playwright/smoke.spec.d.ts +0 -2
  73. package/dist/types/src/testing/playwright/smoke.spec.d.ts.map +0 -1
  74. package/src/components/KanbanContainer.stories.tsx +0 -186
  75. package/src/testing/index.ts +0 -6
  76. package/src/testing/initialize-kanban.ts +0 -139
  77. package/src/testing/kanban-manager.ts +0 -13
  78. package/src/testing/playwright/playwright.config.cts +0 -18
  79. package/src/testing/playwright/smoke.spec.ts +0 -7
@@ -5,46 +5,32 @@ import {
5
5
  PivotColumnAnnotationId,
6
6
  TypenameAnnotationId,
7
7
  isKanban
8
- } from "./chunk-NOC32MF5.mjs";
8
+ } from "./chunk-2N7CO3DI.mjs";
9
9
 
10
10
  // packages/plugins/plugin-kanban/src/capabilities/react-surface.tsx
11
- import React3, { useMemo as useMemo3 } from "react";
12
- import { Capabilities, contributes, createSurface, useCapabilities } from "@dxos/app-framework";
13
- import { getTypenameOrThrow as getTypenameOrThrow2, toJsonSchema as toJsonSchema2 } from "@dxos/echo-schema";
11
+ import React3, { useMemo as useMemo2 } from "react";
12
+ import { Capabilities, contributes, createSurface } from "@dxos/app-framework";
14
13
  import { findAnnotation } from "@dxos/effect";
15
- import { ClientCapabilities } from "@dxos/plugin-client";
16
- import { useClient as useClient3 } from "@dxos/react-client";
17
14
  import { getSpace as getSpace3, isSpace } from "@dxos/react-client/echo";
18
15
  import { SelectInput as SelectInput2, useFormValues } from "@dxos/react-ui-form";
19
16
 
20
17
  // packages/plugins/plugin-kanban/src/components/KanbanContainer.tsx
21
- import React, { useCallback, useEffect, useMemo, useState } from "react";
18
+ import React, { useCallback, useEffect, useState } from "react";
22
19
  import { createIntent, useIntentDispatcher } from "@dxos/app-framework";
23
- import { EchoSchema, getTypenameOrThrow, toJsonSchema } from "@dxos/echo-schema";
24
20
  import { useGlobalFilteredObjects } from "@dxos/plugin-search";
25
- import { useClient } from "@dxos/react-client";
26
21
  import { Filter, useQuery, getSpace, live } from "@dxos/react-client/echo";
27
22
  import { useKanbanModel, Kanban } from "@dxos/react-ui-kanban";
28
23
  import { StackItem } from "@dxos/react-ui-stack";
29
24
  import { ViewProjection } from "@dxos/schema";
30
25
  var KanbanContainer = ({ kanban }) => {
31
- const client = useClient();
32
26
  const [cardSchema, setCardSchema] = useState();
33
27
  const [projection, setProjection] = useState();
34
28
  const space = getSpace(kanban);
35
29
  const { dispatchPromise: dispatch } = useIntentDispatcher();
36
- const jsonSchema = useMemo(() => cardSchema instanceof EchoSchema ? cardSchema.jsonSchema : cardSchema ? toJsonSchema(cardSchema) : void 0, [
37
- cardSchema
38
- ]);
39
30
  useEffect(() => {
40
- const typename = kanban.cardView?.target?.query?.typename;
41
- const staticSchema = client.graph.schemaRegistry.schemas.find((schema) => getTypenameOrThrow(schema) === typename);
42
- if (staticSchema) {
43
- setCardSchema(() => staticSchema);
44
- }
45
- if (!staticSchema && typename && space) {
31
+ if (kanban.cardView?.target?.query?.typename && space) {
46
32
  const query = space.db.schemaRegistry.query({
47
- typename
33
+ typename: kanban.cardView.target.query.typename
48
34
  });
49
35
  const unsubscribe = query.subscribe(() => {
50
36
  const [schema] = query.results;
@@ -61,12 +47,13 @@ var KanbanContainer = ({ kanban }) => {
61
47
  space
62
48
  ]);
63
49
  useEffect(() => {
64
- if (kanban.cardView?.target && jsonSchema) {
65
- setProjection(new ViewProjection(jsonSchema, kanban.cardView.target));
50
+ if (kanban.cardView?.target && cardSchema) {
51
+ setProjection(new ViewProjection(cardSchema.jsonSchema, kanban.cardView.target));
66
52
  }
67
53
  }, [
68
54
  kanban.cardView?.target,
69
- JSON.stringify(jsonSchema)
55
+ cardSchema,
56
+ JSON.stringify(cardSchema?.jsonSchema)
70
57
  ]);
71
58
  const objects = useQuery(space, cardSchema ? Filter.schema(cardSchema) : Filter.nothing());
72
59
  const filteredObjects = useGlobalFilteredObjects(objects);
@@ -105,11 +92,11 @@ var KanbanContainer = ({ kanban }) => {
105
92
  };
106
93
 
107
94
  // packages/plugins/plugin-kanban/src/components/KanbanViewEditor.tsx
108
- import React2, { useCallback as useCallback2, useMemo as useMemo2 } from "react";
95
+ import React2, { useCallback as useCallback2, useMemo } from "react";
109
96
  import { createIntent as createIntent2, useIntentDispatcher as useIntentDispatcher2 } from "@dxos/app-framework";
110
97
  import { FormatEnum } from "@dxos/echo-schema";
111
98
  import { invariant } from "@dxos/invariant";
112
- import { useClient as useClient2 } from "@dxos/react-client";
99
+ import { useClient } from "@dxos/react-client";
113
100
  import { Filter as Filter2, getSpace as getSpace2, useQuery as useQuery2, useSchema } from "@dxos/react-client/echo";
114
101
  import { ViewEditor, Form, SelectInput } from "@dxos/react-ui-form";
115
102
  import { KanbanSettingsSchema } from "@dxos/react-ui-kanban";
@@ -117,9 +104,9 @@ import { ViewType, ViewProjection as ViewProjection2 } from "@dxos/schema";
117
104
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-kanban/src/components/KanbanViewEditor.tsx";
118
105
  var KanbanViewEditor = ({ kanban }) => {
119
106
  const { dispatchPromise: dispatch } = useIntentDispatcher2();
120
- const client = useClient2();
107
+ const client = useClient();
121
108
  const space = getSpace2(kanban);
122
- const currentTypename = useMemo2(() => kanban?.cardView?.target?.query?.typename, [
109
+ const currentTypename = useMemo(() => kanban?.cardView?.target?.query?.typename, [
123
110
  kanban?.cardView?.target?.query?.typename
124
111
  ]);
125
112
  const schema = useSchema(client, space, currentTypename);
@@ -152,7 +139,7 @@ var KanbanViewEditor = ({ kanban }) => {
152
139
  dispatch,
153
140
  kanban
154
141
  ]);
155
- const projection = useMemo2(() => {
142
+ const projection = useMemo(() => {
156
143
  if (kanban?.cardView?.target && schema) {
157
144
  return new ViewProjection2(schema.jsonSchema, kanban.cardView.target);
158
145
  }
@@ -171,12 +158,12 @@ var KanbanViewEditor = ({ kanban }) => {
171
158
  }, [
172
159
  kanban
173
160
  ]);
174
- const initialValues = useMemo2(() => ({
161
+ const initialValues = useMemo(() => ({
175
162
  columnFieldId: kanban.columnFieldId
176
163
  }), [
177
164
  kanban.columnFieldId
178
165
  ]);
179
- const custom = useMemo2(() => ({
166
+ const custom = useMemo(() => ({
180
167
  columnFieldId: (props) => /* @__PURE__ */ React2.createElement(SelectInput, {
181
168
  ...props,
182
169
  options: selectFields
@@ -225,36 +212,23 @@ var react_surface_default = () => contributes(Capabilities.ReactSurface, [
225
212
  })
226
213
  }),
227
214
  createSurface({
228
- id: `${KANBAN_PLUGIN}/create-initial-schema-form`,
215
+ id: `${KANBAN_PLUGIN}/create-initial-schema-form-[schema]`,
229
216
  role: "form-input",
230
217
  filter: (data) => {
231
- if (data.prop !== "typename") {
232
- return false;
233
- }
234
218
  const annotation = findAnnotation(data.schema.ast, TypenameAnnotationId);
235
219
  return !!annotation;
236
220
  },
237
221
  component: ({ data: { target }, ...inputProps }) => {
238
- const client = useClient3();
239
222
  const props = inputProps;
240
223
  const space = isSpace(target) ? target : getSpace3(target);
241
224
  if (!space) {
242
225
  return null;
243
226
  }
244
- const schemaWhitelists = useCapabilities(ClientCapabilities.SchemaWhiteList);
245
- const whitelistedTypenames = useMemo3(() => new Set(schemaWhitelists.flatMap((typeArray) => typeArray.map((type) => type.typename))), [
246
- schemaWhitelists
247
- ]);
248
- const fixed = client.graph.schemaRegistry.schemas.filter((schema) => whitelistedTypenames.has(getTypenameOrThrow2(schema)));
249
- const dynamic = space?.db.schemaRegistry.query().runSync();
250
- const typenames = Array.from(/* @__PURE__ */ new Set([
251
- ...fixed.map((schema) => getTypenameOrThrow2(schema)),
252
- ...dynamic.map((schema) => schema.typename)
253
- ])).sort();
227
+ const schemata = space?.db.schemaRegistry.query().runSync();
254
228
  return /* @__PURE__ */ React3.createElement(SelectInput2, {
255
229
  ...props,
256
- options: typenames.map((typename) => ({
257
- value: typename
230
+ options: schemata.map((schema) => ({
231
+ value: schema.typename
258
232
  }))
259
233
  });
260
234
  }
@@ -273,17 +247,14 @@ var react_surface_default = () => contributes(Capabilities.ReactSurface, [
273
247
  return null;
274
248
  }
275
249
  const { typename } = useFormValues();
276
- const schemaWhitelists = useCapabilities(ClientCapabilities.SchemaWhiteList);
277
- const staticSchema = schemaWhitelists.flat().find((schema) => getTypenameOrThrow2(schema) === typename);
278
250
  const [selectedSchema] = space?.db.schemaRegistry.query({
279
251
  typename
280
252
  }).runSync();
281
- const singleSelectColumns = useMemo3(() => {
282
- const properties = staticSchema ? toJsonSchema2(staticSchema).properties : selectedSchema?.jsonSchema?.properties;
283
- if (!properties) {
253
+ const singleSelectColumns = useMemo2(() => {
254
+ if (!selectedSchema?.jsonSchema?.properties) {
284
255
  return [];
285
256
  }
286
- const columns = Object.entries(properties).reduce((acc, [key, value]) => {
257
+ const columns = Object.entries(selectedSchema.jsonSchema.properties).reduce((acc, [key, value]) => {
287
258
  if (typeof value === "object" && value?.format === "single-select") {
288
259
  acc.push(key);
289
260
  }
@@ -291,8 +262,7 @@ var react_surface_default = () => contributes(Capabilities.ReactSurface, [
291
262
  }, []);
292
263
  return columns;
293
264
  }, [
294
- selectedSchema?.jsonSchema,
295
- staticSchema
265
+ selectedSchema?.jsonSchema
296
266
  ]);
297
267
  if (!typename) {
298
268
  return null;
@@ -309,4 +279,4 @@ var react_surface_default = () => contributes(Capabilities.ReactSurface, [
309
279
  export {
310
280
  react_surface_default as default
311
281
  };
312
- //# sourceMappingURL=react-surface-TUKDSY4T.mjs.map
282
+ //# sourceMappingURL=react-surface-LZ7MP3CQ.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 } from '@dxos/app-framework';\nimport { type S } from '@dxos/echo-schema';\nimport { findAnnotation } from '@dxos/effect';\nimport { type CollectionType } from '@dxos/plugin-space/types';\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-[schema]`,\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, TypenameAnnotationId);\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\n const schemata = space?.db.schemaRegistry.query().runSync();\n return <SelectInput {...props} options={schemata.map((schema) => ({ value: schema.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 const [selectedSchema] = space?.db.schemaRegistry.query({ typename }).runSync();\n\n const singleSelectColumns = useMemo(() => {\n if (!selectedSchema?.jsonSchema?.properties) {\n return [];\n }\n\n const columns = Object.entries(selectedSchema.jsonSchema.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]);\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, useState } from 'react';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { type EchoSchema } from '@dxos/echo-schema';\nimport { useGlobalFilteredObjects } from '@dxos/plugin-search';\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 [cardSchema, setCardSchema] = useState<EchoSchema>();\n const [projection, setProjection] = useState<ViewProjection>();\n const space = getSpace(kanban);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n useEffect(() => {\n if (kanban.cardView?.target?.query?.typename && space) {\n const query = space.db.schemaRegistry.query({ typename: kanban.cardView.target.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 && cardSchema) {\n setProjection(new ViewProjection(cardSchema.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, cardSchema, JSON.stringify(cardSchema?.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", "findAnnotation", "getSpace", "isSpace", "SelectInput", "useFormValues", "React", "useCallback", "useEffect", "useState", "createIntent", "useIntentDispatcher", "useGlobalFilteredObjects", "Filter", "useQuery", "getSpace", "live", "useKanbanModel", "Kanban", "StackItem", "ViewProjection", "KanbanContainer", "kanban", "cardSchema", "setCardSchema", "useState", "projection", "setProjection", "space", "getSpace", "dispatchPromise", "dispatch", "useIntentDispatcher", "useEffect", "cardView", "target", "query", "typename", "db", "schemaRegistry", "unsubscribe", "subscribe", "schema", "results", "fire", "ViewProjection", "jsonSchema", "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", "annotation", "findAnnotation", "schema", "ast", "TypenameAnnotationId", "target", "inputProps", "props", "space", "isSpace", "getSpace", "schemata", "db", "schemaRegistry", "query", "runSync", "SelectInput", "options", "map", "value", "typename", "PivotColumnAnnotationId", "useFormValues", "selectedSchema", "singleSelectColumns", "useMemo", "jsonSchema", "properties", "columns", "Object", "entries", "reduce", "acc", "key", "format", "push", "column"]
7
+ }
@@ -4,13 +4,15 @@ import {
4
4
  KanbanAction,
5
5
  PivotColumnAnnotationId,
6
6
  TypenameAnnotationId,
7
+ createKanban,
7
8
  isKanban
8
- } from "./chunk-NOC32MF5.mjs";
9
+ } from "./chunk-2N7CO3DI.mjs";
9
10
  export {
10
11
  CreateKanbanSchema,
11
12
  KanbanAction,
12
13
  PivotColumnAnnotationId,
13
14
  TypenameAnnotationId,
15
+ createKanban,
14
16
  isKanban
15
17
  };
16
18
  //# sourceMappingURL=types.mjs.map
@@ -1,4 +1,4 @@
1
1
  export declare const ArtifactDefinition: (props?: unknown) => Promise<() => Promise<import("@dxos/app-framework").Capability<import("@dxos/artifact").ArtifactDefinition> | import("@dxos/app-framework").AnyCapability[]>>;
2
- export declare const IntentResolver: (props?: import("@dxos/app-framework").PluginsContext | undefined) => Promise<() => Promise<import("@dxos/app-framework").Capability<import("@dxos/app-framework").Capabilities.IntentResolver> | import("@dxos/app-framework").AnyCapability[]>>;
2
+ export declare const IntentResolver: (props?: unknown) => Promise<() => Promise<import("@dxos/app-framework").Capability<import("@dxos/app-framework").Capabilities.IntentResolver> | import("@dxos/app-framework").AnyCapability[]>>;
3
3
  export declare const ReactSurface: (props?: unknown) => Promise<() => Promise<import("@dxos/app-framework").Capability<import("@dxos/app-framework").Capabilities.ReactSurface> | import("@dxos/app-framework").AnyCapability[]>>;
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/index.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,kBAAkB,oLAA8C,CAAC;AAC9E,eAAO,MAAM,cAAc,mPAA0C,CAAC;AACtE,eAAO,MAAM,YAAY,gMAAwC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/index.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,kBAAkB,oLAA8C,CAAC;AAC9E,eAAO,MAAM,cAAc,kMAA0C,CAAC;AACtE,eAAO,MAAM,YAAY,gMAAwC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { Capabilities, type PluginsContext } from '@dxos/app-framework';
2
- declare const _default: (context: PluginsContext) => import("@dxos/app-framework").Capability<Capabilities.IntentResolver>;
1
+ import { Capabilities } from '@dxos/app-framework';
2
+ declare const _default: () => import("@dxos/app-framework").Capability<Capabilities.IntentResolver>;
3
3
  export default _default;
4
4
  //# sourceMappingURL=intent-resolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"intent-resolver.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/intent-resolver.ts"],"names":[],"mappings":"AAIA,OAAO,EAAe,YAAY,EAAkB,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;kCAU5E,cAAc;AAAvC,wBAwDK"}
1
+ {"version":3,"file":"intent-resolver.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/intent-resolver.ts"],"names":[],"mappings":"AAIA,OAAO,EAAe,YAAY,EAAkB,MAAM,qBAAqB,CAAC;;AAQhF,wBAsDK"}
@@ -1 +1 @@
1
- {"version":3,"file":"react-surface.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/react-surface.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAA+C,MAAM,qBAAqB,CAAC;;AAchG,wBAqGK"}
1
+ {"version":3,"file":"react-surface.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/react-surface.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAA8B,MAAM,qBAAqB,CAAC;;AAY/E,wBAsEK"}
@@ -1 +1 @@
1
- {"version":3,"file":"KanbanContainer.d.ts","sourceRoot":"","sources":["../../../../src/components/KanbanContainer.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAoD,MAAM,OAAO,CAAC;AAOzE,OAAO,EAAE,KAAK,UAAU,EAA0B,MAAM,uBAAuB,CAAC;AAMhF,eAAO,MAAM,eAAe,eAAgB;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,sBA2E/E,CAAC"}
1
+ {"version":3,"file":"KanbanContainer.d.ts","sourceRoot":"","sources":["../../../../src/components/KanbanContainer.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAMhE,OAAO,EAAE,KAAK,UAAU,EAA0B,MAAM,uBAAuB,CAAC;AAMhF,eAAO,MAAM,eAAe,eAAgB;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,sBA+D/E,CAAC"}
@@ -1,4 +1,5 @@
1
- import { Schema } from 'effect';
1
+ import { S } from '@dxos/echo-schema';
2
+ import { type Space } from '@dxos/react-client/echo';
2
3
  import { KanbanType } from '@dxos/react-ui-kanban';
3
4
  /**
4
5
  * Kanban data model.
@@ -10,58 +11,58 @@ import { KanbanType } from '@dxos/react-ui-kanban';
10
11
  */
11
12
  export declare const TypenameAnnotationId: unique symbol;
12
13
  export declare const PivotColumnAnnotationId: unique symbol;
13
- export declare const CreateKanbanSchema: Schema.Struct<{
14
- name: Schema.optional<typeof Schema.String>;
15
- typename: Schema.optional<Schema.SchemaClass<string, string, never>>;
16
- initialPivotColumn: Schema.optional<Schema.SchemaClass<string, string, never>>;
14
+ export declare const CreateKanbanSchema: S.Struct<{
15
+ name: S.optional<typeof S.String>;
16
+ typename: S.optional<S.SchemaClass<string, string, never>>;
17
+ initialPivotColumn: S.optional<S.SchemaClass<string, string, never>>;
17
18
  }>;
18
- export type CreateKanbanType = Schema.Schema.Type<typeof CreateKanbanSchema>;
19
+ export type CreateKanbanType = S.Schema.Type<typeof CreateKanbanSchema>;
19
20
  export declare namespace KanbanAction {
20
- const Create_base: Schema.TaggedClass<Create, "dxos.org/plugin/kanban/action/create", {
21
- readonly _tag: Schema.tag<"dxos.org/plugin/kanban/action/create">;
21
+ const Create_base: S.TaggedClass<Create, "dxos.org/plugin/kanban/action/create", {
22
+ readonly _tag: S.tag<"dxos.org/plugin/kanban/action/create">;
22
23
  } & {
23
- input: Schema.extend<Schema.Struct<{
24
- space: Schema.Schema<import("@dxos/client-protocol").Space, import("@dxos/client-protocol").Space, never>;
25
- }>, Schema.Struct<{
26
- name: Schema.optional<typeof Schema.String>;
27
- typename: Schema.optional<Schema.SchemaClass<string, string, never>>;
28
- initialPivotColumn: Schema.optional<Schema.SchemaClass<string, string, never>>;
24
+ input: S.extend<S.Struct<{
25
+ space: S.Schema<Space, Space, never>;
26
+ }>, S.Struct<{
27
+ name: S.optional<typeof S.String>;
28
+ typename: S.optional<S.SchemaClass<string, string, never>>;
29
+ initialPivotColumn: S.optional<S.SchemaClass<string, string, never>>;
29
30
  }>>;
30
- output: Schema.Struct<{
31
+ output: S.Struct<{
31
32
  object: typeof KanbanType;
32
33
  }>;
33
34
  }>;
34
35
  export class Create extends Create_base {
35
36
  }
36
- const DeleteCardField_base: Schema.TaggedClass<DeleteCardField, "dxos.org/plugin/kanban/action/delete-card-field", {
37
- readonly _tag: Schema.tag<"dxos.org/plugin/kanban/action/delete-card-field">;
37
+ const DeleteCardField_base: S.TaggedClass<DeleteCardField, "dxos.org/plugin/kanban/action/delete-card-field", {
38
+ readonly _tag: S.tag<"dxos.org/plugin/kanban/action/delete-card-field">;
38
39
  } & {
39
- input: Schema.Struct<{
40
+ input: S.Struct<{
40
41
  kanban: typeof KanbanType;
41
- fieldId: typeof Schema.String;
42
- deletionData: Schema.optional<Schema.Struct<{
43
- field: Schema.mutable<Schema.Struct<{
44
- id: typeof Schema.String;
45
- path: Schema.Schema<import("@dxos/effect").JsonPath, import("@dxos/effect").JsonPath, never>;
46
- visible: Schema.optional<typeof Schema.Boolean>;
47
- size: Schema.optional<typeof Schema.Number>;
48
- referencePath: Schema.optional<Schema.Schema<import("@dxos/effect").JsonPath, import("@dxos/effect").JsonPath, never>>;
42
+ fieldId: typeof S.String;
43
+ deletionData: S.optional<S.Struct<{
44
+ field: S.mutable<S.Struct<{
45
+ id: typeof S.String;
46
+ path: S.Schema<import("@dxos/effect").JsonPath, import("@dxos/effect").JsonPath, never>;
47
+ visible: S.optional<typeof S.Boolean>;
48
+ size: S.optional<typeof S.Number>;
49
+ referencePath: S.optional<S.Schema<import("@dxos/effect").JsonPath, import("@dxos/effect").JsonPath, never>>;
49
50
  }>>;
50
- props: typeof Schema.Any;
51
- index: typeof Schema.Number;
51
+ props: typeof S.Any;
52
+ index: typeof S.Number;
52
53
  }>>;
53
54
  }>;
54
- output: typeof Schema.Void;
55
+ output: typeof S.Void;
55
56
  }>;
56
57
  export class DeleteCardField extends DeleteCardField_base {
57
58
  }
58
- const DeleteCard_base: Schema.TaggedClass<DeleteCard, "dxos.org/plugin/kanban/action/delete-card", {
59
- readonly _tag: Schema.tag<"dxos.org/plugin/kanban/action/delete-card">;
59
+ const DeleteCard_base: S.TaggedClass<DeleteCard, "dxos.org/plugin/kanban/action/delete-card", {
60
+ readonly _tag: S.tag<"dxos.org/plugin/kanban/action/delete-card">;
60
61
  } & {
61
- input: Schema.Struct<{
62
- card: typeof Schema.Any;
62
+ input: S.Struct<{
63
+ card: typeof S.Any;
63
64
  }>;
64
- output: typeof Schema.Void;
65
+ output: typeof S.Void;
65
66
  }>;
66
67
  export class DeleteCard extends DeleteCard_base {
67
68
  }
@@ -74,4 +75,10 @@ export type Location = {
74
75
  idx?: number;
75
76
  };
76
77
  export declare const isKanban: (object: unknown) => object is KanbanType;
78
+ export declare const createKanban: ({ space, name, typename, initialPivotColumn, }: {
79
+ space: Space;
80
+ name?: string;
81
+ typename?: string;
82
+ initialPivotColumn?: string;
83
+ }) => Promise<KanbanType>;
77
84
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAa,MAAM,QAAQ,CAAC;AAG3C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAKnD;;;;;;;GAOG;AAGH,eAAO,MAAM,oBAAoB,eAAwD,CAAC;AAC1F,eAAO,MAAM,uBAAuB,eAA2D,CAAC;AAEhG,eAAO,MAAM,kBAAkB;;;;EAc7B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE7E,yBAAiB,YAAY,CAAC;;;;;;;;;;;;;;;IAG5B,MAAM,OAAO,MAAO,SAAQ,WAK1B;KAAG;;;;;;;;;+BAtCa,OACd,MAAM;0BAAW,OAAQ,MAAM;6BAAyC,OAAQ,QACpF,QAAO,OAAQ,OAAO;0BAAY,OAAQ,QAAQ,QACnD,OAAM,MAAM;mCAAqB,OAAQ,QAAQ,CAAC,OAAO,MAAM;;;;;;;;IAqC9D,MAAM,OAAO,eAAgB,SAAQ,oBAgBnC;KAAG;;;;;;;;;IAEL,MAAM,OAAO,UAAW,SAAQ,eAK9B;KAAG;;CACN;AAUD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,QAAQ,WAAY,OAAO,KAAG,MAAM,IAAI,UAA4D,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AACtC,OAAO,EAAE,KAAK,KAAK,EAAe,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAMnD;;;;;;;GAOG;AAGH,eAAO,MAAM,oBAAoB,eAAwD,CAAC;AAC1F,eAAO,MAAM,uBAAuB,eAA2D,CAAC;AAEhG,eAAO,MAAM,kBAAkB;;;;EAc7B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAExE,yBAAiB,YAAY,CAAC;;;;;;;;;;;;;;;IAG5B,MAAM,OAAO,MAAO,SAAQ,WAK1B;KAAG;;;;;;;;;+BA5CE,EAAG,MAAM;0BAAW,EAAI,MAAK;6BACzB,EAAG,QAAQ,QAAO,EAAG,OAAO;0BAEhC,EAAE,QAAQ,QAAO,EAAI,MAAK;mCAGxB,EAAI,QACf,CAAC,EAAE,MAAM;;;;;;;;IAuCP,MAAM,OAAO,eAAgB,SAAQ,oBAgBnC;KAAG;;;;;;;;;IAEL,MAAM,OAAO,UAAW,SAAQ,eAK9B;KAAG;;CACN;AAUD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,QAAQ,WAAY,OAAO,KAAG,MAAM,IAAI,UAA4D,CAAC;AAElH,eAAO,MAAM,YAAY,mDAKtB;IACD,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,wBAGA,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-kanban",
3
- "version": "0.8.2-main.2f9c567",
3
+ "version": "0.8.2-main.36232bc",
4
4
  "description": "Kanban DXOS Surface plugin",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -34,25 +34,24 @@
34
34
  ],
35
35
  "dependencies": {
36
36
  "@preact/signals-core": "^1.6.0",
37
- "effect": "3.14.21",
38
- "@dxos/artifact": "0.8.2-main.2f9c567",
39
- "@dxos/echo-schema": "0.8.2-main.2f9c567",
40
- "@dxos/async": "0.8.2-main.2f9c567",
41
- "@dxos/app-framework": "0.8.2-main.2f9c567",
42
- "@dxos/invariant": "0.8.2-main.2f9c567",
43
- "@dxos/assistant": "0.8.2-main.2f9c567",
44
- "@dxos/effect": "0.8.2-main.2f9c567",
45
- "@dxos/plugin-client": "0.8.2-main.2f9c567",
46
- "@dxos/plugin-graph": "0.8.2-main.2f9c567",
47
- "@dxos/plugin-search": "0.8.2-main.2f9c567",
48
- "@dxos/plugin-space": "0.8.2-main.2f9c567",
49
- "@dxos/random": "0.8.2-main.2f9c567",
50
- "@dxos/react-ui-form": "0.8.2-main.2f9c567",
51
- "@dxos/react-client": "0.8.2-main.2f9c567",
52
- "@dxos/react-ui-stack": "0.8.2-main.2f9c567",
53
- "@dxos/schema": "0.8.2-main.2f9c567",
54
- "@dxos/util": "0.8.2-main.2f9c567",
55
- "@dxos/react-ui-kanban": "0.8.2-main.2f9c567"
37
+ "@dxos/app-framework": "0.8.2-main.36232bc",
38
+ "@dxos/assistant": "0.8.2-main.36232bc",
39
+ "@dxos/async": "0.8.2-main.36232bc",
40
+ "@dxos/artifact": "0.8.2-main.36232bc",
41
+ "@dxos/echo-schema": "0.8.2-main.36232bc",
42
+ "@dxos/invariant": "0.8.2-main.36232bc",
43
+ "@dxos/effect": "0.8.2-main.36232bc",
44
+ "@dxos/plugin-graph": "0.8.2-main.36232bc",
45
+ "@dxos/plugin-search": "0.8.2-main.36232bc",
46
+ "@dxos/plugin-space": "0.8.2-main.36232bc",
47
+ "@dxos/plugin-client": "0.8.2-main.36232bc",
48
+ "@dxos/random": "0.8.2-main.36232bc",
49
+ "@dxos/react-client": "0.8.2-main.36232bc",
50
+ "@dxos/react-ui-form": "0.8.2-main.36232bc",
51
+ "@dxos/react-ui-kanban": "0.8.2-main.36232bc",
52
+ "@dxos/react-ui-stack": "0.8.2-main.36232bc",
53
+ "@dxos/schema": "0.8.2-main.36232bc",
54
+ "@dxos/util": "0.8.2-main.36232bc"
56
55
  },
57
56
  "devDependencies": {
58
57
  "@types/react": "~18.2.0",
@@ -60,19 +59,16 @@
60
59
  "react": "~18.2.0",
61
60
  "react-dom": "~18.2.0",
62
61
  "vite": "5.4.7",
63
- "@dxos/plugin-preview": "0.8.2-main.2f9c567",
64
- "@dxos/plugin-theme": "0.8.2-main.2f9c567",
65
- "@dxos/react-ui": "0.8.2-main.2f9c567",
66
- "@dxos/react-ui-syntax-highlighter": "0.8.2-main.2f9c567",
67
- "@dxos/react-ui-theme": "0.8.2-main.2f9c567",
68
- "@dxos/storybook-utils": "0.8.2-main.2f9c567"
62
+ "@dxos/react-ui-theme": "0.8.2-main.36232bc",
63
+ "@dxos/storybook-utils": "0.8.2-main.36232bc",
64
+ "@dxos/react-ui": "0.8.2-main.36232bc"
69
65
  },
70
66
  "peerDependencies": {
71
- "effect": "^3.13.3",
67
+ "effect": "3.13.3",
72
68
  "react": "~18.2.0",
73
69
  "react-dom": "~18.2.0",
74
- "@dxos/react-ui": "0.8.2-main.2f9c567",
75
- "@dxos/react-ui-theme": "0.8.2-main.2f9c567"
70
+ "@dxos/react-ui": "0.8.2-main.36232bc",
71
+ "@dxos/react-ui-theme": "0.8.2-main.36232bc"
76
72
  },
77
73
  "publishConfig": {
78
74
  "access": "public"
@@ -2,12 +2,12 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Schema, pipe } from 'effect';
5
+ import { pipe } from 'effect';
6
6
 
7
7
  import { Capabilities, chain, contributes, createIntent, type PromiseIntentDispatcher } from '@dxos/app-framework';
8
8
  import { defineArtifact, defineTool, ToolResult } from '@dxos/artifact';
9
9
  import { createArtifactElement } from '@dxos/assistant';
10
- import { isInstanceOf } from '@dxos/echo-schema';
10
+ import { isInstanceOf, S } from '@dxos/echo-schema';
11
11
  import { invariant } from '@dxos/invariant';
12
12
  import { SpaceAction } from '@dxos/plugin-space/types';
13
13
  import { Filter, fullyQualifiedId, type Space } from '@dxos/react-client/echo';
@@ -16,7 +16,7 @@ import { KanbanType } from '@dxos/react-ui-kanban';
16
16
  import { meta } from '../meta';
17
17
  import { KanbanAction } from '../types';
18
18
 
19
- const QualifiedId = Schema.String.annotations({
19
+ const QualifiedId = S.String.annotations({
20
20
  description: 'The fully qualified ID of the kanban `spaceID:objectID`',
21
21
  });
22
22
 
@@ -44,11 +44,11 @@ export default () => {
44
44
  Create a new kanban board using an existing schema.
45
45
  Use schema_create first to create a schema, or schema_list to choose an existing one.`,
46
46
  caption: 'Creating kanban board...',
47
- schema: Schema.Struct({
48
- typename: Schema.String.annotations({
47
+ schema: S.Struct({
48
+ typename: S.String.annotations({
49
49
  description: 'The fully qualified typename of the schema to use for the kanban cards.',
50
50
  }),
51
- pivotColumn: Schema.optional(Schema.String).annotations({
51
+ pivotColumn: S.optional(S.String).annotations({
52
52
  description: 'Optional field name to use as the column pivot.',
53
53
  }),
54
54
  }),
@@ -83,7 +83,7 @@ export default () => {
83
83
  name: 'list',
84
84
  description: 'List all kanban boards in the current space.',
85
85
  caption: 'Listing kanban boards...',
86
- schema: Schema.Struct({}),
86
+ schema: S.Struct({}),
87
87
  execute: async (_input, { extensions }) => {
88
88
  invariant(extensions?.space, 'No space');
89
89
  const space = extensions.space;
@@ -106,7 +106,7 @@ export default () => {
106
106
  name: 'inspect',
107
107
  description: 'Get details about a specific kanban board.',
108
108
  caption: 'Inspecting kanban board...',
109
- schema: Schema.Struct({ id: QualifiedId }),
109
+ schema: S.Struct({ id: QualifiedId }),
110
110
  execute: async ({ id }, { extensions }) => {
111
111
  invariant(extensions?.space, 'No space');
112
112
  const space = extensions.space;
@@ -2,25 +2,21 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { contributes, Capabilities, createResolver, type PluginsContext } from '@dxos/app-framework';
5
+ import { contributes, Capabilities, createResolver } from '@dxos/app-framework';
6
6
  import { invariant } from '@dxos/invariant';
7
- import { ClientCapabilities } from '@dxos/plugin-client';
8
7
  import { getSpace } from '@dxos/react-client/echo';
9
8
  import { ViewProjection } from '@dxos/schema';
10
9
 
11
10
  import { KANBAN_PLUGIN } from '../meta';
12
- import { initializeKanban } from '../testing';
13
- import { KanbanAction } from '../types';
11
+ import { createKanban, KanbanAction } from '../types';
14
12
 
15
- export default (context: PluginsContext) =>
13
+ export default () =>
16
14
  contributes(Capabilities.IntentResolver, [
17
15
  createResolver({
18
16
  intent: KanbanAction.Create,
19
- resolve: async ({ space, name, typename, initialPivotColumn }) => {
20
- const client = context.requestCapability(ClientCapabilities.Client);
21
- const { kanban } = await initializeKanban({ client, space, name, typename, initialPivotColumn });
22
- return { data: { object: kanban } };
23
- },
17
+ resolve: async ({ space, name, typename, initialPivotColumn }) => ({
18
+ data: { object: await createKanban({ space, name, typename, initialPivotColumn }) },
19
+ }),
24
20
  }),
25
21
  createResolver({
26
22
  intent: KanbanAction.DeleteCardField,