@vtable-guild/vtable-guild 2.4.1 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/css/style.css +12 -0
  2. package/css/tailwind3-utilities.css +12 -0
  3. package/dist/core/src/components/VTableGuildConfigProvider.d.ts.map +1 -1
  4. package/dist/core/src/components/VTableGuildConfigProvider.mjs +17 -12
  5. package/dist/core/src/components/VirtualList/VirtualList.d.ts +21 -0
  6. package/dist/core/src/components/VirtualList/VirtualList.d.ts.map +1 -1
  7. package/dist/core/src/components/VirtualList/VirtualList.mjs +201 -216
  8. package/dist/core/src/components/VirtualList/hooks/useHeights.d.ts +7 -1
  9. package/dist/core/src/components/VirtualList/hooks/useHeights.d.ts.map +1 -1
  10. package/dist/core/src/components/VirtualList/hooks/useHeights.mjs +29 -27
  11. package/dist/core/src/components/VirtualList/hooks/useScrollTo.d.ts +3 -1
  12. package/dist/core/src/components/VirtualList/hooks/useScrollTo.d.ts.map +1 -1
  13. package/dist/core/src/components/VirtualList/hooks/useScrollTo.mjs +57 -50
  14. package/dist/core/src/components/VirtualList/index.d.ts +1 -0
  15. package/dist/core/src/components/VirtualList/index.d.ts.map +1 -1
  16. package/dist/core/src/components/VirtualList/utils/PrefixSums.d.ts +50 -0
  17. package/dist/core/src/components/VirtualList/utils/PrefixSums.d.ts.map +1 -0
  18. package/dist/core/src/components/VirtualList/utils/PrefixSums.mjs +54 -0
  19. package/dist/core/src/components/VirtualList/utils/PrefixSums.test.d.ts +2 -0
  20. package/dist/core/src/components/VirtualList/utils/PrefixSums.test.d.ts.map +1 -0
  21. package/dist/core/src/composables/useTheme.d.ts +9 -1
  22. package/dist/core/src/composables/useTheme.d.ts.map +1 -1
  23. package/dist/core/src/composables/useTheme.mjs +83 -60
  24. package/dist/core/src/index.d.ts +9 -0
  25. package/dist/core/src/index.d.ts.map +1 -1
  26. package/dist/core/src/plugin/index.d.ts.map +1 -1
  27. package/dist/core/src/plugin/index.mjs +4 -3
  28. package/dist/core/src/utils/types.d.ts +3 -0
  29. package/dist/core/src/utils/types.d.ts.map +1 -1
  30. package/dist/css/style.css +12 -0
  31. package/dist/css/tailwind3-utilities.css +12 -0
  32. package/dist/index.full.mjs +3450 -3006
  33. package/dist/index.mjs +41 -37
  34. package/dist/table/src/components/ColGroup.d.ts.map +1 -1
  35. package/dist/table/src/components/ColGroup.mjs +11 -8
  36. package/dist/table/src/components/Table.d.ts +68 -6
  37. package/dist/table/src/components/Table.d.ts.map +1 -1
  38. package/dist/table/src/components/Table.mjs +361 -297
  39. package/dist/table/src/components/TableBody.d.ts.map +1 -1
  40. package/dist/table/src/components/TableBody.mjs +38 -37
  41. package/dist/table/src/components/TableCell.d.ts +23 -0
  42. package/dist/table/src/components/TableCell.d.ts.map +1 -1
  43. package/dist/table/src/components/TableCell.mjs +85 -60
  44. package/dist/table/src/components/TableHeaderCell.d.ts.map +1 -1
  45. package/dist/table/src/components/TableHeaderCell.mjs +177 -174
  46. package/dist/table/src/components/VTable.vue.mjs +10 -8
  47. package/dist/table/src/components/VTableCompatClass.test.d.ts +2 -0
  48. package/dist/table/src/components/VTableCompatClass.test.d.ts.map +1 -0
  49. package/dist/table/src/components/VirtualTableBody.d.ts +40 -0
  50. package/dist/table/src/components/VirtualTableBody.d.ts.map +1 -1
  51. package/dist/table/src/components/VirtualTableBody.mjs +158 -67
  52. package/dist/table/src/composables/index.d.ts +4 -0
  53. package/dist/table/src/composables/index.d.ts.map +1 -1
  54. package/dist/table/src/composables/useColumnMetrics.d.ts +39 -0
  55. package/dist/table/src/composables/useColumnMetrics.d.ts.map +1 -0
  56. package/dist/table/src/composables/useColumnMetrics.mjs +88 -0
  57. package/dist/table/src/composables/useColumnWindow.d.ts +90 -0
  58. package/dist/table/src/composables/useColumnWindow.d.ts.map +1 -0
  59. package/dist/table/src/composables/useColumnWindow.mjs +62 -0
  60. package/dist/table/src/composables/useColumnWindow.test.d.ts +2 -0
  61. package/dist/table/src/composables/useColumnWindow.test.d.ts.map +1 -0
  62. package/dist/table/src/composables/useColumns.d.ts +8 -0
  63. package/dist/table/src/composables/useColumns.d.ts.map +1 -1
  64. package/dist/table/src/composables/useColumns.mjs +46 -43
  65. package/dist/table/src/composables/useFixedColumnStyle.d.ts.map +1 -1
  66. package/dist/table/src/composables/useFixedColumnStyle.mjs +12 -11
  67. package/dist/table/src/composables/useSelection.d.ts.map +1 -1
  68. package/dist/table/src/composables/useSelection.mjs +93 -94
  69. package/dist/table/src/composables/useVirtual.d.ts +10 -0
  70. package/dist/table/src/composables/useVirtual.d.ts.map +1 -1
  71. package/dist/table/src/composables/useVirtual.mjs +15 -11
  72. package/dist/table/src/context.d.ts +7 -0
  73. package/dist/table/src/context.d.ts.map +1 -1
  74. package/dist/table/src/index.d.ts +2 -0
  75. package/dist/table/src/index.d.ts.map +1 -1
  76. package/dist/table/src/types/table.d.ts +25 -0
  77. package/dist/table/src/types/table.d.ts.map +1 -1
  78. package/dist/table/src/utils/compat.d.ts +9 -0
  79. package/dist/table/src/utils/compat.d.ts.map +1 -0
  80. package/dist/table/src/utils/compat.mjs +28 -0
  81. package/dist/theme/src/compat/antdv-table.d.ts +4 -0
  82. package/dist/theme/src/compat/antdv-table.d.ts.map +1 -0
  83. package/dist/theme/src/compat/antdv-table.mjs +51 -0
  84. package/dist/theme/src/index.d.ts +2 -0
  85. package/dist/theme/src/index.d.ts.map +1 -1
  86. package/dist/theme/src/presets/antdv/table.d.ts +3 -0
  87. package/dist/theme/src/presets/antdv/table.d.ts.map +1 -1
  88. package/dist/theme/src/presets/antdv/table.mjs +4 -1
  89. package/package.json +1 -1
  90. package/dist/core/src/components/VirtualList/hooks/useDiffItem.d.ts +0 -4
  91. package/dist/core/src/components/VirtualList/hooks/useDiffItem.d.ts.map +0 -1
  92. package/dist/core/src/components/VirtualList/hooks/useDiffItem.mjs +0 -16
  93. package/dist/core/src/components/VirtualList/utils/algorithmUtil.d.ts +0 -7
  94. package/dist/core/src/components/VirtualList/utils/algorithmUtil.d.ts.map +0 -1
  95. package/dist/core/src/components/VirtualList/utils/algorithmUtil.mjs +0 -22
@@ -0,0 +1,62 @@
1
+ import { computed as l } from "vue";
2
+ import { PrefixSums as m } from "../../../core/src/components/VirtualList/utils/PrefixSums.mjs";
3
+ const S = 2;
4
+ function w(r) {
5
+ const t = r.length;
6
+ let n = 0;
7
+ for (; n < t && r[n].fixed === "left"; )
8
+ n += 1;
9
+ let i = t;
10
+ for (; i > n && r[i - 1].fixed === "right"; )
11
+ i -= 1;
12
+ let e = !0;
13
+ for (let f = n; f < i; f += 1)
14
+ if (r[f].fixed === "left" || r[f].fixed === "right") {
15
+ e = !1;
16
+ break;
17
+ }
18
+ return { leftFixedCount: n, rightFixedStart: i, contiguous: e };
19
+ }
20
+ function p(r) {
21
+ const { prefix: t, columnCount: n, leftFixedCount: i, rightFixedStart: e, offsetX: f, viewportWidth: s, overscan: d } = r, u = i, c = e - 1;
22
+ if (u > c)
23
+ return { start: u, end: u - 1, leftSpacer: 0, rightSpacer: 0 };
24
+ const h = t.offsetOf(i), x = t.total - t.offsetOf(e), g = f + h, v = f + s - x;
25
+ let a = t.findIndex(g) - d, o = t.findIndex(v);
26
+ return o >= n && (o = n - 1), o += d, a = Math.min(Math.max(a, u), c), o = Math.min(Math.max(o, u), c), o < a && (o = a), {
27
+ start: a,
28
+ end: o,
29
+ leftSpacer: t.offsetOf(a) - t.offsetOf(u),
30
+ rightSpacer: t.offsetOf(e) - t.offsetOf(o + 1)
31
+ };
32
+ }
33
+ function O(r) {
34
+ const t = new m(), n = l(() => {
35
+ const e = r.widths();
36
+ return !e || e.length === 0 ? null : (t.markAllDirty(), t.sync(e.length, (f) => e[f], 0), e.length);
37
+ }), i = l(() => {
38
+ const e = n.value;
39
+ return e === null ? null : p({
40
+ prefix: t,
41
+ columnCount: e,
42
+ leftFixedCount: r.leftFixedCount(),
43
+ rightFixedStart: r.rightFixedStart(),
44
+ offsetX: r.offsetX(),
45
+ viewportWidth: r.viewportWidth(),
46
+ overscan: r.overscan?.() ?? S
47
+ });
48
+ });
49
+ return {
50
+ active: l(() => i.value !== null),
51
+ start: l(() => i.value?.start ?? 0),
52
+ end: l(() => i.value?.end ?? -1),
53
+ leftSpacer: l(() => i.value?.leftSpacer ?? 0),
54
+ rightSpacer: l(() => i.value?.rightSpacer ?? 0)
55
+ };
56
+ }
57
+ export {
58
+ S as DEFAULT_COLUMN_OVERSCAN,
59
+ p as computeColumnWindow,
60
+ w as resolveFixedColumnRanges,
61
+ O as useColumnWindow
62
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=useColumnWindow.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useColumnWindow.test.d.ts","sourceRoot":"","sources":["../../../../../table/src/composables/useColumnWindow.test.ts"],"names":[],"mappings":""}
@@ -9,6 +9,14 @@ export interface HeaderCellMeta<TRecord extends Record<string, unknown>> {
9
9
  depth: number;
10
10
  isLeaf: boolean;
11
11
  leafColumns: ColumnType<TRecord>[];
12
+ /**
13
+ * 该单元格在 `leafColumns`(即 `flattenColumns` 的产物)里的下标;列组为 -1。
14
+ *
15
+ * 与 `colStart` 的区别:`colStart` 是**网格列号**,会被 `column.colSpan` 声明
16
+ * 拉开,也会因分组表头的 rowSpan 与叶子顺序脱节。横向虚拟化要按叶子列下标
17
+ * 把表头实测宽度写回表体,必须用一个与 `flattenColumns` 逐项对齐的下标。
18
+ */
19
+ leafIndex: number;
12
20
  }
13
21
  export type HeaderRowMeta<TRecord extends Record<string, unknown>> = HeaderCellMeta<TRecord>[];
14
22
  export declare function isColumnGroup<TRecord extends Record<string, unknown>>(column: ColumnNode<TRecord>): column is ColumnGroupType<TRecord>;
@@ -1 +1 @@
1
- {"version":3,"file":"useColumns.d.ts","sourceRoot":"","sources":["../../../../../table/src/composables/useColumns.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAExF,MAAM,MAAM,UAAU,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAC1D,UAAU,CAAC,OAAO,CAAC,GACnB,eAAe,CAAC,OAAO,CAAC,CAAA;AAE5B,MAAM,WAAW,cAAc,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACrE,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,OAAO,CAAA;IACf,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAA;CACnC;AAED,MAAM,MAAM,aAAa,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE,CAAA;AAE9F,wBAAgB,aAAa,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnE,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,GAC1B,MAAM,IAAI,eAAe,CAAC,OAAO,CAAC,CAOpC;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,GAC1B,GAAG,GAAG,SAAS,CAMjB;AA4FD;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAY9F;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChE,OAAO,EAAE,MAAM,WAAW,CAAC,OAAO,CAAC;;;EASpC"}
1
+ {"version":3,"file":"useColumns.d.ts","sourceRoot":"","sources":["../../../../../table/src/composables/useColumns.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAExF,MAAM,MAAM,UAAU,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAC1D,UAAU,CAAC,OAAO,CAAC,GACnB,eAAe,CAAC,OAAO,CAAC,CAAA;AAE5B,MAAM,WAAW,cAAc,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACrE,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,OAAO,CAAA;IACf,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAA;IAClC;;;;;;OAMG;IACH,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,aAAa,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE,CAAA;AAE9F,wBAAgB,aAAa,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnE,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,GAC1B,MAAM,IAAI,eAAe,CAAC,OAAO,CAAC,CAOpC;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,GAC1B,GAAG,GAAG,SAAS,CAMjB;AAqGD;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAY9F;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChE,OAAO,EAAE,MAAM,WAAW,CAAC,OAAO,CAAC;;;EASpC"}
@@ -1,81 +1,84 @@
1
- import { computed as d } from "vue";
2
- function h(r) {
1
+ import { computed as S } from "vue";
2
+ function g(r) {
3
3
  return !!r && typeof r == "object" && "children" in r && Array.isArray(r.children);
4
4
  }
5
- function A(r) {
5
+ function E(r) {
6
6
  if (r.key !== void 0) return r.key;
7
7
  if (r.dataIndex !== void 0)
8
8
  return Array.isArray(r.dataIndex) ? r.dataIndex.join(".") : String(r.dataIndex);
9
9
  }
10
- function C(r) {
10
+ function v(r) {
11
11
  const n = [];
12
12
  for (const t of r)
13
13
  if (typeof t != "symbol") {
14
- if (h(t)) {
15
- n.push(...C(t.children));
14
+ if (g(t)) {
15
+ n.push(...v(t.children));
16
16
  continue;
17
17
  }
18
18
  n.push(t);
19
19
  }
20
20
  return n;
21
21
  }
22
- function g(r) {
22
+ function b(r) {
23
23
  const n = [];
24
- function t(s, l, e = 0) {
25
- n[e] = n[e] || [];
26
- let a = l;
27
- return s.filter(
24
+ let t = 0;
25
+ function e(u, c, i = 0) {
26
+ n[i] = n[i] || [];
27
+ let l = c;
28
+ return u.filter(
28
29
  (o) => !!o && typeof o != "symbol"
29
30
  ).map((o) => {
30
- const u = !h(o) || o.children.length === 0;
31
- let c = u ? [o] : [], f = 1;
32
- if (!u) {
33
- const y = t(o.children, a, e + 1);
34
- c = y.flatMap((p) => p.leafColumns), f = y.reduce((p, S) => p + S.colSpan, 0);
31
+ const p = g(o), f = p ? o.children : null, h = !f || f.length === 0;
32
+ let y = h ? [o] : [], s = 1;
33
+ const w = p ? -1 : t;
34
+ if (p || (t += 1), f && f.length > 0) {
35
+ const C = e(f, l, i + 1);
36
+ y = C.flatMap((d) => d.leafColumns), s = C.reduce((d, A) => d + A.colSpan, 0);
35
37
  }
36
- return "colSpan" in o && typeof o.colSpan == "number" && (f = o.colSpan), n[e].push({
38
+ return "colSpan" in o && typeof o.colSpan == "number" && (s = o.colSpan), n[i].push({
37
39
  column: o,
38
- colSpan: f,
40
+ colSpan: s,
39
41
  rowSpan: 1,
40
- colStart: a,
41
- colEnd: a + Math.max(f, 1) - 1,
42
- depth: e,
43
- isLeaf: u,
44
- leafColumns: c
45
- }), a += f, {
46
- colSpan: f,
47
- leafColumns: c
42
+ colStart: l,
43
+ colEnd: l + Math.max(s, 1) - 1,
44
+ depth: i,
45
+ isLeaf: h,
46
+ leafColumns: y,
47
+ leafIndex: w
48
+ }), l += s, {
49
+ colSpan: s,
50
+ leafColumns: y
48
51
  };
49
52
  });
50
53
  }
51
- t(r, 0);
52
- const i = n.length;
53
- return n.forEach((s, l) => {
54
- s.forEach((e) => {
55
- e.isLeaf && (e.rowSpan = i - l);
54
+ e(r, 0);
55
+ const a = n.length;
56
+ return n.forEach((u, c) => {
57
+ u.forEach((i) => {
58
+ i.isLeaf && (i.rowSpan = a - c);
56
59
  });
57
60
  }), n;
58
61
  }
59
- function b(r, n) {
62
+ function R(r, n) {
60
63
  if (n == null || n === "") return;
61
64
  const t = Array.isArray(n) ? n : [n];
62
- let i = r;
63
- for (const s of t) {
64
- if (i == null) return;
65
- i = i[String(s)];
65
+ let e = r;
66
+ for (const a of t) {
67
+ if (e == null) return;
68
+ e = e[String(a)];
66
69
  }
67
- return i;
70
+ return e;
68
71
  }
69
- function E(r) {
70
- const n = d(() => C(r())), t = d(() => g(r()));
72
+ function j(r) {
73
+ const n = S(() => v(r())), t = S(() => b(r()));
71
74
  return {
72
75
  leafColumns: n,
73
76
  headerRows: t
74
77
  };
75
78
  }
76
79
  export {
77
- b as getByDataIndex,
78
- A as getColumnKey,
79
- h as isColumnGroup,
80
- E as useColumns
80
+ R as getByDataIndex,
81
+ E as getColumnKey,
82
+ g as isColumnGroup,
83
+ j as useColumns
81
84
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useFixedColumnStyle.d.ts","sourceRoot":"","sources":["../../../../../table/src/composables/useFixedColumnStyle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,KAAK,CAAA;AAExD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C,MAAM,WAAW,yBAAyB;IACxC,mCAAmC;IACnC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,CAAA;IAC3D,iCAAiC;IACjC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAChC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAC3C,SAAS,EAAE,MAAM,WAAW,GAAG,IAAI,CAAA;CACpC,GAAG,yBAAyB,CA8B5B"}
1
+ {"version":3,"file":"useFixedColumnStyle.d.ts","sourceRoot":"","sources":["../../../../../table/src/composables/useFixedColumnStyle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,KAAK,CAAA;AAGxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C,MAAM,WAAW,yBAAyB;IACxC,mCAAmC;IACnC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,CAAA;IAC3D,iCAAiC;IACjC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAChC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAC3C,SAAS,EAAE,MAAM,WAAW,GAAG,IAAI,CAAA;CACpC,GAAG,yBAAyB,CAgC5B"}
@@ -1,21 +1,22 @@
1
- import { inject as l, computed as s } from "vue";
2
- import { TABLE_CONTEXT_KEY as a } from "../context.mjs";
3
- function h(n) {
4
- const i = l(a, {}), r = s(() => {
1
+ import { inject as u, computed as r } from "vue";
2
+ import { TABLE_CONTEXT_KEY as d } from "../context.mjs";
3
+ import { getFixedCellCompatClass as x } from "../utils/compat.mjs";
4
+ function S(n) {
5
+ const i = u(d, {}), f = r(() => {
5
6
  const t = n.fixedInfo();
6
7
  if (!t) return;
7
8
  const e = { position: "sticky", zIndex: "2" };
8
9
  return t.left !== void 0 && (e.left = `${t.left}px`), t.right !== void 0 && (e.right = `${t.right}px`), e;
9
- }), f = s(() => {
10
+ }), l = r(() => {
10
11
  const t = n.fixedInfo();
11
12
  if (!t) return "";
12
- const e = i.subThemeSlots;
13
- if (!e) return "";
14
- const o = [], u = i.scrollState?.atStart.value ?? !0, c = i.scrollState?.atEnd.value ?? !0;
15
- return t.isLastLeft && !u && o.push(e.fixedShadowLeft()), t.isFirstRight && !c && o.push(e.fixedShadowRight()), o.join(" ");
13
+ const e = x(i, t), s = i.subThemeSlots;
14
+ if (!s) return e;
15
+ const o = [], a = i.scrollState?.atStart.value ?? !0, c = i.scrollState?.atEnd.value ?? !0;
16
+ return t.isLastLeft && !a && o.push(s.fixedShadowLeft()), t.isFirstRight && !c && o.push(s.fixedShadowRight()), e && o.push(e), o.join(" ");
16
17
  });
17
- return { fixedStyle: r, fixedClass: f };
18
+ return { fixedStyle: f, fixedClass: l };
18
19
  }
19
20
  export {
20
- h as useFixedColumnStyle
21
+ S as useFixedColumnStyle
21
22
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useSelection.d.ts","sourceRoot":"","sources":["../../../../../table/src/composables/useSelection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAWjD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,aAAa,EAAE,OAAO,CAAA;IACtB,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,mBAAmB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC1E,YAAY,EAAE,MAAM,YAAY,CAAC,OAAO,CAAC,GAAG,SAAS,CAAA;IACrD,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,GAAG,CAAA;IAClD,IAAI,EAAE,MAAM,OAAO,EAAE,CAAA;IACrB,WAAW,EAAE,MAAM,OAAO,EAAE,CAAA;IAC5B,kBAAkB,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAA;IAC7C,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAA;CAC/B;AAuDD,wBAAgB,YAAY,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC;;sBA2IZ,GAAG,KAAG,OAAO;yBA3FV,OAAO,KAAG,OAAO;gCAiHV,OAAO,SAAS,MAAM,KAAG,cAAc;wBAoJ/C,OAAO,SAAS,MAAM,gBAAgB,UAAU,KAAG,IAAI;0BAarD,OAAO,KAAG,IAAI;;2BAqCf,IAAI;0BAmBL,IAAI;gCAQE,GAAG,EAAE;EAgBvC"}
1
+ {"version":3,"file":"useSelection.d.ts","sourceRoot":"","sources":["../../../../../table/src/composables/useSelection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAWjD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,aAAa,EAAE,OAAO,CAAA;IACtB,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,mBAAmB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC1E,YAAY,EAAE,MAAM,YAAY,CAAC,OAAO,CAAC,GAAG,SAAS,CAAA;IACrD,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,GAAG,CAAA;IAClD,IAAI,EAAE,MAAM,OAAO,EAAE,CAAA;IACrB,WAAW,EAAE,MAAM,OAAO,EAAE,CAAA;IAC5B,kBAAkB,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAA;IAC7C,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAA;CAC/B;AA8DD,wBAAgB,YAAY,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC;;sBAwJZ,GAAG,KAAG,OAAO;yBA9FV,OAAO,KAAG,OAAO;gCAoHV,OAAO,SAAS,MAAM,KAAG,cAAc;wBAoJ/C,OAAO,SAAS,MAAM,gBAAgB,UAAU,KAAG,IAAI;0BAarD,OAAO,KAAG,IAAI;;2BAqCf,IAAI;0BAmBL,IAAI;gCAQE,GAAG,EAAE;EAgBvC"}
@@ -1,71 +1,70 @@
1
- import { ref as P, watch as F, computed as w } from "vue";
1
+ import { ref as V, watch as H, computed as w } from "vue";
2
2
  function te(K) {
3
3
  const { data: o, childrenColumnName: u, getRowKey: N } = K, C = [];
4
- let x = 0;
5
- function A(g, k, h) {
6
- g.forEach((m) => {
7
- const E = x, f = N(m, E), d = m[u], I = {
4
+ let E = 0;
5
+ function x(h, k, y) {
6
+ h.forEach((m) => {
7
+ const A = E, f = N(m, A), d = m[u], I = {
8
8
  key: f,
9
9
  record: m,
10
- index: E,
10
+ index: A,
11
11
  level: k,
12
- parentKey: h?.key,
12
+ parentKey: y?.key,
13
13
  childrenKeys: []
14
14
  };
15
- C.push(I), h?.childrenKeys.push(f), x += 1, Array.isArray(d) && d.length > 0 && A(d, k + 1, I);
15
+ C.push(I), y?.childrenKeys.push(f), E += 1, Array.isArray(d) && d.length > 0 && x(d, k + 1, I);
16
16
  });
17
17
  }
18
- return A(o, 0), C;
18
+ return x(o, 0), C;
19
19
  }
20
- function ne(K) {
20
+ const ne = Object.freeze([]);
21
+ function le(K) {
21
22
  return K.data.map((o, u) => ({
22
23
  key: K.getRowKey(o, u),
23
24
  record: o,
24
25
  index: u,
25
26
  level: 0,
26
- childrenKeys: []
27
+ childrenKeys: ne
27
28
  }));
28
29
  }
29
- function ce(K) {
30
- const { rowSelection: o, getRowKey: u, data: N, visibleData: C, childrenColumnName: x, onSelectionChange: A } = K, g = P(/* @__PURE__ */ new Set()), k = P(!1), h = P(null);
31
- F(
30
+ function se(K) {
31
+ const { rowSelection: o, getRowKey: u, data: N, visibleData: C, childrenColumnName: E, onSelectionChange: x } = K, h = V(/* @__PURE__ */ new Set()), k = V(!1), y = V(null);
32
+ H(
32
33
  () => o()?.defaultSelectedRowKeys,
33
34
  (e) => {
34
- k.value || !e?.length || (g.value = new Set(e), k.value = !0);
35
+ k.value || !e?.length || (h.value = new Set(e), k.value = !0);
35
36
  },
36
37
  { immediate: !0 }
37
38
  );
38
39
  function m() {
39
40
  return o()?.selectedRowKeys !== void 0;
40
41
  }
41
- const E = w(() => o()?.checkStrictly === !1), f = w(
42
- () => E.value ? te({
43
- data: N(),
44
- childrenColumnName: x?.() ?? "children",
45
- getRowKey: u
46
- }) : ne({
47
- data: N(),
48
- getRowKey: u
49
- })
50
- ), d = w(() => {
42
+ const A = w(() => o()?.checkStrictly === !1), f = w(() => o() ? A.value ? te({
43
+ data: N(),
44
+ childrenColumnName: E?.() ?? "children",
45
+ getRowKey: u
46
+ }) : le({
47
+ data: N(),
48
+ getRowKey: u
49
+ }) : []), d = w(() => {
51
50
  const e = /* @__PURE__ */ new Map();
52
51
  return f.value.forEach((t) => e.set(t.key, t)), e;
53
52
  }), I = w(
54
53
  () => f.value.filter((e) => e.parentKey === void 0).map((e) => e.key)
55
54
  );
56
- function y(e) {
55
+ function S(e) {
57
56
  return o()?.getCheckboxProps?.(e)?.disabled ?? !1;
58
57
  }
59
- function j(e) {
58
+ function Y(e) {
60
59
  return d.value.get(e)?.childrenKeys ?? [];
61
60
  }
62
- const G = w(() => {
61
+ const L = w(() => {
63
62
  const e = d.value, t = /* @__PURE__ */ new Map(), l = f.value;
64
63
  for (let n = l.length - 1; n >= 0; n -= 1) {
65
64
  const c = l[n], s = [];
66
65
  for (const r of c.childrenKeys) {
67
66
  const i = e.get(r);
68
- if (!i || y(i.record)) continue;
67
+ if (!i || S(i.record)) continue;
69
68
  s.push(r);
70
69
  const a = t.get(r);
71
70
  a && s.push(...a);
@@ -74,173 +73,173 @@ function ce(K) {
74
73
  }
75
74
  return t;
76
75
  });
77
- function V(e) {
76
+ function P(e) {
78
77
  if (o()?.checkStrictly !== !1)
79
78
  return new Set(e);
80
79
  const t = new Set(e), l = (n) => {
81
- const c = j(n);
80
+ const c = Y(n);
82
81
  c.forEach(l);
83
82
  const s = d.value.get(n);
84
- if (!s || y(s.record)) return;
85
- const r = c.map((a) => d.value.get(a)).filter((a) => !!a && !y(a.record));
83
+ if (!s || S(s.record)) return;
84
+ const r = c.map((a) => d.value.get(a)).filter((a) => !!a && !S(a.record));
86
85
  if (r.length === 0) return;
87
86
  r.every((a) => t.has(a.key)) ? t.add(n) : t.delete(n);
88
87
  };
89
88
  return I.value.forEach(l), t;
90
89
  }
91
- const S = w(() => {
92
- const e = o(), t = e?.selectedRowKeys !== void 0 ? new Set(e.selectedRowKeys) : g.value;
93
- return V(t);
90
+ const v = w(() => {
91
+ const e = o(), t = e?.selectedRowKeys !== void 0 ? new Set(e.selectedRowKeys) : h.value;
92
+ return P(t);
94
93
  });
95
- F(
94
+ H(
96
95
  [f, () => o()?.preserveSelectedRowKeys],
97
96
  () => {
98
- if (m() || o()?.preserveSelectedRowKeys) return;
97
+ if (m() || o()?.preserveSelectedRowKeys || h.value.size === 0) return;
99
98
  const e = new Set(f.value.map((l) => l.key)), t = new Set(
100
- Array.from(g.value).filter((l) => e.has(l))
99
+ Array.from(h.value).filter((l) => e.has(l))
101
100
  );
102
- t.size !== g.value.size && (g.value = t);
101
+ t.size !== h.value.size && (h.value = t);
103
102
  },
104
103
  { immediate: !0 }
105
104
  );
106
105
  function z(e) {
107
- return S.value.has(e);
106
+ return v.value.has(e);
108
107
  }
109
108
  function p(e) {
110
109
  return f.value.filter((t) => e.has(t.key)).map((t) => t.record);
111
110
  }
112
- function H() {
111
+ function O() {
113
112
  return C().map((e, t) => d.value.get(u(e, t)) ?? null).filter((e) => e !== null);
114
113
  }
115
114
  function D() {
116
- return H().filter((e) => !y(e.record));
115
+ return O().filter((e) => !S(e.record));
117
116
  }
118
- function J() {
119
- return f.value.filter((e) => !y(e.record));
117
+ function q() {
118
+ return f.value.filter((e) => !S(e.record));
120
119
  }
121
- function L(e, t) {
122
- const l = u(e, t), n = z(l), c = y(e);
120
+ function B(e, t) {
121
+ const l = u(e, t), n = z(l), c = S(e);
123
122
  if (o()?.checkStrictly !== !1)
124
123
  return {
125
124
  checked: n,
126
125
  indeterminate: !1,
127
126
  disabled: c
128
127
  };
129
- const s = G.value.get(l) ?? [];
128
+ const s = L.value.get(l) ?? [];
130
129
  if (s.length === 0)
131
130
  return {
132
131
  checked: n,
133
132
  indeterminate: !1,
134
133
  disabled: c
135
134
  };
136
- const r = s.filter((i) => S.value.has(i)).length;
135
+ const r = s.filter((i) => v.value.has(i)).length;
137
136
  return {
138
137
  checked: n,
139
138
  indeterminate: r > 0 && r < s.length,
140
139
  disabled: c
141
140
  };
142
141
  }
143
- function v(e, t) {
144
- const l = V(e);
145
- m() || (g.value = l);
142
+ function g(e, t) {
143
+ const l = P(e);
144
+ m() || (h.value = l);
146
145
  {
147
146
  const n = Array.from(l), c = p(l);
148
- o()?.onChange?.(n, c), A?.();
147
+ o()?.onChange?.(n, c), x?.();
149
148
  }
150
149
  }
151
- function q(e, t, l, n) {
150
+ function _(e, t, l, n) {
152
151
  const c = d.value.get(e);
153
- if (!c || y(c.record)) return;
152
+ if (!c || S(c.record)) return;
154
153
  const s = t.has(e);
155
- l ? t.add(e) : t.delete(e), s !== l && n.push(c.record), j(e).forEach(
156
- (r) => q(r, t, l, n)
154
+ l ? t.add(e) : t.delete(e), s !== l && n.push(c.record), Y(e).forEach(
155
+ (r) => _(r, t, l, n)
157
156
  );
158
157
  }
159
- function O(e, t, l) {
158
+ function F(e, t, l) {
160
159
  const n = o();
161
160
  if (!n) return;
162
161
  const c = u(e, t), s = !z(c);
163
- if (n.type !== "radio" && l?.shiftKey && h.value !== null && o()?.checkStrictly !== !1) {
162
+ if (n.type !== "radio" && l?.shiftKey && y.value !== null && o()?.checkStrictly !== !1) {
164
163
  const i = D(), a = i.findIndex((b) => b.key === c), M = i.findIndex(
165
- (b) => b.key === h.value
164
+ (b) => b.key === y.value
166
165
  );
167
166
  if (a !== -1 && M !== -1) {
168
- const [b, $] = a > M ? [M, a] : [a, M], R = new Set(S.value), B = [];
167
+ const [b, $] = a > M ? [M, a] : [a, M], R = new Set(v.value), j = [];
169
168
  i.slice(b, $ + 1).forEach((T) => {
170
169
  const ee = R.has(T.key);
171
- s ? R.add(T.key) : R.delete(T.key), ee !== s && B.push(T.record);
172
- }), v(R), n.onSelectMultiple?.(s, p(R), B), h.value = c;
170
+ s ? R.add(T.key) : R.delete(T.key), ee !== s && j.push(T.record);
171
+ }), g(R), n.onSelectMultiple?.(s, p(R), j), y.value = c;
173
172
  return;
174
173
  }
175
174
  }
176
175
  if (n.type === "radio") {
177
176
  const i = s ? /* @__PURE__ */ new Set([c]) : /* @__PURE__ */ new Set();
178
- v(i), n.onSelect?.(e, s, p(i)), h.value = c;
177
+ g(i), n.onSelect?.(e, s, p(i)), y.value = c;
179
178
  return;
180
179
  }
181
- const r = new Set(S.value);
182
- s ? r.add(c) : r.delete(c), v(r), n.onSelect?.(e, s, p(r)), h.value = c;
180
+ const r = new Set(v.value);
181
+ s ? r.add(c) : r.delete(c), g(r), n.onSelect?.(e, s, p(r)), y.value = c;
183
182
  }
184
- function Q(e, t) {
183
+ function G(e, t) {
185
184
  const l = o();
186
185
  if (!l) return;
187
- const n = u(e, t), c = !z(n), s = new Set(S.value);
188
- q(n, s, c, []), v(s), l.onSelect?.(e, c, p(s)), h.value = n;
186
+ const n = u(e, t), c = !z(n), s = new Set(v.value);
187
+ _(n, s, c, []), g(s), l.onSelect?.(e, c, p(s)), y.value = n;
189
188
  }
190
- function U(e, t, l) {
191
- if (y(e)) return;
189
+ function J(e, t, l) {
190
+ if (S(e)) return;
192
191
  const n = o();
193
192
  if (n) {
194
193
  if (n.checkStrictly === !1 && n.type !== "radio") {
195
- Q(e, t);
194
+ G(e, t);
196
195
  return;
197
196
  }
198
- O(e, t, l);
197
+ F(e, t, l);
199
198
  }
200
199
  }
201
- function W(e) {
200
+ function Q(e) {
202
201
  const t = o();
203
202
  if (!t) return;
204
- const l = J(), n = new Set(S.value), c = [];
203
+ const l = q(), n = new Set(v.value), c = [];
205
204
  l.forEach((s) => {
206
205
  const r = n.has(s.key);
207
206
  e ? n.add(s.key) : n.delete(s.key), r !== e && c.push(s.record);
208
- }), v(n), t.onSelectAll?.(e, p(n), c);
207
+ }), g(n), t.onSelectAll?.(e, p(n), c);
209
208
  }
210
- const X = w(() => {
209
+ const U = w(() => {
211
210
  const e = D();
212
211
  if (e.length === 0) return "none";
213
- const t = e.filter((l) => S.value.has(l.key)).length;
212
+ const t = e.filter((l) => v.value.has(l.key)).length;
214
213
  return t === 0 ? "none" : t === e.length ? "all" : "partial";
215
214
  });
216
- function Y() {
215
+ function W() {
217
216
  const e = o();
218
217
  if (!e) return;
219
- const t = D(), l = new Set(S.value);
218
+ const t = D(), l = new Set(v.value);
220
219
  t.forEach((n) => {
221
220
  l.has(n.key) ? l.delete(n.key) : l.add(n.key);
222
- }), v(l), e.onSelectInvert?.(Array.from(V(l)));
221
+ }), g(l), e.onSelectInvert?.(Array.from(P(l)));
223
222
  }
224
- function Z() {
223
+ function X() {
225
224
  const e = o();
226
- e && (v(/* @__PURE__ */ new Set()), e.onSelectNone?.());
225
+ e && (g(/* @__PURE__ */ new Set()), e.onSelectNone?.());
227
226
  }
228
- function _() {
227
+ function Z() {
229
228
  return D().map((e) => e.key);
230
229
  }
231
230
  return {
232
- selectedKeySet: S,
231
+ selectedKeySet: v,
233
232
  isSelected: z,
234
- isDisabled: y,
235
- getSelectionState: L,
236
- toggleRow: U,
237
- toggleAll: W,
238
- allCheckedState: X,
239
- invertSelection: Y,
240
- clearSelection: Z,
241
- getChangeableRowKeys: _
233
+ isDisabled: S,
234
+ getSelectionState: B,
235
+ toggleRow: J,
236
+ toggleAll: Q,
237
+ allCheckedState: U,
238
+ invertSelection: W,
239
+ clearSelection: X,
240
+ getChangeableRowKeys: Z
242
241
  };
243
242
  }
244
243
  export {
245
- ce as useSelection
244
+ se as useSelection
246
245
  };
@@ -3,6 +3,8 @@ export interface UseVirtualOptions {
3
3
  virtual: () => boolean | undefined;
4
4
  scrollY: () => number | string | undefined;
5
5
  size: () => 'small' | 'middle' | 'large' | undefined;
6
+ /** 用户显式声明的固定行高(px)。传了就进定高快路径。 */
7
+ rowHeight?: () => number | undefined;
6
8
  }
7
9
  export interface UseVirtualReturn {
8
10
  /** Whether virtual scrolling is actually enabled */
@@ -11,6 +13,14 @@ export interface UseVirtualReturn {
11
13
  itemHeight: ComputedRef<number>;
12
14
  /** Numeric scroll height for VirtualList */
13
15
  listHeight: ComputedRef<number>;
16
+ /**
17
+ * 是否走定高快路径。
18
+ *
19
+ * 只在用户**显式**传了合法 `rowHeight` 时为 true——刻意不做自动探测:
20
+ * 从 size 预设猜行高在 `ellipsis: false` + 长文本换行时会静默算错,
21
+ * 而错误表现为行错位/空隙,用户很难归因。宁可让用户主动声明。
22
+ */
23
+ fixedHeight: ComputedRef<boolean>;
14
24
  }
15
25
  export declare function useVirtual(options: UseVirtualOptions): UseVirtualReturn;
16
26
  //# sourceMappingURL=useVirtual.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useVirtual.d.ts","sourceRoot":"","sources":["../../../../../table/src/composables/useVirtual.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,KAAK,CAAA;AAEtC,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,OAAO,GAAG,SAAS,CAAA;IAClC,OAAO,EAAE,MAAM,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;IAC1C,IAAI,EAAE,MAAM,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAA;CACrD;AAED,MAAM,WAAW,gBAAgB;IAC/B,oDAAoD;IACpD,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IAC7B,uDAAuD;IACvD,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC/B,4CAA4C;IAC5C,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAChC;AASD,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CAkBvE"}
1
+ {"version":3,"file":"useVirtual.d.ts","sourceRoot":"","sources":["../../../../../table/src/composables/useVirtual.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,KAAK,CAAA;AAEtC,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,OAAO,GAAG,SAAS,CAAA;IAClC,OAAO,EAAE,MAAM,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;IAC1C,IAAI,EAAE,MAAM,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAA;IACpD,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAA;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC/B,oDAAoD;IACpD,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IAC7B,uDAAuD;IACvD,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC/B,4CAA4C;IAC5C,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC/B;;;;;;OAMG;IACH,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;CAClC;AASD,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CAwBvE"}