x-next 1.8.0 → 1.8.1

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.
package/AI_USAGE.md CHANGED
@@ -1,9 +1,9 @@
1
1
  <!-- Generated by pnpm generate:ai-usage. Edit src/docs/guide/ai-usage-recipes.md and script/ai-usage/manifest.js. -->
2
2
  # x-next AI 使用手册
3
3
 
4
- 适用版本:**x-next@1.8.0**。Vue:`^3.5.0`;Node:`>=20.19.0`。
4
+ 适用版本:**x-next@1.8.1**。Vue:`^3.5.0`;Node:`>=20.19.0`。
5
5
 
6
- 来源指纹(精选示例、映射、版本与公开类型声明):`3e81e69933489d5ab6307ac5eaa38e89cb26004916f02f2556f74d18b1ed1766`。
6
+ 来源指纹(精选示例、映射、版本与公开类型声明):`7ec2a1f639607b9e67d6ca85e77e41199d362a943fc40ce448b70dfc067180cd`。
7
7
 
8
8
  先按业务需要选择组件,不要求全部迁移。本手册限定在用户确认的 26 个组件及必要的同族子组件,未覆盖的导出不表示已完成业务验收。
9
9
 
package/CHANGELOG.md CHANGED
@@ -2,6 +2,15 @@
2
2
 
3
3
  本项目遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
4
4
 
5
+ ## [1.8.1] - 2026-10-05
6
+
7
+ ### 修复
8
+
9
+ - **Heatmap 行列整体错位(1.6.0 起存在)**:格子的位置由「DOM 顺序 + `grid-auto-flow` 自动填充」共同决定,而渲染顺序(行优先)与数据顺序(列优先)不一致,导致整块热力图错排——视觉上「一列」是 7 个连续周的同一天,而不是同一周的 7 天;月份标签与格子内容、悬浮提示与实际位置全部对不上(表现为「点 7 月的位置,提示显示 9-30」)。
10
+ 现改为**显式 `grid-row` / `grid-column` 定位**:位置只由格子的行列号决定,DOM 顺序不再参与布局,与悬浮提示、键盘导航使用的语义坐标天然一致。
11
+ - 移除网格上已无意义的 `grid-auto-flow`(自动填充顺序是本次错位的成因之一)。
12
+ - 新增防转置回归测试:断言同一列日期连续(同周)、同一行日期相隔 7 天(同星期几),以及格子的 grid 定位与行列号一致。
13
+
5
14
  ## [1.8.0] - 2026-10-05
6
15
 
7
16
  ### 新增
@@ -125,7 +125,6 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
125
125
  };
126
126
  mergedSize: import('vue').ComputedRef<"mini" | "small" | "medium" | "large">;
127
127
  cells: import('vue').ComputedRef<HeatmapCell[]>;
128
- rows: import('vue').ComputedRef<HeatmapCell[][]>;
129
128
  range: import('vue').ComputedRef<HeatmapResolvedRange | null>;
130
129
  gridStyle: import('vue').ComputedRef<{
131
130
  '--x-heatmap-cell-size': string;
@@ -62,7 +62,6 @@ export declare const Heatmap: {
62
62
  };
63
63
  mergedSize: import('vue').ComputedRef<"mini" | "small" | "medium" | "large">;
64
64
  cells: import('vue').ComputedRef<import('./interface').HeatmapCell[]>;
65
- rows: import('vue').ComputedRef<import('./interface').HeatmapCell[][]>;
66
65
  range: import('vue').ComputedRef<import('./interface').HeatmapResolvedRange | null>;
67
66
  gridStyle: import('vue').ComputedRef<{
68
67
  '--x-heatmap-cell-size': string;
@@ -201,7 +200,6 @@ export declare const Heatmap: {
201
200
  };
202
201
  mergedSize: import('vue').ComputedRef<"mini" | "small" | "medium" | "large">;
203
202
  cells: import('vue').ComputedRef<import('./interface').HeatmapCell[]>;
204
- rows: import('vue').ComputedRef<import('./interface').HeatmapCell[][]>;
205
203
  range: import('vue').ComputedRef<import('./interface').HeatmapResolvedRange | null>;
206
204
  gridStyle: import('vue').ComputedRef<{
207
205
  '--x-heatmap-cell-size': string;
@@ -326,7 +324,6 @@ export declare const Heatmap: {
326
324
  };
327
325
  mergedSize: import('vue').ComputedRef<"mini" | "small" | "medium" | "large">;
328
326
  cells: import('vue').ComputedRef<import('./interface').HeatmapCell[]>;
329
- rows: import('vue').ComputedRef<import('./interface').HeatmapCell[][]>;
330
327
  range: import('vue').ComputedRef<import('./interface').HeatmapResolvedRange | null>;
331
328
  gridStyle: import('vue').ComputedRef<{
332
329
  '--x-heatmap-cell-size': string;
@@ -1,13 +1,13 @@
1
- import { defineComponent as ee, createVNode as n, useId as te, toRefs as le, computed as a, ref as Y, watch as ae, nextTick as ne, Fragment as oe } from "vue";
2
- import { getClassNameMixin as re } from "../../_utils/config.js";
3
- import { useSize as ie } from "../../_hooks/use-size.js";
4
- import { useLocale as se } from "../../locale/index.js";
5
- import { isObject as ue } from "../../_utils/is.js";
6
- import { throttleByRaf as ce } from "../../_utils/throttle-by-raf.js";
7
- import { Spin as de } from "../spin/index.js";
8
- import { getWeekdayLabels as me } from "../date-picker/utils.js";
9
- import { CELL_SIZE as U, resolveRange as ve, indexDataByDay as fe, getValueExtent as he, buildMatrix as pe, DEFAULT_COLOR_LEVELS as ye, getMonthLabels as ge, isCellInRequestedRange as xe } from "./helpers/matrix.js";
10
- const Z = 2, Ae = /* @__PURE__ */ ee({
1
+ import { defineComponent as X, createVNode as n, useId as ee, toRefs as te, computed as o, ref as W, watch as le, nextTick as ae, Fragment as ne } from "vue";
2
+ import { getClassNameMixin as oe } from "../../_utils/config.js";
3
+ import { useSize as re } from "../../_hooks/use-size.js";
4
+ import { useLocale as ie } from "../../locale/index.js";
5
+ import { isObject as se } from "../../_utils/is.js";
6
+ import { throttleByRaf as ue } from "../../_utils/throttle-by-raf.js";
7
+ import { Spin as ce } from "../spin/index.js";
8
+ import { getWeekdayLabels as de } from "../date-picker/utils.js";
9
+ import { CELL_SIZE as K, resolveRange as me, indexDataByDay as ve, getValueExtent as fe, buildMatrix as he, DEFAULT_COLOR_LEVELS as pe, getMonthLabels as ye, isCellInRequestedRange as ge } from "./helpers/matrix.js";
10
+ const U = 2, Ee = /* @__PURE__ */ X({
11
11
  name: "Heatmap",
12
12
  props: {
13
13
  /**
@@ -137,139 +137,131 @@ const Z = 2, Ae = /* @__PURE__ */ ee({
137
137
  slots: Object,
138
138
  setup(t, {
139
139
  emit: D,
140
- slots: S
140
+ slots: Y
141
141
  }) {
142
142
  const {
143
- t: g,
144
- locale: z
145
- } = se(), C = re("heatmap"), E = `x-heatmap-cell-${te()}`, {
146
- mergedSize: A
147
- } = ie(le(t).size, {
143
+ t: p,
144
+ locale: C
145
+ } = ie(), z = oe("heatmap"), S = `x-heatmap-cell-${ee()}`, {
146
+ mergedSize: y
147
+ } = re(te(t).size, {
148
148
  defaultValue: "medium"
149
- }), d = a(() => U[A.value] ?? U.medium), p = a(() => {
149
+ }), s = o(() => K[y.value] ?? K.medium), E = o(() => {
150
150
  var e;
151
151
  return (e = t.activeColors) != null && e.length ? t.activeColors : ["var(--x-heatmap-color-level-1)", "var(--x-heatmap-color-level-2)", "var(--x-heatmap-color-level-3)", "var(--x-heatmap-color-level-4)", "var(--x-heatmap-color-level-5)"];
152
- }), O = a(() => t.minimumColor ?? "var(--x-heatmap-color-empty)"), R = a(() => [O.value, ...p.value]), i = a(() => ve({
152
+ }), R = o(() => t.minimumColor ?? "var(--x-heatmap-color-empty)"), b = o(() => [R.value, ...E.value]), c = o(() => me({
153
153
  year: t.year,
154
154
  startDate: t.startDate,
155
155
  endDate: t.endDate,
156
156
  data: t.data
157
- }, t.firstDayOfWeek)), P = a(() => fe(t.data)), q = a(() => he(t.data)), m = a(() => i.value ? pe(i.value, P.value, q.value, p.value.length || ye) : []), F = a(() => {
158
- const e = Array.from({
159
- length: 7
160
- }, () => []);
161
- return m.value.forEach((l) => {
162
- e[l.rowIndex].push(l);
163
- }), e;
164
- }), V = a(() => me(t.firstDayOfWeek, z.value.datePicker)), _ = a(() => {
165
- if (!i.value) return [];
166
- const e = i.value.requestedStart.year() !== i.value.requestedEnd.year();
167
- return ge(i.value, m.value, (l) => e ? l.format("YYYY-MM") : g("heatmap.month", {
157
+ }, t.firstDayOfWeek)), P = o(() => ve(t.data)), A = o(() => fe(t.data)), m = o(() => c.value ? he(c.value, P.value, A.value, E.value.length || pe) : []), q = o(() => de(t.firstDayOfWeek, C.value.datePicker)), F = o(() => {
158
+ if (!c.value) return [];
159
+ const e = c.value.requestedStart.year() !== c.value.requestedEnd.year();
160
+ return ye(c.value, m.value, (l) => e ? l.format("YYYY-MM") : p("heatmap.month", {
168
161
  month: l.month() + 1
169
162
  }));
170
- }), j = (e) => R.value[e.level] ?? O.value, $ = (e) => {
171
- const l = e.date.format("YYYY-MM-DD"), o = e.value;
172
- return o === null ? g("heatmap.noData", {
163
+ }), V = (e) => b.value[e.level] ?? R.value, $ = (e) => {
164
+ const l = e.date.format("YYYY-MM-DD"), r = e.value;
165
+ return r === null ? p("heatmap.noData", {
173
166
  date: l
174
- }) : g("heatmap.value", {
167
+ }) : p("heatmap.value", {
175
168
  date: l,
176
- value: o
169
+ value: r
177
170
  });
178
- }, v = Y(null), L = a(() => t.tooltip !== !1), b = Y(null), s = {
179
- tooltip: b
180
- }, w = Y(0), M = a(() => v.value === null ? null : m.value[v.value] ?? null), k = a(() => m.value.reduce((e, l) => Math.max(e, l.colIndex + 1), 0)), G = a(() => {
181
- const e = Z;
182
- return k.value <= 0 ? 0 : k.value * d.value + (k.value - 1) * e;
183
- }), B = a(() => {
171
+ }, d = W(null), L = o(() => t.tooltip !== !1), x = W(null), i = {
172
+ tooltip: x
173
+ }, k = W(0), M = o(() => d.value === null ? null : m.value[d.value] ?? null), w = o(() => m.value.reduce((e, l) => Math.max(e, l.colIndex + 1), 0)), _ = o(() => {
174
+ const e = U;
175
+ return w.value <= 0 ? 0 : w.value * s.value + (w.value - 1) * e;
176
+ }), O = o(() => {
184
177
  const e = M.value;
185
178
  if (!e) return {};
186
- const l = Z, o = e.colIndex * (d.value + l) + d.value / 2, c = e.rowIndex * (d.value + l) + d.value, h = w.value / 2, f = G.value;
187
- let K = o;
188
- return h > 0 && f > 0 && (K = f >= w.value ? Math.min(Math.max(o, h), f - h) : f / 2), {
189
- left: `${K}px`,
190
- top: `${c + 6}px`
179
+ const l = U, r = e.colIndex * (s.value + l) + s.value / 2, u = e.rowIndex * (s.value + l) + s.value, h = k.value / 2, f = _.value;
180
+ let H = r;
181
+ return h > 0 && f > 0 && (H = f >= k.value ? Math.min(Math.max(r, h), f - h) : f / 2), {
182
+ left: `${H}px`,
183
+ top: `${u + 6}px`
191
184
  };
192
185
  });
193
- ae(v, (e) => {
186
+ le(d, (e) => {
194
187
  if (e === null) {
195
- w.value = 0;
188
+ k.value = 0;
196
189
  return;
197
190
  }
198
- ne(() => {
199
- var o;
200
- const l = ((o = b.value) == null ? void 0 : o.offsetWidth) ?? 0;
201
- l !== w.value && (w.value = l);
191
+ ae(() => {
192
+ var r;
193
+ const l = ((r = x.value) == null ? void 0 : r.offsetWidth) ?? 0;
194
+ l !== k.value && (k.value = l);
202
195
  });
203
196
  });
204
- const H = (e) => {
205
- var c;
197
+ const j = (e) => {
198
+ var u;
206
199
  if (!L.value) return;
207
- const l = e.target, o = (c = l == null ? void 0 : l.dataset) == null ? void 0 : c.index;
208
- x.value = !1, v.value = o === void 0 ? null : Number(o);
209
- }, N = () => {
210
- v.value = null, x.value = !1;
211
- }, x = Y(!1), T = (e, l = !1) => {
212
- x.value = l, v.value = e;
213
- }, W = (e) => {
200
+ const l = e.target, r = (u = l == null ? void 0 : l.dataset) == null ? void 0 : u.index;
201
+ g.value = !1, d.value = r === void 0 ? null : Number(r);
202
+ }, B = () => {
203
+ d.value = null, g.value = !1;
204
+ }, g = W(!1), N = (e, l = !1) => {
205
+ g.value = l, d.value = e;
206
+ }, T = (e) => {
214
207
  if (!L.value || m.value.length === 0) return;
215
- const l = m.value.length - 1, o = v.value;
216
- let c = null;
217
- if (e.key === "ArrowRight") c = Math.min(l, (o ?? -1) + 1);
218
- else if (e.key === "ArrowLeft") c = Math.max(0, (o ?? l + 1) - 1);
219
- else if (e.key === "ArrowDown") c = Math.min(l, (o ?? -7) + 7);
220
- else if (e.key === "ArrowUp") c = Math.max(0, (o ?? 7) - 7);
208
+ const l = m.value.length - 1, r = d.value;
209
+ let u = null;
210
+ if (e.key === "ArrowRight") u = Math.min(l, (r ?? -1) + 1);
211
+ else if (e.key === "ArrowLeft") u = Math.max(0, (r ?? l + 1) - 1);
212
+ else if (e.key === "ArrowDown") u = Math.min(l, (r ?? -7) + 7);
213
+ else if (e.key === "ArrowUp") u = Math.max(0, (r ?? 7) - 7);
221
214
  else if (e.key === "Home") {
222
- const h = o ?? 0, f = m.value[h];
223
- c = f ? Math.max(0, h - f.rowIndex) : 0;
215
+ const h = r ?? 0, f = m.value[h];
216
+ u = f ? Math.max(0, h - f.rowIndex) : 0;
224
217
  } else if (e.key === "End") {
225
- const h = o ?? l, f = m.value[h];
226
- c = f ? Math.min(l, h + (6 - f.rowIndex)) : l;
218
+ const h = r ?? l, f = m.value[h];
219
+ u = f ? Math.min(l, h + (6 - f.rowIndex)) : l;
227
220
  } else if (e.key === "Escape") {
228
- N();
221
+ B();
229
222
  return;
230
223
  }
231
- c !== null && (e.preventDefault(), T(c, !0));
232
- }, r = () => {
233
- v.value === null && T(0, !0);
234
- }, y = a(() => x.value && v.value !== null ? `${E}-${v.value}` : void 0), u = a(() => t.ariaLabel ?? g("heatmap.gridLabel")), I = a(() => {
224
+ u !== null && (e.preventDefault(), N(u, !0));
225
+ }, a = () => {
226
+ d.value === null && N(0, !0);
227
+ }, v = o(() => g.value && d.value !== null ? `${S}-${d.value}` : void 0), I = o(() => t.ariaLabel ?? p("heatmap.gridLabel")), G = o(() => {
235
228
  const e = M.value;
236
- return !x.value || !e ? "" : $(e);
237
- }), J = (e, l) => {
229
+ return !g.value || !e ? "" : $(e);
230
+ }), Z = (e, l) => {
238
231
  D("cellClick", e, l);
239
- }, Q = ce(H), X = a(() => ({
240
- "--x-heatmap-cell-size": `${d.value}px`,
241
- gridTemplateRows: `repeat(7, ${d.value}px)`
232
+ }, J = ue(j), Q = o(() => ({
233
+ "--x-heatmap-cell-size": `${s.value}px`,
234
+ gridTemplateRows: `repeat(7, ${s.value}px)`
242
235
  }));
243
236
  return {
244
- t: g,
245
- className: C,
246
- mergedSize: A,
237
+ t: p,
238
+ className: z,
239
+ mergedSize: y,
247
240
  cells: m,
248
- rows: F,
249
- range: i,
250
- gridStyle: X,
251
- weekdayLabels: V,
252
- monthLabels: _,
241
+ range: c,
242
+ gridStyle: Q,
243
+ weekdayLabels: q,
244
+ monthLabels: F,
253
245
  activeCell: M,
254
246
  tooltipEnabled: L,
255
- tooltipStyle: B,
256
- cellColor: j,
247
+ tooltipStyle: O,
248
+ cellColor: V,
257
249
  cellLabel: $,
258
- handleCellClick: J,
259
- throttledMove: Q,
260
- clearActive: N,
261
- handleKeydown: W,
262
- handleGridFocus: r,
263
- activeDescendant: y,
264
- gridLabel: u,
265
- cellIdPrefix: E,
266
- liveText: I,
267
- isInRange: (e) => i.value ? xe(e, i.value.requestedStart, i.value.requestedEnd) : !0,
268
- colorPalette: R,
269
- slots: S,
270
- refs: s,
250
+ handleCellClick: Z,
251
+ throttledMove: J,
252
+ clearActive: B,
253
+ handleKeydown: T,
254
+ handleGridFocus: a,
255
+ activeDescendant: v,
256
+ gridLabel: I,
257
+ cellIdPrefix: S,
258
+ liveText: G,
259
+ isInRange: (e) => c.value ? ge(e, c.value.requestedStart, c.value.requestedEnd) : !0,
260
+ colorPalette: b,
261
+ slots: Y,
262
+ refs: i,
271
263
  setTooltipElement: (e) => {
272
- b.value = e;
264
+ x.value = e;
273
265
  }
274
266
  };
275
267
  },
@@ -277,133 +269,143 @@ const Z = 2, Ae = /* @__PURE__ */ ee({
277
269
  const {
278
270
  className: t,
279
271
  mergedSize: D,
280
- cells: S,
281
- rows: g,
282
- range: z,
272
+ cells: Y,
273
+ range: p,
283
274
  gridStyle: C,
284
- weekdayLabels: E,
285
- monthLabels: A,
286
- activeCell: d,
287
- tooltipEnabled: p,
288
- tooltipStyle: O,
275
+ weekdayLabels: z,
276
+ monthLabels: S,
277
+ activeCell: y,
278
+ tooltipEnabled: s,
279
+ tooltipStyle: E,
289
280
  cellColor: R,
290
- cellLabel: i,
291
- handleCellClick: P,
292
- throttledMove: q,
293
- clearActive: m,
294
- handleKeydown: F,
295
- handleGridFocus: V,
296
- activeDescendant: _,
297
- gridLabel: j,
281
+ cellLabel: b,
282
+ handleCellClick: c,
283
+ throttledMove: P,
284
+ clearActive: A,
285
+ handleKeydown: m,
286
+ handleGridFocus: q,
287
+ activeDescendant: F,
288
+ gridLabel: V,
298
289
  cellIdPrefix: $,
299
- liveText: v,
290
+ liveText: d,
300
291
  isInRange: L,
301
- colorPalette: b,
302
- slots: s,
303
- refs: w,
292
+ colorPalette: x,
293
+ slots: i,
294
+ refs: k,
304
295
  setTooltipElement: M,
305
- t: k
296
+ t: w
306
297
  } = this;
307
- if (!z) return null;
308
- const G = ue(this.loading) ? this.loading : {
298
+ if (!p) return null;
299
+ const _ = se(this.loading) ? this.loading : {
309
300
  loading: this.loading,
310
301
  dot: "color"
311
- }, B = p && d !== null, H = () => n("div", {
302
+ }, O = s && y !== null, j = () => n("div", {
312
303
  class: t.element("grid"),
313
304
  style: {
314
305
  ...C,
315
306
  "--x-heatmap-cell-gap": "var(--x-spacing-1)"
316
307
  },
317
- role: p ? "grid" : void 0,
318
- tabindex: p ? 0 : void 0,
319
- "aria-activedescendant": _,
320
- "aria-label": p ? j : void 0,
321
- onMousemove: q,
322
- onMouseleave: m,
323
- onFocus: V,
324
- onBlur: m,
325
- onKeydown: F
326
- }, [g.map((r, y) => r.map((u) => n("div", {
327
- key: u.timestamp,
328
- id: `${$}-${S.indexOf(u)}`,
329
- class: [t.element("cell"), t.modifier(`level-${u.level}`), {
330
- [t.is("out-of-range")]: !L(u)
308
+ role: s ? "grid" : void 0,
309
+ tabindex: s ? 0 : void 0,
310
+ "aria-activedescendant": F,
311
+ "aria-label": s ? V : void 0,
312
+ onMousemove: P,
313
+ onMouseleave: A,
314
+ onFocus: q,
315
+ onBlur: A,
316
+ onKeydown: m
317
+ }, [Y.map((a, v) => n("div", {
318
+ key: a.timestamp,
319
+ id: `${$}-${v}`,
320
+ class: [t.element("cell"), t.modifier(`level-${a.level}`), {
321
+ [t.is("out-of-range")]: !L(a)
331
322
  }],
332
323
  style: {
333
- backgroundColor: R(u)
324
+ backgroundColor: R(a),
325
+ /*
326
+ * 显式定位:位置由 rowIndex / colIndex 决定,不再依赖
327
+ * `grid-auto-flow` 的自动填充顺序。
328
+ *
329
+ * 这正是此前数据被整体转置的原因:cells 是列优先数组,
330
+ * CSS 按列填充,而渲染顺序曾是行优先,三者不一致时布局静默错位。
331
+ * 显式定位后 DOM 顺序对布局没有任何影响,与 tooltip 使用的
332
+ * 语义坐标天然一致(等价于 SVG 里用公式算 x/y)。
333
+ */
334
+ gridRow: a.rowIndex + 1,
335
+ gridColumn: a.colIndex + 1
334
336
  },
335
- "data-index": S.indexOf(u),
336
- title: B ? void 0 : i(u),
337
- onClick: (I) => P(u, I),
337
+ "data-index": v,
338
+ title: O ? void 0 : b(a),
339
+ onClick: (I) => c(a, I),
338
340
  role: "gridcell",
339
- "aria-label": i(u)
340
- }, []))), N()]), N = () => {
341
- if (!B || !d) return null;
342
- const r = {
343
- ...d,
344
- label: i(d)
341
+ "aria-label": b(a)
342
+ }, [])), B()]), B = () => {
343
+ if (!O || !y) return null;
344
+ const a = {
345
+ ...y,
346
+ label: b(y)
345
347
  };
346
348
  return n("div", {
347
349
  ref: M,
348
350
  class: [t.element("tooltip"), t.is("visible")],
349
- style: O,
351
+ style: E,
350
352
  role: "tooltip"
351
- }, [s.tooltip ? s.tooltip(r) : r.label]);
352
- }, x = () => {
353
- var r, y;
353
+ }, [i.tooltip ? i.tooltip(a) : a.label]);
354
+ }, g = () => {
355
+ var a, v;
354
356
  return this.showColorIndicator ? n("div", {
355
357
  class: t.element("indicator")
356
- }, [s.indicator ? s.indicator({
357
- colors: b
358
- }) : n(oe, null, [n("span", {
358
+ }, [i.indicator ? i.indicator({
359
+ colors: x
360
+ }) : n(ne, null, [n("span", {
359
361
  class: t.element("indicator-leading")
360
- }, [((r = s["indicator-leading-text"]) == null ? void 0 : r.call(s)) ?? k("heatmap.less")]), b.map((u, I) => n("span", {
361
- key: I,
362
+ }, [((a = i["indicator-leading-text"]) == null ? void 0 : a.call(i)) ?? w("heatmap.less")]), x.map((I, G) => n("span", {
363
+ key: G,
362
364
  class: t.element("indicator-swatch"),
363
365
  style: {
364
- backgroundColor: u
366
+ backgroundColor: I
365
367
  }
366
368
  }, null)), n("span", {
367
369
  class: t.element("indicator-trailing")
368
- }, [((y = s["indicator-trailing-text"]) == null ? void 0 : y.call(s)) ?? k("heatmap.more")])])]) : null;
369
- }, T = () => n("div", {
370
+ }, [((v = i["indicator-trailing-text"]) == null ? void 0 : v.call(i)) ?? w("heatmap.more")])])]) : null;
371
+ }, N = () => n("div", {
370
372
  class: t.element("body")
371
373
  }, [this.showWeekLabels && n("div", {
372
374
  class: t.element("week-labels"),
373
375
  style: C
374
- }, [E.map((r, y) => n("span", {
375
- key: y,
376
+ }, [z.map((a, v) => n("span", {
377
+ key: v,
376
378
  class: t.element("week-label"),
377
379
  style: {
378
- visibility: y % 2 === 1 ? "visible" : "hidden"
380
+ visibility: v % 2 === 1 ? "visible" : "hidden"
379
381
  }
380
- }, [r]))]), n("div", {
382
+ }, [a]))]), n("div", {
381
383
  class: t.element("grid-wrapper")
382
384
  }, [this.showMonthLabels && n("div", {
383
385
  class: t.element("month-labels"),
384
386
  style: C
385
- }, [A.map((r) => n("span", {
386
- key: r.text,
387
+ }, [S.map((a) => n("span", {
388
+ key: a.text,
387
389
  class: t.element("month-label"),
388
390
  style: {
389
- gridColumn: r.colIndex + 1
391
+ gridColumn: a.colIndex + 1
390
392
  }
391
- }, [r.text]))]), H()])]), W = p;
393
+ }, [a.text]))]), j()])]), T = s;
392
394
  return n("div", {
393
395
  class: [t.block, t.modifier(`size-${D}`)]
394
396
  }, [n("div", {
395
- role: !W && this.ariaLabel ? "img" : void 0,
396
- "aria-label": W ? void 0 : this.ariaLabel
397
- }, [n(de, G, {
398
- default: () => [T(), x(), s.footer && n("div", {
397
+ role: !T && this.ariaLabel ? "img" : void 0,
398
+ "aria-label": T ? void 0 : this.ariaLabel
399
+ }, [n(ce, _, {
400
+ default: () => [N(), g(), i.footer && n("div", {
399
401
  class: t.element("footer")
400
- }, [s.footer()])]
402
+ }, [i.footer()])]
401
403
  })]), n("span", {
402
404
  class: t.element("live"),
403
405
  "aria-live": "polite"
404
- }, [v])]);
406
+ }, [d])]);
405
407
  }
406
408
  });
407
409
  export {
408
- Ae as default
410
+ Ee as default
409
411
  };