@dxos/plugin-kanban 0.8.4-main.abd8ff62ef → 0.8.4-main.bc2380dfbc
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +102 -5
- package/README.md +1 -1
- package/dist/lib/neutral/KanbanArticle-NEJ3LNBO.mjs +132 -0
- package/dist/lib/neutral/KanbanArticle-NEJ3LNBO.mjs.map +7 -0
- package/dist/lib/neutral/KanbanPlugin.mjs +36 -0
- package/dist/lib/neutral/KanbanPlugin.mjs.map +7 -0
- package/dist/lib/neutral/KanbanPlugin.node.mjs +27 -0
- package/dist/lib/neutral/KanbanPlugin.node.mjs.map +7 -0
- package/dist/lib/neutral/KanbanPlugin.workerd.mjs +21 -0
- package/dist/lib/neutral/KanbanPlugin.workerd.mjs.map +7 -0
- package/dist/lib/neutral/KanbanSettings-G6M47NSK.mjs +83 -0
- package/dist/lib/neutral/KanbanSettings-G6M47NSK.mjs.map +7 -0
- package/dist/lib/neutral/blueprint-definition-FHVIEKTQ.mjs +15 -0
- package/dist/lib/neutral/blueprint-definition-FHVIEKTQ.mjs.map +7 -0
- package/dist/lib/neutral/blueprints/index.mjs +8 -0
- package/dist/lib/neutral/capabilities/index.mjs +19 -0
- package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
- package/dist/lib/neutral/chunk-6FPBLOS3.mjs +8 -0
- package/dist/lib/neutral/chunk-6FPBLOS3.mjs.map +7 -0
- package/dist/lib/{browser/index.mjs → neutral/chunk-KDPM77BD.mjs} +1 -9
- package/dist/lib/neutral/chunk-KDPM77BD.mjs.map +7 -0
- package/dist/lib/neutral/chunk-OQ72EEGU.mjs +254 -0
- package/dist/lib/neutral/chunk-OQ72EEGU.mjs.map +7 -0
- package/dist/lib/{browser/blueprints/index.mjs → neutral/chunk-ZTQW5KQS.mjs} +3 -4
- package/dist/lib/{browser/blueprints/index.mjs.map → neutral/chunk-ZTQW5KQS.mjs.map} +2 -2
- package/dist/lib/neutral/components/index.mjs +243 -0
- package/dist/lib/neutral/components/index.mjs.map +7 -0
- package/dist/lib/neutral/containers/index.mjs +11 -0
- package/dist/lib/neutral/containers/index.mjs.map +7 -0
- package/dist/lib/neutral/create-object-DKBSI46K.mjs +40 -0
- package/dist/lib/neutral/create-object-DKBSI46K.mjs.map +7 -0
- package/dist/lib/{browser/delete-card-7OSCNCW2.mjs → neutral/delete-card-356CBACE.mjs} +4 -4
- package/dist/lib/neutral/delete-card-356CBACE.mjs.map +7 -0
- package/dist/lib/{browser/delete-card-field-NSB2RE3Z.mjs → neutral/delete-card-field-IRCZL2BR.mjs} +4 -4
- package/dist/lib/neutral/delete-card-field-IRCZL2BR.mjs.map +7 -0
- package/dist/lib/neutral/hooks/index.mjs +432 -0
- package/dist/lib/neutral/hooks/index.mjs.map +7 -0
- package/dist/lib/neutral/index.mjs +34 -0
- package/dist/lib/neutral/index.mjs.map +7 -0
- package/dist/lib/neutral/meta.json +1 -0
- package/dist/lib/neutral/meta.mjs +8 -0
- package/dist/lib/neutral/meta.mjs.map +7 -0
- package/dist/lib/neutral/migrations-IWBT35UT.mjs +31 -0
- package/dist/lib/neutral/migrations-IWBT35UT.mjs.map +7 -0
- package/dist/lib/neutral/operation-handler-B7IW6MXU.mjs +13 -0
- package/dist/lib/neutral/operation-handler-B7IW6MXU.mjs.map +7 -0
- package/dist/lib/neutral/operations/index.mjs +8 -0
- package/dist/lib/neutral/operations/index.mjs.map +7 -0
- package/dist/lib/neutral/plugin.mjs +16 -0
- package/dist/lib/neutral/plugin.mjs.map +7 -0
- package/dist/lib/neutral/react-surface-QROEHBRW.mjs +93 -0
- package/dist/lib/neutral/react-surface-QROEHBRW.mjs.map +7 -0
- package/dist/lib/{browser/restore-card-FO3WERIE.mjs → neutral/restore-card-P25Y4YSE.mjs} +4 -4
- package/dist/lib/neutral/restore-card-P25Y4YSE.mjs.map +7 -0
- package/dist/lib/{browser/restore-card-field-U5XYEEOW.mjs → neutral/restore-card-field-NHR3R4XI.mjs} +4 -4
- package/dist/lib/neutral/restore-card-field-NHR3R4XI.mjs.map +7 -0
- package/dist/lib/neutral/testing/index.mjs +60 -0
- package/dist/lib/neutral/testing/index.mjs.map +7 -0
- package/dist/lib/neutral/types/index.mjs +22 -0
- package/dist/lib/neutral/types/index.mjs.map +7 -0
- package/dist/lib/neutral/undo-mappings-6CHW6BOF.mjs +42 -0
- package/dist/lib/neutral/undo-mappings-6CHW6BOF.mjs.map +7 -0
- package/dist/types/src/KanbanPlugin.d.ts.map +1 -1
- package/dist/types/src/KanbanPlugin.node.d.ts.map +1 -1
- package/dist/types/src/KanbanPlugin.workerd.d.ts +4 -0
- package/dist/types/src/KanbanPlugin.workerd.d.ts.map +1 -0
- package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -1
- package/dist/types/src/capabilities/create-object.d.ts +11 -0
- package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +6 -0
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/migrations.d.ts +2 -1
- package/dist/types/src/capabilities/migrations.d.ts.map +1 -1
- package/dist/types/src/components/KanbanBoard/KanbanBoard.d.ts +3 -23
- package/dist/types/src/components/KanbanBoard/KanbanBoard.d.ts.map +1 -1
- package/dist/types/src/components/KanbanBoard/KanbanBoard.stories.d.ts.map +1 -1
- package/dist/types/src/components/KanbanBoard/KanbanCard.d.ts +2 -3
- package/dist/types/src/components/KanbanBoard/KanbanCard.d.ts.map +1 -1
- package/dist/types/src/components/KanbanBoard/KanbanColumn.d.ts +2 -3
- package/dist/types/src/components/KanbanBoard/KanbanColumn.d.ts.map +1 -1
- package/dist/types/src/components/KanbanBoard/context.d.ts +38 -0
- package/dist/types/src/components/KanbanBoard/context.d.ts.map +1 -0
- package/dist/types/src/containers/KanbanArticle/KanbanArticle.d.ts +6 -0
- package/dist/types/src/containers/KanbanArticle/KanbanArticle.d.ts.map +1 -0
- package/dist/types/src/containers/{KanbanContainer/KanbanContainer.stories.d.ts → KanbanArticle/KanbanArticle.stories.d.ts} +1 -1
- package/dist/types/src/containers/KanbanArticle/KanbanArticle.stories.d.ts.map +1 -0
- package/dist/types/src/containers/KanbanArticle/index.d.ts +2 -0
- package/dist/types/src/containers/KanbanArticle/index.d.ts.map +1 -0
- package/dist/types/src/containers/index.d.ts +1 -1
- package/dist/types/src/containers/index.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +3 -2
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/operations/delete-card-field.d.ts +2 -2
- package/dist/types/src/operations/delete-card-field.d.ts.map +1 -1
- package/dist/types/src/operations/delete-card.d.ts +2 -2
- package/dist/types/src/operations/delete-card.d.ts.map +1 -1
- package/dist/types/src/operations/index.d.ts +0 -1
- package/dist/types/src/operations/index.d.ts.map +1 -1
- package/dist/types/src/operations/restore-card-field.d.ts +2 -2
- package/dist/types/src/operations/restore-card-field.d.ts.map +1 -1
- package/dist/types/src/operations/restore-card.d.ts +2 -2
- package/dist/types/src/operations/restore-card.d.ts.map +1 -1
- package/dist/types/src/plugin.d.ts +4 -0
- package/dist/types/src/plugin.d.ts.map +1 -0
- package/dist/types/src/types/Kanban.d.ts +1 -2
- package/dist/types/src/types/Kanban.d.ts.map +1 -1
- package/dist/types/src/{operations/definitions.d.ts → types/KanbanOperation.d.ts} +1 -1
- package/dist/types/src/types/KanbanOperation.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +2 -1
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +101 -73
- package/src/KanbanPlugin.node.ts +3 -37
- package/src/KanbanPlugin.tsx +11 -38
- package/src/KanbanPlugin.workerd.ts +18 -0
- package/src/capabilities/artifact-definition.ts +3 -4
- package/src/capabilities/create-object.ts +40 -0
- package/src/capabilities/index.ts +1 -0
- package/src/capabilities/migrations.ts +3 -3
- package/src/capabilities/react-surface.tsx +3 -4
- package/src/capabilities/undo-mappings.ts +1 -1
- package/src/components/KanbanBoard/KanbanBoard.stories.tsx +1 -2
- package/src/components/KanbanBoard/KanbanBoard.tsx +13 -47
- package/src/components/KanbanBoard/KanbanCard.tsx +75 -72
- package/src/components/KanbanBoard/KanbanColumn.tsx +9 -8
- package/src/components/KanbanBoard/context.ts +54 -0
- package/src/containers/{KanbanContainer/KanbanContainer.stories.tsx → KanbanArticle/KanbanArticle.stories.tsx} +9 -8
- package/src/containers/{KanbanContainer/KanbanContainer.tsx → KanbanArticle/KanbanArticle.tsx} +8 -8
- package/src/containers/KanbanArticle/index.ts +5 -0
- package/src/containers/index.ts +1 -1
- package/src/hooks/useKanbanBoardModel.browser.test.ts +1 -2
- package/src/index.ts +3 -6
- package/src/operations/delete-card-field.ts +2 -2
- package/src/operations/delete-card.ts +2 -2
- package/src/operations/index.ts +0 -2
- package/src/operations/restore-card-field.ts +2 -2
- package/src/operations/restore-card.ts +2 -2
- package/src/playwright/smoke.spec.ts +3 -3
- package/src/plugin.ts +11 -0
- package/src/types/Kanban.ts +1 -2
- package/src/{operations/definitions.ts → types/KanbanOperation.ts} +4 -0
- package/src/types/index.ts +3 -1
- package/src/types/migrations.test.ts +2 -3
- package/src/types/schema.ts +1 -1
- package/src/util/arrangement.test.ts +1 -2
- package/dist/lib/browser/chunk-T32TEM55.mjs +0 -105
- package/dist/lib/browser/chunk-T32TEM55.mjs.map +0 -7
- package/dist/lib/browser/delete-card-7OSCNCW2.mjs.map +0 -7
- package/dist/lib/browser/delete-card-field-NSB2RE3Z.mjs.map +0 -7
- package/dist/lib/browser/index.mjs.map +0 -7
- package/dist/lib/browser/meta.json +0 -1
- package/dist/lib/browser/operations/index.mjs +0 -13
- package/dist/lib/browser/operations/index.mjs.map +0 -7
- package/dist/lib/browser/restore-card-FO3WERIE.mjs.map +0 -7
- package/dist/lib/browser/restore-card-field-U5XYEEOW.mjs.map +0 -7
- package/dist/lib/browser/types/index.mjs +0 -160
- package/dist/lib/browser/types/index.mjs.map +0 -7
- package/dist/lib/node-esm/blueprints/index.mjs +0 -28
- package/dist/lib/node-esm/blueprints/index.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
- package/dist/lib/node-esm/chunk-W2RNFBMZ.mjs +0 -106
- package/dist/lib/node-esm/chunk-W2RNFBMZ.mjs.map +0 -7
- package/dist/lib/node-esm/delete-card-ZIREL6HN.mjs +0 -25
- package/dist/lib/node-esm/delete-card-ZIREL6HN.mjs.map +0 -7
- package/dist/lib/node-esm/delete-card-field-IPTEGVPP.mjs +0 -43
- package/dist/lib/node-esm/delete-card-field-IPTEGVPP.mjs.map +0 -7
- package/dist/lib/node-esm/index.mjs +0 -30
- package/dist/lib/node-esm/index.mjs.map +0 -7
- package/dist/lib/node-esm/meta.json +0 -1
- package/dist/lib/node-esm/operations/index.mjs +0 -14
- package/dist/lib/node-esm/operations/index.mjs.map +0 -7
- package/dist/lib/node-esm/restore-card-WJJ4YB7K.mjs +0 -22
- package/dist/lib/node-esm/restore-card-WJJ4YB7K.mjs.map +0 -7
- package/dist/lib/node-esm/restore-card-field-L24WJXAW.mjs +0 -41
- package/dist/lib/node-esm/restore-card-field-L24WJXAW.mjs.map +0 -7
- package/dist/lib/node-esm/translations.mjs +0 -45
- package/dist/lib/node-esm/translations.mjs.map +0 -7
- package/dist/lib/node-esm/types/index.mjs +0 -161
- package/dist/lib/node-esm/types/index.mjs.map +0 -7
- package/dist/types/src/containers/KanbanContainer/KanbanContainer.d.ts +0 -6
- package/dist/types/src/containers/KanbanContainer/KanbanContainer.d.ts.map +0 -1
- package/dist/types/src/containers/KanbanContainer/KanbanContainer.stories.d.ts.map +0 -1
- package/dist/types/src/containers/KanbanContainer/index.d.ts +0 -2
- package/dist/types/src/containers/KanbanContainer/index.d.ts.map +0 -1
- package/dist/types/src/operations/definitions.d.ts.map +0 -1
- package/src/containers/KanbanContainer/index.ts +0 -5
- /package/dist/lib/{browser/chunk-J5LGTIGS.mjs.map → neutral/blueprints/index.mjs.map} +0 -0
- /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs +0 -0
- /package/dist/lib/{node-esm/chunk-HSLMI22Q.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
- /package/dist/lib/{browser → neutral}/translations.mjs +0 -0
- /package/dist/lib/{browser → neutral}/translations.mjs.map +0 -0
package/LICENSE
CHANGED
|
@@ -1,8 +1,105 @@
|
|
|
1
|
-
|
|
2
|
-
Copyright (c) 2022 DXOS
|
|
1
|
+
# Functional Source License, Version 1.1, ALv2 Future License
|
|
3
2
|
|
|
4
|
-
|
|
3
|
+
## Abbreviation
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
FSL-1.1-Apache-2.0
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
## Notice
|
|
8
|
+
|
|
9
|
+
Copyright 2026 DXOS
|
|
10
|
+
|
|
11
|
+
## Terms and Conditions
|
|
12
|
+
|
|
13
|
+
### Licensor ("We")
|
|
14
|
+
|
|
15
|
+
The party offering the Software under these Terms and Conditions.
|
|
16
|
+
|
|
17
|
+
### The Software
|
|
18
|
+
|
|
19
|
+
The "Software" is each version of the software that we make available under
|
|
20
|
+
these Terms and Conditions, as indicated by our inclusion of these Terms and
|
|
21
|
+
Conditions with the Software.
|
|
22
|
+
|
|
23
|
+
### License Grant
|
|
24
|
+
|
|
25
|
+
Subject to your compliance with this License Grant and the Patents,
|
|
26
|
+
Redistribution and Trademark clauses below, we hereby grant you the right to
|
|
27
|
+
use, copy, modify, create derivative works, publicly perform, publicly display
|
|
28
|
+
and redistribute the Software for any Permitted Purpose identified below.
|
|
29
|
+
|
|
30
|
+
### Permitted Purpose
|
|
31
|
+
|
|
32
|
+
A Permitted Purpose is any purpose other than a Competing Use. A Competing Use
|
|
33
|
+
means making the Software available to others in a commercial product or
|
|
34
|
+
service that:
|
|
35
|
+
|
|
36
|
+
1. substitutes for the Software;
|
|
37
|
+
|
|
38
|
+
2. substitutes for any other product or service we offer using the Software
|
|
39
|
+
that exists as of the date we make the Software available; or
|
|
40
|
+
|
|
41
|
+
3. offers the same or substantially similar functionality as the Software.
|
|
42
|
+
|
|
43
|
+
Permitted Purposes specifically include using the Software:
|
|
44
|
+
|
|
45
|
+
1. for your internal use and access;
|
|
46
|
+
|
|
47
|
+
2. for non-commercial education;
|
|
48
|
+
|
|
49
|
+
3. for non-commercial research; and
|
|
50
|
+
|
|
51
|
+
4. in connection with professional services that you provide to a licensee
|
|
52
|
+
using the Software in accordance with these Terms and Conditions.
|
|
53
|
+
|
|
54
|
+
### Patents
|
|
55
|
+
|
|
56
|
+
To the extent your use for a Permitted Purpose would necessarily infringe our
|
|
57
|
+
patents, the license grant above includes a license under our patents. If you
|
|
58
|
+
make a claim against any party that the Software infringes or contributes to
|
|
59
|
+
the infringement of any patent, then your patent license to the Software ends
|
|
60
|
+
immediately.
|
|
61
|
+
|
|
62
|
+
### Redistribution
|
|
63
|
+
|
|
64
|
+
The Terms and Conditions apply to all copies, modifications and derivatives of
|
|
65
|
+
the Software.
|
|
66
|
+
|
|
67
|
+
If you redistribute any copies, modifications or derivatives of the Software,
|
|
68
|
+
you must include a copy of or a link to these Terms and Conditions and not
|
|
69
|
+
remove any copyright notices provided in or with the Software.
|
|
70
|
+
|
|
71
|
+
### Disclaimer
|
|
72
|
+
|
|
73
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTIES OF ANY KIND, EXPRESS OR
|
|
74
|
+
IMPLIED, INCLUDING WITHOUT LIMITATION WARRANTIES OF FITNESS FOR A PARTICULAR
|
|
75
|
+
PURPOSE, MERCHANTABILITY, TITLE OR NON-INFRINGEMENT.
|
|
76
|
+
|
|
77
|
+
IN NO EVENT WILL WE HAVE ANY LIABILITY TO YOU ARISING OUT OF OR RELATED TO THE
|
|
78
|
+
SOFTWARE, INCLUDING INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES,
|
|
79
|
+
EVEN IF WE HAVE BEEN INFORMED OF THEIR POSSIBILITY IN ADVANCE.
|
|
80
|
+
|
|
81
|
+
### Trademarks
|
|
82
|
+
|
|
83
|
+
Except for displaying the License Details and identifying us as the origin of
|
|
84
|
+
the Software, you have no right under these Terms and Conditions to use our
|
|
85
|
+
trademarks, trade names, service marks or product names.
|
|
86
|
+
|
|
87
|
+
## Grant of Future License
|
|
88
|
+
|
|
89
|
+
We hereby irrevocably grant you an additional license to use the Software under
|
|
90
|
+
the Apache License, Version 2.0 that is effective on the second anniversary of
|
|
91
|
+
the date we make the Software available. On or after that date, you may use the
|
|
92
|
+
Software under the Apache License, Version 2.0, in which case the following
|
|
93
|
+
will apply:
|
|
94
|
+
|
|
95
|
+
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
|
96
|
+
this file except in compliance with the License.
|
|
97
|
+
|
|
98
|
+
You may obtain a copy of the License at
|
|
99
|
+
|
|
100
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
101
|
+
|
|
102
|
+
Unless required by applicable law or agreed to in writing, software distributed
|
|
103
|
+
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
|
104
|
+
CONDITIONS OF ANY KIND, either express or implied. See the License for the
|
|
105
|
+
specific language governing permissions and limitations under the License.
|
package/README.md
CHANGED
|
@@ -12,4 +12,4 @@ Surface plugin for kanban entities.
|
|
|
12
12
|
|
|
13
13
|
Your ideas, issues, and code are most welcome. Please take a look at our [community code of conduct](https://github.com/dxos/dxos/blob/main/CODE_OF_CONDUCT.md), the [issue guide](https://github.com/dxos/dxos/blob/main/CONTRIBUTING.md#submitting-issues), and the [PR contribution guide](https://github.com/dxos/dxos/blob/main/CONTRIBUTING.md#submitting-prs).
|
|
14
14
|
|
|
15
|
-
License: [
|
|
15
|
+
License: [FSL-1.1-Apache-2.0](./LICENSE) Copyright 2023 © DXOS
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
+
|
|
3
|
+
// src/containers/KanbanArticle/KanbanArticle.tsx
|
|
4
|
+
import { Atom, RegistryContext } from "@effect-atom/atom-react";
|
|
5
|
+
import React, { useCallback, useContext, useMemo } from "react";
|
|
6
|
+
import { useCapabilities, useOperationInvoker } from "@dxos/app-framework/ui";
|
|
7
|
+
import { AppCapabilities } from "@dxos/app-toolkit";
|
|
8
|
+
import { Filter, Obj, Query, Type } from "@dxos/echo";
|
|
9
|
+
import { AtomObj, AtomQuery } from "@dxos/echo-atom";
|
|
10
|
+
import { useObject, useSchema } from "@dxos/react-client/echo";
|
|
11
|
+
import { Panel, Toolbar } from "@dxos/react-ui";
|
|
12
|
+
import { getTagFromQuery, getTypenameFromQuery } from "@dxos/schema";
|
|
13
|
+
import { KanbanBoard } from "#components";
|
|
14
|
+
import { useEchoChangeCallback, useItemsProjection, useProjectionModel } from "#hooks";
|
|
15
|
+
import { KanbanOperation } from "#types";
|
|
16
|
+
import { Kanban } from "#types";
|
|
17
|
+
var KanbanArticle = (props) => {
|
|
18
|
+
return Kanban.isKanbanItems(props.subject) ? /* @__PURE__ */ React.createElement(ItemsKanbanArticle, {
|
|
19
|
+
...props,
|
|
20
|
+
subject: props.subject
|
|
21
|
+
}) : /* @__PURE__ */ React.createElement(ViewKanbanArticle, props);
|
|
22
|
+
};
|
|
23
|
+
var ViewKanbanArticle = ({ role, subject: object }) => {
|
|
24
|
+
const registry = useContext(RegistryContext);
|
|
25
|
+
const schemas = useCapabilities(AppCapabilities.Schema);
|
|
26
|
+
const db = Obj.getDatabase(object);
|
|
27
|
+
const { invokePromise } = useOperationInvoker();
|
|
28
|
+
const [view] = useObject(object.spec.kind === "view" ? object.spec.view : void 0);
|
|
29
|
+
const typename = view?.query ? getTypenameFromQuery(view.query.ast) : void 0;
|
|
30
|
+
const tag = view?.query ? getTagFromQuery(view.query.ast) : void 0;
|
|
31
|
+
const schemaFromDb = useSchema(db, typename);
|
|
32
|
+
const cardSchema = useMemo(() => schemaFromDb ?? schemas.flat().find((schema) => Type.getTypename(schema) === typename), [
|
|
33
|
+
schemaFromDb,
|
|
34
|
+
schemas,
|
|
35
|
+
typename
|
|
36
|
+
]);
|
|
37
|
+
const items = useMemo(() => {
|
|
38
|
+
if (!db) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
const baseFilter = cardSchema ? Filter.type(cardSchema) : Filter.nothing();
|
|
42
|
+
const query = tag ? Query.select(baseFilter).select(Filter.tag(tag)) : Query.select(baseFilter);
|
|
43
|
+
return AtomQuery.make(db, query);
|
|
44
|
+
}, [
|
|
45
|
+
db,
|
|
46
|
+
cardSchema,
|
|
47
|
+
tag
|
|
48
|
+
]);
|
|
49
|
+
const projection = useProjectionModel(cardSchema, object, registry);
|
|
50
|
+
const change = useEchoChangeCallback(object);
|
|
51
|
+
const pivotFieldId = view?.projection?.pivotFieldId;
|
|
52
|
+
const columnFieldPath = projection && pivotFieldId ? projection.tryGetFieldProjection(pivotFieldId)?.props.property : void 0;
|
|
53
|
+
const handleCardAdd = useCallback((columnValue) => {
|
|
54
|
+
if (db && cardSchema && columnFieldPath) {
|
|
55
|
+
const card = Obj.make(cardSchema, {
|
|
56
|
+
[columnFieldPath]: columnValue
|
|
57
|
+
});
|
|
58
|
+
db.add(card);
|
|
59
|
+
return card.id;
|
|
60
|
+
}
|
|
61
|
+
}, [
|
|
62
|
+
db,
|
|
63
|
+
cardSchema,
|
|
64
|
+
columnFieldPath
|
|
65
|
+
]);
|
|
66
|
+
const handleCardRemove = useCallback((card) => {
|
|
67
|
+
void invokePromise(KanbanOperation.DeleteCard, {
|
|
68
|
+
card
|
|
69
|
+
});
|
|
70
|
+
}, [
|
|
71
|
+
invokePromise
|
|
72
|
+
]);
|
|
73
|
+
if (!object || !db || !items || !projection || !change) {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
return /* @__PURE__ */ React.createElement(Panel.Root, {
|
|
77
|
+
role
|
|
78
|
+
}, /* @__PURE__ */ React.createElement(Panel.Toolbar, {
|
|
79
|
+
asChild: true
|
|
80
|
+
}, /* @__PURE__ */ React.createElement(Toolbar.Root, null)), /* @__PURE__ */ React.createElement(KanbanBoard.Root, {
|
|
81
|
+
kanban: object,
|
|
82
|
+
projection,
|
|
83
|
+
items,
|
|
84
|
+
change,
|
|
85
|
+
onCardAdd: handleCardAdd,
|
|
86
|
+
onCardRemove: handleCardRemove
|
|
87
|
+
}, /* @__PURE__ */ React.createElement(Panel.Content, {
|
|
88
|
+
asChild: true
|
|
89
|
+
}, /* @__PURE__ */ React.createElement(KanbanBoard.Content, null))));
|
|
90
|
+
};
|
|
91
|
+
var ItemsKanbanArticle = ({ role, subject: object }) => {
|
|
92
|
+
const db = Obj.getDatabase(object);
|
|
93
|
+
const projection = useItemsProjection(object);
|
|
94
|
+
const change = useEchoChangeCallback(object);
|
|
95
|
+
const itemsAtom = useMemo(() => Atom.make((get) => {
|
|
96
|
+
const out = [];
|
|
97
|
+
for (const ref of object.spec.items) {
|
|
98
|
+
const target = get(AtomObj.make(ref));
|
|
99
|
+
if (target == null) {
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
if (Obj.isDeleted(target)) {
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
out.push(target);
|
|
106
|
+
}
|
|
107
|
+
return out;
|
|
108
|
+
}), [
|
|
109
|
+
object.spec.items
|
|
110
|
+
]);
|
|
111
|
+
const handleCardRemove = useCallback(() => void 0, []);
|
|
112
|
+
if (!object || !db || !change) {
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
return /* @__PURE__ */ React.createElement(Panel.Root, {
|
|
116
|
+
role
|
|
117
|
+
}, /* @__PURE__ */ React.createElement(Panel.Toolbar, {
|
|
118
|
+
asChild: true
|
|
119
|
+
}, /* @__PURE__ */ React.createElement(Toolbar.Root, null)), /* @__PURE__ */ React.createElement(KanbanBoard.Root, {
|
|
120
|
+
kanban: object,
|
|
121
|
+
projection,
|
|
122
|
+
items: itemsAtom,
|
|
123
|
+
change,
|
|
124
|
+
onCardRemove: handleCardRemove
|
|
125
|
+
}, /* @__PURE__ */ React.createElement(Panel.Content, {
|
|
126
|
+
asChild: true
|
|
127
|
+
}, /* @__PURE__ */ React.createElement(KanbanBoard.Content, null))));
|
|
128
|
+
};
|
|
129
|
+
export {
|
|
130
|
+
KanbanArticle as default
|
|
131
|
+
};
|
|
132
|
+
//# sourceMappingURL=KanbanArticle-NEJ3LNBO.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/containers/KanbanArticle/KanbanArticle.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Atom, 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 AppSurface } from '@dxos/app-toolkit/ui';\nimport { Filter, Obj, Query, type Ref, Type } from '@dxos/echo';\nimport { AtomObj, AtomQuery } from '@dxos/echo-atom';\nimport { useObject, useSchema } from '@dxos/react-client/echo';\nimport { Panel, Toolbar } from '@dxos/react-ui';\nimport { getTagFromQuery, getTypenameFromQuery } from '@dxos/schema';\n\nimport { KanbanBoard } from '#components';\nimport { useEchoChangeCallback, useItemsProjection, useProjectionModel } from '#hooks';\nimport { KanbanOperation } from '#types';\nimport { Kanban } from '#types';\n\nexport type KanbanArticleProps = AppSurface.ObjectArticleProps<Kanban.Kanban>;\n\nexport const KanbanArticle = (props: KanbanArticleProps) => {\n // Branch on `kanban.spec.kind`: view-variant runs a typename query through\n // `useProjectionModel`; items-variant dereferences `kanban.spec.items` and\n // uses a stub projection from `useItemsProjection`.\n return Kanban.isKanbanItems(props.subject) ? (\n <ItemsKanbanArticle {...props} subject={props.subject} />\n ) : (\n <ViewKanbanArticle {...props} />\n );\n};\n\nconst ViewKanbanArticle = ({ role, subject: object }: KanbanArticleProps) => {\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.spec.kind === 'view' ? object.spec.view : undefined);\n const typename = view?.query ? getTypenameFromQuery(view.query.ast) : undefined;\n const tag = view?.query ? getTagFromQuery(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 if (!db) {\n return null;\n }\n const baseFilter = cardSchema ? Filter.type(cardSchema) : Filter.nothing();\n const query = tag ? Query.select(baseFilter).select(Filter.tag(tag)) : Query.select(baseFilter);\n return AtomQuery.make(db, query);\n }, [db, cardSchema, tag]);\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 <Panel.Toolbar asChild>\n <Toolbar.Root />\n </Panel.Toolbar>\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\ntype ItemsKanbanArticleProps = Omit<KanbanArticleProps, 'subject'> & { subject: Kanban.KanbanItems };\n\nconst ItemsKanbanArticle = ({ role, subject: object }: ItemsKanbanArticleProps) => {\n const db = Obj.getDatabase(object);\n const projection = useItemsProjection(object);\n const change = useEchoChangeCallback(object);\n\n // TODO(wittjosiah): pass refs (not loaded objects) through to the kanban\n // board and let `KanbanCard` subscribe to its own ref via `useObject`.\n // Today this atom subscribes to *every* item — any one changing causes the\n // container (and the model's per-column atoms) to recompute. With cards\n // subscribing themselves, the container only needs the refs and the\n // per-card render is independent. Requires:\n // - `KanbanCard` to accept `Ref<Obj.Unknown>` as `data` and call\n // `useObject(ref)` internally.\n // - The model to handle a ref-bearing item shape (id from\n // `ref.dxn.asEchoDXN()?.echoId`) and use arrangement-only ordering\n // for items-variant (no pivot-value fallback, since refs don't expose\n // the pivot field without loading).\n // - `Mosaic.isItem` to accept the ref wrapper alongside `Obj.isObject`.\n const itemsAtom = useMemo(\n () =>\n Atom.make((get) => {\n const out: Obj.Unknown[] = [];\n for (const ref of object.spec.items as ReadonlyArray<Ref.Ref<Obj.Unknown>>) {\n const target = get(AtomObj.make(ref));\n if (target == null) {\n continue;\n }\n // Drop soft-deleted cards (e.g. Trello-closed cards). The ref\n // stays in `spec.items` so arrangement is preserved, but the card\n // shouldn't render.\n if (Obj.isDeleted(target)) {\n continue;\n }\n out.push(target as unknown as Obj.Unknown);\n }\n return out;\n }),\n [object.spec.items],\n );\n\n const handleCardRemove = useCallback(() => undefined, []);\n\n if (!object || !db || !change) {\n return null;\n }\n\n // TODO(wittjosiah): wire `onCardAdd` to the create-object flow so\n // users can add items directly from the kanban (currently the column's\n // \"+\" button is hidden because `onCardAdd` is undefined).\n return (\n <Panel.Root role={role}>\n <Panel.Toolbar asChild>\n <Toolbar.Root />\n </Panel.Toolbar>\n <KanbanBoard.Root\n kanban={object}\n projection={projection}\n items={itemsAtom}\n change={change}\n onCardRemove={handleCardRemove}\n >\n <Panel.Content asChild>\n <KanbanBoard.Content />\n </Panel.Content>\n </KanbanBoard.Root>\n </Panel.Root>\n );\n};\n"],
|
|
5
|
+
"mappings": ";;;AAIA,SAASA,MAAMC,uBAAuB;AACtC,OAAOC,SAASC,aAAaC,YAAYC,eAAe;AAExD,SAASC,iBAAiBC,2BAA2B;AACrD,SAASC,uBAAuB;AAEhC,SAASC,QAAQC,KAAKC,OAAiBC,YAAY;AACnD,SAASC,SAASC,iBAAiB;AACnC,SAASC,WAAWC,iBAAiB;AACrC,SAASC,OAAOC,eAAe;AAC/B,SAASC,iBAAiBC,4BAA4B;AAEtD,SAASC,mBAAmB;AAC5B,SAASC,uBAAuBC,oBAAoBC,0BAA0B;AAC9E,SAASC,uBAAuB;AAChC,SAASC,cAAc;AAIhB,IAAMC,gBAAgB,CAACC,UAAAA;AAI5B,SAAOF,OAAOG,cAAcD,MAAME,OAAO,IACvC,sBAAA,cAACC,oBAAAA;IAAoB,GAAGH;IAAOE,SAASF,MAAME;OAE9C,sBAAA,cAACE,mBAAsBJ,KAAAA;AAE3B;AAEA,IAAMI,oBAAoB,CAAC,EAAEC,MAAMH,SAASI,OAAM,MAAsB;AACtE,QAAMC,WAAW/B,WAAWH,eAAAA;AAC5B,QAAMmC,UAAU9B,gBAAgBE,gBAAgB6B,MAAM;AACtD,QAAMC,KAAK5B,IAAI6B,YAAYL,MAAAA;AAC3B,QAAM,EAAEM,cAAa,IAAKjC,oBAAAA;AAC1B,QAAM,CAACkC,IAAAA,IAAQ1B,UAAUmB,OAAOQ,KAAKC,SAAS,SAAST,OAAOQ,KAAKD,OAAOG,MAAAA;AAC1E,QAAMC,WAAWJ,MAAMK,QAAQ1B,qBAAqBqB,KAAKK,MAAMC,GAAG,IAAIH;AACtE,QAAMI,MAAMP,MAAMK,QAAQ3B,gBAAgBsB,KAAKK,MAAMC,GAAG,IAAIH;AAE5D,QAAMK,eAAejC,UAAUsB,IAAIO,QAAAA;AACnC,QAAMK,aAAa7C,QACjB,MAAM4C,gBAAgBb,QAAQe,KAAI,EAAGC,KAAK,CAACC,WAAWzC,KAAK0C,YAAYD,MAAAA,MAAYR,QAAAA,GACnF;IAACI;IAAcb;IAASS;GAAS;AAGnC,QAAMU,QAAQlD,QAAQ,MAAA;AACpB,QAAI,CAACiC,IAAI;AACP,aAAO;IACT;AACA,UAAMkB,aAAaN,aAAazC,OAAOgD,KAAKP,UAAAA,IAAczC,OAAOiD,QAAO;AACxE,UAAMZ,QAAQE,MAAMrC,MAAMgD,OAAOH,UAAAA,EAAYG,OAAOlD,OAAOuC,IAAIA,GAAAA,CAAAA,IAAQrC,MAAMgD,OAAOH,UAAAA;AACpF,WAAO1C,UAAU8C,KAAKtB,IAAIQ,KAAAA;EAC5B,GAAG;IAACR;IAAIY;IAAYF;GAAI;AAExB,QAAMa,aAAarC,mBAAmB0B,YAAYhB,QAAQC,QAAAA;AAC1D,QAAM2B,SAASxC,sBAAsBY,MAAAA;AAErC,QAAM6B,eAAetB,MAAMoB,YAAYE;AACvC,QAAMC,kBACJH,cAAcE,eAAeF,WAAWI,sBAAsBF,YAAAA,GAAenC,MAAMsC,WAAWtB;AAEhG,QAAMuB,gBAAgBhE,YACpB,CAACiE,gBAAAA;AACC,QAAI9B,MAAMY,cAAcc,iBAAiB;AACvC,YAAMK,OAAO3D,IAAIkD,KAAKV,YAAY;QAAE,CAACc,eAAAA,GAAkBI;MAAY,CAAA;AACnE9B,SAAGgC,IAAID,IAAAA;AACP,aAAOA,KAAKE;IACd;EACF,GACA;IAACjC;IAAIY;IAAYc;GAAgB;AAGnC,QAAMQ,mBAAmBrE,YACvB,CAACkE,SAAAA;AACC,SAAK7B,cAAcf,gBAAgBgD,YAAY;MAAEJ;IAAK,CAAA;EACxD,GACA;IAAC7B;GAAc;AAGjB,MAAI,CAACN,UAAU,CAACI,MAAM,CAACiB,SAAS,CAACM,cAAc,CAACC,QAAQ;AACtD,WAAO;EACT;AAEA,SACE,sBAAA,cAAC7C,MAAMyD,MAAI;IAACzC;KACV,sBAAA,cAAChB,MAAMC,SAAO;IAACyD,SAAAA;KACb,sBAAA,cAACzD,QAAQwD,MAAI,IAAA,CAAA,GAEf,sBAAA,cAACrD,YAAYqD,MAAI;IACfE,QAAQ1C;IACR2B;IACAN;IACAO;IACAe,WAAWV;IACXW,cAAcN;KAEd,sBAAA,cAACvD,MAAM8D,SAAO;IAACJ,SAAAA;KACb,sBAAA,cAACtD,YAAY0D,SAAO,IAAA,CAAA,CAAA,CAAA;AAK9B;AAIA,IAAMhD,qBAAqB,CAAC,EAAEE,MAAMH,SAASI,OAAM,MAA2B;AAC5E,QAAMI,KAAK5B,IAAI6B,YAAYL,MAAAA;AAC3B,QAAM2B,aAAatC,mBAAmBW,MAAAA;AACtC,QAAM4B,SAASxC,sBAAsBY,MAAAA;AAerC,QAAM8C,YAAY3E,QAChB,MACEL,KAAK4D,KAAK,CAACqB,QAAAA;AACT,UAAMC,MAAqB,CAAA;AAC3B,eAAWC,OAAOjD,OAAOQ,KAAKa,OAA8C;AAC1E,YAAM6B,SAASH,IAAIpE,QAAQ+C,KAAKuB,GAAAA,CAAAA;AAChC,UAAIC,UAAU,MAAM;AAClB;MACF;AAIA,UAAI1E,IAAI2E,UAAUD,MAAAA,GAAS;AACzB;MACF;AACAF,UAAII,KAAKF,MAAAA;IACX;AACA,WAAOF;EACT,CAAA,GACF;IAAChD,OAAOQ,KAAKa;GAAM;AAGrB,QAAMiB,mBAAmBrE,YAAY,MAAMyC,QAAW,CAAA,CAAE;AAExD,MAAI,CAACV,UAAU,CAACI,MAAM,CAACwB,QAAQ;AAC7B,WAAO;EACT;AAKA,SACE,sBAAA,cAAC7C,MAAMyD,MAAI;IAACzC;KACV,sBAAA,cAAChB,MAAMC,SAAO;IAACyD,SAAAA;KACb,sBAAA,cAACzD,QAAQwD,MAAI,IAAA,CAAA,GAEf,sBAAA,cAACrD,YAAYqD,MAAI;IACfE,QAAQ1C;IACR2B;IACAN,OAAOyB;IACPlB;IACAgB,cAAcN;KAEd,sBAAA,cAACvD,MAAM8D,SAAO;IAACJ,SAAAA;KACb,sBAAA,cAACtD,YAAY0D,SAAO,IAAA,CAAA,CAAA,CAAA;AAK9B;",
|
|
6
|
+
"names": ["Atom", "RegistryContext", "React", "useCallback", "useContext", "useMemo", "useCapabilities", "useOperationInvoker", "AppCapabilities", "Filter", "Obj", "Query", "Type", "AtomObj", "AtomQuery", "useObject", "useSchema", "Panel", "Toolbar", "getTagFromQuery", "getTypenameFromQuery", "KanbanBoard", "useEchoChangeCallback", "useItemsProjection", "useProjectionModel", "KanbanOperation", "Kanban", "KanbanArticle", "props", "isKanbanItems", "subject", "ItemsKanbanArticle", "ViewKanbanArticle", "role", "object", "registry", "schemas", "Schema", "db", "getDatabase", "invokePromise", "view", "spec", "kind", "undefined", "typename", "query", "ast", "tag", "schemaFromDb", "cardSchema", "flat", "find", "schema", "getTypename", "items", "baseFilter", "type", "nothing", "select", "make", "projection", "change", "pivotFieldId", "columnFieldPath", "tryGetFieldProjection", "property", "handleCardAdd", "columnValue", "card", "add", "id", "handleCardRemove", "DeleteCard", "Root", "asChild", "kanban", "onCardAdd", "onCardRemove", "Content", "itemsAtom", "get", "out", "ref", "target", "isDeleted", "push"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
+
|
|
3
|
+
// src/KanbanPlugin.tsx
|
|
4
|
+
import { Plugin } from "@dxos/app-framework";
|
|
5
|
+
import { AppPlugin } from "@dxos/app-toolkit";
|
|
6
|
+
import { ClientEvents } from "@dxos/plugin-client";
|
|
7
|
+
import { BlueprintDefinition, CreateObject, Migrations, OperationHandler, UndoMappings, ReactSurface } from "#capabilities";
|
|
8
|
+
import { meta } from "#meta";
|
|
9
|
+
import { translations } from "#translations";
|
|
10
|
+
import { Kanban } from "#types";
|
|
11
|
+
var KanbanPlugin = Plugin.define(meta).pipe(AppPlugin.addBlueprintDefinitionModule({
|
|
12
|
+
activate: BlueprintDefinition
|
|
13
|
+
}), AppPlugin.addCreateObjectModule({
|
|
14
|
+
activate: CreateObject
|
|
15
|
+
}), AppPlugin.addOperationHandlerModule({
|
|
16
|
+
activate: OperationHandler
|
|
17
|
+
}), AppPlugin.addUndoMappingsModule({
|
|
18
|
+
activate: UndoMappings
|
|
19
|
+
}), AppPlugin.addSchemaModule({
|
|
20
|
+
schema: [
|
|
21
|
+
Kanban.Kanban
|
|
22
|
+
]
|
|
23
|
+
}), AppPlugin.addSurfaceModule({
|
|
24
|
+
activate: ReactSurface
|
|
25
|
+
}), AppPlugin.addTranslationsModule({
|
|
26
|
+
translations
|
|
27
|
+
}), Plugin.addModule({
|
|
28
|
+
activatesOn: ClientEvents.SetupMigration,
|
|
29
|
+
activate: Migrations
|
|
30
|
+
}), Plugin.make);
|
|
31
|
+
var KanbanPlugin_default = KanbanPlugin;
|
|
32
|
+
export {
|
|
33
|
+
KanbanPlugin,
|
|
34
|
+
KanbanPlugin_default as default
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=KanbanPlugin.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/KanbanPlugin.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\nimport { AppPlugin } from '@dxos/app-toolkit';\nimport { ClientEvents } from '@dxos/plugin-client';\n\nimport {\n BlueprintDefinition,\n CreateObject,\n Migrations,\n OperationHandler,\n UndoMappings,\n ReactSurface,\n} from '#capabilities';\nimport { meta } from '#meta';\nimport { translations } from '#translations';\nimport { Kanban } from '#types';\n\nexport const KanbanPlugin = Plugin.define(meta).pipe(\n AppPlugin.addBlueprintDefinitionModule({ activate: BlueprintDefinition }),\n AppPlugin.addCreateObjectModule({ activate: CreateObject }),\n AppPlugin.addOperationHandlerModule({ activate: OperationHandler }),\n AppPlugin.addUndoMappingsModule({ activate: UndoMappings }),\n AppPlugin.addSchemaModule({ schema: [Kanban.Kanban] }),\n AppPlugin.addSurfaceModule({ activate: ReactSurface }),\n AppPlugin.addTranslationsModule({ translations }),\n Plugin.addModule({\n activatesOn: ClientEvents.SetupMigration,\n activate: Migrations,\n }),\n Plugin.make,\n);\n\nexport default KanbanPlugin;\n"],
|
|
5
|
+
"mappings": ";;;AAIA,SAASA,cAAc;AACvB,SAASC,iBAAiB;AAC1B,SAASC,oBAAoB;AAE7B,SACEC,qBACAC,cACAC,YACAC,kBACAC,cACAC,oBACK;AACP,SAASC,YAAY;AACrB,SAASC,oBAAoB;AAC7B,SAASC,cAAc;AAEhB,IAAMC,eAAeZ,OAAOa,OAAOJ,IAAAA,EAAMK,KAC9Cb,UAAUc,6BAA6B;EAAEC,UAAUb;AAAoB,CAAA,GACvEF,UAAUgB,sBAAsB;EAAED,UAAUZ;AAAa,CAAA,GACzDH,UAAUiB,0BAA0B;EAAEF,UAAUV;AAAiB,CAAA,GACjEL,UAAUkB,sBAAsB;EAAEH,UAAUT;AAAa,CAAA,GACzDN,UAAUmB,gBAAgB;EAAEC,QAAQ;IAACV,OAAOA;;AAAQ,CAAA,GACpDV,UAAUqB,iBAAiB;EAAEN,UAAUR;AAAa,CAAA,GACpDP,UAAUsB,sBAAsB;EAAEb;AAAa,CAAA,GAC/CV,OAAOwB,UAAU;EACfC,aAAavB,aAAawB;EAC1BV,UAAUX;AACZ,CAAA,GACAL,OAAO2B,IAAI;AAGb,IAAA,uBAAef;",
|
|
6
|
+
"names": ["Plugin", "AppPlugin", "ClientEvents", "BlueprintDefinition", "CreateObject", "Migrations", "OperationHandler", "UndoMappings", "ReactSurface", "meta", "translations", "Kanban", "KanbanPlugin", "define", "pipe", "addBlueprintDefinitionModule", "activate", "addCreateObjectModule", "addOperationHandlerModule", "addUndoMappingsModule", "addSchemaModule", "schema", "addSurfaceModule", "addTranslationsModule", "addModule", "activatesOn", "SetupMigration", "make"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
+
|
|
3
|
+
// src/KanbanPlugin.node.ts
|
|
4
|
+
import { Plugin } from "@dxos/app-framework";
|
|
5
|
+
import { AppPlugin } from "@dxos/app-toolkit";
|
|
6
|
+
import { BlueprintDefinition, CreateObject, OperationHandler, UndoMappings } from "#capabilities";
|
|
7
|
+
import { meta } from "#meta";
|
|
8
|
+
import { Kanban } from "#types";
|
|
9
|
+
var KanbanPlugin = Plugin.define(meta).pipe(AppPlugin.addBlueprintDefinitionModule({
|
|
10
|
+
activate: BlueprintDefinition
|
|
11
|
+
}), AppPlugin.addCreateObjectModule({
|
|
12
|
+
activate: CreateObject
|
|
13
|
+
}), AppPlugin.addOperationHandlerModule({
|
|
14
|
+
activate: OperationHandler
|
|
15
|
+
}), AppPlugin.addUndoMappingsModule({
|
|
16
|
+
activate: UndoMappings
|
|
17
|
+
}), AppPlugin.addSchemaModule({
|
|
18
|
+
schema: [
|
|
19
|
+
Kanban.Kanban
|
|
20
|
+
]
|
|
21
|
+
}), Plugin.make);
|
|
22
|
+
var KanbanPlugin_node_default = KanbanPlugin;
|
|
23
|
+
export {
|
|
24
|
+
KanbanPlugin,
|
|
25
|
+
KanbanPlugin_node_default as default
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=KanbanPlugin.node.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/KanbanPlugin.node.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\nimport { AppPlugin } from '@dxos/app-toolkit';\n\nimport { BlueprintDefinition, CreateObject, OperationHandler, UndoMappings } from '#capabilities';\nimport { meta } from '#meta';\nimport { Kanban } from '#types';\n\nexport const KanbanPlugin = Plugin.define(meta).pipe(\n AppPlugin.addBlueprintDefinitionModule({ activate: BlueprintDefinition }),\n AppPlugin.addCreateObjectModule({ activate: CreateObject }),\n AppPlugin.addOperationHandlerModule({ activate: OperationHandler }),\n AppPlugin.addUndoMappingsModule({ activate: UndoMappings }),\n AppPlugin.addSchemaModule({ schema: [Kanban.Kanban] }),\n Plugin.make,\n);\n\nexport default KanbanPlugin;\n"],
|
|
5
|
+
"mappings": ";;;AAIA,SAASA,cAAc;AACvB,SAASC,iBAAiB;AAE1B,SAASC,qBAAqBC,cAAcC,kBAAkBC,oBAAoB;AAClF,SAASC,YAAY;AACrB,SAASC,cAAc;AAEhB,IAAMC,eAAeR,OAAOS,OAAOH,IAAAA,EAAMI,KAC9CT,UAAUU,6BAA6B;EAAEC,UAAUV;AAAoB,CAAA,GACvED,UAAUY,sBAAsB;EAAED,UAAUT;AAAa,CAAA,GACzDF,UAAUa,0BAA0B;EAAEF,UAAUR;AAAiB,CAAA,GACjEH,UAAUc,sBAAsB;EAAEH,UAAUP;AAAa,CAAA,GACzDJ,UAAUe,gBAAgB;EAAEC,QAAQ;IAACV,OAAOA;;AAAQ,CAAA,GACpDP,OAAOkB,IAAI;AAGb,IAAA,4BAAeV;",
|
|
6
|
+
"names": ["Plugin", "AppPlugin", "BlueprintDefinition", "CreateObject", "OperationHandler", "UndoMappings", "meta", "Kanban", "KanbanPlugin", "define", "pipe", "addBlueprintDefinitionModule", "activate", "addCreateObjectModule", "addOperationHandlerModule", "addUndoMappingsModule", "addSchemaModule", "schema", "make"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
+
|
|
3
|
+
// src/KanbanPlugin.workerd.ts
|
|
4
|
+
import { Plugin } from "@dxos/app-framework";
|
|
5
|
+
import { AppPlugin } from "@dxos/app-toolkit";
|
|
6
|
+
import { OperationHandler } from "#capabilities";
|
|
7
|
+
import { meta } from "#meta";
|
|
8
|
+
import { Kanban } from "#types";
|
|
9
|
+
var KanbanPlugin = Plugin.define(meta).pipe(AppPlugin.addOperationHandlerModule({
|
|
10
|
+
activate: OperationHandler
|
|
11
|
+
}), AppPlugin.addSchemaModule({
|
|
12
|
+
schema: [
|
|
13
|
+
Kanban.Kanban
|
|
14
|
+
]
|
|
15
|
+
}), Plugin.make);
|
|
16
|
+
var KanbanPlugin_workerd_default = KanbanPlugin;
|
|
17
|
+
export {
|
|
18
|
+
KanbanPlugin,
|
|
19
|
+
KanbanPlugin_workerd_default as default
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=KanbanPlugin.workerd.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/KanbanPlugin.workerd.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\nimport { AppPlugin } from '@dxos/app-toolkit';\n\nimport { OperationHandler } from '#capabilities';\nimport { meta } from '#meta';\nimport { Kanban } from '#types';\n\nexport const KanbanPlugin = Plugin.define(meta).pipe(\n AppPlugin.addOperationHandlerModule({ activate: OperationHandler }),\n AppPlugin.addSchemaModule({ schema: [Kanban.Kanban] }),\n Plugin.make,\n);\n\nexport default KanbanPlugin;\n"],
|
|
5
|
+
"mappings": ";;;AAIA,SAASA,cAAc;AACvB,SAASC,iBAAiB;AAE1B,SAASC,wBAAwB;AACjC,SAASC,YAAY;AACrB,SAASC,cAAc;AAEhB,IAAMC,eAAeL,OAAOM,OAAOH,IAAAA,EAAMI,KAC9CN,UAAUO,0BAA0B;EAAEC,UAAUP;AAAiB,CAAA,GACjED,UAAUS,gBAAgB;EAAEC,QAAQ;IAACP,OAAOA;;AAAQ,CAAA,GACpDJ,OAAOY,IAAI;AAGb,IAAA,+BAAeP;",
|
|
6
|
+
"names": ["Plugin", "AppPlugin", "OperationHandler", "meta", "Kanban", "KanbanPlugin", "define", "pipe", "addOperationHandlerModule", "activate", "addSchemaModule", "schema", "make"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
+
|
|
3
|
+
// src/containers/KanbanSettings/KanbanSettings.tsx
|
|
4
|
+
import { RegistryContext } from "@effect-atom/atom-react";
|
|
5
|
+
import React, { useCallback, useContext, useMemo } from "react";
|
|
6
|
+
import { Obj } from "@dxos/echo";
|
|
7
|
+
import { Format } from "@dxos/echo/internal";
|
|
8
|
+
import { useObject, useSchema } from "@dxos/react-client/echo";
|
|
9
|
+
import { Form, SelectField } from "@dxos/react-ui-form";
|
|
10
|
+
import { getTypenameFromQuery } from "@dxos/schema";
|
|
11
|
+
import { useProjectionModel } from "#hooks";
|
|
12
|
+
import { KanbanSettingsSchema, KanbanViewSettingsSchema, UNCATEGORIZED_VALUE } from "#types";
|
|
13
|
+
var KanbanSettings = ({ subject: object }) => {
|
|
14
|
+
const registry = useContext(RegistryContext);
|
|
15
|
+
const db = Obj.getDatabase(object);
|
|
16
|
+
const isView = object.spec.kind === "view";
|
|
17
|
+
const [view, updateView] = useObject(object.spec.kind === "view" ? object.spec.view : void 0);
|
|
18
|
+
const [, updateKanban] = useObject(object);
|
|
19
|
+
const currentTypename = view?.query ? getTypenameFromQuery(view.query.ast) : void 0;
|
|
20
|
+
const schema = useSchema(db, currentTypename);
|
|
21
|
+
const projection = useProjectionModel(schema, object, registry);
|
|
22
|
+
const fieldProjections = projection?.getFieldProjections() ?? [];
|
|
23
|
+
const selectFields = useMemo(() => fieldProjections.filter((field) => field.props.format === Format.TypeFormat.SingleSelect).map(({ field }) => ({
|
|
24
|
+
value: field.id,
|
|
25
|
+
label: field.path
|
|
26
|
+
})), [
|
|
27
|
+
fieldProjections
|
|
28
|
+
]);
|
|
29
|
+
const hideUncategorized = object.arrangement.columns[UNCATEGORIZED_VALUE]?.hidden ?? false;
|
|
30
|
+
const handleValuesChanged = useCallback((values) => {
|
|
31
|
+
if (isView && values.columnFieldId != null) {
|
|
32
|
+
updateView((view2) => {
|
|
33
|
+
view2.projection.pivotFieldId = values.columnFieldId;
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
if (values.hideUncategorized !== void 0) {
|
|
37
|
+
updateKanban((kanban) => {
|
|
38
|
+
const existing = kanban.arrangement.columns[UNCATEGORIZED_VALUE];
|
|
39
|
+
if (existing) {
|
|
40
|
+
existing.hidden = values.hideUncategorized;
|
|
41
|
+
} else {
|
|
42
|
+
kanban.arrangement.columns[UNCATEGORIZED_VALUE] = {
|
|
43
|
+
ids: [],
|
|
44
|
+
hidden: values.hideUncategorized
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}, [
|
|
50
|
+
isView,
|
|
51
|
+
updateView,
|
|
52
|
+
updateKanban
|
|
53
|
+
]);
|
|
54
|
+
const initialValues = useMemo(() => ({
|
|
55
|
+
...isView ? {
|
|
56
|
+
columnFieldId: view?.projection.pivotFieldId
|
|
57
|
+
} : {},
|
|
58
|
+
hideUncategorized
|
|
59
|
+
}), [
|
|
60
|
+
isView,
|
|
61
|
+
view?.projection.pivotFieldId,
|
|
62
|
+
hideUncategorized
|
|
63
|
+
]);
|
|
64
|
+
const fieldMap = useMemo(() => ({
|
|
65
|
+
columnFieldId: (props) => /* @__PURE__ */ React.createElement(SelectField, {
|
|
66
|
+
...props,
|
|
67
|
+
options: selectFields
|
|
68
|
+
})
|
|
69
|
+
}), [
|
|
70
|
+
selectFields
|
|
71
|
+
]);
|
|
72
|
+
const settingsSchema = isView ? KanbanViewSettingsSchema : KanbanSettingsSchema;
|
|
73
|
+
return /* @__PURE__ */ React.createElement(Form.Root, {
|
|
74
|
+
schema: settingsSchema,
|
|
75
|
+
values: initialValues,
|
|
76
|
+
fieldMap,
|
|
77
|
+
onValuesChanged: handleValuesChanged
|
|
78
|
+
}, /* @__PURE__ */ React.createElement(Form.FieldSet, null));
|
|
79
|
+
};
|
|
80
|
+
export {
|
|
81
|
+
KanbanSettings as default
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=KanbanSettings-G6M47NSK.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/containers/KanbanSettings/KanbanSettings.tsx"],
|
|
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 AppSurface } 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, KanbanSettingsSchema, KanbanViewSettingsSchema, UNCATEGORIZED_VALUE } from '#types';\n\nexport type KanbanSettingsProps = AppSurface.ObjectPropertiesProps<Kanban.Kanban>;\n\n/**\n * Settings panel for a Kanban. Renders fields common to every kanban\n * (currently the \"Hide uncategorized column\" toggle); for view-variant\n * kanbans an additional \"Column field\" picker drives the View's pivot\n * field. Items-variant kanbans use a hardcoded `spec.pivotField`, so that\n * field is omitted there.\n */\nexport const KanbanSettings = ({ subject: object }: KanbanSettingsProps) => {\n const registry = useContext(RegistryContext);\n const db = Obj.getDatabase(object);\n const isView = object.spec.kind === 'view';\n const [view, updateView] = useObject(object.spec.kind === 'view' ? object.spec.view : undefined);\n const [, updateKanban] = useObject(object);\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 hideUncategorized = object.arrangement.columns[UNCATEGORIZED_VALUE]?.hidden ?? false;\n\n const handleValuesChanged = useCallback(\n (values: Partial<{ columnFieldId: string; hideUncategorized: boolean }>) => {\n if (isView && values.columnFieldId != null) {\n updateView((view) => {\n view.projection.pivotFieldId = values.columnFieldId!;\n });\n }\n if (values.hideUncategorized !== undefined) {\n updateKanban((kanban) => {\n const existing = kanban.arrangement.columns[UNCATEGORIZED_VALUE];\n if (existing) {\n existing.hidden = values.hideUncategorized;\n } else {\n kanban.arrangement.columns[UNCATEGORIZED_VALUE] = {\n ids: [],\n hidden: values.hideUncategorized,\n };\n }\n });\n }\n },\n [isView, updateView, updateKanban],\n );\n\n const initialValues = useMemo(\n () => ({\n ...(isView ? { columnFieldId: view?.projection.pivotFieldId } : {}),\n hideUncategorized,\n }),\n [isView, view?.projection.pivotFieldId, hideUncategorized],\n );\n\n const fieldMap: FormFieldMap = useMemo(\n () => ({ columnFieldId: (props) => <SelectField {...props} options={selectFields} /> }),\n [selectFields],\n );\n\n // Schema is picked by `kanban.spec.kind` — they have different shapes,\n // so cast for `Form.Root`'s single-schema prop.\n const settingsSchema = (isView ? KanbanViewSettingsSchema : KanbanSettingsSchema) as any;\n\n return (\n <Form.Root schema={settingsSchema} values={initialValues} fieldMap={fieldMap} onValuesChanged={handleValuesChanged}>\n <Form.FieldSet />\n </Form.Root>\n );\n};\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;AAErC,SAASC,0BAA0B;AACnC,SAAsBC,sBAAsBC,0BAA0BC,2BAA2B;AAW1F,IAAMC,iBAAiB,CAAC,EAAEC,SAASC,OAAM,MAAuB;AACrE,QAAMC,WAAWhB,WAAWH,eAAAA;AAC5B,QAAMoB,KAAKf,IAAIgB,YAAYH,MAAAA;AAC3B,QAAMI,SAASJ,OAAOK,KAAKC,SAAS;AACpC,QAAM,CAACC,MAAMC,UAAAA,IAAcnB,UAAUW,OAAOK,KAAKC,SAAS,SAASN,OAAOK,KAAKE,OAAOE,MAAAA;AACtF,QAAM,CAAA,EAAGC,YAAAA,IAAgBrB,UAAUW,MAAAA;AACnC,QAAMW,kBAAkBJ,MAAMK,QAAQnB,qBAAqBc,KAAKK,MAAMC,GAAG,IAAIJ;AAC7E,QAAMK,SAASxB,UAAUY,IAAIS,eAAAA;AAC7B,QAAMI,aAAarB,mBAAmBoB,QAAQd,QAAQC,QAAAA;AAEtD,QAAMe,mBAAmBD,YAAYE,oBAAAA,KAAyB,CAAA;AAC9D,QAAMC,eAAehC,QACnB,MACE8B,iBACGG,OAAO,CAACC,UAAUA,MAAMC,MAAMC,WAAWlC,OAAOmC,WAAWC,YAAY,EACvEC,IAAI,CAAC,EAAEL,MAAK,OAAQ;IAAEM,OAAON,MAAMO;IAAIC,OAAOR,MAAMS;EAAK,EAAA,GAC9D;IAACb;GAAiB;AAGpB,QAAMc,oBAAoB9B,OAAO+B,YAAYC,QAAQnC,mBAAAA,GAAsBoC,UAAU;AAErF,QAAMC,sBAAsBlD,YAC1B,CAACmD,WAAAA;AACC,QAAI/B,UAAU+B,OAAOC,iBAAiB,MAAM;AAC1C5B,iBAAW,CAACD,UAAAA;AACVA,QAAAA,MAAKQ,WAAWsB,eAAeF,OAAOC;MACxC,CAAA;IACF;AACA,QAAID,OAAOL,sBAAsBrB,QAAW;AAC1CC,mBAAa,CAAC4B,WAAAA;AACZ,cAAMC,WAAWD,OAAOP,YAAYC,QAAQnC,mBAAAA;AAC5C,YAAI0C,UAAU;AACZA,mBAASN,SAASE,OAAOL;QAC3B,OAAO;AACLQ,iBAAOP,YAAYC,QAAQnC,mBAAAA,IAAuB;YAChD2C,KAAK,CAAA;YACLP,QAAQE,OAAOL;UACjB;QACF;MACF,CAAA;IACF;EACF,GACA;IAAC1B;IAAQI;IAAYE;GAAa;AAGpC,QAAM+B,gBAAgBvD,QACpB,OAAO;IACL,GAAIkB,SAAS;MAAEgC,eAAe7B,MAAMQ,WAAWsB;IAAa,IAAI,CAAC;IACjEP;EACF,IACA;IAAC1B;IAAQG,MAAMQ,WAAWsB;IAAcP;GAAkB;AAG5D,QAAMY,WAAyBxD,QAC7B,OAAO;IAAEkD,eAAe,CAACf,UAAU,sBAAA,cAAC7B,aAAAA;MAAa,GAAG6B;MAAOsB,SAASzB;;EAAiB,IACrF;IAACA;GAAa;AAKhB,QAAM0B,iBAAkBxC,SAASR,2BAA2BD;AAE5D,SACE,sBAAA,cAACJ,KAAKsD,MAAI;IAAC/B,QAAQ8B;IAAgBT,QAAQM;IAAeC;IAAoBI,iBAAiBZ;KAC7F,sBAAA,cAAC3C,KAAKwD,UAAQ,IAAA,CAAA;AAGpB;",
|
|
6
|
+
"names": ["RegistryContext", "React", "useCallback", "useContext", "useMemo", "Obj", "Format", "useObject", "useSchema", "Form", "SelectField", "getTypenameFromQuery", "useProjectionModel", "KanbanSettingsSchema", "KanbanViewSettingsSchema", "UNCATEGORIZED_VALUE", "KanbanSettings", "subject", "object", "registry", "db", "getDatabase", "isView", "spec", "kind", "view", "updateView", "undefined", "updateKanban", "currentTypename", "query", "ast", "schema", "projection", "fieldProjections", "getFieldProjections", "selectFields", "filter", "field", "props", "format", "TypeFormat", "SingleSelect", "map", "value", "id", "label", "path", "hideUncategorized", "arrangement", "columns", "hidden", "handleValuesChanged", "values", "columnFieldId", "pivotFieldId", "kanban", "existing", "ids", "initialValues", "fieldMap", "options", "settingsSchema", "Root", "onValuesChanged", "FieldSet"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
+
|
|
3
|
+
// src/capabilities/blueprint-definition.ts
|
|
4
|
+
import * as Effect from "effect/Effect";
|
|
5
|
+
import { Capability } from "@dxos/app-framework";
|
|
6
|
+
import { AppCapabilities } from "@dxos/app-toolkit";
|
|
7
|
+
import { KanbanBlueprint } from "#blueprints";
|
|
8
|
+
var blueprintDefinition = Capability.makeModule(() => Effect.succeed([
|
|
9
|
+
Capability.contributes(AppCapabilities.BlueprintDefinition, KanbanBlueprint)
|
|
10
|
+
]));
|
|
11
|
+
var blueprint_definition_default = blueprintDefinition;
|
|
12
|
+
export {
|
|
13
|
+
blueprint_definition_default as default
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=blueprint-definition-FHVIEKTQ.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/capabilities/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// eslint-disable-next-line unused-imports/no-unused-imports\nimport type { Blueprint } from '@dxos/compute';\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,SAASC,uBAAuB;AAEhC,IAAMC,sBAAsBH,WAAWI,WAGrC,MAAaC,eAAQ;EAACL,WAAWM,YAAYL,gBAAgBM,qBAAqBL,eAAAA;CAAiB,CAAA;AAErG,IAAA,+BAAeC;",
|
|
6
|
+
"names": ["Effect", "Capability", "AppCapabilities", "KanbanBlueprint", "blueprintDefinition", "makeModule", "succeed", "contributes", "BlueprintDefinition"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import "../chunk-J5LGTIGS.mjs";
|
|
2
|
+
|
|
3
|
+
// src/capabilities/index.ts
|
|
4
|
+
import { Capability } from "@dxos/app-framework";
|
|
5
|
+
var BlueprintDefinition = Capability.lazy("BlueprintDefinition", () => import("../blueprint-definition-FHVIEKTQ.mjs"));
|
|
6
|
+
var CreateObject = Capability.lazy("CreateObject", () => import("../create-object-DKBSI46K.mjs"));
|
|
7
|
+
var Migrations = Capability.lazy("Migrations", () => import("../migrations-IWBT35UT.mjs"));
|
|
8
|
+
var OperationHandler = Capability.lazy("OperationHandler", () => import("../operation-handler-B7IW6MXU.mjs"));
|
|
9
|
+
var ReactSurface = Capability.lazy("ReactSurface", () => import("../react-surface-QROEHBRW.mjs"));
|
|
10
|
+
var UndoMappings = Capability.lazy("UndoMappings", () => import("../undo-mappings-6CHW6BOF.mjs"));
|
|
11
|
+
export {
|
|
12
|
+
BlueprintDefinition,
|
|
13
|
+
CreateObject,
|
|
14
|
+
Migrations,
|
|
15
|
+
OperationHandler,
|
|
16
|
+
ReactSurface,
|
|
17
|
+
UndoMappings
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/capabilities/index.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n// eslint-disable-next-line unused-imports/no-unused-imports\nimport type { Blueprint, OperationHandlerSet } from '@dxos/compute';\n\nexport const BlueprintDefinition = Capability.lazy('BlueprintDefinition', () => import('./blueprint-definition'));\nexport const CreateObject = Capability.lazy('CreateObject', () => import('./create-object'));\nexport const Migrations = Capability.lazy('Migrations', () => import('./migrations'));\nexport const OperationHandler = Capability.lazy<OperationHandlerSet.OperationHandlerSet>(\n 'OperationHandler',\n () => import('./operation-handler'),\n);\nexport const ReactSurface = Capability.lazy('ReactSurface', () => import('./react-surface'));\nexport const UndoMappings = Capability.lazy('UndoMappings', () => import('./undo-mappings'));\n"],
|
|
5
|
+
"mappings": ";;;AAIA,SAASA,kBAAkB;AAIpB,IAAMC,sBAAsBD,WAAWE,KAAK,uBAAuB,MAAM,OAAO,sCAAA,CAAA;AAChF,IAAMC,eAAeH,WAAWE,KAAK,gBAAgB,MAAM,OAAO,+BAAA,CAAA;AAClE,IAAME,aAAaJ,WAAWE,KAAK,cAAc,MAAM,OAAO,4BAAA,CAAA;AAC9D,IAAMG,mBAAmBL,WAAWE,KACzC,oBACA,MAAM,OAAO,mCAAA,CAAA;AAER,IAAMI,eAAeN,WAAWE,KAAK,gBAAgB,MAAM,OAAO,+BAAA,CAAA;AAClE,IAAMK,eAAeP,WAAWE,KAAK,gBAAgB,MAAM,OAAO,+BAAA,CAAA;",
|
|
6
|
+
"names": ["Capability", "BlueprintDefinition", "lazy", "CreateObject", "Migrations", "OperationHandler", "ReactSurface", "UndoMappings"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// src/operations/index.ts
|
|
2
|
+
import { OperationHandlerSet } from "@dxos/compute";
|
|
3
|
+
var KanbanOperationHandlerSet = OperationHandlerSet.lazy(() => import("./delete-card-356CBACE.mjs"), () => import("./delete-card-field-IRCZL2BR.mjs"), () => import("./restore-card-P25Y4YSE.mjs"), () => import("./restore-card-field-NHR3R4XI.mjs"));
|
|
4
|
+
|
|
5
|
+
export {
|
|
6
|
+
KanbanOperationHandlerSet
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=chunk-6FPBLOS3.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/operations/index.ts"],
|
|
4
|
+
"sourcesContent": ["// Copyright 2025 DXOS.org\n\nimport { OperationHandlerSet } from '@dxos/compute';\n\nexport const KanbanOperationHandlerSet = OperationHandlerSet.lazy(\n () => import('./delete-card'),\n () => import('./delete-card-field'),\n () => import('./restore-card'),\n () => import('./restore-card-field'),\n);\n"],
|
|
5
|
+
"mappings": ";AAEA,SAASA,2BAA2B;AAE7B,IAAMC,4BAA4BD,oBAAoBE,KAC3D,MAAM,OAAO,4BAAA,GACb,MAAM,OAAO,kCAAA,GACb,MAAM,OAAO,6BAAA,GACb,MAAM,OAAO,mCAAA,CAAA;",
|
|
6
|
+
"names": ["OperationHandlerSet", "KanbanOperationHandlerSet", "lazy"]
|
|
7
|
+
}
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
-
|
|
3
|
-
// src/index.ts
|
|
4
|
-
import { Plugin } from "@dxos/app-framework";
|
|
5
|
-
|
|
6
1
|
// src/meta.ts
|
|
7
2
|
import { trim } from "@dxos/util";
|
|
8
3
|
var meta = {
|
|
@@ -20,10 +15,7 @@ var meta = {
|
|
|
20
15
|
]
|
|
21
16
|
};
|
|
22
17
|
|
|
23
|
-
// src/index.ts
|
|
24
|
-
var KanbanPlugin = Plugin.lazy(meta, () => import("#plugin"));
|
|
25
18
|
export {
|
|
26
|
-
KanbanPlugin,
|
|
27
19
|
meta
|
|
28
20
|
};
|
|
29
|
-
//# sourceMappingURL=
|
|
21
|
+
//# sourceMappingURL=chunk-KDPM77BD.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/meta.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { trim } from '@dxos/util';\n\nexport const meta: Plugin.Meta = {\n id: 'org.dxos.plugin.kanban',\n name: 'Kanban',\n description: trim`\n Visual project management using customizable kanban boards to track workflow progress.\n Organize table data into columns, drag and drop items between stages, and trigger automations based on status changes.\n `,\n icon: 'ph--kanban--regular',\n iconHue: 'green',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-kanban',\n screenshots: ['https://dxos.network/plugin-details-kanban-dark.png'],\n};\n"],
|
|
5
|
+
"mappings": ";AAKA,SAASA,YAAY;AAEd,IAAMC,OAAoB;EAC/BC,IAAI;EACJC,MAAM;EACNC,aAAaJ;;;;EAIbK,MAAM;EACNC,SAAS;EACTC,QAAQ;EACRC,aAAa;IAAC;;AAChB;",
|
|
6
|
+
"names": ["trim", "meta", "id", "name", "description", "icon", "iconHue", "source", "screenshots"]
|
|
7
|
+
}
|