@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
@@ -1,5 +1,6 @@
1
1
  import { PropType } from 'vue';
2
2
  import { VirtualScrollInfo } from '../../../core/src/index.ts';
3
+ import { ColumnMetrics } from '../composables/useColumnMetrics';
3
4
  import { ColumnType, Key } from '../types';
4
5
  type VirtualTableScrollInfo = VirtualScrollInfo & {
5
6
  maxX: number;
@@ -53,6 +54,24 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
53
54
  type: NumberConstructor;
54
55
  required: true;
55
56
  };
57
+ /** 定高快路径开关,见 VTable 的 rowHeight prop */
58
+ fixedHeight: {
59
+ type: BooleanConstructor;
60
+ default: boolean;
61
+ };
62
+ /**
63
+ * 横向虚拟化开关。由 VTable 判定完全部前提后才会为 true,
64
+ * 这里只管渲染,不再重复校验。
65
+ */
66
+ virtualColumn: {
67
+ type: BooleanConstructor;
68
+ default: boolean;
69
+ };
70
+ /** 从表头实测到的列宽。null 表示还没测到,此时渲染全部列。 */
71
+ columnMetrics: {
72
+ type: PropType<ColumnMetrics | null>;
73
+ default: null;
74
+ };
56
75
  /** Sync header scroll when virtual body scrolls horizontally */
57
76
  onVirtualScroll: {
58
77
  type: PropType<(info: VirtualTableScrollInfo) => void>;
@@ -111,6 +130,24 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
111
130
  type: NumberConstructor;
112
131
  required: true;
113
132
  };
133
+ /** 定高快路径开关,见 VTable 的 rowHeight prop */
134
+ fixedHeight: {
135
+ type: BooleanConstructor;
136
+ default: boolean;
137
+ };
138
+ /**
139
+ * 横向虚拟化开关。由 VTable 判定完全部前提后才会为 true,
140
+ * 这里只管渲染,不再重复校验。
141
+ */
142
+ virtualColumn: {
143
+ type: BooleanConstructor;
144
+ default: boolean;
145
+ };
146
+ /** 从表头实测到的列宽。null 表示还没测到,此时渲染全部列。 */
147
+ columnMetrics: {
148
+ type: PropType<ColumnMetrics | null>;
149
+ default: null;
150
+ };
114
151
  /** Sync header scroll when virtual body scrolls horizontally */
115
152
  onVirtualScroll: {
116
153
  type: PropType<(info: VirtualTableScrollInfo) => void>;
@@ -125,6 +162,9 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
125
162
  onVirtualScroll: (info: VirtualTableScrollInfo) => void;
126
163
  rowKey: string | ((record: Record<string, unknown>) => Key);
127
164
  tableStyle: Record<string, string>;
165
+ fixedHeight: boolean;
166
+ virtualColumn: boolean;
167
+ columnMetrics: ColumnMetrics | null;
128
168
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
129
169
  export default _default;
130
170
  //# sourceMappingURL=VirtualTableBody.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualTableBody.d.ts","sourceRoot":"","sources":["../../../../../table/src/components/VirtualTableBody.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,QAAQ,EAAE,MAAM,KAAK,CAAA;AAElD,OAAO,KAAK,EAAW,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAMpE,OAAO,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAE/C,KAAK,sBAAsB,GAAG,iBAAiB,GAAG;IAChD,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;;;cAKgC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;;;;cACtC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAO3C,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;;;cAEhC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;;;;;;;;;;;IAK3F,gEAAgE;;cAE5C,QAAQ,CAAC,CAAC,IAAI,EAAE,sBAAsB,KAAK,IAAI,CAAC;;;;cAIvC,QAAQ,CAAC,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;;;;;cArBxC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;;;;cACtC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAO3C,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;;;cAEhC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;;;;;;;;;;;IAK3F,gEAAgE;;cAE5C,QAAQ,CAAC,CAAC,IAAI,EAAE,sBAAsB,KAAK,IAAI,CAAC;;;;cAIvC,QAAQ,CAAC,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;;;;;4BAJjC,sBAAsB,KAAK,IAAI;+BAPT,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,GAAG;;;AAb7F,wBAqME"}
1
+ {"version":3,"file":"VirtualTableBody.d.ts","sourceRoot":"","sources":["../../../../../table/src/components/VirtualTableBody.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,QAAQ,EAAE,MAAM,KAAK,CAAA;AAElD,OAAO,KAAK,EAAW,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAMpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAEpE,OAAO,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAG/C,KAAK,sBAAsB,GAAG,iBAAiB,GAAG;IAChD,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;;;cAQgC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;;;;cACtC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAO3C,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;;;cAEhC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;;;;;;;;;;;IAK3F,wCAAwC;;;;;IAExC;;;OAGG;;;;;IAEH,qCAAqC;;cACJ,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC;;;IAC/D,gEAAgE;;cAE5C,QAAQ,CAAC,CAAC,IAAI,EAAE,sBAAsB,KAAK,IAAI,CAAC;;;;cAIvC,QAAQ,CAAC,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;;;;;cA9BxC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;;;;cACtC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAO3C,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;;;cAEhC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;;;;;;;;;;;IAK3F,wCAAwC;;;;;IAExC;;;OAGG;;;;;IAEH,qCAAqC;;cACJ,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC;;;IAC/D,gEAAgE;;cAE5C,QAAQ,CAAC,CAAC,IAAI,EAAE,sBAAsB,KAAK,IAAI,CAAC;;;;cAIvC,QAAQ,CAAC,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;;;;;4BAJjC,sBAAsB,KAAK,IAAI;+BAhBT,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,GAAG;;;;;;AAb7F,wBAuYE"}
@@ -1,16 +1,18 @@
1
- import { defineComponent as q, inject as T, ref as k, computed as B, watch as V, createVNode as l, isVNode as v } from "vue";
1
+ import { defineComponent as z, inject as $, ref as C, computed as c, onBeforeUnmount as D, watch as G, createVNode as r, isVNode as U } from "vue";
2
2
  import "../../../core/src/utils/tv.mjs";
3
- import I from "./TableRow.mjs";
4
- import j from "./TableCell.mjs";
5
- import H from "./TableEmpty.mjs";
6
- import C from "./ColGroup.mjs";
7
- import { TABLE_CONTEXT_KEY as O } from "../context.mjs";
8
- import L from "../../../core/src/components/VirtualList/VirtualList.mjs";
9
- import { cn as c } from "tailwind-variants";
10
- function _(e) {
11
- return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !v(e);
3
+ import Y from "./TableRow.mjs";
4
+ import J from "./TableCell.mjs";
5
+ import Q from "./TableEmpty.mjs";
6
+ import Z from "./ColGroup.mjs";
7
+ import { TABLE_CONTEXT_KEY as ee } from "../context.mjs";
8
+ import { resolveFixedColumnRanges as te, useColumnWindow as le } from "../composables/useColumnWindow.mjs";
9
+ import { getRowCompatClass as ne } from "../utils/compat.mjs";
10
+ import oe from "../../../core/src/components/VirtualList/VirtualList.mjs";
11
+ import { cn as g } from "tailwind-variants";
12
+ function re(e) {
13
+ return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !U(e);
12
14
  }
13
- const D = /* @__PURE__ */ q({
15
+ const ge = /* @__PURE__ */ z({
14
16
  name: "VirtualTableBody",
15
17
  props: {
16
18
  dataSource: {
@@ -61,6 +63,24 @@ const D = /* @__PURE__ */ q({
61
63
  type: Number,
62
64
  required: !0
63
65
  },
66
+ /** 定高快路径开关,见 VTable 的 rowHeight prop */
67
+ fixedHeight: {
68
+ type: Boolean,
69
+ default: !1
70
+ },
71
+ /**
72
+ * 横向虚拟化开关。由 VTable 判定完全部前提后才会为 true,
73
+ * 这里只管渲染,不再重复校验。
74
+ */
75
+ virtualColumn: {
76
+ type: Boolean,
77
+ default: !1
78
+ },
79
+ /** 从表头实测到的列宽。null 表示还没测到,此时渲染全部列。 */
80
+ columnMetrics: {
81
+ type: Object,
82
+ default: null
83
+ },
64
84
  /** Sync header scroll when virtual body scrolls horizontally */
65
85
  onVirtualScroll: {
66
86
  type: Function,
@@ -72,52 +92,112 @@ const D = /* @__PURE__ */ q({
72
92
  }
73
93
  },
74
94
  setup(e) {
75
- const n = T(O, {}), d = k();
76
- function y(t) {
77
- e.onVirtualScroll?.({
95
+ const a = $(ee, {}), w = C(), x = C(0), f = C(0);
96
+ function b(t) {
97
+ x.value = t.x, e.onVirtualScroll?.({
78
98
  ...t,
79
- maxX: d.value?.getHorizontalRange() ?? 0
99
+ maxX: w.value?.getHorizontalRange() ?? 0
80
100
  });
81
101
  }
82
- function m(t, o) {
83
- return typeof e.rowKey == "function" ? e.rowKey(t) : typeof e.rowKey == "string" && e.rowKey in t ? t[e.rowKey] : o;
102
+ function T(t, l) {
103
+ return typeof e.rowKey == "function" ? e.rowKey(t) : typeof e.rowKey == "string" && e.rowKey in t ? t[e.rowKey] : l;
84
104
  }
85
- function b(t) {
105
+ function V(t) {
86
106
  return typeof e.rowKey == "function" ? e.rowKey(t) : typeof e.rowKey == "string" && e.rowKey in t ? t[e.rowKey] : e.dataSource.indexOf(t);
87
107
  }
88
- const g = B(() => {
108
+ const k = c(() => {
89
109
  let t = 0;
90
- for (const o of e.columns) {
91
- const s = typeof o.width == "number" ? o.width : parseInt(String(o.width || "0"), 10);
92
- t += s || 0;
110
+ for (const l of e.columns) {
111
+ const d = typeof l.width == "number" ? l.width : parseInt(String(l.width || "0"), 10);
112
+ t += d || 0;
93
113
  }
94
114
  return t;
115
+ }), q = c(() => {
116
+ const t = e.virtualColumn ? e.columnMetrics?.total : void 0;
117
+ return t && t > 0 ? t : k.value;
118
+ }), m = c(() => te(e.columns)), S = c(() => {
119
+ if (!e.virtualColumn || f.value <= 0) return null;
120
+ const t = e.columnMetrics;
121
+ return !t || t.widths.length !== e.columns.length ? null : t.widths;
122
+ }), {
123
+ active: R,
124
+ start: O,
125
+ end: W,
126
+ leftSpacer: p,
127
+ rightSpacer: E
128
+ } = le({
129
+ widths: () => S.value,
130
+ leftFixedCount: () => m.value.leftFixedCount,
131
+ rightFixedStart: () => m.value.rightFixedStart,
132
+ offsetX: () => x.value,
133
+ viewportWidth: () => f.value
134
+ }), H = c(() => {
135
+ const t = e.columns.length;
136
+ if (!R.value)
137
+ return Array.from({
138
+ length: t
139
+ }, (n, i) => ({
140
+ index: i
141
+ }));
142
+ const {
143
+ leftFixedCount: l,
144
+ rightFixedStart: d
145
+ } = m.value, o = [];
146
+ for (let n = 0; n < l; n += 1) o.push({
147
+ index: n
148
+ });
149
+ p.value > 0 && o.push({
150
+ spacer: p.value
151
+ });
152
+ for (let n = O.value; n <= W.value; n += 1) o.push({
153
+ index: n
154
+ });
155
+ E.value > 0 && o.push({
156
+ spacer: E.value
157
+ });
158
+ for (let n = d; n < t; n += 1) o.push({
159
+ index: n
160
+ });
161
+ return o;
95
162
  });
96
- return V(() => d.value, (t) => {
163
+ function ae(t) {
164
+ }
165
+ let u = null, s = null;
166
+ function K(t) {
167
+ const l = t ?? null;
168
+ l !== s && (u && s && u.unobserve(s), s = l, l && (f.value = l.clientWidth, !u && typeof ResizeObserver < "u" && (u = new ResizeObserver(() => {
169
+ s && (f.value = s.clientWidth);
170
+ })), u?.observe(l)));
171
+ }
172
+ return D(() => {
173
+ u?.disconnect(), u = null, s = null;
174
+ }), G(() => w.value, (t) => {
97
175
  if (t) {
98
- const o = t.getScrollInfo();
99
- y(o);
100
- }
101
- }), () => e.dataSource.length === 0 ? l("table", {
176
+ const l = t.getScrollInfo();
177
+ b(l), t.nativeElement, K(t.nativeElement);
178
+ } else
179
+ K(null);
180
+ }), () => e.dataSource.length === 0 ? r("table", {
102
181
  class: e.tableClass,
103
182
  style: e.tableStyle
104
- }, [l(C, {
183
+ }, [r(Z, {
105
184
  columns: e.columns
106
- }, null), l("tbody", {
185
+ }, null), r("tbody", {
107
186
  class: e.tbodyClass
108
- }, [l(H, {
187
+ }, [r(Q, {
109
188
  colSpan: e.columns.length || 1,
110
189
  emptyClass: e.emptyClass,
111
190
  tdClass: e.tdClass
112
- }, null)])]) : l(L, {
113
- ref: d,
191
+ }, null)])]) : r(oe, {
192
+ ref: w,
114
193
  data: e.dataSource,
115
194
  height: e.height,
116
195
  itemHeight: e.itemHeight,
117
- itemKey: b,
118
- scrollWidth: g.value || void 0,
196
+ itemKey: V,
197
+ scrollWidth: q.value || void 0,
198
+ disableHeightMeasure: e.fixedHeight,
119
199
  fullHeight: !1,
120
- onVirtualScroll: y,
200
+ onVirtualScroll: b,
121
201
  showScrollBar: e.showScrollBar,
122
202
  style: {
123
203
  overflow: "hidden"
@@ -125,48 +205,59 @@ const D = /* @__PURE__ */ q({
125
205
  }, {
126
206
  default: ({
127
207
  item: t,
128
- index: o
208
+ index: l
129
209
  }) => {
130
- let s;
131
- const a = o, i = m(t, a), r = n.expandable?.(), S = n.isExpanded?.(i) ?? !1, h = r?.expandRowByClick ?? !1, x = n.isRowExpandable?.(t) ?? !1, f = n.getRowClassName?.(t, a), R = n.getRowProps?.(t, a), K = n.getFlattenRow?.(t)?.level ?? 0, E = typeof r?.expandedRowClassName == "function" ? r.expandedRowClassName(t, a, K) : r?.expandedRowClassName, N = h ? () => {
132
- x && n.toggleExpand?.(t, a);
133
- } : void 0;
134
- return l("table", {
210
+ let d;
211
+ const o = l, n = T(t, o), i = a.expandable?.(), _ = a.isExpanded?.(n) ?? !1, I = i?.expandRowByClick ?? !1, j = a.isRowExpandable?.(t) ?? !1, B = a.getRowClassName?.(t, o), A = a.getRowProps?.(t, o), F = (a.isTreeData?.value ? a.getFlattenRow?.(t) : void 0)?.level ?? 0, L = typeof i?.expandedRowClassName == "function" ? i.expandedRowClassName(t, o, F) : i?.expandedRowClassName, M = I ? () => {
212
+ j && a.toggleExpand?.(t, o);
213
+ } : void 0, N = H.value, P = R.value ? S.value : null;
214
+ return r("table", {
135
215
  class: e.tableClass,
136
216
  style: {
137
217
  ...e.tableStyle,
138
218
  tableLayout: "fixed"
139
219
  }
140
- }, [l(C, {
141
- columns: e.columns
142
- }, null), l("tbody", {
220
+ }, [r("tbody", {
143
221
  class: e.tbodyClass
144
- }, [l(I, {
145
- key: i,
146
- rowClass: c(e.rowClass, f) ?? "",
147
- rowProps: R,
148
- onClick: N
149
- }, _(s = e.columns.map((u, w) => l(j, {
150
- key: u.key ?? String(u.dataIndex ?? w),
151
- record: t,
152
- rowIndex: a,
153
- column: u,
154
- colIndex: w,
155
- tdClass: e.tdClass,
156
- bodyCellEllipsisClass: e.bodyCellEllipsisClass
157
- }, null))) ? s : {
158
- default: () => [s]
159
- }), S && r?.expandedRowRender && l("tr", {
160
- key: `${i}-expanded`,
161
- class: c(e.rowClass, f, n.subThemeSlots?.expandedRow(), E)
162
- }, [l("td", {
163
- colspan: e.columns.length,
164
- class: c(e.tdClass, n.subThemeSlots?.expandedRowCell())
165
- }, [r.expandedRowRender(t, a, 0, !0)])])])]);
222
+ }, [r(Y, {
223
+ key: n,
224
+ rowClass: g(e.rowClass, B, ne(a, t, o, F)) ?? "",
225
+ rowProps: A,
226
+ onClick: M
227
+ }, re(d = N.map((v, X) => {
228
+ if (v.spacer !== void 0)
229
+ return r("td", {
230
+ key: `__vtg_spacer_${X}`,
231
+ style: {
232
+ width: `${v.spacer}px`,
233
+ padding: "0"
234
+ },
235
+ "aria-hidden": "true"
236
+ }, null);
237
+ const y = v.index, h = e.columns[y];
238
+ return r(J, {
239
+ key: h.key ?? String(h.dataIndex ?? y),
240
+ record: t,
241
+ rowIndex: o,
242
+ column: h,
243
+ colIndex: y,
244
+ widthOverride: P?.[y],
245
+ tdClass: e.tdClass,
246
+ bodyCellEllipsisClass: e.bodyCellEllipsisClass
247
+ }, null);
248
+ })) ? d : {
249
+ default: () => [d]
250
+ }), _ && i?.expandedRowRender && r("tr", {
251
+ key: `${n}-expanded`,
252
+ class: g(e.rowClass, B, a.subThemeSlots?.expandedRow(), L)
253
+ }, [r("td", {
254
+ colspan: N.length,
255
+ class: g(e.tdClass, a.subThemeSlots?.expandedRowCell())
256
+ }, [i.expandedRowRender(t, o, 0, !0)])])])]);
166
257
  }
167
258
  });
168
259
  }
169
260
  });
170
261
  export {
171
- D as default
262
+ ge as default
172
263
  };
@@ -12,4 +12,8 @@ export { useExpand } from './useExpand';
12
12
  export { useResize } from './useResize';
13
13
  export { useHoverState, isInHoverRange } from './useHoverState';
14
14
  export type { HoverState } from './useHoverState';
15
+ export { useColumnMetrics } from './useColumnMetrics';
16
+ export type { ColumnMetrics } from './useColumnMetrics';
17
+ export { useColumnWindow, computeColumnWindow, resolveFixedColumnRanges, DEFAULT_COLUMN_OVERSCAN, } from './useColumnWindow';
18
+ export type { ColumnWindow, FixedColumnRanges } from './useColumnWindow';
15
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../table/src/composables/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAEzD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AACrD,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC/D,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../table/src/composables/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAEzD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AACrD,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC/D,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvD,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA"}
@@ -0,0 +1,39 @@
1
+ import { ShallowRef } from 'vue';
2
+ import { ColumnType } from '../types';
3
+ export interface ColumnMetrics {
4
+ /** 各叶子列的实测宽度(px),下标即 displayColumns 下标。 */
5
+ widths: number[];
6
+ /** 列总宽。 */
7
+ total: number;
8
+ }
9
+ export interface UseColumnMetricsOptions {
10
+ /** 关闭时不测量、不注册 observer,`metrics` 恒为 null。 */
11
+ enabled: () => boolean;
12
+ /** 表头外层容器(useScroll 的 headerWrapRef)。 */
13
+ headerEl: () => HTMLElement | null;
14
+ columns: () => ColumnType<Record<string, unknown>>[];
15
+ /** 拖拽列宽覆写。变了就得重测。 */
16
+ columnWidths: Record<string, number>;
17
+ /** 是否渲染了表头。false 时没有参照可量,只能退回读声明宽度。 */
18
+ hasHeader: () => boolean;
19
+ }
20
+ export interface UseColumnMetricsReturn {
21
+ /** null 表示还没测到;调用方据此回落到渲染全部列。 */
22
+ metrics: ShallowRef<ColumnMetrics | null>;
23
+ /** 手动触发一次重测(下一帧执行)。 */
24
+ remeasure: () => void;
25
+ }
26
+ /**
27
+ * 实测每个叶子列的宽度,作为横向虚拟化的定位参照。
28
+ *
29
+ * **为什么量表头而不是要求用户声明数字列宽**:表头始终渲染全部 N 列,
30
+ * 它本身就是浏览器算好的精确列宽结果,直接读即可,不必复刻一套
31
+ * `width / minWidth / auto / 百分比 → renderWidth` 的解析(vxe-table 必须自己算,
32
+ * 是因为它表头表体都窗口化,没有一份完整布局可参照)。因此我们天然支持
33
+ * `auto`、百分比,以及 `table-layout: fixed` 下浏览器对余量的分配。
34
+ *
35
+ * **不会震荡**:表头布局不依赖表体,所以「量表头 → 改表体」不构成反馈环。
36
+ * 这是整个方案能成立的关键。
37
+ */
38
+ export declare function useColumnMetrics(options: UseColumnMetricsOptions): UseColumnMetricsReturn;
39
+ //# sourceMappingURL=useColumnMetrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useColumnMetrics.d.ts","sourceRoot":"","sources":["../../../../../table/src/composables/useColumnMetrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiD,KAAK,UAAU,EAAE,MAAM,KAAK,CAAA;AACpF,OAAO,KAAK,EAAE,UAAU,EAAO,MAAM,UAAU,CAAA;AAG/C,MAAM,WAAW,aAAa;IAC5B,2CAA2C;IAC3C,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,WAAW;IACX,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,uBAAuB;IACtC,6CAA6C;IAC7C,OAAO,EAAE,MAAM,OAAO,CAAA;IACtB,yCAAyC;IACzC,QAAQ,EAAE,MAAM,WAAW,GAAG,IAAI,CAAA;IAClC,OAAO,EAAE,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAA;IACpD,qBAAqB;IACrB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC,uCAAuC;IACvC,SAAS,EAAE,MAAM,OAAO,CAAA;CACzB;AAED,MAAM,WAAW,sBAAsB;IACrC,iCAAiC;IACjC,OAAO,EAAE,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,CAAA;IACzC,uBAAuB;IACvB,SAAS,EAAE,MAAM,IAAI,CAAA;CACtB;AA0CD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,sBAAsB,CAgHzF"}
@@ -0,0 +1,88 @@
1
+ import { shallowRef as b, watch as v, onMounted as y, onBeforeUnmount as N } from "vue";
2
+ import { getColumnKey as A } from "./useColumns.mjs";
3
+ const F = 0.5;
4
+ function O(e, n) {
5
+ if (e === null || n === null) return e === n;
6
+ if (e.widths.length !== n.widths.length) return !1;
7
+ for (let t = 0; t < e.widths.length; t += 1)
8
+ if (Math.abs(e.widths[t] - n.widths[t]) > F) return !1;
9
+ return !0;
10
+ }
11
+ function C(e, n) {
12
+ return A(e) ?? n;
13
+ }
14
+ function E(e, n) {
15
+ const t = [];
16
+ let r = 0;
17
+ for (let l = 0; l < e.length; l += 1) {
18
+ const f = n[String(C(e[l], l))] ?? e[l].width, i = typeof f == "number" ? f : Number.NaN;
19
+ if (!Number.isFinite(i) || i <= 0) return null;
20
+ t.push(i), r += i;
21
+ }
22
+ return r > 0 ? { widths: t, total: r } : null;
23
+ }
24
+ function M(e) {
25
+ const n = b(null);
26
+ let t = 0, r = null, l = null;
27
+ function f() {
28
+ const u = e.columns(), a = u.length;
29
+ if (a === 0) return null;
30
+ if (!e.hasHeader())
31
+ return E(u, e.columnWidths);
32
+ const w = e.headerEl();
33
+ if (!w) return null;
34
+ const g = w.querySelectorAll("th[data-vtg-leaf-col]");
35
+ if (g.length !== a) return null;
36
+ const d = new Array(a).fill(-1);
37
+ for (const s of g) {
38
+ const o = Number(s.dataset.vtgLeafCol);
39
+ if (!Number.isInteger(o) || o < 0 || o >= a) return null;
40
+ d[o] = s.getBoundingClientRect().width;
41
+ }
42
+ let h = 0;
43
+ for (const s of d) {
44
+ if (s < 0) return null;
45
+ h += s;
46
+ }
47
+ return h > 0 ? { widths: d, total: h } : null;
48
+ }
49
+ function i() {
50
+ if (t = 0, !e.enabled()) {
51
+ n.value = null;
52
+ return;
53
+ }
54
+ const u = f();
55
+ O(n.value, u) || (n.value = u);
56
+ }
57
+ function c() {
58
+ if (typeof requestAnimationFrame > "u") {
59
+ i();
60
+ return;
61
+ }
62
+ t || (t = requestAnimationFrame(i));
63
+ }
64
+ function m() {
65
+ const u = e.enabled() && e.hasHeader() ? e.headerEl() : null;
66
+ u !== l && (r && l && r.unobserve(l), l = u, u && (!r && typeof ResizeObserver < "u" && (r = new ResizeObserver(c)), r?.observe(u)));
67
+ }
68
+ return v(
69
+ [
70
+ () => e.enabled(),
71
+ () => e.hasHeader(),
72
+ () => e.headerEl(),
73
+ () => e.columns(),
74
+ () => ({ ...e.columnWidths })
75
+ ],
76
+ () => {
77
+ m(), c();
78
+ },
79
+ { deep: !1 }
80
+ ), y(() => {
81
+ m(), c();
82
+ }), N(() => {
83
+ t && cancelAnimationFrame(t), r?.disconnect(), r = null, l = null;
84
+ }), { metrics: n, remeasure: c };
85
+ }
86
+ export {
87
+ M as useColumnMetrics
88
+ };
@@ -0,0 +1,90 @@
1
+ import { ComputedRef } from 'vue';
2
+ import { PrefixSums } from '../../../core/src/index.ts';
3
+ import { ColumnType } from '../types';
4
+ /** 窗口两侧各多渲染的列数。缓冲一帧内的滚动位移,避免边缘列闪空。 */
5
+ export declare const DEFAULT_COLUMN_OVERSCAN = 2;
6
+ export interface FixedColumnRanges {
7
+ /** 左固定列数量。它们恒渲染、不参与窗口。 */
8
+ leftFixedCount: number;
9
+ /** 首个右固定列的下标;无右固定列时等于列总数。 */
10
+ rightFixedStart: number;
11
+ /**
12
+ * 左固定列是否构成前缀、右固定列是否构成后缀。
13
+ *
14
+ * 不成立时窗口算法失效:窗口是一段**连续**下标区间,
15
+ * 中间夹着的固定列会被整段跳过或重复渲染。
16
+ */
17
+ contiguous: boolean;
18
+ }
19
+ /**
20
+ * 解析固定列的边界。
21
+ *
22
+ * `useScroll.fixedOffsets` 只关心每列各自的偏移,这里关心的是**结构**:
23
+ * 横向窗口化要求「左固定 | 可滚动 | 右固定」三段式,因此额外校验连续性。
24
+ */
25
+ export declare function resolveFixedColumnRanges(columns: readonly ColumnType<Record<string, unknown>>[]): FixedColumnRanges;
26
+ export interface ColumnWindow {
27
+ /** 窗口首列下标(闭区间)。 */
28
+ start: number;
29
+ /** 窗口末列下标(闭区间)。`end < start` 表示空窗口。 */
30
+ end: number;
31
+ /** 左固定列与窗口首列之间的占位宽度。 */
32
+ leftSpacer: number;
33
+ /** 窗口末列与右固定列之间的占位宽度。 */
34
+ rightSpacer: number;
35
+ }
36
+ export interface ComputeColumnWindowOptions {
37
+ /** 已按列宽同步好的位置表。 */
38
+ prefix: PrefixSums;
39
+ columnCount: number;
40
+ leftFixedCount: number;
41
+ rightFixedStart: number;
42
+ /** 当前横向滚动偏移。 */
43
+ offsetX: number;
44
+ /** 可视区宽度(含被固定列盖住的部分)。 */
45
+ viewportWidth: number;
46
+ overscan: number;
47
+ }
48
+ /**
49
+ * 求当前应该渲染的列区间与两侧占位宽度。
50
+ *
51
+ * 列 `i` 占 `[offsetOf(i), offsetOf(i + 1))`。视口显示 `[offsetX, offsetX + viewportWidth)`,
52
+ * 但左右固定列是 `position: sticky`,**盖住**视口两端,所以可滚动内容真正露出来的区间是
53
+ * `[offsetX + leftFixedWidth, offsetX + viewportWidth - rightFixedWidth)`。
54
+ *
55
+ * 与 vxe-table 的 `handleVirtualXVisible` 同式,可互为佐证。
56
+ *
57
+ * 不变量(见单测):
58
+ * `leftFixedWidth + leftSpacer + windowWidth + rightSpacer + rightFixedWidth === total`
59
+ */
60
+ export declare function computeColumnWindow(options: ComputeColumnWindowOptions): ColumnWindow;
61
+ export interface UseColumnWindowOptions {
62
+ /**
63
+ * 各叶子列的实测宽度,下标即 displayColumns 下标。
64
+ * 返回 null 表示尚未测到(首帧),调用方据此回落到渲染全部列。
65
+ */
66
+ widths: () => readonly number[] | null;
67
+ leftFixedCount: () => number;
68
+ rightFixedStart: () => number;
69
+ offsetX: () => number;
70
+ viewportWidth: () => number;
71
+ overscan?: () => number;
72
+ }
73
+ export interface UseColumnWindowReturn {
74
+ /** 是否真的在做列窗口化。false 时调用方必须渲染全部列。 */
75
+ active: ComputedRef<boolean>;
76
+ start: ComputedRef<number>;
77
+ end: ComputedRef<number>;
78
+ leftSpacer: ComputedRef<number>;
79
+ rightSpacer: ComputedRef<number>;
80
+ }
81
+ /**
82
+ * 横向窗口的响应式包装。
83
+ *
84
+ * **输出刻意是四个独立的 primitive computed,而不是一个对象**:
85
+ * 横向滚动每一帧都改 `offsetX`,但只有跨越列边界时这四个数才会变。
86
+ * primitive 的脏检查会把中间帧全部吃掉,下游单元格因此不会每帧失效。
87
+ * 理由同 `useScroll` 里把 `scrollState` 拆成两个布尔 computed。
88
+ */
89
+ export declare function useColumnWindow(options: UseColumnWindowOptions): UseColumnWindowReturn;
90
+ //# sourceMappingURL=useColumnWindow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useColumnWindow.d.ts","sourceRoot":"","sources":["../../../../../table/src/composables/useColumnWindow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,WAAW,EAAE,MAAM,KAAK,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAE1C,sCAAsC;AACtC,eAAO,MAAM,uBAAuB,IAAI,CAAA;AAExC,MAAM,WAAW,iBAAiB;IAChC,0BAA0B;IAC1B,cAAc,EAAE,MAAM,CAAA;IACtB,6BAA6B;IAC7B,eAAe,EAAE,MAAM,CAAA;IACvB;;;;;OAKG;IACH,UAAU,EAAE,OAAO,CAAA;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,SAAS,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,GACtD,iBAAiB,CAsBnB;AAED,MAAM,WAAW,YAAY;IAC3B,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,uCAAuC;IACvC,GAAG,EAAE,MAAM,CAAA;IACX,wBAAwB;IACxB,UAAU,EAAE,MAAM,CAAA;IAClB,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,0BAA0B;IACzC,mBAAmB;IACnB,MAAM,EAAE,UAAU,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,yBAAyB;IACzB,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,YAAY,CAkCrF;AAED,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,MAAM,EAAE,MAAM,SAAS,MAAM,EAAE,GAAG,IAAI,CAAA;IACtC,cAAc,EAAE,MAAM,MAAM,CAAA;IAC5B,eAAe,EAAE,MAAM,MAAM,CAAA;IAC7B,OAAO,EAAE,MAAM,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,MAAM,CAAA;IAC3B,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,oCAAoC;IACpC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IAC5B,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC1B,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACxB,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC/B,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CACjC;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,qBAAqB,CAkCtF"}