@dxos/plugin-kanban 0.7.4 → 0.7.5-main.9cb18ac

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 (81) hide show
  1. package/dist/lib/browser/chunk-JZBAL6SW.mjs +56 -0
  2. package/dist/lib/browser/chunk-JZBAL6SW.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +218 -109
  4. package/dist/lib/browser/index.mjs.map +4 -4
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/types.mjs +12 -0
  7. package/dist/lib/node/chunk-BE2FRW7E.cjs +77 -0
  8. package/dist/lib/node/chunk-BE2FRW7E.cjs.map +7 -0
  9. package/dist/lib/node/index.cjs +210 -102
  10. package/dist/lib/node/index.cjs.map +4 -4
  11. package/dist/lib/node/meta.json +1 -1
  12. package/dist/lib/node/{types/index.cjs → types.cjs} +8 -10
  13. package/dist/lib/node/types.cjs.map +7 -0
  14. package/dist/lib/node-esm/chunk-L7JM7LGJ.mjs +57 -0
  15. package/dist/lib/node-esm/chunk-L7JM7LGJ.mjs.map +7 -0
  16. package/dist/lib/node-esm/index.mjs +218 -109
  17. package/dist/lib/node-esm/index.mjs.map +4 -4
  18. package/dist/lib/node-esm/meta.json +1 -1
  19. package/dist/lib/node-esm/types.mjs +13 -0
  20. package/dist/types/src/KanbanPlugin.d.ts.map +1 -1
  21. package/dist/types/src/components/KanbanContainer.d.ts +7 -0
  22. package/dist/types/src/components/KanbanContainer.d.ts.map +1 -0
  23. package/dist/types/src/components/KanbanViewEditor.d.ts +8 -0
  24. package/dist/types/src/components/KanbanViewEditor.d.ts.map +1 -0
  25. package/dist/types/src/components/index.d.ts +1 -3
  26. package/dist/types/src/components/index.d.ts.map +1 -1
  27. package/dist/types/src/translations.d.ts +32 -0
  28. package/dist/types/src/translations.d.ts.map +1 -1
  29. package/dist/types/src/types.d.ts +61 -0
  30. package/dist/types/src/types.d.ts.map +1 -0
  31. package/dist/types/tsconfig.tsbuildinfo +1 -0
  32. package/package.json +21 -23
  33. package/src/KanbanPlugin.tsx +50 -78
  34. package/src/components/KanbanContainer.tsx +79 -0
  35. package/src/components/KanbanViewEditor.tsx +72 -0
  36. package/src/components/index.ts +2 -4
  37. package/src/translations.ts +8 -2
  38. package/src/{types/types.ts → types.ts} +42 -11
  39. package/dist/lib/browser/KanbanMain-I5TMXNIY.mjs +0 -444
  40. package/dist/lib/browser/KanbanMain-I5TMXNIY.mjs.map +0 -7
  41. package/dist/lib/browser/chunk-4Y4TZ47E.mjs +0 -47
  42. package/dist/lib/browser/chunk-4Y4TZ47E.mjs.map +0 -7
  43. package/dist/lib/browser/types/index.mjs +0 -14
  44. package/dist/lib/node/KanbanMain-4OWAWTS4.cjs +0 -453
  45. package/dist/lib/node/KanbanMain-4OWAWTS4.cjs.map +0 -7
  46. package/dist/lib/node/chunk-LTR4WYI2.cjs +0 -67
  47. package/dist/lib/node/chunk-LTR4WYI2.cjs.map +0 -7
  48. package/dist/lib/node/types/index.cjs.map +0 -7
  49. package/dist/lib/node-esm/KanbanMain-PJC2JMJH.mjs +0 -445
  50. package/dist/lib/node-esm/KanbanMain-PJC2JMJH.mjs.map +0 -7
  51. package/dist/lib/node-esm/chunk-2ZBX5F7L.mjs +0 -48
  52. package/dist/lib/node-esm/chunk-2ZBX5F7L.mjs.map +0 -7
  53. package/dist/lib/node-esm/types/index.mjs +0 -15
  54. package/dist/types/src/components/KanbanBoard.d.ts +0 -6
  55. package/dist/types/src/components/KanbanBoard.d.ts.map +0 -1
  56. package/dist/types/src/components/KanbanCard.d.ts +0 -9
  57. package/dist/types/src/components/KanbanCard.d.ts.map +0 -1
  58. package/dist/types/src/components/KanbanColumn.d.ts +0 -14
  59. package/dist/types/src/components/KanbanColumn.d.ts.map +0 -1
  60. package/dist/types/src/components/KanbanMain.d.ts +0 -7
  61. package/dist/types/src/components/KanbanMain.d.ts.map +0 -1
  62. package/dist/types/src/components/util.d.ts +0 -7
  63. package/dist/types/src/components/util.d.ts.map +0 -1
  64. package/dist/types/src/stories/testing.d.ts +0 -19
  65. package/dist/types/src/stories/testing.d.ts.map +0 -1
  66. package/dist/types/src/types/index.d.ts +0 -3
  67. package/dist/types/src/types/index.d.ts.map +0 -1
  68. package/dist/types/src/types/kanban.d.ts +0 -76
  69. package/dist/types/src/types/kanban.d.ts.map +0 -1
  70. package/dist/types/src/types/types.d.ts +0 -18
  71. package/dist/types/src/types/types.d.ts.map +0 -1
  72. package/src/components/KanbanBoard.tsx +0 -195
  73. package/src/components/KanbanCard.tsx +0 -82
  74. package/src/components/KanbanColumn.tsx +0 -143
  75. package/src/components/KanbanMain.tsx +0 -37
  76. package/src/components/util.ts +0 -38
  77. package/src/stories/testing.ts +0 -29
  78. package/src/types/index.ts +0 -6
  79. package/src/types/kanban.ts +0 -22
  80. /package/dist/lib/browser/{types/index.mjs.map → types.mjs.map} +0 -0
  81. /package/dist/lib/node-esm/{types/index.mjs.map → types.mjs.map} +0 -0
@@ -0,0 +1,56 @@
1
+ import {
2
+ KANBAN_PLUGIN
3
+ } from "./chunk-LG4OMN5S.mjs";
4
+
5
+ // packages/plugins/experimental/plugin-kanban/src/types.ts
6
+ import { S } from "@dxos/echo-schema";
7
+ import { SpaceSchema } from "@dxos/react-client/echo";
8
+ import { KanbanType } from "@dxos/react-ui-kanban";
9
+ import { initializeKanban } from "@dxos/react-ui-kanban/testing";
10
+ import { FieldSchema } from "@dxos/schema";
11
+ var KanbanAction;
12
+ (function(KanbanAction2) {
13
+ const KANBAN_ACTION = `${KANBAN_PLUGIN}/action`;
14
+ class Create extends S.TaggedClass()(`${KANBAN_ACTION}/create`, {
15
+ input: S.Struct({
16
+ name: S.optional(S.String),
17
+ space: SpaceSchema
18
+ }),
19
+ output: S.Struct({
20
+ object: KanbanType
21
+ })
22
+ }) {
23
+ }
24
+ KanbanAction2.Create = Create;
25
+ class DeleteCardField extends S.TaggedClass()(`${KANBAN_ACTION}/delete-card-field`, {
26
+ input: S.Struct({
27
+ kanban: KanbanType,
28
+ fieldId: S.String,
29
+ // TODO(wittjosiah): Separate fields for undo data?
30
+ deletionData: S.optional(S.Struct({
31
+ field: FieldSchema,
32
+ // TODO(wittjosiah): This creates a type error.
33
+ // props: PropertySchema,
34
+ props: S.Any,
35
+ index: S.Number
36
+ }))
37
+ }),
38
+ output: S.Void
39
+ }) {
40
+ }
41
+ KanbanAction2.DeleteCardField = DeleteCardField;
42
+ })(KanbanAction || (KanbanAction = {}));
43
+ var isKanban = (object) => object != null && object instanceof KanbanType;
44
+ var createKanban = async (space) => {
45
+ const { kanban } = await initializeKanban({
46
+ space
47
+ });
48
+ return kanban;
49
+ };
50
+
51
+ export {
52
+ KanbanAction,
53
+ isKanban,
54
+ createKanban
55
+ };
56
+ //# sourceMappingURL=chunk-JZBAL6SW.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/types.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport type {\n IntentResolverProvides,\n MetadataRecordsProvides,\n SurfaceProvides,\n TranslationsProvides,\n} from '@dxos/app-framework';\nimport { S } from '@dxos/echo-schema';\nimport { type SchemaProvides } from '@dxos/plugin-space';\nimport { type Space, SpaceSchema } from '@dxos/react-client/echo';\nimport { KanbanType } from '@dxos/react-ui-kanban';\nimport { initializeKanban } from '@dxos/react-ui-kanban/testing';\nimport { FieldSchema } from '@dxos/schema';\n\nimport { KANBAN_PLUGIN } from './meta';\n\n/**\n * Kanban data model.\n * A Kanban board is a collection of columns, each of which contains a collection of items.\n * The layout of columns and items is controlled by models.\n * The underlying data model may be represented by direct object relationships\n * (e.g., a column object containing an array of ordered items) or projections constructed\n * by the model (e.g., a query of items based on metadata within a column object).\n */\n\nexport namespace KanbanAction {\n const KANBAN_ACTION = `${KANBAN_PLUGIN}/action`;\n\n export class Create extends S.TaggedClass<Create>()(`${KANBAN_ACTION}/create`, {\n input: S.Struct({\n name: S.optional(S.String),\n space: SpaceSchema,\n }),\n output: S.Struct({\n object: KanbanType,\n }),\n }) {}\n\n export class DeleteCardField extends S.TaggedClass<DeleteCardField>()(`${KANBAN_ACTION}/delete-card-field`, {\n input: S.Struct({\n kanban: KanbanType,\n fieldId: S.String,\n // TODO(wittjosiah): Separate fields for undo data?\n deletionData: S.optional(\n S.Struct({\n field: FieldSchema,\n // TODO(wittjosiah): This creates a type error.\n // props: PropertySchema,\n props: S.Any,\n index: S.Number,\n }),\n ),\n }),\n output: S.Void,\n }) {}\n}\n\nexport type KanbanPluginProvides = SurfaceProvides &\n IntentResolverProvides &\n MetadataRecordsProvides &\n TranslationsProvides &\n SchemaProvides;\n\n// TODO(burdon): Undo?\n// TODO(burdon): Typescript types (replace proto with annotations?)\n// TODO(burdon): Should pure components depend on ECHO? Relationship between ECHO object/array and Observable.\n// TODO(burdon): Can the plugin configure the object based on the data? E.g., how are the models constructed?\n// TODO(burdon): Create models. Simple first based on actual data.\n// Model is always a projection since the dragging state is tentative.\n\n// TODO(burdon): Extend model for moving items (in and across columns).\nexport interface KanbanModel {\n root: KanbanType;\n}\n\nexport type Location = {\n idx?: number;\n};\n\nexport const isKanban = (object: unknown): object is KanbanType => object != null && object instanceof KanbanType;\n\nexport const createKanban = async (space: Space) => {\n const { kanban } = await initializeKanban({ space });\n return kanban;\n};\n"],
5
+ "mappings": ";;;;;AAUA,SAASA,SAAS;AAElB,SAAqBC,mBAAmB;AACxC,SAASC,kBAAkB;AAC3B,SAASC,wBAAwB;AACjC,SAASC,mBAAmB;;UAaXC,eAAAA;AACf,QAAMC,gBAAgB,GAAGC,aAAAA;EAElB,MAAMC,eAAeC,EAAEC,YAAW,EAAW,GAAGJ,aAAAA,WAAwB;IAC7EK,OAAOF,EAAEG,OAAO;MACdC,MAAMJ,EAAEK,SAASL,EAAEM,MAAM;MACzBC,OAAOC;IACT,CAAA;IACAC,QAAQT,EAAEG,OAAO;MACfO,QAAQC;IACV,CAAA;EACF,CAAA,EAAA;EAAI;gBARSZ,SAAAA;EAUN,MAAMa,wBAAwBZ,EAAEC,YAAW,EAAoB,GAAGJ,aAAAA,sBAAmC;IAC1GK,OAAOF,EAAEG,OAAO;MACdU,QAAQF;MACRG,SAASd,EAAEM;;MAEXS,cAAcf,EAAEK,SACdL,EAAEG,OAAO;QACPa,OAAOC;;;QAGPC,OAAOlB,EAAEmB;QACTC,OAAOpB,EAAEqB;MACX,CAAA,CAAA;IAEJ,CAAA;IACAZ,QAAQT,EAAEsB;EACZ,CAAA,EAAA;EAAI;gBAhBSV,kBAAAA;AAiBf,GA9BiBhB,iBAAAA,eAAAA,CAAAA,EAAAA;AAsDV,IAAM2B,WAAW,CAACb,WAA0CA,UAAU,QAAQA,kBAAkBC;AAEhG,IAAMa,eAAe,OAAOjB,UAAAA;AACjC,QAAM,EAAEM,OAAM,IAAK,MAAMY,iBAAiB;IAAElB;EAAM,CAAA;AAClD,SAAOM;AACT;",
6
+ "names": ["S", "SpaceSchema", "KanbanType", "initializeKanban", "FieldSchema", "KanbanAction", "KANBAN_ACTION", "KANBAN_PLUGIN", "Create", "S", "TaggedClass", "input", "Struct", "name", "optional", "String", "space", "SpaceSchema", "output", "object", "KanbanType", "DeleteCardField", "kanban", "fieldId", "deletionData", "field", "FieldSchema", "props", "Any", "index", "Number", "Void", "isKanban", "createKanban", "initializeKanban"]
7
+ }
@@ -1,31 +1,154 @@
1
1
  import {
2
2
  KanbanAction,
3
- KanbanColumnType,
4
- KanbanItemType,
5
- KanbanType
6
- } from "./chunk-4Y4TZ47E.mjs";
3
+ createKanban,
4
+ isKanban
5
+ } from "./chunk-JZBAL6SW.mjs";
7
6
  import {
8
7
  KANBAN_PLUGIN,
9
8
  meta_default
10
9
  } from "./chunk-LG4OMN5S.mjs";
11
10
 
12
11
  // packages/plugins/experimental/plugin-kanban/src/KanbanPlugin.tsx
13
- import React from "react";
14
- import { resolvePlugin, parseIntentPlugin, NavigationAction } from "@dxos/app-framework";
15
- import { create } from "@dxos/live-object";
16
- import { parseClientPlugin } from "@dxos/plugin-client";
17
- import { createExtension, isActionGroup } from "@dxos/plugin-graph";
18
- import { SpaceAction } from "@dxos/plugin-space";
19
- import { loadObjectReferences } from "@dxos/react-client/echo";
12
+ import React3 from "react";
13
+ import { createSurface, createIntent as createIntent2, createResolver } from "@dxos/app-framework";
14
+ import { invariant as invariant2 } from "@dxos/invariant";
15
+ import { getSpace as getSpace3 } from "@dxos/react-client/echo";
16
+ import { KanbanType as KanbanType2, translations as kanbanTranslations } from "@dxos/react-ui-kanban";
17
+ import { ViewProjection } from "@dxos/schema";
20
18
 
21
- // packages/plugins/experimental/plugin-kanban/src/components/index.ts
22
- import { lazy } from "react";
23
- var KanbanMain = lazy(() => import("./KanbanMain-I5TMXNIY.mjs"));
19
+ // packages/plugins/experimental/plugin-kanban/src/components/KanbanContainer.tsx
20
+ import React, { useCallback, useEffect, useState } from "react";
21
+ import { invariant } from "@dxos/invariant";
22
+ import { useGlobalFilteredObjects } from "@dxos/plugin-search";
23
+ import { Filter, useQuery, getSpace, create } from "@dxos/react-client/echo";
24
+ import { useKanbanModel, Kanban } from "@dxos/react-ui-kanban";
25
+ import { StackItem } from "@dxos/react-ui-stack";
26
+ var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-kanban/src/components/KanbanContainer.tsx";
27
+ var KanbanContainer = ({ kanban }) => {
28
+ const [cardSchema, setCardSchema] = useState();
29
+ const space = getSpace(kanban);
30
+ useEffect(() => {
31
+ if (kanban.cardView && space) {
32
+ setCardSchema(space.db.schemaRegistry.getSchema(kanban.cardView.target.query.type));
33
+ }
34
+ }, [
35
+ kanban.cardView,
36
+ space
37
+ ]);
38
+ const objects = useQuery(space, cardSchema ? Filter.schema(cardSchema) : Filter.nothing());
39
+ const filteredObjects = useGlobalFilteredObjects(objects);
40
+ const model = useKanbanModel({
41
+ kanban,
42
+ cardSchema,
43
+ items: filteredObjects
44
+ });
45
+ const handleAddColumn = useCallback((columnValue) => model?.addEmptyColumn(columnValue), [
46
+ model
47
+ ]);
48
+ const handleAddCard = useCallback((columnValue) => {
49
+ if (space && cardSchema) {
50
+ space.db.add(create(cardSchema, {
51
+ title: "",
52
+ description: "",
53
+ state: columnValue
54
+ }));
55
+ }
56
+ }, [
57
+ space,
58
+ cardSchema
59
+ ]);
60
+ const handleRemoveCard = useCallback((card) => {
61
+ invariant(space, void 0, {
62
+ F: __dxlog_file,
63
+ L: 51,
64
+ S: void 0,
65
+ A: [
66
+ "space",
67
+ ""
68
+ ]
69
+ });
70
+ space.db.remove(card);
71
+ }, [
72
+ space
73
+ ]);
74
+ const handleRemoveEmptyColumn = useCallback((columnValue) => {
75
+ model?.removeColumnFromArrangement(columnValue);
76
+ }, [
77
+ model
78
+ ]);
79
+ return /* @__PURE__ */ React.createElement(StackItem.Content, {
80
+ toolbar: false
81
+ }, model ? /* @__PURE__ */ React.createElement(Kanban, {
82
+ model,
83
+ onAddCard: handleAddCard,
84
+ onAddColumn: handleAddColumn,
85
+ onRemoveCard: handleRemoveCard,
86
+ onRemoveEmptyColumn: handleRemoveEmptyColumn
87
+ }) : /* @__PURE__ */ React.createElement("span", null, "Loading"));
88
+ };
89
+
90
+ // packages/plugins/experimental/plugin-kanban/src/components/KanbanViewEditor.tsx
91
+ import React2, { useCallback as useCallback2, useEffect as useEffect2, useState as useState2 } from "react";
92
+ import { createIntent, useIntentDispatcher } from "@dxos/app-framework";
93
+ import { getSpace as getSpace2 } from "@dxos/react-client/echo";
94
+ import { ViewEditor, Form } from "@dxos/react-ui-form";
95
+ import { KanbanPropsSchema } from "@dxos/react-ui-kanban";
96
+ var KanbanViewEditor = ({ kanban }) => {
97
+ const { dispatchPromise: dispatch } = useIntentDispatcher();
98
+ const space = getSpace2(kanban);
99
+ const [schema, setSchema] = useState2(space && kanban?.cardView?.target?.query?.type ? space.db.schemaRegistry.getSchema(kanban.cardView.target.query.type) : void 0);
100
+ useEffect2(() => {
101
+ if (space && kanban?.cardView?.target?.query?.type) {
102
+ const unsubscribe = space.db.schemaRegistry.query({
103
+ typename: kanban?.cardView?.target?.query?.type
104
+ }).subscribe((query) => {
105
+ const [schema2] = query.results;
106
+ if (schema2) {
107
+ setSchema(schema2);
108
+ }
109
+ });
110
+ return unsubscribe;
111
+ }
112
+ }, [
113
+ space,
114
+ kanban?.cardView?.target?.query?.type
115
+ ]);
116
+ const handleDelete = useCallback2((fieldId) => dispatch?.(createIntent(KanbanAction.DeleteCardField, {
117
+ kanban,
118
+ fieldId
119
+ })), [
120
+ dispatch,
121
+ kanban
122
+ ]);
123
+ if (!space || !schema || !kanban.cardView?.target) {
124
+ return null;
125
+ }
126
+ return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(Form, {
127
+ schema: KanbanPropsSchema,
128
+ values: {
129
+ columnField: kanban.columnField
130
+ },
131
+ onSave: ({ columnField }) => {
132
+ kanban.columnField = columnField;
133
+ kanban.arrangement = void 0;
134
+ }
135
+ }), /* @__PURE__ */ React2.createElement(ViewEditor, {
136
+ registry: space.db.schemaRegistry,
137
+ schema,
138
+ view: kanban.cardView.target,
139
+ onDelete: handleDelete
140
+ }));
141
+ };
142
+ var KanbanViewEditor_default = KanbanViewEditor;
24
143
 
25
144
  // packages/plugins/experimental/plugin-kanban/src/translations.ts
145
+ import { KanbanType } from "@dxos/react-ui-kanban";
26
146
  var translations_default = [
27
147
  {
28
148
  "en-US": {
149
+ [KanbanType.typename]: {
150
+ "typename label": "Kanban"
151
+ },
29
152
  [KANBAN_PLUGIN]: {
30
153
  "plugin name": "Kanban",
31
154
  "kanban title label": "Title",
@@ -35,133 +158,119 @@ var translations_default = [
35
158
  "item title label": "Item title",
36
159
  "item title placeholder": "New item",
37
160
  "add column label": "Add column",
38
- "add item label": "Add item",
161
+ "add item label": "Add card",
39
162
  "delete column label": "Delete column",
40
- "delete item label": "Delete item",
41
- "create kanban label": "Create kanban"
163
+ "delete item label": "Delete card",
164
+ "create kanban label": "Create kanban",
165
+ "card field deleted label": "Card field deleted"
42
166
  }
43
167
  }
44
168
  }
45
169
  ];
46
170
 
47
171
  // packages/plugins/experimental/plugin-kanban/src/KanbanPlugin.tsx
172
+ var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-kanban/src/KanbanPlugin.tsx";
48
173
  var KanbanPlugin = () => {
49
174
  return {
50
175
  meta: meta_default,
51
176
  provides: {
52
177
  metadata: {
53
178
  records: {
54
- [KanbanType.typename]: {
55
- createObject: KanbanAction.CREATE,
179
+ [KanbanType2.typename]: {
180
+ createObject: (props) => createIntent2(KanbanAction.Create, props),
56
181
  placeholder: [
57
182
  "kanban title placeholder",
58
183
  {
59
184
  ns: KANBAN_PLUGIN
60
185
  }
61
186
  ],
62
- icon: "ph--kanban--regular",
63
- // TODO(wittjosiah): Move out of metadata.
64
- loadReferences: (kanban) => loadObjectReferences(kanban, (kanban2) => kanban2.columns)
65
- },
66
- [KanbanColumnType.typename]: {
67
- // TODO(wittjosiah): Move out of metadata.
68
- loadReferences: (column) => loadObjectReferences(column, (column2) => column2.items)
69
- },
70
- [KanbanItemType.typename]: {
71
- // TODO(wittjosiah): Move out of metadata.
72
- loadReferences: (item) => []
187
+ icon: "ph--kanban--regular"
73
188
  }
74
189
  }
75
190
  },
76
191
  echo: {
77
192
  schema: [
78
- KanbanType
79
- ],
80
- system: [
81
- KanbanColumnType,
82
- KanbanItemType
193
+ KanbanType2
83
194
  ]
84
195
  },
85
- translations: translations_default,
86
- graph: {
87
- builder: (plugins) => {
88
- const client = resolvePlugin(plugins, parseClientPlugin)?.provides.client;
89
- const dispatch = resolvePlugin(plugins, parseIntentPlugin)?.provides.intent.dispatch;
90
- if (!client || !dispatch) {
91
- return [];
92
- }
93
- return createExtension({
94
- id: KanbanAction.CREATE,
95
- filter: (node) => isActionGroup(node) && node.id.startsWith(SpaceAction.ADD_OBJECT),
96
- actions: ({ node }) => {
97
- const id = node.id.split("/").at(-1);
98
- const [spaceId, objectId] = id?.split(":") ?? [];
99
- const space = client.spaces.get().find((space2) => space2.id === spaceId);
100
- const object = objectId && space?.db.getObjectById(objectId);
101
- const target = objectId ? object : space;
102
- if (!target) {
103
- return;
104
- }
105
- return [
106
- {
107
- id: `${KANBAN_PLUGIN}/create/${node.id}`,
108
- data: async () => {
109
- await dispatch([
110
- {
111
- plugin: KANBAN_PLUGIN,
112
- action: KanbanAction.CREATE
113
- },
114
- {
115
- action: SpaceAction.ADD_OBJECT,
116
- data: {
117
- target
118
- }
119
- },
120
- {
121
- action: NavigationAction.OPEN
122
- }
123
- ]);
124
- },
125
- properties: {
126
- label: [
127
- "create kanban label",
128
- {
129
- ns: KANBAN_PLUGIN
130
- }
131
- ],
132
- icon: "ph--kanban--regular",
133
- testId: "kanbanPlugin.createObject"
134
- }
135
- }
136
- ];
137
- }
138
- });
139
- }
140
- },
196
+ translations: [
197
+ ...translations_default,
198
+ ...kanbanTranslations
199
+ ],
141
200
  surface: {
142
- component: ({ data, role }) => {
143
- switch (role) {
144
- case "main":
145
- return data.active instanceof KanbanType ? /* @__PURE__ */ React.createElement(KanbanMain, {
146
- kanban: data.active
147
- }) : null;
148
- default:
149
- return null;
150
- }
151
- }
201
+ definitions: () => [
202
+ createSurface({
203
+ id: `${KANBAN_PLUGIN}/kanban`,
204
+ role: [
205
+ "article",
206
+ "section"
207
+ ],
208
+ filter: (data) => isKanban(data.subject),
209
+ component: ({ data, role }) => /* @__PURE__ */ React3.createElement(KanbanContainer, {
210
+ kanban: data.subject,
211
+ role
212
+ })
213
+ }),
214
+ createSurface({
215
+ id: `${KANBAN_PLUGIN}/settings`,
216
+ role: "complementary--settings",
217
+ filter: (data) => isKanban(data.subject),
218
+ component: ({ data }) => /* @__PURE__ */ React3.createElement(KanbanViewEditor_default, {
219
+ kanban: data.subject
220
+ })
221
+ })
222
+ ]
152
223
  },
153
224
  intent: {
154
- resolver: (intent) => {
155
- switch (intent.action) {
156
- case KanbanAction.CREATE: {
225
+ resolvers: () => [
226
+ createResolver(KanbanAction.Create, async ({ space }) => ({
227
+ data: {
228
+ object: await createKanban(space)
229
+ }
230
+ })),
231
+ createResolver(KanbanAction.DeleteCardField, ({ kanban, fieldId, deletionData }, undo) => {
232
+ invariant2(kanban.cardView, void 0, {
233
+ F: __dxlog_file2,
234
+ L: 58,
235
+ S: void 0,
236
+ A: [
237
+ "kanban.cardView",
238
+ ""
239
+ ]
240
+ });
241
+ const schema = kanban.cardView.target && getSpace3(kanban)?.db.schemaRegistry.getSchema(kanban.cardView.target.query.type);
242
+ invariant2(schema, void 0, {
243
+ F: __dxlog_file2,
244
+ L: 63,
245
+ S: void 0,
246
+ A: [
247
+ "schema",
248
+ ""
249
+ ]
250
+ });
251
+ const projection = new ViewProjection(schema, kanban.cardView.target);
252
+ if (!undo) {
253
+ const { deleted, index } = projection.deleteFieldProjection(fieldId);
157
254
  return {
158
- data: create(KanbanType, {
159
- columns: []
160
- })
255
+ undoable: {
256
+ message: translations_default[0]["en-US"][KANBAN_PLUGIN]["card field deleted label"],
257
+ data: {
258
+ deletionData: {
259
+ ...deleted,
260
+ index
261
+ }
262
+ }
263
+ }
161
264
  };
265
+ } else if (undo && deletionData) {
266
+ const { field, props, index } = deletionData;
267
+ projection.setFieldProjection({
268
+ field,
269
+ props
270
+ }, index);
162
271
  }
163
- }
164
- }
272
+ })
273
+ ]
165
274
  }
166
275
  }
167
276
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/KanbanPlugin.tsx", "../../../src/components/index.ts", "../../../src/translations.ts", "../../../src/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { resolvePlugin, type PluginDefinition, parseIntentPlugin, NavigationAction } from '@dxos/app-framework';\nimport { create } from '@dxos/live-object';\nimport { parseClientPlugin } from '@dxos/plugin-client';\nimport { type ActionGroup, createExtension, isActionGroup } from '@dxos/plugin-graph';\nimport { SpaceAction } from '@dxos/plugin-space';\nimport { loadObjectReferences } from '@dxos/react-client/echo';\n\nimport { KanbanMain } from './components';\nimport meta, { KANBAN_PLUGIN } from './meta';\nimport translations from './translations';\nimport { KanbanColumnType, KanbanItemType, KanbanType } from './types';\nimport { KanbanAction, type KanbanPluginProvides } from './types';\n\nexport const KanbanPlugin = (): PluginDefinition<KanbanPluginProvides> => {\n return {\n meta,\n provides: {\n metadata: {\n records: {\n [KanbanType.typename]: {\n createObject: KanbanAction.CREATE,\n placeholder: ['kanban title placeholder', { ns: KANBAN_PLUGIN }],\n icon: 'ph--kanban--regular',\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: (kanban: KanbanType) => loadObjectReferences(kanban, (kanban) => kanban.columns),\n },\n [KanbanColumnType.typename]: {\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: (column: KanbanColumnType) => loadObjectReferences(column, (column) => column.items),\n },\n [KanbanItemType.typename]: {\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: (item: KanbanItemType) => [], // loadObjectReferences(item, (item) => item.object),\n },\n },\n },\n echo: {\n schema: [KanbanType],\n system: [KanbanColumnType, KanbanItemType],\n },\n translations,\n graph: {\n builder: (plugins) => {\n const client = resolvePlugin(plugins, parseClientPlugin)?.provides.client;\n const dispatch = resolvePlugin(plugins, parseIntentPlugin)?.provides.intent.dispatch;\n if (!client || !dispatch) {\n return [];\n }\n\n return createExtension({\n id: KanbanAction.CREATE,\n filter: (node): node is ActionGroup => isActionGroup(node) && node.id.startsWith(SpaceAction.ADD_OBJECT),\n actions: ({ node }) => {\n const id = node.id.split('/').at(-1);\n const [spaceId, objectId] = id?.split(':') ?? [];\n const space = client.spaces.get().find((space) => space.id === spaceId);\n const object = objectId && space?.db.getObjectById(objectId);\n const target = objectId ? object : space;\n if (!target) {\n return;\n }\n\n return [\n {\n id: `${KANBAN_PLUGIN}/create/${node.id}`,\n data: async () => {\n await dispatch([\n { plugin: KANBAN_PLUGIN, action: KanbanAction.CREATE },\n { action: SpaceAction.ADD_OBJECT, data: { target } },\n { action: NavigationAction.OPEN },\n ]);\n },\n properties: {\n label: ['create kanban label', { ns: KANBAN_PLUGIN }],\n icon: 'ph--kanban--regular',\n testId: 'kanbanPlugin.createObject',\n },\n },\n ];\n },\n });\n },\n },\n surface: {\n component: ({ data, role }) => {\n switch (role) {\n case 'main':\n return data.active instanceof KanbanType ? <KanbanMain kanban={data.active} /> : null;\n default:\n return null;\n }\n },\n },\n intent: {\n resolver: (intent) => {\n switch (intent.action) {\n case KanbanAction.CREATE: {\n return { data: create(KanbanType, { columns: [] }) };\n }\n }\n },\n },\n },\n };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport const KanbanMain = lazy(() => import('./KanbanMain'));\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { KANBAN_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [KANBAN_PLUGIN]: {\n 'plugin name': 'Kanban',\n 'kanban title label': 'Title',\n 'kanban title placeholder': 'New kanban',\n 'column title label': 'Column title',\n 'column title placeholder': 'New column',\n 'item title label': 'Item title',\n 'item title placeholder': 'New item',\n 'add column label': 'Add column',\n 'add item label': 'Add item',\n 'delete column label': 'Delete column',\n 'delete item label': 'Delete item',\n 'create kanban label': 'Create kanban',\n },\n },\n },\n];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { KanbanPlugin } from './KanbanPlugin';\n\nexport default KanbanPlugin;\n\nexport * from './KanbanPlugin';\n"],
5
- "mappings": "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",
6
- "names": ["React", "resolvePlugin", "parseIntentPlugin", "NavigationAction", "create", "parseClientPlugin", "createExtension", "isActionGroup", "SpaceAction", "loadObjectReferences", "lazy", "KanbanMain", "lazy", "KANBAN_PLUGIN", "KanbanPlugin", "meta", "provides", "metadata", "records", "KanbanType", "typename", "createObject", "KanbanAction", "CREATE", "placeholder", "ns", "KANBAN_PLUGIN", "icon", "loadReferences", "kanban", "loadObjectReferences", "columns", "KanbanColumnType", "column", "items", "KanbanItemType", "item", "echo", "schema", "system", "translations", "graph", "builder", "plugins", "client", "resolvePlugin", "parseClientPlugin", "dispatch", "parseIntentPlugin", "intent", "createExtension", "id", "filter", "node", "isActionGroup", "startsWith", "SpaceAction", "ADD_OBJECT", "actions", "split", "at", "spaceId", "objectId", "space", "spaces", "get", "find", "object", "db", "getObjectById", "target", "data", "plugin", "action", "NavigationAction", "OPEN", "properties", "label", "testId", "surface", "component", "role", "active", "KanbanMain", "resolver", "create", "KanbanPlugin"]
3
+ "sources": ["../../../src/KanbanPlugin.tsx", "../../../src/components/KanbanContainer.tsx", "../../../src/components/KanbanViewEditor.tsx", "../../../src/translations.ts", "../../../src/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type PluginDefinition, createSurface, createIntent, createResolver } from '@dxos/app-framework';\nimport { invariant } from '@dxos/invariant';\nimport { getSpace, type Space } from '@dxos/react-client/echo';\nimport { KanbanType, translations as kanbanTranslations } from '@dxos/react-ui-kanban';\nimport { ViewProjection } from '@dxos/schema';\n\nimport { KanbanContainer } from './components';\nimport KanbanViewEditor from './components/KanbanViewEditor';\nimport meta, { KANBAN_PLUGIN } from './meta';\nimport translations from './translations';\nimport { isKanban, KanbanAction, type KanbanPluginProvides, createKanban } from './types';\n\nexport const KanbanPlugin = (): PluginDefinition<KanbanPluginProvides> => {\n return {\n meta,\n provides: {\n metadata: {\n records: {\n [KanbanType.typename]: {\n createObject: (props: { name?: string; space: Space }) => createIntent(KanbanAction.Create, props),\n placeholder: ['kanban title placeholder', { ns: KANBAN_PLUGIN }],\n icon: 'ph--kanban--regular',\n },\n },\n },\n echo: {\n schema: [KanbanType],\n },\n translations: [...translations, ...kanbanTranslations],\n surface: {\n definitions: () => [\n createSurface({\n id: `${KANBAN_PLUGIN}/kanban`,\n role: ['article', 'section'],\n filter: (data): data is { subject: KanbanType } => isKanban(data.subject),\n component: ({ data, role }) => <KanbanContainer kanban={data.subject} role={role} />,\n }),\n createSurface({\n id: `${KANBAN_PLUGIN}/settings`,\n role: 'complementary--settings',\n filter: (data): data is { subject: KanbanType } => isKanban(data.subject),\n component: ({ data }) => <KanbanViewEditor kanban={data.subject} />,\n }),\n ],\n },\n intent: {\n resolvers: () => [\n createResolver(KanbanAction.Create, async ({ space }) => ({\n data: { object: await createKanban(space) },\n })),\n createResolver(KanbanAction.DeleteCardField, ({ kanban, fieldId, deletionData }, undo) => {\n invariant(kanban.cardView);\n\n const schema =\n kanban.cardView.target &&\n getSpace(kanban)?.db.schemaRegistry.getSchema(kanban.cardView.target.query.type);\n invariant(schema);\n const projection = new ViewProjection(schema, kanban.cardView.target!);\n\n if (!undo) {\n const { deleted, index } = projection.deleteFieldProjection(fieldId);\n return {\n undoable: {\n message: translations[0]['en-US'][KANBAN_PLUGIN]['card field deleted label'],\n data: { deletionData: { ...deleted, index } },\n },\n };\n } else if (undo && deletionData) {\n const { field, props, index } = deletionData;\n projection.setFieldProjection({ field, props }, index);\n }\n }),\n ],\n },\n },\n };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback, useEffect, useState } from 'react';\n\nimport { type EchoSchema } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { useGlobalFilteredObjects } from '@dxos/plugin-search';\nimport { Filter, useQuery, getSpace, create } from '@dxos/react-client/echo';\nimport { type KanbanType, useKanbanModel, Kanban } from '@dxos/react-ui-kanban';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nexport const KanbanContainer = ({ kanban }: { kanban: KanbanType; role: string }) => {\n const [cardSchema, setCardSchema] = useState<EchoSchema>();\n const space = getSpace(kanban);\n useEffect(() => {\n if (kanban.cardView && space) {\n setCardSchema(space.db.schemaRegistry.getSchema(kanban.cardView.target!.query.type));\n }\n }, [kanban.cardView, space]);\n\n const objects = useQuery(space, cardSchema ? Filter.schema(cardSchema) : Filter.nothing());\n const filteredObjects = useGlobalFilteredObjects(objects);\n\n const model = useKanbanModel({\n kanban,\n cardSchema,\n items: filteredObjects,\n });\n\n const handleAddColumn = useCallback((columnValue: string) => model?.addEmptyColumn(columnValue), [model]);\n\n const handleAddCard = useCallback(\n (columnValue: string) => {\n if (space && cardSchema) {\n space.db.add(\n create(cardSchema, {\n title: '',\n description: '',\n state: columnValue,\n }),\n );\n }\n },\n [space, cardSchema],\n );\n\n const handleRemoveCard = useCallback(\n (card: { id: string }) => {\n invariant(space);\n space.db.remove(card);\n },\n [space],\n );\n\n const handleRemoveEmptyColumn = useCallback(\n (columnValue: string) => {\n model?.removeColumnFromArrangement(columnValue);\n },\n [model],\n );\n\n return (\n <StackItem.Content toolbar={false}>\n {model ? (\n <Kanban\n model={model}\n onAddCard={handleAddCard}\n onAddColumn={handleAddColumn}\n onRemoveCard={handleRemoveCard}\n onRemoveEmptyColumn={handleRemoveEmptyColumn}\n />\n ) : (\n <span>Loading</span>\n )}\n </StackItem.Content>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useCallback, useEffect, useState } from 'react';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { ViewEditor, Form } from '@dxos/react-ui-form';\nimport { type KanbanType, KanbanPropsSchema } from '@dxos/react-ui-kanban';\n\nimport { KanbanAction } from '../types';\n\ntype KanbanViewEditorProps = { kanban: KanbanType };\n\nconst KanbanViewEditor = ({ kanban }: KanbanViewEditorProps) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const space = getSpace(kanban);\n\n // TODO(ZaymonFC): The schema registry needs an API where we can query with initial value and\n // endure typename changes. We shouldn't need to manage a subscription at this layer.\n const [schema, setSchema] = useState(\n space && kanban?.cardView?.target?.query?.type\n ? space.db.schemaRegistry.getSchema(kanban.cardView.target.query.type)\n : undefined,\n );\n\n useEffect(() => {\n if (space && kanban?.cardView?.target?.query?.type) {\n const unsubscribe = space.db.schemaRegistry\n .query({ typename: kanban?.cardView?.target?.query?.type })\n .subscribe((query) => {\n const [schema] = query.results;\n if (schema) {\n setSchema(schema);\n }\n });\n\n return unsubscribe;\n }\n }, [space, kanban?.cardView?.target?.query?.type]);\n\n const handleDelete = useCallback(\n (fieldId: string) => dispatch?.(createIntent(KanbanAction.DeleteCardField, { kanban, fieldId })),\n [dispatch, kanban],\n );\n\n if (!space || !schema || !kanban.cardView?.target) {\n return null;\n }\n\n return (\n <>\n <Form\n schema={KanbanPropsSchema}\n values={{ columnField: kanban.columnField }}\n onSave={({ columnField }) => {\n kanban.columnField = columnField;\n kanban.arrangement = undefined;\n }}\n />\n <ViewEditor\n registry={space.db.schemaRegistry}\n schema={schema}\n view={kanban.cardView.target}\n onDelete={handleDelete}\n />\n </>\n );\n};\n\nexport default KanbanViewEditor;\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { KanbanType } from '@dxos/react-ui-kanban';\n\nimport { KANBAN_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [KanbanType.typename]: {\n 'typename label': 'Kanban',\n },\n [KANBAN_PLUGIN]: {\n 'plugin name': 'Kanban',\n 'kanban title label': 'Title',\n 'kanban title placeholder': 'New kanban',\n 'column title label': 'Column title',\n 'column title placeholder': 'New column',\n 'item title label': 'Item title',\n 'item title placeholder': 'New item',\n 'add column label': 'Add column',\n 'add item label': 'Add card',\n 'delete column label': 'Delete column',\n 'delete item label': 'Delete card',\n 'create kanban label': 'Create kanban',\n 'card field deleted label': 'Card field deleted',\n },\n },\n },\n];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { KanbanPlugin } from './KanbanPlugin';\n\nexport default KanbanPlugin;\n\nexport * from './KanbanPlugin';\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "createSurface", "createIntent", "createResolver", "invariant", "getSpace", "KanbanType", "translations", "kanbanTranslations", "ViewProjection", "React", "useCallback", "useEffect", "useState", "invariant", "useGlobalFilteredObjects", "Filter", "useQuery", "getSpace", "create", "useKanbanModel", "Kanban", "StackItem", "KanbanContainer", "kanban", "cardSchema", "setCardSchema", "space", "cardView", "db", "schemaRegistry", "getSchema", "target", "query", "type", "objects", "schema", "nothing", "filteredObjects", "model", "items", "handleAddColumn", "columnValue", "addEmptyColumn", "handleAddCard", "add", "title", "description", "state", "handleRemoveCard", "card", "remove", "handleRemoveEmptyColumn", "removeColumnFromArrangement", "Content", "toolbar", "onAddCard", "onAddColumn", "onRemoveCard", "onRemoveEmptyColumn", "span", "React", "useCallback", "useEffect", "useState", "createIntent", "useIntentDispatcher", "getSpace", "ViewEditor", "Form", "KanbanPropsSchema", "KanbanViewEditor", "kanban", "dispatchPromise", "dispatch", "useIntentDispatcher", "space", "getSpace", "schema", "setSchema", "useState", "cardView", "target", "query", "type", "db", "schemaRegistry", "getSchema", "undefined", "useEffect", "unsubscribe", "typename", "subscribe", "results", "handleDelete", "useCallback", "fieldId", "createIntent", "KanbanAction", "DeleteCardField", "React", "Form", "KanbanPropsSchema", "values", "columnField", "onSave", "arrangement", "ViewEditor", "registry", "view", "onDelete", "KanbanType", "KanbanType", "typename", "KANBAN_PLUGIN", "KanbanPlugin", "meta", "provides", "metadata", "records", "KanbanType", "typename", "createObject", "props", "createIntent", "KanbanAction", "Create", "placeholder", "ns", "KANBAN_PLUGIN", "icon", "echo", "schema", "translations", "kanbanTranslations", "surface", "definitions", "createSurface", "id", "role", "filter", "data", "isKanban", "subject", "component", "React", "KanbanContainer", "kanban", "KanbanViewEditor", "intent", "resolvers", "createResolver", "space", "object", "createKanban", "DeleteCardField", "fieldId", "deletionData", "undo", "invariant", "cardView", "target", "getSpace", "db", "schemaRegistry", "getSchema", "query", "type", "projection", "ViewProjection", "deleted", "index", "deleteFieldProjection", "undoable", "message", "field", "setFieldProjection", "KanbanPlugin"]
7
7
  }