@hankchen/canvas-editor-vue 0.6.1 → 0.7.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.
Files changed (36) hide show
  1. package/dist/{useDataSourceSchema-CG9EGzwc.js → DropdownMenu-CeUNKMDQ.js} +70 -84
  2. package/dist/ExpressionPathPicker-DchGsK70.js +739 -0
  3. package/dist/{canvas-CptBzpwT.js → canvas-D3fFnBqG.js} +527 -528
  4. package/dist/canvas.js +1 -1
  5. package/dist/index.js +14 -15
  6. package/dist/layer-panel/TemplateTableForm.d.ts +1 -27
  7. package/dist/{layer-panel-Cz-tmbJJ.js → layer-panel-BouAYiDq.js} +231 -257
  8. package/dist/layer-panel.js +1 -1
  9. package/dist/property-panel/PropertyField.d.ts +9 -2
  10. package/dist/property-panel/fieldSchema.d.ts +16 -10
  11. package/dist/property-panel/fields/RowsPathField.d.ts +17 -0
  12. package/dist/property-panel/fields/index.d.ts +1 -0
  13. package/dist/property-panel/usePropertyPanel.d.ts +11 -2
  14. package/dist/{property-panel-OBqd6D8W.js → property-panel-DJQJzioT.js} +271 -213
  15. package/dist/property-panel.js +2 -2
  16. package/dist/resourceTemplate-D-DKEo7Z.js +33 -0
  17. package/dist/shared/ExpressionPathPicker.d.ts +9 -2
  18. package/dist/shared/index.d.ts +13 -10
  19. package/dist/shared/pathPickerModel.d.ts +16 -3
  20. package/dist/shared/popupPosition.d.ts +2 -2
  21. package/dist/shared/rowsPathPickerSource.d.ts +15 -0
  22. package/dist/shared/useDataSourceSchema.d.ts +6 -0
  23. package/dist/{shared-wuupBoZg.js → shared-CRDKDSpa.js} +22 -22
  24. package/dist/shared.js +9 -10
  25. package/dist/{status-bar-DCuK2R88.js → status-bar-DBf5kIXY.js} +6 -6
  26. package/dist/status-bar.js +1 -1
  27. package/dist/style.css +1 -1
  28. package/dist/uploadFile-mXJVPEzm.js +653 -0
  29. package/dist/{useTransientFeedback-CTjmMmFF.js → useTransientFeedback-BN_O7V2w.js} +43 -28
  30. package/package.json +2 -2
  31. package/dist/popupPosition-Ck5Gsvjy.js +0 -526
  32. package/dist/resourceTemplate-cdcQtp9a.js +0 -246
  33. package/dist/shared/rowsPathCompletionSource.d.ts +0 -3
  34. package/dist/shared/usePathCompletion.d.ts +0 -18
  35. package/dist/uploadFile-DbB-KhII.js +0 -520
  36. package/dist/usePathCompletion-Do17CQ6l.js +0 -220
@@ -1,10 +1,9 @@
1
1
  import { t as e } from "./createLucideIcon-SCvtEGVf.js";
2
2
  import { a as t, c as n, d as r, f as i, i as a, l as o, n as s, p as c, r as l, s as u, t as d, u as f } from "./dist-DGtNmLwo.js";
3
3
  import { a as p, i as m, r as h } from "./layerPath-uy2ywyld.js";
4
- import { o as g, s as _ } from "./popupPosition-Ck5Gsvjy.js";
5
- import { a as ee, n as v, r as y, t as b } from "./resourceTemplate-cdcQtp9a.js";
6
- import { a as te, d as x, f as ne, i as re, l as ie, n as S, o as ae, s as oe, t as C, u as se } from "./uploadFile-DbB-KhII.js";
7
- import { n as ce, r as le, t as ue } from "./usePathCompletion-Do17CQ6l.js";
4
+ import { c as g, l as _, o as ee, s as v, t as y } from "./ExpressionPathPicker-DchGsK70.js";
5
+ import { n as b, r as x, t as S } from "./resourceTemplate-D-DKEo7Z.js";
6
+ import { a as C, f as te, h as ne, i as re, l as ie, m as ae, n as oe, o as se, p as ce, s as le, t as ue } from "./uploadFile-mXJVPEzm.js";
8
7
  import { Fragment as w, computed as T, createBlock as E, createCommentVNode as D, createElementBlock as O, createElementVNode as k, createTextVNode as de, createVNode as A, defineComponent as j, inject as fe, markRaw as M, nextTick as pe, normalizeClass as N, onScopeDispose as me, openBlock as P, provide as he, ref as F, renderList as I, resolveDynamicComponent as ge, shallowRef as L, toDisplayString as R, unref as z, vModelText as _e, watch as B, watchEffect as ve, withCtx as ye, withDirectives as be, withModifiers as V } from "vue";
9
8
  var xe = e({
10
9
  name: "grid-2x2",
@@ -246,11 +245,8 @@ var Te = "当前层内容未绘制,padding 不影响预览", H = {
246
245
  title: "数据",
247
246
  fields: [{
248
247
  key: ["rowsPath"],
249
- label: "数据行路径",
250
- control: "text",
251
- placeholder: "如 order.items",
252
- nonEmpty: !0,
253
- completion: "rowsPath",
248
+ label: "取行路径",
249
+ control: "rowsPath",
254
250
  visibleWhen: (e) => e.type === "TableLayer" && e.template !== null
255
251
  }]
256
252
  }
@@ -340,8 +336,30 @@ var je = [{
340
336
  integer: !0,
341
337
  min: 1
342
338
  }]
339
+ }, {
340
+ title: "背景",
341
+ fields: [{
342
+ key: ["background", "color"],
343
+ label: "背景色",
344
+ control: "color",
345
+ nullable: !0
346
+ }, {
347
+ key: ["background", "image"],
348
+ label: "背景图",
349
+ control: "imageSrc"
350
+ }]
343
351
  }];
344
- function K(e, t) {
352
+ function Me(e) {
353
+ return e === null ? null : e.background === null ? {
354
+ ...e,
355
+ background: K
356
+ } : e;
357
+ }
358
+ var K = {
359
+ color: null,
360
+ image: null
361
+ };
362
+ function q(e, t) {
345
363
  let n = e;
346
364
  for (let e = 0; e < t.length; e += 1) {
347
365
  if (typeof n != "object" || !n) return { ok: !1 };
@@ -354,14 +372,14 @@ function K(e, t) {
354
372
  }
355
373
  //#endregion
356
374
  //#region src/property-panel/fields/AlignField.vue?vue&type=script&setup=true&lang.ts
357
- var Me = ["aria-label"], Ne = [
375
+ var Ne = ["aria-label"], Pe = [
358
376
  "aria-pressed",
359
377
  "title",
360
378
  "onClick"
361
- ], Pe = {
379
+ ], Fe = {
362
380
  key: 1,
363
381
  class: "truncate px-1 text-[10px] leading-none"
364
- }, Fe = /* @__PURE__ */ j({
382
+ }, Ie = /* @__PURE__ */ j({
365
383
  __name: "AlignField",
366
384
  props: {
367
385
  field: {},
@@ -420,31 +438,31 @@ var Me = ["aria-label"], Ne = [
420
438
  "aria-pressed": t.value === e.modelValue,
421
439
  title: t.title,
422
440
  onClick: V((e) => m(t.value), ["prevent"])
423
- }, [t.icon ? (P(), E(_, {
441
+ }, [t.icon ? (P(), E(g, {
424
442
  key: 0,
425
443
  icon: t.icon
426
- }, null, 8, ["icon"])) : (P(), O("span", Pe, R(t.value), 1))], 10, Ne))), 128))], 8, Me));
444
+ }, null, 8, ["icon"])) : (P(), O("span", Fe, R(t.value), 1))], 10, Pe))), 128))], 8, Ne));
427
445
  }
428
- }), Ie = { class: "block" }, Le = ["aria-expanded", "title"], Re = { class: "cn-prop-field__label shrink-0 select-none truncate text-[11px] leading-none text-cn-muted" }, ze = { class: "flex shrink-0 items-center gap-1.5" }, Be = {
446
+ }), Le = { class: "block" }, Re = ["aria-expanded", "title"], ze = { class: "cn-prop-field__label shrink-0 select-none truncate text-[11px] leading-none text-cn-muted" }, Be = { class: "flex shrink-0 items-center gap-1.5" }, Ve = {
429
447
  viewBox: "0 0 24 24",
430
448
  class: "size-3.5",
431
449
  "aria-hidden": "true"
432
- }, Ve = [
450
+ }, He = [
433
451
  "cx",
434
452
  "cy",
435
453
  "r"
436
- ], He = {
454
+ ], Ue = {
437
455
  key: 0,
438
456
  class: "mt-2 flex justify-end"
439
- }, Ue = {
457
+ }, We = {
440
458
  class: "cn-anchor grid w-[66px] shrink-0 grid-cols-3 gap-[3px]",
441
459
  role: "group",
442
460
  "aria-label": "九宫锚点"
443
- }, We = [
461
+ }, Ge = [
444
462
  "aria-pressed",
445
463
  "title",
446
464
  "onClick"
447
- ], Ge = /* @__PURE__ */ j({
465
+ ], Ke = /* @__PURE__ */ j({
448
466
  __name: "AnchorDisclosureField",
449
467
  props: {
450
468
  field: {},
@@ -464,31 +482,31 @@ var Me = ["aria-label"], Ne = [
464
482
  function s(e) {
465
483
  r("change", e);
466
484
  }
467
- return (t, n) => (P(), O("span", Ie, [k("button", {
485
+ return (t, n) => (P(), O("span", Le, [k("button", {
468
486
  type: "button",
469
487
  class: "cn-anchor-disclosure__header flex w-full items-center justify-between gap-2",
470
488
  "aria-expanded": e.expanded,
471
489
  title: e.expanded ? "收起锚点" : `锚点:${e.modelValue}(点击展开调整)`,
472
490
  onClick: n[0] ||= (e) => r("toggle")
473
- }, [k("span", Re, R(e.field.label), 1), k("span", ze, [(P(), O("svg", Be, [(P(!0), O(w, null, I(z(a), (e) => (P(), O("circle", {
491
+ }, [k("span", ze, R(e.field.label), 1), k("span", Be, [(P(), O("svg", Ve, [(P(!0), O(w, null, I(z(a), (e) => (P(), O("circle", {
474
492
  key: e.index,
475
493
  cx: e.cx,
476
494
  cy: e.cy,
477
495
  r: e.index === o.value ? 3.2 : 2.2,
478
496
  class: N(e.index === o.value ? "fill-cn-accent" : "fill-cn-muted/35")
479
- }, null, 10, Ve))), 128))])), A(_, {
497
+ }, null, 10, He))), 128))])), A(g, {
480
498
  icon: z(u),
481
499
  class: N(["text-cn-muted transition-transform duration-150", { "rotate-180": e.expanded }])
482
- }, null, 8, ["icon", "class"])])], 8, Le), e.expanded ? (P(), O("span", He, [k("span", Ue, [(P(!0), O(w, null, I(z(i), (t) => (P(), O("button", {
500
+ }, null, 8, ["icon", "class"])])], 8, Re), e.expanded ? (P(), O("span", Ue, [k("span", We, [(P(!0), O(w, null, I(z(i), (t) => (P(), O("button", {
483
501
  key: t,
484
502
  type: "button",
485
503
  class: N(["cn-anchor__cell relative aspect-square min-w-0 rounded-[4px] border p-0 transition-colors duration-100", t === e.modelValue ? "cn-anchor__cell--active border-cn-accent bg-cn-accent shadow-[0_0_8px_rgba(56,189,248,0.35)]" : "border-cn-field-line bg-cn-field hover:border-cn-muted/50"]),
486
504
  "aria-pressed": t === e.modelValue,
487
505
  title: t,
488
506
  onClick: (e) => s(t)
489
- }, null, 10, We))), 128))])])) : D("", !0)]));
507
+ }, null, 10, Ge))), 128))])])) : D("", !0)]));
490
508
  }
491
- }), Ke = { class: "cn-bool relative inline-flex h-4 w-7 shrink-0 cursor-pointer items-center" }, qe = ["checked"], Je = /* @__PURE__ */ j({
509
+ }), qe = { class: "cn-bool relative inline-flex h-4 w-7 shrink-0 cursor-pointer items-center" }, Je = ["checked"], Ye = /* @__PURE__ */ j({
492
510
  __name: "BooleanField",
493
511
  props: {
494
512
  field: {},
@@ -502,7 +520,7 @@ var Me = ["aria-label"], Ne = [
502
520
  }
503
521
  return ve(() => {
504
522
  i.value && (i.value.checked = n.modelValue);
505
- }), (t, n) => (P(), O("label", Ke, [
523
+ }), (t, n) => (P(), O("label", qe, [
506
524
  k("input", {
507
525
  ref_key: "inputRef",
508
526
  ref: i,
@@ -510,12 +528,12 @@ var Me = ["aria-label"], Ne = [
510
528
  type: "checkbox",
511
529
  checked: e.modelValue,
512
530
  onChange: a
513
- }, null, 40, qe),
531
+ }, null, 40, Je),
514
532
  n[0] ||= k("span", { class: "absolute inset-0 rounded-full border border-cn-field-line bg-cn-field transition-colors duration-150 peer-checked:border-cn-accent/60 peer-checked:bg-cn-accent/30 peer-focus-visible:ring-[3px] peer-focus-visible:ring-cn-accent/20" }, null, -1),
515
533
  n[1] ||= k("span", { class: "relative mx-0.5 size-3 rounded-full bg-cn-muted shadow-sm transition-transform duration-150 peer-checked:translate-x-3 peer-checked:bg-cn-accent" }, null, -1)
516
534
  ]));
517
535
  }
518
- }), Ye = {
536
+ }), Xe = {
519
537
  1: [{
520
538
  label: "四边",
521
539
  rep: "top",
@@ -558,13 +576,13 @@ var Me = ["aria-label"], Ne = [
558
576
  }
559
577
  ]
560
578
  };
561
- function Xe(e) {
579
+ function Ze(e) {
562
580
  return e === 1 ? 2 : e === 2 ? 4 : 1;
563
581
  }
564
- function Ze(e) {
582
+ function Qe(e) {
565
583
  return e.top === e.bottom && e.bottom === e.left && e.left === e.right ? 1 : e.top === e.bottom && e.left === e.right ? 2 : 4;
566
584
  }
567
- function Qe(e, t) {
585
+ function $e(e, t) {
568
586
  if (t === 1) {
569
587
  let { top: t } = e;
570
588
  return {
@@ -585,17 +603,17 @@ function Qe(e, t) {
585
603
  }
586
604
  return e;
587
605
  }
588
- function $e(e, t) {
606
+ function et(e, t) {
589
607
  return e.top === t.top && e.bottom === t.bottom && e.left === t.left && e.right === t.right;
590
608
  }
591
- function q(e, t) {
609
+ function J(e, t) {
592
610
  return e === null || t === null ? e === t : e.width === t.width && e.color === t.color;
593
611
  }
594
- function et(e) {
612
+ function tt(e) {
595
613
  let { top: t, bottom: n, left: r, right: i } = e;
596
- return t === null && n === null && r === null && i === null || t !== null && q(t, n) && q(t, r) && q(t, i) ? 1 : q(t, n) && q(r, i) ? 2 : 4;
614
+ return t === null && n === null && r === null && i === null || t !== null && J(t, n) && J(t, r) && J(t, i) ? 1 : J(t, n) && J(r, i) ? 2 : 4;
597
615
  }
598
- function tt(e, t) {
616
+ function nt(e, t) {
599
617
  let n = (e) => e === null ? null : { ...e };
600
618
  if (t === 1) {
601
619
  let t = n(e.top);
@@ -617,18 +635,18 @@ function tt(e, t) {
617
635
  }
618
636
  return e;
619
637
  }
620
- function nt(e, t) {
621
- return q(e.top, t.top) && q(e.bottom, t.bottom) && q(e.left, t.left) && q(e.right, t.right);
638
+ function rt(e, t) {
639
+ return J(e.top, t.top) && J(e.bottom, t.bottom) && J(e.left, t.left) && J(e.right, t.right);
622
640
  }
623
641
  //#endregion
624
642
  //#region src/property-panel/useShorthandMode.ts
625
- function rt(e, t) {
643
+ function it(e, t) {
626
644
  let n = T(() => t(e())), r = F(null), i = T(() => r.value ?? n.value);
627
645
  B(e, () => {
628
646
  r.value = null;
629
647
  });
630
648
  function a() {
631
- let e = i.value, t = Xe(e);
649
+ let e = i.value, t = Ze(e);
632
650
  return r.value = t, {
633
651
  from: e,
634
652
  to: t
@@ -641,7 +659,7 @@ function rt(e, t) {
641
659
  }
642
660
  //#endregion
643
661
  //#region src/property-panel/controlStyles.ts
644
- var J = "h-7 flex-1 w-full min-w-0 rounded-md border border-cn-field-line bg-cn-field text-[11.5px] leading-none text-cn-fg outline-none transition-[border-color,box-shadow,background-color] duration-100 placeholder:text-cn-muted/60 hover:border-cn-muted/40 focus:border-cn-accent/70 focus:ring-[3px] focus:ring-cn-accent/15 disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:border-cn-field-line", Y = `${J} text-right font-mono tabular-nums`, it = J, at = "w-full flex-1 min-w-0 resize-y rounded-md border border-cn-field-line bg-cn-field px-2 py-1.5 text-[11.5px] leading-5 text-cn-fg outline-none transition-[border-color,box-shadow] duration-100 placeholder:text-cn-muted/60 hover:border-cn-muted/40 focus:border-cn-accent/70 focus:ring-[3px] focus:ring-cn-accent/15 disabled:cursor-not-allowed disabled:opacity-40", ot = "size-7 shrink-0 cursor-pointer self-center rounded-md border border-cn-field-line bg-cn-field p-0.5 transition-colors hover:border-cn-muted/40 disabled:cursor-not-allowed disabled:opacity-40", st = ["aria-label"], ct = /* @__PURE__ */ j({
662
+ var Y = "h-7 flex-1 w-full min-w-0 rounded-md border border-cn-field-line bg-cn-field text-[11.5px] leading-none text-cn-fg outline-none transition-[border-color,box-shadow,background-color] duration-100 placeholder:text-cn-muted/60 hover:border-cn-muted/40 focus:border-cn-accent/70 focus:ring-[3px] focus:ring-cn-accent/15 disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:border-cn-field-line", X = `${Y} text-right font-mono tabular-nums`, at = Y, ot = "w-full flex-1 min-w-0 resize-y rounded-md border border-cn-field-line bg-cn-field px-2 py-1.5 text-[11.5px] leading-5 text-cn-fg outline-none transition-[border-color,box-shadow] duration-100 placeholder:text-cn-muted/60 hover:border-cn-muted/40 focus:border-cn-accent/70 focus:ring-[3px] focus:ring-cn-accent/15 disabled:cursor-not-allowed disabled:opacity-40", st = "size-7 shrink-0 cursor-pointer self-center rounded-md border border-cn-field-line bg-cn-field p-0.5 transition-colors hover:border-cn-muted/40 disabled:cursor-not-allowed disabled:opacity-40", ct = ["aria-label"], lt = /* @__PURE__ */ j({
645
663
  __name: "BorderWidthInput",
646
664
  props: {
647
665
  value: {},
@@ -681,7 +699,7 @@ var J = "h-7 flex-1 w-full min-w-0 rounded-md border border-cn-field-line bg-cn-
681
699
  }
682
700
  return (t, n) => be((P(), O("input", {
683
701
  "onUpdate:modelValue": n[0] ||= (e) => i.value = e,
684
- class: N(["cn-field cn-field--number min-w-0 flex-1", z(Y)]),
702
+ class: N(["cn-field cn-field--number min-w-0 flex-1", z(X)]),
685
703
  type: "number",
686
704
  "aria-label": e.label,
687
705
  min: 0,
@@ -692,9 +710,9 @@ var J = "h-7 flex-1 w-full min-w-0 rounded-md border border-cn-field-line bg-cn-
692
710
  onFocus: n[1] ||= (e) => a.value = !0,
693
711
  onBlur: u,
694
712
  onChange: u
695
- }, null, 42, st)), [[_e, i.value]]);
713
+ }, null, 42, ct)), [[_e, i.value]]);
696
714
  }
697
- }), lt = ["aria-label", "title"], ut = /* @__PURE__ */ j({
715
+ }), ut = ["aria-label", "title"], dt = /* @__PURE__ */ j({
698
716
  __name: "ShorthandModeButton",
699
717
  props: {
700
718
  mode: {},
@@ -722,17 +740,17 @@ var J = "h-7 flex-1 w-full min-w-0 rounded-md border border-cn-field-line bg-cn-
722
740
  "aria-label": o.value,
723
741
  title: o.value,
724
742
  onClick: t[0] ||= V((e) => r("cycle"), ["prevent"])
725
- }, [A(_, {
743
+ }, [A(g, {
726
744
  icon: a.value.icon,
727
745
  size: 12
728
- }, null, 8, ["icon"])], 8, lt));
746
+ }, null, 8, ["icon"])], 8, ut));
729
747
  }
730
- }), dt = { class: "cn-border flex w-full min-w-0 items-center gap-1" }, ft = { class: "grid min-w-0 flex-1 gap-1 grid-cols-1" }, pt = { class: "w-5 shrink-0 select-none text-[10px] leading-none text-cn-muted" }, mt = [
748
+ }), ft = { class: "cn-border flex w-full min-w-0 items-center gap-1" }, pt = { class: "grid min-w-0 flex-1 gap-1 grid-cols-1" }, mt = { class: "w-5 shrink-0 select-none text-[10px] leading-none text-cn-muted" }, ht = [
731
749
  "value",
732
750
  "disabled",
733
751
  "onInput",
734
752
  "onChange"
735
- ], X = "#000000", ht = /* @__PURE__ */ j({
753
+ ], gt = "#000000", _t = /* @__PURE__ */ j({
736
754
  __name: "BorderField",
737
755
  props: {
738
756
  field: {},
@@ -740,12 +758,12 @@ var J = "h-7 flex-1 w-full min-w-0 rounded-md border border-cn-field-line bg-cn-
740
758
  },
741
759
  emits: ["input", "change"],
742
760
  setup(e, { emit: t }) {
743
- let n = e, r = t, { mode: i, cycle: a } = rt(() => n.modelValue, et), o = T(() => Ye[i.value]);
761
+ let n = e, r = t, { mode: i, cycle: a } = it(() => n.modelValue, tt), o = T(() => Xe[i.value]);
744
762
  function s(e) {
745
763
  return n.modelValue[e.rep]?.width ?? null;
746
764
  }
747
765
  function c(e) {
748
- return n.modelValue[e.rep]?.color ?? X;
766
+ return n.modelValue[e.rep]?.color ?? gt;
749
767
  }
750
768
  function l(e, t, i) {
751
769
  let a = { ...n.modelValue };
@@ -753,7 +771,7 @@ var J = "h-7 flex-1 w-full min-w-0 rounded-md border border-cn-field-line bg-cn-
753
771
  r(i ? "change" : "input", a);
754
772
  }
755
773
  function u(e, t, r) {
756
- let i = n.modelValue[e.rep]?.color ?? X;
774
+ let i = n.modelValue[e.rep]?.color ?? gt;
757
775
  l(e, t <= 0 ? null : {
758
776
  width: t,
759
777
  color: i
@@ -771,20 +789,20 @@ var J = "h-7 flex-1 w-full min-w-0 rounded-md border border-cn-field-line bg-cn-
771
789
  function f() {
772
790
  let { from: e, to: t } = a();
773
791
  if (t < e) {
774
- let e = tt(n.modelValue, t);
775
- nt(e, n.modelValue) || r("change", e);
792
+ let e = nt(n.modelValue, t);
793
+ rt(e, n.modelValue) || r("change", e);
776
794
  }
777
795
  }
778
- return (t, n) => (P(), O("span", dt, [A(ut, {
796
+ return (t, n) => (P(), O("span", ft, [A(dt, {
779
797
  mode: z(i),
780
798
  label: "边框",
781
799
  onCycle: f
782
- }, null, 8, ["mode"]), k("span", ft, [(P(!0), O(w, null, I(o.value, (t) => (P(), O("label", {
800
+ }, null, 8, ["mode"]), k("span", pt, [(P(!0), O(w, null, I(o.value, (t) => (P(), O("label", {
783
801
  key: t.rep,
784
802
  class: "flex items-center gap-1.5"
785
803
  }, [
786
- k("span", pt, R(t.label), 1),
787
- A(ct, {
804
+ k("span", mt, R(t.label), 1),
805
+ A(lt, {
788
806
  class: "cn-border__width",
789
807
  value: s(t),
790
808
  label: t.label,
@@ -804,17 +822,17 @@ var J = "h-7 flex-1 w-full min-w-0 rounded-md border border-cn-field-line bg-cn-
804
822
  disabled: e.modelValue[t.rep] === null,
805
823
  onInput: (e) => d(t, e, !1),
806
824
  onChange: (e) => d(t, e, !0)
807
- }, null, 40, mt)
825
+ }, null, 40, ht)
808
826
  ]))), 128))])]));
809
827
  }
810
- }), gt = ["value"], _t = {
828
+ }), vt = ["value"], yt = {
811
829
  key: 1,
812
830
  class: "flex flex-1 items-center gap-1.5"
813
- }, vt = ["value"], yt = ["value"], bt = [
831
+ }, bt = ["value"], xt = ["value"], St = [
814
832
  "disabled",
815
833
  "title",
816
834
  "data-upload-error"
817
- ], xt = /* @__PURE__ */ j({
835
+ ], Ct = /* @__PURE__ */ j({
818
836
  __name: "FontField",
819
837
  props: {
820
838
  field: {},
@@ -866,7 +884,7 @@ var J = "h-7 flex-1 w-full min-w-0 rounded-md border border-cn-field-line bg-cn-
866
884
  if (t.value = "", i !== null && n && !p.value) {
867
885
  p.value = !0;
868
886
  try {
869
- let e = await i.uploadFont(await C(n));
887
+ let e = await i.uploadFont(await ue(n));
870
888
  r("change", e);
871
889
  } catch (e) {
872
890
  m.value = e instanceof Error ? e.message : String(e);
@@ -877,22 +895,22 @@ var J = "h-7 flex-1 w-full min-w-0 rounded-md border border-cn-field-line bg-cn-
877
895
  }
878
896
  return (t, n) => z(i) === null ? (P(), O("input", {
879
897
  key: 0,
880
- class: N(["cn-field", z(it)]),
898
+ class: N(["cn-field", z(at)]),
881
899
  type: "text",
882
900
  value: e.modelValue,
883
901
  onInput: l,
884
902
  onCompositionstart: u,
885
903
  onCompositionend: d,
886
904
  onChange: f
887
- }, null, 42, gt)) : (P(), O("div", _t, [
905
+ }, null, 42, vt)) : (P(), O("div", yt, [
888
906
  k("select", {
889
- class: N(["cn-field cn-select", z(J)]),
907
+ class: N(["cn-field cn-select", z(Y)]),
890
908
  value: e.modelValue,
891
909
  onChange: s
892
910
  }, [(P(!0), O(w, null, I(a.value, (e) => (P(), O("option", {
893
911
  key: e.value,
894
912
  value: e.value
895
- }, R(e.label), 9, yt))), 128))], 42, vt),
913
+ }, R(e.label), 9, xt))), 128))], 42, bt),
896
914
  k("input", {
897
915
  ref_key: "fileInput",
898
916
  ref: h,
@@ -909,10 +927,10 @@ var J = "h-7 flex-1 w-full min-w-0 rounded-md border border-cn-field-line bg-cn-
909
927
  title: m.value ?? "上传本机字体(加入清单后可选)",
910
928
  "data-upload-error": m.value ?? void 0,
911
929
  onClick: g
912
- }, R(p.value ? "…" : m.value ? "!" : "上传"), 9, bt)) : D("", !0)
930
+ }, R(p.value ? "…" : m.value ? "!" : "上传"), 9, St)) : D("", !0)
913
931
  ]));
914
932
  }
915
- }), St = { class: "cn-color flex min-w-0 flex-1 items-center gap-1.5" }, Ct = ["checked"], wt = ["value", "disabled"], Tt = ["value", "disabled"], Et = "#000000", Dt = /* @__PURE__ */ j({
933
+ }), wt = { class: "cn-color flex min-w-0 flex-1 items-center gap-1.5" }, Tt = ["checked"], Et = ["value", "disabled"], Dt = ["value", "disabled"], Ot = "#000000", kt = /* @__PURE__ */ j({
916
934
  __name: "ColorField",
917
935
  props: {
918
936
  field: {},
@@ -925,7 +943,7 @@ var J = "h-7 flex-1 w-full min-w-0 rounded-md border border-cn-field-line bg-cn-
925
943
  i.value = e !== null, i.value && (a.value = o(e));
926
944
  });
927
945
  function o(e) {
928
- return e !== null && /^#[0-9a-fA-F]{6}$/.test(e) ? e : Et;
946
+ return e !== null && /^#[0-9a-fA-F]{6}$/.test(e) ? e : Ot;
929
947
  }
930
948
  function s(e) {
931
949
  let t = e.target.checked;
@@ -952,7 +970,7 @@ var J = "h-7 flex-1 w-full min-w-0 rounded-md border border-cn-field-line bg-cn-
952
970
  }
953
971
  a.value = o(t), r("change", t);
954
972
  }
955
- return (t, n) => (P(), O("span", St, [
973
+ return (t, n) => (P(), O("span", wt, [
956
974
  e.field.nullable ? (P(), O("input", {
957
975
  key: 0,
958
976
  class: "cn-color__toggle size-3.5 shrink-0 cursor-pointer accent-cn-accent",
@@ -960,32 +978,32 @@ var J = "h-7 flex-1 w-full min-w-0 rounded-md border border-cn-field-line bg-cn-
960
978
  title: "启用颜色",
961
979
  checked: i.value,
962
980
  onChange: s
963
- }, null, 40, Ct)) : D("", !0),
981
+ }, null, 40, Tt)) : D("", !0),
964
982
  k("input", {
965
- class: N(["cn-color__swatch", z(ot)]),
983
+ class: N(["cn-color__swatch", z(st)]),
966
984
  type: "color",
967
985
  value: a.value,
968
986
  disabled: !i.value,
969
987
  onInput: c,
970
988
  onChange: l
971
- }, null, 42, wt),
989
+ }, null, 42, Et),
972
990
  k("input", {
973
- class: N(["cn-color__text min-w-0 flex-1", z(J)]),
991
+ class: N(["cn-color__text min-w-0 flex-1", z(Y)]),
974
992
  type: "text",
975
993
  value: e.modelValue ?? "",
976
994
  disabled: !i.value,
977
995
  placeholder: "无",
978
996
  onChange: u
979
- }, null, 42, Tt)
997
+ }, null, 42, Dt)
980
998
  ]));
981
999
  }
982
1000
  }), Z = Symbol("canvas-image-upload");
983
- function Ot() {
1001
+ function At() {
984
1002
  return fe(Z, null);
985
1003
  }
986
1004
  //#endregion
987
1005
  //#region src/property-panel/fields/TextField.vue?vue&type=script&setup=true&lang.ts
988
- var kt = ["value", "placeholder"], Q = /* @__PURE__ */ j({
1006
+ var jt = ["value", "placeholder"], Q = /* @__PURE__ */ j({
989
1007
  __name: "TextField",
990
1008
  props: {
991
1009
  field: {},
@@ -1015,7 +1033,7 @@ var kt = ["value", "placeholder"], Q = /* @__PURE__ */ j({
1015
1033
  o(t) || r("change", t);
1016
1034
  }
1017
1035
  return (t, n) => (P(), O("input", {
1018
- class: N(["cn-field", [z(it), a.value ? "cn-field--invalid" : ""]]),
1036
+ class: N(["cn-field", [z(at), a.value ? "cn-field--invalid" : ""]]),
1019
1037
  type: "text",
1020
1038
  value: e.modelValue,
1021
1039
  placeholder: e.field.placeholder,
@@ -1023,9 +1041,9 @@ var kt = ["value", "placeholder"], Q = /* @__PURE__ */ j({
1023
1041
  onCompositionstart: c,
1024
1042
  onCompositionend: l,
1025
1043
  onChange: u
1026
- }, null, 42, kt));
1044
+ }, null, 42, jt));
1027
1045
  }
1028
- }), At = /* @__PURE__ */ j({
1046
+ }), Mt = /* @__PURE__ */ j({
1029
1047
  __name: "ResourceValueField",
1030
1048
  props: {
1031
1049
  field: {},
@@ -1038,10 +1056,10 @@ var kt = ["value", "placeholder"], Q = /* @__PURE__ */ j({
1038
1056
  setup(e, { emit: t }) {
1039
1057
  let n = e, r = t, i = T(() => n.dataMode === "expression"), a = T(() => {
1040
1058
  let e = n.modelValue ?? "";
1041
- return i.value ? v(e) ?? e : "";
1059
+ return i.value ? b(e) ?? e : "";
1042
1060
  });
1043
1061
  function o(e) {
1044
- let t = b(e);
1062
+ let t = S(e);
1045
1063
  r("input", t), r("change", t);
1046
1064
  }
1047
1065
  return (t, n) => i.value ? (P(), E(y, {
@@ -1072,17 +1090,17 @@ var kt = ["value", "placeholder"], Q = /* @__PURE__ */ j({
1072
1090
  "disabled"
1073
1091
  ]));
1074
1092
  }
1075
- }), jt = {
1093
+ }), Nt = {
1076
1094
  key: 0,
1077
1095
  class: "flex flex-col gap-1.5"
1078
- }, Mt = [
1096
+ }, Pt = [
1079
1097
  "disabled",
1080
1098
  "title",
1081
1099
  "data-upload-error"
1082
- ], Nt = ["src"], Pt = {
1100
+ ], Ft = ["src"], It = {
1083
1101
  key: 2,
1084
1102
  class: "relative"
1085
- }, Ft = { class: "flex items-center gap-1.5" }, It = /* @__PURE__ */ j({
1103
+ }, Lt = { class: "flex items-center gap-1.5" }, Rt = /* @__PURE__ */ j({
1086
1104
  __name: "ImageSrcField",
1087
1105
  props: {
1088
1106
  field: {},
@@ -1094,7 +1112,7 @@ var kt = ["value", "placeholder"], Q = /* @__PURE__ */ j({
1094
1112
  },
1095
1113
  emits: ["input", "change"],
1096
1114
  setup(e, { emit: t }) {
1097
- let n = e, r = t, i = Ot(), a = T(() => i !== null && i.canUpload && n.dataMode !== "expression"), o = T(() => typeof n.modelValue == "string" && n.modelValue !== ""), s = T(() => n.resourceStatus === "pending" ? "装载中" : n.resourceStatus === "failed" ? "失败" : null), c = F(!1), l = F(null), u = F(null);
1115
+ let n = e, r = t, i = At(), a = T(() => i !== null && i.canUpload && n.dataMode !== "expression"), o = T(() => typeof n.modelValue == "string" && n.modelValue !== ""), s = T(() => n.resourceStatus === "pending" ? "装载中" : n.resourceStatus === "failed" ? "失败" : null), c = F(!1), l = F(null), u = F(null);
1098
1116
  function d() {
1099
1117
  l.value = null, u.value?.click();
1100
1118
  }
@@ -1103,7 +1121,7 @@ var kt = ["value", "placeholder"], Q = /* @__PURE__ */ j({
1103
1121
  if (t.value = "", i !== null && n && !c.value) {
1104
1122
  c.value = !0;
1105
1123
  try {
1106
- let e = await i.uploadImage(await C(n));
1124
+ let e = await i.uploadImage(await ue(n));
1107
1125
  e !== null && r("change", e);
1108
1126
  } catch (e) {
1109
1127
  l.value = e instanceof Error ? e.message : String(e);
@@ -1112,7 +1130,7 @@ var kt = ["value", "placeholder"], Q = /* @__PURE__ */ j({
1112
1130
  }
1113
1131
  }
1114
1132
  }
1115
- return (t, n) => a.value ? (P(), O("div", jt, [
1133
+ return (t, n) => a.value ? (P(), O("div", Nt, [
1116
1134
  k("button", {
1117
1135
  type: "button",
1118
1136
  class: "cn-imagesrc__thumb relative flex h-16 w-full items-center justify-center overflow-hidden rounded-md border border-dashed border-cn-field-line bg-cn-field/40 text-[11px] leading-none text-cn-muted transition-colors duration-100 hover:border-cn-muted/40 disabled:cursor-not-allowed disabled:opacity-40",
@@ -1126,13 +1144,13 @@ var kt = ["value", "placeholder"], Q = /* @__PURE__ */ j({
1126
1144
  src: e.modelValue ?? void 0,
1127
1145
  class: "absolute inset-0 size-full object-cover",
1128
1146
  alt: ""
1129
- }, null, 8, Nt)) : D("", !0),
1147
+ }, null, 8, Ft)) : D("", !0),
1130
1148
  s.value ? (P(), O("span", {
1131
1149
  key: 1,
1132
1150
  class: N(["cn-imagesrc__status absolute right-1 top-1 rounded bg-cn-bg-elevated/90 px-1 py-0.5 text-[10px] leading-none", e.resourceStatus === "failed" ? "text-red-400" : "text-cn-muted"])
1133
1151
  }, R(s.value), 3)) : D("", !0),
1134
- o.value ? D("", !0) : (P(), O("span", Pt, R(c.value ? "…" : l.value ? "!" : "点击上传图片"), 1))
1135
- ], 8, Mt),
1152
+ o.value ? D("", !0) : (P(), O("span", It, R(c.value ? "…" : l.value ? "!" : "点击上传图片"), 1))
1153
+ ], 8, Pt),
1136
1154
  k("input", {
1137
1155
  ref_key: "fileInput",
1138
1156
  ref: u,
@@ -1141,7 +1159,7 @@ var kt = ["value", "placeholder"], Q = /* @__PURE__ */ j({
1141
1159
  accept: "image/*",
1142
1160
  onChange: f
1143
1161
  }, null, 544),
1144
- k("div", Ft, [A(Q, {
1162
+ k("div", Lt, [A(Q, {
1145
1163
  class: "flex-1",
1146
1164
  field: e.field,
1147
1165
  "model-value": e.modelValue ?? "",
@@ -1159,7 +1177,7 @@ var kt = ["value", "placeholder"], Q = /* @__PURE__ */ j({
1159
1177
  title: "清除图片(资源地址置空)",
1160
1178
  onClick: n[2] ||= (e) => r("change", "")
1161
1179
  }, "清除")) : D("", !0)])
1162
- ])) : e.dataMode === "expression" ? (P(), E(At, {
1180
+ ])) : e.dataMode === "expression" ? (P(), E(Mt, {
1163
1181
  key: 1,
1164
1182
  field: e.field,
1165
1183
  "model-value": e.modelValue,
@@ -1186,7 +1204,7 @@ var kt = ["value", "placeholder"], Q = /* @__PURE__ */ j({
1186
1204
  "aria-label"
1187
1205
  ]));
1188
1206
  }
1189
- }), Lt = [
1207
+ }), zt = [
1190
1208
  "aria-label",
1191
1209
  "min",
1192
1210
  "max",
@@ -1229,7 +1247,7 @@ var kt = ["value", "placeholder"], Q = /* @__PURE__ */ j({
1229
1247
  }
1230
1248
  return (t, n) => be((P(), O("input", {
1231
1249
  "onUpdate:modelValue": n[0] ||= (e) => i.value = e,
1232
- class: N(["cn-field cn-field--number", z(Y)]),
1250
+ class: N(["cn-field cn-field--number", z(X)]),
1233
1251
  type: "number",
1234
1252
  "aria-label": e.field.label,
1235
1253
  min: e.field.min,
@@ -1239,9 +1257,9 @@ var kt = ["value", "placeholder"], Q = /* @__PURE__ */ j({
1239
1257
  onFocus: n[1] ||= (e) => a.value = !0,
1240
1258
  onBlur: l,
1241
1259
  onChange: l
1242
- }, null, 42, Lt)), [[_e, i.value]]);
1260
+ }, null, 42, zt)), [[_e, i.value]]);
1243
1261
  }
1244
- }), Rt = { class: "cn-padding flex w-full min-w-0 items-center gap-1.5" }, zt = { class: "w-5 shrink-0 select-none text-[10px] leading-none text-cn-muted" }, Bt = /* @__PURE__ */ j({
1262
+ }), Bt = { class: "cn-padding flex w-full min-w-0 items-center gap-1.5" }, Vt = { class: "w-5 shrink-0 select-none text-[10px] leading-none text-cn-muted" }, Ht = /* @__PURE__ */ j({
1245
1263
  __name: "PaddingField",
1246
1264
  props: {
1247
1265
  field: {},
@@ -1249,7 +1267,7 @@ var kt = ["value", "placeholder"], Q = /* @__PURE__ */ j({
1249
1267
  },
1250
1268
  emits: ["input", "change"],
1251
1269
  setup(e, { emit: t }) {
1252
- let n = e, r = t, { mode: i, cycle: a } = rt(() => n.modelValue, Ze), o = T(() => Ye[i.value]);
1270
+ let n = e, r = t, { mode: i, cycle: a } = it(() => n.modelValue, Qe), o = T(() => Xe[i.value]);
1253
1271
  function s(e) {
1254
1272
  return {
1255
1273
  key: ["padding", e.rep],
@@ -1265,18 +1283,18 @@ var kt = ["value", "placeholder"], Q = /* @__PURE__ */ j({
1265
1283
  function l() {
1266
1284
  let { from: e, to: t } = a();
1267
1285
  if (t < e) {
1268
- let e = Qe(n.modelValue, t);
1269
- $e(e, n.modelValue) || r("change", e);
1286
+ let e = $e(n.modelValue, t);
1287
+ et(e, n.modelValue) || r("change", e);
1270
1288
  }
1271
1289
  }
1272
- return (t, n) => (P(), O("span", Rt, [A(ut, {
1290
+ return (t, n) => (P(), O("span", Bt, [A(dt, {
1273
1291
  mode: z(i),
1274
1292
  label: "内边距",
1275
1293
  onCycle: l
1276
1294
  }, null, 8, ["mode"]), k("span", { class: N(["grid min-w-0 flex-1 gap-1.5", z(i) === 1 ? "grid-cols-1" : "grid-cols-2"]) }, [(P(!0), O(w, null, I(o.value, (t) => (P(), O("label", {
1277
1295
  key: t.rep,
1278
1296
  class: "flex min-w-0 items-center gap-1.5"
1279
- }, [k("span", zt, R(t.label), 1), A($, {
1297
+ }, [k("span", Vt, R(t.label), 1), A($, {
1280
1298
  class: "min-w-0 flex-1",
1281
1299
  field: s(t),
1282
1300
  "model-value": e.modelValue[t.rep],
@@ -1289,16 +1307,16 @@ var kt = ["value", "placeholder"], Q = /* @__PURE__ */ j({
1289
1307
  "onChange"
1290
1308
  ])]))), 128))], 2)]));
1291
1309
  }
1292
- }), Vt = { class: "grid w-full min-w-0 grid-cols-2 gap-1" }, Ht = ["title"], Ut = { class: "w-3.5 shrink-0 select-none text-[10px] leading-none text-cn-muted" }, Wt = [
1310
+ }), Ut = { class: "grid w-full min-w-0 grid-cols-2 gap-1" }, Wt = ["title"], Gt = { class: "w-3.5 shrink-0 select-none text-[10px] leading-none text-cn-muted" }, Kt = [
1293
1311
  "aria-pressed",
1294
1312
  "title",
1295
1313
  "onClick"
1296
- ], Gt = [
1314
+ ], qt = [
1297
1315
  "aria-label",
1298
1316
  "value",
1299
1317
  "placeholder",
1300
1318
  "title"
1301
- ], Kt = /* @__PURE__ */ j({
1319
+ ], Jt = /* @__PURE__ */ j({
1302
1320
  __name: "PairField",
1303
1321
  props: {
1304
1322
  field: {},
@@ -1314,7 +1332,7 @@ var kt = ["value", "placeholder"], Q = /* @__PURE__ */ j({
1314
1332
  let n = e, r = t, i = T(() => n.field.items ?? []);
1315
1333
  function a(e) {
1316
1334
  if (!e.auto) return !1;
1317
- let t = K(n.modelValue, e.auto.key);
1335
+ let t = q(n.modelValue, e.auto.key);
1318
1336
  return t.ok && t.value === !0;
1319
1337
  }
1320
1338
  function o(e) {
@@ -1337,7 +1355,7 @@ var kt = ["value", "placeholder"], Q = /* @__PURE__ */ j({
1337
1355
  r("sub-commit", s(e), !a(e), !0);
1338
1356
  }
1339
1357
  function u(e) {
1340
- let t = K(n.modelValue, e.key);
1358
+ let t = q(n.modelValue, e.key);
1341
1359
  return t.ok && typeof t.value == "number" ? t.value : 0;
1342
1360
  }
1343
1361
  function d(e) {
@@ -1354,12 +1372,12 @@ var kt = ["value", "placeholder"], Q = /* @__PURE__ */ j({
1354
1372
  let t = d(e);
1355
1373
  return t?.preview ? "模板子树:预览盒尺寸(随行实例变化,非文档声明值)" : t === void 0 ? `${e.label}自适应:已开启` : `${e.label}自适应:布局解析值(与画布选择框同源)`;
1356
1374
  }
1357
- return (e, t) => (P(), O("span", Vt, [(P(!0), O(w, null, I(i.value, (e) => (P(), O("label", {
1375
+ return (e, t) => (P(), O("span", Ut, [(P(!0), O(w, null, I(i.value, (e) => (P(), O("label", {
1358
1376
  key: e.key.join("."),
1359
1377
  class: "flex min-w-0 items-center gap-1",
1360
1378
  title: e.auto ? void 0 : e.label
1361
1379
  }, [
1362
- k("span", Ut, R(e.label), 1),
1380
+ k("span", Gt, R(e.label), 1),
1363
1381
  e.auto ? (P(), O("button", {
1364
1382
  key: 0,
1365
1383
  type: "button",
@@ -1367,17 +1385,17 @@ var kt = ["value", "placeholder"], Q = /* @__PURE__ */ j({
1367
1385
  "aria-pressed": a(e),
1368
1386
  title: p(e),
1369
1387
  onClick: V((t) => l(e), ["prevent"])
1370
- }, "自", 10, Wt)) : D("", !0),
1388
+ }, "自", 10, Kt)) : D("", !0),
1371
1389
  a(e) ? (P(), O("input", {
1372
1390
  key: 2,
1373
- class: N(["cn-field cn-field--number min-w-0 flex-1", [z(Y), d(e)?.preview ? "cn-field--preview" : ""]]),
1391
+ class: N(["cn-field cn-field--number min-w-0 flex-1", [z(X), d(e)?.preview ? "cn-field--preview" : ""]]),
1374
1392
  type: "number",
1375
1393
  disabled: "",
1376
1394
  "aria-label": e.label,
1377
1395
  value: f(e),
1378
1396
  placeholder: e.auto?.placeholder ?? "",
1379
1397
  title: m(e)
1380
- }, null, 10, Gt)) : (P(), E($, {
1398
+ }, null, 10, qt)) : (P(), E($, {
1381
1399
  key: 1,
1382
1400
  class: "min-w-0 flex-1",
1383
1401
  field: e,
@@ -1390,9 +1408,38 @@ var kt = ["value", "placeholder"], Q = /* @__PURE__ */ j({
1390
1408
  "onInput",
1391
1409
  "onChange"
1392
1410
  ]))
1393
- ], 8, Ht))), 128))]));
1411
+ ], 8, Wt))), 128))]));
1412
+ }
1413
+ }), Yt = /* @__PURE__ */ j({
1414
+ __name: "RowsPathField",
1415
+ props: {
1416
+ field: {},
1417
+ modelValue: {},
1418
+ source: { type: [Function, null] },
1419
+ disabled: { type: Boolean }
1420
+ },
1421
+ emits: ["input", "change"],
1422
+ setup(e, { emit: t }) {
1423
+ let n = t;
1424
+ function r(e) {
1425
+ n("input", e), n("change", e);
1426
+ }
1427
+ return (t, n) => (P(), E(y, {
1428
+ mode: "rowsPath",
1429
+ "model-value": e.modelValue,
1430
+ source: e.source ?? null,
1431
+ disabled: e.disabled,
1432
+ "aria-label": e.field.label,
1433
+ placeholder: "未选择行路径",
1434
+ "onUpdate:modelValue": r
1435
+ }, null, 8, [
1436
+ "model-value",
1437
+ "source",
1438
+ "disabled",
1439
+ "aria-label"
1440
+ ]));
1394
1441
  }
1395
- }), qt = ["value"], Jt = ["value"], Yt = /* @__PURE__ */ j({
1442
+ }), Xt = ["value"], Zt = ["value"], Qt = /* @__PURE__ */ j({
1396
1443
  __name: "SelectField",
1397
1444
  props: {
1398
1445
  field: {},
@@ -1411,9 +1458,9 @@ var kt = ["value", "placeholder"], Q = /* @__PURE__ */ j({
1411
1458
  }, [(P(!0), O(w, null, I(e.field.domain ?? [], (e) => (P(), O("option", {
1412
1459
  key: e,
1413
1460
  value: e
1414
- }, R(e), 9, Jt))), 128))], 40, qt));
1461
+ }, R(e), 9, Zt))), 128))], 40, Xt));
1415
1462
  }
1416
- }), Xt = ["value", "disabled"], Zt = /* @__PURE__ */ j({
1463
+ }), $t = ["value", "disabled"], en = /* @__PURE__ */ j({
1417
1464
  __name: "TextareaField",
1418
1465
  props: {
1419
1466
  field: {},
@@ -1437,7 +1484,7 @@ var kt = ["value", "placeholder"], Q = /* @__PURE__ */ j({
1437
1484
  r = !1, n("change", e.target.value);
1438
1485
  }
1439
1486
  return (t, n) => (P(), O("textarea", {
1440
- class: N(["cn-field", z(at)]),
1487
+ class: N(["cn-field", z(ot)]),
1441
1488
  rows: "3",
1442
1489
  value: e.modelValue,
1443
1490
  disabled: e.disabled,
@@ -1445,27 +1492,28 @@ var kt = ["value", "placeholder"], Q = /* @__PURE__ */ j({
1445
1492
  onCompositionstart: a,
1446
1493
  onCompositionend: o,
1447
1494
  onChange: s
1448
- }, null, 42, Xt));
1495
+ }, null, 42, $t));
1449
1496
  }
1450
- }), Qt = {
1497
+ }), tn = {
1451
1498
  number: M($),
1452
1499
  text: M(Q),
1453
- textarea: M(Zt),
1454
- color: M(Dt),
1455
- select: M(Yt),
1456
- boolean: M(Je),
1457
- pair: M(Kt),
1458
- anchor: M(Ge),
1459
- align: M(Fe),
1460
- padding: M(Bt),
1461
- border: M(ht),
1462
- font: M(xt),
1463
- imageSrc: M(It),
1464
- resourceValue: M(At)
1500
+ textarea: M(en),
1501
+ color: M(kt),
1502
+ select: M(Qt),
1503
+ boolean: M(Ye),
1504
+ pair: M(Jt),
1505
+ anchor: M(Ke),
1506
+ align: M(Ie),
1507
+ padding: M(Ht),
1508
+ border: M(_t),
1509
+ font: M(Ct),
1510
+ imageSrc: M(Rt),
1511
+ resourceValue: M(Mt),
1512
+ rowsPath: M(Yt)
1465
1513
  };
1466
1514
  //#endregion
1467
1515
  //#region src/property-panel/usePropertyPanel.ts
1468
- function $t(e) {
1516
+ function nn(e) {
1469
1517
  let t = L(e.store.doc), n = L(e.store.ui.selection), r = L(e.store.ui.anchorExpanded), i = L(e.store.ui.dataSourceSchema), a = L(e.store.ui.resourceStatuses), o = L(e.store.ui.editing), s = e.subscribe((s) => {
1470
1518
  s.scope === "doc" ? (t.value = e.store.doc, n.value = e.store.ui.selection, a.value = e.store.ui.resourceStatuses, o.value = e.store.ui.editing) : s.scope === "ui" && (s.branch === "selection" ? (n.value = e.store.ui.selection, e.store.closeMerge()) : s.branch === "anchorExpanded" ? r.value = e.store.ui.anchorExpanded : s.branch === "dataSourceSchema" ? i.value = e.store.ui.dataSourceSchema : s.branch === "resourceStatuses" ? a.value = e.store.ui.resourceStatuses : s.branch === "editing" && (o.value = e.store.ui.editing));
1471
1519
  });
@@ -1481,31 +1529,34 @@ function $t(e) {
1481
1529
  return r && t.value ? e.layerBoxAt(r) : null;
1482
1530
  }), f = T(() => {
1483
1531
  let e = i.value;
1484
- return e === null ? null : se(e, x(e, t.value, n.value));
1485
- }), h = T(() => ce(le(t.value, n.value, i.value))), g = T(() => n.value?.includes("template") ?? !1), _ = T(() => {
1532
+ return e === null ? null : te(e, ce(e, t.value, n.value));
1533
+ }), h = T(() => _(t.value, n.value, i.value)), g = T(() => ee(h.value)), y = T(() => {
1534
+ let e = c.value;
1535
+ return e === null || e.type !== "TableLayer" || e.template === null ? !1 : v(h.value, e.rowsPath);
1536
+ }), b = T(() => n.value?.includes("template") ?? !1), x = T(() => {
1486
1537
  let e = o.value, t = n.value;
1487
1538
  return e !== null && t !== null && m(e.path, t);
1488
1539
  });
1489
- function ee(t) {
1540
+ function S(t) {
1490
1541
  e.store.setAnchorExpanded(t);
1491
1542
  }
1492
- function v(e) {
1543
+ function C(e) {
1493
1544
  if (!e.data) return !1;
1494
- if (_.value) return o.value?.expression === !0;
1545
+ if (x.value) return o.value?.expression === !0;
1495
1546
  let t = c.value;
1496
1547
  return t !== null && "expression" in t && t.expression !== null;
1497
1548
  }
1498
- function y(r, i, a) {
1549
+ function ne(r, i, a) {
1499
1550
  if (!t.value) return;
1500
1551
  let o = n.value;
1501
1552
  if (!o) {
1502
- te(r, i, a);
1553
+ ie(r, i, a);
1503
1554
  return;
1504
1555
  }
1505
- let s = S(o, r.key);
1556
+ let s = oe(o, r.key);
1506
1557
  if (r.data) {
1507
- if (v(r)) {
1508
- let t = S(o, ["data", "expression"]);
1558
+ if (C(r)) {
1559
+ let t = oe(o, ["data", "expression"]);
1509
1560
  e.updateDataExpression(o, i, { mergeKey: t }), a && e.store.closeMerge(t);
1510
1561
  return;
1511
1562
  }
@@ -1514,45 +1565,59 @@ function $t(e) {
1514
1565
  }
1515
1566
  e.updateSpec(o, r.key, i, { mergeKey: s }), a && e.store.closeMerge(s);
1516
1567
  }
1517
- function b(t) {
1568
+ function re(t) {
1518
1569
  let r = n.value;
1519
1570
  r && t.data && e.toggleDataMode(r);
1520
1571
  }
1521
- function te(t, n, r) {
1572
+ function ie(t, n, r) {
1522
1573
  let i = t.key[0];
1574
+ if (i === "background") {
1575
+ ae(t, n, r);
1576
+ return;
1577
+ }
1523
1578
  if (i !== "width" && i !== "height" || typeof n != "number") return;
1524
1579
  let a = `canvas:${i}`;
1525
1580
  e.updateCanvasProp(i, n, { mergeKey: a }), r && e.store.closeMerge(a);
1526
1581
  }
1582
+ function ae(t, n, r) {
1583
+ let i = t.key[1];
1584
+ if (i !== "color" && i !== "image") return;
1585
+ let a = l.value?.background ?? K, o = typeof n == "string" && n !== "" ? n : null, s = {
1586
+ ...a,
1587
+ [i]: o
1588
+ }, c = `canvas:background.${i}`;
1589
+ e.updateCanvasProp("background", s, { mergeKey: c }), r && e.store.closeMerge(c);
1590
+ }
1527
1591
  return {
1528
1592
  selection: T(() => n.value),
1529
1593
  layer: c,
1530
1594
  canvas: l,
1531
1595
  sections: u,
1532
1596
  layerBox: d,
1533
- isPreviewBox: g,
1597
+ isPreviewBox: b,
1534
1598
  completionSource: f,
1535
- rowsPathSource: h,
1599
+ rowsPathSource: g,
1600
+ rowsPathDrifted: y,
1536
1601
  resourceStatuses: T(() => a.value),
1537
1602
  anchorExpanded: T(() => r.value),
1538
- contentLocked: _,
1603
+ contentLocked: x,
1539
1604
  editingSession: T(() => o.value),
1540
- isDataMarked: v,
1541
- commit: y,
1542
- toggleDataMode: b,
1543
- setAnchorExpanded: ee
1605
+ isDataMarked: C,
1606
+ commit: ne,
1607
+ toggleDataMode: re,
1608
+ setAnchorExpanded: S
1544
1609
  };
1545
1610
  }
1546
1611
  //#endregion
1547
1612
  //#region src/property-panel/fields/ValueTypeSegmented.vue?vue&type=script&setup=true&lang.ts
1548
- var en = ["aria-disabled"], tn = [
1613
+ var rn = ["aria-disabled"], an = [
1549
1614
  "aria-pressed",
1550
1615
  "title",
1551
1616
  "data-mode-static",
1552
1617
  "data-mode-expression",
1553
1618
  "disabled",
1554
1619
  "onClick"
1555
- ], nn = /* @__PURE__ */ j({
1620
+ ], on = /* @__PURE__ */ j({
1556
1621
  __name: "ValueTypeSegmented",
1557
1622
  props: {
1558
1623
  mode: {},
@@ -1587,15 +1652,15 @@ var en = ["aria-disabled"], tn = [
1587
1652
  "data-mode-expression": t.value === "expression" || void 0,
1588
1653
  disabled: e.disabled,
1589
1654
  onClick: V((e) => a(t.value), ["prevent"])
1590
- }, R(t.label), 11, tn)), 64))], 10, en));
1655
+ }, R(t.label), 11, an)), 64))], 10, rn));
1591
1656
  }
1592
- }), rn = ["title"], an = {
1657
+ }), sn = ["title"], cn = {
1593
1658
  key: 2,
1594
1659
  class: "cn-prop-field__hint col-span-2 block text-[11px] leading-4 text-cn-muted"
1595
- }, on = ["title"], sn = {
1660
+ }, ln = ["title"], un = {
1596
1661
  key: 4,
1597
1662
  class: "cn-prop-field__hint col-span-2 block text-[11px] leading-4 text-cn-muted"
1598
- }, cn = /* @__PURE__ */ j({
1663
+ }, dn = /* @__PURE__ */ j({
1599
1664
  __name: "PropertyField",
1600
1665
  props: {
1601
1666
  field: {},
@@ -1605,7 +1670,8 @@ var en = ["aria-disabled"], tn = [
1605
1670
  completion: { type: [Function, null] },
1606
1671
  displays: {},
1607
1672
  hint: {},
1608
- resourceStatus: {}
1673
+ resourceStatus: {},
1674
+ drifted: { type: Boolean }
1609
1675
  },
1610
1676
  emits: [
1611
1677
  "input",
@@ -1614,28 +1680,23 @@ var en = ["aria-disabled"], tn = [
1614
1680
  "sub-commit"
1615
1681
  ],
1616
1682
  setup(e, { emit: t }) {
1617
- let n = e, r = t, i = T(() => Qt[n.field.control]), a = T(() => n.dataMode === "expression"), o = T(() => n.field.control === "pair" ? "cn-prop-field block" : "cn-prop-field grid grid-cols-[60px_minmax(0,1fr)] items-center gap-x-2 gap-y-1.5"), s = T(() => n.field.data === !0 ? "col-span-2" : ""), c = T(() => n.field.data === !0 && n.field.control === "textarea"), l = T(() => n.field.completion === "rowsPath"), u = T(() => c.value || l.value), d = T(() => n.field.resource === !0), f = F(null), p = T(() => n.field.data === !0 && a.value && typeof n.value == "string" ? n.field.resource === !0 ? n.value === "" ? [] : ee(n.value) : c.value ? ne(n.value) : [] : []), m = T(() => p.value.length === 0 ? "" : n.field.resource === !0 ? oe(n.completion != null) : ae(p.value)), h = T(() => n.field.resource === !0 && a.value && n.completion == null && p.value.length === 0 ? te : ""), _ = T(() => n.field.control === "textarea");
1618
- function v() {
1619
- let e = p.value[0], t = f.value?.$el;
1683
+ let n = e, r = t, i = T(() => tn[n.field.control]), a = T(() => n.dataMode === "expression"), o = T(() => n.field.control === "pair" ? "cn-prop-field block" : "cn-prop-field grid grid-cols-[60px_minmax(0,1fr)] items-center gap-x-2 gap-y-1.5"), s = T(() => n.field.data === !0 ? "col-span-2" : ""), c = T(() => n.field.data === !0 && n.field.control === "textarea"), l = T(() => n.field.control === "rowsPath"), u = T(() => n.field.resource === !0 || l.value), d = F(null), f = T(() => n.field.data === !0 && a.value && typeof n.value == "string" ? n.field.resource === !0 ? n.value === "" ? [] : x(n.value) : c.value ? ne(n.value) : [] : []), p = T(() => f.value.length === 0 ? "" : n.field.resource === !0 ? le(n.completion != null) : se(f.value)), m = T(() => (n.field.resource === !0 ? a.value : l.value) && n.completion == null && f.value.length === 0 ? C : ""), h = T(() => f.value.length > 0 || l.value && n.drifted === !0), g = T(() => n.field.control === "textarea");
1684
+ function _() {
1685
+ let e = f.value[0], t = d.value?.$el;
1620
1686
  e !== void 0 && (t instanceof HTMLTextAreaElement || t instanceof HTMLInputElement) && (t.focus(), t.setSelectionRange(e.at.start, e.at.end));
1621
1687
  }
1622
- let y = T(() => {
1623
- if (!u.value) return null;
1624
- let e = f.value?.$el;
1688
+ let ee = T(() => {
1689
+ if (!c.value) return null;
1690
+ let e = d.value?.$el;
1625
1691
  return e instanceof HTMLTextAreaElement || e instanceof HTMLInputElement ? e : null;
1626
- }), b = F(null), x = T(() => b.value?.rootEl ?? null), { popup: re, accept: S } = ie({
1627
- target: y,
1692
+ }), v = F(null), y = T(() => v.value?.rootEl ?? null), { popup: b, accept: S } = ie({
1693
+ target: ee,
1628
1694
  enabled: () => c.value && a.value && n.completion != null,
1629
1695
  pairing: () => c.value && a.value,
1630
1696
  resolve: (e) => n.completion?.(e) ?? null,
1631
- popupEl: x
1632
- }), { popup: C, accept: se } = ue({
1633
- target: y,
1634
- enabled: () => l.value && n.completion != null,
1635
- resolve: (e) => n.completion?.(e) ?? null,
1636
- popupEl: x
1697
+ popupEl: y
1637
1698
  });
1638
- function ce(e, t, n) {
1699
+ function te(e, t, n) {
1639
1700
  r("sub-commit", e, t, n);
1640
1701
  }
1641
1702
  return (t, n) => (P(), O(w, null, [(P(), E(ge(e.field.control === "pair" || e.field.control === "imageSrc" ? "div" : "label"), { class: N(o.value) }, {
@@ -1644,8 +1705,8 @@ var en = ["aria-disabled"], tn = [
1644
1705
  key: 0,
1645
1706
  class: "cn-prop-field__label shrink-0 select-none truncate text-[11px] leading-none text-cn-muted",
1646
1707
  title: e.field.title
1647
- }, R(e.field.label), 9, rn)),
1648
- e.field.data ? (P(), E(nn, {
1708
+ }, R(e.field.label), 9, sn)),
1709
+ e.field.data ? (P(), E(on, {
1649
1710
  key: 1,
1650
1711
  class: "justify-self-end",
1651
1712
  mode: e.dataMode ?? "static",
@@ -1654,21 +1715,21 @@ var en = ["aria-disabled"], tn = [
1654
1715
  }, null, 8, ["mode", "disabled"])) : D("", !0),
1655
1716
  (P(), E(ge(i.value), {
1656
1717
  ref_key: "controlRef",
1657
- ref: f,
1718
+ ref: d,
1658
1719
  class: N(["cn-prop-field__control", [s.value, {
1659
1720
  "cn-field--expression": a.value,
1660
- "cn-field--invalid": p.value.length > 0
1721
+ "cn-field--invalid": h.value
1661
1722
  }]]),
1662
1723
  field: e.field,
1663
1724
  "model-value": e.value,
1664
1725
  disabled: e.locked,
1665
1726
  displays: e.field.control === "pair" ? e.displays : void 0,
1666
1727
  "data-mode": e.field.control === "imageSrc" || e.field.control === "resourceValue" ? e.dataMode : void 0,
1667
- source: d.value ? e.completion : void 0,
1728
+ source: u.value ? e.completion : void 0,
1668
1729
  "resource-status": e.field.control === "imageSrc" ? e.resourceStatus : void 0,
1669
1730
  onInput: n[1] ||= (e) => r("input", e),
1670
1731
  onChange: n[2] ||= (e) => r("change", e),
1671
- onSubCommit: ce
1732
+ onSubCommit: te
1672
1733
  }, null, 40, [
1673
1734
  "class",
1674
1735
  "field",
@@ -1679,56 +1740,50 @@ var en = ["aria-disabled"], tn = [
1679
1740
  "source",
1680
1741
  "resource-status"
1681
1742
  ])),
1682
- e.hint ? (P(), O("span", an, R(e.hint), 1)) : D("", !0),
1683
- m.value ? (P(), O("span", {
1743
+ e.hint ? (P(), O("span", cn, R(e.hint), 1)) : D("", !0),
1744
+ p.value ? (P(), O("span", {
1684
1745
  key: 3,
1685
- class: N(["cn-prop-field__hint cn-prop-field__hint--error col-span-2 block text-[11px] leading-4 text-cn-danger", { "cursor-pointer": _.value }]),
1686
- title: _.value ? "点击选中出错片段" : void 0,
1687
- onClick: v
1688
- }, R(m.value), 11, on)) : D("", !0),
1689
- h.value ? (P(), O("span", sn, R(h.value), 1)) : D("", !0)
1746
+ class: N(["cn-prop-field__hint cn-prop-field__hint--error col-span-2 block text-[11px] leading-4 text-cn-danger", { "cursor-pointer": g.value }]),
1747
+ title: g.value ? "点击选中出错片段" : void 0,
1748
+ onClick: _
1749
+ }, R(p.value), 11, ln)) : D("", !0),
1750
+ m.value ? (P(), O("span", un, R(m.value), 1)) : D("", !0)
1690
1751
  ]),
1691
1752
  _: 1
1692
- }, 8, ["class"])), c.value ? (P(), E(g, {
1753
+ }, 8, ["class"])), c.value ? (P(), E(ae, {
1693
1754
  key: 0,
1694
1755
  ref_key: "popupRef",
1695
- ref: b,
1696
- state: z(re),
1756
+ ref: v,
1757
+ state: z(b),
1697
1758
  onSelect: z(S)
1698
- }, null, 8, ["state", "onSelect"])) : l.value ? (P(), E(g, {
1699
- key: 1,
1700
- ref_key: "popupRef",
1701
- ref: b,
1702
- state: z(C),
1703
- onSelect: z(se)
1704
1759
  }, null, 8, ["state", "onSelect"])) : D("", !0)], 64));
1705
1760
  }
1706
- }), ln = { class: "cn-props flex w-[288px] 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)]" }, un = { class: "sticky top-0 z-10 border-b border-cn-line bg-cn-bg-elevated/95 px-3.5 py-2.5 backdrop-blur-sm" }, dn = { class: "flex items-center gap-2" }, fn = { class: "inline-flex items-center gap-1.5 rounded border border-cn-accent/25 bg-cn-accent-soft px-1.5 py-0.5 font-mono text-[10px] leading-4 text-cn-accent" }, pn = { class: "text-[12px] font-medium tracking-wide text-cn-fg/90" }, mn = {
1761
+ }), fn = { class: "cn-props flex w-[288px] 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)]" }, pn = { class: "sticky top-0 z-10 border-b border-cn-line bg-cn-bg-elevated/95 px-3.5 py-2.5 backdrop-blur-sm" }, mn = { class: "flex items-center gap-2" }, hn = { class: "inline-flex items-center gap-1.5 rounded border border-cn-accent/25 bg-cn-accent-soft px-1.5 py-0.5 font-mono text-[10px] leading-4 text-cn-accent" }, gn = { class: "text-[12px] font-medium tracking-wide text-cn-fg/90" }, _n = {
1707
1762
  key: 0,
1708
1763
  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"
1709
- }, hn = { class: "cn-props__section-title mb-2 text-[10px] font-semibold uppercase tracking-[0.16em] text-cn-muted" }, gn = { class: "flex flex-col gap-2" }, _n = "内容编辑中:请在画布编辑框内修改,退出后此处更新", vn = /* @__PURE__ */ j({
1764
+ }, vn = { class: "cn-props__section-title mb-2 text-[10px] font-semibold uppercase tracking-[0.16em] text-cn-muted" }, yn = { class: "flex flex-col gap-2" }, bn = "内容编辑中:请在画布编辑框内修改,退出后此处更新", xn = /* @__PURE__ */ j({
1710
1765
  __name: "PropertyPanel",
1711
1766
  props: { editor: {} },
1712
1767
  setup(e) {
1713
- let t = e, n = $t(t.editor);
1768
+ let t = e, n = nn(t.editor);
1714
1769
  he(Z, {
1715
1770
  canUpload: t.editor.canUpload,
1716
1771
  uploadImage: (e) => t.editor.uploadImage(e)
1717
1772
  });
1718
1773
  function r(e) {
1719
- return e.completion === "rowsPath" ? n.rowsPathSource.value : n.completionSource.value;
1774
+ return e.control === "rowsPath" ? n.rowsPathSource.value : n.completionSource.value;
1720
1775
  }
1721
1776
  let i = T(() => n.layer.value !== null), a = T(() => {
1722
1777
  let e = n.layer.value;
1723
1778
  return e ? e.type : n.canvas.value ? "Canvas" : "—";
1724
1779
  }), o = T(() => {
1725
- let e = n.layer.value ?? (n.selection.value ? null : n.canvas.value);
1780
+ let e = n.layer.value ?? (n.selection.value ? null : Me(n.canvas.value));
1726
1781
  if (!e) return [];
1727
1782
  let t = n.selection.value?.join(".") ?? "canvas", r = n.layer.value, i = n.resourceStatuses.value, a = [];
1728
1783
  for (let o of n.sections.value) {
1729
1784
  let s = [];
1730
1785
  for (let a of o.fields) {
1731
- let o = K(e, a.key);
1786
+ let o = q(e, a.key);
1732
1787
  if (!o.ok) continue;
1733
1788
  let c = n.contentLocked.value && a.data === !0;
1734
1789
  s.push({
@@ -1737,8 +1792,9 @@ var en = ["aria-disabled"], tn = [
1737
1792
  value: o.value,
1738
1793
  dataMode: a.data ? n.isDataMarked(a) ? "expression" : "static" : void 0,
1739
1794
  locked: c,
1740
- hint: c ? _n : a.hint && r ? a.hint(r, i) ?? void 0 : void 0,
1741
- resourceStatus: a.control === "imageSrc" && typeof o.value == "string" && o.value !== "" ? i[o.value] : void 0
1795
+ hint: c ? bn : a.hint && r ? a.hint(r, i) ?? void 0 : void 0,
1796
+ resourceStatus: a.control === "imageSrc" && typeof o.value == "string" && o.value !== "" ? i[o.value] : void 0,
1797
+ drifted: a.control === "rowsPath" ? n.rowsPathDrifted.value : void 0
1742
1798
  });
1743
1799
  }
1744
1800
  s.length > 0 && a.push({
@@ -1764,16 +1820,16 @@ var en = ["aria-disabled"], tn = [
1764
1820
  function c() {
1765
1821
  n.setAnchorExpanded(!n.anchorExpanded.value);
1766
1822
  }
1767
- return (e, t) => (P(), O("aside", ln, [
1768
- k("header", un, [k("div", dn, [k("span", fn, [t[0] ||= k("i", {
1823
+ return (e, t) => (P(), O("aside", fn, [
1824
+ k("header", pn, [k("div", mn, [k("span", hn, [t[0] ||= k("i", {
1769
1825
  class: "size-1.5 rounded-full bg-cn-accent",
1770
1826
  "aria-hidden": "true"
1771
- }, null, -1), de(" " + R(a.value), 1)]), k("span", pn, R(i.value ? "图层属性" : "画布属性"), 1)])]),
1772
- o.value.length === 0 ? (P(), O("p", mn, " 打开文档后可编辑属性 ")) : D("", !0),
1827
+ }, null, -1), de(" " + R(a.value), 1)]), k("span", gn, R(i.value ? "图层属性" : "画布属性"), 1)])]),
1828
+ o.value.length === 0 ? (P(), O("p", _n, " 打开文档后可编辑属性 ")) : D("", !0),
1773
1829
  (P(!0), O(w, null, I(o.value, (e) => (P(), O("section", {
1774
1830
  key: e.title,
1775
1831
  class: "cn-props__section border-b border-cn-line/70 px-3.5 py-3 last:border-b-0"
1776
- }, [k("h3", hn, R(e.title), 1), k("div", gn, [(P(!0), O(w, null, I(e.fields, (e) => (P(), O(w, { key: e.key }, [e.field.control === "anchor" ? (P(), E(Ge, {
1832
+ }, [k("h3", vn, R(e.title), 1), k("div", yn, [(P(!0), O(w, null, I(e.fields, (e) => (P(), O(w, { key: e.key }, [e.field.control === "anchor" ? (P(), E(Ke, {
1777
1833
  key: 0,
1778
1834
  field: e.field,
1779
1835
  "model-value": e.value,
@@ -1785,7 +1841,7 @@ var en = ["aria-disabled"], tn = [
1785
1841
  "model-value",
1786
1842
  "expanded",
1787
1843
  "onChange"
1788
- ])) : (P(), E(cn, {
1844
+ ])) : (P(), E(dn, {
1789
1845
  key: 1,
1790
1846
  field: e.field,
1791
1847
  value: e.value,
@@ -1795,6 +1851,7 @@ var en = ["aria-disabled"], tn = [
1795
1851
  completion: r(e.field),
1796
1852
  displays: s.value,
1797
1853
  "resource-status": e.resourceStatus,
1854
+ drifted: e.drifted,
1798
1855
  onInput: (t) => z(n).commit(e.field, t, !1),
1799
1856
  onChange: (t) => z(n).commit(e.field, t, !0),
1800
1857
  onToggleMode: (t) => z(n).toggleDataMode(e.field),
@@ -1808,6 +1865,7 @@ var en = ["aria-disabled"], tn = [
1808
1865
  "completion",
1809
1866
  "displays",
1810
1867
  "resource-status",
1868
+ "drifted",
1811
1869
  "onInput",
1812
1870
  "onChange",
1813
1871
  "onToggleMode",
@@ -1817,4 +1875,4 @@ var en = ["aria-disabled"], tn = [
1817
1875
  }
1818
1876
  });
1819
1877
  //#endregion
1820
- export { Z as a, Ee as c, Oe as d, K as f, Qt as i, Ae as l, cn as n, Ot as o, $t as r, je as s, vn as t, De as u };
1878
+ export { Z as a, Ee as c, Oe as d, q as f, tn as i, Ae as l, dn as n, At as o, nn as r, je as s, xn as t, De as u };