@magmonium/one 0.4.80 → 0.4.82
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/fesm2022/magmonium-one.mjs +450 -15
- package/fesm2022/magmonium-one.mjs.map +1 -1
- package/package.json +1 -1
- package/types/magmonium-one.d.ts +213 -2
|
@@ -8186,6 +8186,15 @@ function existsInMap(id, map) {
|
|
|
8186
8186
|
function notExistsInMap(id, map) {
|
|
8187
8187
|
return !existsInMap(id, map);
|
|
8188
8188
|
}
|
|
8189
|
+
function setInMap(id, data, map) {
|
|
8190
|
+
if (id === void 0 || data === void 0) return map ?? {};
|
|
8191
|
+
return Object.defineProperty({ ...map ?? {} }, id, {
|
|
8192
|
+
value: data,
|
|
8193
|
+
enumerable: true,
|
|
8194
|
+
writable: true,
|
|
8195
|
+
configurable: true
|
|
8196
|
+
});
|
|
8197
|
+
}
|
|
8189
8198
|
function createMap(elems, key = "id", elemMap = {}) {
|
|
8190
8199
|
return elems?.reduce((objectMap, element) => {
|
|
8191
8200
|
const id = String(getValue(element, key));
|
|
@@ -18005,15 +18014,14 @@ const toChartTime = (value) => {
|
|
|
18005
18014
|
const parsed = Date.parse(value);
|
|
18006
18015
|
return Number.isFinite(parsed) ? parsed : null;
|
|
18007
18016
|
};
|
|
18008
|
-
const readChartPoints = (rows, x, y) => {
|
|
18017
|
+
const readChartPoints = (rows, x, y, per) => {
|
|
18009
18018
|
const pairs = [];
|
|
18010
18019
|
for (const row of rows ?? []) {
|
|
18011
18020
|
if (row == null || typeof row !== "object") continue;
|
|
18012
18021
|
const record = row;
|
|
18013
18022
|
const t = toChartTime(record[x]);
|
|
18014
|
-
const
|
|
18015
|
-
|
|
18016
|
-
if (t === null || typeof v !== "number" || !Number.isFinite(v)) continue;
|
|
18023
|
+
const v = readChartValue(record, y, per);
|
|
18024
|
+
if (t === null || v === null) continue;
|
|
18017
18025
|
pairs.push([t, v]);
|
|
18018
18026
|
}
|
|
18019
18027
|
for (let i = 1; i < pairs.length; i++) if (pairs[i][0] < pairs[i - 1][0]) {
|
|
@@ -18025,6 +18033,46 @@ const readChartPoints = (rows, x, y) => {
|
|
|
18025
18033
|
y: pairs.map((p) => p[1])
|
|
18026
18034
|
};
|
|
18027
18035
|
};
|
|
18036
|
+
const toChartNumber = (raw) => {
|
|
18037
|
+
const v = typeof raw === "string" && raw.trim() ? Number(raw) : raw;
|
|
18038
|
+
return typeof v === "number" && Number.isFinite(v) ? v : null;
|
|
18039
|
+
};
|
|
18040
|
+
const readChartValue = (record, y, per) => {
|
|
18041
|
+
const v = toChartNumber(record[y]);
|
|
18042
|
+
if (v === null || !per) return v;
|
|
18043
|
+
const base = toChartNumber(record[per]);
|
|
18044
|
+
return base ? v / base * 100 : null;
|
|
18045
|
+
};
|
|
18046
|
+
const readChartCategories = (rows, x, y, per) => {
|
|
18047
|
+
const out = {
|
|
18048
|
+
x: [],
|
|
18049
|
+
y: []
|
|
18050
|
+
};
|
|
18051
|
+
for (const row of rows ?? []) {
|
|
18052
|
+
if (row == null || typeof row !== "object") continue;
|
|
18053
|
+
const record = row;
|
|
18054
|
+
const raw = record[x];
|
|
18055
|
+
const label = typeof raw === "string" || typeof raw === "number" ? String(raw).trim() : "";
|
|
18056
|
+
const v = readChartValue(record, y, per);
|
|
18057
|
+
if (!label || v === null) continue;
|
|
18058
|
+
out.x.push(label);
|
|
18059
|
+
out.y.push(v);
|
|
18060
|
+
}
|
|
18061
|
+
return out;
|
|
18062
|
+
};
|
|
18063
|
+
const mergeCategories = (series) => {
|
|
18064
|
+
const seen = /* @__PURE__ */ new Set();
|
|
18065
|
+
for (const { x } of series) for (const label of x) seen.add(label);
|
|
18066
|
+
return [...seen];
|
|
18067
|
+
};
|
|
18068
|
+
const columnPath = (x, width, y0, y1, radius = 4) => {
|
|
18069
|
+
const h = Math.abs(y0 - y1);
|
|
18070
|
+
const r = Math.max(0, Math.min(radius, h / 2, width / 2));
|
|
18071
|
+
const f = (v) => v.toFixed(1);
|
|
18072
|
+
const dir = y1 <= y0 ? 1 : -1;
|
|
18073
|
+
const right = x + width;
|
|
18074
|
+
return `M${f(x)} ${f(y0)}V${f(y1 + dir * r)}Q${f(x)} ${f(y1)} ${f(x + r)} ${f(y1)}H${f(right - r)}Q${f(right)} ${f(y1)} ${f(right)} ${f(y1 + dir * r)}V${f(y0)}Z`;
|
|
18075
|
+
};
|
|
18028
18076
|
const lowerBound = (times, x) => {
|
|
18029
18077
|
let lo = 0;
|
|
18030
18078
|
let hi = times.length;
|
|
@@ -18265,6 +18313,22 @@ const sampleChartPoints = (index, end = Date.UTC(2026, 0, 2)) => {
|
|
|
18265
18313
|
y
|
|
18266
18314
|
};
|
|
18267
18315
|
};
|
|
18316
|
+
const sampleChartCategories = (index) => ({
|
|
18317
|
+
x: [
|
|
18318
|
+
"2022",
|
|
18319
|
+
"2023",
|
|
18320
|
+
"2024",
|
|
18321
|
+
"2025",
|
|
18322
|
+
"2026"
|
|
18323
|
+
],
|
|
18324
|
+
y: [
|
|
18325
|
+
59,
|
|
18326
|
+
68,
|
|
18327
|
+
94,
|
|
18328
|
+
107,
|
|
18329
|
+
108
|
|
18330
|
+
].map((v) => v * .25 ** index)
|
|
18331
|
+
});
|
|
18268
18332
|
const MARGIN = {
|
|
18269
18333
|
top: 12,
|
|
18270
18334
|
right: 16,
|
|
@@ -18288,6 +18352,12 @@ const NAV_TOP = 4;
|
|
|
18288
18352
|
const GRIP_SLOP = 8;
|
|
18289
18353
|
const MIN_WINDOW_SHARE = .02;
|
|
18290
18354
|
const KEY_PAN_SHARE = .1;
|
|
18355
|
+
const STRIP_GAP = 40;
|
|
18356
|
+
const STRIP_HEIGHT = 72;
|
|
18357
|
+
const COLUMN_MAX = 40;
|
|
18358
|
+
const COLUMN_MIN = 4;
|
|
18359
|
+
const COLUMN_GAP = 2;
|
|
18360
|
+
const COLUMN_FILL = .6;
|
|
18291
18361
|
const optionalNumber = (value) => value == null || value === "" ? void 0 : numberAttribute(value, void 0);
|
|
18292
18362
|
const optionalBoolean = (value) => value == null ? void 0 : booleanAttribute(value);
|
|
18293
18363
|
let nextId$2 = 0;
|
|
@@ -18345,7 +18415,7 @@ var SectionChartComponent = class SectionChartComponent extends ConfigComponent
|
|
|
18345
18415
|
minimal = computed(() => (this.variant() ?? this.config()?.variant) === "minimal", ...ngDevMode ? [{ debugName: "minimal" }] : /* istanbul ignore next */ []);
|
|
18346
18416
|
margin = computed(() => this.minimal() ? MINIMAL_MARGIN : MARGIN, ...ngDevMode ? [{ debugName: "margin" }] : /* istanbul ignore next */ []);
|
|
18347
18417
|
showNavigator = computed(() => !this.minimal() && (this.navigator() ?? this.config()?.navigator ?? false), ...ngDevMode ? [{ debugName: "showNavigator" }] : /* istanbul ignore next */ []);
|
|
18348
|
-
canMeasure = computed(() => !this.minimal() && (this.measure() ?? this.config()?.measure ?? false), ...ngDevMode ? [{ debugName: "canMeasure" }] : /* istanbul ignore next */ []);
|
|
18418
|
+
canMeasure = computed(() => !this.minimal() && !this.categorical() && (this.measure() ?? this.config()?.measure ?? false), ...ngDevMode ? [{ debugName: "canMeasure" }] : /* istanbul ignore next */ []);
|
|
18349
18419
|
presets = computed(() => {
|
|
18350
18420
|
const authored = this.config()?.ranges;
|
|
18351
18421
|
const ids = (authored?.length ? authored : DEFAULT_SECTION_CHART_RANGES).filter(isPresetId).map((id) => id.trim().toLowerCase());
|
|
@@ -18370,7 +18440,158 @@ var SectionChartComponent = class SectionChartComponent extends ConfigComponent
|
|
|
18370
18440
|
};
|
|
18371
18441
|
});
|
|
18372
18442
|
}, ...ngDevMode ? [{ debugName: "painted" }] : /* istanbul ignore next */ []);
|
|
18443
|
+
categorical = computed(() => this.members().some(({ member }) => member.mark() === "column"), ...ngDevMode ? [{ debugName: "categorical" }] : /* istanbul ignore next */ []);
|
|
18444
|
+
categoryData = computed(() => {
|
|
18445
|
+
if (!this.categorical()) return {
|
|
18446
|
+
categories: [],
|
|
18447
|
+
series: []
|
|
18448
|
+
};
|
|
18449
|
+
const read = this.painted().map(({ member, color }) => ({
|
|
18450
|
+
member,
|
|
18451
|
+
color,
|
|
18452
|
+
label: member.label(),
|
|
18453
|
+
noTranslate: member.noTranslate(),
|
|
18454
|
+
params: member.params(),
|
|
18455
|
+
mark: member.mark(),
|
|
18456
|
+
panel: member.panel(),
|
|
18457
|
+
ratio: member.ratio(),
|
|
18458
|
+
...member.categories()
|
|
18459
|
+
}));
|
|
18460
|
+
const withData = read.filter((s) => s.x.length);
|
|
18461
|
+
const source = withData.length || !this.isDesignMode ? withData : read.map((s, i) => ({
|
|
18462
|
+
...s,
|
|
18463
|
+
...sampleChartCategories(i)
|
|
18464
|
+
}));
|
|
18465
|
+
const categories = mergeCategories(source);
|
|
18466
|
+
return {
|
|
18467
|
+
categories,
|
|
18468
|
+
series: source.map(({ x, y, ...s }) => ({
|
|
18469
|
+
...s,
|
|
18470
|
+
values: categories.map((c) => {
|
|
18471
|
+
const j = x.indexOf(c);
|
|
18472
|
+
return j < 0 ? null : y[j];
|
|
18473
|
+
})
|
|
18474
|
+
}))
|
|
18475
|
+
};
|
|
18476
|
+
}, ...ngDevMode ? [{ debugName: "categoryData" }] : /* istanbul ignore next */ []);
|
|
18477
|
+
hasStrip = computed(() => this.categoryData().series.some((s) => s.panel === "strip"), ...ngDevMode ? [{ debugName: "hasStrip" }] : /* istanbul ignore next */ []);
|
|
18478
|
+
svgHeight = computed(() => this.resolvedHeight() + (this.hasStrip() ? 112 : 0), ...ngDevMode ? [{ debugName: "svgHeight" }] : /* istanbul ignore next */ []);
|
|
18479
|
+
bandCentre = computed(() => {
|
|
18480
|
+
const band = this.plotWidth() / Math.max(1, this.categoryData().categories.length);
|
|
18481
|
+
const left = this.left();
|
|
18482
|
+
return (i) => left + band * (i + .5);
|
|
18483
|
+
}, ...ngDevMode ? [{ debugName: "bandCentre" }] : /* istanbul ignore next */ []);
|
|
18484
|
+
categoryExtent = computed(() => {
|
|
18485
|
+
const main = this.categoryData().series.filter((s) => s.panel === "main");
|
|
18486
|
+
const values = main.flatMap((s) => s.values.filter((v) => v !== null));
|
|
18487
|
+
if (!values.length) return null;
|
|
18488
|
+
return {
|
|
18489
|
+
...niceTicks(Math.min(0, ...values), Math.max(0, ...values)),
|
|
18490
|
+
ratio: main.every((s) => s.ratio)
|
|
18491
|
+
};
|
|
18492
|
+
}, ...ngDevMode ? [{ debugName: "categoryExtent" }] : /* istanbul ignore next */ []);
|
|
18493
|
+
categorySy = computed(() => {
|
|
18494
|
+
const extent = this.categoryExtent();
|
|
18495
|
+
const height = this.plotHeight();
|
|
18496
|
+
const top = this.top();
|
|
18497
|
+
return (v) => extent ? top + (1 - (v - extent.min) / (extent.max - extent.min)) * height : top + height;
|
|
18498
|
+
}, ...ngDevMode ? [{ debugName: "categorySy" }] : /* istanbul ignore next */ []);
|
|
18499
|
+
categoryView = computed(() => {
|
|
18500
|
+
const { categories, series } = this.categoryData();
|
|
18501
|
+
const extent = this.categoryExtent();
|
|
18502
|
+
if (!categories.length) return null;
|
|
18503
|
+
const n = categories.length;
|
|
18504
|
+
const band = this.plotWidth() / n;
|
|
18505
|
+
const centre = this.bandCentre();
|
|
18506
|
+
const sy = this.categorySy();
|
|
18507
|
+
const last = n - 1;
|
|
18508
|
+
const columnSeries = series.filter((s) => s.panel === "main" && s.mark === "column");
|
|
18509
|
+
const k = Math.max(1, columnSeries.length);
|
|
18510
|
+
const colWidth = Math.max(COLUMN_MIN, Math.min(COLUMN_MAX, (band * COLUMN_FILL - (k - 1) * COLUMN_GAP) / k));
|
|
18511
|
+
const group = k * colWidth + (k - 1) * COLUMN_GAP;
|
|
18512
|
+
const base = extent ? sy(0) : this.bottom();
|
|
18513
|
+
const columns = [];
|
|
18514
|
+
const labels = [];
|
|
18515
|
+
columnSeries.forEach((s, c) => {
|
|
18516
|
+
s.values.forEach((v, i) => {
|
|
18517
|
+
if (v === null) return;
|
|
18518
|
+
const x = centre(i) - group / 2 + c * (colWidth + COLUMN_GAP);
|
|
18519
|
+
columns.push({
|
|
18520
|
+
d: columnPath(x, colWidth, base, sy(v)),
|
|
18521
|
+
color: s.color
|
|
18522
|
+
});
|
|
18523
|
+
if (i === last) labels.push({
|
|
18524
|
+
x: x + colWidth / 2,
|
|
18525
|
+
y: Math.min(sy(v), base) - 6,
|
|
18526
|
+
text: this.formatShort(v, s.ratio)
|
|
18527
|
+
});
|
|
18528
|
+
});
|
|
18529
|
+
});
|
|
18530
|
+
const lineOf = (s, y) => {
|
|
18531
|
+
const dots = s.values.flatMap((v, i) => v === null ? [] : [{
|
|
18532
|
+
cx: centre(i),
|
|
18533
|
+
cy: y(v),
|
|
18534
|
+
v
|
|
18535
|
+
}]);
|
|
18536
|
+
return {
|
|
18537
|
+
d: dots.map((p, i) => `${i ? "L" : "M"}${p.cx.toFixed(1)} ${p.cy.toFixed(1)}`).join(""),
|
|
18538
|
+
dots
|
|
18539
|
+
};
|
|
18540
|
+
};
|
|
18541
|
+
return {
|
|
18542
|
+
columns,
|
|
18543
|
+
labels,
|
|
18544
|
+
lines: series.filter((s) => s.panel === "main" && s.mark === "line").map((s) => {
|
|
18545
|
+
const { d, dots } = lineOf(s, sy);
|
|
18546
|
+
const end = dots[dots.length - 1];
|
|
18547
|
+
return {
|
|
18548
|
+
d,
|
|
18549
|
+
color: s.color,
|
|
18550
|
+
endX: end?.cx ?? 0,
|
|
18551
|
+
endY: end?.cy ?? 0
|
|
18552
|
+
};
|
|
18553
|
+
}),
|
|
18554
|
+
strip: this.stripView(series, lineOf)
|
|
18555
|
+
};
|
|
18556
|
+
}, ...ngDevMode ? [{ debugName: "categoryView" }] : /* istanbul ignore next */ []);
|
|
18557
|
+
stripView = (series, lineOf) => {
|
|
18558
|
+
const strip = series.filter((s) => s.panel === "strip");
|
|
18559
|
+
const values = strip.flatMap((s) => s.values.filter((v) => v !== null));
|
|
18560
|
+
if (!values.length) return null;
|
|
18561
|
+
const lo = Math.min(...values);
|
|
18562
|
+
const hi = Math.max(...values);
|
|
18563
|
+
const pad = (hi - lo || Math.abs(hi) || 1) * .2;
|
|
18564
|
+
const ticks = niceTicks(lo - pad, hi + pad, 2);
|
|
18565
|
+
const top = this.bottom() + STRIP_GAP;
|
|
18566
|
+
const sy = (v) => top + (1 - (v - ticks.min) / (ticks.max - ticks.min || 1)) * STRIP_HEIGHT;
|
|
18567
|
+
const ratio = strip.every((s) => s.ratio);
|
|
18568
|
+
return {
|
|
18569
|
+
top,
|
|
18570
|
+
bottom: top + STRIP_HEIGHT,
|
|
18571
|
+
ticks: [ticks.min, ticks.max].map((v) => ({
|
|
18572
|
+
y: sy(v),
|
|
18573
|
+
label: this.formatShort(v, ratio)
|
|
18574
|
+
})),
|
|
18575
|
+
lines: strip.map((s) => {
|
|
18576
|
+
const { d, dots } = lineOf(s, sy);
|
|
18577
|
+
return {
|
|
18578
|
+
d,
|
|
18579
|
+
color: s.color,
|
|
18580
|
+
dots: dots.map((p) => ({
|
|
18581
|
+
...p,
|
|
18582
|
+
text: this.formatShort(p.v, s.ratio)
|
|
18583
|
+
}))
|
|
18584
|
+
};
|
|
18585
|
+
})
|
|
18586
|
+
};
|
|
18587
|
+
};
|
|
18588
|
+
categoryIndex = linkedSignal({
|
|
18589
|
+
...ngDevMode ? { debugName: "categoryIndex" } : /* istanbul ignore next */ {},
|
|
18590
|
+
source: this.categoryData,
|
|
18591
|
+
computation: () => null
|
|
18592
|
+
});
|
|
18373
18593
|
lines = computed(() => {
|
|
18594
|
+
if (this.categorical()) return [];
|
|
18374
18595
|
const palette = this.palette();
|
|
18375
18596
|
const drawn = this.painted().map(({ member, color }) => ({
|
|
18376
18597
|
...member.points(),
|
|
@@ -18427,7 +18648,7 @@ var SectionChartComponent = class SectionChartComponent extends ConfigComponent
|
|
|
18427
18648
|
top = computed(() => this.margin().top, ...ngDevMode ? [{ debugName: "top" }] : /* istanbul ignore next */ []);
|
|
18428
18649
|
right = computed(() => this.left() + this.plotWidth(), ...ngDevMode ? [{ debugName: "right" }] : /* istanbul ignore next */ []);
|
|
18429
18650
|
bottom = computed(() => this.top() + this.plotHeight(), ...ngDevMode ? [{ debugName: "bottom" }] : /* istanbul ignore next */ []);
|
|
18430
|
-
viewBox = computed(() => `0 0 ${this.width()} ${this.
|
|
18651
|
+
viewBox = computed(() => `0 0 ${this.width()} ${this.svgHeight()}`, ...ngDevMode ? [{ debugName: "viewBox" }] : /* istanbul ignore next */ []);
|
|
18431
18652
|
plotted = computed(() => {
|
|
18432
18653
|
const pct = this.percent();
|
|
18433
18654
|
const maxPoints = Math.max(3, Math.round(this.plotWidth() / 1.5));
|
|
@@ -18491,8 +18712,18 @@ var SectionChartComponent = class SectionChartComponent extends ConfigComponent
|
|
|
18491
18712
|
});
|
|
18492
18713
|
}, ...ngDevMode ? [{ debugName: "paths" }] : /* istanbul ignore next */ []);
|
|
18493
18714
|
yTicks = computed(() => {
|
|
18715
|
+
if (this.minimal()) return [];
|
|
18716
|
+
if (this.categorical()) {
|
|
18717
|
+
const extent = this.categoryExtent();
|
|
18718
|
+
const sy = this.categorySy();
|
|
18719
|
+
return (extent?.ticks ?? []).map((v) => ({
|
|
18720
|
+
y: sy(v),
|
|
18721
|
+
label: this.formatShort(v, extent?.ratio ?? false),
|
|
18722
|
+
zero: v === 0
|
|
18723
|
+
}));
|
|
18724
|
+
}
|
|
18494
18725
|
const extent = this.extent();
|
|
18495
|
-
if (!extent
|
|
18726
|
+
if (!extent) return [];
|
|
18496
18727
|
const sy = this.sy();
|
|
18497
18728
|
const pct = this.percent();
|
|
18498
18729
|
return extent.ticks.map((v) => ({
|
|
@@ -18502,8 +18733,16 @@ var SectionChartComponent = class SectionChartComponent extends ConfigComponent
|
|
|
18502
18733
|
}));
|
|
18503
18734
|
}, ...ngDevMode ? [{ debugName: "yTicks" }] : /* istanbul ignore next */ []);
|
|
18504
18735
|
xTicks = computed(() => {
|
|
18736
|
+
if (this.minimal()) return [];
|
|
18737
|
+
if (this.categorical()) {
|
|
18738
|
+
const centre = this.bandCentre();
|
|
18739
|
+
return this.categoryData().categories.map((label, i) => ({
|
|
18740
|
+
x: centre(i),
|
|
18741
|
+
label
|
|
18742
|
+
}));
|
|
18743
|
+
}
|
|
18505
18744
|
const extent = this.extent();
|
|
18506
|
-
if (!extent
|
|
18745
|
+
if (!extent) return [];
|
|
18507
18746
|
const sx = this.sx();
|
|
18508
18747
|
return timeTicks(extent.t0, extent.t1, this.plotWidth() / 80).map((tick) => ({
|
|
18509
18748
|
x: sx(tick.t),
|
|
@@ -18511,11 +18750,18 @@ var SectionChartComponent = class SectionChartComponent extends ConfigComponent
|
|
|
18511
18750
|
}));
|
|
18512
18751
|
}, ...ngDevMode ? [{ debugName: "xTicks" }] : /* istanbul ignore next */ []);
|
|
18513
18752
|
windowLabel = computed(() => {
|
|
18753
|
+
const { categories } = this.categoryData();
|
|
18754
|
+
if (categories.length) {
|
|
18755
|
+
const first = categories[0];
|
|
18756
|
+
const last = categories[categories.length - 1];
|
|
18757
|
+
return first === last ? first : `${first} – ${last}`;
|
|
18758
|
+
}
|
|
18514
18759
|
const span = this.drawnSpan();
|
|
18515
18760
|
return span ? `${this.dateFormat.format(span[0])} – ${this.dateFormat.format(span[1])}` : "";
|
|
18516
18761
|
}, ...ngDevMode ? [{ debugName: "windowLabel" }] : /* istanbul ignore next */ []);
|
|
18517
18762
|
periodLabel = computed(() => this.displayPeriod() || this.config()?.displayPeriod || this.windowLabel(), ...ngDevMode ? [{ debugName: "periodLabel" }] : /* istanbul ignore next */ []);
|
|
18518
18763
|
legendRows = computed(() => {
|
|
18764
|
+
if (this.categorical()) return this.categoryLegendRows();
|
|
18519
18765
|
const changes = /* @__PURE__ */ new Map();
|
|
18520
18766
|
for (const line of this.windowed()) if (line.member) changes.set(line.member, chartChange(line.y));
|
|
18521
18767
|
return new Map(this.painted().map(({ member, color }) => [member, {
|
|
@@ -18575,7 +18821,68 @@ var SectionChartComponent = class SectionChartComponent extends ConfigComponent
|
|
|
18575
18821
|
}
|
|
18576
18822
|
};
|
|
18577
18823
|
}, ...ngDevMode ? [{ debugName: "measureView" }] : /* istanbul ignore next */ []);
|
|
18824
|
+
categoryLegendRows = () => {
|
|
18825
|
+
const series = new Map(this.categoryData().series.map((s) => [s.member, s]));
|
|
18826
|
+
return new Map(this.painted().map(({ member, color }) => {
|
|
18827
|
+
const s = series.get(member);
|
|
18828
|
+
return [member, {
|
|
18829
|
+
color,
|
|
18830
|
+
...s ? this.categoryChange(s.values, s.ratio, s.values.length - 1) : this.signedChange(null)
|
|
18831
|
+
}];
|
|
18832
|
+
}));
|
|
18833
|
+
};
|
|
18834
|
+
categoryChange = (values, ratio, i) => {
|
|
18835
|
+
let last = i;
|
|
18836
|
+
while (last >= 0 && values[last] === null) last--;
|
|
18837
|
+
let prev = last - 1;
|
|
18838
|
+
while (prev >= 0 && values[prev] === null) prev--;
|
|
18839
|
+
const to = values[last];
|
|
18840
|
+
const from = values[prev];
|
|
18841
|
+
if (last < 0 || prev < 0 || to == null || from == null) return this.signedChange(null);
|
|
18842
|
+
if (ratio) return this.signedPoints(to - from);
|
|
18843
|
+
return this.signedChange(from ? (to / from - 1) * 100 : null);
|
|
18844
|
+
};
|
|
18845
|
+
categoryHover = computed(() => {
|
|
18846
|
+
const index = this.categoryIndex();
|
|
18847
|
+
const { categories, series } = this.categoryData();
|
|
18848
|
+
if (index === null || !categories.length || this.minimal()) return null;
|
|
18849
|
+
const i = Math.min(index, categories.length - 1);
|
|
18850
|
+
const centre = this.bandCentre();
|
|
18851
|
+
const band = this.plotWidth() / categories.length;
|
|
18852
|
+
const sy = this.categorySy();
|
|
18853
|
+
const strip = this.categoryView()?.strip;
|
|
18854
|
+
const x = centre(i);
|
|
18855
|
+
const rows = series.flatMap((s) => {
|
|
18856
|
+
const v = s.values[i];
|
|
18857
|
+
if (v === null) return [];
|
|
18858
|
+
const line = s.panel === "main" && s.mark === "line";
|
|
18859
|
+
const change = this.categoryChange(s.values, s.ratio, i);
|
|
18860
|
+
return [{
|
|
18861
|
+
color: s.color,
|
|
18862
|
+
label: s.label,
|
|
18863
|
+
noTranslate: s.noTranslate,
|
|
18864
|
+
params: s.params,
|
|
18865
|
+
v,
|
|
18866
|
+
value: s.ratio ? this.formatShort(v, true) : this.numberFormat.format(v),
|
|
18867
|
+
sub: change.change === "—" ? "" : change.change,
|
|
18868
|
+
cx: line ? x : null,
|
|
18869
|
+
cy: line ? sy(v) : null
|
|
18870
|
+
}];
|
|
18871
|
+
});
|
|
18872
|
+
return {
|
|
18873
|
+
x,
|
|
18874
|
+
title: categories[i],
|
|
18875
|
+
rows,
|
|
18876
|
+
flip: x > this.width() - TOOLTIP_ROOM,
|
|
18877
|
+
band: {
|
|
18878
|
+
x: x - band / 2,
|
|
18879
|
+
width: band,
|
|
18880
|
+
bottom: strip?.bottom ?? this.bottom()
|
|
18881
|
+
}
|
|
18882
|
+
};
|
|
18883
|
+
}, ...ngDevMode ? [{ debugName: "categoryHover" }] : /* istanbul ignore next */ []);
|
|
18578
18884
|
hover = computed(() => {
|
|
18885
|
+
if (this.categorical()) return this.categoryHover();
|
|
18579
18886
|
const index = this.hoverIndex();
|
|
18580
18887
|
const times = this.times();
|
|
18581
18888
|
if (index === null || !times.length || this.minimal()) return null;
|
|
@@ -18603,7 +18910,8 @@ var SectionChartComponent = class SectionChartComponent extends ConfigComponent
|
|
|
18603
18910
|
x,
|
|
18604
18911
|
title: this.dateFormat.format(t),
|
|
18605
18912
|
rows,
|
|
18606
|
-
flip: x > this.width() - TOOLTIP_ROOM
|
|
18913
|
+
flip: x > this.width() - TOOLTIP_ROOM,
|
|
18914
|
+
band: null
|
|
18607
18915
|
};
|
|
18608
18916
|
}, ...ngDevMode ? [{ debugName: "hover" }] : /* istanbul ignore next */ []);
|
|
18609
18917
|
navScale = computed(() => {
|
|
@@ -18651,6 +18959,24 @@ var SectionChartComponent = class SectionChartComponent extends ConfigComponent
|
|
|
18651
18959
|
navTop = NAV_TOP;
|
|
18652
18960
|
navViewBox = computed(() => `0 0 ${this.width()} ${NAV_HEIGHT}`, ...ngDevMode ? [{ debugName: "navViewBox" }] : /* istanbul ignore next */ []);
|
|
18653
18961
|
table = computed(() => {
|
|
18962
|
+
if (this.categorical()) {
|
|
18963
|
+
const { categories, series } = this.categoryData();
|
|
18964
|
+
return {
|
|
18965
|
+
columns: series.map((s) => ({
|
|
18966
|
+
label: s.label,
|
|
18967
|
+
noTranslate: s.noTranslate,
|
|
18968
|
+
params: s.params
|
|
18969
|
+
})),
|
|
18970
|
+
rows: categories.map((date, i) => ({
|
|
18971
|
+
date,
|
|
18972
|
+
cells: series.map((s) => {
|
|
18973
|
+
const v = s.values[i];
|
|
18974
|
+
if (v === null) return "—";
|
|
18975
|
+
return s.ratio ? this.formatShort(v, true) : this.numberFormat.format(v);
|
|
18976
|
+
})
|
|
18977
|
+
})).reverse()
|
|
18978
|
+
};
|
|
18979
|
+
}
|
|
18654
18980
|
const plotted = this.plotted();
|
|
18655
18981
|
const pct = this.percent();
|
|
18656
18982
|
const rows = [...plotted.reduce((best, p) => !best || p.line.t.length > best.line.t.length ? p : best, null)?.ds.t ?? []].reverse().map((t) => ({
|
|
@@ -18788,6 +19114,15 @@ var SectionChartComponent = class SectionChartComponent extends ConfigComponent
|
|
|
18788
19114
|
return times[nearestIndex(times, t)];
|
|
18789
19115
|
};
|
|
18790
19116
|
onPointerMove = (event) => {
|
|
19117
|
+
if (this.categorical()) {
|
|
19118
|
+
const count = this.categoryData().categories.length;
|
|
19119
|
+
if (!count) return;
|
|
19120
|
+
const rect = event.currentTarget.getBoundingClientRect();
|
|
19121
|
+
const px = event.clientX - rect.left - this.left();
|
|
19122
|
+
if (px < 0 || px > this.plotWidth()) return;
|
|
19123
|
+
this.categoryIndex.set(Math.min(count - 1, Math.floor(px / this.plotWidth() * count)));
|
|
19124
|
+
return;
|
|
19125
|
+
}
|
|
18791
19126
|
const t = this.plotTime(event);
|
|
18792
19127
|
if (t === null) return;
|
|
18793
19128
|
const measured = this.measured();
|
|
@@ -18815,9 +19150,37 @@ var SectionChartComponent = class SectionChartComponent extends ConfigComponent
|
|
|
18815
19150
|
if (measured && measured[0] === measured[1]) this.measured.set(null);
|
|
18816
19151
|
};
|
|
18817
19152
|
clearHover = () => {
|
|
19153
|
+
this.categoryIndex.set(null);
|
|
18818
19154
|
if (!this.measuring) this.hoverIndex.set(null);
|
|
18819
19155
|
};
|
|
19156
|
+
onCategoryKeydown = (event) => {
|
|
19157
|
+
const count = this.categoryData().categories.length;
|
|
19158
|
+
if (!count) return;
|
|
19159
|
+
const current = this.categoryIndex();
|
|
19160
|
+
let next;
|
|
19161
|
+
switch (event.key) {
|
|
19162
|
+
case "ArrowLeft":
|
|
19163
|
+
next = Math.max(0, (current ?? count) - 1);
|
|
19164
|
+
break;
|
|
19165
|
+
case "ArrowRight":
|
|
19166
|
+
next = Math.min(count - 1, (current ?? -1) + 1);
|
|
19167
|
+
break;
|
|
19168
|
+
case "Home":
|
|
19169
|
+
next = 0;
|
|
19170
|
+
break;
|
|
19171
|
+
case "End":
|
|
19172
|
+
next = count - 1;
|
|
19173
|
+
break;
|
|
19174
|
+
case "Escape":
|
|
19175
|
+
next = null;
|
|
19176
|
+
break;
|
|
19177
|
+
default: return;
|
|
19178
|
+
}
|
|
19179
|
+
event.preventDefault();
|
|
19180
|
+
this.categoryIndex.set(next);
|
|
19181
|
+
};
|
|
18820
19182
|
onKeydown = (event) => {
|
|
19183
|
+
if (this.categorical()) return this.onCategoryKeydown(event);
|
|
18821
19184
|
const times = this.times();
|
|
18822
19185
|
const count = times.length;
|
|
18823
19186
|
if (!count) return;
|
|
@@ -18874,6 +19237,24 @@ var SectionChartComponent = class SectionChartComponent extends ConfigComponent
|
|
|
18874
19237
|
trend
|
|
18875
19238
|
};
|
|
18876
19239
|
};
|
|
19240
|
+
signedPoints = (diff) => {
|
|
19241
|
+
const trend = diff > 0 ? "up" : diff < 0 ? "down" : "flat";
|
|
19242
|
+
return {
|
|
19243
|
+
change: `${trend === "up" ? "▲" : trend === "down" ? "▼" : "■"} ${this.pointsFormat.format(diff)} pp`,
|
|
19244
|
+
trend
|
|
19245
|
+
};
|
|
19246
|
+
};
|
|
19247
|
+
pointsFormat = new Intl.NumberFormat(this.locale, {
|
|
19248
|
+
signDisplay: "exceptZero",
|
|
19249
|
+
minimumFractionDigits: 1,
|
|
19250
|
+
maximumFractionDigits: 1
|
|
19251
|
+
});
|
|
19252
|
+
levelFormat = new Intl.NumberFormat(this.locale, {
|
|
19253
|
+
style: "percent",
|
|
19254
|
+
minimumFractionDigits: 1,
|
|
19255
|
+
maximumFractionDigits: 1
|
|
19256
|
+
});
|
|
19257
|
+
formatShort = (v, ratio) => ratio ? this.levelFormat.format(v / 100) : this.compactFormat.format(v);
|
|
18877
19258
|
percentFormats = /* @__PURE__ */ new Map();
|
|
18878
19259
|
formatPercent = (v, digits) => {
|
|
18879
19260
|
let format = this.percentFormats.get(digits);
|
|
@@ -18984,8 +19365,8 @@ var SectionChartComponent = class SectionChartComponent extends ConfigComponent
|
|
|
18984
19365
|
}],
|
|
18985
19366
|
usesInheritance: true,
|
|
18986
19367
|
ngImport: i0,
|
|
18987
|
-
template: "<div class=\"m-section-chart__top\">\n <!-- Each series draws its own legend row: the row is the series' element,\n which is what the editor's Canvas selects it by. -->\n <div class=\"m-section-chart__legend\" role=\"list\">\n <ng-content />\n </div>\n @if (periodLabel(); as label) {\n <span class=\"m-section-chart__window\">{{ label }}</span>\n }\n</div>\n\n<div class=\"m-section-chart__plot\">\n <svg\n class=\"m-section-chart__svg\"\n role=\"img\"\n tabindex=\"0\"\n [class.is-measurable]=\"canMeasure()\"\n [attr.width]=\"width()\"\n [attr.height]=\"resolvedHeight()\"\n [attr.viewBox]=\"viewBox()\"\n [attr.aria-label]=\"windowLabel()\"\n [attr.aria-describedby]=\"tableId\"\n (pointerdown)=\"onPlotDown($event)\"\n (pointermove)=\"onPointerMove($event)\"\n (pointerup)=\"onPlotUp()\"\n (pointercancel)=\"onPlotUp()\"\n (pointerleave)=\"clearHover()\"\n (blur)=\"clearHover()\"\n (keydown)=\"onKeydown($event)\"\n >\n @for (tick of yTicks(); track $index) {\n <svg:line\n class=\"m-section-chart__grid\"\n [class.m-section-chart__grid--zero]=\"tick.zero\"\n [attr.x1]=\"left()\"\n [attr.x2]=\"right()\"\n [attr.y1]=\"tick.y\"\n [attr.y2]=\"tick.y\"\n />\n <svg:text\n class=\"m-section-chart__tick\"\n text-anchor=\"end\"\n [attr.x]=\"left() - 8\"\n [attr.y]=\"tick.y + 4\"\n >\n {{ tick.label }}\n </svg:text>\n }\n @if (!minimal()) {\n <svg:line\n class=\"m-section-chart__axis\"\n [attr.x1]=\"left()\"\n [attr.x2]=\"right()\"\n [attr.y1]=\"bottom()\"\n [attr.y2]=\"bottom()\"\n />\n }\n @for (tick of xTicks(); track $index) {\n <svg:text\n class=\"m-section-chart__tick\"\n text-anchor=\"middle\"\n [attr.x]=\"tick.x\"\n [attr.y]=\"bottom() + 18\"\n >\n {{ tick.label }}\n </svg:text>\n }\n @if (measureView(); as band) {\n <svg:rect\n class=\"m-section-chart__band\"\n [attr.x]=\"band.start\"\n [attr.y]=\"top()\"\n [attr.width]=\"band.width\"\n [attr.height]=\"bottom() - top()\"\n />\n <svg:line\n class=\"m-section-chart__band-edge\"\n [attr.x1]=\"band.start\"\n [attr.x2]=\"band.start\"\n [attr.y1]=\"top()\"\n [attr.y2]=\"bottom()\"\n />\n <svg:line\n class=\"m-section-chart__band-edge\"\n [attr.x1]=\"band.start + band.width\"\n [attr.x2]=\"band.start + band.width\"\n [attr.y1]=\"top()\"\n [attr.y2]=\"bottom()\"\n />\n }\n @for (path of paths(); track $index) {\n @if (path.area; as area) {\n <svg:defs>\n <svg:linearGradient [attr.id]=\"path.fillId\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <svg:stop offset=\"0\" stop-opacity=\"0.22\" [attr.stop-color]=\"path.color\" />\n <svg:stop offset=\"1\" stop-opacity=\"0\" [attr.stop-color]=\"path.color\" />\n </svg:linearGradient>\n </svg:defs>\n <svg:path class=\"m-section-chart__area\" [attr.d]=\"area\" [attr.fill]=\"path.fill\" />\n }\n }\n @for (path of paths(); track $index) {\n <svg:path\n class=\"m-section-chart__line\"\n [attr.d]=\"path.d\"\n [style.stroke]=\"path.color\"\n />\n }\n @if (!minimal()) {\n @for (path of paths(); track $index) {\n <svg:circle\n class=\"m-section-chart__dot\"\n r=\"4\"\n [attr.cx]=\"path.endX\"\n [attr.cy]=\"path.endY\"\n [style.fill]=\"path.color\"\n />\n }\n }\n @if (hover(); as h) {\n <svg:line\n class=\"m-section-chart__cross\"\n [attr.x1]=\"h.x\"\n [attr.x2]=\"h.x\"\n [attr.y1]=\"top()\"\n [attr.y2]=\"bottom()\"\n />\n @for (row of h.rows; track $index) {\n <svg:circle\n class=\"m-section-chart__dot\"\n r=\"4\"\n [attr.cx]=\"row.cx\"\n [attr.cy]=\"row.cy\"\n [style.fill]=\"row.color\"\n />\n }\n }\n </svg>\n\n @if (hover(); as h) {\n <div\n class=\"m-section-chart__tip\"\n role=\"status\"\n [class.m-section-chart__tip--flip]=\"h.flip\"\n [style.left.px]=\"h.x\"\n >\n <span class=\"m-section-chart__tip-title\">{{ h.title }}</span>\n @for (row of h.rows; track $index) {\n <span class=\"m-section-chart__tip-row\">\n <span class=\"m-section-chart__tip-key\" [style.background]=\"row.color\"></span>\n <span class=\"m-section-chart__tip-value\">{{ row.value }}</span>\n <span class=\"m-section-chart__tip-label\">{{\n row.noTranslate ? row.label : (row.label | translate: row.params)\n }}</span>\n <span class=\"m-section-chart__tip-sub\">{{ row.sub }}</span>\n </span>\n }\n </div>\n }\n\n @if (measureView()?.card; as card) {\n <div\n class=\"m-section-chart__measure\"\n role=\"status\"\n [class.m-section-chart__measure--flip]=\"card.flip\"\n [style.left.px]=\"card.x\"\n >\n <span class=\"m-section-chart__tip-title\">{{ card.title }}</span>\n @for (row of card.rows; track $index) {\n <span class=\"m-section-chart__tip-row\">\n <span class=\"m-section-chart__tip-key\" [style.background]=\"row.color\"></span>\n <span class=\"m-section-chart__tip-value\">{{ row.value }}</span>\n <span class=\"m-section-chart__tip-label\">{{\n row.noTranslate ? row.label : (row.label | translate: row.params)\n }}</span>\n <span class=\"m-section-chart__tip-sub\">{{ row.sub }}</span>\n </span>\n }\n </div>\n }\n</div>\n\n@if (presets().length > 1 && !minimal()) {\n <div class=\"m-section-chart__presets\">\n <m-section-toggle\n [items]=\"presets()\"\n [selectedIndex]=\"presetIndex()\"\n [border]=\"false\"\n (action)=\"selectPreset($event)\"\n >\n <ng-template [mSectionToggleItem]=\"presets()\" let-preset>\n <span class=\"m-section-chart__preset\">{{ preset.label }}</span>\n </ng-template>\n </m-section-toggle>\n </div>\n}\n\n@if (navigatorView(); as nav) {\n <svg\n class=\"m-section-chart__navigator\"\n role=\"slider\"\n tabindex=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [attr.aria-label]=\"'zoom' | translate\"\n [attr.aria-valuenow]=\"nav.position\"\n [attr.aria-valuetext]=\"windowLabel()\"\n [attr.width]=\"width()\"\n [attr.height]=\"navHeight\"\n [attr.viewBox]=\"navViewBox()\"\n (pointerdown)=\"onNavigatorDown($event)\"\n (pointermove)=\"onNavigatorMove($event)\"\n (pointerup)=\"onNavigatorUp()\"\n (pointercancel)=\"onNavigatorUp()\"\n (keydown)=\"onNavigatorKeydown($event)\"\n >\n <svg:path class=\"m-section-chart__nav-area\" [attr.d]=\"nav.area\" />\n <svg:path class=\"m-section-chart__nav-line\" [attr.d]=\"nav.d\" />\n <svg:line\n class=\"m-section-chart__axis\"\n [attr.x1]=\"left()\"\n [attr.x2]=\"right()\"\n [attr.y1]=\"nav.base\"\n [attr.y2]=\"nav.base\"\n />\n @for (tick of nav.ticks; track $index) {\n <svg:text\n class=\"m-section-chart__tick\"\n text-anchor=\"middle\"\n [attr.x]=\"tick.x\"\n [attr.y]=\"nav.base + 15\"\n >\n {{ tick.label }}\n </svg:text>\n }\n <svg:rect\n class=\"m-section-chart__nav-dim\"\n [attr.x]=\"left()\"\n [attr.y]=\"navTop\"\n [attr.width]=\"nav.start - left()\"\n [attr.height]=\"nav.base - navTop\"\n />\n <svg:rect\n class=\"m-section-chart__nav-dim\"\n [attr.x]=\"nav.end\"\n [attr.y]=\"navTop\"\n [attr.width]=\"right() - nav.end\"\n [attr.height]=\"nav.base - navTop\"\n />\n <svg:rect\n class=\"m-section-chart__nav-window\"\n [attr.x]=\"nav.start\"\n [attr.y]=\"navTop\"\n [attr.width]=\"nav.end - nav.start\"\n [attr.height]=\"nav.base - navTop\"\n />\n <svg:rect\n class=\"m-section-chart__nav-handle\"\n rx=\"2\"\n width=\"6\"\n height=\"20\"\n [attr.x]=\"nav.start - 3\"\n [attr.y]=\"(nav.base + navTop) / 2 - 10\"\n />\n <svg:rect\n class=\"m-section-chart__nav-handle\"\n rx=\"2\"\n width=\"6\"\n height=\"20\"\n [attr.x]=\"nav.end - 3\"\n [attr.y]=\"(nav.base + navTop) / 2 - 10\"\n />\n </svg>\n}\n\n<table class=\"m-section-chart__table\" [id]=\"tableId\">\n <thead>\n <tr>\n <th scope=\"col\">{{ 'date' | translate }}</th>\n @for (column of table().columns; track $index) {\n <th scope=\"col\">\n {{ column.noTranslate ? column.label : (column.label | translate: column.params) }}\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of table().rows; track $index) {\n <tr>\n <td>{{ row.date }}</td>\n @for (cell of row.cells; track $index) {\n <td>{{ cell }}</td>\n }\n </tr>\n }\n </tbody>\n</table>\n",
|
|
18988
|
-
styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;position:relative;width:100%;min-width:0}.m-section-chart__top{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.5rem 1rem;margin-bottom:.5rem}.m-section-chart__legend{display:grid;gap:.15rem;min-width:0}.m-section-chart__tip-key{display:inline-block;width:.75rem;height:2px;border-radius:1px}.m-section-chart__window{color:var(--m-text-tertiary);font-size:.8rem}:host(.m-section-chart--minimal) .m-section-chart__svg{cursor:default}:host(.m-section-chart--minimal) .m-section-chart__line{stroke-width:2.25}.m-section-chart__area{stroke:none}.m-section-chart__plot{position:relative}.m-section-chart__svg{display:block;overflow:visible}.m-section-chart__svg:focus{outline:none}.m-section-chart__svg:focus-visible{outline:2px solid var(--m-focus);outline-offset:4px;border-radius:4px}.m-section-chart__svg.is-measurable{cursor:crosshair;touch-action:none;-webkit-user-select:none;user-select:none}.m-section-chart__band{fill:var(--m-text);opacity:.06}.m-section-chart__band-edge{stroke:var(--m-text-secondary);stroke-width:1}.m-section-chart__grid{stroke:var(--m-text-septenary);stroke-width:1}.m-section-chart__grid--zero{stroke:var(--m-text-quinary);stroke-width:1.5}.m-section-chart__axis{stroke:var(--m-text-quinary);stroke-width:1}.m-section-chart__tick{fill:var(--m-text-tertiary);font-size:11px;font-variant-numeric:tabular-nums}.m-section-chart__line{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.m-section-chart__dot{stroke:var(--m-background);stroke-width:2}.m-section-chart__cross{stroke:var(--m-text-secondary);stroke-width:1;opacity:.55}.m-section-chart__tip,.m-section-chart__measure{position:absolute;z-index:2;display:grid;gap:.25rem;min-width:10rem;padding:.5rem .625rem;border:1px solid var(--m-backdrop-border);border-radius:.5rem;background:var(--m-background);box-shadow:0 6px 20px var(--m-backdrop-shadow);font-size:.75rem;pointer-events:none}.m-section-chart__tip{top:0;margin-left:.875rem}.m-section-chart__tip--flip{transform:translate(calc(-100% - 1.75rem))}.m-section-chart__measure{bottom:2.25rem}.m-section-chart__measure--flip{transform:translate(-100%)}.m-section-chart__tip-title{color:var(--m-text-secondary);font-weight:600}.m-section-chart__tip-row{display:grid;grid-template-columns:.75rem auto 1fr auto;align-items:center;gap:.5rem}.m-section-chart__tip-value{color:var(--m-text);font-weight:650;font-variant-numeric:tabular-nums}.m-section-chart__tip-label{color:var(--m-text-secondary);white-space:nowrap}.m-section-chart__tip-sub{color:var(--m-text-tertiary);font-variant-numeric:tabular-nums}.m-section-chart__presets{--section-px: 0;margin-top:.5rem}.m-section-chart__preset{font-size:.8rem;font-weight:600;font-variant-numeric:tabular-nums}.m-section-chart__navigator{display:block;margin-top:.25rem;overflow:visible;touch-action:none;-webkit-user-select:none;user-select:none;cursor:pointer}.m-section-chart__navigator:focus{outline:none}.m-section-chart__navigator:focus-visible{outline:2px solid var(--m-focus);outline-offset:4px;border-radius:4px}.m-section-chart__nav-area{fill:var(--m-text-tertiary);opacity:.12}.m-section-chart__nav-line{fill:none;stroke:var(--m-text-tertiary);stroke-width:1.25}.m-section-chart__nav-dim{fill:var(--m-background);opacity:.6}.m-section-chart__nav-window{fill:transparent;stroke:var(--m-text-secondary);stroke-width:1;cursor:grab}.m-section-chart__nav-handle{fill:var(--m-text-secondary);cursor:ew-resize}.m-section-chart__table{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}\n"],
|
|
19368
|
+
template: "<div class=\"m-section-chart__top\">\n <!-- Each series draws its own legend row: the row is the series' element,\n which is what the editor's Canvas selects it by. -->\n <div class=\"m-section-chart__legend\" role=\"list\">\n <ng-content />\n </div>\n @if (periodLabel(); as label) {\n <span class=\"m-section-chart__window\">{{ label }}</span>\n }\n</div>\n\n<div class=\"m-section-chart__plot\">\n <svg\n class=\"m-section-chart__svg\"\n role=\"img\"\n tabindex=\"0\"\n [class.is-measurable]=\"canMeasure()\"\n [attr.width]=\"width()\"\n [attr.height]=\"svgHeight()\"\n [attr.viewBox]=\"viewBox()\"\n [attr.aria-label]=\"windowLabel()\"\n [attr.aria-describedby]=\"tableId\"\n (pointerdown)=\"onPlotDown($event)\"\n (pointermove)=\"onPointerMove($event)\"\n (pointerup)=\"onPlotUp()\"\n (pointercancel)=\"onPlotUp()\"\n (pointerleave)=\"clearHover()\"\n (blur)=\"clearHover()\"\n (keydown)=\"onKeydown($event)\"\n >\n @for (tick of yTicks(); track $index) {\n <svg:line\n class=\"m-section-chart__grid\"\n [class.m-section-chart__grid--zero]=\"tick.zero\"\n [attr.x1]=\"left()\"\n [attr.x2]=\"right()\"\n [attr.y1]=\"tick.y\"\n [attr.y2]=\"tick.y\"\n />\n <svg:text\n class=\"m-section-chart__tick\"\n text-anchor=\"end\"\n [attr.x]=\"left() - 8\"\n [attr.y]=\"tick.y + 4\"\n >\n {{ tick.label }}\n </svg:text>\n }\n @if (!minimal()) {\n <svg:line\n class=\"m-section-chart__axis\"\n [attr.x1]=\"left()\"\n [attr.x2]=\"right()\"\n [attr.y1]=\"bottom()\"\n [attr.y2]=\"bottom()\"\n />\n }\n @for (tick of xTicks(); track $index) {\n <svg:text\n class=\"m-section-chart__tick\"\n text-anchor=\"middle\"\n [attr.x]=\"tick.x\"\n [attr.y]=\"bottom() + 18\"\n >\n {{ tick.label }}\n </svg:text>\n }\n @if (measureView(); as band) {\n <svg:rect\n class=\"m-section-chart__band\"\n [attr.x]=\"band.start\"\n [attr.y]=\"top()\"\n [attr.width]=\"band.width\"\n [attr.height]=\"bottom() - top()\"\n />\n <svg:line\n class=\"m-section-chart__band-edge\"\n [attr.x1]=\"band.start\"\n [attr.x2]=\"band.start\"\n [attr.y1]=\"top()\"\n [attr.y2]=\"bottom()\"\n />\n <svg:line\n class=\"m-section-chart__band-edge\"\n [attr.x1]=\"band.start + band.width\"\n [attr.x2]=\"band.start + band.width\"\n [attr.y1]=\"top()\"\n [attr.y2]=\"bottom()\"\n />\n }\n @if (hover()?.band; as band) {\n <svg:rect\n class=\"m-section-chart__hover-band\"\n [attr.x]=\"band.x\"\n [attr.y]=\"top()\"\n [attr.width]=\"band.width\"\n [attr.height]=\"band.bottom - top()\"\n />\n }\n @if (categoryView(); as cat) {\n @for (column of cat.columns; track $index) {\n <svg:path\n class=\"m-section-chart__column\"\n [attr.d]=\"column.d\"\n [style.fill]=\"column.color\"\n />\n }\n @for (line of cat.lines; track $index) {\n <svg:path\n class=\"m-section-chart__line\"\n [attr.d]=\"line.d\"\n [style.stroke]=\"line.color\"\n />\n <svg:circle\n class=\"m-section-chart__dot\"\n r=\"4\"\n [attr.cx]=\"line.endX\"\n [attr.cy]=\"line.endY\"\n [style.fill]=\"line.color\"\n />\n }\n @for (label of cat.labels; track $index) {\n <svg:text\n class=\"m-section-chart__value\"\n text-anchor=\"middle\"\n [attr.x]=\"label.x\"\n [attr.y]=\"label.y\"\n >\n {{ label.text }}\n </svg:text>\n }\n @if (cat.strip; as strip) {\n @for (tick of strip.ticks; track $index) {\n <svg:line\n class=\"m-section-chart__grid\"\n [attr.x1]=\"left()\"\n [attr.x2]=\"right()\"\n [attr.y1]=\"tick.y\"\n [attr.y2]=\"tick.y\"\n />\n <svg:text\n class=\"m-section-chart__tick\"\n text-anchor=\"end\"\n [attr.x]=\"left() - 8\"\n [attr.y]=\"tick.y + 4\"\n >\n {{ tick.label }}\n </svg:text>\n }\n @for (line of strip.lines; track $index) {\n <svg:path\n class=\"m-section-chart__line\"\n [attr.d]=\"line.d\"\n [style.stroke]=\"line.color\"\n />\n @for (dot of line.dots; track $index) {\n <svg:circle\n class=\"m-section-chart__dot\"\n r=\"4\"\n [attr.cx]=\"dot.cx\"\n [attr.cy]=\"dot.cy\"\n [style.fill]=\"line.color\"\n />\n <svg:text\n class=\"m-section-chart__value\"\n text-anchor=\"middle\"\n [attr.x]=\"dot.cx\"\n [attr.y]=\"dot.cy - 9\"\n >\n {{ dot.text }}\n </svg:text>\n }\n }\n }\n }\n @for (path of paths(); track $index) {\n @if (path.area; as area) {\n <svg:defs>\n <svg:linearGradient [attr.id]=\"path.fillId\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <svg:stop offset=\"0\" stop-opacity=\"0.22\" [attr.stop-color]=\"path.color\" />\n <svg:stop offset=\"1\" stop-opacity=\"0\" [attr.stop-color]=\"path.color\" />\n </svg:linearGradient>\n </svg:defs>\n <svg:path class=\"m-section-chart__area\" [attr.d]=\"area\" [attr.fill]=\"path.fill\" />\n }\n }\n @for (path of paths(); track $index) {\n <svg:path\n class=\"m-section-chart__line\"\n [attr.d]=\"path.d\"\n [style.stroke]=\"path.color\"\n />\n }\n @if (!minimal()) {\n @for (path of paths(); track $index) {\n <svg:circle\n class=\"m-section-chart__dot\"\n r=\"4\"\n [attr.cx]=\"path.endX\"\n [attr.cy]=\"path.endY\"\n [style.fill]=\"path.color\"\n />\n }\n }\n @if (hover(); as h) {\n @if (!h.band) {\n <svg:line\n class=\"m-section-chart__cross\"\n [attr.x1]=\"h.x\"\n [attr.x2]=\"h.x\"\n [attr.y1]=\"top()\"\n [attr.y2]=\"bottom()\"\n />\n }\n @for (row of h.rows; track $index) {\n @if (row.cx !== null) {\n <svg:circle\n class=\"m-section-chart__dot\"\n r=\"4\"\n [attr.cx]=\"row.cx\"\n [attr.cy]=\"row.cy\"\n [style.fill]=\"row.color\"\n />\n }\n }\n }\n </svg>\n\n @if (hover(); as h) {\n <div\n class=\"m-section-chart__tip\"\n role=\"status\"\n [class.m-section-chart__tip--flip]=\"h.flip\"\n [style.left.px]=\"h.x\"\n >\n <span class=\"m-section-chart__tip-title\">{{ h.title }}</span>\n @for (row of h.rows; track $index) {\n <span class=\"m-section-chart__tip-row\">\n <span class=\"m-section-chart__tip-key\" [style.background]=\"row.color\"></span>\n <span class=\"m-section-chart__tip-value\">{{ row.value }}</span>\n <span class=\"m-section-chart__tip-label\">{{\n row.noTranslate ? row.label : (row.label | translate: row.params)\n }}</span>\n <span class=\"m-section-chart__tip-sub\">{{ row.sub }}</span>\n </span>\n }\n </div>\n }\n\n @if (measureView()?.card; as card) {\n <div\n class=\"m-section-chart__measure\"\n role=\"status\"\n [class.m-section-chart__measure--flip]=\"card.flip\"\n [style.left.px]=\"card.x\"\n >\n <span class=\"m-section-chart__tip-title\">{{ card.title }}</span>\n @for (row of card.rows; track $index) {\n <span class=\"m-section-chart__tip-row\">\n <span class=\"m-section-chart__tip-key\" [style.background]=\"row.color\"></span>\n <span class=\"m-section-chart__tip-value\">{{ row.value }}</span>\n <span class=\"m-section-chart__tip-label\">{{\n row.noTranslate ? row.label : (row.label | translate: row.params)\n }}</span>\n <span class=\"m-section-chart__tip-sub\">{{ row.sub }}</span>\n </span>\n }\n </div>\n }\n</div>\n\n@if (presets().length > 1 && !minimal() && !categorical()) {\n <div class=\"m-section-chart__presets\">\n <m-section-toggle\n [items]=\"presets()\"\n [selectedIndex]=\"presetIndex()\"\n [border]=\"false\"\n (action)=\"selectPreset($event)\"\n >\n <ng-template [mSectionToggleItem]=\"presets()\" let-preset>\n <span class=\"m-section-chart__preset\">{{ preset.label }}</span>\n </ng-template>\n </m-section-toggle>\n </div>\n}\n\n@if (navigatorView(); as nav) {\n <svg\n class=\"m-section-chart__navigator\"\n role=\"slider\"\n tabindex=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [attr.aria-label]=\"'zoom' | translate\"\n [attr.aria-valuenow]=\"nav.position\"\n [attr.aria-valuetext]=\"windowLabel()\"\n [attr.width]=\"width()\"\n [attr.height]=\"navHeight\"\n [attr.viewBox]=\"navViewBox()\"\n (pointerdown)=\"onNavigatorDown($event)\"\n (pointermove)=\"onNavigatorMove($event)\"\n (pointerup)=\"onNavigatorUp()\"\n (pointercancel)=\"onNavigatorUp()\"\n (keydown)=\"onNavigatorKeydown($event)\"\n >\n <svg:path class=\"m-section-chart__nav-area\" [attr.d]=\"nav.area\" />\n <svg:path class=\"m-section-chart__nav-line\" [attr.d]=\"nav.d\" />\n <svg:line\n class=\"m-section-chart__axis\"\n [attr.x1]=\"left()\"\n [attr.x2]=\"right()\"\n [attr.y1]=\"nav.base\"\n [attr.y2]=\"nav.base\"\n />\n @for (tick of nav.ticks; track $index) {\n <svg:text\n class=\"m-section-chart__tick\"\n text-anchor=\"middle\"\n [attr.x]=\"tick.x\"\n [attr.y]=\"nav.base + 15\"\n >\n {{ tick.label }}\n </svg:text>\n }\n <svg:rect\n class=\"m-section-chart__nav-dim\"\n [attr.x]=\"left()\"\n [attr.y]=\"navTop\"\n [attr.width]=\"nav.start - left()\"\n [attr.height]=\"nav.base - navTop\"\n />\n <svg:rect\n class=\"m-section-chart__nav-dim\"\n [attr.x]=\"nav.end\"\n [attr.y]=\"navTop\"\n [attr.width]=\"right() - nav.end\"\n [attr.height]=\"nav.base - navTop\"\n />\n <svg:rect\n class=\"m-section-chart__nav-window\"\n [attr.x]=\"nav.start\"\n [attr.y]=\"navTop\"\n [attr.width]=\"nav.end - nav.start\"\n [attr.height]=\"nav.base - navTop\"\n />\n <svg:rect\n class=\"m-section-chart__nav-handle\"\n rx=\"2\"\n width=\"6\"\n height=\"20\"\n [attr.x]=\"nav.start - 3\"\n [attr.y]=\"(nav.base + navTop) / 2 - 10\"\n />\n <svg:rect\n class=\"m-section-chart__nav-handle\"\n rx=\"2\"\n width=\"6\"\n height=\"20\"\n [attr.x]=\"nav.end - 3\"\n [attr.y]=\"(nav.base + navTop) / 2 - 10\"\n />\n </svg>\n}\n\n<table class=\"m-section-chart__table\" [id]=\"tableId\">\n <thead>\n <tr>\n <th scope=\"col\">{{ 'date' | translate }}</th>\n @for (column of table().columns; track $index) {\n <th scope=\"col\">\n {{ column.noTranslate ? column.label : (column.label | translate: column.params) }}\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of table().rows; track $index) {\n <tr>\n <td>{{ row.date }}</td>\n @for (cell of row.cells; track $index) {\n <td>{{ cell }}</td>\n }\n </tr>\n }\n </tbody>\n</table>\n",
|
|
19369
|
+
styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;position:relative;width:100%;min-width:0}.m-section-chart__top{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.5rem 1rem;margin-bottom:.5rem}.m-section-chart__legend{display:grid;gap:.15rem;min-width:0}.m-section-chart__tip-key{display:inline-block;width:.75rem;height:2px;border-radius:1px}.m-section-chart__window{color:var(--m-text-tertiary);font-size:.8rem}:host(.m-section-chart--minimal) .m-section-chart__svg{cursor:default}:host(.m-section-chart--minimal) .m-section-chart__line{stroke-width:2.25}.m-section-chart__area{stroke:none}.m-section-chart__plot{position:relative}.m-section-chart__svg{display:block;overflow:visible}.m-section-chart__svg:focus{outline:none}.m-section-chart__svg:focus-visible{outline:2px solid var(--m-focus);outline-offset:4px;border-radius:4px}.m-section-chart__svg.is-measurable{cursor:crosshair;touch-action:none;-webkit-user-select:none;user-select:none}.m-section-chart__band{fill:var(--m-text);opacity:.06}.m-section-chart__band-edge{stroke:var(--m-text-secondary);stroke-width:1}.m-section-chart__grid{stroke:var(--m-text-septenary);stroke-width:1}.m-section-chart__grid--zero{stroke:var(--m-text-quinary);stroke-width:1.5}.m-section-chart__axis{stroke:var(--m-text-quinary);stroke-width:1}.m-section-chart__tick{fill:var(--m-text-tertiary);font-size:11px;font-variant-numeric:tabular-nums}.m-section-chart__line{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.m-section-chart__dot{stroke:var(--m-background);stroke-width:2}.m-section-chart__cross{stroke:var(--m-text-secondary);stroke-width:1;opacity:.55}.m-section-chart__hover-band{fill:var(--m-text);opacity:.05}.m-section-chart__column{stroke:none}.m-section-chart__value{fill:var(--m-text-secondary);font-size:11px;font-weight:600;font-variant-numeric:tabular-nums}.m-section-chart__tip,.m-section-chart__measure{position:absolute;z-index:2;display:grid;gap:.25rem;min-width:10rem;padding:.5rem .625rem;border:1px solid var(--m-backdrop-border);border-radius:.5rem;background:var(--m-background);box-shadow:0 6px 20px var(--m-backdrop-shadow);font-size:.75rem;pointer-events:none}.m-section-chart__tip{top:0;margin-left:.875rem}.m-section-chart__tip--flip{transform:translate(calc(-100% - 1.75rem))}.m-section-chart__measure{bottom:2.25rem}.m-section-chart__measure--flip{transform:translate(-100%)}.m-section-chart__tip-title{color:var(--m-text-secondary);font-weight:600}.m-section-chart__tip-row{display:grid;grid-template-columns:.75rem auto 1fr auto;align-items:center;gap:.5rem}.m-section-chart__tip-value{color:var(--m-text);font-weight:650;font-variant-numeric:tabular-nums}.m-section-chart__tip-label{color:var(--m-text-secondary);white-space:nowrap}.m-section-chart__tip-sub{color:var(--m-text-tertiary);font-variant-numeric:tabular-nums}.m-section-chart__presets{--section-px: 0;margin-top:.5rem}.m-section-chart__preset{font-size:.8rem;font-weight:600;font-variant-numeric:tabular-nums}.m-section-chart__navigator{display:block;margin-top:.25rem;overflow:visible;touch-action:none;-webkit-user-select:none;user-select:none;cursor:pointer}.m-section-chart__navigator:focus{outline:none}.m-section-chart__navigator:focus-visible{outline:2px solid var(--m-focus);outline-offset:4px;border-radius:4px}.m-section-chart__nav-area{fill:var(--m-text-tertiary);opacity:.12}.m-section-chart__nav-line{fill:none;stroke:var(--m-text-tertiary);stroke-width:1.25}.m-section-chart__nav-dim{fill:var(--m-background);opacity:.6}.m-section-chart__nav-window{fill:transparent;stroke:var(--m-text-secondary);stroke-width:1;cursor:grab}.m-section-chart__nav-handle{fill:var(--m-text-secondary);cursor:ew-resize}.m-section-chart__table{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}\n"],
|
|
18989
19370
|
dependencies: [
|
|
18990
19371
|
{
|
|
18991
19372
|
kind: "component",
|
|
@@ -19045,8 +19426,8 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
19045
19426
|
};
|
|
19046
19427
|
}
|
|
19047
19428
|
}],
|
|
19048
|
-
template: "<div class=\"m-section-chart__top\">\n <!-- Each series draws its own legend row: the row is the series' element,\n which is what the editor's Canvas selects it by. -->\n <div class=\"m-section-chart__legend\" role=\"list\">\n <ng-content />\n </div>\n @if (periodLabel(); as label) {\n <span class=\"m-section-chart__window\">{{ label }}</span>\n }\n</div>\n\n<div class=\"m-section-chart__plot\">\n <svg\n class=\"m-section-chart__svg\"\n role=\"img\"\n tabindex=\"0\"\n [class.is-measurable]=\"canMeasure()\"\n [attr.width]=\"width()\"\n [attr.height]=\"resolvedHeight()\"\n [attr.viewBox]=\"viewBox()\"\n [attr.aria-label]=\"windowLabel()\"\n [attr.aria-describedby]=\"tableId\"\n (pointerdown)=\"onPlotDown($event)\"\n (pointermove)=\"onPointerMove($event)\"\n (pointerup)=\"onPlotUp()\"\n (pointercancel)=\"onPlotUp()\"\n (pointerleave)=\"clearHover()\"\n (blur)=\"clearHover()\"\n (keydown)=\"onKeydown($event)\"\n >\n @for (tick of yTicks(); track $index) {\n <svg:line\n class=\"m-section-chart__grid\"\n [class.m-section-chart__grid--zero]=\"tick.zero\"\n [attr.x1]=\"left()\"\n [attr.x2]=\"right()\"\n [attr.y1]=\"tick.y\"\n [attr.y2]=\"tick.y\"\n />\n <svg:text\n class=\"m-section-chart__tick\"\n text-anchor=\"end\"\n [attr.x]=\"left() - 8\"\n [attr.y]=\"tick.y + 4\"\n >\n {{ tick.label }}\n </svg:text>\n }\n @if (!minimal()) {\n <svg:line\n class=\"m-section-chart__axis\"\n [attr.x1]=\"left()\"\n [attr.x2]=\"right()\"\n [attr.y1]=\"bottom()\"\n [attr.y2]=\"bottom()\"\n />\n }\n @for (tick of xTicks(); track $index) {\n <svg:text\n class=\"m-section-chart__tick\"\n text-anchor=\"middle\"\n [attr.x]=\"tick.x\"\n [attr.y]=\"bottom() + 18\"\n >\n {{ tick.label }}\n </svg:text>\n }\n @if (measureView(); as band) {\n <svg:rect\n class=\"m-section-chart__band\"\n [attr.x]=\"band.start\"\n [attr.y]=\"top()\"\n [attr.width]=\"band.width\"\n [attr.height]=\"bottom() - top()\"\n />\n <svg:line\n class=\"m-section-chart__band-edge\"\n [attr.x1]=\"band.start\"\n [attr.x2]=\"band.start\"\n [attr.y1]=\"top()\"\n [attr.y2]=\"bottom()\"\n />\n <svg:line\n class=\"m-section-chart__band-edge\"\n [attr.x1]=\"band.start + band.width\"\n [attr.x2]=\"band.start + band.width\"\n [attr.y1]=\"top()\"\n [attr.y2]=\"bottom()\"\n />\n }\n @for (path of paths(); track $index) {\n @if (path.area; as area) {\n <svg:defs>\n <svg:linearGradient [attr.id]=\"path.fillId\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <svg:stop offset=\"0\" stop-opacity=\"0.22\" [attr.stop-color]=\"path.color\" />\n <svg:stop offset=\"1\" stop-opacity=\"0\" [attr.stop-color]=\"path.color\" />\n </svg:linearGradient>\n </svg:defs>\n <svg:path class=\"m-section-chart__area\" [attr.d]=\"area\" [attr.fill]=\"path.fill\" />\n }\n }\n @for (path of paths(); track $index) {\n <svg:path\n class=\"m-section-chart__line\"\n [attr.d]=\"path.d\"\n [style.stroke]=\"path.color\"\n />\n }\n @if (!minimal()) {\n @for (path of paths(); track $index) {\n <svg:circle\n class=\"m-section-chart__dot\"\n r=\"4\"\n [attr.cx]=\"path.endX\"\n [attr.cy]=\"path.endY\"\n [style.fill]=\"path.color\"\n />\n }\n }\n @if (hover(); as h) {\n <svg:line\n class=\"m-section-chart__cross\"\n [attr.x1]=\"h.x\"\n [attr.x2]=\"h.x\"\n [attr.y1]=\"top()\"\n [attr.y2]=\"bottom()\"\n />\n @for (row of h.rows; track $index) {\n <svg:circle\n class=\"m-section-chart__dot\"\n r=\"4\"\n [attr.cx]=\"row.cx\"\n [attr.cy]=\"row.cy\"\n [style.fill]=\"row.color\"\n />\n }\n }\n </svg>\n\n @if (hover(); as h) {\n <div\n class=\"m-section-chart__tip\"\n role=\"status\"\n [class.m-section-chart__tip--flip]=\"h.flip\"\n [style.left.px]=\"h.x\"\n >\n <span class=\"m-section-chart__tip-title\">{{ h.title }}</span>\n @for (row of h.rows; track $index) {\n <span class=\"m-section-chart__tip-row\">\n <span class=\"m-section-chart__tip-key\" [style.background]=\"row.color\"></span>\n <span class=\"m-section-chart__tip-value\">{{ row.value }}</span>\n <span class=\"m-section-chart__tip-label\">{{\n row.noTranslate ? row.label : (row.label | translate: row.params)\n }}</span>\n <span class=\"m-section-chart__tip-sub\">{{ row.sub }}</span>\n </span>\n }\n </div>\n }\n\n @if (measureView()?.card; as card) {\n <div\n class=\"m-section-chart__measure\"\n role=\"status\"\n [class.m-section-chart__measure--flip]=\"card.flip\"\n [style.left.px]=\"card.x\"\n >\n <span class=\"m-section-chart__tip-title\">{{ card.title }}</span>\n @for (row of card.rows; track $index) {\n <span class=\"m-section-chart__tip-row\">\n <span class=\"m-section-chart__tip-key\" [style.background]=\"row.color\"></span>\n <span class=\"m-section-chart__tip-value\">{{ row.value }}</span>\n <span class=\"m-section-chart__tip-label\">{{\n row.noTranslate ? row.label : (row.label | translate: row.params)\n }}</span>\n <span class=\"m-section-chart__tip-sub\">{{ row.sub }}</span>\n </span>\n }\n </div>\n }\n</div>\n\n@if (presets().length > 1 && !minimal()) {\n <div class=\"m-section-chart__presets\">\n <m-section-toggle\n [items]=\"presets()\"\n [selectedIndex]=\"presetIndex()\"\n [border]=\"false\"\n (action)=\"selectPreset($event)\"\n >\n <ng-template [mSectionToggleItem]=\"presets()\" let-preset>\n <span class=\"m-section-chart__preset\">{{ preset.label }}</span>\n </ng-template>\n </m-section-toggle>\n </div>\n}\n\n@if (navigatorView(); as nav) {\n <svg\n class=\"m-section-chart__navigator\"\n role=\"slider\"\n tabindex=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [attr.aria-label]=\"'zoom' | translate\"\n [attr.aria-valuenow]=\"nav.position\"\n [attr.aria-valuetext]=\"windowLabel()\"\n [attr.width]=\"width()\"\n [attr.height]=\"navHeight\"\n [attr.viewBox]=\"navViewBox()\"\n (pointerdown)=\"onNavigatorDown($event)\"\n (pointermove)=\"onNavigatorMove($event)\"\n (pointerup)=\"onNavigatorUp()\"\n (pointercancel)=\"onNavigatorUp()\"\n (keydown)=\"onNavigatorKeydown($event)\"\n >\n <svg:path class=\"m-section-chart__nav-area\" [attr.d]=\"nav.area\" />\n <svg:path class=\"m-section-chart__nav-line\" [attr.d]=\"nav.d\" />\n <svg:line\n class=\"m-section-chart__axis\"\n [attr.x1]=\"left()\"\n [attr.x2]=\"right()\"\n [attr.y1]=\"nav.base\"\n [attr.y2]=\"nav.base\"\n />\n @for (tick of nav.ticks; track $index) {\n <svg:text\n class=\"m-section-chart__tick\"\n text-anchor=\"middle\"\n [attr.x]=\"tick.x\"\n [attr.y]=\"nav.base + 15\"\n >\n {{ tick.label }}\n </svg:text>\n }\n <svg:rect\n class=\"m-section-chart__nav-dim\"\n [attr.x]=\"left()\"\n [attr.y]=\"navTop\"\n [attr.width]=\"nav.start - left()\"\n [attr.height]=\"nav.base - navTop\"\n />\n <svg:rect\n class=\"m-section-chart__nav-dim\"\n [attr.x]=\"nav.end\"\n [attr.y]=\"navTop\"\n [attr.width]=\"right() - nav.end\"\n [attr.height]=\"nav.base - navTop\"\n />\n <svg:rect\n class=\"m-section-chart__nav-window\"\n [attr.x]=\"nav.start\"\n [attr.y]=\"navTop\"\n [attr.width]=\"nav.end - nav.start\"\n [attr.height]=\"nav.base - navTop\"\n />\n <svg:rect\n class=\"m-section-chart__nav-handle\"\n rx=\"2\"\n width=\"6\"\n height=\"20\"\n [attr.x]=\"nav.start - 3\"\n [attr.y]=\"(nav.base + navTop) / 2 - 10\"\n />\n <svg:rect\n class=\"m-section-chart__nav-handle\"\n rx=\"2\"\n width=\"6\"\n height=\"20\"\n [attr.x]=\"nav.end - 3\"\n [attr.y]=\"(nav.base + navTop) / 2 - 10\"\n />\n </svg>\n}\n\n<table class=\"m-section-chart__table\" [id]=\"tableId\">\n <thead>\n <tr>\n <th scope=\"col\">{{ 'date' | translate }}</th>\n @for (column of table().columns; track $index) {\n <th scope=\"col\">\n {{ column.noTranslate ? column.label : (column.label | translate: column.params) }}\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of table().rows; track $index) {\n <tr>\n <td>{{ row.date }}</td>\n @for (cell of row.cells; track $index) {\n <td>{{ cell }}</td>\n }\n </tr>\n }\n </tbody>\n</table>\n",
|
|
19049
|
-
styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;position:relative;width:100%;min-width:0}.m-section-chart__top{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.5rem 1rem;margin-bottom:.5rem}.m-section-chart__legend{display:grid;gap:.15rem;min-width:0}.m-section-chart__tip-key{display:inline-block;width:.75rem;height:2px;border-radius:1px}.m-section-chart__window{color:var(--m-text-tertiary);font-size:.8rem}:host(.m-section-chart--minimal) .m-section-chart__svg{cursor:default}:host(.m-section-chart--minimal) .m-section-chart__line{stroke-width:2.25}.m-section-chart__area{stroke:none}.m-section-chart__plot{position:relative}.m-section-chart__svg{display:block;overflow:visible}.m-section-chart__svg:focus{outline:none}.m-section-chart__svg:focus-visible{outline:2px solid var(--m-focus);outline-offset:4px;border-radius:4px}.m-section-chart__svg.is-measurable{cursor:crosshair;touch-action:none;-webkit-user-select:none;user-select:none}.m-section-chart__band{fill:var(--m-text);opacity:.06}.m-section-chart__band-edge{stroke:var(--m-text-secondary);stroke-width:1}.m-section-chart__grid{stroke:var(--m-text-septenary);stroke-width:1}.m-section-chart__grid--zero{stroke:var(--m-text-quinary);stroke-width:1.5}.m-section-chart__axis{stroke:var(--m-text-quinary);stroke-width:1}.m-section-chart__tick{fill:var(--m-text-tertiary);font-size:11px;font-variant-numeric:tabular-nums}.m-section-chart__line{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.m-section-chart__dot{stroke:var(--m-background);stroke-width:2}.m-section-chart__cross{stroke:var(--m-text-secondary);stroke-width:1;opacity:.55}.m-section-chart__tip,.m-section-chart__measure{position:absolute;z-index:2;display:grid;gap:.25rem;min-width:10rem;padding:.5rem .625rem;border:1px solid var(--m-backdrop-border);border-radius:.5rem;background:var(--m-background);box-shadow:0 6px 20px var(--m-backdrop-shadow);font-size:.75rem;pointer-events:none}.m-section-chart__tip{top:0;margin-left:.875rem}.m-section-chart__tip--flip{transform:translate(calc(-100% - 1.75rem))}.m-section-chart__measure{bottom:2.25rem}.m-section-chart__measure--flip{transform:translate(-100%)}.m-section-chart__tip-title{color:var(--m-text-secondary);font-weight:600}.m-section-chart__tip-row{display:grid;grid-template-columns:.75rem auto 1fr auto;align-items:center;gap:.5rem}.m-section-chart__tip-value{color:var(--m-text);font-weight:650;font-variant-numeric:tabular-nums}.m-section-chart__tip-label{color:var(--m-text-secondary);white-space:nowrap}.m-section-chart__tip-sub{color:var(--m-text-tertiary);font-variant-numeric:tabular-nums}.m-section-chart__presets{--section-px: 0;margin-top:.5rem}.m-section-chart__preset{font-size:.8rem;font-weight:600;font-variant-numeric:tabular-nums}.m-section-chart__navigator{display:block;margin-top:.25rem;overflow:visible;touch-action:none;-webkit-user-select:none;user-select:none;cursor:pointer}.m-section-chart__navigator:focus{outline:none}.m-section-chart__navigator:focus-visible{outline:2px solid var(--m-focus);outline-offset:4px;border-radius:4px}.m-section-chart__nav-area{fill:var(--m-text-tertiary);opacity:.12}.m-section-chart__nav-line{fill:none;stroke:var(--m-text-tertiary);stroke-width:1.25}.m-section-chart__nav-dim{fill:var(--m-background);opacity:.6}.m-section-chart__nav-window{fill:transparent;stroke:var(--m-text-secondary);stroke-width:1;cursor:grab}.m-section-chart__nav-handle{fill:var(--m-text-secondary);cursor:ew-resize}.m-section-chart__table{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}\n"]
|
|
19429
|
+
template: "<div class=\"m-section-chart__top\">\n <!-- Each series draws its own legend row: the row is the series' element,\n which is what the editor's Canvas selects it by. -->\n <div class=\"m-section-chart__legend\" role=\"list\">\n <ng-content />\n </div>\n @if (periodLabel(); as label) {\n <span class=\"m-section-chart__window\">{{ label }}</span>\n }\n</div>\n\n<div class=\"m-section-chart__plot\">\n <svg\n class=\"m-section-chart__svg\"\n role=\"img\"\n tabindex=\"0\"\n [class.is-measurable]=\"canMeasure()\"\n [attr.width]=\"width()\"\n [attr.height]=\"svgHeight()\"\n [attr.viewBox]=\"viewBox()\"\n [attr.aria-label]=\"windowLabel()\"\n [attr.aria-describedby]=\"tableId\"\n (pointerdown)=\"onPlotDown($event)\"\n (pointermove)=\"onPointerMove($event)\"\n (pointerup)=\"onPlotUp()\"\n (pointercancel)=\"onPlotUp()\"\n (pointerleave)=\"clearHover()\"\n (blur)=\"clearHover()\"\n (keydown)=\"onKeydown($event)\"\n >\n @for (tick of yTicks(); track $index) {\n <svg:line\n class=\"m-section-chart__grid\"\n [class.m-section-chart__grid--zero]=\"tick.zero\"\n [attr.x1]=\"left()\"\n [attr.x2]=\"right()\"\n [attr.y1]=\"tick.y\"\n [attr.y2]=\"tick.y\"\n />\n <svg:text\n class=\"m-section-chart__tick\"\n text-anchor=\"end\"\n [attr.x]=\"left() - 8\"\n [attr.y]=\"tick.y + 4\"\n >\n {{ tick.label }}\n </svg:text>\n }\n @if (!minimal()) {\n <svg:line\n class=\"m-section-chart__axis\"\n [attr.x1]=\"left()\"\n [attr.x2]=\"right()\"\n [attr.y1]=\"bottom()\"\n [attr.y2]=\"bottom()\"\n />\n }\n @for (tick of xTicks(); track $index) {\n <svg:text\n class=\"m-section-chart__tick\"\n text-anchor=\"middle\"\n [attr.x]=\"tick.x\"\n [attr.y]=\"bottom() + 18\"\n >\n {{ tick.label }}\n </svg:text>\n }\n @if (measureView(); as band) {\n <svg:rect\n class=\"m-section-chart__band\"\n [attr.x]=\"band.start\"\n [attr.y]=\"top()\"\n [attr.width]=\"band.width\"\n [attr.height]=\"bottom() - top()\"\n />\n <svg:line\n class=\"m-section-chart__band-edge\"\n [attr.x1]=\"band.start\"\n [attr.x2]=\"band.start\"\n [attr.y1]=\"top()\"\n [attr.y2]=\"bottom()\"\n />\n <svg:line\n class=\"m-section-chart__band-edge\"\n [attr.x1]=\"band.start + band.width\"\n [attr.x2]=\"band.start + band.width\"\n [attr.y1]=\"top()\"\n [attr.y2]=\"bottom()\"\n />\n }\n @if (hover()?.band; as band) {\n <svg:rect\n class=\"m-section-chart__hover-band\"\n [attr.x]=\"band.x\"\n [attr.y]=\"top()\"\n [attr.width]=\"band.width\"\n [attr.height]=\"band.bottom - top()\"\n />\n }\n @if (categoryView(); as cat) {\n @for (column of cat.columns; track $index) {\n <svg:path\n class=\"m-section-chart__column\"\n [attr.d]=\"column.d\"\n [style.fill]=\"column.color\"\n />\n }\n @for (line of cat.lines; track $index) {\n <svg:path\n class=\"m-section-chart__line\"\n [attr.d]=\"line.d\"\n [style.stroke]=\"line.color\"\n />\n <svg:circle\n class=\"m-section-chart__dot\"\n r=\"4\"\n [attr.cx]=\"line.endX\"\n [attr.cy]=\"line.endY\"\n [style.fill]=\"line.color\"\n />\n }\n @for (label of cat.labels; track $index) {\n <svg:text\n class=\"m-section-chart__value\"\n text-anchor=\"middle\"\n [attr.x]=\"label.x\"\n [attr.y]=\"label.y\"\n >\n {{ label.text }}\n </svg:text>\n }\n @if (cat.strip; as strip) {\n @for (tick of strip.ticks; track $index) {\n <svg:line\n class=\"m-section-chart__grid\"\n [attr.x1]=\"left()\"\n [attr.x2]=\"right()\"\n [attr.y1]=\"tick.y\"\n [attr.y2]=\"tick.y\"\n />\n <svg:text\n class=\"m-section-chart__tick\"\n text-anchor=\"end\"\n [attr.x]=\"left() - 8\"\n [attr.y]=\"tick.y + 4\"\n >\n {{ tick.label }}\n </svg:text>\n }\n @for (line of strip.lines; track $index) {\n <svg:path\n class=\"m-section-chart__line\"\n [attr.d]=\"line.d\"\n [style.stroke]=\"line.color\"\n />\n @for (dot of line.dots; track $index) {\n <svg:circle\n class=\"m-section-chart__dot\"\n r=\"4\"\n [attr.cx]=\"dot.cx\"\n [attr.cy]=\"dot.cy\"\n [style.fill]=\"line.color\"\n />\n <svg:text\n class=\"m-section-chart__value\"\n text-anchor=\"middle\"\n [attr.x]=\"dot.cx\"\n [attr.y]=\"dot.cy - 9\"\n >\n {{ dot.text }}\n </svg:text>\n }\n }\n }\n }\n @for (path of paths(); track $index) {\n @if (path.area; as area) {\n <svg:defs>\n <svg:linearGradient [attr.id]=\"path.fillId\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <svg:stop offset=\"0\" stop-opacity=\"0.22\" [attr.stop-color]=\"path.color\" />\n <svg:stop offset=\"1\" stop-opacity=\"0\" [attr.stop-color]=\"path.color\" />\n </svg:linearGradient>\n </svg:defs>\n <svg:path class=\"m-section-chart__area\" [attr.d]=\"area\" [attr.fill]=\"path.fill\" />\n }\n }\n @for (path of paths(); track $index) {\n <svg:path\n class=\"m-section-chart__line\"\n [attr.d]=\"path.d\"\n [style.stroke]=\"path.color\"\n />\n }\n @if (!minimal()) {\n @for (path of paths(); track $index) {\n <svg:circle\n class=\"m-section-chart__dot\"\n r=\"4\"\n [attr.cx]=\"path.endX\"\n [attr.cy]=\"path.endY\"\n [style.fill]=\"path.color\"\n />\n }\n }\n @if (hover(); as h) {\n @if (!h.band) {\n <svg:line\n class=\"m-section-chart__cross\"\n [attr.x1]=\"h.x\"\n [attr.x2]=\"h.x\"\n [attr.y1]=\"top()\"\n [attr.y2]=\"bottom()\"\n />\n }\n @for (row of h.rows; track $index) {\n @if (row.cx !== null) {\n <svg:circle\n class=\"m-section-chart__dot\"\n r=\"4\"\n [attr.cx]=\"row.cx\"\n [attr.cy]=\"row.cy\"\n [style.fill]=\"row.color\"\n />\n }\n }\n }\n </svg>\n\n @if (hover(); as h) {\n <div\n class=\"m-section-chart__tip\"\n role=\"status\"\n [class.m-section-chart__tip--flip]=\"h.flip\"\n [style.left.px]=\"h.x\"\n >\n <span class=\"m-section-chart__tip-title\">{{ h.title }}</span>\n @for (row of h.rows; track $index) {\n <span class=\"m-section-chart__tip-row\">\n <span class=\"m-section-chart__tip-key\" [style.background]=\"row.color\"></span>\n <span class=\"m-section-chart__tip-value\">{{ row.value }}</span>\n <span class=\"m-section-chart__tip-label\">{{\n row.noTranslate ? row.label : (row.label | translate: row.params)\n }}</span>\n <span class=\"m-section-chart__tip-sub\">{{ row.sub }}</span>\n </span>\n }\n </div>\n }\n\n @if (measureView()?.card; as card) {\n <div\n class=\"m-section-chart__measure\"\n role=\"status\"\n [class.m-section-chart__measure--flip]=\"card.flip\"\n [style.left.px]=\"card.x\"\n >\n <span class=\"m-section-chart__tip-title\">{{ card.title }}</span>\n @for (row of card.rows; track $index) {\n <span class=\"m-section-chart__tip-row\">\n <span class=\"m-section-chart__tip-key\" [style.background]=\"row.color\"></span>\n <span class=\"m-section-chart__tip-value\">{{ row.value }}</span>\n <span class=\"m-section-chart__tip-label\">{{\n row.noTranslate ? row.label : (row.label | translate: row.params)\n }}</span>\n <span class=\"m-section-chart__tip-sub\">{{ row.sub }}</span>\n </span>\n }\n </div>\n }\n</div>\n\n@if (presets().length > 1 && !minimal() && !categorical()) {\n <div class=\"m-section-chart__presets\">\n <m-section-toggle\n [items]=\"presets()\"\n [selectedIndex]=\"presetIndex()\"\n [border]=\"false\"\n (action)=\"selectPreset($event)\"\n >\n <ng-template [mSectionToggleItem]=\"presets()\" let-preset>\n <span class=\"m-section-chart__preset\">{{ preset.label }}</span>\n </ng-template>\n </m-section-toggle>\n </div>\n}\n\n@if (navigatorView(); as nav) {\n <svg\n class=\"m-section-chart__navigator\"\n role=\"slider\"\n tabindex=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [attr.aria-label]=\"'zoom' | translate\"\n [attr.aria-valuenow]=\"nav.position\"\n [attr.aria-valuetext]=\"windowLabel()\"\n [attr.width]=\"width()\"\n [attr.height]=\"navHeight\"\n [attr.viewBox]=\"navViewBox()\"\n (pointerdown)=\"onNavigatorDown($event)\"\n (pointermove)=\"onNavigatorMove($event)\"\n (pointerup)=\"onNavigatorUp()\"\n (pointercancel)=\"onNavigatorUp()\"\n (keydown)=\"onNavigatorKeydown($event)\"\n >\n <svg:path class=\"m-section-chart__nav-area\" [attr.d]=\"nav.area\" />\n <svg:path class=\"m-section-chart__nav-line\" [attr.d]=\"nav.d\" />\n <svg:line\n class=\"m-section-chart__axis\"\n [attr.x1]=\"left()\"\n [attr.x2]=\"right()\"\n [attr.y1]=\"nav.base\"\n [attr.y2]=\"nav.base\"\n />\n @for (tick of nav.ticks; track $index) {\n <svg:text\n class=\"m-section-chart__tick\"\n text-anchor=\"middle\"\n [attr.x]=\"tick.x\"\n [attr.y]=\"nav.base + 15\"\n >\n {{ tick.label }}\n </svg:text>\n }\n <svg:rect\n class=\"m-section-chart__nav-dim\"\n [attr.x]=\"left()\"\n [attr.y]=\"navTop\"\n [attr.width]=\"nav.start - left()\"\n [attr.height]=\"nav.base - navTop\"\n />\n <svg:rect\n class=\"m-section-chart__nav-dim\"\n [attr.x]=\"nav.end\"\n [attr.y]=\"navTop\"\n [attr.width]=\"right() - nav.end\"\n [attr.height]=\"nav.base - navTop\"\n />\n <svg:rect\n class=\"m-section-chart__nav-window\"\n [attr.x]=\"nav.start\"\n [attr.y]=\"navTop\"\n [attr.width]=\"nav.end - nav.start\"\n [attr.height]=\"nav.base - navTop\"\n />\n <svg:rect\n class=\"m-section-chart__nav-handle\"\n rx=\"2\"\n width=\"6\"\n height=\"20\"\n [attr.x]=\"nav.start - 3\"\n [attr.y]=\"(nav.base + navTop) / 2 - 10\"\n />\n <svg:rect\n class=\"m-section-chart__nav-handle\"\n rx=\"2\"\n width=\"6\"\n height=\"20\"\n [attr.x]=\"nav.end - 3\"\n [attr.y]=\"(nav.base + navTop) / 2 - 10\"\n />\n </svg>\n}\n\n<table class=\"m-section-chart__table\" [id]=\"tableId\">\n <thead>\n <tr>\n <th scope=\"col\">{{ 'date' | translate }}</th>\n @for (column of table().columns; track $index) {\n <th scope=\"col\">\n {{ column.noTranslate ? column.label : (column.label | translate: column.params) }}\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of table().rows; track $index) {\n <tr>\n <td>{{ row.date }}</td>\n @for (cell of row.cells; track $index) {\n <td>{{ cell }}</td>\n }\n </tr>\n }\n </tbody>\n</table>\n",
|
|
19430
|
+
styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;position:relative;width:100%;min-width:0}.m-section-chart__top{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.5rem 1rem;margin-bottom:.5rem}.m-section-chart__legend{display:grid;gap:.15rem;min-width:0}.m-section-chart__tip-key{display:inline-block;width:.75rem;height:2px;border-radius:1px}.m-section-chart__window{color:var(--m-text-tertiary);font-size:.8rem}:host(.m-section-chart--minimal) .m-section-chart__svg{cursor:default}:host(.m-section-chart--minimal) .m-section-chart__line{stroke-width:2.25}.m-section-chart__area{stroke:none}.m-section-chart__plot{position:relative}.m-section-chart__svg{display:block;overflow:visible}.m-section-chart__svg:focus{outline:none}.m-section-chart__svg:focus-visible{outline:2px solid var(--m-focus);outline-offset:4px;border-radius:4px}.m-section-chart__svg.is-measurable{cursor:crosshair;touch-action:none;-webkit-user-select:none;user-select:none}.m-section-chart__band{fill:var(--m-text);opacity:.06}.m-section-chart__band-edge{stroke:var(--m-text-secondary);stroke-width:1}.m-section-chart__grid{stroke:var(--m-text-septenary);stroke-width:1}.m-section-chart__grid--zero{stroke:var(--m-text-quinary);stroke-width:1.5}.m-section-chart__axis{stroke:var(--m-text-quinary);stroke-width:1}.m-section-chart__tick{fill:var(--m-text-tertiary);font-size:11px;font-variant-numeric:tabular-nums}.m-section-chart__line{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.m-section-chart__dot{stroke:var(--m-background);stroke-width:2}.m-section-chart__cross{stroke:var(--m-text-secondary);stroke-width:1;opacity:.55}.m-section-chart__hover-band{fill:var(--m-text);opacity:.05}.m-section-chart__column{stroke:none}.m-section-chart__value{fill:var(--m-text-secondary);font-size:11px;font-weight:600;font-variant-numeric:tabular-nums}.m-section-chart__tip,.m-section-chart__measure{position:absolute;z-index:2;display:grid;gap:.25rem;min-width:10rem;padding:.5rem .625rem;border:1px solid var(--m-backdrop-border);border-radius:.5rem;background:var(--m-background);box-shadow:0 6px 20px var(--m-backdrop-shadow);font-size:.75rem;pointer-events:none}.m-section-chart__tip{top:0;margin-left:.875rem}.m-section-chart__tip--flip{transform:translate(calc(-100% - 1.75rem))}.m-section-chart__measure{bottom:2.25rem}.m-section-chart__measure--flip{transform:translate(-100%)}.m-section-chart__tip-title{color:var(--m-text-secondary);font-weight:600}.m-section-chart__tip-row{display:grid;grid-template-columns:.75rem auto 1fr auto;align-items:center;gap:.5rem}.m-section-chart__tip-value{color:var(--m-text);font-weight:650;font-variant-numeric:tabular-nums}.m-section-chart__tip-label{color:var(--m-text-secondary);white-space:nowrap}.m-section-chart__tip-sub{color:var(--m-text-tertiary);font-variant-numeric:tabular-nums}.m-section-chart__presets{--section-px: 0;margin-top:.5rem}.m-section-chart__preset{font-size:.8rem;font-weight:600;font-variant-numeric:tabular-nums}.m-section-chart__navigator{display:block;margin-top:.25rem;overflow:visible;touch-action:none;-webkit-user-select:none;user-select:none;cursor:pointer}.m-section-chart__navigator:focus{outline:none}.m-section-chart__navigator:focus-visible{outline:2px solid var(--m-focus);outline-offset:4px;border-radius:4px}.m-section-chart__nav-area{fill:var(--m-text-tertiary);opacity:.12}.m-section-chart__nav-line{fill:none;stroke:var(--m-text-tertiary);stroke-width:1.25}.m-section-chart__nav-dim{fill:var(--m-background);opacity:.6}.m-section-chart__nav-window{fill:transparent;stroke:var(--m-text-secondary);stroke-width:1;cursor:grab}.m-section-chart__nav-handle{fill:var(--m-text-secondary);cursor:ew-resize}.m-section-chart__table{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}\n"]
|
|
19050
19431
|
}]
|
|
19051
19432
|
}],
|
|
19052
19433
|
ctorParameters: () => [],
|
|
@@ -19131,7 +19512,12 @@ var SectionChartSeriesComponent = class SectionChartSeriesComponent {
|
|
|
19131
19512
|
noTranslate = input(false, ...ngDevMode ? [{ debugName: "noTranslate" }] : /* istanbul ignore next */ []);
|
|
19132
19513
|
params = input(void 0, ...ngDevMode ? [{ debugName: "params" }] : /* istanbul ignore next */ []);
|
|
19133
19514
|
color = input(void 0, ...ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []);
|
|
19134
|
-
|
|
19515
|
+
mark = input("line", ...ngDevMode ? [{ debugName: "mark" }] : /* istanbul ignore next */ []);
|
|
19516
|
+
per = input(void 0, ...ngDevMode ? [{ debugName: "per" }] : /* istanbul ignore next */ []);
|
|
19517
|
+
panel = input("main", ...ngDevMode ? [{ debugName: "panel" }] : /* istanbul ignore next */ []);
|
|
19518
|
+
points = computed(() => readChartPoints(this.data(), this.x(), this.y(), this.per()), ...ngDevMode ? [{ debugName: "points" }] : /* istanbul ignore next */ []);
|
|
19519
|
+
categories = computed(() => readChartCategories(this.data(), this.x(), this.y(), this.per()), ...ngDevMode ? [{ debugName: "categories" }] : /* istanbul ignore next */ []);
|
|
19520
|
+
ratio = computed(() => !!this.per(), ...ngDevMode ? [{ debugName: "ratio" }] : /* istanbul ignore next */ []);
|
|
19135
19521
|
row;
|
|
19136
19522
|
constructor() {
|
|
19137
19523
|
const chart = inject(SECTION_CHART_CONTEXT, { optional: true });
|
|
@@ -19141,6 +19527,10 @@ var SectionChartSeriesComponent = class SectionChartSeriesComponent {
|
|
|
19141
19527
|
}
|
|
19142
19528
|
const member = {
|
|
19143
19529
|
points: this.points,
|
|
19530
|
+
categories: this.categories,
|
|
19531
|
+
mark: this.mark,
|
|
19532
|
+
panel: this.panel,
|
|
19533
|
+
ratio: this.ratio,
|
|
19144
19534
|
label: this.label,
|
|
19145
19535
|
noTranslate: this.noTranslate,
|
|
19146
19536
|
params: this.params,
|
|
@@ -19213,6 +19603,27 @@ var SectionChartSeriesComponent = class SectionChartSeriesComponent {
|
|
|
19213
19603
|
isSignal: true,
|
|
19214
19604
|
isRequired: false,
|
|
19215
19605
|
transformFunction: null
|
|
19606
|
+
},
|
|
19607
|
+
mark: {
|
|
19608
|
+
classPropertyName: "mark",
|
|
19609
|
+
publicName: "mark",
|
|
19610
|
+
isSignal: true,
|
|
19611
|
+
isRequired: false,
|
|
19612
|
+
transformFunction: null
|
|
19613
|
+
},
|
|
19614
|
+
per: {
|
|
19615
|
+
classPropertyName: "per",
|
|
19616
|
+
publicName: "per",
|
|
19617
|
+
isSignal: true,
|
|
19618
|
+
isRequired: false,
|
|
19619
|
+
transformFunction: null
|
|
19620
|
+
},
|
|
19621
|
+
panel: {
|
|
19622
|
+
classPropertyName: "panel",
|
|
19623
|
+
publicName: "panel",
|
|
19624
|
+
isSignal: true,
|
|
19625
|
+
isRequired: false,
|
|
19626
|
+
transformFunction: null
|
|
19216
19627
|
}
|
|
19217
19628
|
},
|
|
19218
19629
|
host: {
|
|
@@ -19341,6 +19752,30 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
19341
19752
|
alias: "color",
|
|
19342
19753
|
required: false
|
|
19343
19754
|
}]
|
|
19755
|
+
}],
|
|
19756
|
+
mark: [{
|
|
19757
|
+
type: i0.Input,
|
|
19758
|
+
args: [{
|
|
19759
|
+
isSignal: true,
|
|
19760
|
+
alias: "mark",
|
|
19761
|
+
required: false
|
|
19762
|
+
}]
|
|
19763
|
+
}],
|
|
19764
|
+
per: [{
|
|
19765
|
+
type: i0.Input,
|
|
19766
|
+
args: [{
|
|
19767
|
+
isSignal: true,
|
|
19768
|
+
alias: "per",
|
|
19769
|
+
required: false
|
|
19770
|
+
}]
|
|
19771
|
+
}],
|
|
19772
|
+
panel: [{
|
|
19773
|
+
type: i0.Input,
|
|
19774
|
+
args: [{
|
|
19775
|
+
isSignal: true,
|
|
19776
|
+
alias: "panel",
|
|
19777
|
+
required: false
|
|
19778
|
+
}]
|
|
19344
19779
|
}]
|
|
19345
19780
|
}
|
|
19346
19781
|
});
|
|
@@ -54971,6 +55406,6 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
54971
55406
|
}]
|
|
54972
55407
|
}
|
|
54973
55408
|
});
|
|
54974
|
-
export { ACCESS_DOMAINS, APP_CONTEXT_REF, APP_LINK, APP_LOGO_ICON, APP_LOGO_SOURCE, APP_THEME_COLOR, ASSET_BASE_URL, AUDIENCE_ICONS, AUDIENCE_LEVELS, AccordionBodyDirective, AccordionComponent, AccordionGroupComponent, ActionComponent, AnimatedGraphsComponent, AppAvailability, AppCardComponent, AppIdentityService, AppLogoComponent, AppLogoState, AppRelationType, AppTileComponent, AssetStore, AssetUrlPipe, Assets, AudiencePickerBoxComponent, AudiencePickerComponent, AuthActivityPageComponent, AuthApiService, AuthStore, AutosizeDirective, BadgeComponent, BandingComponent, BaseArrayInputComponent, BaseRootWebComponent, BaseWebComponent, BrowserLocaleService, ButtonComponent, ButtonGroupComponent, CALLING_APP_HEADER, COMPONENT_INPUT_REGISTRY, CardComponent, CardWrapperComponent, CarouselComponent, ChartComponent, ChatBubbleComponent, CheckboxGroupComponent, CheckboxInputComponent, ClearableInputComponent, ClipboardService, ColComponent, ColorPickerInputComponent, CommentItemComponent, CommentsApiService, CommentsComponent, CommentsStore, CompactNumberPipe, ComponentInputComponent, ComponentStepperComponent, ConfigComponent, ConfirmComponent, ContextMenuComponent, CustomIconClass, CustomIconEditComponent, DEFAULT_AUDIENCE, DEFAULT_DENIAL, DEFAULT_DOC_ALIGN, DEFAULT_DOC_DENSITY, DEFAULT_DOC_VARIANT, DEFAULT_FILTER_RANGE_MODE, DEFAULT_FILTER_VARIANT, DEFAULT_NAV_PARAM, DEFAULT_NAV_SEGMENT, DEFAULT_SECTION_CHART_RANGES, DEFAULT_SIZE, DOCK_MIN_PAGE_REMAINDER, DOCS_FOLDER, DOC_ACTION_ICONS, DOC_ALIGNS, DOC_DENSITIES, DOC_EDIT_ACTIONS, DOC_TOOLBAR_GROUPS, DOC_VARIANTS, DashboardCardComponent, DateInputComponent, DatePickerComponent, DeviceService, DocComponent, DocEditorComponent, DomService, Domain, DotGridComponent, DragListDirective, DragListItemDirective, DraggableDirective, DropdownInputComponent, FILTER_GROUP_CONTEXT, FILTER_RANGE_MODES, FILTER_VARIANTS, FLEX_VARIANTS, FOLDER_PICK_LISTENER, FORM_ASSET_FOLDER, FileService, FileUploadDirective, FileUploadInputComponent, FlexComponent, FlexItemComponent, FormGroupComponent, FrameComponent, FreezeService, GRID_BREAKPOINTS, GetNavService, HOST_SESSION, HeaderComponent, HeatSwatchComponent, HighlightDirective, HttpService, HttpSharingClient, ICON_SOURCE, IS_DESIGN_MODE, IS_SIDE_PANEL, IconComponent, ImgComponent, InputType, InstrumentScoreComponent, InterceptorObservables, JumbotronComponent, KeyValueComponent, LAYOUT_ASSET_FOLDER, LOADING_ACTIONS_REF, LOGIN_COMPONENT, LOGIN_STORE, LOGO_GLYPH_MAX_BYTES, LanguageComponent, ListComponent, LogoComponent, LogoGlyphInputComponent, MAG_SOCKET_EVENT, MHeroColorDirective, MHeroComponent, MODAL_REF, MODAL_STORE_REF, MOUNT_STATIC_SEGMENT, MOUNT_TOKEN, MRefDirective, MStepComponent, MURL_PARAM, MURL_SEP, ManifestEnrichmentService, MarginDirective, MenuComponent, ModalDirective, ModalRef, ModalStore, MoneyPipe, MultiRangeInputComponent, MultiselectInputComponent, MurlUrlSerializer, NAV_DEFAULT_MURL, NAV_ID_SEP, NAV_MAIN_BUTTONS, NAV_SEGMENT_RE, NAV_STORE_REF, NAV_WC_COMPONENTS, NAV_WIDGET_MAP, NavComponent, NavDetailsComponent, NavHeaderComponent, NavMenuComponent, NavStore, NavTrailComponent, NothingComponent, NotificationElementComponent, NotificationGroupComponent, NotificationPopupComponent, NotificationService, NotificationStore, NotificationType, NotificationWidgetComponent, ONE_ASSET_BASE_URL, OPTIONS_SOURCE, OVERLAY_WIDGETS, OneApp, OptionsSourceDirective, OverlayBodyComponent, OverlayRef, OverlayService, PLATFORM_BUTTON_NAV_IDS, PLATFORM_EXTENSIBLE_NAV_IDS, PLATFORM_NAV_MAP, PLATFORM_ROOT_CHILDREN, PLUGIN_FALLBACK_LANG, PLUGIN_OUTPUT_EVENT, PLUGIN_SCREENS, PRICE_LADDER_LEVELS, PRICE_LADDER_RULES, PaddingDirective, PaginationComponent, PanelComponent, PercentagePipe, PlaygroundComponent, PluginComponent, PluginInputComponent, PluginOutputComponent, PositionDirective, PriceLadderComponent, PriceLadderMarkComponent, PriceLadderSignalComponent, PwaInstallComponent, RECENT_SEARCH_LIMIT, REMOTE_BOOT_TIMEOUT_MS, REMOTE_PAGE_RELOAD, ROOT_NAV, RadioGroupComponent, RadioInputComponent, RangeInputComponent, RatingInputComponent, ReactiveElementComponent, RemoteComponent, RemoteLoaderService, ResizeElementComponent, RouteContainer, RowComponent, SCORE_TONE_COUNT, SEARCH_ANSWER_KEY, SEARCH_LABEL_KEY, SEARCH_QUERY, SEARCH_RESULTS_EVENT, SECTION_ACCORDION_GROUP, SECTION_CHART_CUSTOM_RANGE, SECTION_CHART_SCALES, SECTION_FORM_CONTEXT, SECTION_TABLE_VARIANTS, SHARED_ICONS, SHARING_CLIENT, SIZE_CONTEXT, SPACING_INWARD, SPLASH_ID, ScoreComponent, ScoreSetComponent, ScoreSetItemComponent, ScrollComponent, ScrollService, SearchPanelComponent, SearchStore, SearchUserPanelComponent, SectionAccordionDirective, SectionAccordionGroupDirective, SectionBackComponent, SectionBadgesComponent, SectionButtonGroupComponent, SectionCardComponent, SectionCarouselComponent, SectionChartComponent, SectionChartSeriesComponent, SectionComponent, SectionFilterComponent, SectionFilterGroupComponent, SectionFilterMenuComponent, SectionFilterPanelComponent, SectionFilterRangePanelComponent, SectionFooterComponent, SectionFormComponent, SectionFormItemComponent, SectionHeaderComponent, SectionHeroComponent, SectionPaginationComponent, SectionSearchComponent, SectionStepperComponent, SectionTableCellComponent, SectionTableComponent, SectionTableRowComponent, SectionTableSortDirection, SectionTableSortPipe, SectionTabsComponent, SectionToggleComponent, SectionToggleItemDirective, SelectableCardInputComponent, SelectorDirective, SettingsSearchBarComponent, SettingsSearchService, ShapeComponent, SharedStoreRegistry, SidePanelDirective, SignColorPipe, Size, SocketStore, SortComponent, StatComponent, StepComponent, StepperComponent, StepsComponent, StorageService, StrokeLinecap, StrokeLinejoin, SummaryComponent, SvgGeneratorComponent, SvgGeneratorService, SvgService, TOTAL_COLUMNS, TRANSLATION_SOURCE, TableComponent, TechnicalMeterComponent, TextInputComponent, TextOutputComponent, TextareaInputComponent, ThemeComponent, ThemeDataService, ThemeService, ThemeStore, TimeAgoPipe, TimelineComponent, ToListPipe, ToggleButtonComponent, ToggleInputComponent, ToggleRadioInputComponent, ToolTipDirective, TooltipComponent, TranslatePipe, TranslateService, TreeGridComponent, URL_SEP, USER_STORE_REF, USER_TAB_MAP, UniverseComponent, UserApiService, UserAvatarComponent, UserComponent, UserNavComponent, UserSettingsComponent, UserStore, WC_BUNDLE, WC_NAVIGATE_EVENT, WC_ROUTE_CHANGED_EVENT, WC_SEARCH_GROUPS, WIN_USER_TAB_HOOK, WIN_USER_TAB_KEY, WatermarkComponent, WcRouterStore, WrapperInputComponent, actionName, activeElementWithin, allowedCodes, anchorNavId, appColorBrand, appLogoShadowColor, appThemeColorFactory, applyColorsToElement, applyDocEdit, assetOptions, baseUnderHost, bootstrapMagApp, bootstrapPwaInstall, browserLocale, buildWcBaseUrl, calculateLuminance, calculateRanks, categoricalTone, cellText, checkDoc, checkFilterCondition, childNavId, claimDenial, classListSignal, coerceSize, cornerEdge, cornerSide, createLoadingState, createMap, createPlatformNavMap, createPluginElement, definePluginScreens, definedWcBundleOf, definedWcTierOf, deriveAvatarGradient, deriveContrastColor, deriveOppositeColor, derivePropertyName, docActionKey, docAssetCandidates, docProblemKey, docRemotePath, emailValidation, enumValue, escapeHtml, evaluate, evaluateBool, existsInMap, exposeScreens, exposedScreensOf, fieldBoolean, fieldNumber, fieldString, filterHoldsList, filterHoldsOneBound, filterHoldsOptions, filterHoldsRange, filterList, filterNumber, filterNumberList, filterOne, filterPanelOf, filterPanelWidth, filterRange, filterTreeGridRows, filterValueList, filterValues, flattenTreeGridRows, formatBadgeCount, formatGap, fullName, gapPct, generateClipPath, generateTransform, getClassList, getFromMap, getProperty, getScrollParent, getTierFromPreviewPath, getTreeGridRow, getUniqueId, getValue, hasErrorComputed, heatColor, heatShare, hexToRgb, hslToRgb, initMagmoniumApp, initialNotificationState, initialState, initials, injectAuthenticate, injectDefaultDenial, injectInstallApp, injectParentSize, injectScrollSticky, isBootRedirect, isButtonName, isCancelledComputed, isExtensiblePlatformNavId, isJson, isLadderRule, isLightAppColor, isLoadingComputed, isLocalhost, isNavCountConfig, isNavInstanceConfig, isNavMenuConfig, isNavRowsConfig, isNavVisibilityConfig, isPlatformNavId, isPlatformPanelNavId, isReadableOn, isScoreStale, isSize, isTierPreview, isUrlLocalhost, isValidNavId, isValidNavSegment, isWebComponent, ladderLevelOf, ladderScale, ladderSignals, layoutLanes, linkToId, linkToNav, loadingActions, logoGlyphMaskUrl, mInterceptor, manualValidation, matchFieldValidation, matchMount, maxLengthValidation, maxValidation, mergePlatformNav, mergeUnique, mergeUniqueBy, mergeUniqueWith, minAgeValidation, minLengthValidation, minValidation, miniMarkInlineToHtml, miniMarkToHtml, mountFor, mountPatternProblem, mountPatternText, mountSegmentOf, mountTokenOf, navIdChain, navIdFor, navIdSegment, navIdToRoutePath, navIdToSegments, navParamOf, navTailMatcher, navToId, navVisibilityGuard, nextSectionTableSort, normalizeAppColor, normalizeAssetOptions, notExistsInMap, offsetOfLine, outletPathOf, outletSegmentsOf, paintAppColor, parentNavId, parseAddress, parseColor, parseMountPattern, parsePatternNames, patternValidation, patternsValidation, permissionRefusal, pickCount, pickSupportedLanguage, picksMembers, platformNavWidgets, pluginTag, presetDefaultOption, privateGuard, processImageToSvg, provideAppContext, provideMagAppConfig, provideMagWcConfig, provideMagWcRoutes, provideModalComponents, provideMurlUrlSerializer, provideNavWidgets, provideOverlayWidgets, providePlatformNavWidgets, providePluginRuntime, provideSearch, provideSizeContext, provideUserTabs, publicGuard, readChartPoints, readFieldPatterns, readableAppColor, rebuildLogoGlyph, recordDefinedWcTier, registerSessionRenewal, remoteOutletRoute, renderAddress, renderDocument, requiredValidation, resolveConfigAsset, resolveIconSize, resolvePallet, resolvePatternRules, resolveSize, resolveSpacing, rgbToHex, rgbToHsl, rowHasChildren, samePatterns, scoreBand, scoreStanding, sectionTableColumnId, sectionTableColumnWidths, sectionTableFrozenCount, segmentsToNavId, setProperty, setTreeGridChildren, setWcLocalPort, setWcTier, settingsWidgets, shouldShowBadge, sortSectionTableRows, splashHtml, splitNavId, splitOnMatch, splitPath, stringToColor, tailRouteOf, toAttrBool, toAttrNumber, toCssLength, toHostNavId, toLength, toLocalNavId, toggleGroup, toggleTreeGridRow, toggleUid, unfetchedPlatformNav, ungroupedDocActions, urlValidation, wcLocalBaseOf, wcTierOf, withLevel };
|
|
55409
|
+
export { ACCESS_DOMAINS, APP_CONTEXT_REF, APP_LINK, APP_LOGO_ICON, APP_LOGO_SOURCE, APP_THEME_COLOR, ASSET_BASE_URL, AUDIENCE_ICONS, AUDIENCE_LEVELS, AccordionBodyDirective, AccordionComponent, AccordionGroupComponent, ActionComponent, AnimatedGraphsComponent, AppAvailability, AppCardComponent, AppIdentityService, AppLogoComponent, AppLogoState, AppRelationType, AppTileComponent, AssetStore, AssetUrlPipe, Assets, AudiencePickerBoxComponent, AudiencePickerComponent, AuthActivityPageComponent, AuthApiService, AuthStore, AutosizeDirective, BadgeComponent, BandingComponent, BaseArrayInputComponent, BaseRootWebComponent, BaseWebComponent, BrowserLocaleService, ButtonComponent, ButtonGroupComponent, CALLING_APP_HEADER, COMPONENT_INPUT_REGISTRY, CardComponent, CardWrapperComponent, CarouselComponent, ChartComponent, ChatBubbleComponent, CheckboxGroupComponent, CheckboxInputComponent, ClearableInputComponent, ClipboardService, ColComponent, ColorPickerInputComponent, CommentItemComponent, CommentsApiService, CommentsComponent, CommentsStore, CompactNumberPipe, ComponentInputComponent, ComponentStepperComponent, ConfigComponent, ConfirmComponent, ContextMenuComponent, CustomIconClass, CustomIconEditComponent, DEFAULT_AUDIENCE, DEFAULT_DENIAL, DEFAULT_DOC_ALIGN, DEFAULT_DOC_DENSITY, DEFAULT_DOC_VARIANT, DEFAULT_FILTER_RANGE_MODE, DEFAULT_FILTER_VARIANT, DEFAULT_NAV_PARAM, DEFAULT_NAV_SEGMENT, DEFAULT_SECTION_CHART_RANGES, DEFAULT_SIZE, DOCK_MIN_PAGE_REMAINDER, DOCS_FOLDER, DOC_ACTION_ICONS, DOC_ALIGNS, DOC_DENSITIES, DOC_EDIT_ACTIONS, DOC_TOOLBAR_GROUPS, DOC_VARIANTS, DashboardCardComponent, DateInputComponent, DatePickerComponent, DeviceService, DocComponent, DocEditorComponent, DomService, Domain, DotGridComponent, DragListDirective, DragListItemDirective, DraggableDirective, DropdownInputComponent, FILTER_GROUP_CONTEXT, FILTER_RANGE_MODES, FILTER_VARIANTS, FLEX_VARIANTS, FOLDER_PICK_LISTENER, FORM_ASSET_FOLDER, FileService, FileUploadDirective, FileUploadInputComponent, FlexComponent, FlexItemComponent, FormGroupComponent, FrameComponent, FreezeService, GRID_BREAKPOINTS, GetNavService, HOST_SESSION, HeaderComponent, HeatSwatchComponent, HighlightDirective, HttpService, HttpSharingClient, ICON_SOURCE, IS_DESIGN_MODE, IS_SIDE_PANEL, IconComponent, ImgComponent, InputType, InstrumentScoreComponent, InterceptorObservables, JumbotronComponent, KeyValueComponent, LAYOUT_ASSET_FOLDER, LOADING_ACTIONS_REF, LOGIN_COMPONENT, LOGIN_STORE, LOGO_GLYPH_MAX_BYTES, LanguageComponent, ListComponent, LogoComponent, LogoGlyphInputComponent, MAG_SOCKET_EVENT, MHeroColorDirective, MHeroComponent, MODAL_REF, MODAL_STORE_REF, MOUNT_STATIC_SEGMENT, MOUNT_TOKEN, MRefDirective, MStepComponent, MURL_PARAM, MURL_SEP, ManifestEnrichmentService, MarginDirective, MenuComponent, ModalDirective, ModalRef, ModalStore, MoneyPipe, MultiRangeInputComponent, MultiselectInputComponent, MurlUrlSerializer, NAV_DEFAULT_MURL, NAV_ID_SEP, NAV_MAIN_BUTTONS, NAV_SEGMENT_RE, NAV_STORE_REF, NAV_WC_COMPONENTS, NAV_WIDGET_MAP, NavComponent, NavDetailsComponent, NavHeaderComponent, NavMenuComponent, NavStore, NavTrailComponent, NothingComponent, NotificationElementComponent, NotificationGroupComponent, NotificationPopupComponent, NotificationService, NotificationStore, NotificationType, NotificationWidgetComponent, ONE_ASSET_BASE_URL, OPTIONS_SOURCE, OVERLAY_WIDGETS, OneApp, OptionsSourceDirective, OverlayBodyComponent, OverlayRef, OverlayService, PLATFORM_BUTTON_NAV_IDS, PLATFORM_EXTENSIBLE_NAV_IDS, PLATFORM_NAV_MAP, PLATFORM_ROOT_CHILDREN, PLUGIN_FALLBACK_LANG, PLUGIN_OUTPUT_EVENT, PLUGIN_SCREENS, PRICE_LADDER_LEVELS, PRICE_LADDER_RULES, PaddingDirective, PaginationComponent, PanelComponent, PercentagePipe, PlaygroundComponent, PluginComponent, PluginInputComponent, PluginOutputComponent, PositionDirective, PriceLadderComponent, PriceLadderMarkComponent, PriceLadderSignalComponent, PwaInstallComponent, RECENT_SEARCH_LIMIT, REMOTE_BOOT_TIMEOUT_MS, REMOTE_PAGE_RELOAD, ROOT_NAV, RadioGroupComponent, RadioInputComponent, RangeInputComponent, RatingInputComponent, ReactiveElementComponent, RemoteComponent, RemoteLoaderService, ResizeElementComponent, RouteContainer, RowComponent, SCORE_TONE_COUNT, SEARCH_ANSWER_KEY, SEARCH_LABEL_KEY, SEARCH_QUERY, SEARCH_RESULTS_EVENT, SECTION_ACCORDION_GROUP, SECTION_CHART_CUSTOM_RANGE, SECTION_CHART_SCALES, SECTION_FORM_CONTEXT, SECTION_TABLE_VARIANTS, SHARED_ICONS, SHARING_CLIENT, SIZE_CONTEXT, SPACING_INWARD, SPLASH_ID, ScoreComponent, ScoreSetComponent, ScoreSetItemComponent, ScrollComponent, ScrollService, SearchPanelComponent, SearchStore, SearchUserPanelComponent, SectionAccordionDirective, SectionAccordionGroupDirective, SectionBackComponent, SectionBadgesComponent, SectionButtonGroupComponent, SectionCardComponent, SectionCarouselComponent, SectionChartComponent, SectionChartSeriesComponent, SectionComponent, SectionFilterComponent, SectionFilterGroupComponent, SectionFilterMenuComponent, SectionFilterPanelComponent, SectionFilterRangePanelComponent, SectionFooterComponent, SectionFormComponent, SectionFormItemComponent, SectionHeaderComponent, SectionHeroComponent, SectionPaginationComponent, SectionSearchComponent, SectionStepperComponent, SectionTableCellComponent, SectionTableComponent, SectionTableRowComponent, SectionTableSortDirection, SectionTableSortPipe, SectionTabsComponent, SectionToggleComponent, SectionToggleItemDirective, SelectableCardInputComponent, SelectorDirective, SettingsSearchBarComponent, SettingsSearchService, ShapeComponent, SharedStoreRegistry, SidePanelDirective, SignColorPipe, Size, SocketStore, SortComponent, StatComponent, StepComponent, StepperComponent, StepsComponent, StorageService, StrokeLinecap, StrokeLinejoin, SummaryComponent, SvgGeneratorComponent, SvgGeneratorService, SvgService, TOTAL_COLUMNS, TRANSLATION_SOURCE, TableComponent, TechnicalMeterComponent, TextInputComponent, TextOutputComponent, TextareaInputComponent, ThemeComponent, ThemeDataService, ThemeService, ThemeStore, TimeAgoPipe, TimelineComponent, ToListPipe, ToggleButtonComponent, ToggleInputComponent, ToggleRadioInputComponent, ToolTipDirective, TooltipComponent, TranslatePipe, TranslateService, TreeGridComponent, URL_SEP, USER_STORE_REF, USER_TAB_MAP, UniverseComponent, UserApiService, UserAvatarComponent, UserComponent, UserNavComponent, UserSettingsComponent, UserStore, WC_BUNDLE, WC_NAVIGATE_EVENT, WC_ROUTE_CHANGED_EVENT, WC_SEARCH_GROUPS, WIN_USER_TAB_HOOK, WIN_USER_TAB_KEY, WatermarkComponent, WcRouterStore, WrapperInputComponent, actionName, activeElementWithin, allowedCodes, anchorNavId, appColorBrand, appLogoShadowColor, appThemeColorFactory, applyColorsToElement, applyDocEdit, assetOptions, baseUnderHost, bootstrapMagApp, bootstrapPwaInstall, browserLocale, buildWcBaseUrl, calculateLuminance, calculateRanks, categoricalTone, cellText, checkDoc, checkFilterCondition, childNavId, claimDenial, classListSignal, coerceSize, cornerEdge, cornerSide, createLoadingState, createMap, createPlatformNavMap, createPluginElement, definePluginScreens, definedWcBundleOf, definedWcTierOf, deriveAvatarGradient, deriveContrastColor, deriveOppositeColor, derivePropertyName, docActionKey, docAssetCandidates, docProblemKey, docRemotePath, emailValidation, enumValue, escapeHtml, evaluate, evaluateBool, existsInMap, exposeScreens, exposedScreensOf, fieldBoolean, fieldNumber, fieldString, filterHoldsList, filterHoldsOneBound, filterHoldsOptions, filterHoldsRange, filterList, filterNumber, filterNumberList, filterOne, filterPanelOf, filterPanelWidth, filterRange, filterTreeGridRows, filterValueList, filterValues, flattenTreeGridRows, formatBadgeCount, formatGap, fullName, gapPct, generateClipPath, generateTransform, getClassList, getFromMap, getProperty, getScrollParent, getTierFromPreviewPath, getTreeGridRow, getUniqueId, getValue, hasErrorComputed, heatColor, heatShare, hexToRgb, hslToRgb, initMagmoniumApp, initialNotificationState, initialState, initials, injectAuthenticate, injectDefaultDenial, injectInstallApp, injectParentSize, injectScrollSticky, isBootRedirect, isButtonName, isCancelledComputed, isExtensiblePlatformNavId, isJson, isLadderRule, isLightAppColor, isLoadingComputed, isLocalhost, isNavCountConfig, isNavInstanceConfig, isNavMenuConfig, isNavRowsConfig, isNavVisibilityConfig, isPlatformNavId, isPlatformPanelNavId, isReadableOn, isScoreStale, isSize, isTierPreview, isUrlLocalhost, isValidNavId, isValidNavSegment, isWebComponent, ladderLevelOf, ladderScale, ladderSignals, layoutLanes, linkToId, linkToNav, loadingActions, logoGlyphMaskUrl, mInterceptor, manualValidation, matchFieldValidation, matchMount, maxLengthValidation, maxValidation, mergePlatformNav, mergeUnique, mergeUniqueBy, mergeUniqueWith, minAgeValidation, minLengthValidation, minValidation, miniMarkInlineToHtml, miniMarkToHtml, mountFor, mountPatternProblem, mountPatternText, mountSegmentOf, mountTokenOf, navIdChain, navIdFor, navIdSegment, navIdToRoutePath, navIdToSegments, navParamOf, navTailMatcher, navToId, navVisibilityGuard, nextSectionTableSort, normalizeAppColor, normalizeAssetOptions, notExistsInMap, offsetOfLine, outletPathOf, outletSegmentsOf, paintAppColor, parentNavId, parseAddress, parseColor, parseMountPattern, parsePatternNames, patternValidation, patternsValidation, permissionRefusal, pickCount, pickSupportedLanguage, picksMembers, platformNavWidgets, pluginTag, presetDefaultOption, privateGuard, processImageToSvg, provideAppContext, provideMagAppConfig, provideMagWcConfig, provideMagWcRoutes, provideModalComponents, provideMurlUrlSerializer, provideNavWidgets, provideOverlayWidgets, providePlatformNavWidgets, providePluginRuntime, provideSearch, provideSizeContext, provideUserTabs, publicGuard, readChartPoints, readFieldPatterns, readableAppColor, rebuildLogoGlyph, recordDefinedWcTier, registerSessionRenewal, remoteOutletRoute, renderAddress, renderDocument, requiredValidation, resolveConfigAsset, resolveIconSize, resolvePallet, resolvePatternRules, resolveSize, resolveSpacing, rgbToHex, rgbToHsl, rowHasChildren, samePatterns, scoreBand, scoreStanding, sectionTableColumnId, sectionTableColumnWidths, sectionTableFrozenCount, segmentsToNavId, setInMap, setProperty, setTreeGridChildren, setWcLocalPort, setWcTier, settingsWidgets, shouldShowBadge, sortSectionTableRows, splashHtml, splitNavId, splitOnMatch, splitPath, stringToColor, tailRouteOf, toAttrBool, toAttrNumber, toCssLength, toHostNavId, toLength, toLocalNavId, toggleGroup, toggleTreeGridRow, toggleUid, unfetchedPlatformNav, ungroupedDocActions, urlValidation, wcLocalBaseOf, wcTierOf, withLevel };
|
|
54975
55410
|
|
|
54976
55411
|
//# sourceMappingURL=magmonium-one.mjs.map
|