@svar-ui/vue-kanban 2.6.0
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/dist/assets/avatar/092352563.webp +0 -0
- package/dist/assets/avatar/909471384.webp +0 -0
- package/dist/assets/cover-njov.webp +0 -0
- package/dist/assets/cover-nkeo.webp +0 -0
- package/dist/index.cjs +1 -0
- package/dist/index.css +1 -0
- package/dist/index.es.js +1684 -0
- package/dist/vue-favicon.svg +9 -0
- package/dist-full/index.css +1 -0
- package/license.txt +9 -0
- package/package.json +92 -0
- package/readme.md +90 -0
- package/types/index.d.ts +163 -0
package/dist/index.es.js
ADDED
|
@@ -0,0 +1,1684 @@
|
|
|
1
|
+
import { computed as C, openBlock as r, createElementBlock as d, normalizeStyle as Y, Fragment as N, renderList as re, normalizeClass as U, createTextVNode as te, toDisplayString as F, createCommentVNode as $, inject as W, unref as o, createElementVNode as R, createBlock as K, resolveDynamicComponent as pe, ref as X, watchEffect as J, onUnmounted as Pe, withDirectives as ke, createVNode as ae, onWatcherCleanup as ve, useSlots as Ke, provide as ce, renderSlot as Me, mergeProps as Re, withCtx as he, reactive as je, useAttrs as He } from "vue";
|
|
2
|
+
import { subscribe as De, writable as Ge, subscribeLater as Te } from "@svar-ui/lib-vue";
|
|
3
|
+
import { EventBusRouter as Ye } from "@svar-ui/lib-state";
|
|
4
|
+
import { getMenuOptions as Xe, KanbanStore as qe, getToolbarItems as Ue } from "@svar-ui/kanban-store";
|
|
5
|
+
import { getMenuOptions as Nn, getToolbarItems as Vn } from "@svar-ui/kanban-store";
|
|
6
|
+
import { setID as fe, locale as Ee, getID as ne, locate as Ne, delegateClick as Je, hotkeys as Qe, locateID as Ze } from "@svar-ui/lib-dom";
|
|
7
|
+
import { Popup as _e, Locale as et, RichSelect as tt, MultiCombo as nt, DatePicker as at, Slider as rt, Willow as Oe, WillowDark as ze } from "@svar-ui/vue-core";
|
|
8
|
+
import { ContextMenu as ot } from "@svar-ui/vue-menu";
|
|
9
|
+
import { en as ge } from "@svar-ui/kanban-locales";
|
|
10
|
+
import { en as ye } from "@svar-ui/core-locales";
|
|
11
|
+
import { registerEditorItem as me, Editor as lt } from "@svar-ui/vue-editor";
|
|
12
|
+
import { registerEditorItem as Wn } from "@svar-ui/vue-editor";
|
|
13
|
+
import { Toolbar as ct } from "@svar-ui/vue-toolbar";
|
|
14
|
+
import { RestDataProvider as jn } from "@svar-ui/kanban-provider";
|
|
15
|
+
const st = "2.6.0", it = {
|
|
16
|
+
version: st
|
|
17
|
+
}, Q = (t, e) => {
|
|
18
|
+
const n = t.__vccOpts || t;
|
|
19
|
+
for (const [s, a] of e)
|
|
20
|
+
n[s] = a;
|
|
21
|
+
return n;
|
|
22
|
+
}, dt = ["title", "aria-label"], ut = ["src"], ft = {
|
|
23
|
+
key: 0,
|
|
24
|
+
class: "wx-avatar wx-more"
|
|
25
|
+
}, mt = /* @__PURE__ */ Object.assign({ name: "KanbanAvatar" }, {
|
|
26
|
+
__name: "Avatar",
|
|
27
|
+
props: {
|
|
28
|
+
value: { default: null },
|
|
29
|
+
size: { default: 24 },
|
|
30
|
+
limit: {}
|
|
31
|
+
},
|
|
32
|
+
setup(t) {
|
|
33
|
+
const e = t, n = C(
|
|
34
|
+
() => Array.isArray(e.value) ? e.value : e.value ? [e.value] : []
|
|
35
|
+
), s = C(
|
|
36
|
+
() => typeof e.limit == "number" && Number.isFinite(e.limit) ? Math.max(0, Math.floor(e.limit)) : n.value.length
|
|
37
|
+
), a = C(() => n.value.slice(0, s.value)), p = C(
|
|
38
|
+
() => Math.max(0, n.value.length - a.value.length)
|
|
39
|
+
), S = C(
|
|
40
|
+
() => Math.max(10, Math.round(e.size * 0.42))
|
|
41
|
+
), c = C(
|
|
42
|
+
() => `--wx-avatar-size:${e.size}px;--wx-avatar-font-size:${S.value}px;`
|
|
43
|
+
);
|
|
44
|
+
function l(x) {
|
|
45
|
+
return x.label ?? x.name ?? "";
|
|
46
|
+
}
|
|
47
|
+
function b(x) {
|
|
48
|
+
const m = l(x).trim();
|
|
49
|
+
if (!m) return "";
|
|
50
|
+
const u = m.split(/\s+/);
|
|
51
|
+
return (u[0][0] + (u[1]?.[0] ?? "")).toUpperCase().slice(0, 2);
|
|
52
|
+
}
|
|
53
|
+
function M(x) {
|
|
54
|
+
return x.img ?? x.avatar;
|
|
55
|
+
}
|
|
56
|
+
return (x, m) => n.value.length > 0 ? (r(), d("div", {
|
|
57
|
+
key: 0,
|
|
58
|
+
class: "wx-avatars",
|
|
59
|
+
style: Y(c.value)
|
|
60
|
+
}, [
|
|
61
|
+
(r(!0), d(N, null, re(a.value, (u) => (r(), d("span", {
|
|
62
|
+
key: u.id,
|
|
63
|
+
class: U("wx-avatar " + (u.css ?? "")),
|
|
64
|
+
title: l(u) || void 0,
|
|
65
|
+
"aria-label": l(u) || void 0
|
|
66
|
+
}, [
|
|
67
|
+
M(u) ? (r(), d("img", {
|
|
68
|
+
key: 0,
|
|
69
|
+
class: "wx-image",
|
|
70
|
+
src: M(u),
|
|
71
|
+
alt: "",
|
|
72
|
+
loading: "lazy"
|
|
73
|
+
}, null, 8, ut)) : (r(), d(N, { key: 1 }, [
|
|
74
|
+
te(F(b(u)), 1)
|
|
75
|
+
], 64))
|
|
76
|
+
], 10, dt))), 128)),
|
|
77
|
+
p.value > 0 ? (r(), d("span", ft, "+" + F(p.value), 1)) : $("", !0)
|
|
78
|
+
], 4)) : $("", !0);
|
|
79
|
+
}
|
|
80
|
+
}), vt = /* @__PURE__ */ Q(mt, [["__scopeId", "data-v-2884c896"]]);
|
|
81
|
+
function pt() {
|
|
82
|
+
return {
|
|
83
|
+
priority: !0,
|
|
84
|
+
progress: !0,
|
|
85
|
+
description: !0,
|
|
86
|
+
deadline: !0,
|
|
87
|
+
tags: !0
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
function Ve() {
|
|
91
|
+
return [
|
|
92
|
+
{ id: 1, label: "Low", css: "wx-card-priority-low" },
|
|
93
|
+
{ id: 2, label: "Medium", css: "wx-card-priority-medium" },
|
|
94
|
+
{ id: 3, label: "High", css: "wx-card-priority-high" }
|
|
95
|
+
];
|
|
96
|
+
}
|
|
97
|
+
function we(t) {
|
|
98
|
+
return typeof t == "object" && t !== null ? t : void 0;
|
|
99
|
+
}
|
|
100
|
+
function ht(t) {
|
|
101
|
+
const e = t ?? {
|
|
102
|
+
description: !0,
|
|
103
|
+
priority: !0,
|
|
104
|
+
progress: !0,
|
|
105
|
+
deadline: !0,
|
|
106
|
+
tags: !1,
|
|
107
|
+
users: !1
|
|
108
|
+
}, n = [
|
|
109
|
+
{ comp: "text", key: "label", label: "Title", required: !0 }
|
|
110
|
+
];
|
|
111
|
+
if (e.description && n.push({
|
|
112
|
+
comp: "textarea",
|
|
113
|
+
key: "description",
|
|
114
|
+
label: "Description"
|
|
115
|
+
}), e.priority) {
|
|
116
|
+
const p = we(e.priority)?.data;
|
|
117
|
+
n.push({
|
|
118
|
+
comp: "richselect",
|
|
119
|
+
key: "priority",
|
|
120
|
+
label: "Priority",
|
|
121
|
+
options: p ?? Ve()
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
e.progress && n.push({
|
|
125
|
+
comp: "slider",
|
|
126
|
+
key: "progress",
|
|
127
|
+
label: "Progress",
|
|
128
|
+
min: 0,
|
|
129
|
+
max: 1,
|
|
130
|
+
step: 0.1
|
|
131
|
+
}), e.deadline && n.push({
|
|
132
|
+
comp: "datepicker",
|
|
133
|
+
key: "deadline",
|
|
134
|
+
label: "Deadline",
|
|
135
|
+
clear: !0
|
|
136
|
+
});
|
|
137
|
+
const s = we(e.tags)?.data;
|
|
138
|
+
s && n.push({
|
|
139
|
+
comp: "multicombo",
|
|
140
|
+
key: "tags",
|
|
141
|
+
label: "Tags",
|
|
142
|
+
options: s
|
|
143
|
+
});
|
|
144
|
+
const a = we(e.users)?.data;
|
|
145
|
+
return a && n.push({
|
|
146
|
+
comp: "multicombo",
|
|
147
|
+
key: "users",
|
|
148
|
+
label: "Users",
|
|
149
|
+
options: a
|
|
150
|
+
}), n;
|
|
151
|
+
}
|
|
152
|
+
const gt = {
|
|
153
|
+
key: 1,
|
|
154
|
+
class: "wx-header"
|
|
155
|
+
}, yt = {
|
|
156
|
+
key: 1,
|
|
157
|
+
class: "wx-deadline"
|
|
158
|
+
}, bt = ["aria-label"], xt = { class: "wx-body" }, Ct = { class: "wx-title-row" }, wt = {
|
|
159
|
+
key: 0,
|
|
160
|
+
class: "wx-title"
|
|
161
|
+
}, kt = ["aria-label"], St = {
|
|
162
|
+
key: 0,
|
|
163
|
+
class: "wx-description"
|
|
164
|
+
}, Mt = {
|
|
165
|
+
key: 1,
|
|
166
|
+
class: "wx-tags"
|
|
167
|
+
}, Dt = {
|
|
168
|
+
key: 2,
|
|
169
|
+
class: "wx-progress-row"
|
|
170
|
+
}, Et = ["aria-label"], Lt = {
|
|
171
|
+
key: 0,
|
|
172
|
+
class: "wx-progress-label"
|
|
173
|
+
}, $t = {
|
|
174
|
+
key: 2,
|
|
175
|
+
class: "wx-footer"
|
|
176
|
+
}, Bt = { class: "wx-counters" }, Ot = ["aria-label"], zt = ["aria-label"], At = /* @__PURE__ */ Object.assign({ name: "KanbanCard" }, {
|
|
177
|
+
__name: "Card",
|
|
178
|
+
props: {
|
|
179
|
+
card: {},
|
|
180
|
+
cardShape: {}
|
|
181
|
+
},
|
|
182
|
+
setup(t) {
|
|
183
|
+
const e = t, n = W("wx-i18n").getGroup("kanban");
|
|
184
|
+
function s(f) {
|
|
185
|
+
return typeof f == "number" ? f : Array.isArray(f) ? f.length : 0;
|
|
186
|
+
}
|
|
187
|
+
function a(f) {
|
|
188
|
+
return typeof f == "object" && f !== null ? f : void 0;
|
|
189
|
+
}
|
|
190
|
+
function p(f) {
|
|
191
|
+
if (typeof f == "string" || typeof f == "number") return f;
|
|
192
|
+
const O = f?.id;
|
|
193
|
+
return typeof O == "string" || typeof O == "number" ? O : null;
|
|
194
|
+
}
|
|
195
|
+
function S(f) {
|
|
196
|
+
const O = p(f);
|
|
197
|
+
return O != null ? String(O) : String(f?.label ?? f?.name ?? "");
|
|
198
|
+
}
|
|
199
|
+
function c(f, O) {
|
|
200
|
+
return f?.find((I) => I.id === O);
|
|
201
|
+
}
|
|
202
|
+
function l(f, O) {
|
|
203
|
+
const I = p(f);
|
|
204
|
+
if (I == null) return null;
|
|
205
|
+
const Z = c(O, I);
|
|
206
|
+
return Z || {
|
|
207
|
+
id: I,
|
|
208
|
+
label: S(f)
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
function b(f, O, I) {
|
|
212
|
+
if (!Array.isArray(f)) return [];
|
|
213
|
+
const Z = f.map((H) => l(H, O)).filter((H) => H !== null);
|
|
214
|
+
return typeof I == "number" && Number.isFinite(I) ? Z.slice(0, Math.max(0, I)) : Z;
|
|
215
|
+
}
|
|
216
|
+
function M(f) {
|
|
217
|
+
if (f instanceof Date)
|
|
218
|
+
return Number.isNaN(f.getTime()) ? null : f;
|
|
219
|
+
if (typeof f == "string" || typeof f == "number") {
|
|
220
|
+
const O = new Date(f);
|
|
221
|
+
return Number.isNaN(O.getTime()) ? null : O;
|
|
222
|
+
}
|
|
223
|
+
return null;
|
|
224
|
+
}
|
|
225
|
+
function x(f) {
|
|
226
|
+
return f < 10 ? "0" + f : String(f);
|
|
227
|
+
}
|
|
228
|
+
function m(f, O) {
|
|
229
|
+
const I = M(f);
|
|
230
|
+
return I ? O ? O.replace(/YYYY/g, String(I.getFullYear())).replace(/MM/g, x(I.getMonth() + 1)).replace(/DD/g, x(I.getDate())).replace(/HH/g, x(I.getHours())).replace(/mm/g, x(I.getMinutes())) : I.toLocaleDateString() : null;
|
|
231
|
+
}
|
|
232
|
+
const u = C(
|
|
233
|
+
() => a(e.cardShape.priority)
|
|
234
|
+
), z = C(() => a(e.cardShape.tags)), k = C(() => a(e.cardShape.users)), h = C(
|
|
235
|
+
() => a(e.cardShape.deadline)
|
|
236
|
+
), D = C(
|
|
237
|
+
() => a(e.cardShape.progress)
|
|
238
|
+
), P = C(
|
|
239
|
+
() => Math.round(Math.max(0, Math.min(1, e.card.progress ?? 0)) * 100)
|
|
240
|
+
), w = C(
|
|
241
|
+
() => e.cardShape.priority ? l(
|
|
242
|
+
e.card.priority,
|
|
243
|
+
u.value?.data ?? Ve()
|
|
244
|
+
) : null
|
|
245
|
+
), y = C(
|
|
246
|
+
() => e.cardShape.tags ? b(e.card.tags, z.value?.data, z.value?.max) : []
|
|
247
|
+
), A = C(
|
|
248
|
+
() => e.cardShape.users ? b(
|
|
249
|
+
e.card.users,
|
|
250
|
+
k.value?.data,
|
|
251
|
+
k.value?.max
|
|
252
|
+
) : []
|
|
253
|
+
), V = C(
|
|
254
|
+
() => A.value.map((f) => ({ id: f.id, name: f.label, avatar: f.img }))
|
|
255
|
+
), j = C(
|
|
256
|
+
() => e.cardShape.deadline ? m(e.card.deadline, h.value?.format) : null
|
|
257
|
+
);
|
|
258
|
+
return (f, O) => (r(), d(N, null, [
|
|
259
|
+
t.card.cover && t.cardShape.cover ? (r(), d("div", {
|
|
260
|
+
key: 0,
|
|
261
|
+
class: "wx-cover",
|
|
262
|
+
style: Y(`background-image: url(${t.card.cover});`)
|
|
263
|
+
}, null, 4)) : $("", !0),
|
|
264
|
+
w.value || j.value ? (r(), d("div", gt, [
|
|
265
|
+
w.value ? (r(), d("span", {
|
|
266
|
+
key: 0,
|
|
267
|
+
class: U("wx-priority " + (w.value.css ?? ""))
|
|
268
|
+
}, F(o(n)(w.value.label)), 3)) : $("", !0),
|
|
269
|
+
j.value ? (r(), d("span", yt, F(j.value), 1)) : $("", !0),
|
|
270
|
+
t.cardShape.menu ? (r(), d("button", {
|
|
271
|
+
key: 2,
|
|
272
|
+
type: "button",
|
|
273
|
+
class: "wx-menu",
|
|
274
|
+
"data-action": "menu",
|
|
275
|
+
"aria-label": o(n)("Card menu")
|
|
276
|
+
}, [...O[0] || (O[0] = [
|
|
277
|
+
R("i", { class: "wx-icon wxi-dots-h" }, null, -1)
|
|
278
|
+
])], 8, bt)) : $("", !0)
|
|
279
|
+
])) : $("", !0),
|
|
280
|
+
R("div", xt, [
|
|
281
|
+
R("div", Ct, [
|
|
282
|
+
t.card.label ? (r(), d("div", wt, [
|
|
283
|
+
te(F(t.card.label) + " ", 1),
|
|
284
|
+
t.cardShape.menu && !w.value && !j.value ? (r(), d("button", {
|
|
285
|
+
key: 0,
|
|
286
|
+
type: "button",
|
|
287
|
+
class: "wx-menu",
|
|
288
|
+
"data-action": "menu",
|
|
289
|
+
"aria-label": o(n)("Card menu")
|
|
290
|
+
}, [...O[1] || (O[1] = [
|
|
291
|
+
R("i", { class: "wx-icon wxi-dots-h" }, null, -1)
|
|
292
|
+
])], 8, kt)) : $("", !0)
|
|
293
|
+
])) : $("", !0)
|
|
294
|
+
]),
|
|
295
|
+
t.card.description && t.cardShape.description ? (r(), d("p", St, F(t.card.description), 1)) : $("", !0),
|
|
296
|
+
y.value.length > 0 ? (r(), d("div", Mt, [
|
|
297
|
+
(r(!0), d(N, null, re(y.value, (I) => (r(), d("span", {
|
|
298
|
+
key: I.id,
|
|
299
|
+
class: U("wx-tag " + (I.css ?? ""))
|
|
300
|
+
}, F(I.label), 3))), 128))
|
|
301
|
+
])) : $("", !0),
|
|
302
|
+
t.card.progress > 0 && t.cardShape.progress ? (r(), d("div", Dt, [
|
|
303
|
+
R("div", {
|
|
304
|
+
class: "wx-progress",
|
|
305
|
+
"aria-label": o(n)("Progress")
|
|
306
|
+
}, [
|
|
307
|
+
R("div", {
|
|
308
|
+
class: "wx-progress-fill",
|
|
309
|
+
style: Y(`width: ${P.value}%;`)
|
|
310
|
+
}, null, 4)
|
|
311
|
+
], 8, Et),
|
|
312
|
+
D.value?.showLabel ? (r(), d("span", Lt, F(P.value) + "%", 1)) : $("", !0)
|
|
313
|
+
])) : $("", !0)
|
|
314
|
+
]),
|
|
315
|
+
A.value.length > 0 || s(t.card.attachments) > 0 && t.cardShape.attachments || s(t.card.comments) > 0 && t.cardShape.comments ? (r(), d("div", $t, [
|
|
316
|
+
V.value.length > 0 ? (r(), K(vt, {
|
|
317
|
+
key: 0,
|
|
318
|
+
value: V.value,
|
|
319
|
+
size: 24
|
|
320
|
+
}, null, 8, ["value"])) : $("", !0),
|
|
321
|
+
R("div", Bt, [
|
|
322
|
+
s(t.card.attachments) > 0 && t.cardShape.attachments ? (r(), d("span", {
|
|
323
|
+
key: 0,
|
|
324
|
+
class: "wx-counter",
|
|
325
|
+
"aria-label": o(n)("Attachments")
|
|
326
|
+
}, [
|
|
327
|
+
O[2] || (O[2] = R("i", { class: "wx-icon wxi-paperclip" }, null, -1)),
|
|
328
|
+
te(" " + F(s(t.card.attachments)), 1)
|
|
329
|
+
], 8, Ot)) : $("", !0),
|
|
330
|
+
s(t.card.comments) > 0 && t.cardShape.comments ? (r(), d("span", {
|
|
331
|
+
key: 1,
|
|
332
|
+
class: "wx-counter",
|
|
333
|
+
"aria-label": o(n)("Comments")
|
|
334
|
+
}, [
|
|
335
|
+
O[3] || (O[3] = R("i", { class: "wx-icon wxi-message" }, null, -1)),
|
|
336
|
+
te(" " + F(s(t.card.comments)), 1)
|
|
337
|
+
], 8, zt)) : $("", !0)
|
|
338
|
+
])
|
|
339
|
+
])) : $("", !0)
|
|
340
|
+
], 64));
|
|
341
|
+
}
|
|
342
|
+
}), It = /* @__PURE__ */ Q(At, [["__scopeId", "data-v-52077978"]]), Pt = ["data-id", "aria-label"], Rt = {
|
|
343
|
+
__name: "CardWrapper",
|
|
344
|
+
props: {
|
|
345
|
+
cardContent: {},
|
|
346
|
+
card: {},
|
|
347
|
+
cardShape: {},
|
|
348
|
+
extraCss: { default: "" }
|
|
349
|
+
},
|
|
350
|
+
setup(t) {
|
|
351
|
+
const n = W("wx-i18n").getGroup("kanban");
|
|
352
|
+
return (s, a) => (r(), d("article", {
|
|
353
|
+
class: U("wx-card " + (t.card.css ?? "") + " " + t.extraCss),
|
|
354
|
+
"data-id": t.card.id == null ? void 0 : o(fe)(t.card.id),
|
|
355
|
+
role: "button",
|
|
356
|
+
tabindex: "0",
|
|
357
|
+
"aria-label": t.card.label ?? `${o(n)("Card")} ${t.card.id}`
|
|
358
|
+
}, [
|
|
359
|
+
typeof t.cardContent == "object" ? (r(), K(pe(t.cardContent), {
|
|
360
|
+
key: 0,
|
|
361
|
+
card: t.card,
|
|
362
|
+
cardShape: t.cardShape
|
|
363
|
+
}, null, 8, ["card", "cardShape"])) : (r(), K(It, {
|
|
364
|
+
key: 1,
|
|
365
|
+
card: t.card,
|
|
366
|
+
cardShape: t.cardShape
|
|
367
|
+
}, null, 8, ["card", "cardShape"]))
|
|
368
|
+
], 10, Pt));
|
|
369
|
+
}
|
|
370
|
+
}, Se = /* @__PURE__ */ Q(Rt, [["__scopeId", "data-v-913e56be"]]), Fe = /* @__PURE__ */ Symbol("wx/kanban-scroll-container"), oe = /* @__PURE__ */ Symbol("kanban-api"), be = /* @__PURE__ */ Symbol("wx/kanban-dnd");
|
|
371
|
+
function Ht(t, e) {
|
|
372
|
+
let n = e;
|
|
373
|
+
function s(a) {
|
|
374
|
+
if (n.readonly || a.target !== t) return;
|
|
375
|
+
const S = We({ label: "New card" }, n.columnAccessor, n.column);
|
|
376
|
+
n.store.exec("add-card", { card: S });
|
|
377
|
+
}
|
|
378
|
+
return t.addEventListener("dblclick", s), {
|
|
379
|
+
update(a) {
|
|
380
|
+
n = a;
|
|
381
|
+
},
|
|
382
|
+
destroy() {
|
|
383
|
+
t.removeEventListener("dblclick", s);
|
|
384
|
+
}
|
|
385
|
+
};
|
|
386
|
+
}
|
|
387
|
+
function We(t, e, n) {
|
|
388
|
+
return typeof e == "string" ? { ...t, [e]: n } : e.set(t, n);
|
|
389
|
+
}
|
|
390
|
+
const Tt = ["data-kanban-column-cards", "data-kanban-render-start", "data-kanban-render-end", "data-kanban-card-count", "data-kanban-after-rendered-before-id"], Nt = ["data-kanban-card-id"], Vt = ["data-kanban-card-id"], Ft = {
|
|
391
|
+
__name: "CardList",
|
|
392
|
+
props: {
|
|
393
|
+
column: {},
|
|
394
|
+
readonly: { type: Boolean, default: !1 },
|
|
395
|
+
cardContent: {},
|
|
396
|
+
cardShape: {},
|
|
397
|
+
contentVisible: { type: Boolean },
|
|
398
|
+
virtualizeCards: { type: Boolean },
|
|
399
|
+
estimatedCardHeight: { type: Number },
|
|
400
|
+
cardOverscan: { type: Number },
|
|
401
|
+
fixedColumnWidth: { type: Boolean },
|
|
402
|
+
cardCss: { type: Function }
|
|
403
|
+
},
|
|
404
|
+
setup(t) {
|
|
405
|
+
const e = t;
|
|
406
|
+
function n(g) {
|
|
407
|
+
return e.cardCss ? e.cardCss(g, e.column) ?? "" : "";
|
|
408
|
+
}
|
|
409
|
+
const s = W(oe), a = W(be), p = W(Fe, void 0), S = C(() => s.getState().columnAccessor), c = X(null), l = X({
|
|
410
|
+
start: 0,
|
|
411
|
+
end: -1,
|
|
412
|
+
top: 0,
|
|
413
|
+
bottom: 0,
|
|
414
|
+
total: 0
|
|
415
|
+
}), b = X(8);
|
|
416
|
+
let M = 0, x = !1;
|
|
417
|
+
const m = /* @__PURE__ */ new Map(), u = /* @__PURE__ */ new Map();
|
|
418
|
+
let z;
|
|
419
|
+
const k = C(
|
|
420
|
+
() => a?.active && a.target?.column === e.column.id
|
|
421
|
+
), h = C(
|
|
422
|
+
() => e.virtualizeCards ? l.value.start : 0
|
|
423
|
+
), D = C(
|
|
424
|
+
() => e.virtualizeCards ? l.value.end : e.column.cards.length - 1
|
|
425
|
+
), P = C(
|
|
426
|
+
() => e.contentVisible ? e.column.cards.slice(
|
|
427
|
+
h.value,
|
|
428
|
+
Math.max(h.value, D.value + 1)
|
|
429
|
+
) : []
|
|
430
|
+
), w = C(
|
|
431
|
+
() => l.value.total || f(e.column.cards.length)
|
|
432
|
+
), y = C(
|
|
433
|
+
() => l.value.start > 0 ? Math.max(0, l.value.top - b.value) : 0
|
|
434
|
+
), A = C(
|
|
435
|
+
() => l.value.bottom > 0 ? Math.max(0, l.value.bottom - b.value) : 0
|
|
436
|
+
), V = C(
|
|
437
|
+
() => e.contentVisible && e.virtualizeCards && D.value >= 0 && D.value < e.column.cards.length - 1 ? e.column.cards[D.value + 1]?.id : void 0
|
|
438
|
+
), j = C(
|
|
439
|
+
() => k.value && (a.target?.beforeId == null || a.target?.beforeId === V.value)
|
|
440
|
+
);
|
|
441
|
+
function f(g) {
|
|
442
|
+
if (!g) return 0;
|
|
443
|
+
const E = Math.max(1, e.estimatedCardHeight || 1);
|
|
444
|
+
return g * E + Math.max(0, g - 1) * b.value;
|
|
445
|
+
}
|
|
446
|
+
function O() {
|
|
447
|
+
if (!c.value) return;
|
|
448
|
+
const g = getComputedStyle(c.value), v = g.getPropertyValue("--wx-card-gap").trim() || g.rowGap || g.gap, T = Number.parseFloat(v);
|
|
449
|
+
b.value = Number.isFinite(T) ? T : 8;
|
|
450
|
+
}
|
|
451
|
+
function I(g) {
|
|
452
|
+
return g.id != null ? m.get(g.id) ?? Math.max(1, e.estimatedCardHeight || 1) : Math.max(1, e.estimatedCardHeight || 1);
|
|
453
|
+
}
|
|
454
|
+
function Z() {
|
|
455
|
+
const g = [0];
|
|
456
|
+
let E = 0;
|
|
457
|
+
for (let v = 0; v < e.column.cards.length; v++)
|
|
458
|
+
E += I(e.column.cards[v]), v < e.column.cards.length - 1 && (E += b.value), g.push(E);
|
|
459
|
+
return { offsets: g, total: E };
|
|
460
|
+
}
|
|
461
|
+
function H(g, E) {
|
|
462
|
+
let v = 0, T = g.length;
|
|
463
|
+
for (; v < T; ) {
|
|
464
|
+
const G = Math.floor((v + T) / 2);
|
|
465
|
+
g[G] <= E ? v = G + 1 : T = G;
|
|
466
|
+
}
|
|
467
|
+
return v;
|
|
468
|
+
}
|
|
469
|
+
function xe() {
|
|
470
|
+
if (!c.value) return;
|
|
471
|
+
if (O(), !e.contentVisible || !e.virtualizeCards) {
|
|
472
|
+
l.value = {
|
|
473
|
+
start: 0,
|
|
474
|
+
end: e.contentVisible ? e.column.cards.length - 1 : -1,
|
|
475
|
+
top: 0,
|
|
476
|
+
bottom: 0,
|
|
477
|
+
total: f(e.column.cards.length)
|
|
478
|
+
};
|
|
479
|
+
return;
|
|
480
|
+
}
|
|
481
|
+
const g = e.column.cards.length;
|
|
482
|
+
if (!g) {
|
|
483
|
+
l.value = { start: 0, end: -1, top: 0, bottom: 0, total: 0 };
|
|
484
|
+
return;
|
|
485
|
+
}
|
|
486
|
+
const { offsets: E, total: v } = Z(), T = p?.() ?? null;
|
|
487
|
+
let G = 0, de = 0;
|
|
488
|
+
if (T) {
|
|
489
|
+
const q = T.getBoundingClientRect(), ue = c.value.getBoundingClientRect();
|
|
490
|
+
G = Math.max(0, q.top - ue.top), de = Math.min(
|
|
491
|
+
v,
|
|
492
|
+
q.bottom - ue.top
|
|
493
|
+
);
|
|
494
|
+
} else
|
|
495
|
+
G = c.value.scrollTop, de = G + c.value.clientHeight;
|
|
496
|
+
const i = Math.max(
|
|
497
|
+
0,
|
|
498
|
+
Math.floor(e.cardOverscan || 0)
|
|
499
|
+
);
|
|
500
|
+
let L = Math.max(0, H(E, G) - 1), B = Math.max(L, H(E, de) - 1);
|
|
501
|
+
L = Math.max(0, L - i), B = Math.min(g - 1, B + i), l.value = {
|
|
502
|
+
start: L,
|
|
503
|
+
end: B,
|
|
504
|
+
top: E[L],
|
|
505
|
+
bottom: Math.max(0, v - E[B + 1]),
|
|
506
|
+
total: v
|
|
507
|
+
};
|
|
508
|
+
}
|
|
509
|
+
function ee() {
|
|
510
|
+
M || (M = requestAnimationFrame(() => {
|
|
511
|
+
M = 0, xe();
|
|
512
|
+
}));
|
|
513
|
+
}
|
|
514
|
+
function Ce() {
|
|
515
|
+
const g = new Set(e.column.cards.map((E) => E.id));
|
|
516
|
+
for (const E of m.keys())
|
|
517
|
+
g.has(E) || m.delete(E);
|
|
518
|
+
for (; m.size > 1e4; ) {
|
|
519
|
+
const E = m.keys().next().value;
|
|
520
|
+
if (E === void 0) break;
|
|
521
|
+
m.delete(E);
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
function se() {
|
|
525
|
+
z || typeof ResizeObserver > "u" || (z = new ResizeObserver((g) => {
|
|
526
|
+
let E = !1;
|
|
527
|
+
for (const v of g) {
|
|
528
|
+
const T = u.get(v.target);
|
|
529
|
+
if (T == null) continue;
|
|
530
|
+
const G = Math.ceil(v.target.offsetHeight);
|
|
531
|
+
G > 0 && m.get(T) !== G && (m.delete(T), m.set(T, G), E = !0);
|
|
532
|
+
}
|
|
533
|
+
E && ee();
|
|
534
|
+
}));
|
|
535
|
+
}
|
|
536
|
+
const le = {
|
|
537
|
+
mounted(g, E) {
|
|
538
|
+
const v = E.value;
|
|
539
|
+
v.id != null && (se(), u.set(g, v.id), z?.observe(g));
|
|
540
|
+
},
|
|
541
|
+
updated(g, E) {
|
|
542
|
+
const v = E.value;
|
|
543
|
+
z?.unobserve(g), v.id != null ? (se(), u.set(g, v.id), z?.observe(g)) : u.delete(g);
|
|
544
|
+
},
|
|
545
|
+
unmounted(g) {
|
|
546
|
+
z?.unobserve(g), u.delete(g);
|
|
547
|
+
}
|
|
548
|
+
}, ie = {
|
|
549
|
+
mounted(g, E) {
|
|
550
|
+
const v = Ht(g, E.value);
|
|
551
|
+
g.__dblclickAction = v;
|
|
552
|
+
},
|
|
553
|
+
updated(g, E) {
|
|
554
|
+
g.__dblclickAction?.update(E.value);
|
|
555
|
+
},
|
|
556
|
+
unmounted(g) {
|
|
557
|
+
g.__dblclickAction?.destroy(), delete g.__dblclickAction;
|
|
558
|
+
}
|
|
559
|
+
};
|
|
560
|
+
return J(() => {
|
|
561
|
+
e.virtualizeCards && !x && m.clear(), x = e.virtualizeCards, Ce(), e.column.cards, e.contentVisible, e.estimatedCardHeight, e.cardOverscan, ee();
|
|
562
|
+
}), J((g) => {
|
|
563
|
+
if (!c.value || !e.contentVisible || !e.virtualizeCards)
|
|
564
|
+
return;
|
|
565
|
+
const E = p?.() ?? c.value, v = () => ee();
|
|
566
|
+
E.addEventListener("scroll", v, { passive: !0 }), window.addEventListener("resize", v), ee(), g(() => {
|
|
567
|
+
E.removeEventListener("scroll", v), window.removeEventListener("resize", v);
|
|
568
|
+
});
|
|
569
|
+
}), J((g) => {
|
|
570
|
+
if (!c.value || !e.contentVisible || !e.virtualizeCards || e.fixedColumnWidth || typeof ResizeObserver > "u")
|
|
571
|
+
return;
|
|
572
|
+
let E = c.value.clientWidth;
|
|
573
|
+
const v = new ResizeObserver(() => {
|
|
574
|
+
const T = c.value?.clientWidth ?? 0;
|
|
575
|
+
T && T !== E && (E = T, m.clear(), ee());
|
|
576
|
+
});
|
|
577
|
+
v.observe(c.value), g(() => v.disconnect());
|
|
578
|
+
}), Pe(() => {
|
|
579
|
+
M && cancelAnimationFrame(M), z?.disconnect();
|
|
580
|
+
}), (g, E) => ke((r(), d("div", {
|
|
581
|
+
class: "wx-column-cards",
|
|
582
|
+
"data-kanban-column-cards": o(fe)(t.column.id),
|
|
583
|
+
"data-kanban-render-start": h.value,
|
|
584
|
+
"data-kanban-render-end": D.value,
|
|
585
|
+
"data-kanban-card-count": t.column.cards.length,
|
|
586
|
+
"data-kanban-after-rendered-before-id": V.value == null ? void 0 : o(fe)(V.value),
|
|
587
|
+
ref_key: "container",
|
|
588
|
+
ref: c
|
|
589
|
+
}, [
|
|
590
|
+
t.contentVisible ? (r(), d(N, { key: 0 }, [
|
|
591
|
+
t.virtualizeCards ? (r(), d(N, { key: 0 }, [
|
|
592
|
+
y.value > 0 ? (r(), d("div", {
|
|
593
|
+
key: 0,
|
|
594
|
+
class: "wx-virtual-spacer",
|
|
595
|
+
style: Y({ height: y.value + "px" })
|
|
596
|
+
}, null, 4)) : $("", !0),
|
|
597
|
+
(r(!0), d(N, null, re(P.value, (v) => (r(), d(N, {
|
|
598
|
+
key: v.id
|
|
599
|
+
}, [
|
|
600
|
+
k.value && o(a).target?.beforeId === v.id ? (r(), d("div", {
|
|
601
|
+
key: 0,
|
|
602
|
+
class: "wx-drop-placeholder",
|
|
603
|
+
style: Y({ height: o(a).height + "px" })
|
|
604
|
+
}, null, 4)) : $("", !0),
|
|
605
|
+
ke((r(), d("div", {
|
|
606
|
+
class: U([
|
|
607
|
+
"wx-card-row",
|
|
608
|
+
v.css ?? "",
|
|
609
|
+
n(v),
|
|
610
|
+
{
|
|
611
|
+
"wx-dragging": o(a)?.active && o(a).cardId === v.id
|
|
612
|
+
}
|
|
613
|
+
]),
|
|
614
|
+
"data-kanban-card-id": v.id == null ? void 0 : o(fe)(v.id)
|
|
615
|
+
}, [
|
|
616
|
+
ae(Se, {
|
|
617
|
+
card: v,
|
|
618
|
+
cardContent: t.cardContent,
|
|
619
|
+
cardShape: t.cardShape,
|
|
620
|
+
extraCss: n(v)
|
|
621
|
+
}, null, 8, ["card", "cardContent", "cardShape", "extraCss"])
|
|
622
|
+
], 10, Nt)), [
|
|
623
|
+
[le, v]
|
|
624
|
+
])
|
|
625
|
+
], 64))), 128)),
|
|
626
|
+
j.value ? (r(), d("div", {
|
|
627
|
+
key: 1,
|
|
628
|
+
class: "wx-drop-placeholder",
|
|
629
|
+
style: Y({ height: o(a).height + "px" })
|
|
630
|
+
}, null, 4)) : $("", !0),
|
|
631
|
+
A.value > 0 ? (r(), d("div", {
|
|
632
|
+
key: 2,
|
|
633
|
+
class: "wx-virtual-spacer",
|
|
634
|
+
style: Y({ height: A.value + "px" })
|
|
635
|
+
}, null, 4)) : $("", !0)
|
|
636
|
+
], 64)) : (r(), d(N, { key: 1 }, [
|
|
637
|
+
(r(!0), d(N, null, re(t.column.cards, (v) => (r(), d(N, {
|
|
638
|
+
key: v.id
|
|
639
|
+
}, [
|
|
640
|
+
k.value && o(a).target?.beforeId === v.id ? (r(), d("div", {
|
|
641
|
+
key: 0,
|
|
642
|
+
class: "wx-drop-placeholder",
|
|
643
|
+
style: Y({ height: o(a).height + "px" })
|
|
644
|
+
}, null, 4)) : $("", !0),
|
|
645
|
+
R("div", {
|
|
646
|
+
class: U([
|
|
647
|
+
"wx-card-row",
|
|
648
|
+
v.css ?? "",
|
|
649
|
+
n(v),
|
|
650
|
+
{
|
|
651
|
+
"wx-dragging": o(a)?.active && o(a).cardId === v.id
|
|
652
|
+
}
|
|
653
|
+
]),
|
|
654
|
+
"data-kanban-card-id": v.id == null ? void 0 : o(fe)(v.id)
|
|
655
|
+
}, [
|
|
656
|
+
ae(Se, {
|
|
657
|
+
card: v,
|
|
658
|
+
cardContent: t.cardContent,
|
|
659
|
+
cardShape: t.cardShape,
|
|
660
|
+
extraCss: n(v)
|
|
661
|
+
}, null, 8, ["card", "cardContent", "cardShape", "extraCss"])
|
|
662
|
+
], 10, Vt)
|
|
663
|
+
], 64))), 128)),
|
|
664
|
+
j.value ? (r(), d("div", {
|
|
665
|
+
key: 0,
|
|
666
|
+
class: "wx-drop-placeholder",
|
|
667
|
+
style: Y({ height: o(a).height + "px" })
|
|
668
|
+
}, null, 4)) : $("", !0)
|
|
669
|
+
], 64))
|
|
670
|
+
], 64)) : w.value > 0 ? (r(), d("div", {
|
|
671
|
+
key: 1,
|
|
672
|
+
class: "wx-virtual-spacer",
|
|
673
|
+
style: Y({ height: w.value + "px" })
|
|
674
|
+
}, null, 4)) : $("", !0)
|
|
675
|
+
], 8, Tt)), [
|
|
676
|
+
[ie, {
|
|
677
|
+
store: o(s),
|
|
678
|
+
column: t.column.id,
|
|
679
|
+
columnAccessor: S.value,
|
|
680
|
+
readonly: t.readonly
|
|
681
|
+
}]
|
|
682
|
+
]);
|
|
683
|
+
}
|
|
684
|
+
}, Wt = /* @__PURE__ */ Q(Ft, [["__scopeId", "data-v-78a4e100"]]), Kt = ["aria-label"], jt = { class: "wx-body" }, Gt = { class: "wx-title" }, Yt = { class: "wx-column-header" }, Xt = ["aria-label"], qt = { class: "wx-title" }, Ut = ["aria-label"], Jt = /* @__PURE__ */ Object.assign({ name: "KanbanColumn" }, {
|
|
685
|
+
__name: "Column",
|
|
686
|
+
props: {
|
|
687
|
+
column: {},
|
|
688
|
+
readonly: { type: Boolean, default: !1 },
|
|
689
|
+
cardContent: {},
|
|
690
|
+
cardShape: {},
|
|
691
|
+
contentVisible: { type: Boolean },
|
|
692
|
+
requestVisible: { type: Boolean },
|
|
693
|
+
virtualizeCards: { type: Boolean },
|
|
694
|
+
estimatedCardHeight: { type: Number },
|
|
695
|
+
cardOverscan: { type: Number },
|
|
696
|
+
fixedColumnWidth: { type: Boolean },
|
|
697
|
+
registerColumn: { type: Function },
|
|
698
|
+
cardCss: { type: Function },
|
|
699
|
+
columnCss: { type: Function }
|
|
700
|
+
},
|
|
701
|
+
setup(t) {
|
|
702
|
+
const e = t, n = C(
|
|
703
|
+
() => e.columnCss ? e.columnCss(e.column.cards, e.column) ?? "" : ""
|
|
704
|
+
), s = W(oe), a = C(() => s.getState().columnAccessor), p = W("wx-i18n").getGroup("kanban"), S = X(null), c = C(
|
|
705
|
+
() => typeof e.column.cardLimit == "number" || e.column.cardLimit === !0
|
|
706
|
+
), l = C(
|
|
707
|
+
() => typeof e.column.cardLimit == "number" ? e.column.cardLimit : null
|
|
708
|
+
), b = C(() => e.column.addCard !== !1 && !e.readonly);
|
|
709
|
+
function M() {
|
|
710
|
+
s.exec("update-column", {
|
|
711
|
+
id: e.column.id,
|
|
712
|
+
column: { collapsed: !e.column.collapsed }
|
|
713
|
+
});
|
|
714
|
+
}
|
|
715
|
+
function x() {
|
|
716
|
+
if (!b.value) return;
|
|
717
|
+
const m = We({}, a.value, e.column.id);
|
|
718
|
+
s.exec("add-card", { card: m, edit: !0 });
|
|
719
|
+
}
|
|
720
|
+
return J(() => {
|
|
721
|
+
if (!e.registerColumn || !S.value) return;
|
|
722
|
+
const m = e.column.id;
|
|
723
|
+
e.registerColumn(m, S.value), ve(() => e.registerColumn(m, null));
|
|
724
|
+
}), (m, u) => (r(), d("section", {
|
|
725
|
+
class: U(["wx-column", t.column.css ?? "", n.value, { "wx-collapsed": t.column.collapsed, "wx-over-limit": t.column.overLimit }]),
|
|
726
|
+
ref_key: "root",
|
|
727
|
+
ref: S
|
|
728
|
+
}, [
|
|
729
|
+
t.column.collapsed ? (r(), d(N, { key: 0 }, [
|
|
730
|
+
R("button", {
|
|
731
|
+
type: "button",
|
|
732
|
+
class: "wx-expand",
|
|
733
|
+
onClick: M,
|
|
734
|
+
"aria-label": o(p)("Expand column")
|
|
735
|
+
}, [...u[0] || (u[0] = [
|
|
736
|
+
R("i", { class: "wx-icon wxi-angle-right" }, null, -1)
|
|
737
|
+
])], 8, Kt),
|
|
738
|
+
R("div", jt, [
|
|
739
|
+
R("h3", Gt, [
|
|
740
|
+
R("span", null, F(t.column.label), 1),
|
|
741
|
+
c.value ? (r(), d("span", {
|
|
742
|
+
key: 0,
|
|
743
|
+
class: U(["wx-count", { "wx-over": t.column.overLimit }])
|
|
744
|
+
}, [
|
|
745
|
+
te(F(t.column.cards.length), 1),
|
|
746
|
+
l.value != null ? (r(), d(N, { key: 0 }, [
|
|
747
|
+
te("/" + F(l.value), 1)
|
|
748
|
+
], 64)) : $("", !0)
|
|
749
|
+
], 2)) : $("", !0)
|
|
750
|
+
])
|
|
751
|
+
])
|
|
752
|
+
], 64)) : (r(), d(N, { key: 1 }, [
|
|
753
|
+
R("header", Yt, [
|
|
754
|
+
R("button", {
|
|
755
|
+
type: "button",
|
|
756
|
+
class: "wx-toggle",
|
|
757
|
+
onClick: M,
|
|
758
|
+
"aria-label": o(p)("Collapse column")
|
|
759
|
+
}, [...u[1] || (u[1] = [
|
|
760
|
+
R("i", { class: "wx-icon wxi-angle-left" }, null, -1)
|
|
761
|
+
])], 8, Xt),
|
|
762
|
+
R("h3", qt, F(t.column.label), 1),
|
|
763
|
+
c.value ? (r(), d("span", {
|
|
764
|
+
key: 0,
|
|
765
|
+
class: U(["wx-count", { "wx-over": t.column.overLimit }])
|
|
766
|
+
}, [
|
|
767
|
+
te(F(t.column.cards.length), 1),
|
|
768
|
+
l.value != null ? (r(), d(N, { key: 0 }, [
|
|
769
|
+
te("/" + F(l.value), 1)
|
|
770
|
+
], 64)) : $("", !0)
|
|
771
|
+
], 2)) : $("", !0),
|
|
772
|
+
b.value ? (r(), d("button", {
|
|
773
|
+
key: 1,
|
|
774
|
+
type: "button",
|
|
775
|
+
class: "wx-add",
|
|
776
|
+
onClick: x,
|
|
777
|
+
"aria-label": o(p)("Add card to") + " " + t.column.label
|
|
778
|
+
}, [...u[2] || (u[2] = [
|
|
779
|
+
R("i", { class: "wx-icon wxi-plus" }, null, -1)
|
|
780
|
+
])], 8, Ut)) : $("", !0)
|
|
781
|
+
]),
|
|
782
|
+
ae(Wt, {
|
|
783
|
+
column: t.column,
|
|
784
|
+
readonly: t.readonly,
|
|
785
|
+
cardContent: t.cardContent,
|
|
786
|
+
cardShape: t.cardShape,
|
|
787
|
+
contentVisible: t.contentVisible,
|
|
788
|
+
virtualizeCards: t.virtualizeCards,
|
|
789
|
+
estimatedCardHeight: t.estimatedCardHeight,
|
|
790
|
+
cardOverscan: t.cardOverscan,
|
|
791
|
+
fixedColumnWidth: t.fixedColumnWidth,
|
|
792
|
+
cardCss: t.cardCss
|
|
793
|
+
}, null, 8, ["column", "readonly", "cardContent", "cardShape", "contentVisible", "virtualizeCards", "estimatedCardHeight", "cardOverscan", "fixedColumnWidth", "cardCss"])
|
|
794
|
+
], 64))
|
|
795
|
+
], 2));
|
|
796
|
+
}
|
|
797
|
+
}), Qt = /* @__PURE__ */ Q(Jt, [["__scopeId", "data-v-7374cd1e"]]), Zt = ["oncontextmenu"], _t = {
|
|
798
|
+
__name: "ContextMenu",
|
|
799
|
+
props: {
|
|
800
|
+
options: { default: () => [] },
|
|
801
|
+
api: { default: null },
|
|
802
|
+
resolver: { default: null },
|
|
803
|
+
filter: { default: null },
|
|
804
|
+
at: { default: "point" },
|
|
805
|
+
onclick: { type: Function },
|
|
806
|
+
css: {}
|
|
807
|
+
},
|
|
808
|
+
setup(t, { expose: e }) {
|
|
809
|
+
const n = t, s = Ke(), a = W(oe, void 0);
|
|
810
|
+
function p(w) {
|
|
811
|
+
if (typeof w == "string" && w.startsWith(":")) {
|
|
812
|
+
const y = document.createElement("div");
|
|
813
|
+
return y.setAttribute("data-id", w), ne(y);
|
|
814
|
+
}
|
|
815
|
+
return typeof w == "string" || typeof w == "number" ? w : null;
|
|
816
|
+
}
|
|
817
|
+
function S(w) {
|
|
818
|
+
const y = p(w);
|
|
819
|
+
if (y != null)
|
|
820
|
+
return n.api ? n.api.getCards().find((A) => A.id === y) : a?.getState().cards.getById(y);
|
|
821
|
+
}
|
|
822
|
+
function c(w, y) {
|
|
823
|
+
(n.api ?? a)?.exec(w, y);
|
|
824
|
+
}
|
|
825
|
+
let l = null, b = W("wx-i18n", void 0);
|
|
826
|
+
b || (b = Ee({ ...ge, ...ye }), ce("wx-i18n", b));
|
|
827
|
+
const M = b.getGroup("kanban");
|
|
828
|
+
function x(w) {
|
|
829
|
+
return w.map((y) => (y = { ...y }, y.text && (y.text = M(y.text)), y.subtext && (y.subtext = M(y.subtext)), y.data && (y.data = x(y.data)), y));
|
|
830
|
+
}
|
|
831
|
+
function m() {
|
|
832
|
+
const w = n.options.length ? n.options : Xe();
|
|
833
|
+
return x(w);
|
|
834
|
+
}
|
|
835
|
+
function u(w, y) {
|
|
836
|
+
if (w == null) return null;
|
|
837
|
+
const A = S(w);
|
|
838
|
+
return !A || n.resolver && !n.resolver(A, y) ? null : (l = A.id, A);
|
|
839
|
+
}
|
|
840
|
+
function z(w) {
|
|
841
|
+
const y = w?.action;
|
|
842
|
+
if (!y) return;
|
|
843
|
+
const A = typeof l == "object" ? l.id : l;
|
|
844
|
+
y.id === "edit-card" ? c("select-card", { id: A }) : y.id === "duplicate-card" ? c("duplicate-card", { id: A }) : y.id === "delete-card" && c("delete-card", { id: A }), n.onclick?.(w);
|
|
845
|
+
}
|
|
846
|
+
function k(w, y) {
|
|
847
|
+
return n.filter ? n.filter(w, y) : !0;
|
|
848
|
+
}
|
|
849
|
+
const h = C(() => m()), D = X(null);
|
|
850
|
+
function P(w, y) {
|
|
851
|
+
D.value.show(w, y);
|
|
852
|
+
}
|
|
853
|
+
return e({ show: P }), (w, y) => (r(), d(N, null, [
|
|
854
|
+
ae(o(ot), {
|
|
855
|
+
filter: k,
|
|
856
|
+
options: h.value,
|
|
857
|
+
dataKey: "id",
|
|
858
|
+
resolver: u,
|
|
859
|
+
onclick: z,
|
|
860
|
+
css: t.css,
|
|
861
|
+
at: t.at,
|
|
862
|
+
ref_key: "menu",
|
|
863
|
+
ref: D
|
|
864
|
+
}, null, 8, ["options", "css", "at"]),
|
|
865
|
+
o(s).default ? (r(), d("span", {
|
|
866
|
+
key: 0,
|
|
867
|
+
oncontextmenu: D.value?.show,
|
|
868
|
+
"data-menu-ignore": "true"
|
|
869
|
+
}, [
|
|
870
|
+
Me(w.$slots, "default", {}, void 0, !0)
|
|
871
|
+
], 8, Zt)) : $("", !0)
|
|
872
|
+
], 64));
|
|
873
|
+
}
|
|
874
|
+
}, en = /* @__PURE__ */ Q(_t, [["__scopeId", "data-v-9bac5571"]]), tn = {
|
|
875
|
+
__name: "DragGhost",
|
|
876
|
+
props: {
|
|
877
|
+
root: {},
|
|
878
|
+
cardContent: {},
|
|
879
|
+
cardShape: {}
|
|
880
|
+
},
|
|
881
|
+
setup(t) {
|
|
882
|
+
const e = t, n = W(be), s = W(oe), a = C(() => !n?.active || n.cardId == null ? null : s.getState().cards.getById(n.cardId) ?? null), p = C(() => {
|
|
883
|
+
if (!n) return { x: 0, y: 0 };
|
|
884
|
+
let S = n.pointer.x - n.offset.x, c = n.pointer.y - n.offset.y;
|
|
885
|
+
if (e.root && n.active) {
|
|
886
|
+
const l = e.root.getBoundingClientRect();
|
|
887
|
+
S = Math.max(l.left, Math.min(S, l.right - n.width)), c = Math.max(l.top, Math.min(c, l.bottom - n.height));
|
|
888
|
+
}
|
|
889
|
+
return { x: S, y: c };
|
|
890
|
+
});
|
|
891
|
+
return (S, c) => o(n)?.active && a.value ? (r(), d("div", {
|
|
892
|
+
key: 0,
|
|
893
|
+
class: "wx-ghost",
|
|
894
|
+
style: Y({
|
|
895
|
+
width: o(n).width + "px",
|
|
896
|
+
height: o(n).height + "px",
|
|
897
|
+
transform: "translate(" + p.value.x + "px, " + p.value.y + "px)"
|
|
898
|
+
})
|
|
899
|
+
}, [
|
|
900
|
+
ae(Se, {
|
|
901
|
+
card: a.value,
|
|
902
|
+
cardContent: t.cardContent,
|
|
903
|
+
cardShape: t.cardShape
|
|
904
|
+
}, null, 8, ["card", "cardContent", "cardShape"])
|
|
905
|
+
], 4)) : $("", !0);
|
|
906
|
+
}
|
|
907
|
+
}, nn = /* @__PURE__ */ Q(tn, [["__scopeId", "data-v-40eca5a6"]]), Ae = 4;
|
|
908
|
+
function an(t, e) {
|
|
909
|
+
let n = e, s = 0, a = 0, p = !1, S = !1, c = null;
|
|
910
|
+
function l(k) {
|
|
911
|
+
if (k.button !== 0 || n.readonly || !n.dnd || !n.store)
|
|
912
|
+
return;
|
|
913
|
+
const h = k.target, D = h ? h.closest("[data-kanban-card-id]") : null;
|
|
914
|
+
if (!D || !t.contains(D)) return;
|
|
915
|
+
const P = D.closest("[data-kanban-column-cards]");
|
|
916
|
+
if (!P) return;
|
|
917
|
+
const w = ne(D, "data-kanban-card-id"), y = ne(P, "data-kanban-column-cards");
|
|
918
|
+
if (w == null || y == null) return;
|
|
919
|
+
const { viewData: A } = n.store.getState(), V = A.columns.find((f) => f.id === y), j = V?.cards.find((f) => f.id === w);
|
|
920
|
+
!V || !j || j.id == null || (c = {
|
|
921
|
+
dnd: n.dnd,
|
|
922
|
+
store: n.store,
|
|
923
|
+
id: j.id,
|
|
924
|
+
column: V.id,
|
|
925
|
+
cardEl: D
|
|
926
|
+
}, p = !0, S = !1, s = k.clientX, a = k.clientY, window.addEventListener("pointermove", b), window.addEventListener("pointerup", M), window.addEventListener("keydown", x));
|
|
927
|
+
}
|
|
928
|
+
function b(k) {
|
|
929
|
+
if (!(!p || !c)) {
|
|
930
|
+
if (n.readonly) {
|
|
931
|
+
z();
|
|
932
|
+
return;
|
|
933
|
+
}
|
|
934
|
+
if (!S) {
|
|
935
|
+
const h = k.clientX - s, D = k.clientY - a;
|
|
936
|
+
if (h * h + D * D < Ae * Ae) return;
|
|
937
|
+
m(k, c);
|
|
938
|
+
}
|
|
939
|
+
c.dnd.pointer = { x: k.clientX, y: k.clientY }, rn(k.clientX, k.clientY, c);
|
|
940
|
+
}
|
|
941
|
+
}
|
|
942
|
+
function M() {
|
|
943
|
+
u(), S && c && (on(c), c.dnd.reset(), document.body.style.userSelect = "", ln()), p = !1, S = !1, c = null;
|
|
944
|
+
}
|
|
945
|
+
function x(k) {
|
|
946
|
+
k.key !== "Escape" || !S || !c || z();
|
|
947
|
+
}
|
|
948
|
+
function m(k, h) {
|
|
949
|
+
const D = h.cardEl.getBoundingClientRect();
|
|
950
|
+
h.dnd.width = D.width, h.dnd.height = D.height, h.dnd.offset = { x: s - D.left, y: a - D.top }, h.dnd.pointer = { x: k.clientX, y: k.clientY }, h.dnd.cardId = h.id, h.dnd.sourceColumn = h.column, h.dnd.target = { column: h.column, beforeId: null }, h.dnd.active = !0, document.body.style.userSelect = "none", S = !0;
|
|
951
|
+
}
|
|
952
|
+
function u() {
|
|
953
|
+
window.removeEventListener("pointermove", b), window.removeEventListener("pointerup", M), window.removeEventListener("keydown", x);
|
|
954
|
+
}
|
|
955
|
+
function z() {
|
|
956
|
+
u(), S && c && (c.dnd.reset(), document.body.style.userSelect = ""), p = !1, S = !1, c = null;
|
|
957
|
+
}
|
|
958
|
+
return t.addEventListener("pointerdown", l), {
|
|
959
|
+
update(k) {
|
|
960
|
+
n = k, n.readonly && (p || S) && z();
|
|
961
|
+
},
|
|
962
|
+
destroy() {
|
|
963
|
+
t.removeEventListener("pointerdown", l), z();
|
|
964
|
+
}
|
|
965
|
+
};
|
|
966
|
+
}
|
|
967
|
+
function rn(t, e, n) {
|
|
968
|
+
const s = document.elementFromPoint(t, e), a = s ? s.closest("[data-kanban-column-cards]") : null;
|
|
969
|
+
if (!a)
|
|
970
|
+
return;
|
|
971
|
+
const p = ne(a, "data-kanban-column-cards");
|
|
972
|
+
if (p == null) return;
|
|
973
|
+
const c = n.store.getState().viewData.columns.find((m) => m.id === p);
|
|
974
|
+
if (!c) return;
|
|
975
|
+
const l = Array.from(
|
|
976
|
+
a.querySelectorAll("[data-kanban-card-id]")
|
|
977
|
+
).filter((m) => ne(m, "data-kanban-card-id") !== n.id);
|
|
978
|
+
let b = null;
|
|
979
|
+
for (const m of l) {
|
|
980
|
+
const u = m.getBoundingClientRect();
|
|
981
|
+
if (e < u.top + u.height / 2) {
|
|
982
|
+
b = Ie(
|
|
983
|
+
c,
|
|
984
|
+
ne(m, "data-kanban-card-id")
|
|
985
|
+
);
|
|
986
|
+
break;
|
|
987
|
+
}
|
|
988
|
+
}
|
|
989
|
+
b == null && (b = Ie(
|
|
990
|
+
c,
|
|
991
|
+
ne(a, "data-kanban-after-rendered-before-id")
|
|
992
|
+
));
|
|
993
|
+
const M = { column: c.id, beforeId: b }, x = n.dnd.target;
|
|
994
|
+
(!x || x.column !== M.column || x.beforeId !== M.beforeId) && (n.dnd.target = M);
|
|
995
|
+
}
|
|
996
|
+
function Ie(t, e) {
|
|
997
|
+
return e == null ? null : t.cards.find((n) => n.id === e)?.id ?? null;
|
|
998
|
+
}
|
|
999
|
+
function on(t) {
|
|
1000
|
+
const e = t.dnd.target;
|
|
1001
|
+
if (!e) return;
|
|
1002
|
+
const n = {
|
|
1003
|
+
id: t.id,
|
|
1004
|
+
column: e.column
|
|
1005
|
+
};
|
|
1006
|
+
e.beforeId != null && (n.before = e.beforeId), t.store.exec("move-card", n);
|
|
1007
|
+
}
|
|
1008
|
+
function ln() {
|
|
1009
|
+
const t = (e) => {
|
|
1010
|
+
e.preventDefault(), e.stopPropagation(), window.removeEventListener("click", t, !0);
|
|
1011
|
+
};
|
|
1012
|
+
window.addEventListener("click", t, !0), setTimeout(() => window.removeEventListener("click", t, !0), 0);
|
|
1013
|
+
}
|
|
1014
|
+
function cn(t, e = "right-start") {
|
|
1015
|
+
let n = null;
|
|
1016
|
+
const s = X(null), a = X({ x: 0, y: 0 }), p = X(null);
|
|
1017
|
+
function S(M) {
|
|
1018
|
+
if (a.value = { x: M.clientX, y: M.clientY }, p.value || !M.target) return;
|
|
1019
|
+
const x = Ne(M.target) ?? null;
|
|
1020
|
+
if (x === n) return;
|
|
1021
|
+
if (n = x, !x) {
|
|
1022
|
+
s.value = null;
|
|
1023
|
+
return;
|
|
1024
|
+
}
|
|
1025
|
+
const m = t(ne(x));
|
|
1026
|
+
s.value = m ? { card: m } : null;
|
|
1027
|
+
}
|
|
1028
|
+
function c() {
|
|
1029
|
+
n = null, s.value = null;
|
|
1030
|
+
}
|
|
1031
|
+
function l(M) {
|
|
1032
|
+
if (s.value = null, n = null, !M) {
|
|
1033
|
+
p.value = null;
|
|
1034
|
+
return;
|
|
1035
|
+
}
|
|
1036
|
+
const x = t(M.cardId);
|
|
1037
|
+
x && (p.value = {
|
|
1038
|
+
card: x,
|
|
1039
|
+
element: M.element,
|
|
1040
|
+
at: e
|
|
1041
|
+
});
|
|
1042
|
+
}
|
|
1043
|
+
function b() {
|
|
1044
|
+
p.value = null;
|
|
1045
|
+
}
|
|
1046
|
+
return {
|
|
1047
|
+
get tooltipState() {
|
|
1048
|
+
return s.value;
|
|
1049
|
+
},
|
|
1050
|
+
get mousePos() {
|
|
1051
|
+
return a.value;
|
|
1052
|
+
},
|
|
1053
|
+
get cardPopupState() {
|
|
1054
|
+
return p.value;
|
|
1055
|
+
},
|
|
1056
|
+
handleTooltipMove: S,
|
|
1057
|
+
handleTooltipLeave: c,
|
|
1058
|
+
handleCardPopup: l,
|
|
1059
|
+
hideCardPopup: b
|
|
1060
|
+
};
|
|
1061
|
+
}
|
|
1062
|
+
const sn = ["aria-label"], dn = { class: "wx-content" }, un = ["href"], fn = /* @__PURE__ */ Object.assign({ name: "KanbanLayout" }, {
|
|
1063
|
+
__name: "Layout",
|
|
1064
|
+
props: {
|
|
1065
|
+
cardShape: {},
|
|
1066
|
+
readonly: { type: Boolean, default: !1 },
|
|
1067
|
+
render: {},
|
|
1068
|
+
cardContent: {},
|
|
1069
|
+
tooltip: {},
|
|
1070
|
+
cardPopup: {},
|
|
1071
|
+
cardCss: { type: Function },
|
|
1072
|
+
columnCss: { type: Function }
|
|
1073
|
+
},
|
|
1074
|
+
setup(t) {
|
|
1075
|
+
const e = t, n = C(() => e.render?.columnScroll ?? !0), s = C(() => e.render?.fixedColumnWidth ?? !0), a = C(() => e.render?.virtualizeCards ?? !1), p = C(
|
|
1076
|
+
() => e.render?.virtualizeColumns ?? !1
|
|
1077
|
+
), S = C(
|
|
1078
|
+
() => e.render?.estimatedCardHeight ?? 80
|
|
1079
|
+
), c = C(() => e.render?.cardOverscan ?? 5), l = C(() => e.render?.columnOverscan ?? 1), b = W(oe), M = De(b.getReactiveState().viewData), x = b.getBrandmark(), m = W("wx-i18n").getGroup("kanban"), u = W(be), z = X(null), k = X(null), h = X(/* @__PURE__ */ new Set());
|
|
1080
|
+
let D = 0;
|
|
1081
|
+
const P = /* @__PURE__ */ new Map();
|
|
1082
|
+
ce(
|
|
1083
|
+
Fe,
|
|
1084
|
+
() => n.value ? null : k.value ?? null
|
|
1085
|
+
);
|
|
1086
|
+
function w(i, L) {
|
|
1087
|
+
if (i.size !== L.size) return !1;
|
|
1088
|
+
for (const B of i)
|
|
1089
|
+
if (!L.has(B)) return !1;
|
|
1090
|
+
return !0;
|
|
1091
|
+
}
|
|
1092
|
+
function y(i) {
|
|
1093
|
+
w(h.value, i) || (h.value = i);
|
|
1094
|
+
}
|
|
1095
|
+
function A() {
|
|
1096
|
+
if (!p.value || !k.value) {
|
|
1097
|
+
y(/* @__PURE__ */ new Set());
|
|
1098
|
+
return;
|
|
1099
|
+
}
|
|
1100
|
+
const i = M.value.columns;
|
|
1101
|
+
if (!i.length) {
|
|
1102
|
+
y(/* @__PURE__ */ new Set());
|
|
1103
|
+
return;
|
|
1104
|
+
}
|
|
1105
|
+
const L = k.value.getBoundingClientRect();
|
|
1106
|
+
let B = -1, q = -1;
|
|
1107
|
+
for (let _ = 0; _ < i.length; _++) {
|
|
1108
|
+
const $e = P.get(i[_].id);
|
|
1109
|
+
if (!$e) continue;
|
|
1110
|
+
const Be = $e.getBoundingClientRect();
|
|
1111
|
+
Be.right >= L.left && Be.left <= L.right && (B === -1 && (B = _), q = _);
|
|
1112
|
+
}
|
|
1113
|
+
if (B === -1 || q === -1) {
|
|
1114
|
+
y(/* @__PURE__ */ new Set());
|
|
1115
|
+
return;
|
|
1116
|
+
}
|
|
1117
|
+
const ue = Math.max(0, Math.floor(l.value || 0));
|
|
1118
|
+
B = Math.max(0, B - ue), q = Math.min(i.length - 1, q + ue);
|
|
1119
|
+
const Le = /* @__PURE__ */ new Set();
|
|
1120
|
+
for (let _ = B; _ <= q; _++)
|
|
1121
|
+
Le.add(i[_].id);
|
|
1122
|
+
y(Le);
|
|
1123
|
+
}
|
|
1124
|
+
function V() {
|
|
1125
|
+
D || (D = requestAnimationFrame(() => {
|
|
1126
|
+
D = 0, A();
|
|
1127
|
+
}));
|
|
1128
|
+
}
|
|
1129
|
+
function j(i, L) {
|
|
1130
|
+
L ? P.set(i, L) : P.delete(i), V();
|
|
1131
|
+
}
|
|
1132
|
+
function f() {
|
|
1133
|
+
k.value && k.value.style.setProperty(
|
|
1134
|
+
"--wx-kanban-scroll-height",
|
|
1135
|
+
`${k.value.clientHeight}px`
|
|
1136
|
+
);
|
|
1137
|
+
}
|
|
1138
|
+
function O(i) {
|
|
1139
|
+
return !p.value || h.value.size === 0 || h.value.has(i);
|
|
1140
|
+
}
|
|
1141
|
+
function I(i) {
|
|
1142
|
+
return !p.value || h.value.has(i);
|
|
1143
|
+
}
|
|
1144
|
+
function Z(i) {
|
|
1145
|
+
return b.getState().cards.getById(i);
|
|
1146
|
+
}
|
|
1147
|
+
const H = cn(Z, "right-start"), xe = { trackScroll: !0 };
|
|
1148
|
+
function ee(i) {
|
|
1149
|
+
!e.readonly && i != null && b.exec("select-card", { id: i });
|
|
1150
|
+
}
|
|
1151
|
+
function Ce(i, L) {
|
|
1152
|
+
if (!(e.readonly || u?.active)) {
|
|
1153
|
+
if (e.cardPopup && i != null) {
|
|
1154
|
+
const B = L?.target, q = B ? Ne(B) : null;
|
|
1155
|
+
if (q) {
|
|
1156
|
+
H.handleCardPopup({ cardId: i, element: q });
|
|
1157
|
+
return;
|
|
1158
|
+
}
|
|
1159
|
+
}
|
|
1160
|
+
ee(i);
|
|
1161
|
+
}
|
|
1162
|
+
}
|
|
1163
|
+
function se(i) {
|
|
1164
|
+
if (e.readonly) return;
|
|
1165
|
+
i?.preventDefault();
|
|
1166
|
+
const L = document.activeElement, B = L ? Ze(L) : null;
|
|
1167
|
+
if (e.cardPopup && B != null && L) {
|
|
1168
|
+
H.handleCardPopup({
|
|
1169
|
+
cardId: B,
|
|
1170
|
+
element: L
|
|
1171
|
+
});
|
|
1172
|
+
return;
|
|
1173
|
+
}
|
|
1174
|
+
ee(B);
|
|
1175
|
+
}
|
|
1176
|
+
const le = C(
|
|
1177
|
+
() => e.cardShape?.menu ? typeof e.cardShape.menu == "object" ? e.cardShape.menu : {} : null
|
|
1178
|
+
), ie = X(null);
|
|
1179
|
+
function g(i, L) {
|
|
1180
|
+
e.readonly || i == null || !ie.value || (L.stopPropagation(), ie.value.show(L, i));
|
|
1181
|
+
}
|
|
1182
|
+
function E(i) {
|
|
1183
|
+
return Je(i, {
|
|
1184
|
+
click: Ce,
|
|
1185
|
+
menu: g
|
|
1186
|
+
});
|
|
1187
|
+
}
|
|
1188
|
+
function v(i) {
|
|
1189
|
+
return { destroy: Qe.subscribe((B) => {
|
|
1190
|
+
B.configure(
|
|
1191
|
+
{
|
|
1192
|
+
enter: se,
|
|
1193
|
+
space: se
|
|
1194
|
+
},
|
|
1195
|
+
i
|
|
1196
|
+
);
|
|
1197
|
+
}) };
|
|
1198
|
+
}
|
|
1199
|
+
const T = {
|
|
1200
|
+
mounted(i, L) {
|
|
1201
|
+
const B = an(i, L.value);
|
|
1202
|
+
i._cardDrag = B;
|
|
1203
|
+
},
|
|
1204
|
+
updated(i, L) {
|
|
1205
|
+
i._cardDrag?.update(L.value);
|
|
1206
|
+
},
|
|
1207
|
+
unmounted(i) {
|
|
1208
|
+
i._cardDrag?.destroy();
|
|
1209
|
+
}
|
|
1210
|
+
}, G = {
|
|
1211
|
+
mounted(i) {
|
|
1212
|
+
const L = E(i);
|
|
1213
|
+
i._delegateCardClick = L;
|
|
1214
|
+
},
|
|
1215
|
+
unmounted(i) {
|
|
1216
|
+
i._delegateCardClick?.destroy();
|
|
1217
|
+
}
|
|
1218
|
+
}, de = {
|
|
1219
|
+
mounted(i) {
|
|
1220
|
+
const L = v(i);
|
|
1221
|
+
i._cardHotkeys = L;
|
|
1222
|
+
},
|
|
1223
|
+
unmounted(i) {
|
|
1224
|
+
i._cardHotkeys?.destroy();
|
|
1225
|
+
}
|
|
1226
|
+
};
|
|
1227
|
+
return J(() => {
|
|
1228
|
+
p.value, l.value, s.value, M.value.columns, V();
|
|
1229
|
+
}), J(() => {
|
|
1230
|
+
if (!k.value || !p.value || typeof ResizeObserver > "u")
|
|
1231
|
+
return;
|
|
1232
|
+
const i = new ResizeObserver(() => V());
|
|
1233
|
+
i.observe(k.value), ve(() => i.disconnect());
|
|
1234
|
+
}), J(() => {
|
|
1235
|
+
if (!k.value) return;
|
|
1236
|
+
if (f(), window.addEventListener("resize", f), typeof ResizeObserver > "u") {
|
|
1237
|
+
ve(
|
|
1238
|
+
() => window.removeEventListener("resize", f)
|
|
1239
|
+
);
|
|
1240
|
+
return;
|
|
1241
|
+
}
|
|
1242
|
+
const i = new ResizeObserver(f);
|
|
1243
|
+
i.observe(k.value), ve(() => {
|
|
1244
|
+
i.disconnect(), window.removeEventListener("resize", f);
|
|
1245
|
+
});
|
|
1246
|
+
}), Pe(() => {
|
|
1247
|
+
D && cancelAnimationFrame(D);
|
|
1248
|
+
}), (i, L) => (r(), d("div", {
|
|
1249
|
+
class: "wx-kanban",
|
|
1250
|
+
role: "region",
|
|
1251
|
+
"aria-label": o(m)("Kanban board"),
|
|
1252
|
+
ref_key: "root",
|
|
1253
|
+
ref: z
|
|
1254
|
+
}, [
|
|
1255
|
+
ke((r(), d("div", {
|
|
1256
|
+
class: U(["wx-board", {
|
|
1257
|
+
"wx-scroll-board": !n.value,
|
|
1258
|
+
"wx-layout-flex": !s.value
|
|
1259
|
+
}]),
|
|
1260
|
+
onMousemove: L[0] || (L[0] = (B) => t.tooltip && o(H).handleTooltipMove(B)),
|
|
1261
|
+
onMouseleave: L[1] || (L[1] = (B) => t.tooltip && o(H).handleTooltipLeave(B))
|
|
1262
|
+
}, [
|
|
1263
|
+
R("div", {
|
|
1264
|
+
class: "wx-scroll",
|
|
1265
|
+
ref_key: "scroll",
|
|
1266
|
+
ref: k,
|
|
1267
|
+
onScroll: V
|
|
1268
|
+
}, [
|
|
1269
|
+
R("div", dn, [
|
|
1270
|
+
(r(!0), d(N, null, re(o(M).columns, (B) => (r(), K(Qt, {
|
|
1271
|
+
key: B.id,
|
|
1272
|
+
column: B,
|
|
1273
|
+
readonly: t.readonly,
|
|
1274
|
+
cardContent: t.cardContent,
|
|
1275
|
+
cardShape: t.cardShape,
|
|
1276
|
+
contentVisible: O(B.id),
|
|
1277
|
+
requestVisible: I(B.id),
|
|
1278
|
+
virtualizeCards: a.value,
|
|
1279
|
+
estimatedCardHeight: S.value,
|
|
1280
|
+
cardOverscan: c.value,
|
|
1281
|
+
fixedColumnWidth: s.value,
|
|
1282
|
+
registerColumn: j,
|
|
1283
|
+
cardCss: t.cardCss,
|
|
1284
|
+
columnCss: t.columnCss
|
|
1285
|
+
}, null, 8, ["column", "readonly", "cardContent", "cardShape", "contentVisible", "requestVisible", "virtualizeCards", "estimatedCardHeight", "cardOverscan", "fixedColumnWidth", "cardCss", "columnCss"]))), 128))
|
|
1286
|
+
])
|
|
1287
|
+
], 544)
|
|
1288
|
+
], 34)), [
|
|
1289
|
+
[T, { dnd: o(u), store: o(b), readonly: t.readonly }],
|
|
1290
|
+
[G],
|
|
1291
|
+
[de]
|
|
1292
|
+
]),
|
|
1293
|
+
o(x) ? (r(), d("a", {
|
|
1294
|
+
key: 0,
|
|
1295
|
+
style: Y(o(x).style),
|
|
1296
|
+
href: o(x).link,
|
|
1297
|
+
target: "_blank"
|
|
1298
|
+
}, F(o(x).text), 13, un)) : $("", !0),
|
|
1299
|
+
ae(nn, {
|
|
1300
|
+
root: z.value,
|
|
1301
|
+
cardContent: t.cardContent,
|
|
1302
|
+
cardShape: t.cardShape
|
|
1303
|
+
}, null, 8, ["root", "cardContent", "cardShape"]),
|
|
1304
|
+
le.value ? (r(), K(en, {
|
|
1305
|
+
key: 1,
|
|
1306
|
+
options: le.value.options,
|
|
1307
|
+
filter: le.value.filter,
|
|
1308
|
+
onclick: le.value.onclick,
|
|
1309
|
+
ref_key: "cardMenu",
|
|
1310
|
+
ref: ie
|
|
1311
|
+
}, null, 8, ["options", "filter", "onclick"])) : $("", !0),
|
|
1312
|
+
o(H).tooltipState && t.tooltip ? (r(), d("div", {
|
|
1313
|
+
key: 2,
|
|
1314
|
+
class: "wx-tooltip",
|
|
1315
|
+
style: Y(`position:fixed;left:${o(H).mousePos.x + 12}px;top:${o(H).mousePos.y + 16}px;z-index:10000;pointer-events:none`),
|
|
1316
|
+
"aria-hidden": "true"
|
|
1317
|
+
}, [
|
|
1318
|
+
(r(), K(pe(t.tooltip), {
|
|
1319
|
+
card: o(H).tooltipState.card
|
|
1320
|
+
}, null, 8, ["card"]))
|
|
1321
|
+
], 4)) : $("", !0),
|
|
1322
|
+
o(H).cardPopupState && t.cardPopup ? (r(), K(o(_e), Re({
|
|
1323
|
+
key: 3,
|
|
1324
|
+
at: o(H).cardPopupState.at,
|
|
1325
|
+
parent: o(H).cardPopupState.element,
|
|
1326
|
+
oncancel: o(H).hideCardPopup
|
|
1327
|
+
}, xe), {
|
|
1328
|
+
default: he(() => [
|
|
1329
|
+
(r(), K(pe(t.cardPopup), {
|
|
1330
|
+
card: o(H).cardPopupState.card,
|
|
1331
|
+
close: o(H).hideCardPopup
|
|
1332
|
+
}, null, 8, ["card", "close"]))
|
|
1333
|
+
]),
|
|
1334
|
+
_: 1
|
|
1335
|
+
}, 16, ["at", "parent", "oncancel"])) : $("", !0)
|
|
1336
|
+
], 8, sn));
|
|
1337
|
+
}
|
|
1338
|
+
}), mn = /* @__PURE__ */ Q(fn, [["__scopeId", "data-v-7797d7e5"]]), vn = ["data-id"], pn = /* @__PURE__ */ Object.assign({ name: "KanbanExportLayout" }, {
|
|
1339
|
+
__name: "ExportLayout",
|
|
1340
|
+
props: {
|
|
1341
|
+
cardShape: {},
|
|
1342
|
+
cardCss: { type: Function },
|
|
1343
|
+
columnCss: { type: Function },
|
|
1344
|
+
cardContent: {}
|
|
1345
|
+
},
|
|
1346
|
+
setup(t) {
|
|
1347
|
+
const e = t, n = W(oe), s = De(n.getReactiveState().viewData), a = X(null);
|
|
1348
|
+
return J(() => {
|
|
1349
|
+
const p = {};
|
|
1350
|
+
if (e.cardContent) {
|
|
1351
|
+
const l = {};
|
|
1352
|
+
a.value?.querySelectorAll(".wx-ex-cell").forEach((b) => {
|
|
1353
|
+
l[b.dataset.id] = b.innerHTML;
|
|
1354
|
+
}), p.cardContent = l;
|
|
1355
|
+
}
|
|
1356
|
+
const S = {};
|
|
1357
|
+
e.cardCss && (s.value.columns.forEach((l) => {
|
|
1358
|
+
l.cards.forEach((b) => {
|
|
1359
|
+
S[b.id.toString()] = e.cardCss(b, l);
|
|
1360
|
+
});
|
|
1361
|
+
}), p.cardCss = S);
|
|
1362
|
+
const c = {};
|
|
1363
|
+
e.columnCss && (s.value.columns.forEach((l) => {
|
|
1364
|
+
c[l.id.toString()] = e.columnCss(l.cards, l);
|
|
1365
|
+
}), p.columnCss = c), n.exec("export-data", { format: "inner", data: p });
|
|
1366
|
+
}), (p, S) => (r(), d("div", {
|
|
1367
|
+
style: { visibility: "hidden", position: "absolute" },
|
|
1368
|
+
ref_key: "root",
|
|
1369
|
+
ref: a
|
|
1370
|
+
}, [
|
|
1371
|
+
t.cardContent ? (r(!0), d(N, { key: 0 }, re(o(s).columns, (c) => (r(), d(N, {
|
|
1372
|
+
key: c.id
|
|
1373
|
+
}, [
|
|
1374
|
+
(r(!0), d(N, null, re(c.cards, (l) => (r(), d("div", {
|
|
1375
|
+
key: l.id,
|
|
1376
|
+
class: "wx-ex-cell",
|
|
1377
|
+
"data-id": l.id
|
|
1378
|
+
}, [
|
|
1379
|
+
(r(), K(pe(t.cardContent), {
|
|
1380
|
+
card: l,
|
|
1381
|
+
cardShape: t.cardShape
|
|
1382
|
+
}, null, 8, ["card", "cardShape"]))
|
|
1383
|
+
], 8, vn))), 128))
|
|
1384
|
+
], 64))), 128)) : $("", !0)
|
|
1385
|
+
], 512));
|
|
1386
|
+
}
|
|
1387
|
+
});
|
|
1388
|
+
function hn() {
|
|
1389
|
+
const t = je({
|
|
1390
|
+
active: !1,
|
|
1391
|
+
cardId: null,
|
|
1392
|
+
sourceColumn: null,
|
|
1393
|
+
width: 0,
|
|
1394
|
+
height: 0,
|
|
1395
|
+
pointer: { x: 0, y: 0 },
|
|
1396
|
+
offset: { x: 0, y: 0 },
|
|
1397
|
+
target: null,
|
|
1398
|
+
reset() {
|
|
1399
|
+
t.active = !1, t.cardId = null, t.sourceColumn = null, t.target = null;
|
|
1400
|
+
}
|
|
1401
|
+
});
|
|
1402
|
+
return t;
|
|
1403
|
+
}
|
|
1404
|
+
const On = /* @__PURE__ */ Object.assign({ name: "KanbanKanban" }, {
|
|
1405
|
+
__name: "Kanban",
|
|
1406
|
+
props: {
|
|
1407
|
+
cards: { default: () => [] },
|
|
1408
|
+
columns: { default: () => [] },
|
|
1409
|
+
columnAccessor: { default: "column" },
|
|
1410
|
+
filters: { default: () => /* @__PURE__ */ new Map() },
|
|
1411
|
+
sort: { default: null },
|
|
1412
|
+
card: { default: () => pt() },
|
|
1413
|
+
readonly: { type: Boolean, default: !1 },
|
|
1414
|
+
render: {},
|
|
1415
|
+
dynamicData: { type: Boolean, default: !1 },
|
|
1416
|
+
history: { type: Boolean, default: !1 },
|
|
1417
|
+
cardContent: {},
|
|
1418
|
+
init: { type: Function },
|
|
1419
|
+
tooltip: {},
|
|
1420
|
+
cardPopup: {},
|
|
1421
|
+
cardCss: { type: Function },
|
|
1422
|
+
columnCss: { type: Function }
|
|
1423
|
+
},
|
|
1424
|
+
setup(t, { expose: e }) {
|
|
1425
|
+
const n = t, s = He(), a = new qe(Ge, { undo: n.history });
|
|
1426
|
+
let p = a.in;
|
|
1427
|
+
const S = /-/g, c = new Ye((A, V) => {
|
|
1428
|
+
const j = "on" + A.replace(S, ""), f = s[j];
|
|
1429
|
+
typeof f == "function" && f(V);
|
|
1430
|
+
});
|
|
1431
|
+
p.setNext(c);
|
|
1432
|
+
const l = a.getState.bind(a), b = a.getReactive.bind(a), M = () => ({ data: a }), x = a.getCards.bind(a), m = a.in.exec.bind(a.in), u = a.in.on.bind(a.in), z = a.in.detach.bind(a.in), k = a.in.setNext.bind(a.in), h = a.in.intercept.bind(a.in), D = {
|
|
1433
|
+
getState: l,
|
|
1434
|
+
getReactiveState: b,
|
|
1435
|
+
getStores: M,
|
|
1436
|
+
getCards: x,
|
|
1437
|
+
setNext: k,
|
|
1438
|
+
exec: m,
|
|
1439
|
+
on: u,
|
|
1440
|
+
detach: z,
|
|
1441
|
+
intercept: h
|
|
1442
|
+
};
|
|
1443
|
+
ce(oe, {
|
|
1444
|
+
getReactiveState: b,
|
|
1445
|
+
getState: l,
|
|
1446
|
+
exec: m,
|
|
1447
|
+
getBrandmark: a.getBrandmark.bind(a)
|
|
1448
|
+
}), ce(be, hn());
|
|
1449
|
+
const P = () => ({
|
|
1450
|
+
cards: n.cards,
|
|
1451
|
+
columns: n.columns,
|
|
1452
|
+
columnAccessor: n.columnAccessor,
|
|
1453
|
+
filters: n.filters,
|
|
1454
|
+
sort: n.sort,
|
|
1455
|
+
dynamicData: n.dynamicData
|
|
1456
|
+
});
|
|
1457
|
+
a.init({ ...P(), renderMode: "" }), n.init?.(D);
|
|
1458
|
+
let w = !0;
|
|
1459
|
+
J(() => {
|
|
1460
|
+
const A = P();
|
|
1461
|
+
if (w) {
|
|
1462
|
+
w = !1;
|
|
1463
|
+
return;
|
|
1464
|
+
}
|
|
1465
|
+
a.init(A);
|
|
1466
|
+
}), J(() => {
|
|
1467
|
+
a.meta["export-data"] = {
|
|
1468
|
+
card: n.card,
|
|
1469
|
+
cardContent: n.cardContent,
|
|
1470
|
+
cardCss: n.cardCss,
|
|
1471
|
+
columnCss: n.columnCss
|
|
1472
|
+
};
|
|
1473
|
+
});
|
|
1474
|
+
const y = De(a.getReactive().renderMode);
|
|
1475
|
+
return e({
|
|
1476
|
+
getState: l,
|
|
1477
|
+
getReactiveState: b,
|
|
1478
|
+
getStores: M,
|
|
1479
|
+
getCards: x,
|
|
1480
|
+
exec: m,
|
|
1481
|
+
on: u,
|
|
1482
|
+
detach: z,
|
|
1483
|
+
setNext: k,
|
|
1484
|
+
intercept: h
|
|
1485
|
+
}), (A, V) => (r(), K(o(et), {
|
|
1486
|
+
words: { ...o(ye), ...o(ge) },
|
|
1487
|
+
optional: !0
|
|
1488
|
+
}, {
|
|
1489
|
+
default: he(() => [
|
|
1490
|
+
ae(mn, {
|
|
1491
|
+
cardShape: n.card,
|
|
1492
|
+
readonly: t.readonly,
|
|
1493
|
+
render: t.render,
|
|
1494
|
+
cardContent: t.cardContent,
|
|
1495
|
+
tooltip: t.tooltip,
|
|
1496
|
+
cardPopup: t.cardPopup,
|
|
1497
|
+
cardCss: t.cardCss,
|
|
1498
|
+
columnCss: t.columnCss
|
|
1499
|
+
}, null, 8, ["cardShape", "readonly", "render", "cardContent", "tooltip", "cardPopup", "cardCss", "columnCss"]),
|
|
1500
|
+
o(y) === "export" ? (r(), K(pn, {
|
|
1501
|
+
key: 0,
|
|
1502
|
+
cardShape: n.card,
|
|
1503
|
+
cardContent: t.cardContent,
|
|
1504
|
+
cardCss: t.cardCss,
|
|
1505
|
+
columnCss: t.columnCss
|
|
1506
|
+
}, null, 8, ["cardShape", "cardContent", "cardCss", "columnCss"])) : $("", !0)
|
|
1507
|
+
]),
|
|
1508
|
+
_: 1
|
|
1509
|
+
}, 8, ["words"]));
|
|
1510
|
+
}
|
|
1511
|
+
}), gn = /* @__PURE__ */ Object.assign({ inheritAttrs: !1, name: "KanbanComponentsEditor" }, {
|
|
1512
|
+
__name: "Editor",
|
|
1513
|
+
props: {
|
|
1514
|
+
api: {},
|
|
1515
|
+
values: {},
|
|
1516
|
+
items: { default: () => ht() },
|
|
1517
|
+
placement: { default: "sidebar" },
|
|
1518
|
+
layout: { default: "default" },
|
|
1519
|
+
focus: { type: Boolean, default: !0 },
|
|
1520
|
+
css: { default: "" },
|
|
1521
|
+
topBar: {},
|
|
1522
|
+
autoSave: { type: Boolean, default: !0 },
|
|
1523
|
+
onchange: { type: Function },
|
|
1524
|
+
onsave: { type: Function },
|
|
1525
|
+
onaction: { type: Function }
|
|
1526
|
+
},
|
|
1527
|
+
setup(t) {
|
|
1528
|
+
me("richselect", tt), me("multicombo", nt), me("datepicker", at), me("slider", rt);
|
|
1529
|
+
const e = t, n = He(), s = Te(
|
|
1530
|
+
() => e.api?.getReactiveState()?.editorData
|
|
1531
|
+
);
|
|
1532
|
+
let a = W("wx-i18n", void 0);
|
|
1533
|
+
a || (a = Ee({ ...ge, ...ye }), ce("wx-i18n", a));
|
|
1534
|
+
const p = a.getGroup("kanban");
|
|
1535
|
+
function S(h) {
|
|
1536
|
+
return typeof h == "string" ? p(h) : h;
|
|
1537
|
+
}
|
|
1538
|
+
function c(h) {
|
|
1539
|
+
return h.map((D) => {
|
|
1540
|
+
const P = { ...D };
|
|
1541
|
+
return P.label = S(P.label), Array.isArray(P.options) && (P.options = P.options.map((w) => ({
|
|
1542
|
+
...w,
|
|
1543
|
+
label: S(w.label)
|
|
1544
|
+
}))), P;
|
|
1545
|
+
});
|
|
1546
|
+
}
|
|
1547
|
+
const l = C(() => c(e.items)), b = {
|
|
1548
|
+
items: [
|
|
1549
|
+
{ comp: "icon", icon: "wxi-close", id: "close" },
|
|
1550
|
+
{ comp: "spacer" },
|
|
1551
|
+
{
|
|
1552
|
+
comp: "button",
|
|
1553
|
+
id: "delete",
|
|
1554
|
+
text: p("Delete"),
|
|
1555
|
+
type: "primary danger",
|
|
1556
|
+
onclick: z
|
|
1557
|
+
}
|
|
1558
|
+
]
|
|
1559
|
+
}, M = C(
|
|
1560
|
+
() => e.topBar === void 0 ? b : e.topBar
|
|
1561
|
+
), x = C(
|
|
1562
|
+
() => ["wx-editor-kanban", e.css].filter(Boolean).join(" ")
|
|
1563
|
+
);
|
|
1564
|
+
function m(h) {
|
|
1565
|
+
e.onsave?.(h);
|
|
1566
|
+
const D = s().value;
|
|
1567
|
+
D && e.api.exec("update-card", { id: D.id, card: { ...h.values } });
|
|
1568
|
+
}
|
|
1569
|
+
function u(h) {
|
|
1570
|
+
e.onchange?.(h);
|
|
1571
|
+
}
|
|
1572
|
+
function z() {
|
|
1573
|
+
const h = s().value;
|
|
1574
|
+
h && (e.api.exec("delete-card", { id: h.id }), e.api.exec("select-card", { id: null }));
|
|
1575
|
+
}
|
|
1576
|
+
function k(h) {
|
|
1577
|
+
e.onaction?.(h);
|
|
1578
|
+
const { item: D } = h;
|
|
1579
|
+
D.id === "close" && D.comp && e.api.exec("select-card", { id: null });
|
|
1580
|
+
}
|
|
1581
|
+
return (h, D) => o(s)().value ? (r(), K(o(lt), Re({ key: 0 }, o(n), {
|
|
1582
|
+
focus: t.focus,
|
|
1583
|
+
items: l.value,
|
|
1584
|
+
topBar: M.value,
|
|
1585
|
+
autoSave: t.autoSave,
|
|
1586
|
+
onchange: u,
|
|
1587
|
+
onaction: k,
|
|
1588
|
+
onsave: m,
|
|
1589
|
+
placement: t.placement,
|
|
1590
|
+
layout: t.layout,
|
|
1591
|
+
values: o(s)().value,
|
|
1592
|
+
css: x.value
|
|
1593
|
+
}), null, 16, ["focus", "items", "topBar", "autoSave", "placement", "layout", "values", "css"])) : $("", !0);
|
|
1594
|
+
}
|
|
1595
|
+
}), zn = /* @__PURE__ */ Q(gn, [["__scopeId", "data-v-238cb105"]]), yn = { class: "wx-root" }, bn = {
|
|
1596
|
+
__name: "Toolbar",
|
|
1597
|
+
props: {
|
|
1598
|
+
api: { default: null },
|
|
1599
|
+
items: { default: () => [] },
|
|
1600
|
+
undo: { type: Boolean, default: !1 },
|
|
1601
|
+
sort: { type: Boolean, default: !1 },
|
|
1602
|
+
add: { type: Boolean, default: !0 }
|
|
1603
|
+
},
|
|
1604
|
+
setup(t) {
|
|
1605
|
+
const e = {
|
|
1606
|
+
"sort-label-asc": { field: "label", dir: "asc" },
|
|
1607
|
+
"sort-label-desc": { field: "label", dir: "desc" },
|
|
1608
|
+
"sort-priority-asc": { field: "priority", dir: "asc" },
|
|
1609
|
+
"sort-priority-desc": { field: "priority", dir: "desc" }
|
|
1610
|
+
}, n = t;
|
|
1611
|
+
let s = W("wx-i18n", null);
|
|
1612
|
+
s || (s = Ee({ ...ge, ...ye }), ce("wx-i18n", s));
|
|
1613
|
+
const a = s.getGroup("kanban"), p = { undo: 0, redo: 0 }, S = Te(
|
|
1614
|
+
() => n.api?.getReactiveState()?.history
|
|
1615
|
+
), c = ["undo", "redo"], l = C(() => S()?.value ?? p);
|
|
1616
|
+
function b(m) {
|
|
1617
|
+
n.api && (m === "add-card" ? n.api.exec("add-card", { card: {}, edit: !0 }) : m === "undo" || m === "redo" ? n.api.exec(m, {}) : m === "sort-clear" ? n.api.exec("sort-cards", { sort: null }) : m in e && n.api.exec("sort-cards", { sort: e[m] }));
|
|
1618
|
+
}
|
|
1619
|
+
function M(m) {
|
|
1620
|
+
const u = { ...m }, z = typeof u.id == "string" ? u.id : "";
|
|
1621
|
+
return u.items && (u.items = u.items.map(M)), u.text && (u.text = a(u.text)), u.menuText && (u.menuText = a(u.menuText)), u.title && (u.title = a(u.title)), c.includes(z) && (u.disabled = z === "undo" ? !l.value?.undo : !l.value?.redo), !u.handler && z && (u.handler = () => b(z)), u;
|
|
1622
|
+
}
|
|
1623
|
+
const x = C(() => (n.items.length ? n.items : Ue({ undo: n.undo, sort: n.sort, add: n.add })).map(M));
|
|
1624
|
+
return (m, u) => (r(), d("div", yn, [
|
|
1625
|
+
ae(o(ct), { items: x.value }, null, 8, ["items"])
|
|
1626
|
+
]));
|
|
1627
|
+
}
|
|
1628
|
+
}, An = /* @__PURE__ */ Q(bn, [["__scopeId", "data-v-2de9d466"]]), In = /* @__PURE__ */ Object.assign({ name: "ThemesWillow" }, {
|
|
1629
|
+
__name: "Willow",
|
|
1630
|
+
props: {
|
|
1631
|
+
fonts: { type: Boolean, default: !0 }
|
|
1632
|
+
},
|
|
1633
|
+
setup(t) {
|
|
1634
|
+
const e = t;
|
|
1635
|
+
return (n, s) => n.$slots.default ? (r(), K(o(Oe), {
|
|
1636
|
+
key: 0,
|
|
1637
|
+
fonts: e.fonts
|
|
1638
|
+
}, {
|
|
1639
|
+
default: he(() => [
|
|
1640
|
+
Me(n.$slots, "default")
|
|
1641
|
+
]),
|
|
1642
|
+
_: 3
|
|
1643
|
+
}, 8, ["fonts"])) : (r(), K(o(Oe), {
|
|
1644
|
+
key: 1,
|
|
1645
|
+
fonts: e.fonts
|
|
1646
|
+
}, null, 8, ["fonts"]));
|
|
1647
|
+
}
|
|
1648
|
+
}), Pn = {
|
|
1649
|
+
__name: "WillowDark",
|
|
1650
|
+
props: {
|
|
1651
|
+
fonts: { type: Boolean, default: !0 }
|
|
1652
|
+
},
|
|
1653
|
+
setup(t) {
|
|
1654
|
+
const e = t;
|
|
1655
|
+
return (n, s) => n.$slots.default ? (r(), K(o(ze), {
|
|
1656
|
+
key: 0,
|
|
1657
|
+
fonts: e.fonts
|
|
1658
|
+
}, {
|
|
1659
|
+
default: he(() => [
|
|
1660
|
+
Me(n.$slots, "default")
|
|
1661
|
+
]),
|
|
1662
|
+
_: 3
|
|
1663
|
+
}, 8, ["fonts"])) : (r(), K(o(ze), {
|
|
1664
|
+
key: 1,
|
|
1665
|
+
fonts: e.fonts
|
|
1666
|
+
}, null, 8, ["fonts"]));
|
|
1667
|
+
}
|
|
1668
|
+
}, Rn = it.version;
|
|
1669
|
+
export {
|
|
1670
|
+
en as ContextMenu,
|
|
1671
|
+
zn as Editor,
|
|
1672
|
+
On as Kanban,
|
|
1673
|
+
jn as RestDataProvider,
|
|
1674
|
+
An as Toolbar,
|
|
1675
|
+
In as Willow,
|
|
1676
|
+
Pn as WillowDark,
|
|
1677
|
+
pt as getCardShape,
|
|
1678
|
+
ht as getEditorItems,
|
|
1679
|
+
Nn as getMenuOptions,
|
|
1680
|
+
Ve as getPriorityOptions,
|
|
1681
|
+
Vn as getToolbarItems,
|
|
1682
|
+
Wn as registerEditorItem,
|
|
1683
|
+
Rn as version
|
|
1684
|
+
};
|