@dxos/plugin-kanban 0.8.4-main.c4373fc → 0.8.4-main.c85a9c8dae

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (225) hide show
  1. package/dist/lib/browser/KanbanContainer-BCXSJ6KS.mjs +304 -0
  2. package/dist/lib/browser/KanbanContainer-BCXSJ6KS.mjs.map +7 -0
  3. package/dist/lib/browser/KanbanViewEditor-IH5CJ6BW.mjs +66 -0
  4. package/dist/lib/browser/KanbanViewEditor-IH5CJ6BW.mjs.map +7 -0
  5. package/dist/lib/browser/blueprint-definition-HFEKGFJK.mjs +17 -0
  6. package/dist/lib/browser/blueprint-definition-HFEKGFJK.mjs.map +7 -0
  7. package/dist/lib/browser/blueprints/index.mjs +8 -0
  8. package/dist/lib/browser/blueprints/index.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  10. package/dist/lib/browser/chunk-J5LGTIGS.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-QSWCFMEB.mjs +385 -0
  12. package/dist/lib/browser/chunk-QSWCFMEB.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-RNFIFE2P.mjs +213 -0
  14. package/dist/lib/browser/chunk-RNFIFE2P.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-TLYZSC7O.mjs +29 -0
  16. package/dist/lib/browser/chunk-TLYZSC7O.mjs.map +7 -0
  17. package/dist/lib/browser/index.mjs +65 -68
  18. package/dist/lib/browser/index.mjs.map +4 -4
  19. package/dist/lib/browser/meta.json +1 -1
  20. package/dist/lib/browser/operation-resolver-BRA2OHUE.mjs +162 -0
  21. package/dist/lib/browser/operation-resolver-BRA2OHUE.mjs.map +7 -0
  22. package/dist/lib/browser/react-surface-FOMOGFVW.mjs +99 -0
  23. package/dist/lib/browser/react-surface-FOMOGFVW.mjs.map +7 -0
  24. package/dist/lib/browser/types/index.mjs +14 -5
  25. package/dist/lib/node-esm/KanbanContainer-EHRTLE7M.mjs +305 -0
  26. package/dist/lib/node-esm/KanbanContainer-EHRTLE7M.mjs.map +7 -0
  27. package/dist/lib/node-esm/KanbanViewEditor-WDACFC35.mjs +67 -0
  28. package/dist/lib/node-esm/KanbanViewEditor-WDACFC35.mjs.map +7 -0
  29. package/dist/lib/node-esm/blueprint-definition-NARBX32U.mjs +18 -0
  30. package/dist/lib/node-esm/blueprint-definition-NARBX32U.mjs.map +7 -0
  31. package/dist/lib/node-esm/blueprints/index.mjs +9 -0
  32. package/dist/lib/node-esm/blueprints/index.mjs.map +7 -0
  33. package/dist/lib/node-esm/chunk-4AWDHQVY.mjs +214 -0
  34. package/dist/lib/node-esm/chunk-4AWDHQVY.mjs.map +7 -0
  35. package/dist/lib/node-esm/chunk-CSL3HF2X.mjs +386 -0
  36. package/dist/lib/node-esm/chunk-CSL3HF2X.mjs.map +7 -0
  37. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  38. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  39. package/dist/lib/node-esm/chunk-X3UJUQIV.mjs +31 -0
  40. package/dist/lib/node-esm/chunk-X3UJUQIV.mjs.map +7 -0
  41. package/dist/lib/node-esm/index.mjs +65 -68
  42. package/dist/lib/node-esm/index.mjs.map +4 -4
  43. package/dist/lib/node-esm/meta.json +1 -1
  44. package/dist/lib/node-esm/operation-resolver-UEQ64LCN.mjs +163 -0
  45. package/dist/lib/node-esm/operation-resolver-UEQ64LCN.mjs.map +7 -0
  46. package/dist/lib/node-esm/react-surface-AITKFRBE.mjs +100 -0
  47. package/dist/lib/node-esm/react-surface-AITKFRBE.mjs.map +7 -0
  48. package/dist/lib/node-esm/types/index.mjs +14 -5
  49. package/dist/types/src/KanbanPlugin.d.ts +2 -1
  50. package/dist/types/src/KanbanPlugin.d.ts.map +1 -1
  51. package/dist/types/src/blueprints/index.d.ts +2 -0
  52. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  53. package/dist/types/src/blueprints/kanban-blueprint.d.ts +4 -0
  54. package/dist/types/src/blueprints/kanban-blueprint.d.ts.map +1 -0
  55. package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts +12 -0
  56. package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts.map +1 -0
  57. package/dist/types/src/capabilities/artifact-definition/index.d.ts +3 -0
  58. package/dist/types/src/capabilities/artifact-definition/index.d.ts.map +1 -0
  59. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +6 -0
  60. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -0
  61. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +3 -0
  62. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -0
  63. package/dist/types/src/capabilities/index.d.ts +3 -3
  64. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  65. package/dist/types/src/capabilities/operation-resolver/index.d.ts +3 -0
  66. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -0
  67. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +5 -0
  68. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -0
  69. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  70. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  71. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  72. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  73. package/dist/types/src/components/KanbanBoard/KanbanBoard.d.ts +58 -0
  74. package/dist/types/src/components/KanbanBoard/KanbanBoard.d.ts.map +1 -0
  75. package/dist/types/src/components/KanbanBoard/KanbanBoard.stories.d.ts +70 -0
  76. package/dist/types/src/components/KanbanBoard/KanbanBoard.stories.d.ts.map +1 -0
  77. package/dist/types/src/components/KanbanBoard/KanbanCard.d.ts +10 -0
  78. package/dist/types/src/components/KanbanBoard/KanbanCard.d.ts.map +1 -0
  79. package/dist/types/src/components/KanbanBoard/KanbanColumn.d.ts +9 -0
  80. package/dist/types/src/components/KanbanBoard/KanbanColumn.d.ts.map +1 -0
  81. package/dist/types/src/components/KanbanBoard/index.d.ts +2 -0
  82. package/dist/types/src/components/KanbanBoard/index.d.ts.map +1 -0
  83. package/dist/types/src/components/index.d.ts +1 -2
  84. package/dist/types/src/components/index.d.ts.map +1 -1
  85. package/dist/types/src/containers/KanbanContainer/KanbanContainer.d.ts +6 -0
  86. package/dist/types/src/containers/KanbanContainer/KanbanContainer.d.ts.map +1 -0
  87. package/dist/types/src/containers/KanbanContainer/KanbanContainer.stories.d.ts +77 -0
  88. package/dist/types/src/containers/KanbanContainer/KanbanContainer.stories.d.ts.map +1 -0
  89. package/dist/types/src/containers/KanbanContainer/index.d.ts +3 -0
  90. package/dist/types/src/containers/KanbanContainer/index.d.ts.map +1 -0
  91. package/dist/types/src/containers/KanbanViewEditor/KanbanViewEditor.d.ts +6 -0
  92. package/dist/types/src/containers/KanbanViewEditor/KanbanViewEditor.d.ts.map +1 -0
  93. package/dist/types/src/containers/KanbanViewEditor/index.d.ts +3 -0
  94. package/dist/types/src/containers/KanbanViewEditor/index.d.ts.map +1 -0
  95. package/dist/types/src/containers/index.d.ts +4 -0
  96. package/dist/types/src/containers/index.d.ts.map +1 -0
  97. package/dist/types/src/hooks/index.d.ts +6 -0
  98. package/dist/types/src/hooks/index.d.ts.map +1 -0
  99. package/dist/types/src/hooks/useEchoChangeCallback.d.ts +13 -0
  100. package/dist/types/src/hooks/useEchoChangeCallback.d.ts.map +1 -0
  101. package/dist/types/src/hooks/useKanbanBoardModel.d.ts +16 -0
  102. package/dist/types/src/hooks/useKanbanBoardModel.d.ts.map +1 -0
  103. package/dist/types/src/hooks/useKanbanBoardModel.test.d.ts +2 -0
  104. package/dist/types/src/hooks/useKanbanBoardModel.test.d.ts.map +1 -0
  105. package/dist/types/src/hooks/useKanbanColumnEventHandler.d.ts +22 -0
  106. package/dist/types/src/hooks/useKanbanColumnEventHandler.d.ts.map +1 -0
  107. package/dist/types/src/hooks/useKanbanItemEventHandler.d.ts +19 -0
  108. package/dist/types/src/hooks/useKanbanItemEventHandler.d.ts.map +1 -0
  109. package/dist/types/src/hooks/useProjectionModel.d.ts +15 -0
  110. package/dist/types/src/hooks/useProjectionModel.d.ts.map +1 -0
  111. package/dist/types/src/meta.d.ts +2 -2
  112. package/dist/types/src/meta.d.ts.map +1 -1
  113. package/dist/types/src/playwright/board-manager.d.ts +5 -0
  114. package/dist/types/src/playwright/board-manager.d.ts.map +1 -0
  115. package/dist/types/src/playwright/playwright.config.d.ts +3 -0
  116. package/dist/types/src/playwright/playwright.config.d.ts.map +1 -0
  117. package/dist/types/src/playwright/smoke.spec.d.ts +2 -0
  118. package/dist/types/src/playwright/smoke.spec.d.ts.map +1 -0
  119. package/dist/types/src/testing/KanbanCardTileSimple.d.ts +5 -0
  120. package/dist/types/src/testing/KanbanCardTileSimple.d.ts.map +1 -0
  121. package/dist/types/src/testing/index.d.ts +2 -0
  122. package/dist/types/src/testing/index.d.ts.map +1 -0
  123. package/dist/types/src/translations.d.ts +35 -9
  124. package/dist/types/src/translations.d.ts.map +1 -1
  125. package/dist/types/src/types/Kanban.d.ts +37 -0
  126. package/dist/types/src/types/Kanban.d.ts.map +1 -0
  127. package/dist/types/src/types/constants.d.ts +6 -0
  128. package/dist/types/src/types/constants.d.ts.map +1 -0
  129. package/dist/types/src/types/index.d.ts +2 -0
  130. package/dist/types/src/types/index.d.ts.map +1 -1
  131. package/dist/types/src/types/schema.d.ts +98 -43
  132. package/dist/types/src/types/schema.d.ts.map +1 -1
  133. package/dist/types/src/types/types.d.ts +28 -0
  134. package/dist/types/src/types/types.d.ts.map +1 -1
  135. package/dist/types/src/util/arrangement.d.ts +68 -0
  136. package/dist/types/src/util/arrangement.d.ts.map +1 -0
  137. package/dist/types/src/util/arrangement.test.d.ts +2 -0
  138. package/dist/types/src/util/arrangement.test.d.ts.map +1 -0
  139. package/dist/types/src/util/index.d.ts +2 -0
  140. package/dist/types/src/util/index.d.ts.map +1 -0
  141. package/dist/types/tsconfig.tsbuildinfo +1 -1
  142. package/package.json +67 -46
  143. package/src/KanbanPlugin.tsx +35 -54
  144. package/src/blueprints/index.ts +5 -0
  145. package/src/blueprints/kanban-blueprint.ts +31 -0
  146. package/src/capabilities/artifact-definition/artifact-definition.ts +151 -0
  147. package/src/capabilities/artifact-definition/index.ts +7 -0
  148. package/src/capabilities/blueprint-definition/blueprint-definition.ts +17 -0
  149. package/src/capabilities/blueprint-definition/index.ts +7 -0
  150. package/src/capabilities/index.ts +3 -5
  151. package/src/capabilities/operation-resolver/index.ts +7 -0
  152. package/src/capabilities/operation-resolver/operation-resolver.ts +133 -0
  153. package/src/capabilities/react-surface/index.ts +7 -0
  154. package/src/capabilities/react-surface/react-surface.tsx +86 -0
  155. package/src/components/KanbanBoard/KanbanBoard.stories.tsx +142 -0
  156. package/src/components/KanbanBoard/KanbanBoard.tsx +184 -0
  157. package/src/components/KanbanBoard/KanbanCard.tsx +87 -0
  158. package/src/components/KanbanBoard/KanbanColumn.tsx +69 -0
  159. package/src/components/KanbanBoard/index.ts +5 -0
  160. package/src/components/index.ts +1 -2
  161. package/src/containers/KanbanContainer/KanbanContainer.stories.tsx +263 -0
  162. package/src/containers/KanbanContainer/KanbanContainer.tsx +87 -0
  163. package/src/containers/KanbanContainer/index.ts +7 -0
  164. package/src/containers/KanbanViewEditor/KanbanViewEditor.tsx +63 -0
  165. package/src/containers/KanbanViewEditor/index.ts +7 -0
  166. package/src/containers/index.ts +8 -0
  167. package/src/hooks/index.ts +9 -0
  168. package/src/hooks/useEchoChangeCallback.ts +30 -0
  169. package/src/hooks/useKanbanBoardModel.test.ts +235 -0
  170. package/src/hooks/useKanbanBoardModel.ts +143 -0
  171. package/src/hooks/useKanbanColumnEventHandler.ts +106 -0
  172. package/src/hooks/useKanbanItemEventHandler.ts +133 -0
  173. package/src/hooks/useProjectionModel.ts +58 -0
  174. package/src/meta.ts +8 -4
  175. package/src/playwright/board-manager.ts +13 -0
  176. package/src/playwright/playwright.config.ts +19 -0
  177. package/src/playwright/smoke.spec.ts +107 -0
  178. package/src/testing/KanbanCardTileSimple.tsx +76 -0
  179. package/src/testing/index.ts +5 -0
  180. package/src/translations.ts +13 -6
  181. package/src/types/Kanban.ts +67 -0
  182. package/src/types/constants.ts +9 -0
  183. package/src/types/index.ts +2 -0
  184. package/src/types/schema.ts +84 -38
  185. package/src/types/types.ts +35 -0
  186. package/src/util/arrangement.test.ts +208 -0
  187. package/src/util/arrangement.ts +167 -0
  188. package/src/util/index.ts +5 -0
  189. package/dist/lib/browser/blueprint-definition-UYVX622Q.mjs +0 -28
  190. package/dist/lib/browser/blueprint-definition-UYVX622Q.mjs.map +0 -7
  191. package/dist/lib/browser/chunk-K7KYFJ3P.mjs +0 -80
  192. package/dist/lib/browser/chunk-K7KYFJ3P.mjs.map +0 -7
  193. package/dist/lib/browser/intent-resolver-LR3SDMKQ.mjs +0 -111
  194. package/dist/lib/browser/intent-resolver-LR3SDMKQ.mjs.map +0 -7
  195. package/dist/lib/browser/react-surface-R2ORFB43.mjs +0 -255
  196. package/dist/lib/browser/react-surface-R2ORFB43.mjs.map +0 -7
  197. package/dist/lib/node-esm/blueprint-definition-42P47FUY.mjs +0 -30
  198. package/dist/lib/node-esm/blueprint-definition-42P47FUY.mjs.map +0 -7
  199. package/dist/lib/node-esm/chunk-VDWYSHP4.mjs +0 -82
  200. package/dist/lib/node-esm/chunk-VDWYSHP4.mjs.map +0 -7
  201. package/dist/lib/node-esm/intent-resolver-CKDNVLND.mjs +0 -112
  202. package/dist/lib/node-esm/intent-resolver-CKDNVLND.mjs.map +0 -7
  203. package/dist/lib/node-esm/react-surface-RMRLHCOY.mjs +0 -256
  204. package/dist/lib/node-esm/react-surface-RMRLHCOY.mjs.map +0 -7
  205. package/dist/types/src/capabilities/artifact-definition.d.ts +0 -11
  206. package/dist/types/src/capabilities/artifact-definition.d.ts.map +0 -1
  207. package/dist/types/src/capabilities/blueprint-definition.d.ts +0 -5
  208. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +0 -1
  209. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  210. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  211. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  212. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  213. package/dist/types/src/components/KanbanContainer.d.ts +0 -7
  214. package/dist/types/src/components/KanbanContainer.d.ts.map +0 -1
  215. package/dist/types/src/components/KanbanContainer.stories.d.ts +0 -41
  216. package/dist/types/src/components/KanbanContainer.stories.d.ts.map +0 -1
  217. package/dist/types/src/components/KanbanViewEditor.d.ts +0 -8
  218. package/dist/types/src/components/KanbanViewEditor.d.ts.map +0 -1
  219. package/src/capabilities/artifact-definition.ts +0 -148
  220. package/src/capabilities/blueprint-definition.ts +0 -30
  221. package/src/capabilities/intent-resolver.ts +0 -71
  222. package/src/capabilities/react-surface.tsx +0 -84
  223. package/src/components/KanbanContainer.stories.tsx +0 -193
  224. package/src/components/KanbanContainer.tsx +0 -95
  225. package/src/components/KanbanViewEditor.tsx +0 -64
@@ -0,0 +1,163 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ KanbanOperation,
4
+ meta
5
+ } from "./chunk-4AWDHQVY.mjs";
6
+ import "./chunk-HSLMI22Q.mjs";
7
+
8
+ // src/capabilities/operation-resolver/operation-resolver.ts
9
+ import * as Effect from "effect/Effect";
10
+ import { Capabilities, Capability, UndoMapping } from "@dxos/app-framework";
11
+ import { JsonSchema, Obj } from "@dxos/echo";
12
+ import { invariant } from "@dxos/invariant";
13
+ import { OperationResolver } from "@dxos/operation";
14
+ import { ProjectionModel, createEchoChangeCallback, getTypenameFromQuery } from "@dxos/schema";
15
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-kanban/src/capabilities/operation-resolver/operation-resolver.ts";
16
+ var operation_resolver_default = Capability.makeModule(() => Effect.succeed([
17
+ Capability.contributes(Capabilities.UndoMapping, [
18
+ UndoMapping.make({
19
+ operation: KanbanOperation.DeleteCardField,
20
+ inverse: KanbanOperation.RestoreCardField,
21
+ deriveContext: (input, output) => ({
22
+ view: input.view,
23
+ field: output.field,
24
+ props: output.props,
25
+ index: output.index
26
+ }),
27
+ message: [
28
+ "card field deleted label",
29
+ {
30
+ ns: meta.id
31
+ }
32
+ ]
33
+ }),
34
+ UndoMapping.make({
35
+ operation: KanbanOperation.DeleteCard,
36
+ inverse: KanbanOperation.RestoreCard,
37
+ deriveContext: (_input, output) => ({
38
+ card: output.card
39
+ }),
40
+ message: [
41
+ "card deleted label",
42
+ {
43
+ ns: meta.id
44
+ }
45
+ ]
46
+ })
47
+ ]),
48
+ Capability.contributes(Capabilities.OperationResolver, [
49
+ OperationResolver.make({
50
+ operation: KanbanOperation.DeleteCardField,
51
+ handler: Effect.fnUntraced(function* ({ view, fieldId }) {
52
+ const registry = yield* Capability.get(Capabilities.AtomRegistry);
53
+ const db = Obj.getDatabase(view);
54
+ invariant(db, "Database not found", {
55
+ F: __dxlog_file,
56
+ L: 46,
57
+ S: this,
58
+ A: [
59
+ "db",
60
+ "'Database not found'"
61
+ ]
62
+ });
63
+ const schema = yield* Effect.promise(() => db.schemaRegistry.query({
64
+ typename: getTypenameFromQuery(view.query.ast),
65
+ location: [
66
+ "database",
67
+ "runtime"
68
+ ]
69
+ }).first());
70
+ const projection = new ProjectionModel({
71
+ registry,
72
+ view,
73
+ baseSchema: JsonSchema.toJsonSchema(schema),
74
+ change: createEchoChangeCallback(view, schema)
75
+ });
76
+ const result = projection.deleteFieldProjection(fieldId);
77
+ return {
78
+ field: result.deleted.field,
79
+ props: result.deleted.props,
80
+ index: result.index
81
+ };
82
+ })
83
+ }),
84
+ OperationResolver.make({
85
+ operation: KanbanOperation.DeleteCard,
86
+ handler: ({ card }) => Effect.sync(() => {
87
+ const db = Obj.getDatabase(card);
88
+ invariant(db, void 0, {
89
+ F: __dxlog_file,
90
+ L: 80,
91
+ S: void 0,
92
+ A: [
93
+ "db",
94
+ ""
95
+ ]
96
+ });
97
+ db.remove(card);
98
+ return {
99
+ card
100
+ };
101
+ })
102
+ }),
103
+ //
104
+ // RestoreCardField (inverse of DeleteCardField)
105
+ //
106
+ OperationResolver.make({
107
+ operation: KanbanOperation.RestoreCardField,
108
+ handler: Effect.fnUntraced(function* ({ view, field, props, index }) {
109
+ const registry = yield* Capability.get(Capabilities.AtomRegistry);
110
+ const db = Obj.getDatabase(view);
111
+ invariant(db, "Database not found", {
112
+ F: __dxlog_file,
113
+ L: 96,
114
+ S: this,
115
+ A: [
116
+ "db",
117
+ "'Database not found'"
118
+ ]
119
+ });
120
+ const schema = yield* Effect.promise(() => db.schemaRegistry.query({
121
+ typename: getTypenameFromQuery(view.query.ast),
122
+ location: [
123
+ "database",
124
+ "runtime"
125
+ ]
126
+ }).first());
127
+ const projection = new ProjectionModel({
128
+ registry,
129
+ view,
130
+ baseSchema: JsonSchema.toJsonSchema(schema),
131
+ change: createEchoChangeCallback(view, schema)
132
+ });
133
+ projection.setFieldProjection({
134
+ field,
135
+ props
136
+ }, index);
137
+ })
138
+ }),
139
+ //
140
+ // RestoreCard (inverse of DeleteCard)
141
+ //
142
+ OperationResolver.make({
143
+ operation: KanbanOperation.RestoreCard,
144
+ handler: ({ card }) => Effect.sync(() => {
145
+ const db = Obj.getDatabase(card);
146
+ invariant(db, void 0, {
147
+ F: __dxlog_file,
148
+ L: 127,
149
+ S: void 0,
150
+ A: [
151
+ "db",
152
+ ""
153
+ ]
154
+ });
155
+ db.add(card);
156
+ })
157
+ })
158
+ ])
159
+ ]));
160
+ export {
161
+ operation_resolver_default as default
162
+ };
163
+ //# sourceMappingURL=operation-resolver-UEQ64LCN.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/operation-resolver/operation-resolver.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability, UndoMapping } from '@dxos/app-framework';\nimport { JsonSchema, Obj } from '@dxos/echo';\nimport { type EchoSchema } from '@dxos/echo/internal';\nimport { invariant } from '@dxos/invariant';\nimport { OperationResolver } from '@dxos/operation';\nimport { ProjectionModel, createEchoChangeCallback, getTypenameFromQuery } from '@dxos/schema';\n\nimport { meta } from '../../meta';\nimport { KanbanOperation } from '../../types';\n\nexport default Capability.makeModule(() =>\n Effect.succeed([\n Capability.contributes(Capabilities.UndoMapping, [\n UndoMapping.make({\n operation: KanbanOperation.DeleteCardField,\n inverse: KanbanOperation.RestoreCardField,\n deriveContext: (input, output) => ({\n view: input.view,\n field: output.field,\n props: output.props,\n index: output.index,\n }),\n message: ['card field deleted label', { ns: meta.id }],\n }),\n UndoMapping.make({\n operation: KanbanOperation.DeleteCard,\n inverse: KanbanOperation.RestoreCard,\n deriveContext: (_input, output) => ({\n card: output.card,\n }),\n message: ['card deleted label', { ns: meta.id }],\n }),\n ]),\n Capability.contributes(Capabilities.OperationResolver, [\n OperationResolver.make({\n operation: KanbanOperation.DeleteCardField,\n handler: Effect.fnUntraced(function* ({ view, fieldId }) {\n const registry = yield* Capability.get(Capabilities.AtomRegistry);\n const db = Obj.getDatabase(view);\n invariant(db, 'Database not found');\n const schema = yield* Effect.promise(() =>\n db.schemaRegistry\n .query({\n typename: getTypenameFromQuery(view.query.ast)!,\n location: ['database', 'runtime'],\n })\n .first(),\n );\n\n // Create projection with change callbacks that wrap in Obj.change().\n // Schema from registry is an EchoSchema at runtime.\n const projection = new ProjectionModel({\n registry,\n view,\n baseSchema: JsonSchema.toJsonSchema(schema),\n change: createEchoChangeCallback(view, schema as EchoSchema),\n });\n\n const result = projection.deleteFieldProjection(fieldId);\n\n // Return data needed for undo.\n return {\n field: result.deleted.field,\n props: result.deleted.props,\n index: result.index,\n };\n }),\n }),\n OperationResolver.make({\n operation: KanbanOperation.DeleteCard,\n handler: ({ card }) =>\n Effect.sync(() => {\n const db = Obj.getDatabase(card);\n invariant(db);\n db.remove(card);\n\n // Return data needed for undo.\n return { card };\n }),\n }),\n\n //\n // RestoreCardField (inverse of DeleteCardField)\n //\n OperationResolver.make({\n operation: KanbanOperation.RestoreCardField,\n handler: Effect.fnUntraced(function* ({ view, field, props, index }) {\n const registry = yield* Capability.get(Capabilities.AtomRegistry);\n const db = Obj.getDatabase(view);\n invariant(db, 'Database not found');\n const schema = yield* Effect.promise(() =>\n db.schemaRegistry\n .query({\n typename: getTypenameFromQuery(view.query.ast)!,\n location: ['database', 'runtime'],\n })\n .first(),\n );\n\n // Create projection with change callbacks that wrap in Obj.change().\n // Schema from registry is an EchoSchema at runtime.\n const projection = new ProjectionModel({\n registry,\n view,\n baseSchema: JsonSchema.toJsonSchema(schema),\n change: createEchoChangeCallback(view, schema as EchoSchema),\n });\n\n projection.setFieldProjection({ field, props }, index);\n }),\n }),\n\n //\n // RestoreCard (inverse of DeleteCard)\n //\n OperationResolver.make({\n operation: KanbanOperation.RestoreCard,\n handler: ({ card }) =>\n Effect.sync(() => {\n const db = Obj.getDatabase(card);\n invariant(db);\n db.add(card);\n }),\n }),\n ]),\n ]),\n);\n"],
5
+ "mappings": "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",
6
+ "names": ["Effect", "Capabilities", "Capability", "UndoMapping", "JsonSchema", "Obj", "invariant", "OperationResolver", "ProjectionModel", "createEchoChangeCallback", "getTypenameFromQuery", "Capability", "makeModule", "succeed", "contributes", "Capabilities", "UndoMapping", "make", "operation", "KanbanOperation", "DeleteCardField", "inverse", "RestoreCardField", "deriveContext", "input", "output", "view", "field", "props", "index", "message", "ns", "meta", "id", "DeleteCard", "RestoreCard", "_input", "card", "OperationResolver", "handler", "fnUntraced", "fieldId", "registry", "get", "AtomRegistry", "db", "Obj", "getDatabase", "invariant", "schema", "promise", "schemaRegistry", "query", "typename", "getTypenameFromQuery", "ast", "location", "first", "projection", "ProjectionModel", "baseSchema", "JsonSchema", "toJsonSchema", "change", "createEchoChangeCallback", "result", "deleteFieldProjection", "deleted", "sync", "remove", "setFieldProjection", "add"]
7
+ }
@@ -0,0 +1,100 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ Kanban_exports,
4
+ PivotColumnAnnotationId,
5
+ meta
6
+ } from "./chunk-4AWDHQVY.mjs";
7
+ import "./chunk-HSLMI22Q.mjs";
8
+
9
+ // src/capabilities/react-surface/react-surface.tsx
10
+ import * as Effect from "effect/Effect";
11
+ import React, { useMemo } from "react";
12
+ import { Capabilities, Capability } from "@dxos/app-framework";
13
+ import { Surface } from "@dxos/app-framework/ui";
14
+ import { Database, JsonSchema, Obj } from "@dxos/echo";
15
+ import { findAnnotation } from "@dxos/effect";
16
+ import { SelectField, useFormValues } from "@dxos/react-ui-form";
17
+
18
+ // src/containers/index.ts
19
+ import { lazy } from "react";
20
+ var KanbanContainer = lazy(() => import("./KanbanContainer-EHRTLE7M.mjs"));
21
+ var KanbanViewEditor = lazy(() => import("./KanbanViewEditor-WDACFC35.mjs"));
22
+
23
+ // src/capabilities/react-surface/react-surface.tsx
24
+ var react_surface_default = Capability.makeModule(() => Effect.succeed(Capability.contributes(Capabilities.ReactSurface, [
25
+ Surface.create({
26
+ id: meta.id,
27
+ role: [
28
+ "article",
29
+ "section"
30
+ ],
31
+ filter: (data) => Obj.instanceOf(Kanban_exports.Kanban, data.subject),
32
+ component: ({ data, role }) => /* @__PURE__ */ React.createElement(KanbanContainer, {
33
+ role,
34
+ subject: data.subject
35
+ })
36
+ }),
37
+ Surface.create({
38
+ id: `${meta.id}/object-settings`,
39
+ role: "object-settings",
40
+ position: "hoist",
41
+ filter: (data) => Obj.instanceOf(Kanban_exports.Kanban, data.subject),
42
+ component: ({ data }) => /* @__PURE__ */ React.createElement(KanbanViewEditor, {
43
+ subject: data.subject
44
+ })
45
+ }),
46
+ Surface.create({
47
+ id: `${meta.id}/create-initial-schema-form-[pivot-column]`,
48
+ role: "form-input",
49
+ filter: (data) => {
50
+ const annotation = findAnnotation(data.schema.ast, PivotColumnAnnotationId);
51
+ return !!annotation;
52
+ },
53
+ component: ({ data: { target }, ...inputProps }) => {
54
+ const props = inputProps;
55
+ const db = Database.isDatabase(target) ? target : target && Obj.getDatabase(target);
56
+ if (!db) {
57
+ return null;
58
+ }
59
+ const { typename } = useFormValues("KanbanForm");
60
+ const [selectedSchema] = useMemo(() => db.schemaRegistry.query({
61
+ location: [
62
+ "database",
63
+ "runtime"
64
+ ],
65
+ typename
66
+ }).runSync(), [
67
+ db,
68
+ typename
69
+ ]);
70
+ const singleSelectColumns = useMemo(() => {
71
+ const properties = JsonSchema.toJsonSchema(selectedSchema).properties;
72
+ if (!properties) {
73
+ return [];
74
+ }
75
+ const columns = Object.entries(properties).reduce((acc, [key, value]) => {
76
+ if (typeof value === "object" && value?.format === "single-select") {
77
+ acc.push(key);
78
+ }
79
+ return acc;
80
+ }, []);
81
+ return columns;
82
+ }, [
83
+ selectedSchema
84
+ ]);
85
+ if (!typename) {
86
+ return null;
87
+ }
88
+ return /* @__PURE__ */ React.createElement(SelectField, {
89
+ ...props,
90
+ options: singleSelectColumns.map((column) => ({
91
+ value: column
92
+ }))
93
+ });
94
+ }
95
+ })
96
+ ])));
97
+ export {
98
+ react_surface_default as default
99
+ };
100
+ //# sourceMappingURL=react-surface-AITKFRBE.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/react-surface/react-surface.tsx", "../../../src/containers/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport type * as Schema from 'effect/Schema';\nimport React, { useMemo } from 'react';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { Surface } from '@dxos/app-framework/ui';\nimport { Database, JsonSchema, Obj } from '@dxos/echo';\nimport { type Collection } from '@dxos/echo';\nimport { findAnnotation } from '@dxos/effect';\nimport { type FormFieldComponentProps, SelectField, useFormValues } from '@dxos/react-ui-form';\n\nimport { KanbanContainer, KanbanViewEditor } from '../../containers';\nimport { meta } from '../../meta';\nimport { Kanban, PivotColumnAnnotationId } from '../../types';\n\nexport default Capability.makeModule(() =>\n Effect.succeed(\n Capability.contributes(Capabilities.ReactSurface, [\n Surface.create({\n id: meta.id,\n role: ['article', 'section'],\n filter: (data): data is { subject: Kanban.Kanban } => Obj.instanceOf(Kanban.Kanban, data.subject),\n component: ({ data, role }) => <KanbanContainer role={role} subject={data.subject} />,\n }),\n Surface.create({\n id: `${meta.id}/object-settings`,\n role: 'object-settings',\n position: 'hoist',\n filter: (data): data is { subject: Kanban.Kanban } => Obj.instanceOf(Kanban.Kanban, data.subject),\n component: ({ data }) => <KanbanViewEditor subject={data.subject} />,\n }),\n Surface.create({\n id: `${meta.id}/create-initial-schema-form-[pivot-column]`,\n role: 'form-input',\n filter: (\n data,\n ): data is {\n prop: string;\n schema: Schema.Schema<any>;\n target: Database.Database | Collection.Collection | undefined;\n } => {\n const annotation = findAnnotation<boolean>((data.schema as Schema.Schema.All).ast, PivotColumnAnnotationId);\n return !!annotation;\n },\n component: ({ data: { target }, ...inputProps }) => {\n const props = inputProps as any as FormFieldComponentProps;\n const db = Database.isDatabase(target) ? target : target && Obj.getDatabase(target);\n if (!db) {\n return null;\n }\n\n const { typename } = useFormValues('KanbanForm');\n const [selectedSchema] = useMemo(\n () => db.schemaRegistry.query({ location: ['database', 'runtime'], typename }).runSync(),\n [db, typename],\n );\n const singleSelectColumns = useMemo(() => {\n const properties = JsonSchema.toJsonSchema(selectedSchema).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]);\n\n if (!typename) {\n return null;\n }\n\n return <SelectField {...props} options={singleSelectColumns.map((column) => ({ value: column }))} />;\n },\n }),\n ]),\n ),\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type ComponentType, lazy } from 'react';\n\nexport const KanbanContainer: ComponentType<any> = lazy(() => import('./KanbanContainer'));\nexport const KanbanViewEditor: ComponentType<any> = lazy(() => import('./KanbanViewEditor'));\n"],
5
+ "mappings": ";;;;;;;;;AAIA,YAAYA,YAAY;AAExB,OAAOC,SAASC,eAAe;AAE/B,SAASC,cAAcC,kBAAkB;AACzC,SAASC,eAAe;AACxB,SAASC,UAAUC,YAAYC,WAAW;AAE1C,SAASC,sBAAsB;AAC/B,SAAuCC,aAAaC,qBAAqB;;;ACTzE,SAA6BC,YAAY;AAElC,IAAMC,kBAAsCC,KAAK,MAAM,OAAO,gCAAA,CAAA;AAC9D,IAAMC,mBAAuCD,KAAK,MAAM,OAAO,iCAAA,CAAA;;;ADYtE,IAAA,wBAAeE,WAAWC,WAAW,MAC5BC,eACLF,WAAWG,YAAYC,aAAaC,cAAc;EAChDC,QAAQC,OAAO;IACbC,IAAIC,KAAKD;IACTE,MAAM;MAAC;MAAW;;IAClBC,QAAQ,CAACC,SAA6CC,IAAIC,WAAWC,eAAOA,QAAQH,KAAKI,OAAO;IAChGC,WAAW,CAAC,EAAEL,MAAMF,KAAI,MAAO,sBAAA,cAACQ,iBAAAA;MAAgBR;MAAYM,SAASJ,KAAKI;;EAC5E,CAAA;EACAV,QAAQC,OAAO;IACbC,IAAI,GAAGC,KAAKD,EAAE;IACdE,MAAM;IACNS,UAAU;IACVR,QAAQ,CAACC,SAA6CC,IAAIC,WAAWC,eAAOA,QAAQH,KAAKI,OAAO;IAChGC,WAAW,CAAC,EAAEL,KAAI,MAAO,sBAAA,cAACQ,kBAAAA;MAAiBJ,SAASJ,KAAKI;;EAC3D,CAAA;EACAV,QAAQC,OAAO;IACbC,IAAI,GAAGC,KAAKD,EAAE;IACdE,MAAM;IACNC,QAAQ,CACNC,SAAAA;AAMA,YAAMS,aAAaC,eAAyBV,KAAKW,OAA6BC,KAAKC,uBAAAA;AACnF,aAAO,CAAC,CAACJ;IACX;IACAJ,WAAW,CAAC,EAAEL,MAAM,EAAEc,OAAM,GAAI,GAAGC,WAAAA,MAAY;AAC7C,YAAMC,QAAQD;AACd,YAAME,KAAKC,SAASC,WAAWL,MAAAA,IAAUA,SAASA,UAAUb,IAAImB,YAAYN,MAAAA;AAC5E,UAAI,CAACG,IAAI;AACP,eAAO;MACT;AAEA,YAAM,EAAEI,SAAQ,IAAKC,cAAc,YAAA;AACnC,YAAM,CAACC,cAAAA,IAAkBC,QACvB,MAAMP,GAAGQ,eAAeC,MAAM;QAAEC,UAAU;UAAC;UAAY;;QAAYN;MAAS,CAAA,EAAGO,QAAO,GACtF;QAACX;QAAII;OAAS;AAEhB,YAAMQ,sBAAsBL,QAAQ,MAAA;AAClC,cAAMM,aAAaC,WAAWC,aAAaT,cAAAA,EAAgBO;AAC3D,YAAI,CAACA,YAAY;AACf,iBAAO,CAAA;QACT;AAEA,cAAMG,UAAUC,OAAOC,QAAQL,UAAAA,EAAYM,OAAiB,CAACC,KAAK,CAACC,KAAKC,KAAAA,MAAM;AAC5E,cAAI,OAAOA,UAAU,YAAYA,OAAOC,WAAW,iBAAiB;AAClEH,gBAAII,KAAKH,GAAAA;UACX;AACA,iBAAOD;QACT,GAAG,CAAA,CAAE;AAEL,eAAOJ;MACT,GAAG;QAACV;OAAe;AAEnB,UAAI,CAACF,UAAU;AACb,eAAO;MACT;AAEA,aAAO,sBAAA,cAACqB,aAAAA;QAAa,GAAG1B;QAAO2B,SAASd,oBAAoBe,IAAI,CAACC,YAAY;UAAEN,OAAOM;QAAO,EAAA;;IAC/F;EACF,CAAA;CACD,CAAA,CAAA;",
6
+ "names": ["Effect", "React", "useMemo", "Capabilities", "Capability", "Surface", "Database", "JsonSchema", "Obj", "findAnnotation", "SelectField", "useFormValues", "lazy", "KanbanContainer", "lazy", "KanbanViewEditor", "Capability", "makeModule", "succeed", "contributes", "Capabilities", "ReactSurface", "Surface", "create", "id", "meta", "role", "filter", "data", "Obj", "instanceOf", "Kanban", "subject", "component", "KanbanContainer", "position", "KanbanViewEditor", "annotation", "findAnnotation", "schema", "ast", "PivotColumnAnnotationId", "target", "inputProps", "props", "db", "Database", "isDatabase", "getDatabase", "typename", "useFormValues", "selectedSchema", "useMemo", "schemaRegistry", "query", "location", "runSync", "singleSelectColumns", "properties", "JsonSchema", "toJsonSchema", "columns", "Object", "entries", "reduce", "acc", "key", "value", "format", "push", "SelectField", "options", "map", "column"]
7
+ }
@@ -1,12 +1,21 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  CreateKanbanSchema,
4
- KanbanAction,
5
- PivotColumnAnnotationId
6
- } from "../chunk-VDWYSHP4.mjs";
4
+ KanbanOperation,
5
+ Kanban_exports,
6
+ PivotColumnAnnotationId,
7
+ SettingsSchema,
8
+ UNCATEGORIZED_ATTRIBUTES,
9
+ UNCATEGORIZED_VALUE
10
+ } from "../chunk-4AWDHQVY.mjs";
11
+ import "../chunk-HSLMI22Q.mjs";
7
12
  export {
8
13
  CreateKanbanSchema,
9
- KanbanAction,
10
- PivotColumnAnnotationId
14
+ Kanban_exports as Kanban,
15
+ KanbanOperation,
16
+ PivotColumnAnnotationId,
17
+ SettingsSchema,
18
+ UNCATEGORIZED_ATTRIBUTES,
19
+ UNCATEGORIZED_VALUE
11
20
  };
12
21
  //# sourceMappingURL=index.mjs.map
@@ -1,2 +1,3 @@
1
- export declare const KanbanPlugin: import("@dxos/app-framework").PluginFactory<void>;
1
+ import { Plugin } from '@dxos/app-framework';
2
+ export declare const KanbanPlugin: Plugin.PluginFactory<void>;
2
3
  //# sourceMappingURL=KanbanPlugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"KanbanPlugin.d.ts","sourceRoot":"","sources":["../../../src/KanbanPlugin.tsx"],"names":[],"mappings":"AAgBA,eAAO,MAAM,YAAY,mDA8CvB,CAAC"}
1
+ {"version":3,"file":"KanbanPlugin.d.ts","sourceRoot":"","sources":["../../../src/KanbanPlugin.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAW7C,eAAO,MAAM,YAAY,4BA0BxB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { default as KanbanBlueprint } from './kanban-blueprint';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/blueprints/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type AppCapabilities } from '@dxos/app-toolkit';
2
+ declare const blueprint: AppCapabilities.BlueprintDefinition;
3
+ export default blueprint;
4
+ //# sourceMappingURL=kanban-blueprint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kanban-blueprint.d.ts","sourceRoot":"","sources":["../../../../src/blueprints/kanban-blueprint.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAoBzD,QAAA,MAAM,SAAS,EAAE,eAAe,CAAC,mBAIhC,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -0,0 +1,12 @@
1
+ import * as Effect from 'effect/Effect';
2
+ import { Capability, type PromiseIntentDispatcher } from '@dxos/app-framework';
3
+ import { type Space } from '@dxos/react-client/echo';
4
+ declare global {
5
+ interface ToolContextExtensions {
6
+ space?: Space;
7
+ dispatch?: PromiseIntentDispatcher;
8
+ }
9
+ }
10
+ declare const _default: (props: void) => Effect.Effect<Capability.Capability<any>, never, never>;
11
+ export default _default;
12
+ //# sourceMappingURL=artifact-definition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-definition.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/artifact-definition/artifact-definition.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC,OAAO,EAAgB,UAAU,EAAE,KAAK,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAO7F,OAAO,EAAU,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAW7D,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,QAAQ,CAAC,EAAE,uBAAuB,CAAC;KACpC;CACF;;AAED,wBAkHE"}
@@ -0,0 +1,3 @@
1
+ import { Capability } from '@dxos/app-framework';
2
+ export declare const ArtifactDefinition: Capability.LazyCapability<void, Capability.Capability<any>, Error>;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/artifact-definition/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,eAAO,MAAM,kBAAkB,oEAA+E,CAAC"}
@@ -0,0 +1,6 @@
1
+ import * as Effect from 'effect/Effect';
2
+ import { Capability } from '@dxos/app-framework';
3
+ import { AppCapabilities } from '@dxos/app-toolkit';
4
+ declare const blueprintDefinition: (props: []) => Effect.Effect<Capability.Capability<Capability.InterfaceDef<AppCapabilities.BlueprintDefinition>>[], Error, Capability.Service>;
5
+ export default blueprintDefinition;
6
+ //# sourceMappingURL=blueprint-definition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blueprint-definition.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/blueprint-definition/blueprint-definition.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIpD,QAAA,MAAM,mBAAmB,gJAG8E,CAAC;AAExG,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Capability } from '@dxos/app-framework';
2
+ export declare const BlueprintDefinition: Capability.LazyCapability<[], Capability.Capability<Capability.InterfaceDef<import("@dxos/app-toolkit").AppCapabilities.BlueprintDefinition>>[], Error>;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/blueprint-definition/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,eAAO,MAAM,mBAAmB,yJAAiF,CAAC"}
@@ -1,4 +1,4 @@
1
- export declare const BlueprintDefinition: (props?: unknown) => Promise<() => Promise<import("@dxos/app-framework").AnyCapability[] | import("@dxos/app-framework").Capability<unknown>>>;
2
- export declare const IntentResolver: (props?: import("@dxos/app-framework").PluginContext | undefined) => Promise<() => Promise<import("@dxos/app-framework").Capability<import("@dxos/app-framework").InterfaceDef<import("@dxos/app-framework").Capabilities.IntentResolver>> | import("@dxos/app-framework").AnyCapability[]>>;
3
- export declare const ReactSurface: (props?: unknown) => Promise<() => Promise<import("@dxos/app-framework").Capability<import("@dxos/app-framework").InterfaceDef<import("@dxos/app-framework").Capabilities.ReactSurface>> | import("@dxos/app-framework").AnyCapability[]>>;
1
+ export * from './blueprint-definition';
2
+ export * from './operation-resolver';
3
+ export * from './react-surface';
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,mBAAmB,gJAA+C,CAAC;AAChF,eAAO,MAAM,cAAc,8RAA0C,CAAC;AACtE,eAAO,MAAM,YAAY,4OAAwC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/index.ts"],"names":[],"mappings":"AAIA,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Capability } from '@dxos/app-framework';
2
+ export declare const OperationResolver: Capability.LazyCapability<void, [Capability.Capability<Capability.InterfaceDef<import("@dxos/app-framework/Capabilities").UndoMapping[]>>, Capability.Capability<Capability.InterfaceDef<import("@dxos/app-framework/Capabilities").OperationResolver[]>>], Error>;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/operation-resolver/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,eAAO,MAAM,iBAAiB,oQAA6E,CAAC"}
@@ -0,0 +1,5 @@
1
+ import * as Effect from 'effect/Effect';
2
+ import { Capabilities, Capability } from '@dxos/app-framework';
3
+ declare const _default: (props: void) => Effect.Effect<[Capability.Capability<Capability.InterfaceDef<Capabilities.UndoMapping[]>>, Capability.Capability<Capability.InterfaceDef<Capabilities.OperationResolver[]>>], never, never>;
4
+ export default _default;
5
+ //# sourceMappingURL=operation-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operation-resolver.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/operation-resolver/operation-resolver.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAe,MAAM,qBAAqB,CAAC;;AAU5E,wBAoHE"}
@@ -0,0 +1,3 @@
1
+ import { Capability } from '@dxos/app-framework';
2
+ export declare const ReactSurface: Capability.LazyCapability<void, Capability.Capability<Capability.InterfaceDef<import("@dxos/app-framework/Capabilities").ReactSurface>>, Error>;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/react-surface/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,eAAO,MAAM,YAAY,iJAAmE,CAAC"}
@@ -0,0 +1,5 @@
1
+ import * as Effect from 'effect/Effect';
2
+ import { Capabilities, Capability } from '@dxos/app-framework';
3
+ declare const _default: (props: void) => Effect.Effect<Capability.Capability<Capability.InterfaceDef<Capabilities.ReactSurface>>, never, never>;
4
+ export default _default;
5
+ //# sourceMappingURL=react-surface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-surface.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/react-surface/react-surface.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;;AAW/D,wBAkEE"}
@@ -0,0 +1,58 @@
1
+ import { type Atom } from '@effect-atom/atom-react';
2
+ import React, { type ComponentPropsWithoutRef, type ComponentType, type PropsWithChildren } from 'react';
3
+ import { Obj } from '@dxos/echo';
4
+ import type { ProjectionModel } from '@dxos/schema';
5
+ import { type Kanban, type KanbanChangeCallback } from '../../types';
6
+ import { type KanbanCardProps } from './KanbanCard';
7
+ import { type KanbanColumnProps } from './KanbanColumn';
8
+ /**
9
+ * Context value for the Kanban board.
10
+ * Items are Echo objects (Obj.Unknown).
11
+ */
12
+ type KanbanBoardContextValue = {
13
+ kanbanId: string;
14
+ projection: ProjectionModel | undefined;
15
+ columnFieldPath: string | undefined;
16
+ change: KanbanChangeCallback<Obj.Unknown>;
17
+ pivotFieldId: string | undefined;
18
+ getPivotAttributes: (columnValue: string) => {
19
+ title: string;
20
+ color: string;
21
+ };
22
+ itemTile?: ComponentType<KanbanCardProps>;
23
+ onCardAdd?: (columnValue: string | undefined) => string | undefined;
24
+ onCardRemove?: (card: Obj.Unknown) => void;
25
+ };
26
+ declare const useKanbanBoard: (consumerName: string) => KanbanBoardContextValue;
27
+ type KanbanBoardRootProps = PropsWithChildren<Pick<KanbanBoardContextValue, 'change' | 'itemTile'> & {
28
+ kanban: Kanban.Kanban;
29
+ /** Required when providing context; Root derives columnFieldPath, pivotFieldId, getPivotAttributes from kanban + projection. */
30
+ projection: ProjectionModel;
31
+ /** Atom of items (e.g. from AtomQuery for DB, or Atom.make([]) for in-memory). */
32
+ items: Atom.Atom<Obj.Unknown[]>;
33
+ onCardAdd?: (columnValue: string | undefined) => string | undefined;
34
+ onCardRemove?: (card: Obj.Unknown) => void;
35
+ } & ComponentPropsWithoutRef<'div'>>;
36
+ export declare const KanbanBoardRoot: {
37
+ ({ children, change, itemTile, kanban, projection, items, onCardAdd, onCardRemove, ...props }: KanbanBoardRootProps): React.JSX.Element;
38
+ displayName: string;
39
+ };
40
+ export declare const KanbanBoardContent: {
41
+ (): React.JSX.Element;
42
+ displayName: string;
43
+ };
44
+ export declare const KanbanBoard: {
45
+ Root: {
46
+ ({ children, change, itemTile, kanban, projection, items, onCardAdd, onCardRemove, ...props }: KanbanBoardRootProps): React.JSX.Element;
47
+ displayName: string;
48
+ };
49
+ Content: {
50
+ (): React.JSX.Element;
51
+ displayName: string;
52
+ };
53
+ Column: React.ForwardRefExoticComponent<KanbanColumnProps & React.RefAttributes<HTMLDivElement>>;
54
+ Card: React.ForwardRefExoticComponent<KanbanCardProps & React.RefAttributes<HTMLDivElement>>;
55
+ };
56
+ export { useKanbanBoard };
57
+ export type { KanbanBoardRootProps as KanbanBoardProps, KanbanCardProps, KanbanColumnProps };
58
+ //# sourceMappingURL=KanbanBoard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KanbanBoard.d.ts","sourceRoot":"","sources":["../../../../../src/components/KanbanBoard/KanbanBoard.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,IAAI,EAAmB,MAAM,yBAAyB,CAAC;AAErE,OAAO,KAAK,EAAE,EACZ,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAClB,KAAK,iBAAiB,EAIvB,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAGjC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAIpD,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,oBAAoB,EAAiD,MAAM,aAAa,CAAC;AAEpH,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAUtE;;;GAGG;AACH,KAAK,uBAAuB,GAAG;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,eAAe,GAAG,SAAS,CAAC;IACxC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,MAAM,EAAE,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC1C,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,kBAAkB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9E,QAAQ,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IAC1C,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,SAAS,CAAC;IACpE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC;CAC5C,CAAC;AAEF,QAAA,MAA2B,cAAc,mDASvC,CAAC;AAQH,KAAK,oBAAoB,GAAG,iBAAiB,CAC3C,IAAI,CAAC,uBAAuB,EAAE,QAAQ,GAAG,UAAU,CAAC,GAAG;IACrD,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;IACtB,gIAAgI;IAChI,UAAU,EAAE,eAAe,CAAC;IAC5B,kFAAkF;IAClF,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,SAAS,CAAC;IACpE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC;CAC5C,GAAG,wBAAwB,CAAC,KAAK,CAAC,CACpC,CAAC;AAEF,eAAO,MAAM,eAAe;mGAUzB,oBAAoB;;CAqDtB,CAAC;AAUF,eAAO,MAAM,kBAAkB;;;CAa9B,CAAC;AAQF,eAAO,MAAM,WAAW;;uGApFrB,oBAAoB;;;;;;;;;CAyFtB,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B,YAAY,EAAE,oBAAoB,IAAI,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,70 @@
1
+ import { type StoryObj } from '@storybook/react-vite';
2
+ import React from 'react';
3
+ declare const meta: {
4
+ title: string;
5
+ component: () => React.JSX.Element;
6
+ decorators: import("@storybook/react").Decorator[];
7
+ parameters: {
8
+ layout: string;
9
+ translations: [{
10
+ readonly 'en-US': {
11
+ readonly [x: string]: {
12
+ readonly 'typename label': "Kanban";
13
+ readonly 'typename label_zero': "Kanbans";
14
+ readonly 'typename label_one': "Kanban";
15
+ readonly 'typename label_other': "Kanbans";
16
+ readonly 'object name placeholder': "New kanban";
17
+ readonly 'rename object label': "Rename kanban";
18
+ readonly 'delete object label': "Delete kanban";
19
+ readonly 'object deleted label': "Kanban deleted";
20
+ readonly 'action menu label'?: undefined;
21
+ readonly 'plugin name'?: undefined;
22
+ readonly 'kanban title label'?: undefined;
23
+ readonly 'column title label'?: undefined;
24
+ readonly 'column title placeholder'?: undefined;
25
+ readonly 'add column label'?: undefined;
26
+ readonly 'add card label'?: undefined;
27
+ readonly 'new column name label'?: undefined;
28
+ readonly 'remove card label'?: undefined;
29
+ readonly 'remove empty column label'?: undefined;
30
+ readonly 'column drag handle label'?: undefined;
31
+ readonly 'delete column label'?: undefined;
32
+ readonly 'card field deleted label'?: undefined;
33
+ readonly 'card deleted label'?: undefined;
34
+ readonly 'select pivot placeholder'?: undefined;
35
+ } | {
36
+ readonly 'action menu label': "Actions";
37
+ readonly 'plugin name': "Kanban";
38
+ readonly 'kanban title label': "Title";
39
+ readonly 'column title label': "Column title";
40
+ readonly 'column title placeholder': "New column";
41
+ readonly 'add column label': "Add column";
42
+ readonly 'add card label': "Add card";
43
+ readonly 'new column name label': "New column name";
44
+ readonly 'remove card label': "Remove card";
45
+ readonly 'remove empty column label': "Remove empty column";
46
+ readonly 'column drag handle label': "Drag to rearrange";
47
+ readonly 'delete column label': "Delete column";
48
+ readonly 'card field deleted label': "Card field deleted";
49
+ readonly 'card deleted label': "Card deleted";
50
+ readonly 'select pivot placeholder': "Select a pivot column in board settings to display columns.";
51
+ readonly 'typename label'?: undefined;
52
+ readonly 'typename label_zero'?: undefined;
53
+ readonly 'typename label_one'?: undefined;
54
+ readonly 'typename label_other'?: undefined;
55
+ readonly 'object name placeholder'?: undefined;
56
+ readonly 'rename object label'?: undefined;
57
+ readonly 'delete object label'?: undefined;
58
+ readonly 'object deleted label'?: undefined;
59
+ };
60
+ };
61
+ }];
62
+ };
63
+ };
64
+ export default meta;
65
+ type Story = StoryObj<typeof meta>;
66
+ /**
67
+ * In-memory board with Echo-shaped objects. No plugin manager, client, or Space.
68
+ */
69
+ export declare const Default: Story;
70
+ //# sourceMappingURL=KanbanBoard.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KanbanBoard.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/KanbanBoard/KanbanBoard.stories.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAgE,MAAM,OAAO,CAAC;AAsHrF,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQ2B,CAAC;AAEtC,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC"}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { Obj } from '@dxos/echo';
3
+ import { type MosaicTileProps } from '@dxos/react-ui-mosaic';
4
+ export type KanbanCardProps = Pick<MosaicTileProps<Obj.Unknown>, 'location' | 'data' | 'debug'>;
5
+ /**
6
+ * Mosaic Tile for Kanban card.
7
+ * Uses Surface for content; requires plugin manager context.
8
+ */
9
+ export declare const KanbanCard: React.ForwardRefExoticComponent<KanbanCardProps & React.RefAttributes<HTMLDivElement>>;
10
+ //# sourceMappingURL=KanbanCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KanbanCard.d.ts","sourceRoot":"","sources":["../../../../../src/components/KanbanBoard/KanbanCard.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAqD,MAAM,OAAO,CAAC;AAI1E,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAGjC,OAAO,EAAiB,KAAK,eAAe,EAAY,MAAM,uBAAuB,CAAC;AAQtF,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;AAEhG;;;GAGG;AACH,eAAO,MAAM,UAAU,wFA2DrB,CAAC"}