mnfst 0.5.244 → 0.5.246

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.
@@ -2,7 +2,7 @@
2
2
 
3
3
  (function () {
4
4
 
5
- const MANIFEST_BUILD_VERSION = '0.5.244';
5
+ const MANIFEST_BUILD_VERSION = '0.5.246';
6
6
 
7
7
  /* Manifest Data Sources - Appwrite Integration */
8
8
 
@@ -190,7 +190,7 @@
190
190
  function normalize(raw, el, typeFromModifier) {
191
191
  const cfg = Object.assign({}, raw || {});
192
192
  cfg.type = (cfg.type || typeFromModifier || 'line').toLowerCase();
193
- cfg.height = num(cfg.height || el.getAttribute('height'), 240);
193
+ cfg.height = num(cfg.height || el.getAttribute('height') || undefined, cfg.type === 'map' ? 0 : 240); // maps size from width
194
194
  cfg.stacked = !!cfg.stacked;
195
195
  cfg.legend = cfg.legend !== false;
196
196
  cfg.axis = cfg.axis !== false;
@@ -199,6 +199,7 @@
199
199
  cfg.dataLabels = !!cfg.dataLabels; // static value labels off by default
200
200
  cfg.gap = num(cfg.gap, 1); // heatmap tile gutter in px
201
201
  cfg.labels = Array.isArray(cfg.labels) ? cfg.labels : [];
202
+ cfg.tickAnchor = cfg.tickAnchor === 'end' ? 'end' : 'start';
202
203
 
203
204
  // Series may be omitted in favor of a single `data` array. (A map's
204
205
  // `data` is a region→value object, left untouched for drawMap.)
@@ -507,9 +508,23 @@
507
508
  function drawCartesian(state, root, width, height) {
508
509
  const cfg = state.config, d3 = state.d3;
509
510
  const m = { top: 10, right: 14, bottom: 26, left: 40 };
510
- const iw = width - m.left - m.right;
511
- const ih = height - m.top - m.bottom;
512
511
  const labels = cfg.labels.length ? cfg.labels : cfg.series[0].data.map((_, i) => i + 1);
512
+ const marks = cfg.axis ? axisMarks(cfg, labels) : [];
513
+ let iw = width - m.left - m.right;
514
+ // Widen margins (each side capped at 20% of width) so end labels sit
515
+ // centred on their points; past the cap, ends clamp inside the frame.
516
+ if (marks.length) {
517
+ const f = marks[0], l = marks[marks.length - 1];
518
+ const hf = labelWidth(root, [f.label]) / 2, hl = labelWidth(root, [l.label]) / 2;
519
+ const base = { left: m.left, right: m.right }, cap = width * 0.2;
520
+ for (let pass = 0; pass < 2; pass++) {
521
+ const c = xScheme(cfg, d3, labels.length, iw).x;
522
+ m.left = Math.max(base.left, Math.min(cap, Math.ceil(hf - c(f.at)) + 1));
523
+ m.right = Math.max(base.right, Math.min(cap, Math.ceil(hl - (iw - c(l.at))) + 1));
524
+ iw = width - m.left - m.right;
525
+ }
526
+ }
527
+ const ih = height - m.top - m.bottom;
513
528
  const locale = (() => { try { return Alpine.store('locale')?.current || document.documentElement.lang || 'en'; } catch (_) { return 'en'; } })();
514
529
  const nf = (() => { try { return new Intl.NumberFormat(locale, { notation: 'compact', maximumFractionDigits: 1 }); } catch (_) { return { format: String }; } })();
515
530
 
@@ -551,41 +566,73 @@
551
566
  else if (cfg.type === 'scatter') drawScatter(state, plot, labels, iw, ih, y);
552
567
  else drawLines(state, plot, labels, iw, ih, y); // line + area
553
568
 
554
- // x axis labels (banded), thinned so they never overlap
569
+ // x axis labels, thinned by a whole step so they never overlap
555
570
  if (cfg.axis) {
556
- const xb = d3.scaleBand().domain(labels.map(String)).range([0, iw]).padding(0.1);
557
- xAxisTicks(root, labels, xb, iw, m).forEach(([i, cx]) => {
558
- text(plot, labels[i], { x: cx, y: ih + 16, 'text-anchor': 'middle' });
571
+ xAxisTicks(root, marks, xScheme(cfg, d3, labels.length, iw).x, iw, m, cfg.tickAnchor).forEach(([t, cx]) => {
572
+ text(plot, t.label, { x: cx, y: ih + 16, 'text-anchor': 'middle' });
559
573
  });
560
574
  }
561
575
  if (cfg.legend && cfg.series.length > 1) drawLegend(state);
562
576
  }
563
577
 
564
- // Indices + x of the category labels to draw: every Nth by measured width,
565
- // first and last kept where they fit, ends clamped inside the svg.
566
- function xAxisTicks(root, labels, xb, iw, m) {
578
+ // One index-keyed x scheme per chart (duplicate labels stay distinct), shared
579
+ // by marks and axis. Bars (and combo lines over bars) use band centres.
580
+ function xScheme(cfg, d3, n, w) {
581
+ const idx = Array.from({ length: n }, (_, i) => i);
582
+ const candle = cfg.type === 'candlestick' || cfg.type === 'ohlc';
583
+ const banded = candle || cfg.type === 'bar' || (cfg.type === 'combo' && cfg.series.some(s => { const t = seriesType(cfg, s); return t !== 'line' && t !== 'area'; }));
584
+ if (banded) {
585
+ const band = d3.scaleBand().domain(idx).range([0, w]).padding(candle ? 0.3 : 0.2);
586
+ const bw = band.bandwidth();
587
+ return { band, step: band.step(), x: i => band(i) + bw / 2 };
588
+ }
589
+ const p = d3.scalePoint().domain(idx).range([0, w]).padding(0.5);
590
+ return { step: typeof p.step === 'function' ? p.step() : w / Math.max(1, n), x: i => p(i) };
591
+ }
592
+
593
+ // Axis label candidates: author `ticks` ([index] or [{ at, label }]) or every label.
594
+ function axisMarks(cfg, labels) {
567
595
  const n = labels.length;
568
- if (!n) return [];
569
- const step = typeof xb.step === 'function' ? xb.step() : iw / n;
570
- const center = i => xb(String(labels[i])) + xb.bandwidth() / 2;
571
- const sample = n <= 60 ? labels : [labels[0], labels[n - 1]].concat(labels.slice().sort((a, b) => String(b).length - String(a).length).slice(0, 30));
572
- const minSep = labelWidth(root, sample) + 6;
573
- const every = Math.max(1, Math.ceil(minSep / step));
574
- const edgeHalf = {};
575
- const xAt = i => {
576
- if (i !== 0 && i !== n - 1) return center(i);
577
- if (edgeHalf[i] == null) edgeHalf[i] = labelWidth(root, [labels[i]]) / 2;
578
- return Math.min(Math.max(center(i), -m.left + edgeHalf[i]), iw + m.right - edgeHalf[i]);
579
- };
580
- const fits = (a, b) => Math.abs(xAt(b) - xAt(a)) >= minSep;
581
- const keep = [];
582
- for (let i = 0; i < n - 1; i += every) keep.push(i);
583
- if (n > 1) {
584
- while (keep.length > 1 && !fits(keep[keep.length - 1], n - 1)) keep.pop();
585
- if (!keep.length || fits(keep[keep.length - 1], n - 1)) keep.push(n - 1);
586
- } else keep.push(0);
587
- while (keep.length > 2 && !fits(keep[0], keep[1])) keep.splice(1, 1);
588
- return keep.map(i => [i, xAt(i)]);
596
+ if (!Array.isArray(cfg.ticks)) return labels.map((l, i) => ({ at: i, label: l }));
597
+ const seen = new Set();
598
+ return cfg.ticks
599
+ .map(t => t && typeof t === 'object' && !Array.isArray(t) ? { at: tickIndex(t.at), label: t.label } : { at: tickIndex(t) })
600
+ .filter(t => t.at >= 0 && t.at < n && !seen.has(t.at) && seen.add(t.at))
601
+ .map(t => ({ at: t.at, label: t.label != null ? t.label : labels[t.at] }))
602
+ .sort((a, b) => a.at - b.at);
603
+ }
604
+
605
+ function tickIndex(v) {
606
+ const ok = (typeof v === 'number' && isFinite(v)) || (typeof v === 'string' && v.trim() !== '' && isFinite(+v));
607
+ return ok ? Math.round(+v) : -1;
608
+ }
609
+
610
+ // Marks + x to draw: every s-th mark for the smallest whole step s whose
611
+ // measured labels don't overlap, counted from `tickAnchor` ('start' | 'end'); ends clamped inside the svg.
612
+ function xAxisTicks(root, marks, xc, iw, m, anchor) {
613
+ const N = marks.length;
614
+ if (!N) return [];
615
+ const GAP = 6;
616
+ let half;
617
+ if (N <= 60) {
618
+ const ws = labelWidths(root, marks.map(t => t.label));
619
+ half = k => ws[k] / 2;
620
+ } else {
621
+ const sample = [marks[0], marks[N - 1]].concat(marks.slice().sort((a, b) => String(b.label).length - String(a.label).length).slice(0, 30));
622
+ const w = labelWidth(root, sample.map(t => t.label));
623
+ half = () => w / 2;
624
+ }
625
+ const center = k => xc(marks[k].at);
626
+ const xAt = k => Math.min(Math.max(center(k), -m.left + half(k)), iw + m.right - half(k));
627
+ const end = anchor === 'end';
628
+ const pick = s => { const ks = []; for (let k = end ? N - 1 : 0; k >= 0 && k < N; k += end ? -s : s) ks.push(k); return end ? ks.reverse() : ks; };
629
+ const fits = ks => ks.every((k, j) => !j || xAt(k) - xAt(ks[j - 1]) >= half(k) + half(ks[j - 1]) + GAP);
630
+ for (let s = 1; s < N; s++) {
631
+ const ks = pick(s);
632
+ if (fits(ks)) return ks.map(k => [marks[k], xAt(k)]);
633
+ }
634
+ const k = end ? N - 1 : 0;
635
+ return [[marks[k], xAt(k)]];
589
636
  }
590
637
 
591
638
  // `list` lets combo pass a subset of series with their original indices
@@ -593,15 +640,14 @@
593
640
  // bar rects per index, highlighted from the dense hover columns.
594
641
  function drawLines(state, plot, labels, iw, ih, y, list, barsAt) {
595
642
  const cfg = state.config, d3 = state.d3;
596
- const x = d3.scalePoint().domain(labels.map(String)).range([0, iw]).padding(0.5);
643
+ const X = xScheme(cfg, d3, labels.length, iw), x = X.x, step = X.step;
597
644
  const curve = curveFor(d3, cfg.curve);
598
645
  const items = list || cfg.series.map((s, i) => ({ s, i, area: cfg.type === 'area' }));
599
646
  // Dense: no per-point dots; hover columns carry the tooltip instead.
600
- const step = typeof x.step === 'function' ? x.step() : iw / Math.max(1, labels.length);
601
647
  const dense = labels.length > 1 && step < 10;
602
648
  items.forEach(({ s, i: si, area }) => {
603
649
  const color = seriesColorVar(si, s.color);
604
- const points = labels.map((l, i) => [x(String(l)), y(num(s.data[i], 0))]);
650
+ const points = labels.map((l, i) => [x(i), y(num(s.data[i], 0))]);
605
651
  if (area) {
606
652
  const areaGen = d3.area().x(p => p[0]).y0(ih).y1(p => p[1]).curve(curve);
607
653
  const ap = svg('path', { class: 'area', d: areaGen(points), style: `--color-chart-color:${color}` }, plot);
@@ -623,7 +669,7 @@
623
669
  const g = svg('g', { class: 'hover' }, plot);
624
670
  const focus = items.map(({ s, i: si }) => svg('circle', { class: 'focus', r: 3, display: 'none', style: `--color-chart-color:${seriesColorVar(si, s.color)}` }, g));
625
671
  labels.forEach((l, i) => {
626
- const cx = x(String(l));
672
+ const cx = x(i);
627
673
  const hit = svg('rect', { class: 'hit', x: cx - step / 2, y: 0, width: step, height: ih, style: 'fill:transparent' }, g);
628
674
  applyTip(hit, cfg.series.map(s => (s.name ? s.name + ': ' : '') + num(s.data[i], 0)), cfg, tipHead(cfg, l));
629
675
  const bars = (barsAt && barsAt[i]) || [];
@@ -643,17 +689,17 @@
643
689
  // only applies to the full-series bar chart, not combo.
644
690
  function drawBars(state, plot, labels, iw, ih, y, list) {
645
691
  const cfg = state.config, d3 = state.d3;
646
- const x0 = d3.scaleBand().domain(labels.map(String)).range([0, iw]).padding(0.2);
692
+ const x0 = xScheme(cfg, d3, labels.length, iw).band;
647
693
  if (cfg.stacked && !list) {
648
694
  labels.forEach((l, i) => {
649
695
  let acc = 0;
650
696
  cfg.series.forEach((s, si) => {
651
697
  const v = num(s.data[i], 0);
652
698
  const yTop = y(acc + v), yBot = y(acc);
653
- const rect = svg('rect', { x: x0(String(l)), y: yTop, width: x0.bandwidth(), height: Math.max(0, yBot - yTop), style: `--color-chart-color:${seriesColorVar(si, s.color)}` }, plot);
699
+ const rect = svg('rect', { x: x0(i), y: yTop, width: x0.bandwidth(), height: Math.max(0, yBot - yTop), style: `--color-chart-color:${seriesColorVar(si, s.color)}` }, plot);
654
700
  applyTip(rect, (s.name ? s.name + ': ' : '') + v, cfg, tipHead(cfg, l));
655
701
  animateBar(rect, ih);
656
- if (cfg.dataLabels && (yBot - yTop) > 14) dataLabel(plot, v, x0(String(l)) + x0.bandwidth() / 2, (yTop + yBot) / 2, 'middle', 'central', 'inverse');
702
+ if (cfg.dataLabels && (yBot - yTop) > 14) dataLabel(plot, v, x0(i) + x0.bandwidth() / 2, (yTop + yBot) / 2, 'middle', 'central', 'inverse');
657
703
  acc += v;
658
704
  });
659
705
  });
@@ -666,11 +712,11 @@
666
712
  const s = o.s, si = o.i;
667
713
  const v = num(s.data[i], 0);
668
714
  const yy = y(Math.max(0, v));
669
- const rect = svg('rect', { x: x0(String(l)) + x1(String(k)), y: yy, width: x1.bandwidth(), height: Math.abs(y(v) - y(0)), style: `--color-chart-color:${seriesColorVar(si, s.color)}` }, plot);
715
+ const rect = svg('rect', { x: x0(i) + x1(String(k)), y: yy, width: x1.bandwidth(), height: Math.abs(y(v) - y(0)), style: `--color-chart-color:${seriesColorVar(si, s.color)}` }, plot);
670
716
  byIndex[i].push(rect);
671
717
  applyTip(rect, (s.name ? s.name + ': ' : '') + v, cfg, tipHead(cfg, l));
672
718
  animateBar(rect, ih);
673
- if (cfg.dataLabels) dataLabel(plot, v, x0(String(l)) + x1(String(k)) + x1.bandwidth() / 2, yy - 4);
719
+ if (cfg.dataLabels) dataLabel(plot, v, x0(i) + x1(String(k)) + x1.bandwidth() / 2, yy - 4);
674
720
  });
675
721
  });
676
722
  return byIndex;
@@ -694,10 +740,9 @@
694
740
  function drawCandles(state, plot, labels, iw, ih, y) {
695
741
  const cfg = state.config, d3 = state.d3;
696
742
  const cs = candleData(cfg.series[0].data);
697
- const x0 = d3.scaleBand().domain(labels.map(String)).range([0, iw]).padding(0.3);
698
- const bw = x0.bandwidth();
743
+ const X = xScheme(cfg, d3, labels.length, iw), bw = X.band.bandwidth();
699
744
  cs.forEach((c, i) => {
700
- const cx = x0(String(labels[i])) + bw / 2;
745
+ const cx = X.x(i);
701
746
  const up = c.c >= c.o;
702
747
  const g = svg('g', { class: up ? 'positive' : 'negative' }, plot);
703
748
  svg('line', { x1: cx, x2: cx, y1: y(c.h), y2: y(c.l) }, g);
@@ -715,14 +760,14 @@
715
760
 
716
761
  function drawScatter(state, plot, labels, iw, ih, y) {
717
762
  const cfg = state.config, d3 = state.d3;
718
- const x = d3.scalePoint().domain(labels.map(String)).range([0, iw]).padding(0.5);
763
+ const x = xScheme(cfg, d3, labels.length, iw).x;
719
764
  cfg.series.forEach((s, si) => {
720
765
  labels.forEach((l, i) => {
721
766
  const v = num(s.data[i], 0);
722
- const dot = svg('circle', { class: 'scatter', cx: x(String(l)), cy: y(v), r: 5, style: `--color-chart-color:${seriesColorVar(si, s.color)}` }, plot);
767
+ const dot = svg('circle', { class: 'scatter', cx: x(i), cy: y(v), r: 5, style: `--color-chart-color:${seriesColorVar(si, s.color)}` }, plot);
723
768
  applyTip(dot, (s.name ? s.name + ': ' : '') + v, cfg, tipHead(cfg, l));
724
769
  animate(dot, [{ opacity: 0, transform: 'scale(0)' }, { opacity: 1, transform: 'scale(1)' }], { duration: 350, delay: i * 25 });
725
- if (cfg.dataLabels) dataLabel(plot, v, x(String(l)), y(v) - 9);
770
+ if (cfg.dataLabels) dataLabel(plot, v, x(i), y(v) - 9);
726
771
  });
727
772
  });
728
773
  }
@@ -752,11 +797,13 @@
752
797
  // fallback). Sizes axis gutters to their content so charts sit balanced.
753
798
  function labelWidth(root, items, cls) {
754
799
  if (!items || !items.length) return 0;
800
+ return Math.max(...labelWidths(root, items, cls));
801
+ }
802
+ function labelWidths(root, items, cls) {
755
803
  const probe = svg('text', cls ? { class: cls, x: -9999, y: -9999 } : { x: -9999, y: -9999 }, root);
756
- let max = 0;
757
- for (const s of items) { probe.textContent = String(s); let w = 0; try { w = probe.getComputedTextLength(); } catch (_) { } if (!w) w = String(s).length * 7; if (w > max) max = w; }
804
+ const out = items.map(s => { probe.textContent = String(s == null ? '' : s); let w = 0; try { w = probe.getComputedTextLength(); } catch (_) { } return Math.ceil(w || String(s == null ? '' : s).length * 7); });
758
805
  root.removeChild(probe);
759
- return Math.ceil(max);
806
+ return out;
760
807
  }
761
808
 
762
809
  function drawGauge(state, root, width, height) {
@@ -2,7 +2,7 @@
2
2
 
3
3
  (function () {
4
4
 
5
- const MANIFEST_BUILD_VERSION = '0.5.244';
5
+ const MANIFEST_BUILD_VERSION = '0.5.246';
6
6
 
7
7
  /* Manifest Data Sources - Configuration */
8
8
 
@@ -444,6 +444,21 @@
444
444
  const d = iso ? D.fromISO(iso) : null;
445
445
  if (d) { this.selected = d; this.view = { y: d.getFullYear(), m: d.getMonth() + 1 }; }
446
446
  }
447
+ this.fitView();
448
+ },
449
+
450
+ // Initial view: shift so no panel lies past max's month (max last) or before min's.
451
+ fitView() {
452
+ const c = Math.max(1, Math.min(4, this.monthCount || 1));
453
+ const mi = d => d.getFullYear() * 12 + d.getMonth();
454
+ const sel = this.selectionMode === 'range' ? [this.rangeStart, this.rangeEnd || this.rangeStart]
455
+ : this.selectionMode === 'multiple' ? [this.selectedDates[0], this.selectedDates[this.selectedDates.length - 1]]
456
+ : [this.selected, this.selected];
457
+ const lo = sel[0] ? mi(sel[0]) : null, hi = sel[1] ? mi(sel[1]) : null;
458
+ let first = this.view.y * 12 + this.view.m - 1;
459
+ if (this.max) { const mx = mi(this.max); if (first + c - 1 > mx && (hi == null || hi <= mx)) first = mx - c + 1; }
460
+ if (this.min) { const mn = mi(this.min); if (first < mn && (lo == null || lo >= mn)) first = mn; }
461
+ this.view = { y: Math.floor(first / 12), m: first % 12 + 1 };
447
462
  },
448
463
 
449
464
  // Only the plugin-generated dropdown opens here; native showPopover() rides
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "manifest.appwrite.auth.js": "sha384-dsIWnH0qCAGSzAXMGrd8fvOrVl4tOIE6j5tC35JPTrQXZ56qLD36ARyvhR7vi3Id",
3
- "manifest.appwrite.data.js": "sha384-rC30q9rBFR/prFJ8rseKe2GBKoGEkfT6WLZaz5/lbdZzr+w6XDefgub/vyHgMc0A",
3
+ "manifest.appwrite.data.js": "sha384-jeOzobMZv42WhbZ48jzse5PHLexYXx7VhHR59IyT5E7e+On+O5zLHBje0D0mMRS3",
4
4
  "manifest.appwrite.presences.js": "sha384-JyVDWFT69b7Svq8J8p9tNWe2v9PZNQBY5UyhtOl1vnuHFAX0CRQ3MA9SiKq5wzNh",
5
5
  "manifest.bindings.js": "sha384-lPtMf8Ykaic9gNVZKq8Scia1881ZeMAyxer3WCIkUNwwrgzGBWto1OXADUwjvORF",
6
- "manifest.charts.js": "sha384-vjUCZ1MWu7c4rT/25Ct+nw95+OYUDZ2ouc9pw/gVOXrYZ+iW+LI0+lwvEhXmeMcZ",
6
+ "manifest.charts.js": "sha384-G+huD7UvjF9zDovdVVlh4I5X1Mq4oNnJfoFg4NnGdP3R/4Skq9hy5cGuHNYLxDYm",
7
7
  "manifest.chat.js": "sha384-88DfMfJLoi2oxclVD2iIMDkIGAExMXq5k47mekUredlicLaP3oZY5bwtwqs+TqDF",
8
8
  "manifest.code.js": "sha384-WGPlZE5Sp9GygUzJSmCdpLyYQTgvmEKc9BQS9Hmq1VTQwkqYJzPSWibHvPekcres",
9
9
  "manifest.color.js": "sha384-6Rv3LxyTcZNjrhtayQfqRdCx0uSZ4BiEbgEI98I62eTvp8Aw7LBIoNJ0Je1oktwL",
@@ -11,8 +11,8 @@
11
11
  "manifest.combobox.js": "sha384-MILTkrgsTzsYUjGo4ZuADqV85Xs4GmfB4xexfe9vbJMIoQTZ42W4zs+DTaVSPEsx",
12
12
  "manifest.components.js": "sha384-BUFA8h+G5Plr82sV7bKzO42pPoiRZwRQcKj1lt2ROFiKjjlkayU/vmkAFqEsdBA+",
13
13
  "manifest.computed.js": "sha384-GYML/e81gQfN+iDbqhPUgny8bINCyL+SrbTofoGk4hlCnLLjv51mCv42JMqq+ku5",
14
- "manifest.data.js": "sha384-PNN+BUdyhlBcNW822on2vOdWlq9tR7+sJHZppI25OfF0w1FIU7Jj9JBvwlhnvNTt",
15
- "manifest.datepicker.js": "sha384-XnbeURni2X91ozVzatQcSjYYIS4MoW12dBRJnYAGBr0nCQ624heH5s+xtQSpLZX6",
14
+ "manifest.data.js": "sha384-j9OVEFvsLbMITqA9Fu8f3KcvcGjNO2HE5FgW1tjxMwwUikRoubaEj8XhFH01aR4s",
15
+ "manifest.datepicker.js": "sha384-2XwFFnS4Bg5FDvG/v8x6KUvrjcBQEOYyTxynX2K/D/Qb3PI6+Y04lEwCnVDJLzwL",
16
16
  "manifest.defer.js": "sha384-pMRGqQKiEoJhpUcD40QeM4jEHau7sz9Xn/YCpiUamT1T4xJBZDSiYX+xnVrSWoq+",
17
17
  "manifest.device.js": "sha384-g+txmrEszYtuOvRelTp/c1wSNR2AtllVI9rx5NPPD7DzhVUnMNughonZykv2xlBW",
18
18
  "manifest.dropdowns.js": "sha384-acufUps7R9WjqB4XXW5JLACqniuHJGM4CNTb2rF4B2Q/jv7ZRmsAwfr2McanOz3s",
@@ -28,7 +28,7 @@
28
28
  "manifest.slides.js": "sha384-3uRTkyK9XPLmnxI2+igZlpi4EyPlU/7IHj5j3BZJJ2KN455vXyk99fiXV3feO/XY",
29
29
  "manifest.status.js": "sha384-MBO345ab7H6Uq1X2dZLt4Ge1Gcra+Z2qYApvlAeIV8CJhDDJrz2FPXpp+Kcp8zcM",
30
30
  "manifest.svg.js": "sha384-qr/8H9+2cIhSXNbRWRtIdrDlTOxKlNJqwEefHvCYoiBNW/kKhPTFa109Orv/EBnb",
31
- "manifest.sw.js": "sha384-pAkPjlgCScvndUFGJmMzi9XBRTIbUoUsiA8m1KPHCnYPMj1K0uR6mLy/998PxKc4",
31
+ "manifest.sw.js": "sha384-4xhlg8+MN2W32Yh+pz7Ns5wYZ6qo6Tq6yWCneEFpiUepjwpMOA4AOI5yTsxQqQ7X",
32
32
  "manifest.tabs.js": "sha384-OIIcyaQnGS0eNYk4zgAFEDboNYect7THvUd9D0V6nqCeDOxQcoiqLrBEmmWVTTet",
33
33
  "manifest.tailwind.js": "sha384-r/Jvqb+Piz21jUts10BbVAJoKkShOdJRVFpywyi4HPIi/OfOJq5CtPyWAPbdkMgt",
34
34
  "manifest.toasts.js": "sha384-3zkWxzw693pxg3QDFsoYCA3CqYaLKmBaMArULXODD66Utolpewl0OAeTB92aWUVv",
@@ -16,7 +16,7 @@
16
16
 
17
17
  // Build stamps the published version here; unstamped (dev) falls back to the
18
18
  // registration URL's `v`, then 'dev'.
19
- const BUILD_VERSION = '0.5.244';
19
+ const BUILD_VERSION = '0.5.246';
20
20
  const CACHE_PREFIX = 'mnfst-sw:';
21
21
  const META_CACHE = CACHE_PREFIX + 'meta';
22
22
  // Sized to hold a full precache.json warm-up (PRECACHE_MAX_ENTRIES server-side)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mnfst",
3
- "version": "0.5.244",
3
+ "version": "0.5.246",
4
4
  "private": false,
5
5
  "workspaces": [
6
6
  "templates/starter",