@dxos/plugin-kanban 0.8.4-main.bc674ce → 0.8.4-main.c351d160a8

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 (191) hide show
  1. package/dist/lib/browser/KanbanContainer-N532FS3F.mjs +300 -0
  2. package/dist/lib/browser/KanbanContainer-N532FS3F.mjs.map +7 -0
  3. package/dist/lib/browser/KanbanViewEditor-W7E4RAK2.mjs +66 -0
  4. package/dist/lib/browser/KanbanViewEditor-W7E4RAK2.mjs.map +7 -0
  5. package/dist/lib/browser/blueprint-definition-2NNRB2ZQ.mjs +17 -0
  6. package/dist/lib/browser/blueprint-definition-2NNRB2ZQ.mjs.map +7 -0
  7. package/dist/lib/browser/blueprints/index.mjs +3 -3
  8. package/dist/lib/browser/{chunk-L6N4ZDZ7.mjs → chunk-B6RIAQMI.mjs} +11 -17
  9. package/dist/lib/browser/chunk-B6RIAQMI.mjs.map +7 -0
  10. package/dist/lib/browser/chunk-PCKA5REX.mjs +385 -0
  11. package/dist/lib/browser/chunk-PCKA5REX.mjs.map +7 -0
  12. package/dist/lib/browser/chunk-Z2ZFDWCK.mjs +213 -0
  13. package/dist/lib/browser/chunk-Z2ZFDWCK.mjs.map +7 -0
  14. package/dist/lib/browser/index.mjs +35 -30
  15. package/dist/lib/browser/index.mjs.map +3 -3
  16. package/dist/lib/browser/meta.json +1 -1
  17. package/dist/lib/browser/{operation-resolver-UEJHX42A.mjs → operation-resolver-ZWJLPKQB.mjs} +7 -7
  18. package/dist/lib/browser/operation-resolver-ZWJLPKQB.mjs.map +7 -0
  19. package/dist/lib/browser/react-surface-OIP6KXQK.mjs +99 -0
  20. package/dist/lib/browser/react-surface-OIP6KXQK.mjs.map +7 -0
  21. package/dist/lib/browser/types/index.mjs +9 -3
  22. package/dist/lib/node-esm/KanbanContainer-DQ7XDXB4.mjs +301 -0
  23. package/dist/lib/node-esm/KanbanContainer-DQ7XDXB4.mjs.map +7 -0
  24. package/dist/lib/node-esm/KanbanViewEditor-JPV2II5P.mjs +67 -0
  25. package/dist/lib/node-esm/KanbanViewEditor-JPV2II5P.mjs.map +7 -0
  26. package/dist/lib/node-esm/{blueprint-definition-APJQFSHJ.mjs → blueprint-definition-5GWECQLZ.mjs} +6 -6
  27. package/dist/lib/node-esm/blueprint-definition-5GWECQLZ.mjs.map +7 -0
  28. package/dist/lib/node-esm/blueprints/index.mjs +3 -3
  29. package/dist/lib/node-esm/chunk-HL3BNZKP.mjs +214 -0
  30. package/dist/lib/node-esm/chunk-HL3BNZKP.mjs.map +7 -0
  31. package/dist/lib/node-esm/chunk-P4RSMGOS.mjs +386 -0
  32. package/dist/lib/node-esm/chunk-P4RSMGOS.mjs.map +7 -0
  33. package/dist/lib/node-esm/{chunk-ZHRMUKTF.mjs → chunk-SD555I65.mjs} +11 -16
  34. package/dist/lib/node-esm/chunk-SD555I65.mjs.map +7 -0
  35. package/dist/lib/node-esm/index.mjs +35 -30
  36. package/dist/lib/node-esm/index.mjs.map +3 -3
  37. package/dist/lib/node-esm/meta.json +1 -1
  38. package/dist/lib/node-esm/{operation-resolver-5RPWHZCF.mjs → operation-resolver-YJKEXUHT.mjs} +7 -7
  39. package/dist/lib/node-esm/operation-resolver-YJKEXUHT.mjs.map +7 -0
  40. package/dist/lib/node-esm/react-surface-ZBPEPHZO.mjs +100 -0
  41. package/dist/lib/node-esm/react-surface-ZBPEPHZO.mjs.map +7 -0
  42. package/dist/lib/node-esm/types/index.mjs +9 -3
  43. package/dist/types/src/KanbanPlugin.d.ts.map +1 -1
  44. package/dist/types/src/blueprints/index.d.ts +1 -1
  45. package/dist/types/src/blueprints/index.d.ts.map +1 -1
  46. package/dist/types/src/blueprints/kanban-blueprint.d.ts +3 -21
  47. package/dist/types/src/blueprints/kanban-blueprint.d.ts.map +1 -1
  48. package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts +1 -1
  49. package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts.map +1 -1
  50. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +3 -6
  51. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -1
  52. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +1 -1
  53. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -1
  54. package/dist/types/src/capabilities/operation-resolver/index.d.ts +1 -1
  55. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -1
  56. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +2 -2
  57. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -1
  58. package/dist/types/src/capabilities/react-surface/index.d.ts +1 -1
  59. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -1
  60. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +2 -2
  61. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -1
  62. package/dist/types/src/components/KanbanBoard/KanbanBoard.d.ts +59 -0
  63. package/dist/types/src/components/KanbanBoard/KanbanBoard.d.ts.map +1 -0
  64. package/dist/types/src/components/KanbanBoard/KanbanBoard.stories.d.ts +72 -0
  65. package/dist/types/src/components/KanbanBoard/KanbanBoard.stories.d.ts.map +1 -0
  66. package/dist/types/src/components/KanbanBoard/KanbanCard.d.ts +10 -0
  67. package/dist/types/src/components/KanbanBoard/KanbanCard.d.ts.map +1 -0
  68. package/dist/types/src/components/KanbanBoard/KanbanColumn.d.ts +9 -0
  69. package/dist/types/src/components/KanbanBoard/KanbanColumn.d.ts.map +1 -0
  70. package/dist/types/src/components/KanbanBoard/index.d.ts +2 -0
  71. package/dist/types/src/components/KanbanBoard/index.d.ts.map +1 -0
  72. package/dist/types/src/components/index.d.ts +1 -2
  73. package/dist/types/src/components/index.d.ts.map +1 -1
  74. package/dist/types/src/containers/KanbanContainer/KanbanContainer.d.ts +6 -0
  75. package/dist/types/src/containers/KanbanContainer/KanbanContainer.d.ts.map +1 -0
  76. package/dist/types/src/{components → containers/KanbanContainer}/KanbanContainer.stories.d.ts +18 -14
  77. package/dist/types/src/containers/KanbanContainer/KanbanContainer.stories.d.ts.map +1 -0
  78. package/dist/types/src/containers/KanbanContainer/index.d.ts +3 -0
  79. package/dist/types/src/containers/KanbanContainer/index.d.ts.map +1 -0
  80. package/dist/types/src/containers/KanbanViewEditor/KanbanViewEditor.d.ts +6 -0
  81. package/dist/types/src/containers/KanbanViewEditor/KanbanViewEditor.d.ts.map +1 -0
  82. package/dist/types/src/containers/KanbanViewEditor/index.d.ts +3 -0
  83. package/dist/types/src/containers/KanbanViewEditor/index.d.ts.map +1 -0
  84. package/dist/types/src/containers/index.d.ts +4 -0
  85. package/dist/types/src/containers/index.d.ts.map +1 -0
  86. package/dist/types/src/hooks/index.d.ts +6 -0
  87. package/dist/types/src/hooks/index.d.ts.map +1 -0
  88. package/dist/types/src/hooks/useEchoChangeCallback.d.ts +13 -0
  89. package/dist/types/src/hooks/useEchoChangeCallback.d.ts.map +1 -0
  90. package/dist/types/src/hooks/useKanbanBoardModel.d.ts +16 -0
  91. package/dist/types/src/hooks/useKanbanBoardModel.d.ts.map +1 -0
  92. package/dist/types/src/hooks/useKanbanBoardModel.test.d.ts +2 -0
  93. package/dist/types/src/hooks/useKanbanBoardModel.test.d.ts.map +1 -0
  94. package/dist/types/src/hooks/useKanbanColumnEventHandler.d.ts +22 -0
  95. package/dist/types/src/hooks/useKanbanColumnEventHandler.d.ts.map +1 -0
  96. package/dist/types/src/hooks/useKanbanItemEventHandler.d.ts +19 -0
  97. package/dist/types/src/hooks/useKanbanItemEventHandler.d.ts.map +1 -0
  98. package/dist/types/src/hooks/useProjectionModel.d.ts +15 -0
  99. package/dist/types/src/hooks/useProjectionModel.d.ts.map +1 -0
  100. package/dist/types/src/playwright/board-manager.d.ts +5 -0
  101. package/dist/types/src/playwright/board-manager.d.ts.map +1 -0
  102. package/dist/types/src/playwright/playwright.config.d.ts +3 -0
  103. package/dist/types/src/playwright/playwright.config.d.ts.map +1 -0
  104. package/dist/types/src/playwright/smoke.spec.d.ts +2 -0
  105. package/dist/types/src/playwright/smoke.spec.d.ts.map +1 -0
  106. package/dist/types/src/testing/KanbanCardTileSimple.d.ts +5 -0
  107. package/dist/types/src/testing/KanbanCardTileSimple.d.ts.map +1 -0
  108. package/dist/types/src/testing/index.d.ts +2 -0
  109. package/dist/types/src/testing/index.d.ts.map +1 -0
  110. package/dist/types/src/translations.d.ts +16 -0
  111. package/dist/types/src/translations.d.ts.map +1 -1
  112. package/dist/types/src/types/Kanban.d.ts +37 -0
  113. package/dist/types/src/types/Kanban.d.ts.map +1 -0
  114. package/dist/types/src/types/constants.d.ts +6 -0
  115. package/dist/types/src/types/constants.d.ts.map +1 -0
  116. package/dist/types/src/types/index.d.ts +2 -0
  117. package/dist/types/src/types/index.d.ts.map +1 -1
  118. package/dist/types/src/types/schema.d.ts +5 -5
  119. package/dist/types/src/types/schema.d.ts.map +1 -1
  120. package/dist/types/src/types/types.d.ts +28 -0
  121. package/dist/types/src/types/types.d.ts.map +1 -1
  122. package/dist/types/src/util/arrangement.d.ts +68 -0
  123. package/dist/types/src/util/arrangement.d.ts.map +1 -0
  124. package/dist/types/src/util/arrangement.test.d.ts +2 -0
  125. package/dist/types/src/util/arrangement.test.d.ts.map +1 -0
  126. package/dist/types/src/util/index.d.ts +2 -0
  127. package/dist/types/src/util/index.d.ts.map +1 -0
  128. package/dist/types/tsconfig.tsbuildinfo +1 -1
  129. package/package.json +47 -42
  130. package/src/KanbanPlugin.tsx +15 -15
  131. package/src/blueprints/index.ts +1 -1
  132. package/src/blueprints/kanban-blueprint.ts +14 -7
  133. package/src/capabilities/artifact-definition/artifact-definition.ts +8 -7
  134. package/src/capabilities/blueprint-definition/blueprint-definition.ts +6 -12
  135. package/src/capabilities/operation-resolver/operation-resolver.ts +5 -5
  136. package/src/capabilities/react-surface/react-surface.tsx +14 -14
  137. package/src/components/KanbanBoard/KanbanBoard.stories.tsx +142 -0
  138. package/src/components/KanbanBoard/KanbanBoard.tsx +183 -0
  139. package/src/components/KanbanBoard/KanbanCard.tsx +86 -0
  140. package/src/components/KanbanBoard/KanbanColumn.tsx +69 -0
  141. package/src/components/KanbanBoard/index.ts +5 -0
  142. package/src/components/index.ts +1 -2
  143. package/src/{components → containers/KanbanContainer}/KanbanContainer.stories.tsx +62 -85
  144. package/src/containers/KanbanContainer/KanbanContainer.tsx +87 -0
  145. package/src/containers/KanbanContainer/index.ts +7 -0
  146. package/src/{components → containers/KanbanViewEditor}/KanbanViewEditor.tsx +23 -19
  147. package/src/containers/KanbanViewEditor/index.ts +7 -0
  148. package/src/containers/index.ts +8 -0
  149. package/src/hooks/index.ts +9 -0
  150. package/src/hooks/useEchoChangeCallback.ts +30 -0
  151. package/src/hooks/useKanbanBoardModel.test.ts +235 -0
  152. package/src/hooks/useKanbanBoardModel.ts +143 -0
  153. package/src/hooks/useKanbanColumnEventHandler.ts +106 -0
  154. package/src/hooks/useKanbanItemEventHandler.ts +133 -0
  155. package/src/hooks/useProjectionModel.ts +58 -0
  156. package/src/meta.ts +1 -1
  157. package/src/playwright/board-manager.ts +13 -0
  158. package/src/playwright/playwright.config.ts +19 -0
  159. package/src/playwright/smoke.spec.ts +107 -0
  160. package/src/testing/KanbanCardTileSimple.tsx +76 -0
  161. package/src/testing/index.ts +5 -0
  162. package/src/translations.ts +9 -1
  163. package/src/types/Kanban.ts +71 -0
  164. package/src/types/constants.ts +9 -0
  165. package/src/types/index.ts +2 -0
  166. package/src/types/schema.ts +8 -9
  167. package/src/types/types.ts +35 -0
  168. package/src/util/arrangement.test.ts +208 -0
  169. package/src/util/arrangement.ts +167 -0
  170. package/src/util/index.ts +5 -0
  171. package/dist/lib/browser/blueprint-definition-T2544VMJ.mjs +0 -17
  172. package/dist/lib/browser/blueprint-definition-T2544VMJ.mjs.map +0 -7
  173. package/dist/lib/browser/chunk-L6N4ZDZ7.mjs.map +0 -7
  174. package/dist/lib/browser/chunk-XYQO4VL7.mjs +0 -150
  175. package/dist/lib/browser/chunk-XYQO4VL7.mjs.map +0 -7
  176. package/dist/lib/browser/operation-resolver-UEJHX42A.mjs.map +0 -7
  177. package/dist/lib/browser/react-surface-LFUJAPRL.mjs +0 -236
  178. package/dist/lib/browser/react-surface-LFUJAPRL.mjs.map +0 -7
  179. package/dist/lib/node-esm/blueprint-definition-APJQFSHJ.mjs.map +0 -7
  180. package/dist/lib/node-esm/chunk-NN6JMKIT.mjs +0 -152
  181. package/dist/lib/node-esm/chunk-NN6JMKIT.mjs.map +0 -7
  182. package/dist/lib/node-esm/chunk-ZHRMUKTF.mjs.map +0 -7
  183. package/dist/lib/node-esm/operation-resolver-5RPWHZCF.mjs.map +0 -7
  184. package/dist/lib/node-esm/react-surface-7TSGBRJL.mjs +0 -237
  185. package/dist/lib/node-esm/react-surface-7TSGBRJL.mjs.map +0 -7
  186. package/dist/types/src/components/KanbanContainer.d.ts +0 -6
  187. package/dist/types/src/components/KanbanContainer.d.ts.map +0 -1
  188. package/dist/types/src/components/KanbanContainer.stories.d.ts.map +0 -1
  189. package/dist/types/src/components/KanbanViewEditor.d.ts +0 -8
  190. package/dist/types/src/components/KanbanViewEditor.d.ts.map +0 -1
  191. package/src/components/KanbanContainer.tsx +0 -86
@@ -0,0 +1,300 @@
1
+ import {
2
+ useEchoChangeCallback,
3
+ useKanbanBoardModel,
4
+ useKanbanColumnEventHandler,
5
+ useKanbanItemEventHandler,
6
+ useProjectionModel
7
+ } from "./chunk-PCKA5REX.mjs";
8
+ import {
9
+ KanbanOperation,
10
+ UNCATEGORIZED_ATTRIBUTES,
11
+ UNCATEGORIZED_VALUE,
12
+ meta
13
+ } from "./chunk-Z2ZFDWCK.mjs";
14
+ import "./chunk-J5LGTIGS.mjs";
15
+
16
+ // src/containers/KanbanContainer/KanbanContainer.tsx
17
+ import { RegistryContext as RegistryContext2 } from "@effect-atom/atom-react";
18
+ import React4, { useCallback as useCallback3, useContext as useContext2, useMemo as useMemo3 } from "react";
19
+ import { useCapabilities, useOperationInvoker } from "@dxos/app-framework/ui";
20
+ import { AppCapabilities } from "@dxos/app-toolkit";
21
+ import { Filter, Obj as Obj3, Type } from "@dxos/echo";
22
+ import { AtomQuery } from "@dxos/echo-atom";
23
+ import { useObject, useSchema } from "@dxos/react-client/echo";
24
+ import { Panel } from "@dxos/react-ui";
25
+ import { getTypenameFromQuery } from "@dxos/schema";
26
+
27
+ // src/components/KanbanBoard/KanbanBoard.tsx
28
+ import { RegistryContext } from "@effect-atom/atom-react";
29
+ import { createContext } from "@radix-ui/react-context";
30
+ import React3, { useCallback as useCallback2, useContext, useMemo as useMemo2 } from "react";
31
+ import { Obj as Obj2 } from "@dxos/echo";
32
+ import { useTranslation as useTranslation2 } from "@dxos/react-ui";
33
+ import { Board as Board2, useBoard as useBoard3 } from "@dxos/react-ui-mosaic";
34
+
35
+ // src/components/KanbanBoard/KanbanCard.tsx
36
+ import React, { forwardRef, useCallback, useMemo, useState } from "react";
37
+ import { Surface } from "@dxos/app-framework/ui";
38
+ import { useObjectMenuItems } from "@dxos/app-toolkit/ui";
39
+ import { Obj } from "@dxos/echo";
40
+ import { Card, Toolbar, useTranslation } from "@dxos/react-ui";
41
+ import { Menu, createMenuAction } from "@dxos/react-ui-menu";
42
+ import { Focus, Mosaic, useBoard } from "@dxos/react-ui-mosaic";
43
+ var KANBAN_CARD_TILE_NAME = "KanbanBoard.Card";
44
+ var KanbanCard = /* @__PURE__ */ forwardRef(({ data, location, debug }, forwardedRef) => {
45
+ const { t } = useTranslation(meta.id);
46
+ const { model } = useBoard(KANBAN_CARD_TILE_NAME);
47
+ const { projection, onCardRemove } = useKanbanBoard(KANBAN_CARD_TILE_NAME);
48
+ const [dragHandle, setDragHandle] = useState(null);
49
+ const dragHandleRef = useCallback((el) => setDragHandle(el), []);
50
+ const objectMenuItems = useObjectMenuItems(data);
51
+ const menuItems = useMemo(() => [
52
+ ...objectMenuItems,
53
+ ...onCardRemove ? [
54
+ createMenuAction("remove", () => onCardRemove(data), {
55
+ label: t("remove card label"),
56
+ icon: "ph--trash--regular"
57
+ })
58
+ ] : []
59
+ ], [
60
+ objectMenuItems,
61
+ onCardRemove,
62
+ data,
63
+ t
64
+ ]);
65
+ return /* @__PURE__ */ React.createElement(Mosaic.Tile, {
66
+ asChild: true,
67
+ id: model.getItemId(data),
68
+ data,
69
+ location,
70
+ debug,
71
+ dragHandle
72
+ }, /* @__PURE__ */ React.createElement(Focus.Group, {
73
+ asChild: true
74
+ }, /* @__PURE__ */ React.createElement(Menu.Root, null, /* @__PURE__ */ React.createElement(Card.Root, {
75
+ ref: forwardedRef,
76
+ "data-testid": "board-item"
77
+ }, /* @__PURE__ */ React.createElement(Card.Toolbar, null, /* @__PURE__ */ React.createElement(Card.DragHandle, {
78
+ ref: dragHandleRef
79
+ }), /* @__PURE__ */ React.createElement(Card.Title, null, Obj.getLabel(data)), /* @__PURE__ */ React.createElement(Menu.Trigger, {
80
+ asChild: true,
81
+ disabled: !menuItems?.length
82
+ }, /* @__PURE__ */ React.createElement(Toolbar.IconButton, {
83
+ iconOnly: true,
84
+ variant: "ghost",
85
+ icon: "ph--dots-three-vertical--regular",
86
+ label: t("action menu label")
87
+ })), /* @__PURE__ */ React.createElement(Menu.Content, {
88
+ items: menuItems
89
+ })), /* @__PURE__ */ React.createElement(Card.Content, null, projection && /* @__PURE__ */ React.createElement(Surface.Surface, {
90
+ role: "card--content",
91
+ limit: 1,
92
+ data: {
93
+ subject: data,
94
+ projection
95
+ }
96
+ }))))));
97
+ });
98
+ KanbanCard.displayName = KANBAN_CARD_TILE_NAME;
99
+
100
+ // src/components/KanbanBoard/KanbanColumn.tsx
101
+ import React2, { forwardRef as forwardRef2, useRef } from "react";
102
+ import { Board, useBoard as useBoard2 } from "@dxos/react-ui-mosaic";
103
+ var KANBAN_COLUMN_NAME = "KanbanBoard.Column";
104
+ var KanbanColumn = /* @__PURE__ */ forwardRef2(({ data: column, location, debug }, forwardedRef) => {
105
+ const { model } = useBoard2(KANBAN_COLUMN_NAME);
106
+ const { columnFieldPath, change, onCardAdd, getPivotAttributes, itemTile } = useKanbanBoard(KANBAN_COLUMN_NAME);
107
+ const { title } = getPivotAttributes(column.columnValue);
108
+ const uncategorized = column.columnValue === UNCATEGORIZED_VALUE;
109
+ const dragHandleRef = useRef(null);
110
+ const eventHandler = useKanbanItemEventHandler({
111
+ column,
112
+ columnFieldPath,
113
+ model,
114
+ change
115
+ });
116
+ return /* @__PURE__ */ React2.createElement(Board.Column.Root, {
117
+ data: column,
118
+ location,
119
+ classNames: "grid grid-rows-[var(--dx-rail-action)_1fr_var(--dx-rail-action)]",
120
+ debug,
121
+ dragHandleRef,
122
+ ref: forwardedRef
123
+ }, uncategorized ? /* @__PURE__ */ React2.createElement("div", {
124
+ className: "border-b border-separator p-2",
125
+ "data-testid": "board-column-header"
126
+ }, /* @__PURE__ */ React2.createElement("span", {
127
+ className: "font-medium"
128
+ }, title)) : /* @__PURE__ */ React2.createElement(Board.Column.Header, {
129
+ label: title,
130
+ dragHandleRef
131
+ }), /* @__PURE__ */ React2.createElement(Board.Column.Body, {
132
+ data: column,
133
+ eventHandler,
134
+ Tile: itemTile
135
+ }), onCardAdd && /* @__PURE__ */ React2.createElement(Board.Column.Footer, {
136
+ onAdd: () => onCardAdd(column.columnValue === UNCATEGORIZED_VALUE ? void 0 : column.columnValue)
137
+ }));
138
+ });
139
+ KanbanColumn.displayName = KANBAN_COLUMN_NAME;
140
+
141
+ // src/components/KanbanBoard/KanbanBoard.tsx
142
+ var KANBAN_BOARD_NAME = "KanbanBoard.Context";
143
+ var [KanbanBoardContext, useKanbanBoard] = createContext(KANBAN_BOARD_NAME, {
144
+ kanbanId: "never",
145
+ projection: void 0,
146
+ columnFieldPath: void 0,
147
+ change: {
148
+ kanban: () => {
149
+ },
150
+ setItemField: () => {
151
+ }
152
+ },
153
+ pivotFieldId: void 0,
154
+ getPivotAttributes: (id) => id === UNCATEGORIZED_VALUE ? UNCATEGORIZED_ATTRIBUTES : {
155
+ title: id,
156
+ color: "neutral"
157
+ },
158
+ itemTile: () => null
159
+ });
160
+ var KANBAN_BOARD_ROOT = "KanbanBoard.Root";
161
+ var KanbanBoardRoot = ({ children, change, itemTile = KanbanCard, kanban, projection, items, onCardAdd, onCardRemove }) => {
162
+ const registry = useContext(RegistryContext);
163
+ const { t } = useTranslation2(meta.id);
164
+ const model = useKanbanBoardModel(kanban, projection, items, registry);
165
+ const columns = model?.getColumns?.() ?? [];
166
+ const view = kanban?.view?.target;
167
+ const pivotFieldId = view?.projection?.pivotFieldId;
168
+ const columnFieldPath = useMemo2(() => {
169
+ if (pivotFieldId === void 0 || !projection) {
170
+ return void 0;
171
+ }
172
+ return projection.tryGetFieldProjection(pivotFieldId)?.props.property;
173
+ }, [
174
+ projection,
175
+ pivotFieldId
176
+ ]);
177
+ const getPivotAttributes = useCallback2((columnValue) => {
178
+ if (columnValue === UNCATEGORIZED_VALUE) {
179
+ return UNCATEGORIZED_ATTRIBUTES;
180
+ }
181
+ const options = projection?.tryGetFieldProjection(pivotFieldId ?? "")?.props.options ?? [];
182
+ const option = options.find((option2) => option2.id === columnValue);
183
+ return option ?? {
184
+ title: columnValue,
185
+ color: "neutral"
186
+ };
187
+ }, [
188
+ projection,
189
+ pivotFieldId
190
+ ]);
191
+ if (columns.length === 0) {
192
+ return /* @__PURE__ */ React3.createElement("div", {
193
+ className: "flex flex-1 items-center justify-center p-8 text-center text-description"
194
+ }, t("select pivot placeholder"));
195
+ }
196
+ return /* @__PURE__ */ React3.createElement(KanbanBoardContext, {
197
+ kanbanId: Obj2.getDXN(kanban).toString(),
198
+ projection,
199
+ columnFieldPath,
200
+ pivotFieldId,
201
+ getPivotAttributes,
202
+ itemTile,
203
+ change,
204
+ onCardAdd,
205
+ onCardRemove
206
+ }, /* @__PURE__ */ React3.createElement(Board2.Root, {
207
+ model
208
+ }, children));
209
+ };
210
+ KanbanBoardRoot.displayName = KANBAN_BOARD_ROOT;
211
+ var KANBAN_BOARD_CONTENT = "KanbanBoard.Content";
212
+ var KanbanBoardContent = (props) => {
213
+ const { model } = useBoard3(KANBAN_BOARD_CONTENT);
214
+ const { kanbanId, projection, pivotFieldId, change } = useKanbanBoard(KANBAN_BOARD_CONTENT);
215
+ const columnEventHandler = useKanbanColumnEventHandler({
216
+ id: `${kanbanId}-columns`,
217
+ model,
218
+ projection: projection ?? void 0,
219
+ pivotFieldId: pivotFieldId ?? void 0,
220
+ change
221
+ });
222
+ return /* @__PURE__ */ React3.createElement(Board2.Content, {
223
+ id: kanbanId,
224
+ eventHandler: columnEventHandler,
225
+ Tile: KanbanColumn
226
+ });
227
+ };
228
+ KanbanBoardContent.displayName = KANBAN_BOARD_CONTENT;
229
+ var KanbanBoard = {
230
+ Root: KanbanBoardRoot,
231
+ Content: KanbanBoardContent,
232
+ Column: KanbanColumn,
233
+ Card: KanbanCard
234
+ };
235
+
236
+ // src/containers/KanbanContainer/KanbanContainer.tsx
237
+ var KanbanContainer = ({ role, subject: object }) => {
238
+ const registry = useContext2(RegistryContext2);
239
+ const schemas = useCapabilities(AppCapabilities.Schema);
240
+ const db = Obj3.getDatabase(object);
241
+ const { invokePromise } = useOperationInvoker();
242
+ const [view] = useObject(object.view);
243
+ const typename = view?.query ? getTypenameFromQuery(view.query.ast) : void 0;
244
+ const schemaFromDb = useSchema(db, typename);
245
+ const cardSchema = useMemo3(() => schemaFromDb ?? schemas.flat().find((schema) => Type.getTypename(schema) === typename), [
246
+ schemaFromDb,
247
+ schemas,
248
+ typename
249
+ ]);
250
+ const items = useMemo3(() => db ? AtomQuery.make(db, cardSchema ? Filter.type(cardSchema) : Filter.nothing()) : null, [
251
+ db,
252
+ cardSchema
253
+ ]);
254
+ const projection = useProjectionModel(cardSchema, object, registry);
255
+ const change = useEchoChangeCallback(object);
256
+ const pivotFieldId = view?.projection?.pivotFieldId;
257
+ const columnFieldPath = projection && pivotFieldId ? projection.tryGetFieldProjection(pivotFieldId)?.props.property : void 0;
258
+ const handleCardAdd = useCallback3((columnValue) => {
259
+ if (db && cardSchema && columnFieldPath) {
260
+ const card = Obj3.make(cardSchema, {
261
+ [columnFieldPath]: columnValue
262
+ });
263
+ db.add(card);
264
+ return card.id;
265
+ }
266
+ }, [
267
+ db,
268
+ cardSchema,
269
+ columnFieldPath
270
+ ]);
271
+ const handleCardRemove = useCallback3((card) => {
272
+ void invokePromise(KanbanOperation.DeleteCard, {
273
+ card
274
+ });
275
+ }, [
276
+ invokePromise
277
+ ]);
278
+ if (!object || !db || !items || !projection || !change) {
279
+ return null;
280
+ }
281
+ return /* @__PURE__ */ React4.createElement(Panel.Root, {
282
+ role
283
+ }, /* @__PURE__ */ React4.createElement(KanbanBoard.Root, {
284
+ kanban: object,
285
+ projection,
286
+ items,
287
+ change,
288
+ onCardAdd: handleCardAdd,
289
+ onCardRemove: handleCardRemove
290
+ }, /* @__PURE__ */ React4.createElement(Panel.Content, {
291
+ asChild: true
292
+ }, /* @__PURE__ */ React4.createElement(KanbanBoard.Content, null))));
293
+ };
294
+
295
+ // src/containers/KanbanContainer/index.ts
296
+ var KanbanContainer_default = KanbanContainer;
297
+ export {
298
+ KanbanContainer_default as default
299
+ };
300
+ //# sourceMappingURL=KanbanContainer-N532FS3F.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/KanbanContainer/KanbanContainer.tsx", "../../../src/components/KanbanBoard/KanbanBoard.tsx", "../../../src/components/KanbanBoard/KanbanCard.tsx", "../../../src/components/KanbanBoard/KanbanColumn.tsx", "../../../src/containers/KanbanContainer/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { RegistryContext } from '@effect-atom/atom-react';\nimport React, { useCallback, useContext, useMemo } from 'react';\n\nimport { useCapabilities, useOperationInvoker } from '@dxos/app-framework/ui';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport { type SurfaceComponentProps } from '@dxos/app-toolkit/ui';\nimport { Filter, Obj, Type } from '@dxos/echo';\nimport { AtomQuery } from '@dxos/echo-atom';\nimport { useObject, useSchema } from '@dxos/react-client/echo';\nimport { Panel } from '@dxos/react-ui';\nimport { getTypenameFromQuery } from '@dxos/schema';\n\nimport { KanbanBoard } from '../../components';\nimport { useEchoChangeCallback, useProjectionModel } from '../../hooks';\nimport { type Kanban, KanbanOperation } from '../../types';\n\nexport type KanbanContainerProps = SurfaceComponentProps<Kanban.Kanban>;\n\nexport const KanbanContainer = ({ role, subject: object }: KanbanContainerProps) => {\n const registry = useContext(RegistryContext);\n const schemas = useCapabilities(AppCapabilities.Schema);\n const db = Obj.getDatabase(object);\n const { invokePromise } = useOperationInvoker();\n const [view] = useObject(object.view);\n const typename = view?.query ? getTypenameFromQuery(view.query.ast) : undefined;\n\n const schemaFromDb = useSchema(db, typename);\n const cardSchema = useMemo(\n () => schemaFromDb ?? schemas.flat().find((schema) => Type.getTypename(schema) === typename),\n [schemaFromDb, schemas, typename],\n );\n\n const items = useMemo(\n () => (db ? AtomQuery.make(db, cardSchema ? Filter.type(cardSchema) : Filter.nothing()) : null),\n [db, cardSchema],\n );\n\n const projection = useProjectionModel(cardSchema, object, registry);\n const change = useEchoChangeCallback(object);\n\n const pivotFieldId = view?.projection?.pivotFieldId;\n const columnFieldPath =\n projection && pivotFieldId ? projection.tryGetFieldProjection(pivotFieldId)?.props.property : undefined;\n\n const handleCardAdd = useCallback(\n (columnValue: string | undefined) => {\n if (db && cardSchema && columnFieldPath) {\n const card = Obj.make(cardSchema, { [columnFieldPath]: columnValue });\n db.add(card);\n return card.id;\n }\n },\n [db, cardSchema, columnFieldPath],\n );\n\n const handleCardRemove = useCallback(\n (card: { id: string }) => {\n void invokePromise(KanbanOperation.DeleteCard, { card });\n },\n [invokePromise],\n );\n\n if (!object || !db || !items || !projection || !change) {\n return null;\n }\n\n return (\n <Panel.Root role={role}>\n <KanbanBoard.Root\n kanban={object}\n projection={projection}\n items={items}\n change={change}\n onCardAdd={handleCardAdd}\n onCardRemove={handleCardRemove}\n >\n <Panel.Content asChild>\n <KanbanBoard.Content />\n </Panel.Content>\n </KanbanBoard.Root>\n </Panel.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Atom, RegistryContext } from '@effect-atom/atom-react';\nimport { createContext } from '@radix-ui/react-context';\nimport React, {\n type ComponentPropsWithoutRef,\n type ComponentType,\n type PropsWithChildren,\n useCallback,\n useContext,\n useMemo,\n} from 'react';\n\nimport { Obj } from '@dxos/echo';\nimport { useTranslation } from '@dxos/react-ui';\nimport { Board, useBoard } from '@dxos/react-ui-mosaic';\nimport type { ProjectionModel } from '@dxos/schema';\n\nimport { useKanbanBoardModel, useKanbanColumnEventHandler } from '../../hooks';\nimport { meta } from '../../meta';\nimport { type Kanban, type KanbanChangeCallback, UNCATEGORIZED_ATTRIBUTES, UNCATEGORIZED_VALUE } from '../../types';\n\nimport { KanbanCard, type KanbanCardProps } from './KanbanCard';\nimport { KanbanColumn, type KanbanColumnProps } from './KanbanColumn';\n\n// TODO(burdon): Rename Kanban.\n\n//\n// Context\n//\n\nconst KANBAN_BOARD_NAME = 'KanbanBoard.Context';\n\n/**\n * Context value for the Kanban board.\n * Items are Echo objects (Obj.Unknown).\n */\ntype KanbanBoardContextValue = {\n kanbanId: string;\n projection: ProjectionModel | undefined;\n columnFieldPath: string | undefined;\n change: KanbanChangeCallback<Obj.Unknown>;\n pivotFieldId: string | undefined;\n getPivotAttributes: (columnValue: string) => { title: string; color: string };\n itemTile?: ComponentType<KanbanCardProps>; // TODO(burdon): Prop.\n onCardAdd?: (columnValue: string | undefined) => string | undefined;\n onCardRemove?: (card: Obj.Unknown) => void;\n};\n\nconst [KanbanBoardContext, useKanbanBoard] = createContext<KanbanBoardContextValue>(KANBAN_BOARD_NAME, {\n kanbanId: 'never',\n projection: undefined,\n columnFieldPath: undefined,\n change: { kanban: () => {}, setItemField: () => {} },\n pivotFieldId: undefined,\n getPivotAttributes: (id: string) =>\n id === UNCATEGORIZED_VALUE ? UNCATEGORIZED_ATTRIBUTES : { title: id, color: 'neutral' },\n itemTile: (() => null) as ComponentType<KanbanCardProps>,\n});\n\n//\n// Root\n//\n\nconst KANBAN_BOARD_ROOT = 'KanbanBoard.Root';\n\ntype KanbanBoardRootProps = PropsWithChildren<\n Pick<KanbanBoardContextValue, 'change' | 'itemTile'> & {\n kanban: Kanban.Kanban;\n /** Required when providing context; Root derives columnFieldPath, pivotFieldId, getPivotAttributes from kanban + projection. */\n projection: ProjectionModel;\n /** Atom of items (e.g. from AtomQuery for DB, or Atom.make([]) for in-memory). */\n items: Atom.Atom<Obj.Unknown[]>;\n onCardAdd?: (columnValue: string | undefined) => string | undefined;\n onCardRemove?: (card: Obj.Unknown) => void;\n } & ComponentPropsWithoutRef<'div'>\n>;\n\nexport const KanbanBoardRoot = ({\n children,\n change,\n itemTile = KanbanCard,\n kanban,\n projection,\n items,\n onCardAdd,\n onCardRemove,\n}: KanbanBoardRootProps) => {\n const registry = useContext(RegistryContext);\n const { t } = useTranslation(meta.id);\n const model = useKanbanBoardModel(kanban, projection, items, registry);\n const columns = model?.getColumns?.() ?? [];\n const view = kanban?.view?.target;\n const pivotFieldId = view?.projection?.pivotFieldId;\n const columnFieldPath = useMemo(() => {\n if (pivotFieldId === undefined || !projection) {\n return undefined;\n }\n\n return projection.tryGetFieldProjection(pivotFieldId)?.props.property;\n }, [projection, pivotFieldId]);\n\n const getPivotAttributes = useCallback<KanbanBoardContextValue['getPivotAttributes']>(\n (columnValue) => {\n if (columnValue === UNCATEGORIZED_VALUE) {\n return UNCATEGORIZED_ATTRIBUTES;\n }\n\n const options = projection?.tryGetFieldProjection(pivotFieldId ?? '')?.props.options ?? [];\n const option = options.find((option) => option.id === columnValue);\n return option ?? ({ title: columnValue, color: 'neutral' } as const);\n },\n [projection, pivotFieldId],\n );\n\n if (columns.length === 0) {\n return (\n <div className='flex flex-1 items-center justify-center p-8 text-center text-description'>\n {t('select pivot placeholder')}\n </div>\n );\n }\n\n return (\n <KanbanBoardContext\n kanbanId={Obj.getDXN(kanban).toString()}\n projection={projection}\n columnFieldPath={columnFieldPath}\n pivotFieldId={pivotFieldId}\n getPivotAttributes={getPivotAttributes}\n itemTile={itemTile}\n change={change}\n onCardAdd={onCardAdd}\n onCardRemove={onCardRemove}\n >\n <Board.Root model={model}>{children}</Board.Root>\n </KanbanBoardContext>\n );\n};\n\nKanbanBoardRoot.displayName = KANBAN_BOARD_ROOT;\n\n//\n// KanbanBoardContent\n//\n\nconst KANBAN_BOARD_CONTENT = 'KanbanBoard.Content';\n\ntype KanbanBoardContentProps = {};\n\nexport const KanbanBoardContent = (props: KanbanBoardContentProps) => {\n const { model } = useBoard(KANBAN_BOARD_CONTENT);\n const { kanbanId, projection, pivotFieldId, change } = useKanbanBoard(KANBAN_BOARD_CONTENT);\n\n const columnEventHandler = useKanbanColumnEventHandler({\n id: `${kanbanId}-columns`,\n model,\n projection: projection ?? undefined,\n pivotFieldId: pivotFieldId ?? undefined,\n change,\n });\n\n return <Board.Content id={kanbanId} eventHandler={columnEventHandler} Tile={KanbanColumn} />;\n};\n\nKanbanBoardContent.displayName = KANBAN_BOARD_CONTENT;\n\n//\n// KanbanBoard\n//\n\nexport const KanbanBoard = {\n Root: KanbanBoardRoot,\n Content: KanbanBoardContent,\n Column: KanbanColumn,\n Card: KanbanCard,\n};\n\nexport { useKanbanBoard };\n\nexport type { KanbanBoardRootProps as KanbanBoardProps, KanbanCardProps, KanbanColumnProps };\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { forwardRef, useCallback, useMemo, useState } from 'react';\n\nimport { Surface } from '@dxos/app-framework/ui';\nimport { useObjectMenuItems } from '@dxos/app-toolkit/ui';\nimport { Obj } from '@dxos/echo';\nimport { Card, Toolbar, useTranslation } from '@dxos/react-ui';\nimport { Menu, createMenuAction } from '@dxos/react-ui-menu';\nimport { Focus, Mosaic, type MosaicTileProps, useBoard } from '@dxos/react-ui-mosaic';\n\nimport { meta } from '../../meta';\n\nimport { useKanbanBoard } from './KanbanBoard';\n\nconst KANBAN_CARD_TILE_NAME = 'KanbanBoard.Card';\n\nexport type KanbanCardProps = Pick<MosaicTileProps<Obj.Unknown>, 'location' | 'data' | 'debug'>;\n\n/**\n * Mosaic Tile for Kanban card.\n * Uses Surface for content; requires plugin manager context.\n */\nexport const KanbanCard = forwardRef<HTMLDivElement, KanbanCardProps>(({ data, location, debug }, forwardedRef) => {\n const { t } = useTranslation(meta.id);\n const { model } = useBoard(KANBAN_CARD_TILE_NAME);\n const { projection, onCardRemove } = useKanbanBoard(KANBAN_CARD_TILE_NAME);\n const [dragHandle, setDragHandle] = useState<HTMLButtonElement | null>(null);\n const dragHandleRef = useCallback((el: HTMLButtonElement | null) => setDragHandle(el), []);\n\n const objectMenuItems = useObjectMenuItems(data);\n\n const menuItems = useMemo(\n () => [\n ...objectMenuItems,\n ...(onCardRemove\n ? [\n createMenuAction('remove', () => onCardRemove(data), {\n label: t('remove card label'),\n icon: 'ph--trash--regular',\n }),\n ]\n : []),\n ],\n [objectMenuItems, onCardRemove, data, t],\n );\n\n return (\n <Mosaic.Tile\n asChild\n id={model.getItemId(data)}\n data={data}\n location={location}\n debug={debug}\n dragHandle={dragHandle}\n >\n <Focus.Group asChild>\n <Menu.Root>\n <Card.Root ref={forwardedRef} data-testid='board-item'>\n <Card.Toolbar>\n <Card.DragHandle ref={dragHandleRef} />\n <Card.Title>{Obj.getLabel(data)}</Card.Title>\n {/* TODO(wittjosiah): Reconcile with Card.Menu. */}\n <Menu.Trigger asChild disabled={!menuItems?.length}>\n <Toolbar.IconButton\n iconOnly\n variant='ghost'\n icon='ph--dots-three-vertical--regular'\n label={t('action menu label')}\n />\n </Menu.Trigger>\n <Menu.Content items={menuItems} />\n </Card.Toolbar>\n <Card.Content>\n {projection && <Surface.Surface role='card--content' limit={1} data={{ subject: data, projection }} />}\n </Card.Content>\n </Card.Root>\n </Menu.Root>\n </Focus.Group>\n </Mosaic.Tile>\n );\n});\n\nKanbanCard.displayName = KANBAN_CARD_TILE_NAME;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { forwardRef, useRef } from 'react';\n\nimport type { Obj } from '@dxos/echo';\nimport { Board, type MosaicTileProps, useBoard } from '@dxos/react-ui-mosaic';\n\nimport { useKanbanItemEventHandler } from '../../hooks';\nimport { type ColumnStructure, UNCATEGORIZED_VALUE } from '../../types';\n\nimport { useKanbanBoard } from './KanbanBoard';\n\nconst KANBAN_COLUMN_NAME = 'KanbanBoard.Column';\n\nexport type KanbanColumnProps = Pick<MosaicTileProps<ColumnStructure>, 'location' | 'data' | 'debug'>;\n\n/**\n * Mosaic Tile for Kanban column.\n */\nexport const KanbanColumn = forwardRef<HTMLDivElement, KanbanColumnProps>(\n ({ data: column, location, debug }, forwardedRef) => {\n const { model } = useBoard<ColumnStructure, Obj.Unknown>(KANBAN_COLUMN_NAME);\n const { columnFieldPath, change, onCardAdd, getPivotAttributes, itemTile } = useKanbanBoard(KANBAN_COLUMN_NAME);\n\n const { title } = getPivotAttributes(column.columnValue);\n const uncategorized = column.columnValue === UNCATEGORIZED_VALUE;\n const dragHandleRef = useRef<HTMLButtonElement | null>(null);\n\n const eventHandler = useKanbanItemEventHandler({\n column,\n columnFieldPath,\n model,\n change,\n });\n\n return (\n <Board.Column.Root\n data={column}\n location={location}\n classNames='grid grid-rows-[var(--dx-rail-action)_1fr_var(--dx-rail-action)]'\n debug={debug}\n dragHandleRef={dragHandleRef}\n ref={forwardedRef}\n >\n {uncategorized ? (\n <div className='border-b border-separator p-2' data-testid='board-column-header'>\n <span className='font-medium'>{title}</span>\n </div>\n ) : (\n <Board.Column.Header label={title} dragHandleRef={dragHandleRef as React.RefObject<HTMLButtonElement>} />\n )}\n <Board.Column.Body\n data={column}\n eventHandler={eventHandler}\n Tile={itemTile as React.FC<MosaicTileProps<Obj.Unknown>>}\n />\n {onCardAdd && (\n <Board.Column.Footer\n onAdd={() => onCardAdd(column.columnValue === UNCATEGORIZED_VALUE ? undefined : column.columnValue)}\n />\n )}\n </Board.Column.Root>\n );\n },\n);\n\nKanbanColumn.displayName = KANBAN_COLUMN_NAME;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { KanbanContainer } from './KanbanContainer';\n\nexport default KanbanContainer;\n"],
5
+ "mappings": "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",
6
+ "names": ["RegistryContext", "React", "useCallback", "useContext", "useMemo", "useCapabilities", "useOperationInvoker", "AppCapabilities", "Filter", "Obj", "Type", "AtomQuery", "useObject", "useSchema", "Panel", "getTypenameFromQuery", "RegistryContext", "createContext", "React", "useCallback", "useContext", "useMemo", "Obj", "useTranslation", "Board", "useBoard", "React", "forwardRef", "useCallback", "useMemo", "useState", "Surface", "useObjectMenuItems", "Obj", "Card", "Toolbar", "useTranslation", "Menu", "createMenuAction", "Focus", "Mosaic", "useBoard", "KANBAN_CARD_TILE_NAME", "KanbanCard", "forwardRef", "data", "location", "debug", "forwardedRef", "t", "useTranslation", "meta", "id", "model", "useBoard", "projection", "onCardRemove", "useKanbanBoard", "dragHandle", "setDragHandle", "useState", "dragHandleRef", "useCallback", "el", "objectMenuItems", "useObjectMenuItems", "menuItems", "useMemo", "createMenuAction", "label", "icon", "Mosaic", "Tile", "asChild", "getItemId", "Focus", "Group", "Menu", "Root", "Card", "ref", "data-testid", "Toolbar", "DragHandle", "Title", "Obj", "getLabel", "Trigger", "disabled", "length", "IconButton", "iconOnly", "variant", "Content", "items", "Surface", "role", "limit", "subject", "displayName", "React", "forwardRef", "useRef", "Board", "useBoard", "KANBAN_COLUMN_NAME", "KanbanColumn", "forwardRef", "data", "column", "location", "debug", "forwardedRef", "model", "useBoard", "columnFieldPath", "change", "onCardAdd", "getPivotAttributes", "itemTile", "useKanbanBoard", "title", "columnValue", "uncategorized", "UNCATEGORIZED_VALUE", "dragHandleRef", "useRef", "eventHandler", "useKanbanItemEventHandler", "React", "Board", "Column", "Root", "classNames", "ref", "div", "className", "data-testid", "span", "Header", "label", "Body", "Tile", "Footer", "onAdd", "undefined", "displayName", "KANBAN_BOARD_NAME", "KanbanBoardContext", "useKanbanBoard", "createContext", "kanbanId", "projection", "undefined", "columnFieldPath", "change", "kanban", "setItemField", "pivotFieldId", "getPivotAttributes", "id", "UNCATEGORIZED_VALUE", "UNCATEGORIZED_ATTRIBUTES", "title", "color", "itemTile", "KANBAN_BOARD_ROOT", "KanbanBoardRoot", "children", "KanbanCard", "items", "onCardAdd", "onCardRemove", "registry", "useContext", "RegistryContext", "t", "useTranslation", "meta", "model", "useKanbanBoardModel", "columns", "getColumns", "view", "target", "useMemo", "tryGetFieldProjection", "props", "property", "useCallback", "columnValue", "options", "option", "find", "length", "React", "div", "className", "Obj", "getDXN", "toString", "Board", "Root", "displayName", "KANBAN_BOARD_CONTENT", "KanbanBoardContent", "useBoard", "columnEventHandler", "useKanbanColumnEventHandler", "Content", "eventHandler", "Tile", "KanbanColumn", "KanbanBoard", "Column", "Card", "KanbanContainer", "role", "subject", "object", "registry", "useContext", "RegistryContext", "schemas", "useCapabilities", "AppCapabilities", "Schema", "db", "Obj", "getDatabase", "invokePromise", "useOperationInvoker", "view", "useObject", "typename", "query", "getTypenameFromQuery", "ast", "undefined", "schemaFromDb", "useSchema", "cardSchema", "useMemo", "flat", "find", "schema", "Type", "getTypename", "items", "AtomQuery", "make", "Filter", "type", "nothing", "projection", "useProjectionModel", "change", "useEchoChangeCallback", "pivotFieldId", "columnFieldPath", "tryGetFieldProjection", "props", "property", "handleCardAdd", "useCallback", "columnValue", "card", "add", "id", "handleCardRemove", "KanbanOperation", "DeleteCard", "React", "Panel", "Root", "KanbanBoard", "kanban", "onCardAdd", "onCardRemove", "Content", "asChild", "KanbanContainer"]
7
+ }
@@ -0,0 +1,66 @@
1
+ import {
2
+ useProjectionModel
3
+ } from "./chunk-PCKA5REX.mjs";
4
+ import {
5
+ SettingsSchema
6
+ } from "./chunk-Z2ZFDWCK.mjs";
7
+ import "./chunk-J5LGTIGS.mjs";
8
+
9
+ // src/containers/KanbanViewEditor/KanbanViewEditor.tsx
10
+ import { RegistryContext } from "@effect-atom/atom-react";
11
+ import React, { useCallback, useContext, useMemo } from "react";
12
+ import { Obj } from "@dxos/echo";
13
+ import { Format } from "@dxos/echo/internal";
14
+ import { useObject, useSchema } from "@dxos/react-client/echo";
15
+ import { Form, SelectField } from "@dxos/react-ui-form";
16
+ import { getTypenameFromQuery } from "@dxos/schema";
17
+ var KanbanViewEditor = ({ subject: object }) => {
18
+ const registry = useContext(RegistryContext);
19
+ const db = Obj.getDatabase(object);
20
+ const [view, updateView] = useObject(object.view);
21
+ const currentTypename = view?.query ? getTypenameFromQuery(view.query.ast) : void 0;
22
+ const schema = useSchema(db, currentTypename);
23
+ const projection = useProjectionModel(schema, object, registry);
24
+ const fieldProjections = projection?.getFieldProjections() ?? [];
25
+ const selectFields = useMemo(() => fieldProjections.filter((field) => field.props.format === Format.TypeFormat.SingleSelect).map(({ field }) => ({
26
+ value: field.id,
27
+ label: field.path
28
+ })), [
29
+ fieldProjections
30
+ ]);
31
+ const handleValuesChanged = useCallback((values) => {
32
+ if (values.columnFieldId != null) {
33
+ updateView((view2) => {
34
+ view2.projection.pivotFieldId = values.columnFieldId;
35
+ });
36
+ }
37
+ }, [
38
+ updateView
39
+ ]);
40
+ const initialValues = useMemo(() => ({
41
+ columnFieldId: view?.projection.pivotFieldId
42
+ }), [
43
+ view?.projection.pivotFieldId
44
+ ]);
45
+ const fieldMap = useMemo(() => ({
46
+ columnFieldId: (props) => /* @__PURE__ */ React.createElement(SelectField, {
47
+ ...props,
48
+ options: selectFields
49
+ })
50
+ }), [
51
+ selectFields
52
+ ]);
53
+ return /* @__PURE__ */ React.createElement(Form.Root, {
54
+ schema: SettingsSchema,
55
+ values: initialValues,
56
+ fieldMap,
57
+ onValuesChanged: handleValuesChanged
58
+ }, /* @__PURE__ */ React.createElement(Form.FieldSet, null));
59
+ };
60
+
61
+ // src/containers/KanbanViewEditor/index.ts
62
+ var KanbanViewEditor_default = KanbanViewEditor;
63
+ export {
64
+ KanbanViewEditor_default as default
65
+ };
66
+ //# sourceMappingURL=KanbanViewEditor-W7E4RAK2.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/KanbanViewEditor/KanbanViewEditor.tsx", "../../../src/containers/KanbanViewEditor/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { RegistryContext } from '@effect-atom/atom-react';\nimport React, { useCallback, useContext, useMemo } from 'react';\n\nimport { type SurfaceComponentProps } from '@dxos/app-toolkit/ui';\nimport { Obj } from '@dxos/echo';\nimport { Format } from '@dxos/echo/internal';\nimport { useObject, useSchema } from '@dxos/react-client/echo';\nimport { Form, type FormFieldMap, SelectField } from '@dxos/react-ui-form';\nimport { getTypenameFromQuery } from '@dxos/schema';\n\nimport { useProjectionModel } from '../../hooks';\nimport { type Kanban, SettingsSchema } from '../../types';\n\nexport type KanbanViewEditorProps = SurfaceComponentProps<Kanban.Kanban>;\n\nexport const KanbanViewEditor = ({ subject: object }: KanbanViewEditorProps) => {\n const registry = useContext(RegistryContext);\n const db = Obj.getDatabase(object);\n const [view, updateView] = useObject(object.view);\n const currentTypename = view?.query ? getTypenameFromQuery(view.query.ast) : undefined;\n const schema = useSchema(db, currentTypename);\n const projection = useProjectionModel(schema, object, registry);\n\n const fieldProjections = projection?.getFieldProjections() ?? [];\n const selectFields = useMemo(\n () =>\n fieldProjections\n .filter((field) => field.props.format === Format.TypeFormat.SingleSelect)\n .map(({ field }) => ({ value: field.id, label: field.path })),\n [fieldProjections],\n );\n\n const handleValuesChanged = useCallback(\n (values: Partial<{ columnFieldId: string }>) => {\n if (values.columnFieldId != null) {\n updateView((view) => {\n view.projection.pivotFieldId = values.columnFieldId;\n });\n }\n },\n [updateView],\n );\n\n const initialValues = useMemo(\n () => ({ columnFieldId: view?.projection.pivotFieldId }),\n [view?.projection.pivotFieldId],\n );\n\n const fieldMap: FormFieldMap = useMemo(\n () => ({ columnFieldId: (props) => <SelectField {...props} options={selectFields} /> }),\n [selectFields],\n );\n\n return (\n <Form.Root schema={SettingsSchema} values={initialValues} fieldMap={fieldMap} onValuesChanged={handleValuesChanged}>\n <Form.FieldSet />\n </Form.Root>\n );\n};\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { KanbanViewEditor } from './KanbanViewEditor';\n\nexport default KanbanViewEditor;\n"],
5
+ "mappings": ";;;;;;;;;AAIA,SAASA,uBAAuB;AAChC,OAAOC,SAASC,aAAaC,YAAYC,eAAe;AAGxD,SAASC,WAAW;AACpB,SAASC,cAAc;AACvB,SAASC,WAAWC,iBAAiB;AACrC,SAASC,MAAyBC,mBAAmB;AACrD,SAASC,4BAA4B;AAO9B,IAAMC,mBAAmB,CAAC,EAAEC,SAASC,OAAM,MAAyB;AACzE,QAAMC,WAAWC,WAAWC,eAAAA;AAC5B,QAAMC,KAAKC,IAAIC,YAAYN,MAAAA;AAC3B,QAAM,CAACO,MAAMC,UAAAA,IAAcC,UAAUT,OAAOO,IAAI;AAChD,QAAMG,kBAAkBH,MAAMI,QAAQC,qBAAqBL,KAAKI,MAAME,GAAG,IAAIC;AAC7E,QAAMC,SAASC,UAAUZ,IAAIM,eAAAA;AAC7B,QAAMO,aAAaC,mBAAmBH,QAAQf,QAAQC,QAAAA;AAEtD,QAAMkB,mBAAmBF,YAAYG,oBAAAA,KAAyB,CAAA;AAC9D,QAAMC,eAAeC,QACnB,MACEH,iBACGI,OAAO,CAACC,UAAUA,MAAMC,MAAMC,WAAWC,OAAOC,WAAWC,YAAY,EACvEC,IAAI,CAAC,EAAEN,MAAK,OAAQ;IAAEO,OAAOP,MAAMQ;IAAIC,OAAOT,MAAMU;EAAK,EAAA,GAC9D;IAACf;GAAiB;AAGpB,QAAMgB,sBAAsBC,YAC1B,CAACC,WAAAA;AACC,QAAIA,OAAOC,iBAAiB,MAAM;AAChC9B,iBAAW,CAACD,UAAAA;AACVA,QAAAA,MAAKU,WAAWsB,eAAeF,OAAOC;MACxC,CAAA;IACF;EACF,GACA;IAAC9B;GAAW;AAGd,QAAMgC,gBAAgBlB,QACpB,OAAO;IAAEgB,eAAe/B,MAAMU,WAAWsB;EAAa,IACtD;IAAChC,MAAMU,WAAWsB;GAAa;AAGjC,QAAME,WAAyBnB,QAC7B,OAAO;IAAEgB,eAAe,CAACb,UAAU,sBAAA,cAACiB,aAAAA;MAAa,GAAGjB;MAAOkB,SAAStB;;EAAiB,IACrF;IAACA;GAAa;AAGhB,SACE,sBAAA,cAACuB,KAAKC,MAAI;IAAC9B,QAAQ+B;IAAgBT,QAAQG;IAAeC;IAAoBM,iBAAiBZ;KAC7F,sBAAA,cAACS,KAAKI,UAAQ,IAAA,CAAA;AAGpB;;;ACxDA,IAAA,2BAAeC;",
6
+ "names": ["RegistryContext", "React", "useCallback", "useContext", "useMemo", "Obj", "Format", "useObject", "useSchema", "Form", "SelectField", "getTypenameFromQuery", "KanbanViewEditor", "subject", "object", "registry", "useContext", "RegistryContext", "db", "Obj", "getDatabase", "view", "updateView", "useObject", "currentTypename", "query", "getTypenameFromQuery", "ast", "undefined", "schema", "useSchema", "projection", "useProjectionModel", "fieldProjections", "getFieldProjections", "selectFields", "useMemo", "filter", "field", "props", "format", "Format", "TypeFormat", "SingleSelect", "map", "value", "id", "label", "path", "handleValuesChanged", "useCallback", "values", "columnFieldId", "pivotFieldId", "initialValues", "fieldMap", "SelectField", "options", "Form", "Root", "SettingsSchema", "onValuesChanged", "FieldSet", "KanbanViewEditor"]
7
+ }
@@ -0,0 +1,17 @@
1
+ import {
2
+ kanban_blueprint_default
3
+ } from "./chunk-B6RIAQMI.mjs";
4
+ import "./chunk-J5LGTIGS.mjs";
5
+
6
+ // src/capabilities/blueprint-definition/blueprint-definition.ts
7
+ import * as Effect from "effect/Effect";
8
+ import { Capability } from "@dxos/app-framework";
9
+ import { AppCapabilities } from "@dxos/app-toolkit";
10
+ var blueprintDefinition = Capability.makeModule(() => Effect.succeed([
11
+ Capability.contributes(AppCapabilities.BlueprintDefinition, kanban_blueprint_default)
12
+ ]));
13
+ var blueprint_definition_default = blueprintDefinition;
14
+ export {
15
+ blueprint_definition_default as default
16
+ };
17
+ //# sourceMappingURL=blueprint-definition-2NNRB2ZQ.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/blueprint-definition/blueprint-definition.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppCapabilities } from '@dxos/app-toolkit';\n\nimport { KanbanBlueprint } from '../../blueprints';\n\nconst blueprintDefinition = Capability.makeModule<\n [],\n Capability.Capability<typeof AppCapabilities.BlueprintDefinition>[]\n>(() => Effect.succeed([Capability.contributes(AppCapabilities.BlueprintDefinition, KanbanBlueprint)]));\n\nexport default blueprintDefinition;\n"],
5
+ "mappings": ";;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,uBAAuB;AAIhC,IAAMC,sBAAsBC,WAAWC,WAGrC,MAAaC,eAAQ;EAACF,WAAWG,YAAYC,gBAAgBC,qBAAqBC,wBAAAA;CAAiB,CAAA;AAErG,IAAA,+BAAeP;",
6
+ "names": ["Effect", "Capability", "AppCapabilities", "blueprintDefinition", "Capability", "makeModule", "succeed", "contributes", "AppCapabilities", "BlueprintDefinition", "KanbanBlueprint"]
7
+ }
@@ -1,8 +1,8 @@
1
1
  import {
2
- kanban_blueprint_exports
3
- } from "../chunk-L6N4ZDZ7.mjs";
2
+ kanban_blueprint_default
3
+ } from "../chunk-B6RIAQMI.mjs";
4
4
  import "../chunk-J5LGTIGS.mjs";
5
5
  export {
6
- kanban_blueprint_exports as KanbanBlueprint
6
+ kanban_blueprint_default as KanbanBlueprint
7
7
  };
8
8
  //# sourceMappingURL=index.mjs.map
@@ -1,26 +1,14 @@
1
- import {
2
- __export
3
- } from "./chunk-J5LGTIGS.mjs";
4
-
5
1
  // src/blueprints/kanban-blueprint.ts
6
- var kanban_blueprint_exports = {};
7
- __export(kanban_blueprint_exports, {
8
- Key: () => Key,
9
- functions: () => functions,
10
- make: () => make,
11
- tools: () => tools
12
- });
13
2
  import { Blueprint, Template } from "@dxos/blueprints";
14
3
  import { trim } from "@dxos/util";
4
+ var BLUEPRINT_KEY = "org.dxos.blueprint.kanban";
15
5
  var functions = [];
16
- var tools = [];
17
- var Key = "dxos.org/blueprint/kanban";
18
6
  var make = () => Blueprint.make({
19
- key: Key,
7
+ key: BLUEPRINT_KEY,
20
8
  name: "Kanban",
21
9
  tools: Blueprint.toolDefinitions({
22
10
  functions,
23
- tools
11
+ tools: []
24
12
  }),
25
13
  instructions: Template.make({
26
14
  source: trim`
@@ -28,8 +16,14 @@ var make = () => Blueprint.make({
28
16
  `
29
17
  })
30
18
  });
19
+ var blueprint = {
20
+ key: BLUEPRINT_KEY,
21
+ functions,
22
+ make
23
+ };
24
+ var kanban_blueprint_default = blueprint;
31
25
 
32
26
  export {
33
- kanban_blueprint_exports
27
+ kanban_blueprint_default
34
28
  };
35
- //# sourceMappingURL=chunk-L6N4ZDZ7.mjs.map
29
+ //# sourceMappingURL=chunk-B6RIAQMI.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/blueprints/kanban-blueprint.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type AppCapabilities } from '@dxos/app-toolkit';\nimport { Blueprint, Template } from '@dxos/blueprints';\nimport { trim } from '@dxos/util';\n\nconst BLUEPRINT_KEY = 'org.dxos.blueprint.kanban';\n\nconst functions: AppCapabilities.BlueprintDefinition['functions'] = [];\n\nconst make = () =>\n Blueprint.make({\n key: BLUEPRINT_KEY,\n name: 'Kanban',\n tools: Blueprint.toolDefinitions({ functions, tools: [] }),\n instructions: Template.make({\n source: trim`\n You can create and update kanban boards to show data in sorted columns defined by schema.\n `,\n }),\n });\n\nconst blueprint: AppCapabilities.BlueprintDefinition = {\n key: BLUEPRINT_KEY,\n functions,\n make,\n};\n\nexport default blueprint;\n"],
5
+ "mappings": ";AAKA,SAASA,WAAWC,gBAAgB;AACpC,SAASC,YAAY;AAErB,IAAMC,gBAAgB;AAEtB,IAAMC,YAA8D,CAAA;AAEpE,IAAMC,OAAO,MACXC,UAAUD,KAAK;EACbE,KAAKJ;EACLK,MAAM;EACNC,OAAOH,UAAUI,gBAAgB;IAAEN;IAAWK,OAAO,CAAA;EAAG,CAAA;EACxDE,cAAcC,SAASP,KAAK;IAC1BQ,QAAQC;;;EAGV,CAAA;AACF,CAAA;AAEF,IAAMC,YAAiD;EACrDR,KAAKJ;EACLC;EACAC;AACF;AAEA,IAAA,2BAAeU;",
6
+ "names": ["Blueprint", "Template", "trim", "BLUEPRINT_KEY", "functions", "make", "Blueprint", "key", "name", "tools", "toolDefinitions", "instructions", "Template", "source", "trim", "blueprint"]
7
+ }