@firestitch/report 18.17.0 → 18.17.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/app/reports/components/component-grid/report-grid-formatter.mjs +26 -4
- package/esm2022/app/reports/export/report-grid-export.mjs +5 -4
- package/fesm2022/{firestitch-report-echarts-7AUAX6RO.mjs → firestitch-report-echarts-rzMA7zhn.mjs} +2 -2
- package/fesm2022/{firestitch-report-echarts-7AUAX6RO.mjs.map → firestitch-report-echarts-rzMA7zhn.mjs.map} +1 -1
- package/fesm2022/{firestitch-report-firestitch-report-DgeCapUH.mjs → firestitch-report-firestitch-report-DRkNBMic.mjs} +30 -10
- package/fesm2022/firestitch-report-firestitch-report-DRkNBMic.mjs.map +1 -0
- package/fesm2022/firestitch-report.mjs +1 -1
- package/package.json +2 -2
- package/fesm2022/firestitch-report-firestitch-report-DgeCapUH.mjs.map +0 -1
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { GridFieldType, GridFormat, GridUnits, } from '@firestitch/grid';
|
|
2
|
+
import { ReportChartDateLabel } from '../../enums/report-chart-date-label.enum';
|
|
2
3
|
import { ReportNumberUnits } from '../../enums/report-number-units.enum';
|
|
3
4
|
import { ReportValueFormat } from '../../enums/report-value-format.enum';
|
|
4
5
|
import { formatNumber, formatOutputValue, formatReportDate, numberFormat } from '../../format';
|
|
6
|
+
import { formatPeriodLabel } from '../../option-builder';
|
|
7
|
+
import { GRID_GRANULARITIES } from '../../report-grid-layout';
|
|
5
8
|
const VALUE_FORMATS = {
|
|
6
9
|
[GridFormat.Number]: ReportValueFormat.Number,
|
|
7
10
|
[GridFormat.Percent]: ReportValueFormat.Percent,
|
|
@@ -20,9 +23,10 @@ const NO = 'No';
|
|
|
20
23
|
// A grid tile's formatter: every value written as the report writes it on
|
|
21
24
|
// a list today. An output number reads through formatOutputValue with what
|
|
22
25
|
// the report line says the output holds (a change is signed, a missing prior
|
|
23
|
-
// reads as the list's dash); a plain number through formatNumber; a
|
|
24
|
-
//
|
|
25
|
-
// precision and units win over the
|
|
26
|
+
// reads as the list's dash); a plain number through formatNumber; a key's
|
|
27
|
+
// digits as they are; a date at its grain in the report's locale, an instant
|
|
28
|
+
// in its zone. The placement's format, precision and units win over the
|
|
29
|
+
// field's.
|
|
26
30
|
export function reportGridFormatter(context) {
|
|
27
31
|
return {
|
|
28
32
|
format: (value, field, placement) => formatGridValue(context, value, field, placement),
|
|
@@ -37,6 +41,7 @@ function formatGridValue(context, value, field, placement) {
|
|
|
37
41
|
case GridFieldType.Number:
|
|
38
42
|
return formatGridNumber(context, value, field, placement);
|
|
39
43
|
case GridFieldType.Date:
|
|
44
|
+
return formatGridDate(context, value, field, placement);
|
|
40
45
|
case GridFieldType.Datetime:
|
|
41
46
|
return formatReportDate(value, context.timezone, context.format.locale);
|
|
42
47
|
case GridFieldType.Boolean:
|
|
@@ -46,12 +51,29 @@ function formatGridValue(context, value, field, placement) {
|
|
|
46
51
|
}
|
|
47
52
|
}
|
|
48
53
|
function formatGridNumber(context, value, field, placement) {
|
|
54
|
+
// A key, such as a client's id, is a name: its digits print as they are, never grouped
|
|
55
|
+
if (field.identifier && !isAggregate(placement)) {
|
|
56
|
+
return String(value);
|
|
57
|
+
}
|
|
49
58
|
const spec = numberSpec(field, placement);
|
|
50
59
|
const output = isAggregate(placement) ? null : context.report?.outputs?.[field.name];
|
|
51
60
|
return output
|
|
52
61
|
? formatOutputValue(value, output, spec, context.format).text
|
|
53
62
|
: formatNumber(value, spec, context.format);
|
|
54
63
|
}
|
|
64
|
+
// A calendar date at the grain it prints at: the placement's, else the
|
|
65
|
+
// field's own, which on a time axis is the report's group-by. A quarter reads
|
|
66
|
+
// "Q3 2023", a month "Jul 2023" and a year "2023", as the report's charts
|
|
67
|
+
// label them, rather than as their first day; a week, like a chart's, reads as
|
|
68
|
+
// the day it starts. A day reads as the report writes a date.
|
|
69
|
+
function formatGridDate(context, value, field, placement) {
|
|
70
|
+
const granularity = placement?.granularity ?? field.granularities?.[0];
|
|
71
|
+
const chartGranularity = Object.keys(GRID_GRANULARITIES)
|
|
72
|
+
.find((name) => GRID_GRANULARITIES[name] === granularity);
|
|
73
|
+
return chartGranularity && chartGranularity !== 'day' && typeof value === 'string'
|
|
74
|
+
? formatPeriodLabel(value.slice(0, 10), chartGranularity, false, context.format.locale, ReportChartDateLabel.Long)
|
|
75
|
+
: formatReportDate(value, context.timezone, context.format.locale);
|
|
76
|
+
}
|
|
55
77
|
// The format, precision and units a number is written with: the placement's,
|
|
56
78
|
// else the field's.
|
|
57
79
|
function numberSpec(field, placement) {
|
|
@@ -91,4 +113,4 @@ function readGridNumber(context, text, field, placement) {
|
|
|
91
113
|
function decimalMark(locale) {
|
|
92
114
|
return numberFormat(locale, {}).formatToParts(1.5).find((part) => part.type === 'decimal')?.value ?? '.';
|
|
93
115
|
}
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWdyaWQtZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9yZXBvcnRzL2NvbXBvbmVudHMvY29tcG9uZW50LWdyaWQvcmVwb3J0LWdyaWQtZm9ybWF0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDa0IsYUFBYSxFQUFFLFVBQVUsRUFBNEIsU0FBUyxHQUN0RixNQUFNLGtCQUFrQixDQUFDO0FBRTFCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBZ0IvRixNQUFNLGFBQWEsR0FBb0Q7SUFDckUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsaUJBQWlCLENBQUMsTUFBTTtJQUM3QyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxPQUFPO0lBQy9DLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLFFBQVE7Q0FDbEQsQ0FBQztBQUVGLE1BQU0sWUFBWSxHQUFtRDtJQUNuRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO0lBQ3hDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLFNBQVM7SUFDbEQsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsaUJBQWlCLENBQUMsUUFBUTtJQUNoRCxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO0NBQ3pDLENBQUM7QUFFRixpRkFBaUY7QUFDakYsTUFBTSxhQUFhLEdBQXFDLEVBQUUsQ0FBQyxFQUFF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QUFDO0lBQ3pELE1BQU0sTUFBTSxHQUFHLE9BQU87U0FDbkIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEUsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLE1BQU0sS0FBSyxHQUFHLElBQUksTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBRTlGLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxTQUFTLEVBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxVQUFVLENBQUMsT0FBTyxDQUFDO0lBRTdFLE9BQU8sU0FBUyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7QUFDMUUsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLE1BQWM7SUFDakMsT0FBTyxZQUFZLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLEVBQUUsS0FBSyxJQUFJLEdBQUcsQ0FBQztBQUMzRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgR3JpZERldGFpbCwgR3JpZEZpZWxkLCBHcmlkRmllbGRUeXBlLCBHcmlkRm9ybWF0LCBHcmlkRm9ybWF0dGVyLCBHcmlkTGV2ZWwsIEdyaWRVbml0cywgR3JpZFZhbHVlLFxufSBmcm9tICdAZmlyZXN0aXRjaC9ncmlkJztcblxuaW1wb3J0IHsgUmVwb3J0TnVtYmVyVW5pdHMgfSBmcm9tICcuLi8uLi9lbnVtcy9yZXBvcnQtbnVtYmVyLXVuaXRzLmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0VmFsdWVGb3JtYXQgfSBmcm9tICcuLi8uLi9lbnVtcy9yZXBvcnQtdmFsdWUtZm9ybWF0LmVudW0nO1xuaW1wb3J0IHsgZm9ybWF0TnVtYmVyLCBmb3JtYXRPdXRwdXRWYWx1ZSwgZm9ybWF0UmVwb3J0RGF0ZSwgbnVtYmVyRm9ybWF0IH0gZnJvbSAnLi4vLi4vZm9ybWF0JztcbmltcG9ydCB7IFJlcG9ydEdyaWRSZXBvcnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3JlcG9ydC1ncmlkLXJlcG9ydC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTnVtYmVyRm9ybWF0U3BlYywgUmVwb3J0Rm9ybWF0Q29udGV4dCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcmVwb3J0LmludGVyZmFjZSc7XG5cblxudHlwZSBHcmlkUGxhY2VtZW50ID0gR3JpZFZhbHVlIHwgR3JpZERldGFpbCB8IEdyaWRMZXZlbDtcblxuLy8gV2hhdCBhIGdyaWQgdGlsZSBpcyB3cml0dGVuIHdpdGg6IHRoZSByZXBvcnQncyBsb2NhbGUsIGN1cnJlbmN5IGFuZFxuLy8gcGVyY2VudCBmb3JtLCB0aGUgem9uZSBpdHMgaW5zdGFudHMgcmVhZCBpbiwgYW5kIHRoZSByZXBvcnQgbGluZSBvZiBpdHNcbi8vIGxhdGVzdCByZWFkICh3aGF0IGVhY2ggb3V0cHV0IGZpZWxkIGhvbGRzKS5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0R3JpZEZvcm1hdENvbnRleHQge1xuICBmb3JtYXQ6IFJlcG9ydEZvcm1hdENvbnRleHQ7XG4gIHRpbWV6b25lOiBzdHJpbmc7XG4gIHJlcG9ydDogUmVwb3J0R3JpZFJlcG9ydCB8IG51bGw7XG59XG5cbmNvbnN0IFZBTFVFX0ZPUk1BVFM6IFJlYWRvbmx5PFJlY29yZDxHcmlkRm9ybWF0LCBSZXBvcnRWYWx1ZUZvcm1hdD4+ID0ge1xuICBbR3JpZEZvcm1hdC5OdW1iZXJdOiBSZXBvcnRWYWx1ZUZvcm1hdC5OdW1iZXIsXG4gIFtHcmlkRm9ybWF0LlBlcmNlbnRdOiBSZXBvcnRWYWx1ZUZvcm1hdC5QZXJjZW50LFxuICBbR3JpZEZvcm1hdC5DdXJyZW5jeV06IFJlcG9ydFZhbHVlRm9ybWF0LkN1cnJlbmN5LFxufTtcblxuY29uc3QgTlVNQkVSX1VOSVRTOiBSZWFkb25seTxSZWNvcmQ8R3JpZFVuaXRzLCBSZXBvcnROdW1iZXJVbml0cz4+ID0ge1xuICBbR3JpZFVuaXRzLk5vbmVdOiBSZXBvcnROdW1iZXJVbml0cy5Ob25lLFxuICBbR3JpZFVuaXRzLlRob3VzYW5kc106IFJlcG9ydE51bWJlclVuaXRzLlRob3VzYW5kcyxcbiAgW0dyaWRVbml0cy5NaWxsaW9uc106IFJlcG9ydE51bWJlclVuaXRzLk1pbGxpb25zLFxuICBbR3JpZFVuaXRzLkF1dG9dOiBSZXBvcnROdW1iZXJVbml0cy5BdXRvLFxufTtcblxuLy8gV2hhdCBhbiBhYmJyZXZpYXRlZCBudW1iZXIncyBzdWZmaXggbXVsdGlwbGllcyBpdCBieSwgd2hlbiBhIHZpZXdlciB0eXBlcyBvbmUuXG5jb25zdCBVTklUX1NVRkZJWEVTOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBudW1iZXI+PiA9IHsgazogMWUzLCBtOiAxZTYgfTtcblxuY29uc3QgWUVTID0gJ1llcyc7XG5jb25zdCBOTyA9ICdObyc7XG5cbi8vIEEgZ3JpZCB0aWxlJ3MgZm9ybWF0dGVyOiBldmVyeSB2YWx1ZSB3cml0dGVuIGFzIHRoZSByZXBvcnQgd3JpdGVzIGl0IG9uXG4vLyBhIGxpc3QgdG9kYXkuIEFuIG91dHB1dCBudW1iZXIgcmVhZHMgdGhyb3VnaCBmb3JtYXRPdXRwdXRWYWx1ZSB3aXRoIHdoYXRcbi8vIHRoZSByZXBvcnQgbGluZSBzYXlzIHRoZSBvdXRwdXQgaG9sZHMgKGEgY2hhbmdlIGlzIHNpZ25lZCwgYSBtaXNzaW5nIHByaW9yXG4vLyByZWFkcyBhcyB0aGUgbGlzdCdzIGRhc2gpOyBhIHBsYWluIG51bWJlciB0aHJvdWdoIGZvcm1hdE51bWJlcjsgYSBkYXRlIGluXG4vLyB0aGUgcmVwb3J0J3MgbG9jYWxlLCBhbiBpbnN0YW50IGluIGl0cyB6b25lLiBUaGUgcGxhY2VtZW50J3MgZm9ybWF0LFxuLy8gcHJlY2lzaW9uIGFuZCB1bml0cyB3aW4gb3ZlciB0aGUgZmllbGQncy5cbmV4cG9ydCBmdW5jdGlvbiByZXBvcnRHcmlkRm9ybWF0dGVyKGNvbnRleHQ6IFJlcG9ydEdyaWRGb3JtYXRDb250ZXh0KTogR3JpZEZvcm1hdHRlciB7XG4gIHJldHVybiB7XG4gICAgZm9ybWF0OiAodmFsdWUsIGZpZWxkLCBwbGFjZW1lbnQpID0+IGZvcm1hdEdyaWRWYWx1ZShjb250ZXh0LCB2YWx1ZSwgZmllbGQsIHBsYWNlbWVudCksXG4gICAgdG9OdW1iZXI6ICh0ZXh0LCBmaWVsZCwgcGxhY2VtZW50KSA9PiByZWFkR3JpZE51bWJlcihjb250ZXh0LCB0ZXh0LCBmaWVsZCwgcGxhY2VtZW50KSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0R3JpZFZhbHVlKFxuICBjb250ZXh0OiBSZXBvcnRHcmlkRm9ybWF0Q29udGV4dCxcbiAgdmFsdWU6IHVua25vd24sXG4gIGZpZWxkOiBHcmlkRmllbGQsXG4gIHBsYWNlbWVudD86IEdyaWRQbGFjZW1lbnQsXG4pOiBzdHJpbmcge1xuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICBjYXNlIEdyaWRGaWVsZFR5cGUuTnVtYmVyOlxuICAgICAgcmV0dXJuIGZvcm1hdEdyaWROdW1iZXIoY29udGV4dCwgdmFsdWUsIGZpZWxkLCBwbGFjZW1lbnQpO1xuICAgIGNhc2UgR3JpZEZpZWxkVHlwZS5EYXRlOlxuICAgIGNhc2UgR3JpZEZpZWxkVHlwZS5EYXRldGltZTpcbiAgICAgIHJldHVybiBmb3JtYXRSZXBvcnREYXRlKHZhbHVlLCBjb250ZXh0LnRpbWV6b25lLCBjb250ZXh0LmZvcm1hdC5sb2NhbGUpO1xuICAgIGNhc2UgR3JpZEZpZWxkVHlwZS5Cb29sZWFuOlxuICAgICAgcmV0dXJuIHZhbHVlID8gWUVTIDogTk87XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBvcHRpb25MYWJlbCh2YWx1ZSwgZmllbGQpID8/IFN0cmluZyh2YWx1ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZm9ybWF0R3JpZE51bWJlcihcbiAgY29udGV4dDogUmVwb3J0R3JpZEZvcm1hdENvbnRleHQsXG4gIHZhbHVlOiB1bmtub3duLFxuICBmaWVsZDogR3JpZEZpZWxkLFxuICBwbGFjZW1lbnQ/OiBHcmlkUGxhY2VtZW50LFxuKTogc3RyaW5nIHtcbiAgY29uc3Qgc3BlYyA9IG51bWJlclNwZWMoZmllbGQsIHBsYWNlbWVudCk7XG4gIGNvbnN0IG91dHB1dCA9IGlzQWdncmVnYXRlKHBsYWNlbWVudCkgPyBudWxsIDogY29udGV4dC5yZXBvcnQ/Lm91dHB1dHM/LltmaWVsZC5uYW1lXTtcblxuICByZXR1cm4gb3V0cHV0XG4gICAgPyBmb3JtYXRPdXRwdXRWYWx1ZSh2YWx1ZSwgb3V0cHV0LCBzcGVjLCBjb250ZXh0LmZvcm1hdCkudGV4dFxuICAgIDogZm9ybWF0TnVtYmVyKHZhbHVlLCBzcGVjLCBjb250ZXh0LmZvcm1hdCk7XG59XG5cbi8vIFRoZSBmb3JtYXQsIHByZWNpc2lvbiBhbmQgdW5pdHMgYSBudW1iZXIgaXMgd3JpdHRlbiB3aXRoOiB0aGUgcGxhY2VtZW50J3MsXG4vLyBlbHNlIHRoZSBmaWVsZCdzLlxuZnVuY3Rpb24gbnVtYmVyU3BlYyhmaWVsZDogR3JpZEZpZWxkLCBwbGFjZW1lbnQ/OiBHcmlkUGxhY2VtZW50KTogTnVtYmVyRm9ybWF0U3BlYyB7XG4gIGNvbnN0IHBsYWNlZCA9IHBsYWNlbWVudCBhcyBHcmlkVmFsdWUgfCBHcmlkRGV0YWlsIHwgdW5kZWZpbmVkO1xuICBjb25zdCBmb3JtYXQgPSBwbGFjZWQ/LmZvcm1hdCA/PyBmaWVsZC5mb3JtYXQ7XG4gIGNvbnN0IHByZWNpc2lvbiA9IHBsYWNlZD8ucHJlY2lzaW9uID8/IGZpZWxkLnByZWNpc2lvbjtcbiAgY29uc3QgdW5pdHMgPSBwbGFjZWQ/LnVuaXRzID8/IGZpZWxkLnVuaXRzO1xuXG4gIHJldHVybiB7XG4gICAgLi4uKGZvcm1hdCA/IHsgZm9ybWF0OiBWQUxVRV9GT1JNQVRTW2Zvcm1hdF0gfSA6IHt9KSxcbiAgICAuLi4odHlwZW9mIHByZWNpc2lvbiA9PT0gJ251bWJlcicgPyB7IHByZWNpc2lvbiB9IDoge30pLFxuICAgIC4uLih1bml0cyA/IHsgdW5pdHM6IE5VTUJFUl9VTklUU1t1bml0c10gfSA6IHt9KSxcbiAgfTtcbn1cblxuLy8gQSB2YWx1ZSBwbGFjZW1lbnQgaXMgYW4gYWdncmVnYXRlIG9mIHRoZSBmaWVsZCwgbm90IHRoZSBvdXRwdXQgaXRzZWxmLlxuZnVuY3Rpb24gaXNBZ2dyZWdhdGUocGxhY2VtZW50PzogR3JpZFBsYWNlbWVudCk6IGJvb2xlYW4ge1xuICByZXR1cm4gISEocGxhY2VtZW50IGFzIEdyaWRWYWx1ZSB8IHVuZGVmaW5lZCk/LmFnZ3JlZ2F0aW9uO1xufVxuXG5mdW5jdGlvbiBvcHRpb25MYWJlbCh2YWx1ZTogdW5rbm93biwgZmllbGQ6IEdyaWRGaWVsZCk6IHN0cmluZyB8IG51bGwge1xuICByZXR1cm4gZmllbGQub3B0aW9ucz8uZmluZCgob3B0aW9uKSA9PiBvcHRpb24ua2V5ID09PSB2YWx1ZSk/LmxhYmVsID8/IG51bGw7XG59XG5cbi8vIEEgbnVtYmVyIGEgdmlld2VyIHR5cGVkLCByZWFkIGluIHRoZSByZXBvcnQncyBsb2NhbGU6IGl0cyBncm91cGluZyBkcm9wcGVkLFxuLy8gaXRzIGRlY2ltYWwgbWFyayByZWFkLCBhIEsgb3IgTSBzdWZmaXggbXVsdGlwbGllZCBvdXQsIGFuZCBhIHBlcmNlbnQgb2YgYVxuLy8gcmF0aW8tcGVyY2VudCByZXBvcnQgcmVhZCBiYWNrIHRvIGl0cyByYXRpby4gbnVsbCB3aGVuIGl0IGlzIG5vIG51bWJlci5cbmZ1bmN0aW9uIHJlYWRHcmlkTnVtYmVyKFxuICBjb250ZXh0OiBSZXBvcnRHcmlkRm9ybWF0Q29udGV4dCxcbiAgdGV4dDogc3RyaW5nLFxuICBmaWVsZDogR3JpZEZpZWxkLFxuICBwbGFjZW1lbnQ/OiBHcmlkVmFsdWUgfCBHcmlkRGV0YWlsLFxuKTogbnVtYmVyIHwgbnVsbCB7XG4gIGNvbnN0IGRlY2ltYWwgPSBkZWNpbWFsTWFyayhjb250ZXh0LmZvcm1hdC5sb2NhbGUpO1xuICBjb25zdCB0cmltbWVkID0gdGV4dC50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgY29uc3QgbXVsdGlwbGllciA9IFVOSVRfU1VGRklYRVNbdHJpbW1lZC5zbGljZSgtMSldID8/IDE7XG4gIGNvbnN0IGRpZ2l0cyA9IHRyaW1tZWRcbiAgICAuc3BsaXQoZGVjaW1hbCkubWFwKChwYXJ0KSA9PiBwYXJ0LnJlcGxhY2UoL1teMC05LV0vZywgJycpKS5qb2luKCcuJyk7XG4gIGNvbnN0IG51bWJlciA9IGRpZ2l0cyAmJiBkaWdpdHMgIT09ICctJyAmJiBkaWdpdHMgIT09ICcuJyA/IE51bWJlcihkaWdpdHMpICogbXVsdGlwbGllciA6IE5hTjtcblxuICBpZiAoIU51bWJlci5pc0Zpbml0ZShudW1iZXIpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBpc1BlcmNlbnQgPSAocGxhY2VtZW50Py5mb3JtYXQgPz8gZmllbGQuZm9ybWF0KSA9PT0gR3JpZEZvcm1hdC5QZXJjZW50O1xuXG4gIHJldHVybiBpc1BlcmNlbnQgJiYgY29udGV4dC5mb3JtYXQucmF0aW9QZXJjZW50ID8gbnVtYmVyIC8gMTAwIDogbnVtYmVyO1xufVxuXG5mdW5jdGlvbiBkZWNpbWFsTWFyayhsb2NhbGU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBudW1iZXJGb3JtYXQobG9jYWxlLCB7fSkuZm9ybWF0VG9QYXJ0cygxLjUpLmZpbmQoKHBhcnQpID0+IHBhcnQudHlwZSA9PT0gJ2RlY2ltYWwnKT8udmFsdWUgPz8gJy4nO1xufVxuIl19
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWdyaWQtZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9yZXBvcnRzL2NvbXBvbmVudHMvY29tcG9uZW50LWdyaWQvcmVwb3J0LWdyaWQtZm9ybWF0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDa0IsYUFBYSxFQUFFLFVBQVUsRUFBNEIsU0FBUyxHQUN0RixNQUFNLGtCQUFrQixDQUFDO0FBRTFCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRy9GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBYzlELE1BQU0sYUFBYSxHQUFvRDtJQUNyRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxNQUFNO0lBQzdDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLGlCQUFpQixDQUFDLE9BQU87SUFDL0MsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsaUJBQWlCLENBQUMsUUFBUTtDQUNsRCxDQUFDO0FBRUYsTUFBTSxZQUFZLEdBQW1EO0lBQ25FLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLGlCQUFpQixDQUFDLElBQUk7SUFDeEMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsU0FBUztJQUNsRCxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMs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bnQiOlsiaW1wb3J0IHtcbiAgR3JpZERldGFpbCwgR3JpZEZpZWxkLCBHcmlkRmllbGRUeXBlLCBHcmlkRm9ybWF0LCBHcmlkRm9ybWF0dGVyLCBHcmlkTGV2ZWwsIEdyaWRVbml0cywgR3JpZFZhbHVlLFxufSBmcm9tICdAZmlyZXN0aXRjaC9ncmlkJztcblxuaW1wb3J0IHsgUmVwb3J0Q2hhcnREYXRlTGFiZWwgfSBmcm9tICcuLi8uLi9lbnVtcy9yZXBvcnQtY2hhcnQtZGF0ZS1sYWJlbC5lbnVtJztcbmltcG9ydCB7IFJlcG9ydE51bWJlclVuaXRzIH0gZnJvbSAnLi4vLi4vZW51bXMvcmVwb3J0LW51bWJlci11bml0cy5lbnVtJztcbmltcG9ydCB7IFJlcG9ydFZhbHVlRm9ybWF0IH0gZnJvbSAnLi4vLi4vZW51bXMvcmVwb3J0LXZhbHVlLWZvcm1hdC5lbnVtJztcbmltcG9ydCB7IGZvcm1hdE51bWJlciwgZm9ybWF0T3V0cHV0VmFsdWUsIGZvcm1hdFJlcG9ydERhdGUsIG51bWJlckZvcm1hdCB9IGZyb20gJy4uLy4uL2Zvcm1hdCc7XG5pbXBvcnQgeyBSZXBvcnRHcmlkUmVwb3J0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9yZXBvcnQtZ3JpZC1yZXBvcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IENoYXJ0R3JhbnVsYXJpdHksIE51bWJlckZvcm1hdFNwZWMsIFJlcG9ydEZvcm1hdENvbnRleHQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3JlcG9ydC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgZm9ybWF0UGVyaW9kTGFiZWwgfSBmcm9tICcuLi8uLi9vcHRpb24tYnVpbGRlcic7XG5pbXBvcnQgeyBHUklEX0dSQU5VTEFSSVRJRVMgfSBmcm9tICcuLi8uLi9yZXBvcnQtZ3JpZC1sYXlvdXQnO1xuXG5cbnR5cGUgR3JpZFBsYWNlbWVudCA9IEdyaWRWYWx1ZSB8IEdyaWREZXRhaWwgfCBHcmlkTGV2ZWw7XG5cbi8vIFdoYXQgYSBncmlkIHRpbGUgaXMgd3JpdHRlbiB3aXRoOiB0aGUgcmVwb3J0J3MgbG9jYWxlLCBjdXJyZW5jeSBhbmRcbi8vIHBlcmNlbnQgZm9ybSwgdGhlIHpvbmUgaXRzIGluc3RhbnRzIHJlYWQgaW4sIGFuZCB0aGUgcmVwb3J0IGxpbmUgb2YgaXRzXG4vLyBsYXRlc3QgcmVhZCAod2hhdCBlYWNoIG91dHB1dCBmaWVsZCBob2xkcykuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEdyaWRGb3JtYXRDb250ZXh0IHtcbiAgZm9ybWF0OiBSZXBvcnRGb3JtYXRDb250ZXh0O1xuICB0aW1lem9uZTogc3RyaW5nO1xuICByZXBvcnQ6IFJlcG9ydEdyaWRSZXBvcnQgfCBudWxsO1xufVxuXG5jb25zdCBWQUxVRV9GT1JNQVRTOiBSZWFkb25seTxSZWNvcmQ8R3JpZEZvcm1hdCwgUmVwb3J0VmFsdWVGb3JtYXQ+PiA9IHtcbiAgW0dyaWRGb3JtYXQuTnVtYmVyXTogUmVwb3J0VmFsdWVGb3JtYXQuTnVtYmVyLFxuICBbR3JpZEZvcm1hdC5QZXJjZW50XTogUmVwb3J0VmFsdWVGb3JtYXQuUGVyY2VudCxcbiAgW0dyaWRGb3JtYXQuQ3VycmVuY3ldOiBSZXBvcnRWYWx1ZUZvcm1hdC5DdXJyZW5jeSxcbn07XG5cbmNvbnN0IE5VTUJFUl9VTklUUzogUmVhZG9ubHk8UmVjb3JkPEdyaWRVbml0cywgUmVwb3J0TnVtYmVyVW5pdHM+PiA9IHtcbiAgW0dyaWRVbml0cy5Ob25lXTogUmVwb3J0TnVtYmVyVW5pdHMuTm9uZSxcbiAgW0dyaWRVbml0cy5UaG91c2FuZHNdOiBSZXBvcnROdW1iZXJVbml0cy5UaG91c2FuZHMsXG4gIFtHcmlkVW5pdHMuTWlsbGlvbnNdOiBSZXBvcnROdW1iZXJVbml0cy5NaWxsaW9ucyxcbiAgW0dyaWRVbml0cy5BdXRvXTogUmVwb3J0TnVtYmVyVW5pdHMuQXV0byxcbn07XG5cbi8vIFdoYXQgYW4gYWJicmV2aWF0ZWQgbnVtYmVyJ3Mgc3VmZml4IG11bHRpcGxpZXMgaXQgYnksIHdoZW4gYSB2aWV3ZXIgdHlwZXMgb25lLlxuY29uc3QgVU5JVF9TVUZGSVhFUzogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgbnVtYmVyPj4gPSB7IGs6IDFlMywgbTogMWU2IH07XG5cbmNvbnN0IFlFUyA9ICdZZXMnO1xuY29uc3QgTk8gPSAnTm8nO1xuXG4vLyBBIGdyaWQgdGlsZSdzIGZvcm1hdHRlcjogZXZlcnkgdmFsdWUgd3JpdHRlbiBhcyB0aGUgcmVwb3J0IHdyaXRlcyBpdCBvblxuLy8gYSBsaXN0IHRvZGF5LiBBbiBvdXRwdXQgbnVtYmVyIHJlYWRzIHRocm91Z2ggZm9ybWF0T3V0cHV0VmFsdWUgd2l0aCB3aGF0XG4vLyB0aGUgcmVwb3J0IGxpbmUgc2F5cyB0aGUgb3V0cHV0IGhvbGRzIChhIGNoYW5nZSBpcyBzaWduZWQsIGEgbWlzc2luZyBwcmlvclxuLy8gcmVhZHMgYXMgdGhlIGxpc3QncyBkYXNoKTsgYSBwbGFpbiBudW1iZXIgdGhyb3VnaCBmb3JtYXROdW1iZXI7IGEga2V5J3Ncbi8vIGRpZ2l0cyBhcyB0aGV5IGFyZTsgYSBkYXRlIGF0IGl0cyBncmFpbiBpbiB0aGUgcmVwb3J0J3MgbG9jYWxlLCBhbiBpbnN0YW50XG4vLyBpbiBpdHMgem9uZS4gVGhlIHBsYWNlbWVudCdzIGZvcm1hdCwgcHJlY2lzaW9uIGFuZCB1bml0cyB3aW4gb3ZlciB0aGVcbi8vIGZpZWxkJ3MuXG5leHBvcnQgZnVuY3Rpb24gcmVwb3J0R3JpZEZvcm1hdHRlcihjb250ZXh0OiBSZXBvcnRHcmlkRm9ybWF0Q29udGV4dCk6IEdyaWRGb3JtYXR0ZXIge1xuICByZXR1cm4ge1xuICAgIGZvcm1hdDogKHZhbHVlLCBmaWVsZCwgcGxhY2VtZW50KSA9PiBmb3JtYXRHcmlkVmFsdWUoY29udGV4dCwgdmFsdWUsIGZpZWxkLCBwbGFjZW1lbnQpLFxuICAgIHRvTnVtYmVyOiAodGV4dCwgZmllbGQsIHBsYWNlbWVudCkgPT4gcmVhZEdyaWROdW1iZXIoY29udGV4dCwgdGV4dCwgZmllbGQsIHBsYWNlbWVudCksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGZvcm1hdEdyaWRWYWx1ZShcbiAgY29udGV4dDogUmVwb3J0R3JpZEZvcm1hdENvbnRleHQsXG4gIHZhbHVlOiB1bmtub3duLFxuICBmaWVsZDogR3JpZEZpZWxkLFxuICBwbGFjZW1lbnQ/OiBHcmlkUGxhY2VtZW50LFxuKTogc3RyaW5nIHtcbiAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgY2FzZSBHcmlkRmllbGRUeXBlLk51bWJlcjpcbiAgICAgIHJldHVybiBmb3JtYXRHcmlkTnVtYmVyKGNvbnRleHQsIHZhbHVlLCBmaWVsZCwgcGxhY2VtZW50KTtcbiAgICBjYXNlIEdyaWRGaWVsZFR5cGUuRGF0ZTpcbiAgICAgIHJldHVybiBmb3JtYXRHcmlkRGF0ZShjb250ZXh0LCB2YWx1ZSwgZmllbGQsIHBsYWNlbWVudCk7XG4gICAgY2FzZSBHcmlkRmllbGRUeXBlLkRhdGV0aW1lOlxuICAgICAgcmV0dXJuIGZvcm1hdFJlcG9ydERhdGUodmFsdWUsIGNvbnRleHQudGltZXpvbmUsIGNvbnRleHQuZm9ybWF0LmxvY2FsZSk7XG4gICAgY2FzZSBHcmlkRmllbGRUeXBlLkJvb2xlYW46XG4gICAgICByZXR1cm4gdmFsdWUgPyBZRVMgOiBOTztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG9wdGlvbkxhYmVsKHZhbHVlLCBmaWVsZCkgPz8gU3RyaW5nKHZhbHVlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmb3JtYXRHcmlkTnVtYmVyKFxuICBjb250ZXh0OiBSZXBvcnRHcmlkRm9ybWF0Q29udGV4dCxcbiAgdmFsdWU6IHVua25vd24sXG4gIGZpZWxkOiBHcmlkRmllbGQsXG4gIHBsYWNlbWVudD86IEdyaWRQbGFjZW1lbnQsXG4pOiBzdHJpbmcge1xuICAvLyBBIGtleSwgc3VjaCBhcyBhIGNsaWVudCdzIGlkLCBpcyBhIG5hbWU6IGl0cyBkaWdpdHMgcHJpbnQgYXMgdGhleSBhcmUsIG5ldmVyIGdyb3VwZWRcbiAgaWYgKGZpZWxkLmlkZW50aWZpZXIgJiYgIWlzQWdncmVnYXRlKHBsYWNlbWVudCkpIHtcbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0IHNwZWMgPSBudW1iZXJTcGVjKGZpZWxkLCBwbGFjZW1lbnQpO1xuICBjb25zdCBvdXRwdXQgPSBpc0FnZ3JlZ2F0ZShwbGFjZW1lbnQpID8gbnVsbCA6IGNvbnRleHQucmVwb3J0Py5vdXRwdXRzPy5bZmllbGQubmFtZV07XG5cbiAgcmV0dXJuIG91dHB1dFxuICAgID8gZm9ybWF0T3V0cHV0VmFsdWUodmFsdWUsIG91dHB1dCwgc3BlYywgY29udGV4dC5mb3JtYXQpLnRleHRcbiAgICA6IGZvcm1hdE51bWJlcih2YWx1ZSwgc3BlYywgY29udGV4dC5mb3JtYXQpO1xufVxuXG4vLyBBIGNhbGVuZGFyIGRhdGUgYXQgdGhlIGdyYWluIGl0IHByaW50cyBhdDogdGhlIHBsYWNlbWVudCdzLCBlbHNlIHRoZVxuLy8gZmllbGQncyBvd24sIHdoaWNoIG9uIGEgdGltZSBheGlzIGlzIHRoZSByZXBvcnQncyBncm91cC1ieS4gQSBxdWFydGVyIHJlYWRzXG4vLyBcIlEzIDIwMjNcIiwgYSBtb250aCBcIkp1bCAyMDIzXCIgYW5kIGEgeWVhciBcIjIwMjNcIiwgYXMgdGhlIHJlcG9ydCdzIGNoYXJ0c1xuLy8gbGFiZWwgdGhlbSwgcmF0aGVyIHRoYW4gYXMgdGhlaXIgZmlyc3QgZGF5OyBhIHdlZWssIGxpa2UgYSBjaGFydCdzLCByZWFkcyBhc1xuLy8gdGhlIGRheSBpdCBzdGFydHMuIEEgZGF5IHJlYWRzIGFzIHRoZSByZXBvcnQgd3JpdGVzIGEgZGF0ZS5cbmZ1bmN0aW9uIGZvcm1hdEdyaWREYXRlKFxuICBjb250ZXh0OiBSZXBvcnRHcmlkRm9ybWF0Q29udGV4dCxcbiAgdmFsdWU6IHVua25vd24sXG4gIGZpZWxkOiBHcmlkRmllbGQsXG4gIHBsYWNlbWVudD86IEdyaWRQbGFjZW1lbnQsXG4pOiBzdHJpbmcge1xuICBjb25zdCBncmFudWxhcml0eSA9IChwbGFjZW1lbnQgYXMgR3JpZERldGFpbCB8IEdyaWRMZXZlbCB8IHVuZGVmaW5lZCk/LmdyYW51bGFyaXR5ID8/IGZpZWxkLmdyYW51bGFyaXRpZXM/LlswXTtcbiAgY29uc3QgY2hhcnRHcmFudWxhcml0eSA9IChPYmplY3Qua2V5cyhHUklEX0dSQU5VTEFSSVRJRVMpIGFzIENoYXJ0R3JhbnVsYXJpdHlbXSlcbiAgICAuZmluZCgobmFtZSkgPT4gR1JJRF9HUkFOVUxBUklUSUVTW25hbWVdID09PSBncmFudWxhcml0eSk7XG5cbiAgcmV0dXJuIGNoYXJ0R3JhbnVsYXJpdHkgJiYgY2hhcnRHcmFudWxhcml0eSAhPT0gJ2RheScgJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJ1xuICAgID8gZm9ybWF0UGVyaW9kTGFiZWwodmFsdWUuc2xpY2UoMCwgMTApLCBjaGFydEdyYW51bGFyaXR5LCBmYWxzZSwgY29udGV4dC5mb3JtYXQubG9jYWxlLCBSZXBvcnRDaGFydERhdGVMYWJlbC5Mb25nKVxuICAgIDogZm9ybWF0UmVwb3J0RGF0ZSh2YWx1ZSwgY29udGV4dC50aW1lem9uZSwgY29udGV4dC5mb3JtYXQubG9jYWxlKTtcbn1cblxuLy8gVGhlIGZvcm1hdCwgcHJlY2lzaW9uIGFuZCB1bml0cyBhIG51bWJlciBpcyB3cml0dGVuIHdpdGg6IHRoZSBwbGFjZW1lbnQncyxcbi8vIGVsc2UgdGhlIGZpZWxkJ3MuXG5mdW5jdGlvbiBudW1iZXJTcGVjKGZpZWxkOiBHcmlkRmllbGQsIHBsYWNlbWVudD86IEdyaWRQbGFjZW1lbnQpOiBOdW1iZXJGb3JtYXRTcGVjIHtcbiAgY29uc3QgcGxhY2VkID0gcGxhY2VtZW50IGFzIEdyaWRWYWx1ZSB8IEdyaWREZXRhaWwgfCB1bmRlZmluZWQ7XG4gIGNvbnN0IGZvcm1hdCA9IHBsYWNlZD8uZm9ybWF0ID8/IGZpZWxkLmZvcm1hdDtcbiAgY29uc3QgcHJlY2lzaW9uID0gcGxhY2VkPy5wcmVjaXNpb24gPz8gZmllbGQucHJlY2lzaW9uO1xuICBjb25zdCB1bml0cyA9IHBsYWNlZD8udW5pdHMgPz8gZmllbGQudW5pdHM7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi4oZm9ybWF0ID8geyBmb3JtYXQ6IFZBTFVFX0ZPUk1BVFNbZm9ybWF0XSB9IDoge30pLFxuICAgIC4uLih0eXBlb2YgcHJlY2lzaW9uID09PSAnbnVtYmVyJyA/IHsgcHJlY2lzaW9uIH0gOiB7fSksXG4gICAgLi4uKHVuaXRzID8geyB1bml0czogTlVNQkVSX1VOSVRTW3VuaXRzXSB9IDoge30pLFxuICB9O1xufVxuXG4vLyBBIHZhbHVlIHBsYWNlbWVudCBpcyBhbiBhZ2dyZWdhdGUgb2YgdGhlIGZpZWxkLCBub3QgdGhlIG91dHB1dCBpdHNlbGYuXG5mdW5jdGlvbiBpc0FnZ3JlZ2F0ZShwbGFjZW1lbnQ/OiBHcmlkUGxhY2VtZW50KTogYm9vbGVhbiB7XG4gIHJldHVybiAhIShwbGFjZW1lbnQgYXMgR3JpZFZhbHVlIHwgdW5kZWZpbmVkKT8uYWdncmVnYXRpb247XG59XG5cbmZ1bmN0aW9uIG9wdGlvbkxhYmVsKHZhbHVlOiB1bmtub3duLCBmaWVsZDogR3JpZEZpZWxkKTogc3RyaW5nIHwgbnVsbCB7XG4gIHJldHVybiBmaWVsZC5vcHRpb25zPy5maW5kKChvcHRpb24pID0+IG9wdGlvbi5rZXkgPT09IHZhbHVlKT8ubGFiZWwgPz8gbnVsbDtcbn1cblxuLy8gQSBudW1iZXIgYSB2aWV3ZXIgdHlwZWQsIHJlYWQgaW4gdGhlIHJlcG9ydCdzIGxvY2FsZTogaXRzIGdyb3VwaW5nIGRyb3BwZWQsXG4vLyBpdHMgZGVjaW1hbCBtYXJrIHJlYWQsIGEgSyBvciBNIHN1ZmZpeCBtdWx0aXBsaWVkIG91dCwgYW5kIGEgcGVyY2VudCBvZiBhXG4vLyByYXRpby1wZXJjZW50IHJlcG9ydCByZWFkIGJhY2sgdG8gaXRzIHJhdGlvLiBudWxsIHdoZW4gaXQgaXMgbm8gbnVtYmVyLlxuZnVuY3Rpb24gcmVhZEdyaWROdW1iZXIoXG4gIGNvbnRleHQ6IFJlcG9ydEdyaWRGb3JtYXRDb250ZXh0LFxuICB0ZXh0OiBzdHJpbmcsXG4gIGZpZWxkOiBHcmlkRmllbGQsXG4gIHBsYWNlbWVudD86IEdyaWRWYWx1ZSB8IEdyaWREZXRhaWwsXG4pOiBudW1iZXIgfCBudWxsIHtcbiAgY29uc3QgZGVjaW1hbCA9IGRlY2ltYWxNYXJrKGNvbnRleHQuZm9ybWF0LmxvY2FsZSk7XG4gIGNvbnN0IHRyaW1tZWQgPSB0ZXh0LnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICBjb25zdCBtdWx0aXBsaWVyID0gVU5JVF9TVUZGSVhFU1t0cmltbWVkLnNsaWNlKC0xKV0gPz8gMTtcbiAgY29uc3QgZGlnaXRzID0gdHJpbW1lZFxuICAgIC5zcGxpdChkZWNpbWFsKS5tYXAoKHBhcnQpID0+IHBhcnQucmVwbGFjZSgvW14wLTktXS9nLCAnJykpLmpvaW4oJy4nKTtcbiAgY29uc3QgbnVtYmVyID0gZGlnaXRzICYmIGRpZ2l0cyAhPT0gJy0nICYmIGRpZ2l0cyAhPT0gJy4nID8gTnVtYmVyKGRpZ2l0cykgKiBtdWx0aXBsaWVyIDogTmFOO1xuXG4gIGlmICghTnVtYmVyLmlzRmluaXRlKG51bWJlcikpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGlzUGVyY2VudCA9IChwbGFjZW1lbnQ/LmZvcm1hdCA/PyBmaWVsZC5mb3JtYXQpID09PSBHcmlkRm9ybWF0LlBlcmNlbnQ7XG5cbiAgcmV0dXJuIGlzUGVyY2VudCAmJiBjb250ZXh0LmZvcm1hdC5yYXRpb1BlcmNlbnQgPyBudW1iZXIgLyAxMDAgOiBudW1iZXI7XG59XG5cbmZ1bmN0aW9uIGRlY2ltYWxNYXJrKGxvY2FsZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIG51bWJlckZvcm1hdChsb2NhbGUsIHt9KS5mb3JtYXRUb1BhcnRzKDEuNSkuZmluZCgocGFydCkgPT4gcGFydC50eXBlID09PSAnZGVjaW1hbCcpPy52YWx1ZSA/PyAnLic7XG59XG4iXX0=
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// readGridTable() reads (GridTable) as heading rows, body rows and a total
|
|
3
3
|
// row of plain cells, and the lines its notes add. Pure, so both renderers
|
|
4
4
|
// draw one table one way.
|
|
5
|
-
import { GridRowKind } from '@firestitch/grid';
|
|
5
|
+
import { GridRowKind, headingLabel } from '@firestitch/grid';
|
|
6
6
|
import { gridFilterLineText } from './report-filter-lines';
|
|
7
7
|
// The most pivot columns a file draws, from the first.
|
|
8
8
|
export const GRID_EXPORT_COLUMNS = 60;
|
|
@@ -27,11 +27,12 @@ export function gridExportTable(table) {
|
|
|
27
27
|
};
|
|
28
28
|
}
|
|
29
29
|
// The lines a table adds under its box: the screen's notes, the pivot
|
|
30
|
-
// columns it leaves out, and each column filter of the layout it was read in
|
|
30
|
+
// columns it leaves out, and each column filter of the layout it was read in,
|
|
31
|
+
// its field named as its column is headed.
|
|
31
32
|
export function gridExportNotes(table, layout, locale) {
|
|
32
33
|
const fields = new Map(table.fields.map((field) => [field.name, field]));
|
|
33
34
|
const filters = (layout.filters ?? [])
|
|
34
|
-
.map((filter) => gridFilterLineText(
|
|
35
|
+
.map((filter) => gridFilterLineText(headingLabel(table.fields, layout, filter.field), filter, fields.get(filter.field), locale))
|
|
35
36
|
.filter((text) => !!text);
|
|
36
37
|
return [
|
|
37
38
|
...table.notes,
|
|
@@ -45,4 +46,4 @@ function headingText(heading) {
|
|
|
45
46
|
function exportCell(text, bold, indent, numeric, colSpan = 1, rowSpan = 1) {
|
|
46
47
|
return { text, colSpan, rowSpan, bold, indent, numeric };
|
|
47
48
|
}
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWdyaWQtZXhwb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9yZXBvcnRzL2V4cG9ydC9yZXBvcnQtZ3JpZC1leHBvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0VBQWtFO0FBQ2xFLDJFQUEyRTtBQUMzRSwyRUFBMkU7QUFDM0UsMEJBQTBCO0FBQzFCLE9BQU8sRUFBYyxXQUFXLEVBQStCLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSXRHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRzNELHVEQUF1RDtBQUN2RCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxFQUFFLENBQUM7QUF5QnRDLDRFQUE0RTtBQUM1RSxtREFBbUQ7QUFDbkQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxLQUFnQjtJQUM5QyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUTtTQUMzRixNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDO1NBQ3hDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztTQUNuQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FB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QUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsSUFBWSxFQUFFLElBQWEsRUFBRSxNQUFjLEVBQUUsT0FBZ0IsRUFBRSxPQUFPLEdBQUcsQ0FBQyxFQUFFLE9BQU8sR0FBRyxDQUFDO0lBQ3pHLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQzNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBIHRhYmxlIHRpbGUgYXMgdGhlIFBERiBhbmQgdGhlIGRlY2sgZHJhdyBpdDogdGhlIHByaW50ZWQgdGFibGVcbi8vIHJlYWRHcmlkVGFibGUoKSByZWFkcyAoR3JpZFRhYmxlKSBhcyBoZWFkaW5nIHJvd3MsIGJvZHkgcm93cyBhbmQgYSB0b3RhbFxuLy8gcm93IG9mIHBsYWluIGNlbGxzLCBhbmQgdGhlIGxpbmVzIGl0cyBub3RlcyBhZGQuIFB1cmUsIHNvIGJvdGggcmVuZGVyZXJzXG4vLyBkcmF3IG9uZSB0YWJsZSBvbmUgd2F5LlxuaW1wb3J0IHsgR3JpZExheW91dCwgR3JpZFJvd0tpbmQsIEdyaWRUYWJsZSwgR3JpZFRhYmxlSGVhZGluZywgaGVhZGluZ0xhYmVsIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZ3JpZCc7XG5cbmltcG9ydCB7IFJlcG9ydEZvcm1hdENvbnRleHQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlcG9ydC5pbnRlcmZhY2UnO1xuXG5pbXBvcnQgeyBncmlkRmlsdGVyTGluZVRleHQgfSBmcm9tICcuL3JlcG9ydC1maWx0ZXItbGluZXMnO1xuXG5cbi8vIFRoZSBtb3N0IHBpdm90IGNvbHVtbnMgYSBmaWxlIGRyYXdzLCBmcm9tIHRoZSBmaXJzdC5cbmV4cG9ydCBjb25zdCBHUklEX0VYUE9SVF9DT0xVTU5TID0gNjA7XG5cbi8vIE9uZSBjZWxsIG9mIGFuIGV4cG9ydGVkIHRhYmxlLiBBIGhlYWRpbmcgY2VsbCBzcGFucyB3aGF0IHRoZSBzY3JlZW4nc1xuLy8gaGVhZGVyIHNwYW5zOyBhIGdyb3VwLCB0b3RhbCBvciBlbXBoYXNpemVkIChzdWJ0b3RhbCwgdG90YWwpIGNlbGwgaXMgYm9sZDtcbi8vIGEgZ3JvdXAncyBsYWJlbCBzdGVwcyBpbiBieSBpdHMgZGVwdGguXG5leHBvcnQgaW50ZXJmYWNlIEdyaWRFeHBvcnRDZWxsIHtcbiAgdGV4dDogc3RyaW5nO1xuICBjb2xTcGFuOiBudW1iZXI7XG4gIHJvd1NwYW46IG51bWJlcjtcbiAgYm9sZDogYm9vbGVhbjtcbiAgaW5kZW50OiBudW1iZXI7XG4gIG51bWVyaWM6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JpZEV4cG9ydFRhYmxlIHtcbiAgLy8gSGVhZGluZyByb3dzIHRvcCBmaXJzdCwgZWFjaCBob2xkaW5nIG9ubHkgdGhlIGNlbGxzIHRoYXQgc3RhcnQgb24gaXRcbiAgaGVhZDogR3JpZEV4cG9ydENlbGxbXVtdO1xuICBib2R5OiBHcmlkRXhwb3J0Q2VsbFtdW107XG4gIGZvb3Q6IEdyaWRFeHBvcnRDZWxsW10gfCBudWxsO1xuICAvLyBPbmUgcGVyIHRhYmxlIGNvbHVtbjogaXQgaG9sZHMgZm9ybWF0dGVkIG51bWJlcnMsIHJpZ2h0LWFsaWduZWRcbiAgbnVtZXJpYzogYm9vbGVhbltdO1xuICAvLyBMaW5lcyBwYXN0IHRoZSByb3cgY2FwLCB3aGljaCB0aGUgbW9yZVJvd3NOb3RpY2Ugcm93IGNvdW50c1xuICBtb3JlUm93czogbnVtYmVyO1xufVxuXG4vLyBUaGUgdGFibGUncyBoZWFkaW5nLCBib2R5IGFuZCB0b3RhbCByb3cgYXMgY2VsbHMuIEEgZ3JvdXAncyBsYWJlbCBjYXJyaWVzXG4vLyBpdHMgcm93IGNvdW50IGFmdGVyIGl0LCBhcyB0aGUgc2NyZWVuIHdyaXRlcyBpdC5cbmV4cG9ydCBmdW5jdGlvbiBncmlkRXhwb3J0VGFibGUodGFibGU6IEdyaWRUYWJsZSk6IEdyaWRFeHBvcnRUYWJsZSB7XG4gIGNvbnN0IG51bWVyaWMgPSB0YWJsZS5jb2x1bW5zLm1hcCgoY29sdW1uKSA9PiBjb2x1bW4ubnVtZXJpYyk7XG4gIGNvbnN0IGhlYWQgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiBNYXRoLm1heCgxLCB0YWJsZS5oZWFkaW5nUm93cykgfSwgKF8sIHJvdykgPT4gdGFibGUuaGVhZGluZ3NcbiAgICAuZmlsdGVyKChoZWFkaW5nKSA9PiBoZWFkaW5nLnJvdyA9PT0gcm93KVxuICAgIC5zb3J0KChhLCBiKSA9PiBhLmNvbHVtbiAtIGIuY29sdW1uKVxuICAgIC5tYXAoKGhlYWRpbmcpID0+IGV4cG9ydENlbGwoaGVhZGluZ1RleHQoaGVhZGluZyksIHRydWUsIDAsIGhlYWRpbmcubnVtZXJpYywgaGVhZGluZy5jb2x1bW5TcGFuLCBoZWFkaW5nLnJvd1NwYW4pKSk7XG4gIGNvbnN0IGxpbmUgPSAocm93OiBHcmlkVGFibGVbJ3Jvd3MnXVtudW1iZXJdKSA9PiByb3cuY2VsbHMubWFwKChjZWxsLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IGlzTGFiZWwgPSBpbmRleCA9PT0gMCAmJiB0YWJsZS5ncm91cENvbHVtbjtcblxuICAgIHJldHVybiBleHBvcnRDZWxsKFxuICAgICAgaXNMYWJlbCAmJiByb3cuY291bnQgPyBgJHtjZWxsLnRleHR9ICgke3Jvdy5jb3VudH0pYCA6IGNlbGwudGV4dCxcbiAgICAgIHJvdy5raW5kICE9PSBHcmlkUm93S2luZC5EZXRhaWwgfHwgISF0YWJsZS5jb2x1bW5zW2luZGV4XT8uZW1waGFzaXMsXG4gICAgICBpc0xhYmVsID8gcm93LmRlcHRoIDogMCxcbiAgICAgIG51bWVyaWNbaW5kZXhdID8/IGZhbHNlLFxuICAgICk7XG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgaGVhZCxcbiAgICBib2R5OiB0YWJsZS5yb3dzLm1hcChsaW5lKSxcbiAgICBmb290OiB0YWJsZS50b3RhbFJvdyA/IGxpbmUodGFibGUudG90YWxSb3cpIDogbnVsbCxcbiAgICBudW1lcmljLFxuICAgIG1vcmVSb3dzOiB0YWJsZS5tb3JlUm93cyxcbiAgfTtcbn1cblxuLy8gVGhlIGxpbmVzIGEgdGFibGUgYWRkcyB1bmRlciBpdHMgYm94OiB0aGUgc2NyZWVuJ3Mgbm90ZXMsIHRoZSBwaXZvdFxuLy8gY29sdW1ucyBpdCBsZWF2ZXMgb3V0LCBhbmQgZWFjaCBjb2x1bW4gZmlsdGVyIG9mIHRoZSBsYXlvdXQgaXQgd2FzIHJlYWQgaW4sXG4vLyBpdHMgZmllbGQgbmFtZWQgYXMgaXRzIGNvbHVtbiBpcyBoZWFkZWQuXG5leHBvcnQgZnVuY3Rpb24gZ3JpZEV4cG9ydE5vdGVzKHRhYmxlOiBHcmlkVGFibGUsIGxheW91dDogR3JpZExheW91dCwgbG9jYWxlOiBSZXBvcnRGb3JtYXRDb250ZXh0Wydsb2NhbGUnXSk6IHN0cmluZ1tdIHtcbiAgY29uc3QgZmllbGRzID0gbmV3IE1hcCh0YWJsZS5maWVsZHMubWFwKChmaWVsZCkgPT4gW2ZpZWxkLm5hbWUsIGZpZWxkXSkpO1xuICBjb25zdCBmaWx0ZXJzID0gKGxheW91dC5maWx0ZXJzID8/IFtdKVxuICAgIC5tYXAoKGZpbHRlcikgPT4gZ3JpZEZpbHRlckxpbmVUZXh0KGhlYWRpbmdMYWJlbCh0YWJsZS5maWVsZHMsIGxheW91dCwgZmlsdGVyLmZpZWxkKSwgZmlsdGVyLCBmaWVsZHMuZ2V0KGZpbHRlci5maWVsZCksIGxvY2FsZSkpXG4gICAgLmZpbHRlcigodGV4dCk6IHRleHQgaXMgc3RyaW5nID0+ICEhdGV4dCk7XG5cbiAgcmV0dXJuIFtcbiAgICAuLi50YWJsZS5ub3RlcyxcbiAgICAuLi4odGFibGUuc2hvd25Db2x1bW5zIDwgdGFibGUuY29sdW1uQ291bnQgPyBbYFNob3dpbmcgdGhlIGZpcnN0ICR7dGFibGUuc2hvd25Db2x1bW5zfSBvZiAke3RhYmxlLmNvbHVtbkNvdW50fSBjb2x1bW5zYF0gOiBbXSksXG4gICAgLi4uZmlsdGVycyxcbiAgXTtcbn1cblxuZnVuY3Rpb24gaGVhZGluZ1RleHQoaGVhZGluZzogR3JpZFRhYmxlSGVhZGluZyk6IHN0cmluZyB7XG4gIHJldHVybiBoZWFkaW5nLmhpbnQgPyBgJHtoZWFkaW5nLmxhYmVsfSAoJHtoZWFkaW5nLmhpbnR9KWAgOiBoZWFkaW5nLmxhYmVsO1xufVxuXG5mdW5jdGlvbiBleHBvcnRDZWxsKHRleHQ6IHN0cmluZywgYm9sZDogYm9vbGVhbiwgaW5kZW50OiBudW1iZXIsIG51bWVyaWM6IGJvb2xlYW4sIGNvbFNwYW4gPSAxLCByb3dTcGFuID0gMSk6IEdyaWRFeHBvcnRDZWxsIHtcbiAgcmV0dXJuIHsgdGV4dCwgY29sU3Bhbiwgcm93U3BhbiwgYm9sZCwgaW5kZW50LCBudW1lcmljIH07XG59XG4iXX0=
|
package/fesm2022/{firestitch-report-echarts-7AUAX6RO.mjs → firestitch-report-echarts-rzMA7zhn.mjs}
RENAMED
|
@@ -4,7 +4,7 @@ import * as echarts from 'echarts/core';
|
|
|
4
4
|
export { echarts as default };
|
|
5
5
|
import { LabelLayout } from 'echarts/features';
|
|
6
6
|
import { CanvasRenderer } from 'echarts/renderers';
|
|
7
|
-
import { R as REPORT_CHART_COLORS_CSS, a as REPORT_CHART_FONT_FAMILY, b as REPORT_AXIS_LABEL_FONT_SIZE } from './firestitch-report-firestitch-report-
|
|
7
|
+
import { R as REPORT_CHART_COLORS_CSS, a as REPORT_CHART_FONT_FAMILY, b as REPORT_AXIS_LABEL_FONT_SIZE } from './firestitch-report-firestitch-report-DRkNBMic.mjs';
|
|
8
8
|
|
|
9
9
|
// Tree-shaken ECharts build for the reports renderer: only the chart types and
|
|
10
10
|
// components the option-builder emits are registered, keeping the lazy chunk
|
|
@@ -63,4 +63,4 @@ echarts.registerTheme('report', {
|
|
|
63
63
|
axisLabel: { color: '#52606d', fontSize: REPORT_AXIS_LABEL_FONT_SIZE },
|
|
64
64
|
},
|
|
65
65
|
});
|
|
66
|
-
//# sourceMappingURL=firestitch-report-echarts-
|
|
66
|
+
//# sourceMappingURL=firestitch-report-echarts-rzMA7zhn.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firestitch-report-echarts-
|
|
1
|
+
{"version":3,"file":"firestitch-report-echarts-rzMA7zhn.mjs","sources":["../../src/app/reports/theme/echarts.ts"],"sourcesContent":["// Tree-shaken ECharts build for the reports renderer: only the chart types and\n// components the option-builder emits are registered, keeping the lazy chunk\n// lean. Loaded on demand by ngx-echarts via provideEchartsCore — see\n// REPORT_ECHARTS_PROVIDERS in reports-echarts.provider.ts.\n//\n// The canvas renderer (not SVG) is deliberate: chart.getDataURL() needs it for\n// the high-res images the PPT/PDF exports will use.\n\nimport { BarChart, LineChart, PieChart } from 'echarts/charts';\nimport {\n DatasetComponent,\n GridComponent,\n LegendComponent,\n MarkAreaComponent,\n MarkLineComponent,\n TooltipComponent,\n} from 'echarts/components';\nimport * as echarts from 'echarts/core';\nimport { LabelLayout } from 'echarts/features';\nimport { CanvasRenderer } from 'echarts/renderers';\n\nimport { REPORT_CHART_COLORS_CSS } from './palette';\nimport { REPORT_AXIS_LABEL_FONT_SIZE, REPORT_CHART_FONT_FAMILY } from './typography';\n\necharts.use([\n BarChart,\n LineChart,\n PieChart,\n GridComponent,\n TooltipComponent,\n LegendComponent,\n DatasetComponent,\n // Reference lines and statistic lines (markLine), reference bands\n // (markArea), and the overlap hiding of 'auto' data labels (LabelLayout).\n MarkLineComponent,\n MarkAreaComponent,\n LabelLayout,\n CanvasRenderer,\n]);\n\n// The house theme — the single place report chart \"standards\" live (palette,\n// typography, tooltip styling). Polished defaults now; refined in the polish\n// phase.\necharts.registerTheme('report', {\n color: REPORT_CHART_COLORS_CSS,\n textStyle: {\n fontFamily: REPORT_CHART_FONT_FAMILY,\n },\n title: {\n textStyle: { color: '#1f2933', fontSize: 14, fontWeight: 600 },\n },\n legend: {\n textStyle: { color: '#52606d', fontSize: 11 },\n },\n tooltip: {\n backgroundColor: 'rgba(31, 41, 51, 0.92)',\n borderWidth: 0,\n textStyle: { color: '#fff', fontSize: 12 },\n },\n categoryAxis: {\n axisLine: { lineStyle: { color: '#cbd2d9' } },\n axisTick: { show: false },\n axisLabel: { color: '#52606d', fontSize: REPORT_AXIS_LABEL_FONT_SIZE },\n splitLine: { show: false },\n },\n valueAxis: {\n axisLine: { show: false },\n axisLabel: { color: '#52606d', fontSize: REPORT_AXIS_LABEL_FONT_SIZE },\n splitLine: { lineStyle: { color: '#e4e7eb' } },\n },\n timeAxis: {\n axisLine: { lineStyle: { color: '#cbd2d9' } },\n axisLabel: { color: '#52606d', fontSize: REPORT_AXIS_LABEL_FONT_SIZE },\n },\n});\n\nexport default echarts;\n"],"names":[],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAkBA,OAAO,CAAC,GAAG,CAAC;IACV,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,aAAa;IACb,gBAAgB;IAChB,eAAe;IACf,gBAAgB;;;IAGhB,iBAAiB;IACjB,iBAAiB;IACjB,WAAW;IACX,cAAc;AACf,CAAA,CAAC,CAAC;AAEH;AACA;AACA;AACA,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE;AAC9B,IAAA,KAAK,EAAE,uBAAuB;AAC9B,IAAA,SAAS,EAAE;AACT,QAAA,UAAU,EAAE,wBAAwB;AACrC,KAAA;AACD,IAAA,KAAK,EAAE;AACL,QAAA,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE;AAC/D,KAAA;AACD,IAAA,MAAM,EAAE;QACN,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE;AAC9C,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,eAAe,EAAE,wBAAwB;AACzC,QAAA,WAAW,EAAE,CAAC;QACd,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;AAC3C,KAAA;AACD,IAAA,YAAY,EAAE;QACZ,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;AAC7C,QAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;QACzB,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,2BAA2B,EAAE;AACtE,QAAA,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;AAC3B,KAAA;AACD,IAAA,SAAS,EAAE;AACT,QAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;QACzB,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,2BAA2B,EAAE;QACtE,SAAS,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;AAC/C,KAAA;AACD,IAAA,QAAQ,EAAE;QACR,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;QAC7C,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,2BAA2B,EAAE;AACvE,KAAA;AACF,CAAA,CAAC"}
|
|
@@ -50,7 +50,7 @@ import * as i1$5 from '@angular/cdk/drag-drop';
|
|
|
50
50
|
import { moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';
|
|
51
51
|
import * as i3$1 from '@firestitch/zoom-pan';
|
|
52
52
|
import { FsZoomPanComponent, FsZoomPanModule } from '@firestitch/zoom-pan';
|
|
53
|
-
import { GridFieldType, GridGranularity, canonicalGridLayout, convertDateFilter, GridNoteCode, GridControlState, GridFormat, GridUnits, FsGridComponent, FsGridCellDirective, GridRowKind, readGridTable } from '@firestitch/grid';
|
|
53
|
+
import { GridFieldType, GridGranularity, canonicalGridLayout, convertDateFilter, GridNoteCode, GridControlState, GridFormat, GridUnits, FsGridComponent, FsGridCellDirective, GridRowKind, headingLabel, readGridTable } from '@firestitch/grid';
|
|
54
54
|
import { parseISO, isValid, addDays, min, max, startOfDay, isLastDayOfMonth, endOfMonth, addMonths, addYears, addQuarters, addWeeks, formatISO, format, startOfYear, startOfQuarter, startOfMonth, subMonths, subDays, subWeeks, startOfWeek, endOfWeek } from 'date-fns';
|
|
55
55
|
import { toZonedTime } from 'date-fns-tz';
|
|
56
56
|
import { MatProgressSpinner } from '@angular/material/progress-spinner';
|
|
@@ -9743,9 +9743,10 @@ const NO = 'No';
|
|
|
9743
9743
|
// A grid tile's formatter: every value written as the report writes it on
|
|
9744
9744
|
// a list today. An output number reads through formatOutputValue with what
|
|
9745
9745
|
// the report line says the output holds (a change is signed, a missing prior
|
|
9746
|
-
// reads as the list's dash); a plain number through formatNumber; a
|
|
9747
|
-
//
|
|
9748
|
-
// precision and units win over the
|
|
9746
|
+
// reads as the list's dash); a plain number through formatNumber; a key's
|
|
9747
|
+
// digits as they are; a date at its grain in the report's locale, an instant
|
|
9748
|
+
// in its zone. The placement's format, precision and units win over the
|
|
9749
|
+
// field's.
|
|
9749
9750
|
function reportGridFormatter(context) {
|
|
9750
9751
|
return {
|
|
9751
9752
|
format: (value, field, placement) => formatGridValue(context, value, field, placement),
|
|
@@ -9760,6 +9761,7 @@ function formatGridValue(context, value, field, placement) {
|
|
|
9760
9761
|
case GridFieldType.Number:
|
|
9761
9762
|
return formatGridNumber(context, value, field, placement);
|
|
9762
9763
|
case GridFieldType.Date:
|
|
9764
|
+
return formatGridDate(context, value, field, placement);
|
|
9763
9765
|
case GridFieldType.Datetime:
|
|
9764
9766
|
return formatReportDate(value, context.timezone, context.format.locale);
|
|
9765
9767
|
case GridFieldType.Boolean:
|
|
@@ -9769,12 +9771,29 @@ function formatGridValue(context, value, field, placement) {
|
|
|
9769
9771
|
}
|
|
9770
9772
|
}
|
|
9771
9773
|
function formatGridNumber(context, value, field, placement) {
|
|
9774
|
+
// A key, such as a client's id, is a name: its digits print as they are, never grouped
|
|
9775
|
+
if (field.identifier && !isAggregate(placement)) {
|
|
9776
|
+
return String(value);
|
|
9777
|
+
}
|
|
9772
9778
|
const spec = numberSpec(field, placement);
|
|
9773
9779
|
const output = isAggregate(placement) ? null : context.report?.outputs?.[field.name];
|
|
9774
9780
|
return output
|
|
9775
9781
|
? formatOutputValue(value, output, spec, context.format).text
|
|
9776
9782
|
: formatNumber(value, spec, context.format);
|
|
9777
9783
|
}
|
|
9784
|
+
// A calendar date at the grain it prints at: the placement's, else the
|
|
9785
|
+
// field's own, which on a time axis is the report's group-by. A quarter reads
|
|
9786
|
+
// "Q3 2023", a month "Jul 2023" and a year "2023", as the report's charts
|
|
9787
|
+
// label them, rather than as their first day; a week, like a chart's, reads as
|
|
9788
|
+
// the day it starts. A day reads as the report writes a date.
|
|
9789
|
+
function formatGridDate(context, value, field, placement) {
|
|
9790
|
+
const granularity = placement?.granularity ?? field.granularities?.[0];
|
|
9791
|
+
const chartGranularity = Object.keys(GRID_GRANULARITIES)
|
|
9792
|
+
.find((name) => GRID_GRANULARITIES[name] === granularity);
|
|
9793
|
+
return chartGranularity && chartGranularity !== 'day' && typeof value === 'string'
|
|
9794
|
+
? formatPeriodLabel(value.slice(0, 10), chartGranularity, false, context.format.locale, ReportChartDateLabel.Long)
|
|
9795
|
+
: formatReportDate(value, context.timezone, context.format.locale);
|
|
9796
|
+
}
|
|
9778
9797
|
// The format, precision and units a number is written with: the placement's,
|
|
9779
9798
|
// else the field's.
|
|
9780
9799
|
function numberSpec(field, placement) {
|
|
@@ -14700,11 +14719,12 @@ function gridExportTable(table) {
|
|
|
14700
14719
|
};
|
|
14701
14720
|
}
|
|
14702
14721
|
// The lines a table adds under its box: the screen's notes, the pivot
|
|
14703
|
-
// columns it leaves out, and each column filter of the layout it was read in
|
|
14722
|
+
// columns it leaves out, and each column filter of the layout it was read in,
|
|
14723
|
+
// its field named as its column is headed.
|
|
14704
14724
|
function gridExportNotes(table, layout, locale) {
|
|
14705
14725
|
const fields = new Map(table.fields.map((field) => [field.name, field]));
|
|
14706
14726
|
const filters = (layout.filters ?? [])
|
|
14707
|
-
.map((filter) => gridFilterLineText(
|
|
14727
|
+
.map((filter) => gridFilterLineText(headingLabel(table.fields, layout, filter.field), filter, fields.get(filter.field), locale))
|
|
14708
14728
|
.filter((text) => !!text);
|
|
14709
14729
|
return [
|
|
14710
14730
|
...table.notes,
|
|
@@ -15391,7 +15411,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
15391
15411
|
// in the report's format context, as on screen.
|
|
15392
15412
|
async function renderChartImage(component, data, width, height, context, pixelRatio = 3) {
|
|
15393
15413
|
// The same tree-shaken echarts build + 'report' theme the live canvas uses.
|
|
15394
|
-
const echarts = (await import('./firestitch-report-echarts-
|
|
15414
|
+
const echarts = (await import('./firestitch-report-echarts-rzMA7zhn.mjs')).default;
|
|
15395
15415
|
const host = document.createElement('div');
|
|
15396
15416
|
host.style.width = `${width}px`;
|
|
15397
15417
|
host.style.height = `${height}px`;
|
|
@@ -18878,7 +18898,7 @@ class FsAiReportComponent {
|
|
|
18878
18898
|
ReportAiChatData,
|
|
18879
18899
|
{ provide: FsAiChatData, useExisting: ReportAiChatData },
|
|
18880
18900
|
// Tree-shaken ECharts core + the 'report' house theme, loaded lazily.
|
|
18881
|
-
provideEchartsCore({ echarts: () => import('./firestitch-report-echarts-
|
|
18901
|
+
provideEchartsCore({ echarts: () => import('./firestitch-report-echarts-rzMA7zhn.mjs').then((module) => module.default) }),
|
|
18882
18902
|
// The bar's date pickers start their weeks on Monday and list the built-in
|
|
18883
18903
|
// presets; a preset only sets the days.
|
|
18884
18904
|
provideReportDatePicker(),
|
|
@@ -18902,7 +18922,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
18902
18922
|
ReportAiChatData,
|
|
18903
18923
|
{ provide: FsAiChatData, useExisting: ReportAiChatData },
|
|
18904
18924
|
// Tree-shaken ECharts core + the 'report' house theme, loaded lazily.
|
|
18905
|
-
provideEchartsCore({ echarts: () => import('./firestitch-report-echarts-
|
|
18925
|
+
provideEchartsCore({ echarts: () => import('./firestitch-report-echarts-rzMA7zhn.mjs').then((module) => module.default) }),
|
|
18906
18926
|
// The bar's date pickers start their weeks on Monday and list the built-in
|
|
18907
18927
|
// presets; a preset only sets the days.
|
|
18908
18928
|
provideReportDatePicker(),
|
|
@@ -18995,4 +19015,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
18995
19015
|
*/
|
|
18996
19016
|
|
|
18997
19017
|
export { FsAiReportsComponent as F, GRANULARITY_OPTIONS as G, REPORT_CHART_COLORS_CSS as R, REPORT_CHART_FONT_FAMILY as a, REPORT_AXIS_LABEL_FONT_SIZE as b, FsAiReportComponent as c, ReportData as d, ReportService as e, ReportFilterStateService as f, ReportNodeType as g, ReportState as h, ReportValueFormat as i, ReportValueFormula as j, ReportListColumnFormat as k, ReportNumberUnits as l, ReportChartDataLabels as m, ReportChartColor as n, ReportChartLineStyle as o, ReportChartMarkStat as p, ReportChartDateLabel as q, ReportChangePolarity as r };
|
|
18998
|
-
//# sourceMappingURL=firestitch-report-firestitch-report-
|
|
19018
|
+
//# sourceMappingURL=firestitch-report-firestitch-report-DRkNBMic.mjs.map
|