@svar-ui/trial-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.
@@ -0,0 +1,1686 @@
1
+ import { computed as C, openBlock as r, createElementBlock as d, normalizeStyle as Y, Fragment as N, renderList as re, normalizeClass as J, 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 q, watchEffect as U, 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 qe, KanbanStore as Xe, getToolbarItems as Ue } from "@svar-ui/trial-kanban-store";
5
+ import { getMenuOptions as Nn, getToolbarItems as Vn } from "@svar-ui/trial-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 [c, a] of e)
20
+ n[c] = 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
+ ), c = 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, c.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
+ ), s = 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(s.value)
60
+ }, [
61
+ (r(!0), d(N, null, re(a.value, (u) => (r(), d("span", {
62
+ key: u.id,
63
+ class: J("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 c = we(e.tags)?.data;
138
+ c && n.push({
139
+ comp: "multicombo",
140
+ key: "tags",
141
+ label: "Tags",
142
+ options: c
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 c(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 s(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 = s(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: J("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: J("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 || c(t.card.attachments) > 0 && t.cardShape.attachments || c(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
+ c(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(c(t.card.attachments)), 1)
329
+ ], 8, Ot)) : $("", !0),
330
+ c(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(c(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 (c, a) => (r(), d("article", {
353
+ class: J("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 c(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", c), {
379
+ update(a) {
380
+ n = a;
381
+ },
382
+ destroy() {
383
+ t.removeEventListener("dblclick", c);
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 c = W(oe), a = W(be), p = W(Fe, void 0), S = C(() => c.getState().columnAccessor), s = q(null), l = q({
410
+ start: 0,
411
+ end: -1,
412
+ top: 0,
413
+ bottom: 0,
414
+ total: 0
415
+ }), b = q(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 (!s.value) return;
448
+ const g = getComputedStyle(s.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 (!s.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 X = T.getBoundingClientRect(), ue = s.value.getBoundingClientRect();
490
+ G = Math.max(0, X.top - ue.top), de = Math.min(
491
+ v,
492
+ X.bottom - ue.top
493
+ );
494
+ } else
495
+ G = s.value.scrollTop, de = G + s.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 U(() => {
561
+ e.virtualizeCards && !x && m.clear(), x = e.virtualizeCards, Ce(), e.column.cards, e.contentVisible, e.estimatedCardHeight, e.cardOverscan, ee();
562
+ }), U((g) => {
563
+ if (!s.value || !e.contentVisible || !e.virtualizeCards)
564
+ return;
565
+ const E = p?.() ?? s.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
+ }), U((g) => {
570
+ if (!s.value || !e.contentVisible || !e.virtualizeCards || e.fixedColumnWidth || typeof ResizeObserver > "u")
571
+ return;
572
+ let E = s.value.clientWidth;
573
+ const v = new ResizeObserver(() => {
574
+ const T = s.value?.clientWidth ?? 0;
575
+ T && T !== E && (E = T, m.clear(), ee());
576
+ });
577
+ v.observe(s.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: s
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: J([
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: J([
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(c),
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" }, qt = ["aria-label"], Xt = { 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
+ ), c = W(oe), a = C(() => c.getState().columnAccessor), p = W("wx-i18n").getGroup("kanban"), S = q(null), s = 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
+ c.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
+ c.exec("add-card", { card: m, edit: !0 });
719
+ }
720
+ return U(() => {
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
+ }), U(() => {
725
+ !e.column.collapsed && e.requestVisible && e.column.dataStatus === "unknown" && c.exec("request-data", { id: e.column.id });
726
+ }), (m, u) => (r(), d("section", {
727
+ class: J(["wx-column", t.column.css ?? "", n.value, { "wx-collapsed": t.column.collapsed, "wx-over-limit": t.column.overLimit }]),
728
+ ref_key: "root",
729
+ ref: S
730
+ }, [
731
+ t.column.collapsed ? (r(), d(N, { key: 0 }, [
732
+ R("button", {
733
+ type: "button",
734
+ class: "wx-expand",
735
+ onClick: M,
736
+ "aria-label": o(p)("Expand column")
737
+ }, [...u[0] || (u[0] = [
738
+ R("i", { class: "wx-icon wxi-angle-right" }, null, -1)
739
+ ])], 8, Kt),
740
+ R("div", jt, [
741
+ R("h3", Gt, [
742
+ R("span", null, F(t.column.label), 1),
743
+ s.value ? (r(), d("span", {
744
+ key: 0,
745
+ class: J(["wx-count", { "wx-over": t.column.overLimit }])
746
+ }, [
747
+ te(F(t.column.cards.length), 1),
748
+ l.value != null ? (r(), d(N, { key: 0 }, [
749
+ te("/" + F(l.value), 1)
750
+ ], 64)) : $("", !0)
751
+ ], 2)) : $("", !0)
752
+ ])
753
+ ])
754
+ ], 64)) : (r(), d(N, { key: 1 }, [
755
+ R("header", Yt, [
756
+ R("button", {
757
+ type: "button",
758
+ class: "wx-toggle",
759
+ onClick: M,
760
+ "aria-label": o(p)("Collapse column")
761
+ }, [...u[1] || (u[1] = [
762
+ R("i", { class: "wx-icon wxi-angle-left" }, null, -1)
763
+ ])], 8, qt),
764
+ R("h3", Xt, F(t.column.label), 1),
765
+ s.value ? (r(), d("span", {
766
+ key: 0,
767
+ class: J(["wx-count", { "wx-over": t.column.overLimit }])
768
+ }, [
769
+ te(F(t.column.cards.length), 1),
770
+ l.value != null ? (r(), d(N, { key: 0 }, [
771
+ te("/" + F(l.value), 1)
772
+ ], 64)) : $("", !0)
773
+ ], 2)) : $("", !0),
774
+ b.value ? (r(), d("button", {
775
+ key: 1,
776
+ type: "button",
777
+ class: "wx-add",
778
+ onClick: x,
779
+ "aria-label": o(p)("Add card to") + " " + t.column.label
780
+ }, [...u[2] || (u[2] = [
781
+ R("i", { class: "wx-icon wxi-plus" }, null, -1)
782
+ ])], 8, Ut)) : $("", !0)
783
+ ]),
784
+ ae(Wt, {
785
+ column: t.column,
786
+ readonly: t.readonly,
787
+ cardContent: t.cardContent,
788
+ cardShape: t.cardShape,
789
+ contentVisible: t.contentVisible,
790
+ virtualizeCards: t.virtualizeCards,
791
+ estimatedCardHeight: t.estimatedCardHeight,
792
+ cardOverscan: t.cardOverscan,
793
+ fixedColumnWidth: t.fixedColumnWidth,
794
+ cardCss: t.cardCss
795
+ }, null, 8, ["column", "readonly", "cardContent", "cardShape", "contentVisible", "virtualizeCards", "estimatedCardHeight", "cardOverscan", "fixedColumnWidth", "cardCss"])
796
+ ], 64))
797
+ ], 2));
798
+ }
799
+ }), Qt = /* @__PURE__ */ Q(Jt, [["__scopeId", "data-v-aedbf81a"]]), Zt = ["oncontextmenu"], _t = {
800
+ __name: "ContextMenu",
801
+ props: {
802
+ options: { default: () => [] },
803
+ api: { default: null },
804
+ resolver: { default: null },
805
+ filter: { default: null },
806
+ at: { default: "point" },
807
+ onclick: { type: Function },
808
+ css: {}
809
+ },
810
+ setup(t, { expose: e }) {
811
+ const n = t, c = Ke(), a = W(oe, void 0);
812
+ function p(w) {
813
+ if (typeof w == "string" && w.startsWith(":")) {
814
+ const y = document.createElement("div");
815
+ return y.setAttribute("data-id", w), ne(y);
816
+ }
817
+ return typeof w == "string" || typeof w == "number" ? w : null;
818
+ }
819
+ function S(w) {
820
+ const y = p(w);
821
+ if (y != null)
822
+ return n.api ? n.api.getCards().find((A) => A.id === y) : a?.getState().cards.getById(y);
823
+ }
824
+ function s(w, y) {
825
+ (n.api ?? a)?.exec(w, y);
826
+ }
827
+ let l = null, b = W("wx-i18n", void 0);
828
+ b || (b = Ee({ ...ge, ...ye }), ce("wx-i18n", b));
829
+ const M = b.getGroup("kanban");
830
+ function x(w) {
831
+ 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));
832
+ }
833
+ function m() {
834
+ const w = n.options.length ? n.options : qe();
835
+ return x(w);
836
+ }
837
+ function u(w, y) {
838
+ if (w == null) return null;
839
+ const A = S(w);
840
+ return !A || n.resolver && !n.resolver(A, y) ? null : (l = A.id, A);
841
+ }
842
+ function z(w) {
843
+ const y = w?.action;
844
+ if (!y) return;
845
+ const A = typeof l == "object" ? l.id : l;
846
+ y.id === "edit-card" ? s("select-card", { id: A }) : y.id === "duplicate-card" ? s("duplicate-card", { id: A }) : y.id === "delete-card" && s("delete-card", { id: A }), n.onclick?.(w);
847
+ }
848
+ function k(w, y) {
849
+ return n.filter ? n.filter(w, y) : !0;
850
+ }
851
+ const h = C(() => m()), D = q(null);
852
+ function P(w, y) {
853
+ D.value.show(w, y);
854
+ }
855
+ return e({ show: P }), (w, y) => (r(), d(N, null, [
856
+ ae(o(ot), {
857
+ filter: k,
858
+ options: h.value,
859
+ dataKey: "id",
860
+ resolver: u,
861
+ onclick: z,
862
+ css: t.css,
863
+ at: t.at,
864
+ ref_key: "menu",
865
+ ref: D
866
+ }, null, 8, ["options", "css", "at"]),
867
+ o(c).default ? (r(), d("span", {
868
+ key: 0,
869
+ oncontextmenu: D.value?.show,
870
+ "data-menu-ignore": "true"
871
+ }, [
872
+ Me(w.$slots, "default", {}, void 0, !0)
873
+ ], 8, Zt)) : $("", !0)
874
+ ], 64));
875
+ }
876
+ }, en = /* @__PURE__ */ Q(_t, [["__scopeId", "data-v-dc3e87b0"]]), tn = {
877
+ __name: "DragGhost",
878
+ props: {
879
+ root: {},
880
+ cardContent: {},
881
+ cardShape: {}
882
+ },
883
+ setup(t) {
884
+ const e = t, n = W(be), c = W(oe), a = C(() => !n?.active || n.cardId == null ? null : c.getState().cards.getById(n.cardId) ?? null), p = C(() => {
885
+ if (!n) return { x: 0, y: 0 };
886
+ let S = n.pointer.x - n.offset.x, s = n.pointer.y - n.offset.y;
887
+ if (e.root && n.active) {
888
+ const l = e.root.getBoundingClientRect();
889
+ S = Math.max(l.left, Math.min(S, l.right - n.width)), s = Math.max(l.top, Math.min(s, l.bottom - n.height));
890
+ }
891
+ return { x: S, y: s };
892
+ });
893
+ return (S, s) => o(n)?.active && a.value ? (r(), d("div", {
894
+ key: 0,
895
+ class: "wx-ghost",
896
+ style: Y({
897
+ width: o(n).width + "px",
898
+ height: o(n).height + "px",
899
+ transform: "translate(" + p.value.x + "px, " + p.value.y + "px)"
900
+ })
901
+ }, [
902
+ ae(Se, {
903
+ card: a.value,
904
+ cardContent: t.cardContent,
905
+ cardShape: t.cardShape
906
+ }, null, 8, ["card", "cardContent", "cardShape"])
907
+ ], 4)) : $("", !0);
908
+ }
909
+ }, nn = /* @__PURE__ */ Q(tn, [["__scopeId", "data-v-40eca5a6"]]), Ae = 4;
910
+ function an(t, e) {
911
+ let n = e, c = 0, a = 0, p = !1, S = !1, s = null;
912
+ function l(k) {
913
+ if (k.button !== 0 || n.readonly || !n.dnd || !n.store)
914
+ return;
915
+ const h = k.target, D = h ? h.closest("[data-kanban-card-id]") : null;
916
+ if (!D || !t.contains(D)) return;
917
+ const P = D.closest("[data-kanban-column-cards]");
918
+ if (!P) return;
919
+ const w = ne(D, "data-kanban-card-id"), y = ne(P, "data-kanban-column-cards");
920
+ if (w == null || y == null) return;
921
+ const { viewData: A } = n.store.getState(), V = A.columns.find((f) => f.id === y), j = V?.cards.find((f) => f.id === w);
922
+ !V || !j || j.id == null || (s = {
923
+ dnd: n.dnd,
924
+ store: n.store,
925
+ id: j.id,
926
+ column: V.id,
927
+ cardEl: D
928
+ }, p = !0, S = !1, c = k.clientX, a = k.clientY, window.addEventListener("pointermove", b), window.addEventListener("pointerup", M), window.addEventListener("keydown", x));
929
+ }
930
+ function b(k) {
931
+ if (!(!p || !s)) {
932
+ if (n.readonly) {
933
+ z();
934
+ return;
935
+ }
936
+ if (!S) {
937
+ const h = k.clientX - c, D = k.clientY - a;
938
+ if (h * h + D * D < Ae * Ae) return;
939
+ m(k, s);
940
+ }
941
+ s.dnd.pointer = { x: k.clientX, y: k.clientY }, rn(k.clientX, k.clientY, s);
942
+ }
943
+ }
944
+ function M() {
945
+ u(), S && s && (on(s), s.dnd.reset(), document.body.style.userSelect = "", ln()), p = !1, S = !1, s = null;
946
+ }
947
+ function x(k) {
948
+ k.key !== "Escape" || !S || !s || z();
949
+ }
950
+ function m(k, h) {
951
+ const D = h.cardEl.getBoundingClientRect();
952
+ h.dnd.width = D.width, h.dnd.height = D.height, h.dnd.offset = { x: c - 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;
953
+ }
954
+ function u() {
955
+ window.removeEventListener("pointermove", b), window.removeEventListener("pointerup", M), window.removeEventListener("keydown", x);
956
+ }
957
+ function z() {
958
+ u(), S && s && (s.dnd.reset(), document.body.style.userSelect = ""), p = !1, S = !1, s = null;
959
+ }
960
+ return t.addEventListener("pointerdown", l), {
961
+ update(k) {
962
+ n = k, n.readonly && (p || S) && z();
963
+ },
964
+ destroy() {
965
+ t.removeEventListener("pointerdown", l), z();
966
+ }
967
+ };
968
+ }
969
+ function rn(t, e, n) {
970
+ const c = document.elementFromPoint(t, e), a = c ? c.closest("[data-kanban-column-cards]") : null;
971
+ if (!a)
972
+ return;
973
+ const p = ne(a, "data-kanban-column-cards");
974
+ if (p == null) return;
975
+ const s = n.store.getState().viewData.columns.find((m) => m.id === p);
976
+ if (!s) return;
977
+ const l = Array.from(
978
+ a.querySelectorAll("[data-kanban-card-id]")
979
+ ).filter((m) => ne(m, "data-kanban-card-id") !== n.id);
980
+ let b = null;
981
+ for (const m of l) {
982
+ const u = m.getBoundingClientRect();
983
+ if (e < u.top + u.height / 2) {
984
+ b = Ie(
985
+ s,
986
+ ne(m, "data-kanban-card-id")
987
+ );
988
+ break;
989
+ }
990
+ }
991
+ b == null && (b = Ie(
992
+ s,
993
+ ne(a, "data-kanban-after-rendered-before-id")
994
+ ));
995
+ const M = { column: s.id, beforeId: b }, x = n.dnd.target;
996
+ (!x || x.column !== M.column || x.beforeId !== M.beforeId) && (n.dnd.target = M);
997
+ }
998
+ function Ie(t, e) {
999
+ return e == null ? null : t.cards.find((n) => n.id === e)?.id ?? null;
1000
+ }
1001
+ function on(t) {
1002
+ const e = t.dnd.target;
1003
+ if (!e) return;
1004
+ const n = {
1005
+ id: t.id,
1006
+ column: e.column
1007
+ };
1008
+ e.beforeId != null && (n.before = e.beforeId), t.store.exec("move-card", n);
1009
+ }
1010
+ function ln() {
1011
+ const t = (e) => {
1012
+ e.preventDefault(), e.stopPropagation(), window.removeEventListener("click", t, !0);
1013
+ };
1014
+ window.addEventListener("click", t, !0), setTimeout(() => window.removeEventListener("click", t, !0), 0);
1015
+ }
1016
+ function cn(t, e = "right-start") {
1017
+ let n = null;
1018
+ const c = q(null), a = q({ x: 0, y: 0 }), p = q(null);
1019
+ function S(M) {
1020
+ if (a.value = { x: M.clientX, y: M.clientY }, p.value || !M.target) return;
1021
+ const x = Ne(M.target) ?? null;
1022
+ if (x === n) return;
1023
+ if (n = x, !x) {
1024
+ c.value = null;
1025
+ return;
1026
+ }
1027
+ const m = t(ne(x));
1028
+ c.value = m ? { card: m } : null;
1029
+ }
1030
+ function s() {
1031
+ n = null, c.value = null;
1032
+ }
1033
+ function l(M) {
1034
+ if (c.value = null, n = null, !M) {
1035
+ p.value = null;
1036
+ return;
1037
+ }
1038
+ const x = t(M.cardId);
1039
+ x && (p.value = {
1040
+ card: x,
1041
+ element: M.element,
1042
+ at: e
1043
+ });
1044
+ }
1045
+ function b() {
1046
+ p.value = null;
1047
+ }
1048
+ return {
1049
+ get tooltipState() {
1050
+ return c.value;
1051
+ },
1052
+ get mousePos() {
1053
+ return a.value;
1054
+ },
1055
+ get cardPopupState() {
1056
+ return p.value;
1057
+ },
1058
+ handleTooltipMove: S,
1059
+ handleTooltipLeave: s,
1060
+ handleCardPopup: l,
1061
+ hideCardPopup: b
1062
+ };
1063
+ }
1064
+ const sn = ["aria-label"], dn = { class: "wx-content" }, un = ["href"], fn = /* @__PURE__ */ Object.assign({ name: "KanbanLayout" }, {
1065
+ __name: "Layout",
1066
+ props: {
1067
+ cardShape: {},
1068
+ readonly: { type: Boolean, default: !1 },
1069
+ render: {},
1070
+ cardContent: {},
1071
+ tooltip: {},
1072
+ cardPopup: {},
1073
+ cardCss: { type: Function },
1074
+ columnCss: { type: Function }
1075
+ },
1076
+ setup(t) {
1077
+ const e = t, n = C(() => e.render?.columnScroll ?? !0), c = C(() => e.render?.fixedColumnWidth ?? !0), a = C(() => e.render?.virtualizeCards ?? !1), p = C(
1078
+ () => e.render?.virtualizeColumns ?? !1
1079
+ ), S = C(
1080
+ () => e.render?.estimatedCardHeight ?? 80
1081
+ ), s = 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 = q(null), k = q(null), h = q(/* @__PURE__ */ new Set());
1082
+ let D = 0;
1083
+ const P = /* @__PURE__ */ new Map();
1084
+ ce(
1085
+ Fe,
1086
+ () => n.value ? null : k.value ?? null
1087
+ );
1088
+ function w(i, L) {
1089
+ if (i.size !== L.size) return !1;
1090
+ for (const B of i)
1091
+ if (!L.has(B)) return !1;
1092
+ return !0;
1093
+ }
1094
+ function y(i) {
1095
+ w(h.value, i) || (h.value = i);
1096
+ }
1097
+ function A() {
1098
+ if (!p.value || !k.value) {
1099
+ y(/* @__PURE__ */ new Set());
1100
+ return;
1101
+ }
1102
+ const i = M.value.columns;
1103
+ if (!i.length) {
1104
+ y(/* @__PURE__ */ new Set());
1105
+ return;
1106
+ }
1107
+ const L = k.value.getBoundingClientRect();
1108
+ let B = -1, X = -1;
1109
+ for (let _ = 0; _ < i.length; _++) {
1110
+ const $e = P.get(i[_].id);
1111
+ if (!$e) continue;
1112
+ const Be = $e.getBoundingClientRect();
1113
+ Be.right >= L.left && Be.left <= L.right && (B === -1 && (B = _), X = _);
1114
+ }
1115
+ if (B === -1 || X === -1) {
1116
+ y(/* @__PURE__ */ new Set());
1117
+ return;
1118
+ }
1119
+ const ue = Math.max(0, Math.floor(l.value || 0));
1120
+ B = Math.max(0, B - ue), X = Math.min(i.length - 1, X + ue);
1121
+ const Le = /* @__PURE__ */ new Set();
1122
+ for (let _ = B; _ <= X; _++)
1123
+ Le.add(i[_].id);
1124
+ y(Le);
1125
+ }
1126
+ function V() {
1127
+ D || (D = requestAnimationFrame(() => {
1128
+ D = 0, A();
1129
+ }));
1130
+ }
1131
+ function j(i, L) {
1132
+ L ? P.set(i, L) : P.delete(i), V();
1133
+ }
1134
+ function f() {
1135
+ k.value && k.value.style.setProperty(
1136
+ "--wx-kanban-scroll-height",
1137
+ `${k.value.clientHeight}px`
1138
+ );
1139
+ }
1140
+ function O(i) {
1141
+ return !p.value || h.value.size === 0 || h.value.has(i);
1142
+ }
1143
+ function I(i) {
1144
+ return !p.value || h.value.has(i);
1145
+ }
1146
+ function Z(i) {
1147
+ return b.getState().cards.getById(i);
1148
+ }
1149
+ const H = cn(Z, "right-start"), xe = { trackScroll: !0 };
1150
+ function ee(i) {
1151
+ !e.readonly && i != null && b.exec("select-card", { id: i });
1152
+ }
1153
+ function Ce(i, L) {
1154
+ if (!(e.readonly || u?.active)) {
1155
+ if (e.cardPopup && i != null) {
1156
+ const B = L?.target, X = B ? Ne(B) : null;
1157
+ if (X) {
1158
+ H.handleCardPopup({ cardId: i, element: X });
1159
+ return;
1160
+ }
1161
+ }
1162
+ ee(i);
1163
+ }
1164
+ }
1165
+ function se(i) {
1166
+ if (e.readonly) return;
1167
+ i?.preventDefault();
1168
+ const L = document.activeElement, B = L ? Ze(L) : null;
1169
+ if (e.cardPopup && B != null && L) {
1170
+ H.handleCardPopup({
1171
+ cardId: B,
1172
+ element: L
1173
+ });
1174
+ return;
1175
+ }
1176
+ ee(B);
1177
+ }
1178
+ const le = C(
1179
+ () => e.cardShape?.menu ? typeof e.cardShape.menu == "object" ? e.cardShape.menu : {} : null
1180
+ ), ie = q(null);
1181
+ function g(i, L) {
1182
+ e.readonly || i == null || !ie.value || (L.stopPropagation(), ie.value.show(L, i));
1183
+ }
1184
+ function E(i) {
1185
+ return Je(i, {
1186
+ click: Ce,
1187
+ menu: g
1188
+ });
1189
+ }
1190
+ function v(i) {
1191
+ return { destroy: Qe.subscribe((B) => {
1192
+ B.configure(
1193
+ {
1194
+ enter: se,
1195
+ space: se
1196
+ },
1197
+ i
1198
+ );
1199
+ }) };
1200
+ }
1201
+ const T = {
1202
+ mounted(i, L) {
1203
+ const B = an(i, L.value);
1204
+ i._cardDrag = B;
1205
+ },
1206
+ updated(i, L) {
1207
+ i._cardDrag?.update(L.value);
1208
+ },
1209
+ unmounted(i) {
1210
+ i._cardDrag?.destroy();
1211
+ }
1212
+ }, G = {
1213
+ mounted(i) {
1214
+ const L = E(i);
1215
+ i._delegateCardClick = L;
1216
+ },
1217
+ unmounted(i) {
1218
+ i._delegateCardClick?.destroy();
1219
+ }
1220
+ }, de = {
1221
+ mounted(i) {
1222
+ const L = v(i);
1223
+ i._cardHotkeys = L;
1224
+ },
1225
+ unmounted(i) {
1226
+ i._cardHotkeys?.destroy();
1227
+ }
1228
+ };
1229
+ return U(() => {
1230
+ p.value, l.value, c.value, M.value.columns, V();
1231
+ }), U(() => {
1232
+ if (!k.value || !p.value || typeof ResizeObserver > "u")
1233
+ return;
1234
+ const i = new ResizeObserver(() => V());
1235
+ i.observe(k.value), ve(() => i.disconnect());
1236
+ }), U(() => {
1237
+ if (!k.value) return;
1238
+ if (f(), window.addEventListener("resize", f), typeof ResizeObserver > "u") {
1239
+ ve(
1240
+ () => window.removeEventListener("resize", f)
1241
+ );
1242
+ return;
1243
+ }
1244
+ const i = new ResizeObserver(f);
1245
+ i.observe(k.value), ve(() => {
1246
+ i.disconnect(), window.removeEventListener("resize", f);
1247
+ });
1248
+ }), Pe(() => {
1249
+ D && cancelAnimationFrame(D);
1250
+ }), (i, L) => (r(), d("div", {
1251
+ class: "wx-kanban",
1252
+ role: "region",
1253
+ "aria-label": o(m)("Kanban board"),
1254
+ ref_key: "root",
1255
+ ref: z
1256
+ }, [
1257
+ ke((r(), d("div", {
1258
+ class: J(["wx-board", {
1259
+ "wx-scroll-board": !n.value,
1260
+ "wx-layout-flex": !c.value
1261
+ }]),
1262
+ onMousemove: L[0] || (L[0] = (B) => t.tooltip && o(H).handleTooltipMove(B)),
1263
+ onMouseleave: L[1] || (L[1] = (B) => t.tooltip && o(H).handleTooltipLeave(B))
1264
+ }, [
1265
+ R("div", {
1266
+ class: "wx-scroll",
1267
+ ref_key: "scroll",
1268
+ ref: k,
1269
+ onScroll: V
1270
+ }, [
1271
+ R("div", dn, [
1272
+ (r(!0), d(N, null, re(o(M).columns, (B) => (r(), K(Qt, {
1273
+ key: B.id,
1274
+ column: B,
1275
+ readonly: t.readonly,
1276
+ cardContent: t.cardContent,
1277
+ cardShape: t.cardShape,
1278
+ contentVisible: O(B.id),
1279
+ requestVisible: I(B.id),
1280
+ virtualizeCards: a.value,
1281
+ estimatedCardHeight: S.value,
1282
+ cardOverscan: s.value,
1283
+ fixedColumnWidth: c.value,
1284
+ registerColumn: j,
1285
+ cardCss: t.cardCss,
1286
+ columnCss: t.columnCss
1287
+ }, null, 8, ["column", "readonly", "cardContent", "cardShape", "contentVisible", "requestVisible", "virtualizeCards", "estimatedCardHeight", "cardOverscan", "fixedColumnWidth", "cardCss", "columnCss"]))), 128))
1288
+ ])
1289
+ ], 544)
1290
+ ], 34)), [
1291
+ [T, { dnd: o(u), store: o(b), readonly: t.readonly }],
1292
+ [G],
1293
+ [de]
1294
+ ]),
1295
+ o(x) ? (r(), d("a", {
1296
+ key: 0,
1297
+ style: Y(o(x).style),
1298
+ href: o(x).link,
1299
+ target: "_blank"
1300
+ }, F(o(x).text), 13, un)) : $("", !0),
1301
+ ae(nn, {
1302
+ root: z.value,
1303
+ cardContent: t.cardContent,
1304
+ cardShape: t.cardShape
1305
+ }, null, 8, ["root", "cardContent", "cardShape"]),
1306
+ le.value ? (r(), K(en, {
1307
+ key: 1,
1308
+ options: le.value.options,
1309
+ filter: le.value.filter,
1310
+ onclick: le.value.onclick,
1311
+ ref_key: "cardMenu",
1312
+ ref: ie
1313
+ }, null, 8, ["options", "filter", "onclick"])) : $("", !0),
1314
+ o(H).tooltipState && t.tooltip ? (r(), d("div", {
1315
+ key: 2,
1316
+ class: "wx-tooltip",
1317
+ style: Y(`position:fixed;left:${o(H).mousePos.x + 12}px;top:${o(H).mousePos.y + 16}px;z-index:10000;pointer-events:none`),
1318
+ "aria-hidden": "true"
1319
+ }, [
1320
+ (r(), K(pe(t.tooltip), {
1321
+ card: o(H).tooltipState.card
1322
+ }, null, 8, ["card"]))
1323
+ ], 4)) : $("", !0),
1324
+ o(H).cardPopupState && t.cardPopup ? (r(), K(o(_e), Re({
1325
+ key: 3,
1326
+ at: o(H).cardPopupState.at,
1327
+ parent: o(H).cardPopupState.element,
1328
+ oncancel: o(H).hideCardPopup
1329
+ }, xe), {
1330
+ default: he(() => [
1331
+ (r(), K(pe(t.cardPopup), {
1332
+ card: o(H).cardPopupState.card,
1333
+ close: o(H).hideCardPopup
1334
+ }, null, 8, ["card", "close"]))
1335
+ ]),
1336
+ _: 1
1337
+ }, 16, ["at", "parent", "oncancel"])) : $("", !0)
1338
+ ], 8, sn));
1339
+ }
1340
+ }), mn = /* @__PURE__ */ Q(fn, [["__scopeId", "data-v-7797d7e5"]]), vn = ["data-id"], pn = /* @__PURE__ */ Object.assign({ name: "KanbanExportLayout" }, {
1341
+ __name: "ExportLayout",
1342
+ props: {
1343
+ cardShape: {},
1344
+ cardCss: { type: Function },
1345
+ columnCss: { type: Function },
1346
+ cardContent: {}
1347
+ },
1348
+ setup(t) {
1349
+ const e = t, n = W(oe), c = De(n.getReactiveState().viewData), a = q(null);
1350
+ return U(() => {
1351
+ const p = {};
1352
+ if (e.cardContent) {
1353
+ const l = {};
1354
+ a.value?.querySelectorAll(".wx-ex-cell").forEach((b) => {
1355
+ l[b.dataset.id] = b.innerHTML;
1356
+ }), p.cardContent = l;
1357
+ }
1358
+ const S = {};
1359
+ e.cardCss && (c.value.columns.forEach((l) => {
1360
+ l.cards.forEach((b) => {
1361
+ S[b.id.toString()] = e.cardCss(b, l);
1362
+ });
1363
+ }), p.cardCss = S);
1364
+ const s = {};
1365
+ e.columnCss && (c.value.columns.forEach((l) => {
1366
+ s[l.id.toString()] = e.columnCss(l.cards, l);
1367
+ }), p.columnCss = s), n.exec("export-data", { format: "inner", data: p });
1368
+ }), (p, S) => (r(), d("div", {
1369
+ style: { visibility: "hidden", position: "absolute" },
1370
+ ref_key: "root",
1371
+ ref: a
1372
+ }, [
1373
+ t.cardContent ? (r(!0), d(N, { key: 0 }, re(o(c).columns, (s) => (r(), d(N, {
1374
+ key: s.id
1375
+ }, [
1376
+ (r(!0), d(N, null, re(s.cards, (l) => (r(), d("div", {
1377
+ key: l.id,
1378
+ class: "wx-ex-cell",
1379
+ "data-id": l.id
1380
+ }, [
1381
+ (r(), K(pe(t.cardContent), {
1382
+ card: l,
1383
+ cardShape: t.cardShape
1384
+ }, null, 8, ["card", "cardShape"]))
1385
+ ], 8, vn))), 128))
1386
+ ], 64))), 128)) : $("", !0)
1387
+ ], 512));
1388
+ }
1389
+ });
1390
+ function hn() {
1391
+ const t = je({
1392
+ active: !1,
1393
+ cardId: null,
1394
+ sourceColumn: null,
1395
+ width: 0,
1396
+ height: 0,
1397
+ pointer: { x: 0, y: 0 },
1398
+ offset: { x: 0, y: 0 },
1399
+ target: null,
1400
+ reset() {
1401
+ t.active = !1, t.cardId = null, t.sourceColumn = null, t.target = null;
1402
+ }
1403
+ });
1404
+ return t;
1405
+ }
1406
+ const On = /* @__PURE__ */ Object.assign({ name: "KanbanKanban" }, {
1407
+ __name: "Kanban",
1408
+ props: {
1409
+ cards: { default: () => [] },
1410
+ columns: { default: () => [] },
1411
+ columnAccessor: { default: "column" },
1412
+ filters: { default: () => /* @__PURE__ */ new Map() },
1413
+ sort: { default: null },
1414
+ card: { default: () => pt() },
1415
+ readonly: { type: Boolean, default: !1 },
1416
+ render: {},
1417
+ dynamicData: { type: Boolean, default: !1 },
1418
+ history: { type: Boolean, default: !1 },
1419
+ cardContent: {},
1420
+ init: { type: Function },
1421
+ tooltip: {},
1422
+ cardPopup: {},
1423
+ cardCss: { type: Function },
1424
+ columnCss: { type: Function }
1425
+ },
1426
+ setup(t, { expose: e }) {
1427
+ const n = t, c = He(), a = new Xe(Ge, { undo: n.history });
1428
+ let p = a.in;
1429
+ const S = /-/g, s = new Ye((A, V) => {
1430
+ const j = "on" + A.replace(S, ""), f = c[j];
1431
+ typeof f == "function" && f(V);
1432
+ });
1433
+ p.setNext(s);
1434
+ 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 = {
1435
+ getState: l,
1436
+ getReactiveState: b,
1437
+ getStores: M,
1438
+ getCards: x,
1439
+ setNext: k,
1440
+ exec: m,
1441
+ on: u,
1442
+ detach: z,
1443
+ intercept: h
1444
+ };
1445
+ ce(oe, {
1446
+ getReactiveState: b,
1447
+ getState: l,
1448
+ exec: m,
1449
+ getBrandmark: a.getBrandmark.bind(a)
1450
+ }), ce(be, hn());
1451
+ const P = () => ({
1452
+ cards: n.cards,
1453
+ columns: n.columns,
1454
+ columnAccessor: n.columnAccessor,
1455
+ filters: n.filters,
1456
+ sort: n.sort,
1457
+ dynamicData: n.dynamicData
1458
+ });
1459
+ a.init({ ...P(), renderMode: "" }), n.init?.(D);
1460
+ let w = !0;
1461
+ U(() => {
1462
+ const A = P();
1463
+ if (w) {
1464
+ w = !1;
1465
+ return;
1466
+ }
1467
+ a.init(A);
1468
+ }), U(() => {
1469
+ a.meta["export-data"] = {
1470
+ card: n.card,
1471
+ cardContent: n.cardContent,
1472
+ cardCss: n.cardCss,
1473
+ columnCss: n.columnCss
1474
+ };
1475
+ });
1476
+ const y = De(a.getReactive().renderMode);
1477
+ return e({
1478
+ getState: l,
1479
+ getReactiveState: b,
1480
+ getStores: M,
1481
+ getCards: x,
1482
+ exec: m,
1483
+ on: u,
1484
+ detach: z,
1485
+ setNext: k,
1486
+ intercept: h
1487
+ }), (A, V) => (r(), K(o(et), {
1488
+ words: { ...o(ye), ...o(ge) },
1489
+ optional: !0
1490
+ }, {
1491
+ default: he(() => [
1492
+ ae(mn, {
1493
+ cardShape: n.card,
1494
+ readonly: t.readonly,
1495
+ render: t.render,
1496
+ cardContent: t.cardContent,
1497
+ tooltip: t.tooltip,
1498
+ cardPopup: t.cardPopup,
1499
+ cardCss: t.cardCss,
1500
+ columnCss: t.columnCss
1501
+ }, null, 8, ["cardShape", "readonly", "render", "cardContent", "tooltip", "cardPopup", "cardCss", "columnCss"]),
1502
+ o(y) === "export" ? (r(), K(pn, {
1503
+ key: 0,
1504
+ cardShape: n.card,
1505
+ cardContent: t.cardContent,
1506
+ cardCss: t.cardCss,
1507
+ columnCss: t.columnCss
1508
+ }, null, 8, ["cardShape", "cardContent", "cardCss", "columnCss"])) : $("", !0)
1509
+ ]),
1510
+ _: 1
1511
+ }, 8, ["words"]));
1512
+ }
1513
+ }), gn = /* @__PURE__ */ Object.assign({ inheritAttrs: !1, name: "KanbanComponentsEditor" }, {
1514
+ __name: "Editor",
1515
+ props: {
1516
+ api: {},
1517
+ values: {},
1518
+ items: { default: () => ht() },
1519
+ placement: { default: "sidebar" },
1520
+ layout: { default: "default" },
1521
+ focus: { type: Boolean, default: !0 },
1522
+ css: { default: "" },
1523
+ topBar: {},
1524
+ autoSave: { type: Boolean, default: !0 },
1525
+ onchange: { type: Function },
1526
+ onsave: { type: Function },
1527
+ onaction: { type: Function }
1528
+ },
1529
+ setup(t) {
1530
+ me("richselect", tt), me("multicombo", nt), me("datepicker", at), me("slider", rt);
1531
+ const e = t, n = He(), c = Te(
1532
+ () => e.api?.getReactiveState()?.editorData
1533
+ );
1534
+ let a = W("wx-i18n", void 0);
1535
+ a || (a = Ee({ ...ge, ...ye }), ce("wx-i18n", a));
1536
+ const p = a.getGroup("kanban");
1537
+ function S(h) {
1538
+ return typeof h == "string" ? p(h) : h;
1539
+ }
1540
+ function s(h) {
1541
+ return h.map((D) => {
1542
+ const P = { ...D };
1543
+ return P.label = S(P.label), Array.isArray(P.options) && (P.options = P.options.map((w) => ({
1544
+ ...w,
1545
+ label: S(w.label)
1546
+ }))), P;
1547
+ });
1548
+ }
1549
+ const l = C(() => s(e.items)), b = {
1550
+ items: [
1551
+ { comp: "icon", icon: "wxi-close", id: "close" },
1552
+ { comp: "spacer" },
1553
+ {
1554
+ comp: "button",
1555
+ id: "delete",
1556
+ text: p("Delete"),
1557
+ type: "primary danger",
1558
+ onclick: z
1559
+ }
1560
+ ]
1561
+ }, M = C(
1562
+ () => e.topBar === void 0 ? b : e.topBar
1563
+ ), x = C(
1564
+ () => ["wx-editor-kanban", e.css].filter(Boolean).join(" ")
1565
+ );
1566
+ function m(h) {
1567
+ e.onsave?.(h);
1568
+ const D = c().value;
1569
+ D && e.api.exec("update-card", { id: D.id, card: { ...h.values } });
1570
+ }
1571
+ function u(h) {
1572
+ e.onchange?.(h);
1573
+ }
1574
+ function z() {
1575
+ const h = c().value;
1576
+ h && (e.api.exec("delete-card", { id: h.id }), e.api.exec("select-card", { id: null }));
1577
+ }
1578
+ function k(h) {
1579
+ e.onaction?.(h);
1580
+ const { item: D } = h;
1581
+ D.id === "close" && D.comp && e.api.exec("select-card", { id: null });
1582
+ }
1583
+ return (h, D) => o(c)().value ? (r(), K(o(lt), Re({ key: 0 }, o(n), {
1584
+ focus: t.focus,
1585
+ items: l.value,
1586
+ topBar: M.value,
1587
+ autoSave: t.autoSave,
1588
+ onchange: u,
1589
+ onaction: k,
1590
+ onsave: m,
1591
+ placement: t.placement,
1592
+ layout: t.layout,
1593
+ values: o(c)().value,
1594
+ css: x.value
1595
+ }), null, 16, ["focus", "items", "topBar", "autoSave", "placement", "layout", "values", "css"])) : $("", !0);
1596
+ }
1597
+ }), zn = /* @__PURE__ */ Q(gn, [["__scopeId", "data-v-238cb105"]]), yn = { class: "wx-root" }, bn = {
1598
+ __name: "Toolbar",
1599
+ props: {
1600
+ api: { default: null },
1601
+ items: { default: () => [] },
1602
+ undo: { type: Boolean, default: !1 },
1603
+ sort: { type: Boolean, default: !1 },
1604
+ add: { type: Boolean, default: !0 }
1605
+ },
1606
+ setup(t) {
1607
+ const e = {
1608
+ "sort-label-asc": { field: "label", dir: "asc" },
1609
+ "sort-label-desc": { field: "label", dir: "desc" },
1610
+ "sort-priority-asc": { field: "priority", dir: "asc" },
1611
+ "sort-priority-desc": { field: "priority", dir: "desc" }
1612
+ }, n = t;
1613
+ let c = W("wx-i18n", null);
1614
+ c || (c = Ee({ ...ge, ...ye }), ce("wx-i18n", c));
1615
+ const a = c.getGroup("kanban"), p = { undo: 0, redo: 0 }, S = Te(
1616
+ () => n.api?.getReactiveState()?.history
1617
+ ), s = ["undo", "redo"], l = C(() => S()?.value ?? p);
1618
+ function b(m) {
1619
+ 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] }));
1620
+ }
1621
+ function M(m) {
1622
+ const u = { ...m }, z = typeof u.id == "string" ? u.id : "";
1623
+ 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)), s.includes(z) && (u.disabled = z === "undo" ? !l.value?.undo : !l.value?.redo), !u.handler && z && (u.handler = () => b(z)), u;
1624
+ }
1625
+ const x = C(() => (n.items.length ? n.items : Ue({ undo: n.undo, sort: n.sort, add: n.add })).map(M));
1626
+ return (m, u) => (r(), d("div", yn, [
1627
+ ae(o(ct), { items: x.value }, null, 8, ["items"])
1628
+ ]));
1629
+ }
1630
+ }, An = /* @__PURE__ */ Q(bn, [["__scopeId", "data-v-cb870cea"]]), In = /* @__PURE__ */ Object.assign({ name: "ThemesWillow" }, {
1631
+ __name: "Willow",
1632
+ props: {
1633
+ fonts: { type: Boolean, default: !0 }
1634
+ },
1635
+ setup(t) {
1636
+ const e = t;
1637
+ return (n, c) => n.$slots.default ? (r(), K(o(Oe), {
1638
+ key: 0,
1639
+ fonts: e.fonts
1640
+ }, {
1641
+ default: he(() => [
1642
+ Me(n.$slots, "default")
1643
+ ]),
1644
+ _: 3
1645
+ }, 8, ["fonts"])) : (r(), K(o(Oe), {
1646
+ key: 1,
1647
+ fonts: e.fonts
1648
+ }, null, 8, ["fonts"]));
1649
+ }
1650
+ }), Pn = {
1651
+ __name: "WillowDark",
1652
+ props: {
1653
+ fonts: { type: Boolean, default: !0 }
1654
+ },
1655
+ setup(t) {
1656
+ const e = t;
1657
+ return (n, c) => n.$slots.default ? (r(), K(o(ze), {
1658
+ key: 0,
1659
+ fonts: e.fonts
1660
+ }, {
1661
+ default: he(() => [
1662
+ Me(n.$slots, "default")
1663
+ ]),
1664
+ _: 3
1665
+ }, 8, ["fonts"])) : (r(), K(o(ze), {
1666
+ key: 1,
1667
+ fonts: e.fonts
1668
+ }, null, 8, ["fonts"]));
1669
+ }
1670
+ }, Rn = it.version;
1671
+ export {
1672
+ en as ContextMenu,
1673
+ zn as Editor,
1674
+ On as Kanban,
1675
+ jn as RestDataProvider,
1676
+ An as Toolbar,
1677
+ In as Willow,
1678
+ Pn as WillowDark,
1679
+ pt as getCardShape,
1680
+ ht as getEditorItems,
1681
+ Nn as getMenuOptions,
1682
+ Ve as getPriorityOptions,
1683
+ Vn as getToolbarItems,
1684
+ Wn as registerEditorItem,
1685
+ Rn as version
1686
+ };