@hankchen/canvas-editor-vue 0.1.1 → 0.1.3

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.
@@ -1,10 +1,11 @@
1
- import { B as e, D as t, F as n, G as r, H as i, L as a, M as o, P as s, U as c, W as ee, _ as l, b as u, d, g as f, h as te, i as p, k as ne, l as m, m as h, p as g, r as _, s as v, t as y, u as b, w as re, y as x, z as S } from "./layerPath-BRZK9ka1.js";
2
- import { t as C } from "./createLucideIcon-CMq8ZKo2.js";
3
- import { i as w, o as T, r as ie } from "./completionAnchor-4lhR2kJz.js";
4
- import { o as E, r as ae, s as D, t as oe } from "./useTransientFeedback-gS9Xa9GY.js";
5
- import { n as se, t as ce } from "./usePathCompletion-DkHoGla4.js";
6
- import { n as le, t as ue } from "./useDataSourceSchema-C924m8fc.js";
7
- var de = C({
1
+ import { t as e } from "./createLucideIcon-SCvtEGVf.js";
2
+ import { i as t, r as n, t as r } from "./layerPath-uy2ywyld.js";
3
+ import { i, o as a, r as o } from "./completionAnchor-CDR5YZhu.js";
4
+ import { o as s, r as c, s as l, t as ee } from "./useTransientFeedback-Cnp6aNB7.js";
5
+ import { n as te, t as ne } from "./usePathCompletion-uJ5c_gQ0.js";
6
+ import { n as re, t as ie } from "./useDataSourceSchema-DStVoY8Z.js";
7
+ import { Fragment as u, computed as d, createBlock as ae, createCommentVNode as f, createElementBlock as p, createElementVNode as m, createVNode as h, defineComponent as g, nextTick as oe, normalizeClass as _, normalizeStyle as se, onScopeDispose as v, openBlock as y, ref as b, renderList as ce, shallowRef as x, toDisplayString as S, unref as C, vModelText as w, watch as le, withCtx as T, withDirectives as E, withKeys as D, withModifiers as O } from "vue";
8
+ var ue = e({
8
9
  name: "eye-off",
9
10
  size: 24,
10
11
  node: [
@@ -25,7 +26,7 @@ var de = C({
25
26
  key: "1ooewy"
26
27
  }]
27
28
  ]
28
- }), fe = C({
29
+ }), de = e({
29
30
  name: "eye",
30
31
  size: 24,
31
32
  node: [["path", {
@@ -37,7 +38,7 @@ var de = C({
37
38
  r: "3",
38
39
  key: "1v7zrd"
39
40
  }]]
40
- }), pe = C({
41
+ }), fe = e({
41
42
  name: "grip-vertical",
42
43
  size: 24,
43
44
  node: [
@@ -78,7 +79,7 @@ var de = C({
78
79
  key: "f4zoj3"
79
80
  }]
80
81
  ]
81
- }), me = C({
82
+ }), pe = e({
82
83
  name: "lock-open",
83
84
  size: 24,
84
85
  node: [["rect", {
@@ -94,7 +95,7 @@ var de = C({
94
95
  key: "1mm8w8"
95
96
  }]],
96
97
  aliases: ["unlock"]
97
- }), he = C({
98
+ }), me = e({
98
99
  name: "lock",
99
100
  size: 24,
100
101
  node: [["rect", {
@@ -109,7 +110,7 @@ var de = C({
109
110
  d: "M7 11V7a5 5 0 0 1 10 0v4",
110
111
  key: "fwvmzm"
111
112
  }]]
112
- }), ge = C({
113
+ }), he = e({
113
114
  name: "pencil",
114
115
  size: 24,
115
116
  node: [["path", {
@@ -122,7 +123,7 @@ var de = C({
122
123
  });
123
124
  //#endregion
124
125
  //#region ../canvas-editor/src/editing/layerPanel.ts
125
- function O(e) {
126
+ function k(e) {
126
127
  switch (e.type) {
127
128
  case "TableLayer": return e.template === null ? [{
128
129
  key: "rows",
@@ -148,7 +149,7 @@ function O(e) {
148
149
  }];
149
150
  }
150
151
  }
151
- function k(e) {
152
+ function A(e) {
152
153
  switch (e.type) {
153
154
  case "TextLayer":
154
155
  case "ImageLayer":
@@ -156,22 +157,22 @@ function k(e) {
156
157
  default: return null;
157
158
  }
158
159
  }
159
- var A = "{{…}}";
160
- function j(e) {
161
- let t = k(e);
160
+ var j = "{{…}}";
161
+ function M(e) {
162
+ let t = A(e);
162
163
  if (t === null) return "";
163
- let n = T(t).parts.flatMap((e) => e.kind === "fragment" && e.expr !== "" ? [e.expr] : []);
164
- return n.length === 0 ? A : n.map((e) => `{{${e}}}`).join(" ");
164
+ let n = a(t).parts.flatMap((e) => e.kind === "fragment" && e.expr !== "" ? [e.expr] : []);
165
+ return n.length === 0 ? j : n.map((e) => `{{${e}}}`).join(" ");
165
166
  }
166
- function M(e, t, n, r) {
167
- let i = [];
168
- for (let { key: n, layers: a } of O(e)) for (let e = 0; e < a.length; e += 1) {
167
+ function N(e, t, n, i) {
168
+ let a = [];
169
+ for (let { key: n, layers: r } of k(e)) for (let e = 0; e < r.length; e += 1) {
169
170
  let o = n === "rows" ? "row" : n === "cells" ? "cell" : n === "template" ? "templateRow" : "content", s = n === "content" ? [...t, "content"] : n === "template" ? [...t, "template"] : [
170
171
  ...t,
171
172
  n,
172
173
  e
173
174
  ];
174
- i.push(M(a[e], s, o, r));
175
+ a.push(N(r[e], s, o, i));
175
176
  }
176
177
  return {
177
178
  type: e.type,
@@ -179,20 +180,20 @@ function M(e, t, n, r) {
179
180
  role: n,
180
181
  name: e.name,
181
182
  visible: e.visible,
182
- locked: y(t, r),
183
- expressionPrefix: j(e),
183
+ locked: r(t, i),
184
+ expressionPrefix: M(e),
184
185
  ...e.type === "TableLayer" ? { templated: e.template !== null } : null,
185
- children: i
186
+ children: a
186
187
  };
187
188
  }
188
- function N(e, t = []) {
189
+ function P(e, t = []) {
189
190
  let n = [];
190
- for (let r = e.layers.length - 1; r >= 0; --r) n.push(M(e.layers[r], ["layers", r], "root", t));
191
+ for (let r = e.layers.length - 1; r >= 0; --r) n.push(N(e.layers[r], ["layers", r], "root", t));
191
192
  return n;
192
193
  }
193
194
  //#endregion
194
195
  //#region src/layer-panel/addMenu.ts
195
- var P = [
196
+ var F = [
196
197
  {
197
198
  kind: "layer",
198
199
  type: "TextLayer",
@@ -222,36 +223,36 @@ var P = [
222
223
  label: "模板表",
223
224
  title: "新增模板表(行模板 + 数据行展开)"
224
225
  }
225
- ], F = P.filter((e) => e.kind === "layer");
226
+ ], I = F.filter((e) => e.kind === "layer");
226
227
  //#endregion
227
228
  //#region src/layer-panel/useLayerPanel.ts
228
- function I(t) {
229
- let n = e(t.store.doc), r = e(t.store.ui.selection), i = e(t.store.ui.hovered), o = e(t.store.ui.renaming), s = e(t.store.ui.lockedPaths), c = t.subscribe((e) => {
230
- e.scope === "doc" ? (n.value = t.store.doc, r.value = t.store.ui.selection, i.value = t.store.ui.hovered, o.value = t.store.ui.renaming, s.value = t.store.ui.lockedPaths) : e.branch === "selection" ? r.value = t.store.ui.selection : e.branch === "hovered" ? i.value = t.store.ui.hovered : e.branch === "renaming" ? o.value = t.store.ui.renaming : e.branch === "lockedPaths" && (s.value = t.store.ui.lockedPaths);
229
+ function L(e) {
230
+ let t = x(e.store.doc), n = x(e.store.ui.selection), r = x(e.store.ui.hovered), i = x(e.store.ui.renaming), a = x(e.store.ui.lockedPaths), o = e.subscribe((o) => {
231
+ o.scope === "doc" ? (t.value = e.store.doc, n.value = e.store.ui.selection, r.value = e.store.ui.hovered, i.value = e.store.ui.renaming, a.value = e.store.ui.lockedPaths) : o.branch === "selection" ? n.value = e.store.ui.selection : o.branch === "hovered" ? r.value = e.store.ui.hovered : o.branch === "renaming" ? i.value = e.store.ui.renaming : o.branch === "lockedPaths" && (a.value = e.store.ui.lockedPaths);
231
232
  });
232
- return a(c, !0), {
233
- outline: g(() => n.value ? N(n.value, s.value) : []),
234
- selection: g(() => r.value),
235
- hovered: g(() => i.value),
236
- renaming: g(() => o.value)
233
+ return v(o, !0), {
234
+ outline: d(() => t.value ? P(t.value, a.value) : []),
235
+ selection: d(() => n.value),
236
+ hovered: d(() => r.value),
237
+ renaming: d(() => i.value)
237
238
  };
238
239
  }
239
- function L(e, t) {
240
+ function R(e, t) {
240
241
  return t > 0 && e < t / 2;
241
242
  }
242
243
  //#endregion
243
244
  //#region src/layer-panel/LayerPanel.vue?vue&type=script&setup=true&lang.ts
244
- var _e = { class: "cn-props flex w-[232px] shrink-0 flex-col overflow-y-auto rounded-xl border border-cn-line bg-cn-bg text-cn-fg shadow-[0_16px_40px_-12px_rgba(2,6,23,0.55)]" }, ve = { class: "sticky top-0 z-10 flex items-center justify-between border-b border-cn-line bg-cn-bg-elevated/95 px-3.5 py-2.5" }, ye = { class: "flex items-center gap-1" }, be = [
245
+ var ge = { class: "cn-props flex w-[232px] shrink-0 flex-col overflow-y-auto rounded-xl border border-cn-line bg-cn-bg text-cn-fg shadow-[0_16px_40px_-12px_rgba(2,6,23,0.55)]" }, _e = { class: "sticky top-0 z-10 flex items-center justify-between border-b border-cn-line bg-cn-bg-elevated/95 px-3.5 py-2.5" }, ve = { class: "flex items-center gap-1" }, ye = [
245
246
  "aria-expanded",
246
247
  "onClick",
247
248
  "onKeydown"
248
- ], xe = ["onKeydown"], Se = {
249
+ ], be = ["onKeydown"], xe = {
249
250
  key: 0,
250
251
  class: "px-2 pb-1 text-[11px] text-cn-danger"
251
- }, Ce = { class: "flex gap-1 p-1" }, we = ["onClick"], Te = ["onClick"], Ee = {
252
+ }, Se = { class: "flex gap-1 p-1" }, Ce = ["onClick"], we = ["onClick"], Te = {
252
253
  key: 0,
253
254
  class: "mx-3.5 my-4 rounded-lg border border-dashed border-cn-line px-3 py-6 text-center text-[11px] leading-5 text-cn-muted"
254
- }, De = [
255
+ }, Ee = [
255
256
  "data-key",
256
257
  "draggable",
257
258
  "onClick",
@@ -259,36 +260,36 @@ var _e = { class: "cn-props flex w-[232px] shrink-0 flex-col overflow-y-auto rou
259
260
  "onDragstart",
260
261
  "onDragover",
261
262
  "onDrop"
262
- ], Oe = ["onDragstart"], ke = ["title"], Ae = ["onDblclick"], je = [
263
+ ], De = ["onDragstart"], Oe = ["title"], ke = ["onDblclick"], Ae = [
263
264
  "title",
264
265
  "aria-pressed",
265
266
  "onClick"
266
- ], Me = [
267
+ ], je = [
267
268
  "title",
268
269
  "aria-pressed",
269
270
  "onClick"
270
- ], Ne = ["onClick"], Pe = [
271
+ ], Me = ["onClick"], Ne = [
271
272
  "disabled",
272
273
  "title",
273
274
  "onClick"
274
- ], Fe = ["onClick"], Ie = ["onClick"], Le = [
275
+ ], Pe = ["onClick"], Fe = ["onClick"], Ie = [
275
276
  "disabled",
276
277
  "title",
277
278
  "onClick"
278
- ], R = /* @__PURE__ */ u({
279
+ ], z = /* @__PURE__ */ g({
279
280
  __name: "LayerPanel",
280
281
  props: { editor: {} },
281
282
  setup(e) {
282
- let a = e, u = `解锁图层(${D("toggleLayerLock", E())})`, y = `图层已锁定(${D("toggleLayerLock", E())} 解锁后可删除)`, C = I(a.editor), T = S(!1), O = S(""), k = S(!1);
283
- function A() {
284
- T.value = !1, O.value = "", k.value = !1;
283
+ let r = e, a = `解锁图层(${l("toggleLayerLock", s())})`, g = `图层已锁定(${l("toggleLayerLock", s())} 解锁后可删除)`, v = L(r.editor), x = b(!1), k = b(""), A = b(!1);
284
+ function j() {
285
+ x.value = !1, k.value = "", A.value = !1;
285
286
  }
286
- let j = g(() => T.value ? [] : P.map((e) => e.kind === "layer" ? {
287
+ let M = d(() => x.value ? [] : F.map((e) => e.kind === "layer" ? {
287
288
  label: e.label,
288
289
  title: e.title,
289
290
  dataAttrs: { "data-add-layer": e.type },
290
291
  run: () => {
291
- a.editor.armLayerCreate(e.type), oe().show(ae);
292
+ r.editor.armLayerCreate(e.type), ee().show(c);
292
293
  }
293
294
  } : {
294
295
  label: e.label,
@@ -296,38 +297,38 @@ var _e = { class: "cn-props flex w-[232px] shrink-0 flex-col overflow-y-auto rou
296
297
  dataAttrs: { "data-add-layer": "template-table" },
297
298
  keepsOpen: !0,
298
299
  run: () => {
299
- T.value = !0;
300
+ x.value = !0;
300
301
  }
301
302
  }));
302
- function M(e) {
303
- let t = O.value.trim();
303
+ function N(e) {
304
+ let t = k.value.trim();
304
305
  if (t === "") {
305
- k.value = !0;
306
+ A.value = !0;
306
307
  return;
307
308
  }
308
- a.editor.addTemplateTable(t), A(), e();
309
+ r.editor.addTemplateTable(t), j(), e();
309
310
  }
310
- function N(e) {
311
- A(), e();
311
+ function P(e) {
312
+ j(), e();
312
313
  }
313
- function F() {
314
- A();
314
+ function I() {
315
+ j();
315
316
  }
316
- let R = ue(a.editor), Re = g(() => se(R.value)), z = S(null), B = S(null), { popup: V, accept: ze } = ce({
317
- target: z,
318
- enabled: () => T.value,
319
- resolve: (e) => Re.value?.(e) ?? null,
320
- popupEl: g(() => B.value?.rootEl ?? null)
317
+ let z = ie(r.editor), Le = d(() => te(z.value)), B = b(null), V = b(null), { popup: H, accept: Re } = ne({
318
+ target: B,
319
+ enabled: () => x.value,
320
+ resolve: (e) => Le.value?.(e) ?? null,
321
+ popupEl: d(() => V.value?.rootEl ?? null)
321
322
  });
322
- function Be(e, t) {
323
+ function ze(e, t) {
323
324
  if (e.key === "Enter") {
324
- if (V.open && V.items.length > 0) return;
325
- e.preventDefault(), M(t);
325
+ if (H.open && H.items.length > 0) return;
326
+ e.preventDefault(), N(t);
326
327
  return;
327
328
  }
328
- e.key === "Escape" && V.open && e.stopPropagation();
329
+ e.key === "Escape" && H.open && e.stopPropagation();
329
330
  }
330
- function Ve(e, t) {
331
+ function Be(e, t) {
331
332
  switch (e.role) {
332
333
  case "root": return e.name === "" ? `${e.type} ${t}` : e.name;
333
334
  case "row": return `行 ${Number(e.path[e.path.length - 1]) + 1}`;
@@ -336,62 +337,62 @@ var _e = { class: "cn-props flex w-[232px] shrink-0 flex-col overflow-y-auto rou
336
337
  case "content": return e.type;
337
338
  }
338
339
  }
339
- let H = g(() => {
340
+ let U = d(() => {
340
341
  let e = [], t = /* @__PURE__ */ new Map();
341
- function n(r, i, a, o) {
342
- let s = r.role === "row" ? r.path.slice(0, -2) : r.role === "templateRow" ? r.path.slice(0, -1) : o, c = 0;
343
- r.role === "root" && (c = (t.get(r.type) ?? 0) + 1, t.set(r.type, c)), e.push({
344
- key: r.path.join("."),
345
- node: r,
346
- indentLevel: i,
347
- label: Ve(r, c),
348
- indexInGroup: a,
349
- tablePath: s,
350
- inTemplate: _(r.path),
351
- draggable: r.role === "root" || r.role === "row" || r.role === "cell"
352
- }), r.children.forEach((e, t) => n(e, i + 1, t, s));
342
+ function r(i, a, o, s) {
343
+ let c = i.role === "row" ? i.path.slice(0, -2) : i.role === "templateRow" ? i.path.slice(0, -1) : s, l = 0;
344
+ i.role === "root" && (l = (t.get(i.type) ?? 0) + 1, t.set(i.type, l)), e.push({
345
+ key: i.path.join("."),
346
+ node: i,
347
+ indentLevel: a,
348
+ label: Be(i, l),
349
+ indexInGroup: o,
350
+ tablePath: c,
351
+ inTemplate: n(i.path),
352
+ draggable: i.role === "root" || i.role === "row" || i.role === "cell"
353
+ }), i.children.forEach((e, t) => r(e, a + 1, t, c));
353
354
  }
354
- return C.outline.value.forEach((e, t) => n(e, 0, t, null)), e;
355
- }), He = g(() => H.value.length > 0);
356
- function Ue(e) {
357
- a.editor.setSelection(e.node.path);
355
+ return v.outline.value.forEach((e, t) => r(e, 0, t, null)), e;
356
+ }), Ve = d(() => U.value.length > 0);
357
+ function He(e) {
358
+ r.editor.setSelection(e.node.path);
359
+ }
360
+ function W(e) {
361
+ r.editor.setHovered(e === null ? null : e.node.path);
358
362
  }
359
- function U(e) {
360
- a.editor.setHovered(e === null ? null : e.node.path);
363
+ function Ue(e) {
364
+ r.editor.addTableRow(e.node.path);
361
365
  }
362
366
  function We(e) {
363
- a.editor.addTableRow(e.node.path);
367
+ r.editor.addTableCell(e.node.path);
364
368
  }
365
369
  function Ge(e) {
366
- a.editor.addTableCell(e.node.path);
370
+ r.editor.addTemplateCell(e.node.path.slice(0, -1));
367
371
  }
368
372
  function Ke(e) {
369
- a.editor.addTemplateCell(e.node.path.slice(0, -1));
373
+ r.editor.deleteLayer(e.node.path);
370
374
  }
371
375
  function qe(e) {
372
- a.editor.deleteLayer(e.node.path);
376
+ r.editor.toggleLayerVisibility(e.node.path);
373
377
  }
374
378
  function Je(e) {
375
- a.editor.toggleLayerVisibility(e.node.path);
379
+ r.editor.toggleLayerLock(e.node.path);
376
380
  }
377
- function Ye(e) {
378
- a.editor.toggleLayerLock(e.node.path);
379
- }
380
- let W = S(null), G = S(null);
381
- function K(e) {
382
- let t = W.value;
383
- if (!t) return !1;
384
- if (t.kind === "root") return e.node.role === "root";
385
- if (t.kind === "row") return e.node.role === "row";
381
+ let G = b(null), K = b(null);
382
+ function q(e) {
383
+ let r = G.value;
384
+ if (!r) return !1;
385
+ if (r.kind === "root") return e.node.role === "root";
386
+ if (r.kind === "row") return e.node.role === "row";
386
387
  if (e.node.role !== "cell") return !1;
387
- let n = _(t.cellPath);
388
- return n === e.inTemplate ? !n || p(t.cellPath.slice(0, -2), e.node.path.slice(0, -2)) : !1;
388
+ let i = n(r.cellPath);
389
+ return i === e.inTemplate ? !i || t(r.cellPath.slice(0, -2), e.node.path.slice(0, -2)) : !1;
389
390
  }
390
- function q(e) {
391
+ function J(e) {
391
392
  return e.node.role === "root";
392
393
  }
393
- function J(e, t) {
394
- e.draggable && (W.value = e.node.role === "root" ? {
394
+ function Y(e, t) {
395
+ e.draggable && (G.value = e.node.role === "root" ? {
395
396
  kind: "root",
396
397
  from: e.indexInGroup
397
398
  } : e.node.role === "row" ? {
@@ -405,74 +406,74 @@ var _e = { class: "cn-props flex w-[232px] shrink-0 flex-col overflow-y-auto rou
405
406
  cellPath: e.node.path
406
407
  }, t.dataTransfer?.setData("text/plain", e.key), t.dataTransfer && (t.dataTransfer.effectAllowed = "move"));
407
408
  }
408
- function Xe(e, t) {
409
- q(e) || J(e, t);
409
+ function Ye(e, t) {
410
+ J(e) || Y(e, t);
410
411
  }
411
- function Ze(e) {
412
- if (!q(e)) return e.draggable || void 0;
412
+ function Xe(e) {
413
+ if (!J(e)) return e.draggable || void 0;
413
414
  }
414
- function Qe(e, t) {
415
- if (!K(e)) return;
416
- let n = t.currentTarget.getBoundingClientRect(), r = L(t.clientY - n.top, n.height);
417
- t.preventDefault(), G.value = {
415
+ function Ze(e, t) {
416
+ if (!q(e)) return;
417
+ let n = t.currentTarget.getBoundingClientRect(), r = R(t.clientY - n.top, n.height);
418
+ t.preventDefault(), K.value = {
418
419
  key: e.key,
419
420
  edge: r ? "before" : "after"
420
421
  };
421
422
  }
422
- function $e(e, t) {
423
- if (!K(e)) return;
424
- let n = G.value, r = W.value;
425
- if (!r || !n || n.key !== e.key) return;
423
+ function Qe(e, t) {
424
+ if (!q(e)) return;
425
+ let n = K.value, i = G.value;
426
+ if (!i || !n || n.key !== e.key) return;
426
427
  t.preventDefault();
427
- let i = n.edge === "before" ? e.indexInGroup : e.indexInGroup + 1;
428
- r.kind === "root" ? a.editor.moveRootLayer(r.from, i) : r.kind === "row" ? e.tablePath !== null && e.tablePath.join(".") === r.tablePath.join(".") ? a.editor.moveTableRow(r.tablePath, r.from, i) : a.editor.moveTableRowToTable(r.rowPath, e.tablePath, i) : a.editor.moveTableCellToRow(r.cellPath, e.node.path.slice(0, -2), i), W.value = null, G.value = null;
428
+ let a = n.edge === "before" ? e.indexInGroup : e.indexInGroup + 1;
429
+ i.kind === "root" ? r.editor.moveRootLayer(i.from, a) : i.kind === "row" ? e.tablePath !== null && e.tablePath.join(".") === i.tablePath.join(".") ? r.editor.moveTableRow(i.tablePath, i.from, a) : r.editor.moveTableRowToTable(i.rowPath, e.tablePath, a) : r.editor.moveTableCellToRow(i.cellPath, e.node.path.slice(0, -2), a), G.value = null, K.value = null;
429
430
  }
430
- function et() {
431
- W.value = null, G.value = null;
431
+ function $e() {
432
+ G.value = null, K.value = null;
432
433
  }
433
- function Y(e) {
434
- return p(C.selection.value, e.node.path);
434
+ function X(e) {
435
+ return t(v.selection.value, e.node.path);
435
436
  }
437
+ function et(e) {
438
+ return t(v.hovered.value, e.node.path);
439
+ }
440
+ let Z = b(""), Q = null, $ = null;
436
441
  function tt(e) {
437
- return p(C.hovered.value, e.node.path);
442
+ $ = e instanceof HTMLInputElement ? e : null;
438
443
  }
439
- let X = S(""), Z = null, Q = null;
440
444
  function nt(e) {
441
- Q = e instanceof HTMLInputElement ? e : null;
445
+ return t(v.renaming.value, e.node.path);
442
446
  }
443
447
  function rt(e) {
444
- return p(C.renaming.value, e.node.path);
445
- }
446
- function $(e) {
447
- q(e) && a.editor.beginRename(e.node.path);
448
+ J(e) && r.editor.beginRename(e.node.path);
448
449
  }
449
450
  function it() {
450
- let e = X.value.trim();
451
- if (Z !== null && e === Z.trim()) {
452
- a.editor.cancelRename();
451
+ let e = Z.value.trim();
452
+ if (Q !== null && e === Q.trim()) {
453
+ r.editor.cancelRename();
453
454
  return;
454
455
  }
455
- a.editor.commitRename(e);
456
+ r.editor.commitRename(e);
456
457
  }
457
458
  function at() {
458
- a.editor.cancelRename();
459
+ r.editor.cancelRename();
459
460
  }
460
- return o(C.renaming, async (e) => {
461
+ return le(v.renaming, async (e) => {
461
462
  if (e === null) {
462
- Z = null;
463
+ Q = null;
463
464
  return;
464
465
  }
465
- let t = H.value.find((t) => p(t.node.path, e));
466
- X.value = t?.label ?? "", Z = X.value, await re();
467
- let n = Q;
468
- n && (n.focus({ preventScroll: !0 }), n.select());
469
- }), (e, a) => (t(), l("aside", _e, [
470
- h("header", ve, [a[9] ||= h("span", { class: "text-[12px] font-medium tracking-wide text-cn-fg/90" }, "图层", -1), h("div", ye, [x(le, {
466
+ let n = U.value.find((n) => t(n.node.path, e));
467
+ Z.value = n?.label ?? "", Q = Z.value, await oe();
468
+ let r = $;
469
+ r && (r.focus({ preventScroll: !0 }), r.select());
470
+ }), (e, t) => (y(), p("aside", ge, [
471
+ m("header", _e, [t[9] ||= m("span", { class: "text-[12px] font-medium tracking-wide text-cn-fg/90" }, "图层", -1), m("div", ve, [h(re, {
471
472
  label: "新增图层",
472
- items: j.value,
473
- onClosed: F
473
+ items: M.value,
474
+ onClosed: I
474
475
  }, {
475
- trigger: s(({ open: e, toggle: t, triggerRef: n, onKeydown: r }) => [h("button", {
476
+ trigger: T(({ open: e, toggle: t, triggerRef: n, onKeydown: r }) => [m("button", {
476
477
  ref: n,
477
478
  type: "button",
478
479
  "data-add-menu": "",
@@ -482,171 +483,171 @@ var _e = { class: "cn-props flex w-[232px] shrink-0 flex-col overflow-y-auto rou
482
483
  class: "flex size-6 items-center justify-center rounded border border-cn-field-line bg-cn-field text-[13px] leading-none text-cn-fg/80 hover:border-cn-accent/40 hover:text-cn-accent",
483
484
  onClick: t,
484
485
  onKeydown: r
485
- }, " + ", 40, be)]),
486
- body: s(({ closeMenu: e }) => [T.value ? (t(), l(d, { key: 0 }, [
487
- a[8] ||= h("p", { class: "px-2 pt-1 text-[11px] leading-4 text-cn-muted" }, "模板行按数据行路径展开成表", -1),
488
- n(h("input", {
486
+ }, " + ", 40, ye)]),
487
+ body: T(({ closeMenu: e }) => [x.value ? (y(), p(u, { key: 0 }, [
488
+ t[8] ||= m("p", { class: "px-2 pt-1 text-[11px] leading-4 text-cn-muted" }, "模板行按数据行路径展开成表", -1),
489
+ E(m("input", {
489
490
  ref_key: "rowsPathInputEl",
490
- ref: z,
491
- "onUpdate:modelValue": a[0] ||= (e) => O.value = e,
491
+ ref: B,
492
+ "onUpdate:modelValue": t[0] ||= (e) => k.value = e,
492
493
  "data-template-rows-path": "",
493
494
  type: "text",
494
495
  placeholder: "如 order.items",
495
- class: c(["mx-1 my-1 w-[calc(100%-8px)] rounded border bg-cn-field px-2 py-1 text-[12px] text-cn-fg outline-none focus:border-cn-accent/60", k.value ? "border-cn-danger" : "border-cn-field-line"]),
496
- onKeydown: (t) => Be(t, e)
497
- }, null, 42, xe), [[v, O.value]]),
498
- k.value ? (t(), l("p", Se, "rowsPath 必填")) : f("", !0),
499
- h("div", Ce, [h("button", {
496
+ class: _(["mx-1 my-1 w-[calc(100%-8px)] rounded border bg-cn-field px-2 py-1 text-[12px] text-cn-fg outline-none focus:border-cn-accent/60", A.value ? "border-cn-danger" : "border-cn-field-line"]),
497
+ onKeydown: (t) => ze(t, e)
498
+ }, null, 42, be), [[w, k.value]]),
499
+ A.value ? (y(), p("p", xe, "rowsPath 必填")) : f("", !0),
500
+ m("div", Se, [m("button", {
500
501
  type: "button",
501
502
  "data-template-confirm": "",
502
503
  class: "flex-1 rounded bg-cn-accent/20 px-2 py-1 text-[12px] text-cn-accent hover:bg-cn-accent/30",
503
- onClick: (t) => M(e)
504
- }, " 创建 ", 8, we), h("button", {
504
+ onClick: (t) => N(e)
505
+ }, " 创建 ", 8, Ce), m("button", {
505
506
  type: "button",
506
507
  class: "flex-1 rounded px-2 py-1 text-[12px] text-cn-muted hover:text-cn-fg",
507
- onClick: (t) => N(e)
508
- }, " 取消 ", 8, Te)])
508
+ onClick: (t) => P(e)
509
+ }, " 取消 ", 8, we)])
509
510
  ], 64)) : f("", !0)]),
510
511
  _: 1
511
- }, 8, ["items"]), T.value ? (t(), te(ie, {
512
+ }, 8, ["items"]), x.value ? (y(), ae(o, {
512
513
  key: 0,
513
514
  ref_key: "pathPopupRef",
514
- ref: B,
515
- state: i(V),
516
- onSelect: i(ze)
515
+ ref: V,
516
+ state: C(H),
517
+ onSelect: C(Re)
517
518
  }, null, 8, ["state", "onSelect"])) : f("", !0)])]),
518
- He.value ? f("", !0) : (t(), l("p", Ee, " 画布还没有图层,用上方按钮新增 ")),
519
- h("ul", {
519
+ Ve.value ? f("", !0) : (y(), p("p", Te, " 画布还没有图层,用上方按钮新增 ")),
520
+ m("ul", {
520
521
  class: "cn-layers__tree flex flex-col gap-0.5 px-1.5 py-1",
521
- onDragend: et
522
- }, [(t(!0), l(d, null, ne(H.value, (e) => (t(), l("li", {
522
+ onDragend: $e
523
+ }, [(y(!0), p(u, null, ce(U.value, (e) => (y(), p("li", {
523
524
  key: e.key,
524
525
  "data-key": e.key,
525
- draggable: Ze(e),
526
- class: c(["cn-layers__row group flex cursor-default select-none items-center gap-1 py-1 pr-1 text-[12px]", {
527
- "cn-layers__row--selected": Y(e),
528
- "cn-layers__row--hovered": tt(e) && !Y(e),
529
- "cn-layers__row--hidden": q(e) && !e.node.visible,
526
+ draggable: Xe(e),
527
+ class: _(["cn-layers__row group flex cursor-default select-none items-center gap-1 py-1 pr-1 text-[12px]", {
528
+ "cn-layers__row--selected": X(e),
529
+ "cn-layers__row--hovered": et(e) && !X(e),
530
+ "cn-layers__row--hidden": J(e) && !e.node.visible,
530
531
  "cn-layers__row--template": e.inTemplate,
531
- "cursor-grab": e.draggable && !q(e),
532
- "cn-layers__row--drop-before": G.value?.key === e.key && G.value?.edge === "before",
533
- "cn-layers__row--drop-after": G.value?.key === e.key && G.value?.edge === "after"
532
+ "cursor-grab": e.draggable && !J(e),
533
+ "cn-layers__row--drop-before": K.value?.key === e.key && K.value?.edge === "before",
534
+ "cn-layers__row--drop-after": K.value?.key === e.key && K.value?.edge === "after"
534
535
  }]),
535
- style: ee({ paddingLeft: `${4 + e.indentLevel * 14}px` }),
536
- onClick: (t) => Ue(e),
537
- onMouseenter: (t) => U(e),
538
- onMouseleave: a[7] ||= (e) => U(null),
539
- onDragstart: (t) => Xe(e, t),
540
- onDragover: (t) => Qe(e, t),
541
- onDrop: (t) => $e(e, t)
536
+ style: se({ paddingLeft: `${4 + e.indentLevel * 14}px` }),
537
+ onClick: (t) => He(e),
538
+ onMouseenter: (t) => W(e),
539
+ onMouseleave: t[7] ||= (e) => W(null),
540
+ onDragstart: (t) => Ye(e, t),
541
+ onDragover: (t) => Ze(e, t),
542
+ onDrop: (t) => Qe(e, t)
542
543
  }, [
543
- q(e) ? (t(), l("span", {
544
+ J(e) ? (y(), p("span", {
544
545
  key: 0,
545
546
  "data-drag-handle": "",
546
547
  draggable: "true",
547
548
  title: "拖动排序",
548
549
  class: "cn-layers__handle shrink-0",
549
- onDragstart: (t) => J(e, t)
550
- }, [x(w, {
551
- icon: i(pe),
550
+ onDragstart: (t) => Y(e, t)
551
+ }, [h(i, {
552
+ icon: C(fe),
552
553
  size: 12,
553
554
  "stroke-width": 2.5
554
- }, null, 8, ["icon"])], 40, Oe)) : f("", !0),
555
- e.node.expressionPrefix === "" ? f("", !0) : (t(), l("span", {
555
+ }, null, 8, ["icon"])], 40, De)) : f("", !0),
556
+ e.node.expressionPrefix === "" ? f("", !0) : (y(), p("span", {
556
557
  key: 1,
557
558
  class: "cn-layers__prefix",
558
559
  title: e.node.expressionPrefix
559
- }, r(e.node.expressionPrefix), 9, ke)),
560
- rt(e) ? n((t(), l("input", {
560
+ }, S(e.node.expressionPrefix), 9, Oe)),
561
+ nt(e) ? E((y(), p("input", {
561
562
  key: 2,
562
563
  ref_for: !0,
563
- ref: nt,
564
- "onUpdate:modelValue": a[1] ||= (e) => X.value = e,
564
+ ref: tt,
565
+ "onUpdate:modelValue": t[1] ||= (e) => Z.value = e,
565
566
  "data-rename-input": "",
566
567
  "aria-label": "图层重命名",
567
568
  class: "cn-layers__rename-input min-w-0 flex-1",
568
- onClick: a[2] ||= b(() => {}, ["stop"]),
569
- onDblclick: a[3] ||= b(() => {}, ["stop"]),
570
- onKeydown: [a[4] ||= m(b((e) => it(), ["prevent"]), ["enter"]), a[5] ||= m(b((e) => at(), ["prevent"]), ["esc"])],
571
- onBlur: a[6] ||= (e) => it()
572
- }, null, 544)), [[v, X.value]]) : (t(), l("span", {
569
+ onClick: t[2] ||= O(() => {}, ["stop"]),
570
+ onDblclick: t[3] ||= O(() => {}, ["stop"]),
571
+ onKeydown: [t[4] ||= D(O((e) => it(), ["prevent"]), ["enter"]), t[5] ||= D(O((e) => at(), ["prevent"]), ["esc"])],
572
+ onBlur: t[6] ||= (e) => it()
573
+ }, null, 544)), [[w, Z.value]]) : (y(), p("span", {
573
574
  key: 3,
574
575
  class: "cn-layers__label min-w-0 flex-1 truncate font-mono text-[11px] leading-4",
575
- onDblclick: (t) => $(e)
576
- }, r(e.label), 41, Ae)),
577
- q(e) ? (t(), l("button", {
576
+ onDblclick: (t) => rt(e)
577
+ }, S(e.label), 41, ke)),
578
+ J(e) ? (y(), p("button", {
578
579
  key: 4,
579
580
  type: "button",
580
581
  "data-visibility": "",
581
- class: c(["cn-layers__eye size-5 shrink-0 items-center justify-center rounded text-cn-muted hover:bg-cn-accent/15 hover:text-cn-accent", e.node.visible ? "hidden group-hover:flex" : "flex"]),
582
+ class: _(["cn-layers__eye size-5 shrink-0 items-center justify-center rounded text-cn-muted hover:bg-cn-accent/15 hover:text-cn-accent", e.node.visible ? "hidden group-hover:flex" : "flex"]),
582
583
  title: e.node.visible ? "隐藏图层(最终输出不含该层)" : "显示图层",
583
584
  "aria-pressed": !e.node.visible,
584
- onClick: b((t) => Je(e), ["stop"])
585
- }, [x(w, {
586
- icon: e.node.visible ? i(fe) : i(de),
585
+ onClick: O((t) => qe(e), ["stop"])
586
+ }, [h(i, {
587
+ icon: e.node.visible ? C(de) : C(ue),
587
588
  size: 11,
588
589
  "stroke-width": 2
589
- }, null, 8, ["icon"])], 10, je)) : f("", !0),
590
- q(e) ? (t(), l("button", {
590
+ }, null, 8, ["icon"])], 10, Ae)) : f("", !0),
591
+ J(e) ? (y(), p("button", {
591
592
  key: 5,
592
593
  type: "button",
593
594
  "data-lock": "",
594
- class: c(["cn-layers__lock size-5 shrink-0 items-center justify-center rounded text-cn-muted hover:bg-cn-accent/15 hover:text-cn-accent", e.node.locked ? "flex" : "hidden group-hover:flex"]),
595
- title: e.node.locked ? u : "锁定图层(画布不可点选/拖动/删除,渲染照常)",
595
+ class: _(["cn-layers__lock size-5 shrink-0 items-center justify-center rounded text-cn-muted hover:bg-cn-accent/15 hover:text-cn-accent", e.node.locked ? "flex" : "hidden group-hover:flex"]),
596
+ title: e.node.locked ? a : "锁定图层(画布不可点选/拖动/删除,渲染照常)",
596
597
  "aria-pressed": e.node.locked,
597
- onClick: b((t) => Ye(e), ["stop"])
598
- }, [x(w, {
599
- icon: e.node.locked ? i(he) : i(me),
598
+ onClick: O((t) => Je(e), ["stop"])
599
+ }, [h(i, {
600
+ icon: e.node.locked ? C(me) : C(pe),
600
601
  size: 11,
601
602
  "stroke-width": 2
602
- }, null, 8, ["icon"])], 10, Me)) : f("", !0),
603
- q(e) ? (t(), l("button", {
603
+ }, null, 8, ["icon"])], 10, je)) : f("", !0),
604
+ J(e) ? (y(), p("button", {
604
605
  key: 6,
605
606
  type: "button",
606
607
  "data-rename": "",
607
608
  class: "cn-layers__delete hidden size-5 shrink-0 items-center justify-center rounded text-cn-muted hover:bg-cn-accent/15 hover:text-cn-accent group-hover:flex",
608
609
  title: "重命名(双击名称或 F2)",
609
- onClick: b((t) => $(e), ["stop"])
610
- }, [x(w, {
611
- icon: i(ge),
610
+ onClick: O((t) => rt(e), ["stop"])
611
+ }, [h(i, {
612
+ icon: C(he),
612
613
  size: 11,
613
614
  "stroke-width": 2
614
- }, null, 8, ["icon"])], 8, Ne)) : f("", !0),
615
- e.node.role === "root" && e.node.type === "TableLayer" ? (t(), l("button", {
615
+ }, null, 8, ["icon"])], 8, Me)) : f("", !0),
616
+ e.node.role === "root" && e.node.type === "TableLayer" ? (y(), p("button", {
616
617
  key: 7,
617
618
  type: "button",
618
619
  "data-add-row": "",
619
620
  class: "cn-layers__delete hidden size-5 shrink-0 items-center justify-center rounded text-[10px] leading-none text-cn-muted hover:bg-cn-accent/15 hover:text-cn-accent group-hover:flex disabled:cursor-not-allowed disabled:text-cn-muted/50 disabled:hover:bg-transparent",
620
621
  disabled: e.node.templated === !0,
621
622
  title: e.node.templated === !0 ? "模板态不可加行——行由数据展开" : "加行(缺省行 + 缺省格与文本,行宽=表宽)",
622
- onClick: b((t) => We(e), ["stop"])
623
- }, " +行 ", 8, Pe)) : f("", !0),
624
- e.node.role === "row" ? (t(), l("button", {
623
+ onClick: O((t) => Ue(e), ["stop"])
624
+ }, " +行 ", 8, Ne)) : f("", !0),
625
+ e.node.role === "row" ? (y(), p("button", {
625
626
  key: 8,
626
627
  type: "button",
627
628
  "data-add-cell": "",
628
629
  class: "cn-layers__delete hidden size-5 shrink-0 items-center justify-center rounded text-[10px] leading-none text-cn-muted hover:bg-cn-accent/15 hover:text-cn-accent group-hover:flex",
629
630
  title: "加格(缺省格 + 文本内容,行高取最高格)",
630
- onClick: b((t) => Ge(e), ["stop"])
631
- }, " +格 ", 8, Fe)) : f("", !0),
632
- e.node.role === "templateRow" ? (t(), l("button", {
631
+ onClick: O((t) => We(e), ["stop"])
632
+ }, " +格 ", 8, Pe)) : f("", !0),
633
+ e.node.role === "templateRow" ? (y(), p("button", {
633
634
  key: 9,
634
635
  type: "button",
635
636
  "data-add-template-cell": "",
636
637
  class: "cn-layers__delete hidden size-5 shrink-0 items-center justify-center rounded text-[10px] leading-none text-cn-muted hover:bg-cn-accent/15 hover:text-cn-accent group-hover:flex",
637
638
  title: "加格(缺省格 + 文本内容,零高度耦合——行高由数据展开定稿)",
638
- onClick: b((t) => Ke(e), ["stop"])
639
- }, " +格 ", 8, Ie)) : f("", !0),
640
- h("button", {
639
+ onClick: O((t) => Ge(e), ["stop"])
640
+ }, " +格 ", 8, Fe)) : f("", !0),
641
+ m("button", {
641
642
  type: "button",
642
643
  class: "cn-layers__delete hidden size-5 shrink-0 items-center justify-center rounded text-[10px] leading-none text-cn-muted hover:bg-cn-danger/15 hover:text-cn-danger group-hover:flex disabled:cursor-not-allowed disabled:text-cn-muted/50 disabled:hover:bg-transparent disabled:hover:text-cn-muted/50",
643
644
  disabled: e.node.role === "templateRow" || e.node.locked,
644
- title: e.node.role === "templateRow" ? "行模板由表持有——转换回普通表请用 V2 转换入口" : e.node.locked ? y : "删除(含子层)",
645
- onClick: b((t) => qe(e), ["stop"])
646
- }, " ✕ ", 8, Le)
647
- ], 46, De))), 128))], 32)
645
+ title: e.node.role === "templateRow" ? "行模板由表持有——转换回普通表请用 V2 转换入口" : e.node.locked ? g : "删除(含子层)",
646
+ onClick: O((t) => Ke(e), ["stop"])
647
+ }, " ✕ ", 8, Ie)
648
+ ], 46, Ee))), 128))], 32)
648
649
  ]));
649
650
  }
650
651
  });
651
652
  //#endregion
652
- export { P as a, F as i, L as n, I as r, R as t };
653
+ export { F as a, I as i, R as n, L as r, z as t };