pivotkit-element 0.4.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +114 -1
- package/README.md +1 -0
- package/dist/THIRD_PARTY_LICENSES.txt +2 -2
- package/dist/chunks/chunk-5QXN3X2Q.js +1 -0
- package/dist/chunks/{chunk-VMHRXWK7.js → chunk-65G326ME.js} +1 -1
- package/dist/chunks/chunk-7V4PAOK7.js +1 -0
- package/dist/chunks/chunk-CHSIHYYE.js +2 -0
- package/dist/chunks/chunk-CXSW4YRL.js +13 -0
- package/dist/chunks/chunk-HFUBAP3D.js +1 -0
- package/dist/chunks/chunk-KO3EKDH5.js +1 -0
- package/dist/chunks/chunk-NSPPM3IJ.js +16 -0
- package/dist/chunks/chunk-NXZQI5LC.js +6 -0
- package/dist/chunks/chunk-OHKPNELV.js +1 -0
- package/dist/chunks/chunk-R6GXMVRO.js +1 -0
- package/dist/chunks/chunk-WKVC2RPA.js +1 -0
- package/dist/chunks/chunk-XR4CMFGN.js +1 -0
- package/dist/chunks/chunk-YMLEL3SK.js +8 -0
- package/dist/chunks/echarts-4DC3BQOK.js +5 -0
- package/dist/chunks/export-O6XO33DV.js +1 -0
- package/dist/chunks/import-csv-UCA275TR.js +1 -0
- package/dist/chunks/import-json-W4GCIW36.js +1 -0
- package/dist/chunks/import-ui-SZTWEYHK.js +1 -0
- package/dist/chunks/link-7K6I4SJS.js +1 -0
- package/dist/chunks/menu-texts-de-CRJ5OIVT.js +1 -0
- package/dist/chunks/menus-F36OYGXV.js +2 -0
- package/dist/chunks/report-run-BZBFOMPF-T26ENZEM.js +60 -0
- package/dist/chunks/unused-texts-Y4R67XSN-VYGDYJND.js +1 -0
- package/dist/chunks/unused-texts-de-6YVPTNVS-FL6CDBZX.js +1 -0
- package/dist/element.js +1 -1
- package/dist/import-worker.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +11 -5
- package/types/element.d.ts +32 -4
- package/types/jsx.d.ts +1 -1
- package/dist/chunks/chunk-D2E6EFC7.js +0 -6
- package/dist/chunks/chunk-FUHQLTFM.js +0 -1
- package/dist/chunks/chunk-IBQE3N74.js +0 -1
- package/dist/chunks/chunk-MB64GADT.js +0 -1
- package/dist/chunks/chunk-O2TTHYGT.js +0 -1
- package/dist/chunks/chunk-WNTTPBZ5.js +0 -9
- package/dist/chunks/chunk-WXBFHMFX.js +0 -1
- package/dist/chunks/echarts-42T6EZ6B.js +0 -18
- package/dist/chunks/export-6ILXDVGS.js +0 -6
- package/dist/chunks/import-csv-TPSP3I44.js +0 -1
- package/dist/chunks/import-json-NCJFIKAC.js +0 -1
- package/dist/chunks/import-ui-YBYWR3Q5.js +0 -1
- package/dist/chunks/link-52SWRX4P.js +0 -1
- package/dist/chunks/menu-texts-de-YZIOIWPD.js +0 -1
- package/dist/chunks/menus-UWW77KFI.js +0 -1
- package/dist/chunks/unused-texts-K3VFH65P-5EAURTYC.js +0 -1
- package/dist/chunks/unused-texts-de-OW4TGIVX-GHETGXFE.js +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,117 @@ All notable changes to `pivotkit-element` are documented in this file. The forma
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.6.0] - 2026-11-14
|
|
10
|
+
|
|
11
|
+
### Upgrading from 0.5
|
|
12
|
+
|
|
13
|
+
What a page checks; the [upgrade page](https://pivotkit.eize.dev/getting-started/upgrading/#from-0-5) has the details.
|
|
14
|
+
|
|
15
|
+
- Export → **CSV file (.csv)** is called **Table as CSV (.csv)**; the `pivot-export` kind `"csv"`
|
|
16
|
+
stays. Tests or screenshots that look for the old text take the new one.
|
|
17
|
+
- `export-data` (Export → Source data) is new and off by default.
|
|
18
|
+
|
|
19
|
+
### Added
|
|
20
|
+
|
|
21
|
+
- `pivot-template-save` and `pivot-template-publish` carry `source` in `detail`: the data shown, with
|
|
22
|
+
a loaded workbook's sheet in `params.sheet`; Publish of a view file or of a view of the browser
|
|
23
|
+
store made for other data gives that data ([#252](https://github.com/eizedev/pivotkit/issues/252)).
|
|
24
|
+
- `export-data` (boolean attribute) and the `exportData` property: pivotkit-react's Export → Source
|
|
25
|
+
data, every row of the data as a CSV or JSON file; `pivot-export` kinds `"data-csv"`, `"data-json"`.
|
|
26
|
+
Off by default.
|
|
27
|
+
|
|
28
|
+
### Changed
|
|
29
|
+
|
|
30
|
+
- Export → **CSV file (.csv)** is called **Table as CSV (.csv)**, as in pivotkit-react.
|
|
31
|
+
- Bundles pivotkit-core 0.6.0, pivotkit-react 0.6.0 and pivotkit-report 0.2.0.
|
|
32
|
+
|
|
33
|
+
### Fixed
|
|
34
|
+
|
|
35
|
+
- The element bundles pivotkit-react's fix of views made on a workbook's sheet other than the first:
|
|
36
|
+
they open on that sheet again after the workbook is loaded anew ([#252](https://github.com/eizedev/pivotkit/issues/252)).
|
|
37
|
+
- The element bundles pivotkit-react's fix of a rule on the name whose text is emptied: the rule
|
|
38
|
+
stops filtering ([#159](https://github.com/eizedev/pivotkit/issues/159)).
|
|
39
|
+
|
|
40
|
+
## [0.5.0] - 2026-11-13
|
|
41
|
+
|
|
42
|
+
### Upgrading from 0.4
|
|
43
|
+
|
|
44
|
+
What a host checks; the [upgrade page](https://pivotkit.eize.dev/getting-started/upgrading/#from-0-4) has the details.
|
|
45
|
+
|
|
46
|
+
- **Breaking:** views, view files and links are written in format version 2; pivotkit 0.4 refuses
|
|
47
|
+
them as newer. Version 1 loads with the same result.
|
|
48
|
+
- **Breaking:** dark colours of a host go on `pivot-report[data-pk-theme="dark"]`, not on an attribute
|
|
49
|
+
of the page (`html[data-theme="dark"] pivot-report`): the Excel export and the HTML report read the light
|
|
50
|
+
theme by showing it on the report for a moment, and a rule on the page's attribute would put the
|
|
51
|
+
dark colours into the file.
|
|
52
|
+
- The colour scale's default is blue; red, yellow, green come back with `--pk-scale-low: #f8696b`,
|
|
53
|
+
`--pk-scale-mid: #ffeb84`, `--pk-scale-high: #63be7b` on the element (dark: `#c2413f`, `#b39a2e`,
|
|
54
|
+
`#3f9a5c`). `--pk-scale-mid` is no longer set.
|
|
55
|
+
- The label key `filter` is removed (a host's text for it is ignored).
|
|
56
|
+
- The font weights 550 and 650 are 600 (`--pk-weight-strong`).
|
|
57
|
+
- The chart's text is 14 px, not 12 px.
|
|
58
|
+
- Column subtotals are off by default: a start view or template without `totals.colSubtotals` adds
|
|
59
|
+
`totals: { colSubtotals: true }` to keep them.
|
|
60
|
+
|
|
61
|
+
### Changed
|
|
62
|
+
|
|
63
|
+
- npm keywords `angular` (the Angular example) and `excel-export`.
|
|
64
|
+
- `dist/THIRD_PARTY_LICENSES.txt` is written by the repository's shared licence script, as for
|
|
65
|
+
pivotkit-xlsx; its text is unchanged ([#125](https://github.com/eizedev/pivotkit/issues/125)).
|
|
66
|
+
- The element bundles pivotkit-core's and pivotkit-react's totals ([#155](https://github.com/eizedev/pivotkit/issues/155), [#156](https://github.com/eizedev/pivotkit/issues/156)): column subtotals
|
|
67
|
+
off by default, no empty column or total rows without values, no subtotal for a group of one item,
|
|
68
|
+
the tip on column subtotals. Size budgets ([#198](https://github.com/eizedev/pivotkit/issues/198)): the first load to 170.5 KiB (168.6 measured on
|
|
69
|
+
a Mac, CI about 0.5 more), the link to 7.5 (7.2 measured, 0.1 below its old budget).
|
|
70
|
+
- npm keywords `pivot-grid` and `pivottable`, the terms people search for ([#172](https://github.com/eizedev/pivotkit/issues/172)).
|
|
71
|
+
- The element bundles pivotkit-core with view version 2 and pivotkit-react's filters for it
|
|
72
|
+
([#165](https://github.com/eizedev/pivotkit/issues/165)): views of version 1 load with the same
|
|
73
|
+
result. The first load grows by about 7.5 KiB (gzip), its budget to 169; the plain words of a
|
|
74
|
+
view's unused parts to 5.5.
|
|
75
|
+
|
|
76
|
+
### Added
|
|
77
|
+
|
|
78
|
+
- pivotkit-react's `--pk-chart-text-size` (the chart's text, at least 14 px) and the HTML report's
|
|
79
|
+
font size tokens (`--pk-report-title-size`, `--pk-print-size`, `--pk-print-small`), set on the
|
|
80
|
+
element like every `--pk-*` token ([#220](https://github.com/eizedev/pivotkit/issues/220), [#221](https://github.com/eizedev/pivotkit/issues/221)). The first load grows by
|
|
81
|
+
about 0.1 KiB gzip (171.9 KiB measured on a Mac, CI 172.5), its budget to 173.
|
|
82
|
+
- pivotkit-react's tokens for corners, the code font, the focus ring and the chart's title and marks
|
|
83
|
+
([#216](https://github.com/eizedev/pivotkit/issues/216)): `--pk-radius-xs`, `--pk-radius-mark`, `--pk-radius-icon`, `--pk-radius-card`,
|
|
84
|
+
`--pk-radius-chart`, `--pk-font-mono`, `--pk-chart-title-size`, `--pk-focus-width`,
|
|
85
|
+
`--pk-focus-offset`, `--pk-glow-width` and `--pk-ring-width`, set on the element like every `--pk-*`
|
|
86
|
+
token. The first load grows by about 0.5 KiB gzip (171.4 KiB measured on a Mac, CI about 0.6
|
|
87
|
+
more), its budget to 172.5.
|
|
88
|
+
- pivotkit-react's font weight tokens ([#201](https://github.com/eizedev/pivotkit/issues/201)): `--pk-weight-normal`, `--pk-weight-medium`,
|
|
89
|
+
`--pk-weight-strong` and `--pk-weight-bold`, set on the element like every `--pk-*` token.
|
|
90
|
+
- Export → HTML report, Chart image (.svg) and Print or save as PDF (pivotkit-react), loaded as the
|
|
91
|
+
chunk group "report" on first use (19.9 KiB gzip); `pivot-export` has the kinds `html`, `svg` and
|
|
92
|
+
`print` ([#165](https://github.com/eizedev/pivotkit/issues/165)). ECharts' SVG renderer comes with
|
|
93
|
+
the chart chunks (215.8 KiB, budget 222.5) and pivotkit-core's describe module with the first load
|
|
94
|
+
(170.0 KiB, budget 171.5): esbuild puts a module where any importer of its barrel loads it.
|
|
95
|
+
- The property `importLimits` ([#169](https://github.com/eizedev/pivotkit/issues/169)), as
|
|
96
|
+
pivotkit-react's prop: the limits of a file loaded with `allow-import`, merged key by key over
|
|
97
|
+
`limits`; the page's data keeps `limits`. A property only, as `limits`.
|
|
98
|
+
|
|
99
|
+
### Fixed
|
|
100
|
+
|
|
101
|
+
- The element bundles pivotkit-core's and pivotkit-report's export fixes: CSV, XLSX, the HTML report
|
|
102
|
+
and the SVG leave out bidi controls, a print template's `<meta http-equiv>` takes no placeholder,
|
|
103
|
+
and a token value with a line break or `url(` is left out. The group "report" grows to 21.0 KiB
|
|
104
|
+
gzip (CI 21.1), its budget to 21.5.
|
|
105
|
+
- A workbook and an HTML report exported while the element shows the dark theme carry the tokens set
|
|
106
|
+
on the element for the light theme, `--pk-scale-mid` too ([#217](https://github.com/eizedev/pivotkit/issues/217)).
|
|
107
|
+
- The element bundles pivotkit-react's fixes: the Excel export in the report's theme colours, the
|
|
108
|
+
default colour scale from light to strong blue, a group's label at the top of its rows in the
|
|
109
|
+
workbook ([#212](https://github.com/eizedev/pivotkit/issues/212)), and an "i" inside a menu explained above the menu ([#213](https://github.com/eizedev/pivotkit/issues/213)).
|
|
110
|
+
- The element bundles pivotkit-react's fix of a hover description that closed while the pointer
|
|
111
|
+
paused between its "i" and it ([#213](https://github.com/eizedev/pivotkit/issues/213)).
|
|
112
|
+
- An app whose bundler reads `sideEffects` (Angular's build) no longer warns about, or may drop,
|
|
113
|
+
the chunks `dist/index.js` imports for their effects: `sideEffects` lists `dist/chunks/*.js` too
|
|
114
|
+
([#174](https://github.com/eizedev/pivotkit/issues/174)).
|
|
115
|
+
- An app that bundles the element (Angular's build) had no `import-worker.js`, so with
|
|
116
|
+
`allow-import` the element read files on the page and Firefox and WebKit logged the failed worker.
|
|
117
|
+
The docs and the Angular example copy `dist/import-worker.js` as an asset (`angular.json`), and the
|
|
118
|
+
example's test reads a CSV file in the worker ([#182](https://github.com/eizedev/pivotkit/issues/182)).
|
|
119
|
+
|
|
9
120
|
## [0.4.0] - 2026-11-11
|
|
10
121
|
|
|
11
122
|
### Added
|
|
@@ -237,7 +348,9 @@ First release.
|
|
|
237
348
|
thousands separators, CSV percentages and calculations as the table shows them, heatmaps without
|
|
238
349
|
grey empty cells.
|
|
239
350
|
|
|
240
|
-
[Unreleased]: https://github.com/eizedev/pivotkit/compare/pivotkit-element@0.
|
|
351
|
+
[Unreleased]: https://github.com/eizedev/pivotkit/compare/pivotkit-element@0.6.0...HEAD
|
|
352
|
+
[0.6.0]: https://github.com/eizedev/pivotkit/compare/pivotkit-element@0.5.0...pivotkit-element@0.6.0
|
|
353
|
+
[0.5.0]: https://github.com/eizedev/pivotkit/compare/pivotkit-element@0.4.0...pivotkit-element@0.5.0
|
|
241
354
|
[0.4.0]: https://github.com/eizedev/pivotkit/compare/pivotkit-element@0.3.0...pivotkit-element@0.4.0
|
|
242
355
|
[0.3.0]: https://github.com/eizedev/pivotkit/compare/pivotkit-element@0.2.0...pivotkit-element@0.3.0
|
|
243
356
|
[0.2.0]: https://github.com/eizedev/pivotkit/compare/pivotkit-element@0.1.0...pivotkit-element@0.2.0
|
package/README.md
CHANGED
|
@@ -48,6 +48,7 @@ report.addEventListener("pivot-view-change", (e) => localStorage.setItem("view",
|
|
|
48
48
|
| Topic | Page |
|
|
49
49
|
| --- | --- |
|
|
50
50
|
| Getting started: install, first report, saving views on a server | [Getting started with the web component](https://pivotkit.eize.dev/getting-started/web-component/) |
|
|
51
|
+
| Loading files and the source data | [Load your own data](https://pivotkit.eize.dev/use/load-data/), [the table or the rows](https://pivotkit.eize.dev/use/export/#the-table-or-the-rows-behind-it) |
|
|
51
52
|
| PHP and server-rendered pages | [PHP and other server-rendered pages](https://pivotkit.eize.dev/getting-started/web-component/#php-and-other-server-rendered-pages) |
|
|
52
53
|
| Angular | [Angular](https://pivotkit.eize.dev/getting-started/web-component/#angular), [Angular and zone.js](https://pivotkit.eize.dev/reference/element/#angular-and-zonejs) |
|
|
53
54
|
| A page with React of its own | [React on the page](https://pivotkit.eize.dev/reference/element/#react-on-the-page) |
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
pivotkit-element bundles the following packages. Their license texts follow; pivotkit-core
|
|
2
|
-
pivotkit-react are part of pivotkit (MIT, see LICENSE).
|
|
1
|
+
pivotkit-element bundles the following packages. Their license texts follow; pivotkit-core,
|
|
2
|
+
pivotkit-react and pivotkit-report are part of pivotkit (MIT, see LICENSE).
|
|
3
3
|
|
|
4
4
|
==============================================================================
|
|
5
5
|
@dnd-kit/accessibility 3.1.1 (MIT)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var r=Object.freeze({colorScale:Object.freeze(["#eaf1fb","#2a78d6"]),dataBar:"#2a78d6",strongWeight:600,titleSize:16,textSize:14,markRadius:4,cardRadius:8,pieRadius:Object.freeze(["0%","70%"]),donutRadius:Object.freeze(["42%","70%"])});function a(t){let e=/^(\d*\.?\d+)(px)?$/.exec(String(t??"").trim());return e?Number(e[1]):null}export{r as a,a as b};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as x}from"./chunk-
|
|
1
|
+
import{c as x}from"./chunk-WKVC2RPA.js";var l=[{bytes:[80,75,3,4],what:"a ZIP archive (an Excel workbook .xlsx is one); load it with a spreadsheet reader, or save it as CSV"},{bytes:[208,207,17,224,161,177,26,225],what:"an old Excel workbook (.xls) or a password-protected file; save it as .xlsx or CSV"},{bytes:[37,80,68,70],what:"a PDF document"},{bytes:[31,139],what:"a gzip archive; unpack it first"}],f=(t,r)=>r.every((e,o)=>t[o]===e);function d(t){let r=Math.min(t.length,4096)&-2;if(r<8)return!1;let e=0;for(let o=1;o<r;o+=2)t[o]===0&&t[o-1]!==0&&e++;return e>r/2*.9}function w(t,r){for(let s of l)if(f(t,s.bytes))throw x("WRONG_TYPE",r,`this is ${s.what}, not text.`);let e,o=0;f(t,[239,187,191])?(e="utf-8",o=3):f(t,[255,254])?(e="utf-16le",o=2):f(t,[254,255])?(e="utf-16be",o=2):d(t)&&(e="utf-16le");let a=t.subarray(o),i;if(e)i=new TextDecoder(e,{fatal:!1,ignoreBOM:!0}).decode(a);else try{i=new TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0}).decode(a),e="utf-8"}catch{i=new TextDecoder("windows-1252",{ignoreBOM:!0}).decode(a),e="windows-1252"}let n=i.indexOf("\0");if(n!==-1&&n<i.length-1)throw x("BINARY",r,"this file holds binary data, not text.");return{text:n===-1?i:i.slice(0,n),encoding:c[e]}}var c={"utf-8":"UTF-8","utf-16le":"UTF-16 (little endian)","utf-16be":"UTF-16 (big endian)","windows-1252":"Windows-1252"};export{w as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as X,d as ce,j as Y,n as fe,r as de,y as f,z as P}from"./chunk-YMLEL3SK.js";import{d as Se,g as Oe}from"./chunk-HFUBAP3D.js";import{e as we}from"./chunk-OHKPNELV.js";import{b as be,c as ke,d as Ce,h as Te}from"./chunk-CHSIHYYE.js";import{F as ge,P as ye,c as K,ga as ve,h as pe,n as j,u as Q}from"./chunk-KO3EKDH5.js";import{d as me,h as he}from"./chunk-XR4CMFGN.js";import{c as x}from"./chunk-DCANE7XH.js";var D=x(X(),1),p=x(X(),1),qe=x(X(),1);var _=Object.freeze({auto:{chart:{type:"auto",stacked:!1,horizontal:!1},icon:"sparkle",axis:!0},bar:{chart:{type:"bar",stacked:!1,horizontal:!1},icon:"chart",axis:!0},stacked:{chart:{type:"bar",stacked:!0,horizontal:!1},icon:"stacked",axis:!0},horizontal:{chart:{type:"bar",stacked:!1,horizontal:!0},icon:"horizontal",axis:!0},line:{chart:{type:"line",stacked:!1,horizontal:!1},icon:"line",axis:!0},area:{chart:{type:"area",stacked:!1,horizontal:!1},icon:"area",axis:!0},pie:{chart:{type:"pie",stacked:!1,horizontal:!1},icon:"pie",axis:!1},donut:{chart:{type:"donut",stacked:!1,horizontal:!1},icon:"donut",axis:!1},heatmap:{chart:{type:"heatmap",stacked:!1,horizontal:!1},icon:"heatmap",axis:!1}}),Ye=Object.freeze(["pie","donut"]),Le=Object.freeze(Object.keys(_));function Ke(e){let t=Le.find(n=>{let r=_[n].chart;return r.type===e.type&&r.stacked===!!e.stacked&&r.horizontal===!!e.horizontal});return t||(e.type==="bar"?e.horizontal?"horizontal":"stacked":Le.find(n=>_[n].chart.type===e.type)??"bar")}function Qe(e,t){let n=Se(e,t);return{name:Ke(n.chart),...n}}var et=8,Ht=50,Gt=Object.freeze(["filters","cols","rows","values"]),O=e=>JSON.parse(JSON.stringify(e)),z=Object.freeze({"=":"!=",between:"notBetween",equals:"notEquals",contains:"notContains",beginsWith:"notBeginsWith",endsWith:"notEndsWith"}),xt=Object.freeze({text:Object.freeze(["equals","notEquals","contains","notContains","beginsWith","notBeginsWith","endsWith","notEndsWith"]),compare:Object.freeze(["=","!=",">",">=","<","<=","between","notBetween"])}),ie=e=>e.not&&typeof e.op=="string"&&Object.hasOwn(z,e.op)?z[e.op]:String(e.op),tt=e=>!!e.not&&!(typeof e.op=="string"&&Object.hasOwn(z,e.op));function Xt(e){let t=Object.keys(z).find(n=>z[n]===e);return t?{op:t,not:!0}:{op:e,not:!1}}var nt=(e,t)=>({field:e,type:"in",items:t.filter(n=>n!==null),not:!0,blanks:t.includes(null)?"exclude":"include"}),se=e=>nt(e,[]),rt=e=>e.type==="in",ot=e=>rt(e)&&e.not===!0&&e.items.length===0&&e.blanks==="include",m=(e,t)=>typeof e=="string"&&typeof t=="string"&&e.toLowerCase()===t.toLowerCase();function Yt(e,t){let n=Q(t);return n?e.filter(r=>Q(r.label).includes(n)):e}var ne=(e,t)=>Number.isInteger(e)?Math.max(0,Math.min(e,t)):t;function U(e){let t=new Set,n=[];for(let r of e.filters){let i=r.field.toLowerCase();!t.has(i)&&!e.rows.some(o=>m(o,r.field))&&!e.cols.some(o=>m(o,r.field))&&(t.add(i),n.push(r.field))}return n}function Pe(e,t){return e.rows.some(n=>m(n,t))?"rows":e.cols.some(n=>m(n,t))?"cols":null}function it(e,t){return typeof t=="string"&&K(e??"string").includes(t)?t:e==="number"&&K(e).includes("sum")?"sum":"count"}function q(e){let t=new Set([...e.rows,...e.cols,...e.values.map(n=>n.field),...e.filters.map(n=>n.field)].filter(Boolean).map(n=>n.toLowerCase()));return e.derived=e.derived.filter(n=>t.has(n.name.toLowerCase())),e.sort=e.sort.filter(n=>t.has(n.field.toLowerCase())),e}function B(e,t){e.rows=e.rows.filter(n=>!m(n,t)),e.cols=e.cols.filter(n=>!m(n,t))}function $(e,t){for(let n of["rows","cols"])JSON.stringify(t[n])!==JSON.stringify(e[n])&&(e.collapsed[n]=[])}function Kt(e,t){let n=r=>t&&Number.isInteger(t[r])&&t[r]>0?t[r]:me[r];for(let[r,i]of[["rows","axisFields"],["cols","axisFields"],["values","values"]])if((e&&Array.isArray(e[r])?e[r]:[]).length>n(i))return{zone:r,max:n(i)};return null}function Fe(e,t,n,r={}){if(r.dateUnit&&n!=="values"){let o=r.groupName??`${t} (${r.dateUnit})`,s=Fe(st(e,o),t,n,{...r,dateUnit:null,defaults:void 0});return ut(s,t,r.dateUnit,{name:o}).view}let i=O(e);if(n==="rows"||n==="cols"){B(i,t),i[n].splice(ne(r.index,i[n].length),0,t);let o=r.defaults?.order;Array.isArray(o)&&o.length>0&&!i.sort.some(s=>m(s.field,t))&&i.sort.push({field:t,by:"custom",order:"asc",items:[...o]})}else if(n==="values"){let o=r.defaults??{},s=typeof o.format=="string"&&ye(o.format)?o.format:null;i.values.splice(ne(r.index,i.values.length),0,{field:t,agg:it(r.type,o.agg),format:s,label:null,showAs:null,conditional:null})}else n==="filters"&&(B(i,t),i.filters.some(o=>m(o.field,t))||i.filters.push(se(t)));return $(i,e),q(i)}function Qt(e,t,n){let r=O(e);if(t==="values")r.values.splice(n,1);else{let o=(t==="filters"?U(e):e[t])[n];if(o===void 0)return e;B(r,o),r.filters=r.filters.filter(s=>!m(s.field,o))}return $(r,e),q(r)}function st(e,t){if(!Pe(e,t)&&!U(e).some(r=>m(r,t)))return e;let n=O(e);return B(n,t),n.filters=n.filters.filter(r=>!m(r.field,t)),$(n,e),q(n)}function at(e,t,n){return t==="values"?e.values[n]?e.values[n].field:void 0:(t==="filters"?U(e):e[t])[n]}function en(e,t,n,r,i,o={}){if(t===r)return lt(e,t,n,i);let s=at(e,t,n);if(s==null)return e;let a=O(e);return t==="values"?a.values.splice(n,1):r!=="filters"&&(B(a,s),r==="values"&&(a.filters=a.filters.filter(l=>!m(l.field,s)))),a=Fe(a,s,r,{...o,index:i}),$(a,e),q(a)}function lt(e,t,n,r){let i=t==="filters"?null:t==="values"?e.values:e[t];if(!i||n===r||n<0||n>=i.length)return e;let o=O(e),s=o[t],[a]=s.splice(n,1);return s.splice(ne(r,s.length),0,a),$(o,e),o}function tn(e,t){let n=e.column(t);if(!n||n.type!=="number")return null;let r=1/0,i=-1/0;for(let o of n.dict)typeof o=="number"&&Number.isFinite(o)&&(r=Math.min(r,o),i=Math.max(i,o));return r<=i?{min:r,max:i}:null}function nn(e,t){let n=e.column(t);if(!n||n.type!=="date")return null;let r=1/0,i=-1/0;for(let o of n.dict)typeof o=="number"&&(r=Math.min(r,o),i=Math.max(i,o));return r<=i?{min:r,max:i}:null}function ut(e,t,n,r={}){let i=e.derived.find(c=>m(c.name,t)),o=i?i.field:t,s=Pe(e,t),a=O(e),l=o;if(n){l=r.name??`${o} (${n})`;let c=a.derived.find(g=>m(g.name,l)),u=r.origin??(i?.by==="bin"?i.origin??0:0),d=n==="bin"?{name:l,field:o,by:n,size:r.size,origin:u}:{name:l,field:o,by:n};c?Object.assign(c,d):a.derived.push(d)}if(s){let c=s==="rows"?"cols":"rows";if(!m(l,t)&&a[c].some(u=>m(u,l)))a[s]=a[s].filter(u=>!m(u,t));else{let u=new Set;a[s]=a[s].map(d=>m(d,t)?l:d).filter(d=>!u.has(d.toLowerCase())&&u.add(d.toLowerCase()))}}if(!m(l,t)){let c=!s&&U(e).some(u=>m(u,t));a.filters=a.filters.filter(u=>!m(u.field,t)),c&&a.filters.push(se(l))}return a.sort=a.sort.map(c=>m(c.field,t)?{...c,field:l}:c),$(a,e),{view:q(a),field:l}}function ct(e,t){return e.derived.find(n=>m(n.name,t))??null}function ft(e,t){let n=ct(e,t);return n?n.field:t}function rn(e,t,n){let r=O(e);return r.sort=r.sort.filter(i=>!m(i.field,t)),n&&r.sort.push({field:t,...n}),r}function on(e,t){let r=[...e.rows,...e.cols].filter(o=>!e.derived.some(s=>m(s.name,o))&&!e.sort.some(s=>m(s.field,o))).map(o=>({field:o,order:t(o)})).filter(({order:o})=>Array.isArray(o)&&o.length>0);if(!r.length)return e;let i=O(e);for(let{field:o,order:s}of r)i.sort.push({field:o,by:"custom",order:"asc",items:[...s]});return i}function Me(e,t){return e.sort.find(n=>m(n.field,t))??null}function dt(e,t){return e.by==="label"&&e.order==="asc"&&!t?null:e}function sn(e,t,n){if(t.kind==="corner")return t.field&&e.rows.some(i=>m(i,t.field))?{field:t.field}:null;let r=t.kind==="colHeader"&&t.valueIndex!==void 0&&!t.colPath?.length?e.values[t.valueIndex]:void 0;return!r||!e.rows.length||!mt(r,r.field?n(r.field)??"string":"number")?null:{field:e.rows[e.rows.length-1],ref:{field:r.field??null,agg:r.agg}}}function an(e,t){let n=Me(e,t.field),r=i=>i==="desc"?"descending":"ascending";return t.ref?n?.by==="value"&&_e(n.value,t.ref)?{order:r(n.order),chosen:!0}:{order:null,chosen:!1}:n?{order:n.by==="label"?r(n.order):n.by==="custom"?"other":null,chosen:n.by==="label"}:{order:"ascending",chosen:!1}}function ln(e,t,n){let r=Me(e,t.field);if(t.ref){let o=r?.by==="value"&&_e(r.value,t.ref);return o&&r.order==="asc"?null:{by:"value",order:o?"asc":"desc",value:o?r.value:t.ref}}let i=!r||r.by==="label"&&r.order==="asc";return dt({by:"label",order:i?"desc":"asc"},n)}function ae(e,t,n){return e.filters.filter(r=>m(r.field,t)&&(!n||n.includes(r.type)))}function un(e,t,n){let r=n;for(let i of ae(e,t,["in"])){let o=new Set(i.items.map(a=>JSON.stringify(a))),s=i.blanks!=="exclude";r=r.filter(a=>a===null?s:i.blanks!=="only"&&o.has(JSON.stringify(a))!==i.not)}return r}function mt(e,t){return e.agg!=="listUnique"&&!(["first","last"].includes(e.agg)&&t!=="number")&&!(t==="date"&&["average","median","min","max"].includes(e.agg))}function _e(e,t){return!!(e&&t)&&e.agg===t.agg&&(e.field===null||t.field===null?e.field===t.field:m(e.field,t.field))}function ht(e,t){return ae(e,t).some(n=>!ot(n))}function cn(e,t,n){let r=O(e),i=JSON.stringify(n),o=r.collapsed[t],s=o.findIndex(a=>JSON.stringify(a)===i);return s===-1?o.push(n):o.splice(s,1),r}function fn(e,t){let n=new Set(e.collapsed.rows.map(a=>JSON.stringify(a))),r=t.filter(a=>n.has(JSON.stringify(a))).length,i=e.rows.length<2?0:t.length-r,o=e.collapsed.rows.length>0,s=i>0;return{canExpand:o,canCollapse:s,collapsed:e.collapsed.rows.length,open:i,why:{expand:o?null:"expandNothing",collapse:s?null:e.rows.length<2?"collapseNeedsRows":"collapseAllDone"}}}function dn(e,t,n){let r=O(e);return r.collapsed[t]=n||[],r}function mn(e,t,n){let r=O(e);return r.totals[t]=!!n,r}function hn(e,t){let n=O(e);return n.display=t,n}function pn(e,t){let n=O(e);return n.chart={...n.chart,..._[t].chart},n.display="chart",n}function gn(e,t){let n=O(e);return n.chart={...n.chart,...t},n}function yn(e){return e.rows.length===0&&e.cols.length===0&&e.values.length===0}var J=(e,t,n)=>tt(e)?f(n.notRule,{rule:t}):t;function pt(e,t){if(e.label)return e.label;let n=t.core,r;if(!e.field)r=n.countRows;else{let o=Object.hasOwn(n.aggregators,e.agg)?n.aggregators[e.agg]:e.agg;r=f(n.valueName,{agg:o,field:j(e.field,n)})}if(!e.showAs||!n.showAs||!n.showAsName)return r;let i=Object.hasOwn(n.showAs,e.showAs.type)?n.showAs[e.showAs.type]:e.showAs.type;return f(n.showAsName,{showAs:i,value:e.field&&e.agg==="sum"?j(e.field,n):r})}function ze(e,t,n){let r=t?.field??null,i=s=>r===null||s.field===null||s.field===void 0?(s.field??null)===r:s.field.toLowerCase()===r.toLowerCase(),o=t?(e.values??[]).find(s=>s.agg===t.agg&&i(s)):void 0;return!o&&r===null?n.countOfRows:pt({...o??t,showAs:null},n)}function wn(e,t,n){let r=t.order==="desc";return t.by==="value"?f(r?n.sortValueDesc:n.sortValueAsc,{value:ze(e,t.value,n)}):t.by==="custom"?r?n.sortCustomDesc:n.sortCustom:r?n.sortLabelDesc:n.sortLabelAsc}var H=Object.freeze({"=":"=","!=":"\u2260",">":">",">=":"\u2265","<":"<","<=":"\u2264"});function Sn(e,t,n,r){let i=a=>typeof a=="number"?a.toLocaleString(r,{maximumFractionDigits:6}):"",o=ze(e,t.by??(e.values?.[0]?{field:e.values[0].field??null,agg:e.values[0].agg}:null),n),s=ie(t);if(s==="between"||s==="notBetween"){let[a,l]=typeof t.value2=="number"&&t.value2<t.value?[t.value2,t.value]:[t.value,t.value2];return f(n.valueConditions[s],{value:o,from:i(a),to:i(l)})}return J(t,f(n.valueConditions.compare,{value:o,op:Object.hasOwn(H,s)?H[s]:s,number:i(t.value)}),n)}var Be=(e,t)=>new Date(`${e}T00:00Z`).toLocaleDateString(t,{dateStyle:"medium",timeZone:"UTC"}),V=e=>new Date(e).toISOString().slice(0,10),Ee=(e,t=1)=>V(Date.parse(`${e}T00:00Z`)+t*864e5);function gt(e,t,n,r,i={}){let o=Ue(e,t,n,r,i);return o&&o.from!==null?{from:o.from,to:o.to}:null}var Ue=(e,t,n,r,i={})=>ge(e.unit,e.count??1,{timeZone:t,now:n,anchor:e.anchor,latest:r??void 0,first:i.first??void 0,direction:e.direction,calendar:e.calendar,includeCurrent:e.includeCurrent,weekStart:i.weekStart}),yt=e=>["last","this"].includes(e.direction??"last")&&e.calendar!==!1&&(e.anchor===void 0||e.anchor==="today"||e.anchor==="latest")&&["year","quarter","month","week","day"].includes(e.unit);function I(e,t,n){let o=t==="year"?l=>l.slice(0,4):t==="quarter"?l=>`Q${Math.floor((Number(l.slice(5,7))-1)/3)+1} ${l.slice(0,4)}`:t==="month"?l=>new Date(`${l.slice(0,10)}T00:00Z`).toLocaleDateString(n,{month:"short",year:"numeric",timeZone:"UTC"}):l=>Be(l.slice(0,10),n),[s,a]=[o(e.from),o(e.to)];return s===a?s:`${s}\u2013${a}`}function vt(e,t,n,r){let i=t==="quarter"?"month":t==="week"?"day":t;e={from:e.from.slice(0,10),to:e.to.slice(0,10)};let[o,s]=[wt(V(n.min),i),St(V(n.max),i)];if(o<=e.from&&s>=e.to)return null;let a=e.from>o?e.from:o,l=e.to<s?e.to:s;if(a>l)return{none:!0};let c=[],u=0,d=(g,y,h)=>{let v=[],[k,A]=[Number(g.slice(0,4)),Number(y.slice(0,4))];for(let b=k;b<=A;b++)b!==h&&v.push(b);if(v.length&&(c.push(v.length===1?String(v[0]):`${v[0]}\u2013${v[v.length-1]}`),u+=v.length),k<=h&&h<=A){let b=`${String(h).padStart(4,"0")}-01-01`,R=`${String(h).padStart(4,"0")}-12-31`,T={from:g>b?g:b,to:y<R?y:R};c.push(I(T,t,r)),u+=I({from:T.from,to:T.from},t,r)===I({from:T.to,to:T.to},t,r)?1:2}};return e.from<o&&d(e.from,Ee(o,-1),Number(o.slice(0,4))),e.to>s&&d(Ee(s),e.to,Number(s.slice(0,4))),{none:!1,data:I({from:a,to:l},t,r),missing:c,count:u}}var wt=(e,t)=>t==="year"?`${e.slice(0,4)}-01-01`:t==="month"?`${e.slice(0,7)}-01`:e;function St(e,t){if(t==="day")return e;let[n,r]=[Number(e.slice(0,4)),Number(e.slice(5,7))];return V(t==="year"?Date.UTC(n,11,31):Date.UTC(n,r,0))}function Ot(e,t,n,r,i,o,s){if(!yt(e))return bt(e,t,n,r,i,o,s);let a=t.relativeMore,l=e.count??1,c=l===1?e.unit:`${e.unit}s`,u=e.direction==="this"?a.this[e.unit]??e.unit:Object.hasOwn(t.relative,c)?f(t.relative[c],{count:l.toLocaleString(n)}):f(P(a.last[e.unit]??{other:e.unit},l,{lang:t.lang,locale:n}),{count:l.toLocaleString(n)}),d=gt(e,r,i,o?.max,{weekStart:s}),g=e.anchor==="latest";if(e.includeCurrent===!1&&e.direction!=="this"&&!g&&(u=f(a.withoutCurrent,{text:u})),!d)return u;g&&(u=f(t.relativeTo,{text:u,end:I({from:d.to,to:d.to},e.unit,n)}));let y=o?vt(d,e.unit,o,n):null;if(!y)return g?u:f(t.withRange,{text:u,range:I(d,e.unit,n)});let h={lang:t.lang,locale:n};return y.none?f(t.withRange,{text:u,range:f(P(t.noData,1,h),{range:I(d,e.unit,n)})}):f(t.withShare,{text:u,range:y.data,missing:f(P(t.noData,y.count,h),{range:y.missing.join(", ")})})}function bt(e,t,n,r,i,o,s){let a=t.relativeMore,l={lang:t.lang,locale:n},c=e.direction??"last",u=c==="this"?a.this[e.unit]??e.unit:P(a[c]?.[e.unit]??{other:e.unit},e.count??1,l);e.calendar===!1&&c!=="this"?u=f(a.rolling,{text:u}):e.includeCurrent===!1&&c!=="this"&&(u=f(a.withoutCurrent,{text:u})),e.anchor==="latest"?u=f(a.fromLatest,{text:u}):e.anchor==="first"?u=f(a.fromFirst,{text:u}):e.anchor&&e.anchor!=="today"&&(u=f(a.fromDate,{text:u,date:re(e.anchor,n)}));let d=Ue(e,r,i,o?.max,{first:o?.min,weekStart:s});if(!d)return u;let g=(d.from===null||d.from.endsWith("T00:00"))&&d.to.endsWith("T00:00"),y=v=>re(g?v.slice(0,10):v,n),h=y(d.to);return f(t.withRange,{text:u,range:d.from===null?f(a.until,{to:h}):d.from===d.to?h:`${y(d.from)} \u2013 ${h}`})}function kt(e,t,n){if(t==="year"||t==="quarter"||t==="month"){let r=new Date(`${e.slice(0,10)}T00:00Z`);return t==="month"?r.toLocaleDateString(n,{month:"short",year:"numeric",timeZone:"UTC"}):t==="year"?e.slice(0,e.length-6):`Q${Math.floor(r.getUTCMonth()/3)+1} ${e.slice(0,e.length-6)}`}return re(e,n)}var re=(e,t)=>e.length>10?new Date(`${e.slice(0,16)}Z`).toLocaleString(t,{dateStyle:"medium",timeStyle:"short",timeZone:"UTC"}):Be(e,t);function Ct(e,t){return typeof e=="string"&&typeof t=="string"&&/^\d{4}-01-01$/.test(e)&&/^\d{4}-12-31$/.test(t)?[e.slice(0,4),t.slice(0,4)]:null}function Tt(e,t,n,{date:r,labelOf:i}){let o=l=>typeof l=="string"?kt(l,e.precision,n):i?.(l)??(r?String(l):l.toLocaleString(n,{maximumFractionDigits:6})),s=t.compareShort,a=ie(e);if(a==="between"||a==="notBetween"){let[l,c]=e.value2!==void 0&&e.value2<e.value?[e.value2,e.value]:[e.value,e.value2],u=Ct(l,c);return u?u[0]===u[1]?f(s[a==="between"?"=":"!="],{value:u[0]}):f(s[a],{from:u[0],to:u[1]}):f(s[a],{from:o(l),to:o(c)})}return J(e,r&&Object.hasOwn(s,a)?f(s[a],{value:o(e.value)}):`${Object.hasOwn(H,a)?H[a]:a} ${o(e.value)}`,t)}function On(e,t,n,{timeZone:r,date:i,labelOf:o,span:s,weekStart:a}){if(e.type==="relative")return J(e,Ot(e,t,n,r,void 0,s,a),t);if(e.type==="compare")return Tt(e,t,n,{date:i,labelOf:o});let l=ie(e);return J(e,`${Object.hasOwn(t.labelOps,l)?t.labelOps[l]:l} ${f(t.quote,{text:e.value})}`,t)}function bn(e,t,n,r){let i=n.unitInName&&Object.hasOwn(n.unitInName,t)?n.unitInName[t]:n.units[t];return t==="bin"?f(n.binsName,{field:e,size:r}):f(n.derivedName,{field:e,unit:i??t})}var Lt=e=>e==="number"?"values":"rows";function kn(e,t,n,r){let i=Lt(t),o=n.includes(i)?null:i!=="values"&&n.some(l=>l==="cols"||l==="filters")?"move":"add",s=n.length?`${e}, ${f(r.inZone,{zone:n.map(l=>r.zones[l]??l).join(", ")})}`:e,a=o===null?"":f(o==="move"?r.moveTo:r.addTo,{zone:r.zones[i]});return{zone:i,kind:o,name:s,description:a}}var Et=Object.freeze(["rows","cols","values","filters"]);function Cn(e,t){return Et.filter(n=>e[n]&&e[n].length).map(n=>({zone:n,title:t.zones[n],fields:e[n].map(r=>r.text).join(", ")}))}var At=1e3;function Nt(e,t){let n={};for(let r of e.columns){let i=r.codes[t],o=i<0?null:r.dict[i],s=r.type==="date"&&typeof o=="number"?new Date(o).toISOString().replace(/(T00:00:00)?\.000Z$/,"").replace(/:00$/,""):o;Object.defineProperty(n,r.name,{value:s,enumerable:!0,writable:!0,configurable:!0})}return n}function Ln(e,{rowPath:t=[],colPath:n=[],data:r=null,limit:i=At}){let o=we(e,{row:t,col:n}),s=o.slice(0,Math.max(0,i)),a=new Array(s.length);for(let l=0;l<s.length;l++)a[l]=r?r[s[l]]:Nt(e.encoded,s[l]);return{count:o.length,rows:a,indices:s}}function It(e){e.focus({preventScroll:!0});let t;try{e.select();let n=e.ownerDocument;t=typeof n.execCommand=="function"&&n.execCommand("delete")&&e.value===""}catch{t=!1}if(!t){let n=e instanceof HTMLTextAreaElement?HTMLTextAreaElement.prototype:HTMLInputElement.prototype;Object.getOwnPropertyDescriptor(n,"value")?.set?.call(e,""),e.dispatchEvent(new Event("input",{bubbles:!0}))}}function En({value:e,onChange:t,onClear:n,clearLabel:r,multiline:i=!1,className:o,inputRef:s,...a}){let l=(0,D.useRef)(null),c=ce(),u=s??l,d=()=>{u.current&&It(u.current),n?.()},g=h=>{a.onKeyDown?.(h),h.key==="Escape"&&e!==""&&!h.defaultPrevented&&(h.preventDefault(),h.stopPropagation(),d())},y=i?"textarea":"input";return D.default.createElement("span",{className:`pk-clear-input${i?" pk-clear-multi":""}${o?` ${o}`:""}`},D.default.createElement(y,{name:c,...a,ref:u,value:e,onChange:h=>t(h.target.value),onKeyDown:g}),e!==""?D.default.createElement("button",{type:"button",className:"pk-clear-x","aria-label":r,title:r,onPointerDown:h=>h.preventDefault(),onMouseDown:h=>h.preventDefault(),onClick:d,"data-testid":"clear-input"},D.default.createElement(Y,{name:"x",size:14})):null)}var Ae=250,Dt=1500;function Rt({info:e,labels:t,link:n=!0,className:r="pk-field-desc"}){return p.default.createElement("p",{className:r},p.default.createElement("span",null,e.description),n&&e.href?p.default.createElement(p.default.Fragment,null," ",p.default.createElement("a",{href:e.href,target:"_blank",rel:"noopener noreferrer",className:"pk-learn-more"},t.learnMore)):null)}function An({info:e,name:t,labels:n,className:r,testId:i="field-info",label:o,tabIndex:s,slot:a}){let[l,c]=(0,p.useState)(null),u=(0,p.useRef)(null),d=(0,p.useRef)(!1),g=(0,p.useRef)(null),y=(0,p.useId)(),h=(0,p.useId)(),v=(0,p.useRef)(null),k=()=>{g.current&&(clearTimeout(g.current),g.current=null)},A=w=>{let S=u.current,C=S?.getRootNode()??null,L=C&&"getElementById"in C?C.getElementById(y):null;return!!(S?.matches(":hover")||L?.matches(":hover")||w&&S&&L&&fe(S.getBoundingClientRect(),L.getBoundingClientRect(),v.current))},b=()=>{k();let w=Date.now(),S=()=>{if(A(Date.now()-w<Dt)){g.current=setTimeout(S,Ae);return}g.current=null,c(C=>C==="peek"?null:C)};g.current=setTimeout(S,Ae)};(0,p.useEffect)(()=>k,[]),(0,p.useEffect)(()=>{let w=u.current?.ownerDocument;if(l!=="peek"||!w)return;let S=L=>{v.current={x:L.clientX,y:L.clientY}},C=L=>{L.relatedTarget||(v.current=null)};return w.addEventListener("pointermove",S,{capture:!0,passive:!0}),w.addEventListener("pointerout",C,{capture:!0,passive:!0}),()=>{w.removeEventListener("pointermove",S,{capture:!0}),w.removeEventListener("pointerout",C,{capture:!0}),v.current=null}},[l]);let R=(0,p.useCallback)(()=>{d.current=!0,c(null),requestAnimationFrame(()=>{d.current=!1})},[]),T=o??f(n.aboutField,{field:t});return p.default.createElement(p.default.Fragment,null,p.default.createElement("button",{ref:u,type:"button",className:`pk-info${r?` ${r}`:""}`,"aria-label":T,"aria-describedby":h,"aria-expanded":l==="open","aria-controls":l?y:void 0,"aria-haspopup":"dialog",tabIndex:s,"data-pk-slot":a,"data-testid":i,onPointerEnter:w=>{w.pointerType==="mouse"&&(k(),c(S=>S??"peek"))},onPointerLeave:w=>{w.pointerType==="mouse"&&l==="peek"&&b()},onFocus:()=>{l===null&&!d.current&&c("peek")},onBlur:w=>{let S=w.relatedTarget;l==="peek"&&!(S&&S.closest?.(".pk-info-pop"))&&c(null)},onClick:()=>{k(),c(l==="open"?null:"open")}},p.default.createElement(Y,{name:"info",size:14})),p.default.createElement("span",{id:h,hidden:!0},e.description),p.default.createElement(de,{key:l??"closed",open:l!==null,passive:l==="peek",anchor:u,onClose:R,label:T,role:l==="peek"?"tooltip":"dialog",className:"pk-info-pop",id:y,onPointerEnter:k,onPointerLeave:w=>{w.pointerType==="mouse"&&l==="peek"&&b()}},p.default.createElement(Rt,{info:e,labels:n})))}var Nn=(0,qe.createContext)({explain:!0,labels:null}),Ne=null,We=null;function Dn(){return Ne??=import("./link-7K6I4SJS.js").then(e=>(We=e,e)),Ne}var Rn=()=>We,$n=(e,t)=>be(e,t),jn=(e,t,n)=>ke(e,t,n);function Pn(e,t){if(e===!0){if(!t)return null;try{let n=new URL(t);return`${n.origin}${n.pathname}${n.hash}`}catch{return null}}return typeof e=="string"&&e.trim()?e.trim():null}var Ze=e=>`pivotkit:view:${e??""}`;function Fn(e,t){if(!t)return null;try{return t.getItem(Ze(e))}catch{return null}}function Mn(e,t,n){if(t)try{t.setItem(Ze(e),JSON.stringify(n))}catch{}}var _n=Ce.text,Ie=(e,t)=>{let n=e.slice(0,5).map(r=>f(t.quote,{text:r.length>60?`${r.slice(0,59)}\u2026`:r})).join(", ");return e.length>5?`${n} \u2026`:n},De=Object.freeze({newerFormat:"newer",newerView:"newer"});function zn(e,t,n={}){return $t(e,t,n)}function $t(e,t,n={}){let r=Te(e,{data:t,sourceId:n.sourceId});if(r.failed||!r.view){let s=r.failed??"notView";return{view:null,issues:r.issues,failed:Object.hasOwn(De,s)?De[s]:s,file:r}}let{view:i,issues:o}=ve(r.view,t,{limits:he(n.limits)});return o.some(s=>s.path==="version")?{view:null,issues:o,failed:"newer",file:r}:{view:i,issues:o,failed:null,file:r}}function Bn(e,t,n=[]){let r=e.file?.compatible;if(!e.view||!r||r.ok)return null;let i=[],o=e.file?.source,s=r.source==="other"&&o?.id?n.find(a=>a&&a.id===o.id):void 0;if(r.source==="other"){let a=s?.name||o?.name||o?.id;i.push(a?f(t.loadCheckSource,{source:a}):t.loadCheckOtherSource)}return r.missing.length&&i.push(f(t.loadCheckMissing,{fields:Ie(r.missing,t)})),r.changed.length&&i.push(f(t.loadCheckChanged,{fields:Ie(r.changed.map(a=>a.name),t)})),{lines:i,switchTo:s?{id:s.id,name:s.name||s.id}:null}}function Un(){try{return typeof window<"u"&&window.localStorage?window.localStorage:null}catch{return null}}function jt(e,t){try{return t?t.getItem(e):null}catch{return null}}var W=new Map;function Pt(e,t){let n=W.get(e)??new Set;n.add(t),W.set(e,n);let r=o=>{(o.key===null||o.key===e)&&t()},i=typeof window<"u"?window:null;return i?.addEventListener("storage",r),()=>{n.delete(t),n.size===0&&W.delete(e),i?.removeEventListener("storage",r)}}function Ft(e,t,n){let r=!1;if(t)try{n===null?t.removeItem(e):t.setItem(e,n),r=!0}catch{}for(let i of[...W.get(e)??[]])i();return r}var Mt=1,N=Object.freeze({dateColumns:12,dateRows:60,manyColumns:20,changesBeforeSave:5,afterDragChanges:3,pieSlices:7}),_t=Object.freeze(["percentOfGrandTotal","percentOfRowTotal","percentOfColumnTotal","percentOfParentRow","percentOfParentColumn","percentRunningTotal","percentDifferenceFromPrevious"]),F=(e,t)=>j(t,{fields:e.fields}),zt=(e,t)=>e.view.derived.find(n=>n.name.toLowerCase()===String(t).toLowerCase())?.by??"",Re=(e,t)=>e.typeOf(t)==="date"&&ft(e.view,t).toLowerCase()===String(t).toLowerCase(),M=e=>!e.failed&&!e.empty&&e.view.display==="table",G=e=>!e.failed&&e.view.display==="chart"&&e.series!==null&&e.view.values.length>0,E=e=>e.series,oe=e=>G(e)&&_[e.chartPlan.name].axis,Z=e=>["line","area"].includes(e.chartPlan.name),$e=e=>G(e)&&Ye.includes(e.chartPlan.name),je=(e,t)=>e.view[t].some(n=>e.typeOf(n)==="date"),ee=e=>oe(e)&&!e.chartPlan.swap&&Z(e)&&je(e,"cols")&&!je(e,"rows"),le=Object.freeze([{id:"filterEmpty",kind:"notice",icon:"filter",action:"removeFilters",when:e=>!e.failed&&!e.empty&&e.dataRows>0&&e.matched===0&&e.view.filters.some(t=>ht(e.view,t.field))?{}:null},{id:"top",kind:"notice",icon:"top",when:e=>{if(e.failed||e.empty)return null;for(let t of[...e.view.rows,...e.view.cols]){let n=ae(e.view,t,["top"])[0];if(n)return{field:F(e,t),count:n.count,bottom:!!n.bottom}}return null}},{id:"chartCapped",kind:"notice",when:e=>G(e)&&E(e).categoryCount>E(e).categories.length?{shown:E(e).categories.length,total:E(e).categoryCount}:null},{id:"showAs",icon:"sigma",when:e=>{if(e.failed||e.empty)return null;let t=e.view.values.find(n=>n.showAs&&_t.includes(n.showAs.type));return t?{type:t.showAs.type}:null}},{id:"colSubtotals",icon:"sigma",action:"colSubtotalsOff",when:e=>M(e)&&e.view.values.length>0&&e.view.totals.colSubtotals&&e.view.cols.length>=2&&e.colSubtotalShown?{}:null},{id:"chartOverTime",icon:"line",action:"auto",when:e=>{if(!G(e)||e.chartPlan.auto||Z(e)||e.chartPlan.name==="heatmap"||Qe({...e.view,chart:{...e.view.chart,type:"auto"}},e.encoded).name!=="line")return null;let t=[...e.view.rows,...e.view.cols].find(n=>e.typeOf(n)==="date"&&!Oe.cyclicUnits.includes(zt(e,n)));return t?{field:F(e,t)}:null}},{id:"pieSlices",icon:"chart",action:"bars",when:e=>$e(e)&&E(e).categories.length>N.pieSlices?{count:E(e).categories.length,max:N.pieSlices}:null},{id:"pieColumns",icon:"info",action:"bars",when:e=>$e(e)&&e.view.cols.length>0?{fields:e.view.cols.map(t=>F(e,t)).join(", ")}:null},{id:"chartDates",action:"swap",when:e=>ee(e)?{}:null},{id:"chartTrend",icon:"chart",action:"bars",when:e=>{if(!oe(e)||e.chartPlan.auto||ee(e)||!Z(e)||e.view.rows.length===0)return null;let t=e.view.rows[e.view.rows.length-1];return["date","number"].includes(e.typeOf(t))||e.view.sort.some(r=>r.by==="custom"&&String(r.field).toLowerCase()===String(t).toLowerCase())?null:{}}},{id:"chartSeries",action:"swap",when:e=>oe(e)&&!ee(e)&&!(e.chartPlan.auto&&Z(e))&&E(e).series.length>et?{count:E(e).series.length}:null},{id:"textValue",icon:"sigma",when:e=>{if(e.failed||e.empty)return null;let t=e.view.values.find(n=>n.field&&!n.label&&["string","boolean"].includes(e.typeOf(n.field)));return t?{field:F(e,t.field)}:null}},{id:"dateUngrouped",icon:"date",action:"groupDate",when:e=>{if(!M(e))return null;let n=(e.colLeaves>N.dateColumns?e.view.cols.find(s=>Re(e,s)):void 0)??(e.rowLeaves>N.dateRows?e.view.rows.find(s=>Re(e,s)):void 0);if(!n)return null;let r=e.encoded.column(n),i=pe(e.encoded,n),o=!i||i==="day"&&r?.dateOnly?"yearMonth":i;return{field:F(e,n),source:n,unit:o}}},{id:"manyColumns",icon:"swap",action:"swap",when:e=>M(e)&&e.view.cols.length>0&&e.colLeaves>N.manyColumns&&e.rowLeaves<e.colLeaves?{count:e.colLeaves}:null},{id:"afterDrag",icon:"undo",when:e=>!e.failed&&e.dragAt!==null&&e.changes-e.dragAt<=N.afterDragChanges?{}:null},{id:"values",icon:"sigma",when:e=>M(e)&&e.view.values.length===0?{}:null},{id:"saveTemplate",icon:"bookmark",action:"saveTemplate",when:e=>e.canSave&&!e.failed&&!e.empty&&e.changes-e.savedAt>=N.changesBeforeSave?{}:null},{id:"menus",icon:"sparkle",when:e=>!e.failed&&e.empty&&e.view.display==="table"&&e.dragAt===null?{}:null},{id:"cells",icon:"info",when:e=>M(e)&&e.tableShown&&e.view.values.length>0&&!e.drilled?{}:null}]),Je=Object.freeze(le.filter(e=>e.kind!=="notice").map(e=>e.id)),Wn=Object.freeze(le.filter(e=>e.kind==="notice").map(e=>e.id)),He="*",Ve="-explanations",Ge="-fields",xe=Object.freeze([He,Ve,Ge]);function Zn(e,t,n){return e??(t==="collapsed"||t==="open"?t==="collapsed":n.includes(Ge))}var Jn=e=>xe.includes(e);function Hn(e,t,n=Ve){return e==="on"||e==="off"?{on:e==="on",user:!1}:{on:!t.includes(n),user:!0}}var Vn=Object.freeze([{keys:["Mod","Z"],text:"undo"},{keys:["Mod","Shift","Z"],text:"redo"},{keys:["Arrow keys"],text:"move"},{keys:["Enter"],text:"open"},{keys:["Space"],text:"drag"},{keys:["Escape"],text:"close"},{keys:["Arrow keys"],text:"fields"},{keys:["Shift","F10"],text:"fieldMenu"}]);function Bt(e,t,n){let r=new Set(n.map(o=>JSON.stringify(o))),i=o=>o.every((s,a)=>!r.has(JSON.stringify(o.slice(0,a+1))));return e.some(o=>o.depth>0&&o.depth<t&&o.children.length>1&&i(o.path))}function Gn({view:e,result:t,encoded:n,failed:r,empty:i,typeOf:o,fields:s,series:a=null,tableShown:l=!1,drilled:c=!1,changes:u=0,dragAt:d=null,canSave:g=!1,savedAt:y=0,chartPlan:h={name:"bar",auto:!0,swap:!1}}){let v=(k,A)=>t&&A>0?k.reduce((b,R)=>b+(R.depth===A?1:0),0):1;return{view:e,empty:i,failed:r||!t,typeOf:o,encoded:n,fields:s,rowLeaves:t?v(t.rowNodes,t.rowFields.length):0,colLeaves:t?v(t.colNodes,t.colFields.length):0,colSubtotalShown:t?Bt(t.colNodes,t.colFields.length,e.collapsed?.cols??[]):!1,matched:t?t.rows.length:0,dataRows:n.length,series:a,tableShown:l,drilled:c,changes:u,dragAt:d,canSave:g,savedAt:y,chartPlan:h}}function xn(e,{allowed:t,dismissed:n,limit:r=Mt}){let i=new Set(n),o=t==="off"||i.has(He),s=[],a=0;for(let l of le){let c=l.kind==="notice";if(!c&&(o||a>=r||Array.isArray(t)&&!t.includes(l.id)||i.has(l.id)))continue;let u=l.when(e);u&&(s.push({id:l.id,params:u,entry:l}),a+=c?0:1)}return s}function Xn(e,t,n,r){let i=n.tips,o=Object.fromEntries(Object.entries(t).map(([s,a])=>[s,typeof a=="number"?a.toLocaleString(r):a]));if(e==="showAs"){let s=i.showAs;return Object.hasOwn(s,t.type)?s[t.type]:""}return e==="top"?f(t.bottom?i.bottom:i.top,o):e==="dateUngrouped"?f(i.dateUngrouped,{...o,unit:n.units[t.unit]??t.unit}):Object.hasOwn(i,e)&&typeof i[e]=="string"?f(i[e],o):""}function Yn(e,t,n){if(!e.action)return"";let r=Object.hasOwn(n.tipActions,e.action)?n.tipActions[e.action]:"";return f(r,{unit:n.units[t.unit]??t.unit??""})}function Kn(e){if(e==="off"||e===!1)return"off";let t=typeof e=="string"&&e.trim()!=="on"&&e.trim()!==""?e.split(","):Array.isArray(e)?e:null;return t?t.map(n=>String(n).trim()).filter(n=>Je.includes(n)):"on"}function Ut(e){return Array.isArray(e)?[...new Set(e.filter(t=>typeof t=="string"&&(xe.includes(t)||Je.includes(t))))]:[]}var ue=e=>`pivotkit:tips:${e}`;function Qn(e,t){return e?jt(ue(e),t):null}function er(e){if(!e)return[];try{return Ut(JSON.parse(e))}catch{return[]}}function tr(e,t){return e?Pt(ue(e),t):()=>{}}function nr(e,t,n){e&&t&&Ft(ue(e),t,n.length?JSON.stringify(n):null)}function rr(e){return{...e,filters:U(e).map(se)}}var te=null,Xe=null;function or(){return te??=import("./import-ui-SZTWEYHK.js").then(e=>Xe=e,e=>{throw te=null,e}),te}var ir=()=>Xe;export{_ as a,Ye as b,Le as c,Ke as d,Qe as e,Ht as f,Gt as g,O as h,xt as i,ie as j,tt as k,Xt as l,nt as m,se as n,ot as o,m as p,Yt as q,U as r,Pe as s,Kt as t,Fe as u,Qt as v,en as w,lt as x,tn as y,nn as z,ut as A,ct as B,ft as C,rn as D,on as E,Me as F,dt as G,sn as H,an as I,ln as J,ae as K,un as L,mt as M,_e as N,cn as O,fn as P,dn as Q,mn as R,hn as S,pn as T,gn as U,yn as V,pt as W,ze as X,wn as Y,Sn as Z,Be as _,V as $,gt as aa,yt as ba,I as ca,vt as da,Ot as ea,Ct as fa,On as ga,bn as ha,kn as ia,Cn as ja,At as ka,Nt as la,Ln as ma,En as na,An as oa,Nn as pa,Dn as qa,Rn as ra,$n as sa,jn as ta,Pn as ua,Fn as va,Mn as wa,zn as xa,$t as ya,Bn as za,Un as Aa,jt as Ba,Pt as Ca,Ft as Da,He as Ea,Ve as Fa,Ge as Ga,Zn as Ha,Jn as Ia,Hn as Ja,Vn as Ka,Gn as La,xn as Ma,Xn as Na,Yn as Oa,Kn as Pa,Ut as Qa,Qn as Ra,er as Sa,tr as Ta,nr as Ua,rr as Va,or as Wa,ir as Xa};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{W as w}from"./chunk-KO3EKDH5.js";import{d as O,i as A,n as p}from"./chunk-XR4CMFGN.js";var S=e=>e?`pivot-${e}`:"pivot",I=e=>e?e.split("&"):[],$=(e,t)=>e.startsWith(`${encodeURIComponent(t)}=`);function T(e,t){let r=S(t),s=typeof e=="string"?e.replace(/^#/,""):"",o=I(s).find(a=>$(a,r)),i=o?o.slice(encodeURIComponent(r).length+1):"";return i||null}function M(e,t,r){let s=S(t),o=e.indexOf("#"),i=o===-1?e:e.slice(0,o),a=I(o===-1?"":e.slice(o+1)).filter(n=>!$(n,s)),c=r?[...a,`${encodeURIComponent(s)}=${r}`]:a;return c.length?`${i}#${c.join("&")}`:i}var L="pivotkit-view",h=2,x=Object.freeze([1,2]),V="https://pivotkit.eize.dev/schema/view-file-2.json",u=Object.freeze({text:1e6,name:256,description:2e3,fields:1e3}),k=Object.freeze(["string","number","date","boolean","null"]);function m(e,t){return typeof e!="string"?"":e.replace(/[\u0000-\u001F\u007F]+/g," ").trim().slice(0,t)}var l=(e,t)=>p(e)&&Object.hasOwn(e,t)?e[t]:void 0;function _(e,t,r=!1){if(!p(e))return e;let s=r?JSON.parse(JSON.stringify(e)):e,o=n=>{let f=l(s,n);return Array.isArray(f)?f:[]},i=new Set(o("derived").map(n=>l(n,"name")).filter(n=>typeof n=="string").map(n=>n.toLowerCase())),a=n=>i.has(n.toLowerCase())?"grouping":"field",c=(n,f)=>{let d=Array.isArray(n)?n[f]:l(n,f);typeof d=="string"&&d!==""&&t(d,a(d),g=>{n[f]=g})};for(let n of["rows","cols"]){let f=o(n);f.forEach((d,g)=>c(f,g))}o("values").forEach(n=>c(n,"field"));for(let n of o("filters"))c(n,"field"),p(l(n,"by"))&&c(n.by,"field");for(let n of o("sort"))c(n,"field"),p(l(n,"value"))&&c(n.value,"field");for(let n of o("derived")){let f=l(n,"field");typeof f=="string"&&f!==""&&t(f,"source",d=>{n.field=d})}return s}function b(e){let t=new Map,r=l(e,"derived");for(let i of Array.isArray(r)?r:[]){let a=l(i,"name"),c=l(i,"field");typeof a=="string"&&typeof c=="string"&&t.set(a.toLowerCase(),c)}let s=[],o=new Set;return _(e,(i,a)=>{if(a==="source")return;let c=t.get(i.toLowerCase())??i;o.has(c.toLowerCase())||(o.add(c.toLowerCase()),s.push(c))}),s}function C(e){let t=e&&e.schema&&Array.isArray(e.schema.fields)?e.schema.fields:[];return new Map(t.filter(r=>r&&typeof r.name=="string").map(r=>[r.name.toLowerCase(),r]))}function z(e,t={},r={}){if(!p(e))throw new TypeError("toViewFile(view): view must be an object");let s=m(t.name,u.name),o=m(t.source?.id,u.name),i=o?E(t.source?.params,O,()=>{}):null,a=i&&Object.keys(i).length?{params:i}:{};if(r.link)return{format:L,formatVersion:h,...o?{source:{id:o,...a}}:{},...s?{name:s}:{},view:e};let c=m(t.description,u.description),n=t.createdAt instanceof Date?t.createdAt:typeof t.createdAt=="string"&&t.createdAt?new Date(t.createdAt):null,f=n&&!Number.isNaN(n.getTime())?n.toISOString():null,d=t.generator&&typeof t.generator.name=="string"?{name:m(t.generator.name,u.name),version:m(t.generator.version,u.name)}:null,g=m(t.source?.name,u.name),N=t.schemaUrl===void 0?V:typeof t.schemaUrl=="string"?t.schemaUrl.trim():"",F=C(t.data),v=t.data?b(e).map(y=>F.get(y.toLowerCase())).filter(Boolean).map(y=>({name:y.name,type:typeof y.type=="string"?y.type:"string"})):null;return{...N?{$schema:N}:{},format:L,formatVersion:h,name:s,...c?{description:c}:{},...f?{createdAt:f}:{},...d?{generator:d}:{},source:{...o?{id:o}:{},...g?{name:g}:{},...v?{fields:v}:{},...a},extensions:{},view:e}}function W(e){return`${JSON.stringify(e,null,2)}
|
|
2
|
+
`}function G(e){return`${(typeof e=="string"?e:"").toLowerCase().normalize("NFKD").replace(/[̀-ͯ]/g,"").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,80).replace(/-+$/,"")||"view"}.pivotkit.json`}function B(e,t={}){let r={view:null,envelope:!1,formatVersion:null,name:"",description:"",createdAt:null,generator:null,source:null,failed:null,issues:[]},s=(n,f)=>({...r,failed:n,issues:[...r.issues,{path:"",message:f}]}),o=e;if(typeof e=="string"){if(e.trim()==="")return s("empty","empty text");if(e.length>u.text)return s("tooLarge",`longer than ${u.text} characters`);try{o=JSON.parse(e)}catch{return s("notJson","not valid JSON")}}if(!p(o))return s("notView","not a JSON object");let i=(n,f)=>r.issues.push({path:n,message:f}),a;if(l(o,"format")===L){r.envelope=!0;let n=l(o,"formatVersion");if(n==null)i("formatVersion","missing; read as 1");else if(!x.includes(n))return(typeof n=="number"?n:typeof n=="string"&&n.trim()!==""?Number(n):NaN)>h?s("newerFormat",`format version ${JSON.stringify(n)} is newer than ${h}`):s("notView",`format version ${JSON.stringify(n)} is not one of ${x.join(", ")}`);r.formatVersion=n??1,a=l(o,"view"),r.name=m(l(o,"name"),u.name),r.description=m(l(o,"description"),u.description);let f=l(o,"createdAt");r.createdAt=typeof f=="string"&&!Number.isNaN(Date.parse(f))?f.slice(0,64):null,f!==void 0&&r.createdAt===null&&i("createdAt","not a date and time");let d=l(o,"generator");p(d)&&typeof l(d,"name")=="string"&&(r.generator={name:m(l(d,"name"),u.name),version:m(l(d,"version"),u.name)}),r.source=J(l(o,"source"),i,A(t))}else{let n=l(o,"view");p(n)&&typeof l(o,"name")=="string"?(a=n,r.name=m(l(o,"name"),u.name)):a=o}if(!p(a))return s("notView","no view object");let c=l(a,"version");return typeof c=="number"&&c>w?s("newerView",`view version ${c} is newer than ${w}`):(r.view=a,t.data&&(r.compatible=j(r,t.data,t.sourceId)),r)}function E(e,t,r){if(e==null)return null;if(!p(e))return r("source.params","not an object"),null;let s=Object.create(null),o=Object.keys(e);o.length>t.srcParams&&r("source.params",`more than ${t.srcParams} parameters; the rest left out`);for(let i of o.slice(0,t.srcParams)){let a=l(e,i);i===""||i.length>t.srcParamLength||typeof a!="string"||a.length>t.srcParamLength?r(`source.params.${i.slice(0,100)}`,`a parameter is a name and a text of at most ${t.srcParamLength} characters`):s[i]=a}return{...s}}function J(e,t,r){if(e===void 0)return null;if(!p(e))return t("source","not an object"),null;let s={},o=m(l(e,"id"),u.name),i=m(l(e,"name"),u.name);o&&(s.id=o),i&&(s.name=i);let a=E(l(e,"params"),r,t);a&&Object.keys(a).length&&(s.params=a);let c=l(e,"fields");return c!==void 0&&(Array.isArray(c)?(c.length>u.fields&&t("source.fields",`more than ${u.fields} fields; the rest left out`),s.fields=[],c.slice(0,u.fields).forEach((n,f)=>{let d=m(l(n,"name"),u.name),g=l(n,"type");d?k.includes(g)?s.fields?.push({name:d,type:g}):(t(`source.fields[${f}].type`,`unknown type ${JSON.stringify(g)}`),s.fields?.push({name:d,type:"string"})):t(`source.fields[${f}]`,"no name")})):t("source.fields","not a list")),s}function j(e,t,r){let s=C(t),o=e.source?.fields,i=b(e.view),a=i.filter(d=>!s.has(d.toLowerCase())),c=(o??[]).filter(d=>s.has(d.name.toLowerCase())&&s.get(d.name.toLowerCase()).type!==d.type).map(d=>({name:d.name,type:d.type,dataType:String(s.get(d.name.toLowerCase()).type)})),n=e.source?.id,f=typeof r=="string"&&r&&n?n===r?"same":"other":"unknown";return{ok:f!=="other"&&a.length===0&&c.length===0,source:f,missing:a,changed:c,needs:i}}export{S as a,T as b,M as c,u as d,z as e,W as f,G as g,B as h,E as i};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import{c as se,e as ae}from"./chunk-UTPKLCNX.js";import{c as j,l as D}from"./chunk-OHKPNELV.js";import{N as ee,O as te,P as oe,Q as L,S as ne,T as M,d as Z,j as K,n as Q}from"./chunk-KO3EKDH5.js";import{b as h,c as R,i as B,j as _,k as Y,l as F,m as w,r as q,w as W}from"./chunk-XR4CMFGN.js";import{a as re}from"./chunk-5QXN3X2Q.js";var X=String.raw`[+\-\u2212]?\p{Sc}?\d[\d.,'\u2019\u00a0\u202f ]*(?:[\u00a0\u202f ]?(?:%|\p{Sc}))?`,ge=new RegExp(`^${X}$`,"u"),U=/[\u061c\u200e\u200f\u202a-\u202e\u2066-\u2069]/g,be=/^[\s\u0000-\u001f\u007f-\u009f\u00ad\u061c\u180e\u200b-\u200f\u202a-\u202e\u2060-\u2064\u2066-\u206f\ufeff]+/,N=e=>Ee(e.replace(U,"")),Se=new RegExp(`^${X}\\s\u2013\\s${X}$`,"u");function Fe(e){return ue(e)===","?";":","}function ue(e){let t=Z(e).formatToParts(1.5).find(o=>o.type==="decimal");return t?t.value:"."}function Ee(e){if(/^[\t\r]/.test(e))return`'${e}`;let t=e.replace(be,"");return/^[=@]/.test(t)||/^[+-]/.test(t)&&!ge.test(t)&&!Se.test(t)?`'${e}`:e}function ce(e){let t=new Date(e),o=`${F(t.getUTCFullYear(),4)}-${F(t.getUTCMonth()+1)}-${F(t.getUTCDate())}`;return e%_===0?o:`${o} ${F(t.getUTCHours())}:${F(t.getUTCMinutes())}:${F(t.getUTCSeconds())}`}function ke(e,t){let o=String(Number(e.toPrecision(15)));return t==="."?o:o.replace(".",t)}function Re(e,t){let o=Math.sign(e)*Number(Math.abs(e).toFixed(t));return o===0?0:o}function De(e,t,o,n,s){let a=ee(t)?.name,c=a==="percent"||a==="percent100",r=n||c?te(t,s):null,u=a==="percent"?e*100:e,m=ke(r===null?u:Re(u,r),o);return c?`${m}%`:m}function H(e,t){let o=new Map;for(let n of e.merges)for(let s=n.row;s<n.row+n.rowSpan;s++)for(let a=n.col;a<n.col+n.colSpan;a++)(s!==n.row||a!==n.col)&&o.set(`${s},${a}`,e.rows[n.row][n.col]);return e.rows.map((n,s)=>n.map((a,c)=>{if(a)return a;let r=o.get(`${s},${c}`);return t&&r&&r.kind==="rowHeader"&&r.total===0&&(r.colSpan??1)===1?r:null}))}var me=e=>e.kind==="value"&&typeof e.value=="number"&&Number.isFinite(e.value);function ie(e,t){return t=w(t,"toCsv"),h(D(e),"toCsv(grid): grid must come from toGrid()"),O(e,t)}function O(e,t){let o=e.locale??Y,n=t.separator??Fe(o),s=ue(o),a=r=>{let u=N(r);return/["\r\n]/.test(u)||u.includes(n)?`"${u.replace(/"/g,'""')}"`:u};return H(e,t.repeatLabels!==!1).map(r=>r.map(u=>{if(!u)return"";if(me(u)){let m=u.valueIndex!==void 0&&!!e.showAs?.[u.valueIndex];return u.valueType==="date"?ce(u.value):De(u.value,u.format,s,m,o)}return a(u.text)}).join(n)).join(`\r
|
|
2
|
+
`)+`\r
|
|
3
|
+
`}function le(e){let t=o=>{let n=N(String(o??""));return/["\t\r\n]/.test(n)?`"${n.replace(/"/g,'""')}"`:n};return e.map(o=>o.map(t).join(" ")).join(`\r
|
|
4
|
+
`)+`\r
|
|
5
|
+
`}function Ae(e){return Array.isArray(e)?(h(e.every(Array.isArray),"toTsv(rows): rows must be arrays of texts"),le(e)):(h(D(e),"toTsv(grid): grid must come from toGrid() or be an array of rows"),le(H(e,!0).map(t=>t.map(o=>o?o.text:""))))}function Ie(e){return!e||e.value===null||e.value===void 0?null:me(e)?e.valueType==="date"?ce(e.value):Number(e.value.toPrecision(15)):typeof e.value=="number"?null:e.value}function _e(e,t){t=w(t,"toJson"),h(D(e),"toJson(grid): grid must come from toGrid()");let o=H(e,!0),n=e.rowHeaderColumns,s=o.slice(0,e.headerRows),a=m=>m?m.text:"",c=s[s.length-1]??[],r=s.map(m=>m.slice());for(let m of e.merges)for(let d=m.row;d<Math.min(m.row+m.rowSpan,e.headerRows);d++)for(let i=m.col;i<m.col+m.colSpan;i++)r[d][i]=e.rows[m.row][m.col];let u={rowHeaders:Array.from({length:n},(m,d)=>a(c[d]??null)),columns:e.dataColumns.map((m,d)=>{let i=n+d,x=[],b=null;for(let A of r){let v=A[i];v&&v!==b&&v.kind!=="corner"&&v.text!==""&&x.push(v.text),b=v}return{labels:x,value:m.valueIndex>=0?e.valueNames[m.valueIndex]??null:null,total:m.total}}),rows:e.bodyRows.map((m,d)=>{let i=o[e.headerRows+d];return{labels:i.slice(0,n).map(a),total:m.total,collapsed:m.collapsed,values:i.slice(n).map(Ie)}})};return JSON.stringify(u,null,t.space??2)}function Le(e,t){return t=w(t,"toCsvBytes"),new TextEncoder().encode((t.bom===!1?"":"\uFEFF")+ie(e,t))}var Ne=25569,Oe=1048576,Be=16384,fe=32767,je=Date.UTC(1900,0,1),Me=Date.UTC(1900,2,1),Xe=Date.UTC(1e4,0,1),Ue=new Set(["history"]);function G(e){return String(e).replace(U,"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/[\u0000-\u0008\u000B\u000C\u000E-\u001F]/g,"").replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,"")}function E(e,t){let o="",n=e+1;for(;n>0;){let s=(n-1)%26;o=String.fromCharCode(65+s)+o,n=Math.floor((n-1)/26)}return`${o}${t+1}`}function He(e){if(!(e>=je&&e<Xe))return null;let t=e/_+Ne;return e<Me?t-1:t}function pe(e){return`FF${q(e).toUpperCase()}`}function Ge(e){let t=String(e??"").replace(/[\u0000-\u001F\u007F\\/?*[\]:]/g," ").replace(/^'+|'+$/g,"").trim().slice(0,31).trim();return Ue.has(t.toLowerCase())?`${t} 1`:t||"Pivot"}function Pe(e){let t=new Map;for(let[n,s]of e)t.has(s)||t.set(s,[]),t.get(s).push(n);let o=[];for(let[n,s]of[...t.entries()].sort((a,c)=>a[0]-c[0])){s.sort((r,u)=>r-u);let a=s[0],c=s[0];for(let r=1;r<=s.length;r++){if(r<s.length&&s[r]===c+1){c=s[r];continue}o.push(a===c?E(n,a):`${E(n,a)}:${E(n,c)}`),r<s.length&&(a=c=s[r])}}return o.join(" ")}function P(e,t){t=w(t,"toXlsx"),h(D(e),"toXlsx(grid): grid must come from toGrid()"),R("xlsxRows",e.rows.length,Oe,"rows (an Excel sheet)"),R("xlsxColumns",e.columnCount,Be,"columns (an Excel sheet)");let o={...re,...t.theme||{}},n=e.locale,s=new Map,a=[{fmt:0,bold:!1,top:!1}],c=new Map([["0|false|false",0]]),r=(f,p,T=!1)=>{let y=0;f&&f!=="General"&&(s.has(f)||s.set(f,164+s.size),y=s.get(f));let l=`${y}|${p}|${T}`;return c.has(l)||(c.set(l,a.length),a.push({fmt:y,bold:p,top:T})),c.get(l)},u=(f,p,T,y)=>{let l=p.length>fe?p.slice(0,fe):p;return`<c r="${f}" t="inlineStr" s="${r("General",T,y)}"><is><t xml:space="preserve">${G(l)}</t></is></c>`},m=(f,p,T,y,l)=>`<c r="${f}" s="${r(T,y,l)}"><v>${p}</v></c>`,d=new Array(e.columnCount).fill(6),i=new Map,x=e.rows.map((f,p)=>{let T=p<e.headerRows,y=f.map((l,S)=>{if(!l)return"";let $=E(S,p),C=T||l.total>0;if((!l.colSpan||l.colSpan===1)&&(d[S]=Math.max(d[S],Math.min(60,l.text.length+2))),l.kind==="value"&&typeof l.value=="number"&&Number.isFinite(l.value)){if(l.total===0&&l.valueIndex!==void 0&&e.conditional&&e.conditional[l.valueIndex]){let g=i.get(l.valueIndex)??{cells:[],min:1/0,max:-1/0};g.cells.push([p,S]),g.min=Math.min(g.min,l.value),g.max=Math.max(g.max,l.value),i.set(l.valueIndex,g)}if(l.valueType==="date"){let g=He(l.value);return g===null?u($,l.text,C):m($,g,M(l.format,l.value,n),C)}return m($,l.value,M(l.format,l.value,n),C)}let I=(l.rowSpan??1)>1;return(l.kind==="rowHeader"||l.kind==="colHeader")&&typeof l.value=="number"&&l.text===String(l.value)?m($,l.value,"General",C,I):l.text===""?C?`<c r="${$}" s="${r("General",!0)}"/>`:"":u($,l.text,C,I)});return`<row r="${p+1}">${y.join("")}</row>`}),b=1,A=[...i.entries()].map(([f,{cells:p,min:T,max:y}])=>{let l=e.conditional[f],S;if(l.type==="colorScale"){let $=l.colors.length>=2?l.colors:o.colorScale,C=$.length===3?'<cfvo type="min"/><cfvo type="percentile" val="50"/><cfvo type="max"/>':'<cfvo type="min"/><cfvo type="max"/>';S=`<cfRule type="colorScale" priority="${b++}"><colorScale>${C}${$.map(I=>`<color rgb="${pe(I)}"/>`).join("")}</colorScale></cfRule>`}else{let $=T>0?'<cfvo type="num" val="0"/>':'<cfvo type="min"/>',C=y<0?'<cfvo type="num" val="0"/>':'<cfvo type="max"/>';S=`<cfRule type="dataBar" priority="${b++}"><dataBar>${$}${C}<color rgb="${pe(l.color||o.dataBar)}"/></dataBar></cfRule>`}return`<conditionalFormatting sqref="${Pe(p)}">${S}</conditionalFormatting>`}),v=e.headerRows>0||e.rowHeaderColumns>0?`<pane${e.rowHeaderColumns?` xSplit="${e.rowHeaderColumns}"`:""}${e.headerRows?` ySplit="${e.headerRows}"`:""} topLeftCell="${E(e.rowHeaderColumns,e.headerRows)}" activePane="${e.rowHeaderColumns&&e.headerRows?"bottomRight":e.headerRows?"bottomLeft":"topRight"}" state="frozen"/>`:"",z=d.map((f,p)=>`<col min="${p+1}" max="${p+1}" width="${f}" customWidth="1"/>`).join(""),we=e.merges.length?`<mergeCells count="${e.merges.length}">${e.merges.map(f=>`<mergeCell ref="${E(f.col,f.row)}:${E(f.col+f.colSpan-1,f.row+f.rowSpan-1)}"/>`).join("")}</mergeCells>`:"",k=`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
6
|
+
`,ve=`${k}<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><sheetViews><sheetView workbookViewId="0">${v}</sheetView></sheetViews>${z?`<cols>${z}</cols>`:""}<sheetData>${x.join("")}</sheetData>${we}${A.join("")}</worksheet>`,ye=[...s.entries()].map(([f,p])=>`<numFmt numFmtId="${p}" formatCode="${G(f)}"/>`).join(""),$e=`${k}<styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">${s.size?`<numFmts count="${s.size}">${ye}</numFmts>`:""}<fonts count="2"><font><sz val="11"/><name val="Calibri"/></font><font><b/><sz val="11"/><name val="Calibri"/></font></fonts><fills count="2"><fill><patternFill patternType="none"/></fill><fill><patternFill patternType="gray125"/></fill></fills><borders count="1"><border/></borders><cellStyleXfs count="1"><xf/></cellStyleXfs><cellXfs count="${a.length}">${a.map(f=>`<xf numFmtId="${f.fmt}" fontId="${f.bold?1:0}"${f.fmt?' applyNumberFormat="1"':""}${f.bold?' applyFont="1"':""}${f.top?' applyAlignment="1"><alignment vertical="top"/></xf>':"/>"}`).join("")}</cellXfs><dxfs count="0"/></styleSheet>`,Te=G(Ge(t.sheetName)),Ce={"[Content_Types].xml":`${k}<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Default Extension="xml" ContentType="application/xml"/><Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/><Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/><Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"/></Types>`,"_rels/.rels":`${k}<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/></Relationships>`,"xl/workbook.xml":`${k}<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"><sheets><sheet name="${Te}" sheetId="1" r:id="rId1"/></sheets></workbook>`,"xl/_rels/workbook.xml.rels":`${k}<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/></Relationships>`,"xl/styles.xml":$e,"xl/worksheets/sheet1.xml":ve},V={};for(let[f,p]of Object.entries(Ce))V[f]=se(p);return ae(V,{level:6})}var de=new Set(["date","datetime","time"]);function Je(e,t){if(!e||typeof e!="object")return;if(Object.hasOwn(e,t))return e[t];let o=t.toLowerCase(),n=Object.keys(e).find(s=>s.toLowerCase()===o);return n===void 0?void 0:e[n]}function ze(e,t,o,n){let s=t?t.split(":")[0]:null;if(e.type==="date"){let a=s&&de.has(s)?t:e.dateOnly?"date":"datetime",c=L(a,o);return r=>({kind:"value",total:0,value:r,valueType:"date",format:a,text:c(r)})}if(e.type==="number"&&s!=="text"){let a=t&&!de.has(s)?t:null,c=a?L(a,o):null;return r=>{let u=a??`number:${ne(r,6)}`;return{kind:"value",total:0,value:r,valueType:"number",format:u,text:c?c(r):L(u,o)(r)}}}return e.type==="boolean"?a=>({kind:"value",total:0,value:null,valueType:"text",text:a?n.true:n.false}):a=>({kind:"value",total:0,value:null,valueType:"text",text:String(a)})}function J(e,t,o,n){h(j(e),`${n}(data, indices): data must come from encode()`),h(t!==null&&typeof t=="object"&&typeof t.length=="number",`${n}(data, indices): indices must be an array of row positions`);let s=B(o),a=W(null,o.locale),c={...K,...o.labels||{}},r=e.columns;o.columns!==void 0&&(h(Array.isArray(o.columns),`${n}: options.columns must be an array of field names`),r=o.columns.map(i=>e.column(String(i))).filter(i=>i!==void 0)),R("cells",(t.length+1)*r.length,s.cells,"rows x columns of the rows export");let u=r.map(i=>{let x=Je(o.formats,i.name);return ze(i,typeof x=="string"&&oe(x)?x.trim().toLowerCase():null,a,c)}),d=[r.map(i=>({kind:"colHeader",total:0,value:i.name,text:Q(i.name,c)}))];for(let i=0;i<t.length;i++){let x=t[i];h(Number.isInteger(x)&&x>=0&&x<e.length,`${n}: indices[${i}] is not a row of the data`),d.push(r.map((b,A)=>{let v=b.codes[x];return v<0?null:u[A](b.dict[v])}))}return{rows:d,headerRows:1,rowHeaderColumns:0,columnCount:r.length,merges:[],dataColumns:[],bodyRows:[],formats:[],showAs:[],valueNames:[],conditional:[],locale:a,timeZone:e.timeZone}}function Ve(e,t,o){return o=w(o,"rowsToCsv"),O(J(e,t,o,"rowsToCsv"),o)}function Ye(e,t,o){return o=w(o,"rowsToCsvBytes"),new TextEncoder().encode((o.bom===!1?"":"\uFEFF")+O(J(e,t,o,"rowsToCsvBytes"),o))}function qe(e,t,o){return o=w(o,"rowsToXlsx"),P(J(e,t,o,"rowsToXlsx"),{sheetName:o.sheetName})}function We(e,t){let[o,n]=new Date(e).toISOString().split("T");return t?o:`${o}T${e%1e3===0?n.slice(0,8):n.slice(0,12)}`}function he(e,t,o){h(j(e),`${o}(data): data must come from encode()`);let n=e.columns.filter(c=>!c.derived);t.columns!==void 0&&(h(Array.isArray(t.columns),`${o}: options.columns must be an array of field names`),n=[...new Set(t.columns.map(r=>String(r).toLowerCase()))].map(r=>n.find(u=>u.key===r)).filter(r=>r!==void 0)),R("cells",(e.length+1)*n.length,B(t).cells,"rows x columns of the data export");let s=n.map(c=>c.type==="date"?r=>We(r,!!c.dateOnly):r=>r);return{columns:n,cell:(c,r)=>{let u=n[r].codes[c];return u<0?null:s[r](n[r].dict[u])}}}function Ze(e,t){return t=w(t,"dataToCsv"),xe(e,t,"dataToCsv")}function Ke(e,t){return t=w(t,"dataToCsvBytes"),new TextEncoder().encode((t.bom===!1?"":"\uFEFF")+xe(e,t,"dataToCsvBytes"))}function xe(e,t,o){let{columns:n,cell:s}=he(e,t,o),a=u=>{let m=N(String(u));return/[",\r\n]/.test(m)?`"${m.replace(/"/g,'""')}"`:m},c=[n.map(u=>a(u.name)).join(",")],r=n.length===1?'""':"";for(let u=0;u<e.length;u++){let m=new Array(n.length);for(let d=0;d<n.length;d++){let i=s(u,d);m[d]=i===null?r:typeof i=="string"?a(i):String(i)}c.push(m.join(","))}return c.join(`\r
|
|
7
|
+
`)+`\r
|
|
8
|
+
`}function Qe(e,t){t=w(t,"dataToJson");let{columns:o,cell:n}=he(e,t,"dataToJson"),s=[];for(let a=0;a<e.length;a++){let c=Object.create(null);for(let r=0;r<o.length;r++)c[o[r].name]=n(a,r);s.push(JSON.stringify(c))}return s.length?`[
|
|
9
|
+
${s.join(`,
|
|
10
|
+
`)}
|
|
11
|
+
]
|
|
12
|
+
`:`[]
|
|
13
|
+
`}export{ie as a,Ae as b,_e as c,Le as d,P as e,Ve as f,Ye as g,qe as h,Ze as i,Ke as j,Qe as k};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as se,c as ne,g as Q,h as je,i as Me,j as ze}from"./chunk-OHKPNELV.js";import{$ as Ce,A as ye,B as we,C as $e,D as Se,E as Le,G as xe,H as Ae,I as Y,J as Ee,M as Oe,Q as H,U as Te,V as Z,Y as ve,Z as q,_ as Ie,a as ie,aa as _e,ba as ke,ca as Ne,da as Fe,e as W,ea as Re,f as ae,g as le,ga as M,ha as K,i as ce,j,o as X,p as fe,s as me,t as ue,v as de,w as pe,x as he,y as ge,z as be}from"./chunk-KO3EKDH5.js";import{b as E,c as re,i as U,m as C,w as V}from"./chunk-XR4CMFGN.js";import{a as O,b as ee}from"./chunk-5QXN3X2Q.js";function Ke(e,t,o){o=C(o,"fieldItems"),E(ne(e),"fieldItems(data, field): data must come from encode()");let r=U(o),{view:n}=M(o.view??{},e,{limits:o.limits}),s=V(n.formatting.locale,o.locale),i={...j,...o.labels||{}};if(typeof t!="string")return null;let a=n.derived.find(h=>h.name.toLowerCase()===t.trim().toLowerCase()),c=a?ce(e,a):e.column(t.trim());if(!c)return null;let p=new Float64Array(c.dict.length+1);for(let h=0;h<c.codes.length;h++)p[c.codes[h]+1]++;let u=fe(c,s,e.cache),m=Ee(n,c.name,c,a?e.column(a.field)??c:c,s,()=>xe(o.now,e.timeZone)),l=h=>!m||m[h+1]===1,f=[];for(let h=0;h<c.dict.length;h++)p[h+1]>0&&f.push(h);f.sort((h,d)=>u[h]-u[d]);let y=f.map(h=>({value:c.dict[h],label:X(c,c.dict[h],s,i),count:p[h+1],kept:l(h)}));return p[0]>0&&y.push({value:null,label:X(c,null,s,i),count:p[0],kept:l(-1)}),{field:c.name,type:c.type,items:y.slice(0,r.items),truncated:y.length>r.items}}function De(e,t){t=C(t,"toSeries"),E(Q(e),"toSeries(result): result must come from computePivot()");let o=U(t),r=e.view,n={...j,...t.labels||{}},s=t.separator??" / ",i=(d,g,w)=>je(d,g,w,!1,!1).filter(b=>b.kind!=="grand"),a=i(e.rowRoot,r.rows.length,r.collapsed.rows),c=i(e.colRoot,r.cols.length,r.collapsed.cols);a.length===0&&(a=[{node:e.rowRoot,kind:"leaf"}]);let p=a.length;t.maxCategories!==void 0&&(E(Number.isInteger(t.maxCategories)&&t.maxCategories>0,"toSeries: maxCategories must be a positive whole number"),a=a.slice(0,t.maxCategories)),c.length===0&&(c=[{node:e.colRoot,kind:"leaf"}]);let u=(d,g)=>{let w=[];for(let b=g;b&&b.parent;b=b.parent)w.unshift(e.label(d,b,n));return w},m=(d,g)=>{let w=u(d,g);return w.length?w.join(s):n.grandTotal},l=r.values.filter((d,g)=>e.valueTypes[g]!=="text").length;re("cells",a.length*Math.max(1,c.length*l),o.cells,"chart data points");let f=r.values.map(d=>ze(d,n)),y=d=>typeof d=="number"&&Number.isFinite(d)?d:null,h=[];for(let{node:d}of c)r.values.forEach((g,w)=>{if(e.valueTypes[w]==="text")return;let b=d.parent?m("cols",d):"",R=b&&r.values.length>1?`${b}${s}${f[w]}`:b||f[w];h.push({name:R,valueIndex:w,colPath:d.path,format:Me(e,w),data:a.map(({node:T})=>y(e.display(T,d,w)))})});return{categories:a.map(({node:d})=>m("rows",d)),categoryLevels:a.map(({node:d})=>u("rows",d)),categoryCount:p,categoryPaths:a.map(({node:d})=>d.path),series:h,totals:r.values.map((d,g)=>a.map(({node:w})=>y(e.display(w,e.colRoot,g))))}}var Qe=e=>e+16,et=e=>({top:Math.max(24,e+10),bottom:Math.max(32,e+18),right:160});function tt(e,t,o,r){let n=et(r.fontSize),s=e==="bottom"||e==="right"||e==="off"?e:t?"top":"off";return s==="off"?{legend:null,room:{top:0,bottom:0,right:0}}:s==="right"?{legend:{type:"scroll",orient:"vertical",right:0,top:o+8,bottom:8,textStyle:r},room:{top:0,bottom:0,right:n.right}}:s==="bottom"?{legend:{type:"scroll",bottom:0,textStyle:r},room:{top:0,bottom:n.bottom,right:0}}:{legend:{type:"scroll",top:o,textStyle:r},room:{top:n.top,bottom:0,right:0}}}var Pe=e=>e+12;function ot(e,t,o,{separator:r,axisLine:n,theme:s}){let i=e.categoryLevels??[];if(o.groupLabels==="off"||t<2||!i.some(f=>f.length>=2))return null;let a=i.map(f=>f[0]??""),c=i.map((f,y)=>f.length>1?f.slice(1).join(r):e.categories[y]),p=a.map((f,y)=>y===0||f!==a[y-1]),u=new Set,m=0,l=a.length;for(let f=1;f<=a.length;f++)(f===a.length||p[f])&&(u.add(Math.floor((m+f-1)/2)),l=Math.min(l,f-m),m=f);return{leaves:c,axis:{type:"category",data:a,position:o.horizontal?"left":"bottom",offset:Pe(s.textSize??O.textSize),axisLine:{show:!1},axisTick:{show:!0,inside:!0,length:Pe(s.textSize??O.textSize),interval:f=>f>0&&p[f]===!0,lineStyle:n.lineStyle},axisLabel:{color:s.textColor,fontSize:s.textSize??O.textSize,fontWeight:s.strongWeight??O.strongWeight,interval:f=>u.has(f)},axisPointer:{show:!1},splitLine:{show:!1},groups:!0,groupsAuto:o.groupLabels!=="on",groupSize:l}}}function z(e,t){let o=Array.isArray(e.derived)?e.derived:[],r=n=>{let s=String(n).toLowerCase(),i=o.find(a=>a&&typeof a.name=="string"&&a.name.toLowerCase()===s);return i&&!W.includes(i.by)?!1:t.column(i?i.field:n)?.type==="date"};return(Array.isArray(e.rows)?e.rows:[]).some(r)?"line":"bar"}function rt(e,t){t=C(t,"toEChartsOption"),E(Q(e),"toEChartsOption(result): result must come from computePivot()");let o=t.theme??{},r={...e.view.chart,...t.chart||{}};r.type==="auto"&&(r.type=z(e.view,e.encoded));let n=V(e.view.formatting.locale,t.locale??e.locale),s=t.series??De(e,t);E(s&&Array.isArray(s.series)&&Array.isArray(s.categories),"toEChartsOption: series must come from toSeries()");let i=s.series[0],a=H(i?i.format:"number",n),c=H(i&&/^percent/.test(i.format)?i.format:"compact",n),p={color:o.textColor,fontFamily:o.fontFamily,fontSize:o.textSize??O.textSize},u={color:p.color,fontSize:p.fontSize},m={lineStyle:{color:o.axisColor}},l={backgroundColor:o.backgroundColor??"transparent",textStyle:p,...o.colors&&o.colors.length?{color:o.colors}:{}},f=S=>typeof S=="number"?a(S):"",y=typeof r.title=="string"&&r.title.trim()?{title:{text:r.title.trim(),left:"center",top:0,textStyle:{...p,fontSize:o.titleSize??O.titleSize,fontWeight:o.strongWeight??O.strongWeight}}}:{},h=y.title?Qe(o.titleSize??O.titleSize):0,{legend:d,room:g}=tt(r.legend,q.includes(r.type)||s.series.length>1,h,p),w=d?{legend:d}:{},b=r.valueLabels==="off"||r.valueLabels==="value"||r.valueLabels==="percent"||r.valueLabels==="both"?r.valueLabels:"auto";if(q.includes(r.type)){let S=i?i.valueIndex:0,v=s.categories.map((L,qe)=>({name:L,value:s.totals[S]?s.totals[S][qe]:null})).filter(L=>typeof L.value=="number"&&L.value>0),_=L=>H("percent100:1",n)(L.percent),I=r.labelPosition==="inside",x={value:L=>a(L.value),percent:_,both:L=>`${a(L.value)} (${_(L)})`},J=b==="off"?{show:!1}:I?{position:"inside",formatter:x[b==="auto"?"percent":b]}:b==="auto"?{}:{formatter:L=>`${L.name}: ${x[b](L)}`},k=r.type==="donut"?o.donutRadius??O.donutRadius:o.pieRadius??O.pieRadius;return{...l,...y,tooltip:{trigger:"item",valueFormatter:f},...w,series:[{type:"pie",name:i?i.name:"",radius:[...k],top:h+g.top,...g.bottom?{bottom:g.bottom}:{},...g.right?{right:g.right}:{},data:v,...I?{minShowLabelAngle:12,labelLine:{show:!1}}:{},label:{...I?{}:{color:o.textColor},...J}}]}}if(r.type==="heatmap"){let S=s.series.filter(x=>x.valueIndex===(i?i.valueIndex:0)),v=[],_=1/0,I=-1/0;return S.forEach((x,J)=>{x.data.forEach((k,L)=>{k!==null&&(v.push([J,L,k]),_=Math.min(_,k),I=Math.max(I,k))})}),{...l,...y,tooltip:{trigger:"item",valueFormatter:f},grid:{top:16+h,bottom:64},xAxis:{type:"category",data:S.map(x=>x.name),axisLine:m,axisLabel:{...u,interval:0},splitArea:{show:!1}},yAxis:{type:"category",data:s.categories,axisLine:m,axisLabel:{...u},splitArea:{show:!1}},visualMap:{min:v.length?_:0,max:v.length?I:1,calculable:!0,orient:"horizontal",left:"center",bottom:0,textStyle:p,formatter:x=>typeof x=="number"?a(x):String(x),...o.heatmapColors?{inRange:{color:o.heatmapColors}}:{}},series:[{type:"heatmap",name:i?i.name:"",data:v,label:{show:b==="auto"?v.length<=200:b!=="off",formatter:x=>a(x.value[2])}}]}}let R=r.type==="line"||r.type==="area"?"line":"bar",T=ot(s,e.view.rows.length,r,{separator:t.separator??" / ",axisLine:m,theme:o}),D={type:"category",data:T?T.leaves:s.categories,axisLine:m,axisLabel:{...u}},oe={type:"value",axisLine:m,axisLabel:{...u,formatter:S=>c(S)},splitLine:{lineStyle:{color:o.gridColor}}},Xe=b!=="auto"&&b!=="off",Ye=R==="line"?"top":r.stacked?"inside":r.horizontal?"right":"top",Ze=Xe?{label:{show:!0,position:Ye,color:o.textColor,formatter:S=>typeof S.value=="number"?a(S.value):""}}:{};return{...l,...y,...w,tooltip:{trigger:"axis",valueFormatter:f},grid:{top:16+h+g.top,...g.bottom?{bottom:g.bottom+8}:{},...g.right?{right:g.right+8}:{}},xAxis:r.horizontal?oe:T?[D,T.axis]:D,yAxis:r.horizontal?T?[{...D,inverse:!0},{...T.axis,inverse:!0}]:{...D,inverse:!0}:oe,series:s.series.map(S=>({type:R,name:S.name,data:S.data,...r.stacked?{stack:"total"}:{},...r.type==="area"?{areaStyle:{}}:{},...R==="line"?{connectNulls:!1,smooth:!!r.smooth}:{},...Ze}))}}function st(e,t){if(e.chart.type!=="auto")return{auto:!1,swap:!1,chart:{type:e.chart.type,stacked:!!e.chart.stacked,horizontal:!!e.chart.horizontal}};let o=z(e,t),r=o==="bar"&&e.cols.length>0&&z({...e,rows:e.cols},t)==="line";return{auto:!0,swap:r,chart:{type:o==="line"||r?"line":"bar",stacked:!1,horizontal:!1}}}var Ue=Object.freeze({percentOfRowTotal:"percentOfColumnTotal",percentOfColumnTotal:"percentOfRowTotal",percentOfParentRow:"percentOfParentColumn",percentOfParentColumn:"percentOfParentRow"});function nt(e){let t=JSON.parse(JSON.stringify(e));[t.rows,t.cols]=[t.cols,t.rows],t.collapsed={rows:t.collapsed.cols,cols:t.collapsed.rows};for(let o of t.values)o.showAs&&o.showAs.axis&&(o.showAs={...o.showAs,axis:o.showAs.axis==="rows"?"cols":"rows"}),o.showAs&&Object.hasOwn(Ue,o.showAs.type)&&(o.showAs={...o.showAs,type:Ue[o.showAs.type]});return t}var Ve=8;function it(e){let t=f=>e.getPropertyValue(f).trim(),o=[];for(let f=1;f<=Ve;f++){let y=t(`--pk-chart-${f}`);y&&o.push(y)}let r={colors:o,textColor:t("--pk-muted")||void 0,axisColor:t("--pk-border")||void 0,gridColor:t("--pk-grid")||t("--pk-border")||void 0,fontFamily:t("font-family")||void 0,backgroundColor:"transparent"},n=Number(t("--pk-weight-strong"));n>=1&&n<=1e3&&(r.strongWeight=n);let s=ee(t("--pk-chart-title-size"));s!==null&&s>=1&&(r.titleSize=s);let i=ee(t("--pk-chart-text-size"));i!==null&&i>=1&&(r.textSize=i);let a=t("--pk-heat-low"),c=t("--pk-heat-high");a&&c&&(r.heatmapColors=[a,c]);let[p,u,m,l]=["--pk-scale-low","--pk-scale-mid","--pk-scale-high","--pk-chart-1"].map(t);return p&&m&&(r.colorScale=u?[p,u,m]:[p,m]),l&&(r.dataBar=l),r}var at=Object.freeze({aggregators:ie,commonAggregators:Object.freeze(["sum","count","average","min","max"]),columnTypes:se,deriveUnits:le,timelineUnits:W,cyclicUnits:ae,filterTypes:Y,filterFields:Object.freeze(Object.fromEntries(Y.map(e=>[e,Ae[e].fields]))),filterBlanks:Le,textOps:be,textOn:ye,matchCases:me,matchWhitespace:ue,compareOps:we,comparePrecisions:$e,topTies:Se,relativeUnits:de,relativeDirections:pe,relativeMaxCount:he,relativeAnchors:ge,formats:Oe,showAs:Z,showAsAlongAxis:Object.freeze(Z.filter(e=>Te[e].alongAxis)),chartTypes:ve,chartValueLabels:_e,chartLegends:Ne,chartAxisLabels:Fe,chartGroupLabels:Re,chartLabelPositions:ke,displayModes:Ie,conditionalTypes:Ce});var te=Object.freeze({items:20,text:80});function ct(e,t){if(e==null)return null;if(t==="date"&&typeof e=="number"){let r=new Date(e).toISOString();return r.endsWith("T00:00:00.000Z")?r.slice(0,10):r.slice(0,16)}let o=String(e);return o.length>te.text?`${o.slice(0,te.text-1)}\u2026`:o}var B=e=>e?e.field?`${e.agg} of ${e.field}`:`${e.agg} of rows`:"the first value",ft=e=>{let t=e.slice(0,10).map(o=>typeof o=="string"?JSON.stringify(ct(o,"string")):String(o));return e.length>10?`${t.join(", ")} and ${e.length-10} more`:t.join(", ")},mt=Object.freeze({exclude:"blanks dropped",include:"blanks kept",only:"only blanks"}),We=Object.freeze({"=":"is",">":"is greater than",">=":"is at least","<":"is less than","<=":"is at most",between:"is between"});function ut(e){let t=e.not?"not ":"",o=e.blanks?` (${mt[e.blanks]})`:"",r=(n,s)=>`${JSON.stringify(n)} and ${JSON.stringify(s)}`;switch(e.type){case"in":return`${e.field} is ${t}one of ${ft(e.items??[])||"(no items)"}${o}`;case"blank":return`${e.field} is ${t}blank`;case"text":return`${e.field}${e.on==="label"?" (as shown)":""} ${t?"does not ":""}${e.op==="equals"?t?"equal":"equals":e.op==="contains"?t?"contain":"contains":e.op==="beginsWith"?t?"begin with":"begins with":t?"end with":"ends with"} ${JSON.stringify(e.value)}${e.match?`, case ${e.match.case}, whitespace ${e.match.whitespace}`:""}${o}`;case"compare":return`${e.field} ${t?"is not":"is"} ${We[e.op].replace(/^is /,"")} ${e.op==="between"?r(e.value,e.value2):JSON.stringify(e.value)}${e.precision&&e.precision!=="day"?` (by ${e.precision})`:""}${o}`;case"relative":{let n=e.direction==="this"?`this ${e.unit}`:`${e.direction} ${e.count} ${e.unit}${e.count===1?"":"s"}`,s=[e.calendar===!1?"rolling":null,e.includeCurrent===!1?"current excluded":null,e.anchor&&e.anchor!=="today"?`from ${e.anchor}`:null].filter(Boolean);return`${e.field} ${t?"is not":"is"} in the ${n}${s.length?` (${s.join(", ")})`:""}${o}`}case"top":return`${e.bottom?"bottom":"top"} ${e.count} ${e.field} by ${B(e.by)}${e.ties==="all"?", ties kept":""}`;case"value":return`${e.field} where ${B(e.by)} ${t?"is not":"is"} ${We[e.op].replace(/^is /,"")} ${e.op==="between"?r(e.value,e.value2):JSON.stringify(e.value)}`;default:return`${e.field}: ${e.type}`}}function dt(e,t,o){o=C(o,"describeView");let{valid:r,errors:n,warnings:s}=K(e,t,o),i=M(e,t,o).view,a=i.values.map(l=>({field:l.field,agg:l.agg,label:l.label,showAs:l.showAs?.type??null,text:l.label??B(l)})),c=i.filters.map(l=>({...l,text:ut(l)})),p=i.derived.map(l=>({...l,text:`${l.name}: ${l.field} by ${l.by}${l.by==="bin"?` of ${l.size}`:""}`})),u=i.sort.map(l=>({...l,text:`${l.field} ${l.by==="value"?`by ${B(l.value)}`:l.by==="custom"?"in a custom order":"by label"}, ${l.order==="desc"?"descending":"ascending"}`})),m=[a.length?a.map(l=>l.text).join(", "):"count of rows",i.rows.length?`by ${i.rows.join(" > ")}`:null,i.cols.length?`across ${i.cols.join(" > ")}`:null,c.length?`where ${c.map(l=>l.text).join("; and ")}`:null,i.display==="chart"?`as a ${i.chart.type==="auto"?"chart":`${i.chart.type} chart`}`:null];return{valid:r,errors:n,warnings:s,rows:{fields:i.rows,text:i.rows.join(" > ")},cols:{fields:i.cols,text:i.cols.join(" > ")},values:a,filters:c,derived:p,sort:u,display:{mode:i.display,chart:i.display==="chart"?i.chart.type:null},text:`${r?"":`(invalid: ${n.length} error${n.length===1?"":"s"}, the parts they name are left out) `}${m.filter(Boolean).join(" ")}`}}var A=Object.freeze({fields:1e3,label:120,description:1e3,order:1e3,href:2e3,depth:32,steps:2e4}),N=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),$=(e,t)=>N(e)&&Object.hasOwn(e,t)?e[t]:void 0,G=(e,...t)=>Object.fromEntries(Object.entries(e).filter(([o])=>!t.includes(o)));function He(e,t){if(typeof e!="string")return;let o=e.slice(0,t*4).replace(/[\u0000-\u001f\u007f-\u009f\u2028\u2029]+/g," ").replace(/[\u200b-\u200f\u202a-\u202e\u2060-\u2064\u2066-\u2069\ufeff]/g,"").replace(/\s+/g," ").trim();if(o)return o.length>t?`${o.slice(0,t-1).trimEnd()}\u2026`:o}function pt(e){if(!(typeof e!="string"||e.length>A.href))try{let t=new URL(e.trim());return t.protocol==="https:"&&!t.username&&!t.password?t.href:void 0}catch{return}}function Je(e,t){if(typeof t!="string"||!t.startsWith("#"))return;let o=t.slice(1).split("/").slice(1).map(n=>n.replace(/~1/g,"/").replace(/~0/g,"~")),r=e;for(let n of o)if(r=Array.isArray(r)&&/^\d+$/.test(n)?r[Number(n)]:$(r,n),r===void 0)return;return r}var Be=Symbol("resolving");function P(e,t,o,r=o){let n=`${r}:${t}`;!e.said.has(n)&&e.issues.length<100&&(e.said.add(n),e.issues.push({path:t,message:o}))}function F(e,t,o,r=0){if(!N(t))return;if(r>A.depth){P(e,o,`nested deeper than ${A.depth} levels; not read`,"depth");return}if(e.steps<=0){P(e,"",`stopped after ${A.steps} schema objects; the rest is not read`,"steps");return}e.steps-=1;let n=t,s=$(n,"$ref");if(typeof s=="string"){let a=e.refs.get(s);if(a===Be){P(e,o,`$ref ${s.slice(0,200)} refers to itself; not read`);return}if(!e.refs.has(s)){let c=Je(e.root,s);c===void 0&&P(e,o,s.startsWith("#")?`$ref ${s.slice(0,200)} is not in the document`:`$ref ${s.slice(0,200)} is not local; not fetched`),e.refs.set(s,Be),a=F(e,c,s.slice(0,200),r+1),e.refs.set(s,a)}if(!a)return;n={...a,...G(n,"$ref")}}let i=$(n,"allOf");if(Array.isArray(i)){let a=i.slice(0,A.fields).map((u,m)=>F(e,u,`${o}.allOf[${m}]`,r+1)).filter(Boolean),c={};for(let u of[...a,n]){let m=$(u,"properties");if(N(m))for(let l of Object.keys(m))Object.defineProperty(c,l,{value:m[l],enumerable:!0,writable:!0,configurable:!0})}n={...a.reduce((u,m)=>({...u,...G(m,"properties")}),{}),...G(n,"allOf"),properties:c}}for(let a of["anyOf","oneOf"]){let c=$(n,a);if(Array.isArray(c)){let p=c.slice(0,A.fields).map((u,m)=>F(e,u,`${o}.${a}[${m}]`,r+1)).filter(u=>u&&$(u,"type")!=="null");p.length===1&&(n={...p[0],...G(n,a)})}}return n}function Ge(e){let t=$(e,"type"),o=Array.isArray(t)?t.filter(r=>r!=="null"):[t];return o.length===1&&typeof o[0]=="string"?o[0]:void 0}function ht(e,t,o="fieldDefaultsFromSchema"){return E(typeof t=="string"&&t.trim()!=="",`${o}: an OpenAPI document needs options.schema, the name of a schema or a local $ref`),t.startsWith("#")?Je(e,t):$($($(e,"components"),"schemas"),t)??$($(e,"definitions"),t)}function gt(e,t={}){E(N(e),"fieldDefaultsFromSchema: the schema must be an object"),E(N(t),"fieldDefaultsFromSchema: options must be an object");let o=e,r=$(o,"openapi")!==void 0||$(o,"swagger")!==void 0,n={root:o,steps:A.steps,refs:new Map,issues:[],said:new Set},s=F(n,r||t.schema!==void 0?ht(o,t.schema):o,"");E(s,`fieldDefaultsFromSchema: no schema ${JSON.stringify(String(t.schema??"")).slice(0,80)} in the document`),Ge(s)==="array"&&(s=F(n,$(s,"items"),"items"));let i=$(s,"properties");E(N(i),"fieldDefaultsFromSchema: the schema of a row must have properties");let a={},c=Object.keys(i);c.length>A.fields&&P(n,"properties",`${c.length} fields, more than ${A.fields}: the first ${A.fields} are read`);for(let p of c.slice(0,A.fields)){let u=F(n,i[p],`properties.${p.slice(0,200)}`);if(!u)continue;let m={},l=He($(u,"title"),A.label);l&&(m.label=l);let f=He($(u,"description"),A.description);f&&(m.description=f);let y=pt($($(u,"externalDocs"),"url"));y&&(m.href=y);let h=Ge(u),d=$(u,"format");h==="integer"||h==="number"?m.type="number":h==="string"&&(d==="date"||d==="date-time")&&(m.type="date");let g=$(u,"enum");if(Array.isArray(g)){let w=g.slice(0,A.order).filter(b=>b===null||["string","number","boolean"].includes(typeof b));w.length>0&&(m.order=w)}Object.keys(m).length>0&&Object.defineProperty(a,p,{value:m,enumerable:!0,writable:!0,configurable:!0})}return{defaults:a,issues:n.issues}}var bt=Object.freeze(["id","nr","no","number","key","#"]);function yt(e){let t=String(e).replace(/(\s*\([^()]*\))+\s*$/,"").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Za-z])(\d)/g,"$1 $2").replace(/#/g," # ").split(/[\s_.\-/:()]+/).filter(Boolean);for(;t.length>1&&/^\d+$/.test(t[t.length-1]);)t.pop();let o=t[t.length-1];return o!==void 0&&bt.includes(o.toLowerCase())}export{Ke as a,De as b,rt as c,st as d,nt as e,it as f,at as g,dt as h,He as i,gt as j,yt as k};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{A as He,B as Ye,C as Ze,D as Te,a as We,f as B,g as Q,i as qe,j as h,l as X,m as R,n as k,o as m,p as I,q as p,t as Oe,u as ee,v as Je,w as Ge,x as j}from"./chunk-XR4CMFGN.js";var D=()=>"number",xt=()=>"text";function Pt(e,t){let n=new Float64Array(t);if(!e)return{add:r=>{n[r]++},get:r=>n[r]};let o=e.codes;return{add:(r,s)=>{o[s]!==-1&&n[r]++},get:r=>n[r]}}function Ke(e,t){let n=new Array(t),o=e.codes;return{sets:n,add:(r,s)=>{let i=o[s];if(i===-1)return;let a=n[r];a===void 0&&(a=n[r]=new Set),a.add(i)}}}function Vt(e,t){let n=new Float64Array(t),o=e.values;return{add:(r,s)=>{let i=o[s];i===i&&(n[r]+=i)},get:r=>n[r]}}function Bt(e,t){let n=new Float64Array(t),o=new Float64Array(t),r=e.values;return{add:(s,i)=>{let a=r[i];a===a&&(n[s]+=a,o[s]++)},get:s=>o[s]>0?n[s]/o[s]:null}}function Qe(e){return(t,n)=>{let o=new Float64Array(n).fill(NaN),r=t.values;return{add:(s,i)=>{let a=r[i];a===a&&!(o[s]*e>=a*e)&&(o[s]=a)},get:s=>Number.isNaN(o[s])?null:o[s]}}}function Wt(e,t){let n=new Array(t),o=e.values;return{add:(r,s)=>{let i=o[s];i===i&&(n[r]??=[]).push(i)},get:r=>{let s=n[r];if(!s||s.length===0)return null;let i=Float64Array.from(s).sort(),a=i.length>>1;return i.length%2?i[a]:(i[a-1]+i[a])/2}}}function te(e,t){return(n,o)=>{let r=new Float64Array(o),s=new Float64Array(o),i=new Float64Array(o),a=n.values;return{add:(u,l)=>{let c=a[l];if(c===c){let f=++r[u],d=c-s[u];s[u]+=d/f,i[u]+=d*(c-s[u])}},get:u=>{let l=r[u],c=e?l-1:l;if(c<=0)return null;let f=Math.max(0,i[u])/c;return t?Math.sqrt(f):f}}}}function Xe(e){return(t,n,o)=>{let r=new Int32Array(n).fill(-1),s=t.codes;return{add:(i,a)=>{let u=s[a];if(u===-1)return;let l=r[i];(l===-1||(e?o[u]>o[l]:o[u]<o[l]))&&(r[i]=u)},get:i=>{let a=r[i];if(a===-1)return null;let u=t.dict[a];return typeof u=="boolean"?String(u):u}}}}var ne=e=>e==="date"?"date":"number",et=e=>e==="date"?"date":e==="number"?"number":"text",Se=Object.freeze({count:{numeric:!1,additive:!0,resultType:D,create:Pt},countUnique:{numeric:!1,keepsValues:!0,resultType:D,create:(e,t)=>{let n=Ke(e,t);return{add:n.add,get:o=>n.sets[o]?n.sets[o].size:0}}},listUnique:{numeric:!1,keepsValues:!0,resultType:xt,create:(e,t,n,o)=>{let r=Ke(e,t);return{add:r.add,get:s=>{let i=r.sets[s];return i?[...i].sort((a,u)=>n[a]-n[u]).map(o).join(", "):null}}}},sum:{numeric:!0,additive:!0,resultType:D,create:Vt},average:{numeric:!0,dates:!0,resultType:ne,create:Bt},median:{numeric:!0,dates:!0,keepsValues:!0,resultType:ne,create:Wt},min:{numeric:!0,dates:!0,resultType:ne,create:Qe(-1)},max:{numeric:!0,dates:!0,resultType:ne,create:Qe(1)},stdev:{numeric:!0,resultType:D,create:te(!0,!0)},stdevp:{numeric:!0,resultType:D,create:te(!1,!0)},var:{numeric:!0,resultType:D,create:te(!0,!1)},varp:{numeric:!0,resultType:D,create:te(!1,!1)},first:{numeric:!1,resultType:et,create:Xe(!1)},last:{numeric:!1,resultType:et,create:Xe(!0)}}),Ne=Object.freeze(Object.keys(Se));function W(e){return typeof e=="string"&&Object.hasOwn(Se,e)?Se[e]:null}function ve(e,t){let n=W(e);return n?n.numeric?t==="number"||t==="boolean"||t==="null"||t==="date"&&n.dates===!0:!0:!1}function yr(e){return Ne.filter(t=>ve(t,e))}var ke=ee(128);function N(e,t={}){return ke.getOrSet(`n|${e}|${JSON.stringify(t)}`,()=>new Intl.NumberFormat(e,t))}function A(e,t){return ke.getOrSet(`d|${e}|${JSON.stringify(t)}`,()=>new Intl.DateTimeFormat(e,t))}function tt(e){return ke.getOrSet(`c|${e}`,()=>new Intl.Collator(e,{numeric:!0,sensitivity:"base"}))}var qt={dateStyle:"medium",timeZone:"UTC"},Jt={dateStyle:"medium",timeStyle:"short",timeZone:"UTC"},re=Object.freeze({blank:"(blank)",total:"{label} Total",grandTotal:"Grand Total",values:"Values",valueName:"{agg} of {field}",countRows:"Count",true:"true",false:"false",aggregators:Object.freeze({count:"Count",countUnique:"Count Unique",listUnique:"List Unique",sum:"Sum",average:"Average",median:"Median",min:"Min",max:"Max",stdev:"StdDev",stdevp:"StdDevP",var:"Var",varp:"VarP",first:"First",last:"Last"}),showAsName:"{showAs} of {value}",showAs:Object.freeze({percentOfGrandTotal:"% of grand total",percentOfRowTotal:"% of row total",percentOfColumnTotal:"% of column total",percentOfParentRow:"% of parent row",percentOfParentColumn:"% of parent column",differenceFromPrevious:"Difference from previous",percentDifferenceFromPrevious:"% difference from previous",runningTotal:"Running total",percentRunningTotal:"% running total",rankAscending:"Rank (smallest first)",rankDescending:"Rank (largest first)"})}),Ae=Object.freeze({en:Object.freeze({...re,true:"Yes",false:"No",aggregators:{count:"Count",countUnique:"Distinct count",listUnique:"List of distinct values",sum:"Sum",average:"Average",median:"Median",min:"Minimum",max:"Maximum",stdev:"Standard deviation (sample)",stdevp:"Standard deviation (population)",var:"Variance (sample)",varp:"Variance (population)",first:"First value",last:"Last value"}}),de:Object.freeze({...re,blank:"(Leer)",total:"{label} gesamt",grandTotal:"Gesamtergebnis",values:"Werte",valueName:"{agg} von {field}",countRows:"Anzahl",true:"Ja",false:"Nein",aggregators:{count:"Anzahl",countUnique:"Anzahl verschiedener Werte",listUnique:"Liste verschiedener Werte",sum:"Summe",average:"Durchschnitt",median:"Median",min:"Minimum",max:"Maximum",stdev:"Standardabweichung (Stichprobe)",stdevp:"Standardabweichung (Grundgesamtheit)",var:"Varianz (Stichprobe)",varp:"Varianz (Grundgesamtheit)",first:"Erster Wert",last:"Letzter Wert"},showAsName:"{showAs} von {value}",showAs:{percentOfGrandTotal:"% des Gesamtergebnisses",percentOfRowTotal:"% der Zeilensumme",percentOfColumnTotal:"% der Spaltensumme",percentOfParentRow:"% der \xFCbergeordneten Zeile",percentOfParentColumn:"% der \xFCbergeordneten Spalte",differenceFromPrevious:"Differenz zum vorherigen",percentDifferenceFromPrevious:"% Differenz zum vorherigen",runningTotal:"Laufende Summe",percentRunningTotal:"% laufende Summe",rankAscending:"Rang (kleinster zuerst)",rankDescending:"Rang (gr\xF6\xDFter zuerst)"}})}),Tr=Object.freeze({en:Object.freeze({name:"{field} by {unit}",units:Object.freeze({year:"year",yearQuarter:"quarter",yearMonth:"month",yearWeek:"week",day:"day",quarter:"quarter of year",month:"month of year",week:"week of year",weekday:"weekday",hour:"hour of day",bin:"ranges"}),bins:"{field} (by {size})"}),de:Object.freeze({name:"{field} nach {unit}",units:Object.freeze({year:"Jahr",yearQuarter:"Quartal",yearMonth:"Monat",yearWeek:"Woche",day:"Tag",quarter:"Quartal im Jahr",month:"Monat im Jahr",week:"Woche im Jahr",weekday:"Wochentag",hour:"Stunde am Tag",bin:"Bereichen"}),bins:"{field} (je {size})"})});for(let e of Object.values(Ae))Object.freeze(e.aggregators),Object.freeze(e.showAs);function Sr(e){return String(e??"").split("-")[0].toLowerCase()==="de"?Ae.de:Ae.en}function Nr(e,t){let n=t&&t.fields;if(!n||typeof n!="object"||typeof e!="string")return e;let o=i=>typeof n[i]=="string"&&n[i].trim()!=="";if(Object.hasOwn(n,e)&&o(e))return n[e];let r=e.toLowerCase(),s=Object.keys(n).find(i=>i.toLowerCase()===r&&o(i));return s===void 0?e:n[s]}function nt(e,t,n,o=re){if(t==null)return o.blank??re.blank;if(e.labeler)return e.labeler(t,n);switch(e.type){case"date":return A(n,e.dateOnly?qt:Jt).format(new Date(Number(t)));case"boolean":return t?o.true??"true":o.false??"false";default:return String(t)}}function Gt(e,t,n){let o=e==null,r=t==null;if(o||r)return o===r?0:o?1:-1;let s=typeof e=="number"||typeof e=="boolean",i=typeof t=="number"||typeof t=="boolean";return s&&i?Number(e)-Number(t):s!==i?s?-1:1:tt(n).compare(String(e),String(t))}function vr(e,t,n){return n.getOrSet(`ranks:${e.id}:${t}`,()=>{let o=e.dict.map((s,i)=>i);o.sort((s,i)=>Gt(e.dict[s],e.dict[i],t)||s-i);let r=new Int32Array(o.length);return o.forEach((s,i)=>{r[s]=i}),r})}function kr(e,t){return String(e).replace(/\{(\w+)\}/g,(n,o)=>Object.hasOwn(t,o)?String(t[o]):n)}var L=Object.freeze({case:"insensitive",whitespace:"collapse"}),Ce=Object.freeze(["insensitive","sensitive"]),$e=Object.freeze(["collapse","exact"]),Ht=/\s+/g;function C(e,t=L){let n=typeof e=="string"?e:String(e);return(t.whitespace??L.whitespace)==="collapse"&&(n=n.replace(Ht," ").trim()),(t.case??L.case)==="insensitive"?n.toLowerCase():n}var Ee=1e-9;function rt(e){let t=new Date(e),n=(t.getUTCDay()+6)%7,o=Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()-n+3),r=new Date(o).getUTCFullYear(),s=new Date(Date.UTC(r,0,4)),i=s.getTime()+(3-(s.getUTCDay()+6)%7)*h,a=1+Math.round((o-i)/(7*h));return{year:r,week:a}}var Yt=(e,t)=>A(t,{month:"short",timeZone:"UTC"}).format(new Date(Date.UTC(2e3,e-1,1))),Zt=(e,t)=>{let n=Math.floor(e/100),o=e-n*100,r=new Date(0);return r.setUTCFullYear(n,o-1,1),A(t,{month:"short",year:"numeric",timeZone:"UTC",era:n<=0?"short":void 0}).format(r)},Kt=(e,t)=>A(t,{weekday:"short",timeZone:"UTC"}).format(new Date(Date.UTC(2024,0,e))),Ir=Object.freeze(["year","yearQuarter","yearMonth","yearWeek","day"]),jr=Object.freeze(["quarter","month","week","weekday","hour"]),v=Object.freeze({year:{source:"date",type:"number",value:e=>e.getUTCFullYear(),label:e=>String(e)},quarter:{source:"date",type:"number",value:e=>Math.floor(e.getUTCMonth()/3)+1,label:e=>`Q${e}`},month:{source:"date",type:"number",value:e=>e.getUTCMonth()+1,label:Yt},week:{source:"date",type:"number",value:e=>rt(e.getTime()).week,label:e=>`W${X(e)}`},day:{source:"date",type:"date",value:e=>Math.floor(e.getTime()/h)*h},hour:{source:"date",type:"number",value:e=>e.getUTCHours(),label:e=>`${X(e)}:00`},weekday:{source:"date",type:"number",value:e=>(e.getUTCDay()+6)%7+1,label:Kt},yearQuarter:{source:"date",type:"number",value:e=>e.getUTCFullYear()*10+Math.floor(e.getUTCMonth()/3)+1,label:e=>`Q${e-Math.floor(e/10)*10} ${Math.floor(e/10)}`},yearMonth:{source:"date",type:"number",value:e=>e.getUTCFullYear()*100+e.getUTCMonth()+1,label:Zt},yearWeek:{source:"date",type:"number",value:e=>{let t=rt(e.getTime());return t.year*100+t.week},label:e=>`${Math.floor(e/100)}-W${X(e%100)}`},bin:{source:"number",type:"number"}}),Mr=Object.freeze(Object.keys(v)),Qt=Object.freeze([{unit:"day",maxDays:62},{unit:"yearMonth",maxDays:2*366},{unit:"yearQuarter",maxDays:6*366},{unit:"year",maxDays:1/0}]);function Xt(e,t){let n=Math.abs(t-e)/h;return!(n>=1)||!Number.isFinite(n)?null:Qt.find(o=>n<=o.maxDays).unit}function zr(e,t){let n=e.column(t);if(!n||n.type!=="date"||n.derived)return null;let o=1/0,r=-1/0;for(let s of n.dict)typeof s=="number"&&(o=Math.min(o,s),r=Math.max(r,s));return Xt(o,r)}function en(e,t){let n=Math.min(20,Math.max(Oe(e),Oe(t))),o=10**n,r=Math.round(e*o),s=Math.round(t*o),i=n<=15&&r>0&&Number.isSafeInteger(r)&&Number.isSafeInteger(s),a=u=>{let l=s+u*r;return i&&Number.isSafeInteger(l)?l/o:t+u*e};return{decimals:n,lowerOf(u){let l=Math.floor((u-t)/e);return Number.isSafeInteger(l)?(u>=a(l+1)?l++:u<a(l)&&l--,a(l)):NaN},upperOf(u){return a(Math.round((u-t)/e)+1)}}}function Rr(e,t){let n=e.column(t.field),o=Object.hasOwn(v,t.by)?v[t.by]:null;if(!n||!n.values||!o||n.type!==o.source)return null;let r=`derived:${n.key}:${t.by}:${t.size??""}:${t.origin??""}`,s=e.cache.getOrSet(r,()=>nn(n,t,o,r));return s.name===t.name?s:{...s,name:t.name,key:t.name.toLowerCase()}}var ot=9999;function tn(e,t){return e.decimals>0?!1:t.every(n=>Math.abs(n)<=ot&&Math.abs(e.upperOf(n))<=ot)}function nn(e,t,n,o){let r=e.values.length,s=new Int32Array(r),i=new Float64Array(r),a=[],u=new Map,l=t.by==="bin"?en(t.size,t.origin??0):null,c=new Date(0);for(let d=0;d<r;d++){let g=e.values[d],y=NaN;if(Number.isNaN(g)||(l?y=l.lowerOf(g):(c.setTime(g),y=n.value(c))),Number.isNaN(y)){s[d]=-1,i[d]=NaN;continue}let b=u.get(y);b===void 0&&(b=a.length,a.push(y),u.set(y,b)),s[d]=b,i[d]=y}let f={name:t.name,key:t.name.toLowerCase(),id:o,type:n.type,codes:s,dict:a,values:i,derived:!0};if(n.type==="date")f.dateOnly=!0;else if(l){let d=!tn(l,a);f.labeler=(g,y)=>{let b=N(y,{maximumFractionDigits:l.decimals,signDisplay:"negative",useGrouping:d});return`${b.format(g)} \u2013 ${b.format(l.upperOf(g))}`}}else f.labeler=n.label;return f}var q=Object.freeze(["hour","day","week","month","quarter","year"]),J=Object.freeze(["last","next","this","before"]),U=500,G=Object.freeze(["today","latest","first"]),F=1,Ie=36e5,$=(e,t,n)=>new Date(0).setUTCFullYear(e,t,n);function oe(e,t,n=F,o=0){if(e==="hour"){let u=(Math.floor(t/Ie)+o)*Ie;return j(u)?u:NaN}let r=new Date(t),[s,i,a]=[r.getUTCFullYear(),r.getUTCMonth(),r.getUTCDate()];switch(e){case"day":return $(s,i,a+o);case"week":return $(s,i,a-((r.getUTCDay()||7)-n+7)%7+7*o);case"month":return $(s,i+o,1);case"quarter":return $(s,i-i%3+3*o,1);default:return $(s+o,0,1)}}function st(e,t,n){if(e==="hour"||e==="day"||e==="week"){let l=t+n*(e==="hour"?Ie:e==="day"?h:7*h);return j(l)?l:NaN}let o=n*(e==="month"?1:e==="quarter"?3:12),r=new Date(t),s=t-$(r.getUTCFullYear(),r.getUTCMonth(),r.getUTCDate()),i=$(r.getUTCFullYear(),r.getUTCMonth()+o,1);if(Number.isNaN(i))return NaN;let a=new Date(i),u=new Date($(a.getUTCFullYear(),a.getUTCMonth()+1,0)).getUTCDate();return $(a.getUTCFullYear(),a.getUTCMonth(),Math.min(r.getUTCDate(),u))+s}function je(e,t,n=F){let{unit:o,calendar:r,includeCurrent:s}=e,i=e.count??1,a=(f,d)=>({from:Number.isNaN(f)?-1/0:f,to:Number.isNaN(d)?1/0:d}),u=f=>oe(o,t,n,f);if(e.direction==="this")return a(u(0),u(1));let l=s?0:1;if(e.direction==="next")return r?a(u(l),u(i+l)):a(t,st(o,t,i)+1);let c=r?a(u(1-i-l),u(1-l)):a(st(o,t,-i),t+1);return e.direction==="before"?{from:-1/0,to:c.from}:c}var it=Object.freeze(["equals","contains","beginsWith","endsWith"]),rn=Object.freeze(["value","label"]),ue=Object.freeze(["=",">",">=","<","<=","between"]),at=Object.freeze(["year","quarter","month","day","hour"]),ut=Object.freeze(["first","all"]),Me=Object.freeze(["exclude","include","only"]),lt=Object.freeze({notEquals:"equals",notContains:"contains","!=":"=",notBetween:"between"}),z=(e,t)=>typeof e=="string"&&t.includes(e)?e:null;function on(e,t,n,o){let r=C(t,o);switch(e){case"equals":return r===n;case"contains":return r.includes(n);case"beginsWith":return r.startsWith(n);case"endsWith":return r.endsWith(n);default:return!1}}function ft(e,t,n,o){if(typeof t!="number"||Number.isNaN(t))return!1;let r=Math.min(n,o??n),s=Math.max(n,o??n);switch(e){case"=":return t===n;case">":return t>n;case">=":return t>=n;case"<":return t<n;case"<=":return t<=n;case"between":return t>=r&&t<=s;default:return!1}}var sn=e=>Math.floor(e/h)*h,le=e=>new Date(e).toISOString().slice(0,-14);function Gr(e,t,n){n=R(n,"relativeDateRange");let o=n.direction??"last",r=n.anchor??"today",s=n.weekStart??F,i=o==="this"||Number.isInteger(t)&&t>=1&&t<=U;if(!q.includes(e)||!J.includes(o)||!i||!Number.isInteger(s)||s<1||s>7||dt(r)===null||r==="latest"&&n.latest===void 0||r==="first"&&n.first===void 0)return null;let a=He(n.timeZone),u=r==="latest"?ze(n.latest,a):r==="first"?ze(n.first,a):r==="today"?ze(n.now,a):Re(r),l={direction:o,unit:e,count:t,calendar:n.calendar??!0,includeCurrent:n.includeCurrent??!0},{from:c,to:f}=je(l,u,s);if(!Number.isFinite(f)||o!=="before"&&!Number.isFinite(c))return null;let d=y=>!Number.isFinite(y)||y%h===0;if(d(c)&&d(f))return{from:Number.isFinite(c)?le(c):null,to:le(f-h)};let g=y=>new Date(y).toISOString().slice(0,16);return{from:Number.isFinite(c)?g(c):null,to:g(f-1)}}var Re=e=>{let t=typeof e=="string"&&!G.includes(e)?M("date",e):void 0;return typeof t=="number"?t:NaN};function dt(e){if(typeof e=="string"&&G.includes(e))return e;let t=Re(e);return j(t)?t%h===0?le(t):new Date(t).toISOString().slice(0,19):null}function ze(e,t){let n=Ze(t),o=Te(e===void 0?Date.now():e,r=>j(r)?n(r):NaN);if(!j(o))throw new We("INVALID_OPTION","now must be a Date, epoch milliseconds or an ISO date string");return o}function M(e,t){if(t===null)return null;switch(e){case"number":{let n=typeof t=="number"?t:typeof t=="string"&&t.trim()!==""?Number(t):NaN;return Number.isFinite(n)?n:void 0}case"date":{let n=typeof t=="number"?t:typeof t=="string"?Te(t,o=>o):NaN;return Number.isFinite(n)?n:void 0}case"boolean":return typeof t=="boolean"?t:t==="true"?!0:t==="false"?!1:void 0;default:return typeof t=="string"&&t.length<=B||typeof t=="number"||typeof t=="boolean"?String(t):void 0}}function De(e,t,n,o){let r=M(e.type,t);return r===void 0&&(typeof t=="string"&&t.length>B?o.issue(n,`an item longer than ${B} characters`,"itemTooLong",{max:B}):o.issue(n,`item ${JSON.stringify(t)} does not fit the ${e.type} field`,"itemType",{value:p(t),type:e.type})),r}function ce(e,t,n,o){let r=m(e,"not");r!==void 0&&typeof r!="boolean"&&o.issue(`${n}.not`,"not must be true or false","filterNot",{value:p(r)});let s=m(e,"blanks");return s===void 0?o.strict&&o.warn(n,'says nothing about blank items; "exclude" is used',"blanksUnspecified"):Me.includes(s)||o.issue(`${n}.blanks`,`unknown blanks ${JSON.stringify(s)}`,"filterBlanks",{value:p(s),...o.suggest(s,Me)}),Object.assign(t,{not:r===!0,blanks:Me.includes(s)?s:"exclude"})}function an(e,t,n,o,r){let s=m(e,"items");if(!Array.isArray(s))return r.issue(o,"needs a list of items","filterNoItems");s.length>r.limits.items&&r.issue(`${o}.items`,`more than ${r.limits.items} items`,"tooManyItems",{max:r.limits.items}),t.items=[];for(let i of s.slice(0,r.limits.items)){let a=i===null?null:De(n,i,`${o}.items`,r);a===null?r.issue(`${o}.items`,'null is no item: blank items are kept with blanks: "include" or "only"',"filterBlanks",{value:"null"}):a!==void 0&&(r.itemHint(n,a,`${o}.items`),t.items.push(a))}return ce(e,t,o,r),r.strict&&t.items.length===0&&!t.not&&t.blanks==="exclude"&&r.warn(o,"keeps nothing: no items, no blanks","filterEmpty"),t}function un(e,t,n,o,r){let s=m(e,"not");return s!==void 0&&typeof s!="boolean"&&r.issue(`${o}.not`,"not must be true or false","filterNot",{value:p(s)}),Object.assign(t,{not:s===!0})}function ln(e,t,n,o,r){let s=m(e,"op"),i=z(s,it),a=m(e,"value");if(!i){let d=fe(s),g=d?{suggestion:d}:r.suggest(s,it);return r.issue(o,`unknown text operator ${JSON.stringify(s)}${gt(d)}`,"filterTextOp",{value:p(s),...g})}if(typeof a!="string"||a.length>r.limits.textValue)return r.issue(o,`needs a text value of at most ${r.limits.textValue} characters`,"filterText",{max:r.limits.textValue});let u=m(e,"on"),l=u===void 0?"value":z(u,rn);if(!l)return r.issue(`${o}.on`,`unknown on ${JSON.stringify(u)}`,"unknownSetting",{value:p(u)});if(l==="value"&&n.type!=="string")return r.issue(o,`compares text: on a ${n.type} field it compares the label (on: "label")`,"filterFieldType",{field:n.name,type:n.type,value:"text",allowed:"string",suggestion:"label"});let c=m(e,"match"),f={...L};if(c!==void 0){let d=m(c,"case"),g=m(c,"whitespace");(!k(c)||d!==void 0&&!Ce.includes(d)||g!==void 0&&!$e.includes(g))&&r.issue(`${o}.match`,'match is { case: "insensitive" | "sensitive", whitespace: "collapse" | "exact" }',"filterMatch",{value:p(d??g??c)}),r.keys(c,cn,`${o}.match`),f.case=Ce.includes(d)?d:L.case,f.whitespace=$e.includes(g)?g:L.whitespace}return Object.assign(t,{op:i,value:a,on:l,match:f}),ce(e,t,o,r)}var cn=Object.freeze(["case","whitespace"]),mt=(e,t)=>e.derived?t.derived.find(n=>n.name===e.name)?.by:void 0,fn=e=>typeof e.value=="string";function dn(e,t,n,o,r,s){let i=mt(n,s),a=n.type==="date"||i!==void 0&&v[i].source==="date"&&typeof m(e,"value")=="string"&&M("number",m(e,"value"))===void 0,u=m(e,"precision"),l=u===void 0?"day":z(u,at);if(!a&&u!==void 0)r.issue(`${o}.precision`,"a precision compares dates only","filterPrecision",{value:p(u)});else if(!l)return r.issue(o,`unknown precision ${JSON.stringify(u)}`,"filterPrecision",{value:p(u),...r.suggest(u,at)});let c=T=>{if(!a){let we=T===void 0?void 0:M("number",T);return typeof we=="number"?we:null}let V=T===void 0||n.type!=="date"&&typeof T!="string"?void 0:M("date",T);return typeof V=="number"&&j(V)?mn(V,l):null},f=m(e,"op"),d=z(f,ue);if(fe(f))return pt(f,o,"filterCompareValue",r,{type:n.type});let g=c(m(e,"value")),y=d==="between",b=y?c(m(e,"value2")):null;if(!d||g===null||y&&b===null){let T=d||f===void 0?{}:{value:p(f),...r.suggest(f,ue)};return r.issue(o,`needs an operator and ${y?"two values":"a value"} of the ${n.type} field`,"filterCompareValue",{type:n.type,...T})}return Object.assign(t,{op:d,value:g},y?{value2:b}:{},a?{precision:l}:{}),ce(e,t,o,r)}function mn(e,t){let n=oe(t,e);return t==="hour"?new Date(n).toISOString().slice(0,-8):le(Number.isNaN(n)?sn(e):n)}function fe(e){return typeof e=="string"&&Object.hasOwn(lt,e)?lt[e]:null}var gt=e=>e?`; write "${e}" with not: true`:"";function pt(e,t,n,o,r={}){let s=fe(e);return o.issue(t,`unknown operator ${JSON.stringify(e)}${gt(s)}`,n,{...r,value:p(e),suggestion:s})}function gn(e,t,n,o,r){let s=m(e,"direction"),i=s===void 0?"last":z(s,J);if(!i)return r.issue(o,`unknown direction ${JSON.stringify(s)}`,"filterRelativeDirection",{value:p(s),...r.suggest(s,J)});let a=z(m(e,"unit"),q);if(!a)return r.issue(o,`unknown unit ${JSON.stringify(m(e,"unit"))}`,"filterRelativeUnit",{value:p(m(e,"unit")),...r.suggest(m(e,"unit"),q)});let u=m(e,"count"),l=I(u);if(i==="this"?u!==void 0:l===null||!Number.isInteger(l)||l<1||l>U){let g=i==="this"?'"this" is the current unit alone and has no count':`${u===void 0?"count is missing: a":"needs a"} whole count from 1 to ${U}`;return r.issue(o,g,"filterRelativeCount",{max:U,...u===void 0?{}:{value:p(u)}})}let c=g=>{let y=m(e,g);return y!==void 0&&typeof y!="boolean"&&r.issue(`${o}.${g}`,`${g} must be true or false`,"unknownSetting",{value:p(y)}),typeof y=="boolean"?y:!0},f=m(e,"anchor"),d=f===void 0?"today":dt(f);return d?(Object.assign(t,{direction:i,unit:a},i==="this"?{}:{count:l},{calendar:c("calendar"),includeCurrent:c("includeCurrent"),anchor:d}),ce(e,t,o,r)):r.issue(o,`unknown anchor ${JSON.stringify(f)}`,"filterRelativeAnchor",{value:p(f),...r.suggest(f,G)})}function yt(e,t,n,o){let r=m(e,"by"),s=r===void 0?n.defaultRef(o):n.valueRef(r,`${t}.by`);return s&&n.resultType(s)!=="number"?(n.issue(`${t}.by`,`${s.agg} gives no number to filter by`,"filterNotNumber",{agg:s.agg}),null):s}function pn(e,t,n,o,r,s){let i=yt(e,o,r,s);if(!i)return;let a=I(m(e,"count"));if(a===null||a<1||a>r.limits.topCount||!Number.isInteger(a))return r.issue(o,"needs a whole count of 1 or more","filterCount",{max:r.limits.topCount});let u=m(e,"bottom"),l=m(e,"ties"),c=l===void 0?"first":z(l,ut);return c||r.issue(`${o}.ties`,`unknown ties ${JSON.stringify(l)}`,"filterTies",{value:p(l),...r.suggest(l,ut)}),Object.assign(t,{by:i,count:a,bottom:typeof u=="boolean"?u:!1,ties:c??"first"})}function yn(e,t,n,o,r,s){let i=yt(e,o,r,s);if(!i)return;let a=m(e,"op");if(fe(a))return pt(a,o,"filterValue",r);let u=z(a,ue),l=I(m(e,"value"));if(!u||l===null){let f=u||a===void 0?{}:{value:p(a),...r.suggest(a,ue)};return r.issue(o,"needs an operator and a number","filterValue",f)}let c=m(e,"not");if(c!==void 0&&typeof c!="boolean"&&r.issue(`${o}.not`,"not must be true or false","filterNot",{value:p(c)}),Object.assign(t,{by:i,op:u,value:l,not:c===!0}),u==="between"){let f=I(m(e,"value2"));if(f===null)return r.issue(o,`${u} needs value2`,"filterValue2",{value:u});t.value2=f}return t}function se(e){return(t,n,o,r,s)=>{let i=e(t,n,o,r,s),a=new Uint8Array(i.length);if(a[0]=n.blanks==="exclude"?0:1,n.blanks!=="only"){let u=n.not?1:0;for(let l=1;l<i.length;l++)a[l]=i[l]^u}return a}}function bn(e,t){let n=new Map(e.dict.map((r,s)=>[r,s])),o=new Uint8Array(e.dict.length+1);for(let r of t.items){let s=n.get(r);s!==void 0&&(o[s+1]=1)}return o}function hn(e,t){let n=new Uint8Array(e.dict.length+1).fill(t.not?1:0);return n[0]=t.not?0:1,n}function wn(e,t,n){let o=C(t.value,t.match),r=new Uint8Array(e.dict.length+1);return e.dict.forEach((s,i)=>{r[i+1]=on(t.op,t.on==="label"?nt(e,s,n):String(s),o,t.match)?1:0}),r}function On(e,t){let n=e.type==="date",o=t.precision??"day",r=u=>n?M("date",u):u,[s,i]=[r(t.value),t.value2===void 0?void 0:r(t.value2)],a=new Uint8Array(e.dict.length+1);return e.dict.forEach((u,l)=>{a[l+1]=ft(t.op,n&&typeof u=="number"?oe(o,u):u,s,i)?1:0}),a}function Tn(e){let t=-1/0;for(let n of e.dict)typeof n=="number"&&n>t&&(t=n);return Number.isFinite(t)?t:null}function Sn(e){let t=1/0;for(let n of e.dict)typeof n=="number"&&n<t&&(t=n);return Number.isFinite(t)?t:null}function Nn(e,t,n,o,r){let s=t.anchor==="today"?o:t.anchor==="latest"?Tn(e)??o:t.anchor==="first"?Sn(e)??o:Re(t.anchor),{from:i,to:a}=je(t,s,r);return Uint8Array.from([0,...e.dict],(u,l)=>l>0&&typeof u=="number"&&u>=i&&u<a?1:0)}function vn(e,t){return Uint8Array.from(t,n=>typeof n=="number"&&!Number.isNaN(n)&&ft(e.op,n,e.value,e.value2)!==e.not?1:0)}function kn(e,t,n){let o=new Uint8Array(n.length),r=new Map;n.forEach((s,i)=>{let a=s.slice(0,-1).join(",");r.has(a)||r.set(a,[]),r.get(a).push(i)});for(let s of r.values()){let i=s.filter(u=>typeof t[u]=="number").sort((u,l)=>(e.bottom?t[u]-t[l]:t[l]-t[u])||u-l),a=e.ties==="all"&&i.length>e.count?t[i[e.count-1]]:void 0;i.forEach((u,l)=>{(l<e.count||t[u]===a)&&(o[u]=1)})}return o}var w=(...e)=>Object.freeze(["field","type",...e]),ae=(e,t)=>typeof e.source=="function"?e.source(t):!!e.source,H=Object.freeze(["string","number","date","boolean"]),ie=Object.freeze(["not","blanks"]),O=Object.freeze({in:{stage:"items",fields:H,keys:w("items",...ie),required:w("items"),normalize:an,allowed:se(bn)},blank:{stage:"items",fields:H,keys:w("not"),required:w(),normalize:un,allowed:hn},text:{stage:"items",fields:H,keys:w("op","value","on","match",...ie),required:w("op","value"),normalize:ln,allowed:se(wn)},compare:{stage:"items",fields:Object.freeze(["number","date"]),keys:w("op","value","value2","precision",...ie),required:w("op","value"),normalize:dn,allowed:se(On),source:fn},relative:{stage:"items",fields:Object.freeze(["date","dateGrouping"]),keys:w("direction","unit","count","calendar","includeCurrent","anchor",...ie),required:w("unit"),normalize:gn,allowed:se(Nn),source:!0},top:{stage:"values",fields:H,keys:w("by","count","bottom","ties"),required:w("count"),normalize:pn,keep:kn},value:{stage:"values",fields:H,keys:w("by","op","value","value2","not"),required:w("op","value"),normalize:yn,keep:vn}}),Hr=Object.freeze(Object.keys(O)),Le=Object.freeze({include:"in",exclude:"in",label:"text"});function bt(e,t){let n=mt(e,t);return n!==void 0&&v[n].source==="date"?[e.type,"dateGrouping"]:[e.type]}var ht=e=>e==="string"?"text":e==="number"||e==="date"?"compare":"in",An=Object.freeze(["blank","text","compare","relative"]);function Yr(e,t,n,o,r,s){let i=e.filters.filter(d=>d.field.toLowerCase()===t.toLowerCase()&&An.includes(d.type));if(!i.length)return null;let a=i.some(d=>d.type==="relative")?s():0,u=d=>O[d.type].allowed(ae(O[d.type],d)?o:n,d,r,a,e.formatting.weekStart),l=i.filter(d=>!ae(O[d.type],d)).map(u),c=i.filter(d=>ae(O[d.type],d)).map(u),f=new Uint8Array(n.dict.length+1);for(let d=0;d<n.codes.length;d++){let g=n.codes[d]+1;!f[g]&&l.every(y=>y[g]===1)&&c.every(y=>y[o.codes[d]+1]===1)&&(f[g]=1)}return f}function ct(e,t){let n=0,o=new Int32Array(e.length);for(let r=0;r<e.length;r++)t(e[r],r)&&(o[n++]=e[r]);return o.slice(0,n)}function Zr(e,t,n){let{view:o,columnOf:r,locale:s,today:i}=e,a=c=>o.derived.find(f=>f.name.toLowerCase()===c.toLowerCase())?.field??c;o.filters.forEach((c,f)=>{let d=O[c.type],g=r(ae(d,c)?a(c.field):c.field);if(d.stage!=="items"||!g)return;let y=d.allowed(g,c,s,i,o.formatting.weekStart),b=g.codes;t=ct(t,T=>y[b[T]+1]===1),n&&(n[f]=t.length)});let u=c=>{let f=o.rows.indexOf(c);if(f!==-1)return{fields:o.rows.slice(0,f+1),order:f};let d=o.cols.indexOf(c);return d!==-1?{fields:o.cols.slice(0,d+1),order:100+d}:{fields:[c],order:200}},l=o.filters.map((c,f)=>({f:c,i:f,...u(c.field)})).filter(({f:c})=>O[c.type].stage==="values").sort((c,f)=>c.order-f.order||c.i-f.i);for(let{f:c,i:f,fields:d}of l){let g=d.map(r);if(g.includes(null))continue;let{groupOf:y,paths:b}=e.groupBy(g,t),T=e.aggregateGroups(c.by,t,y,b.length),V=O[c.type].keep(c,T,b);t=ct(t,(we,Ut)=>V[y[Ut]]===1),n&&(n[f]=t.length)}return t}var to=Object.freeze(["number","integer","currency","percent","percent100","compact","bytes","duration","date","datetime","time","text"]),Cn=20,St={ms:.001,s:1,min:60,h:3600,d:86400},$n=/^(number|integer|currency|percent|percent100|compact|bytes|duration|date|datetime|time|text)(?::([A-Za-z0-9]{1,10}))?$/,Fe=new Set(["number","percent","percent100"]),Nt={date:{dateStyle:"medium",timeZone:"UTC"},datetime:{dateStyle:"medium",timeStyle:"short",timeZone:"UTC"},time:{timeStyle:"short",timeZone:"UTC"}},En={signDisplay:"negative"},de=null;function In(e){return de===null&&(de=typeof Intl.supportedValuesOf=="function"?new Set(Intl.supportedValuesOf("currency")):!1),de?de.has(e.toUpperCase()):/^[a-z]{3}$/i.test(e)}function ge(e){if(typeof e!="string")return null;let t=$n.exec(e.trim().toLowerCase());if(!t)return null;let[,n,o]=t;return o!==void 0&&(n==="currency"&&!In(o)||n==="duration"&&!Object.hasOwn(St,o)||Fe.has(n)&&!(/^\d{1,2}$/.test(o)&&Number(o)<=Cn)||!["currency","duration",...Fe].includes(n))?null:{name:n,arg:o,decimals:Fe.has(n)&&o!==void 0?Number(o):void 0}}function no(e,t){let n=ge(e)||{name:"number",arg:void 0,decimals:void 0};switch(n.name){case"integer":return 0;case"number":return n.decimals??2;case"percent":case"percent100":return n.decimals??1;case"currency":return N(t,{style:"currency",currency:(n.arg||"EUR").toUpperCase()}).resolvedOptions().maximumFractionDigits??2;default:return null}}function vt(e){return ge(e)!==null}function Y(e){return e==null||e===""?NaN:typeof e=="number"?e:Number(e)}var _e=(e,t)=>e===void 0?{maximumFractionDigits:t}:{minimumFractionDigits:e,maximumFractionDigits:e};function jn(e,t){if(!Number.isFinite(e))return"";let n=e<=-.05?"-":"",o=Math.abs(e);if(o<60)return`${n}${N(t,{maximumFractionDigits:1}).format(o)} s`;let r=[["d",86400],["h",3600],["min",60],["s",1]],s=r.findIndex(([,f])=>o>=f),[i,a]=r[s],u=Math.floor(o/a),l=[`${u} ${i}`],c=r[s+1];if(c){let f=Math.floor((o-u*a)/c[1]);f>0&&l.push(`${f} ${c[0]}`)}return n+l.join(" ")}function Mn(e,t){if(!Number.isFinite(e))return"";let n=["B","KB","MB","GB","TB","PB"],o=Math.abs(e),r=0;for(;o>=1024&&r<n.length-1;)o/=1024,r++;let s=N(t,{maximumFractionDigits:r===0?0:1}).format(o);return`${e<0&&/[1-9]/.test(s)?"-":""}${s} ${n[r]}`}function Ue(e){return e==null?"":String(e)}function zn(e,t){let n=ge(e)||{name:"number",arg:void 0,decimals:void 0},o=r=>{let s=N(t,{...En,...r});return i=>{let a=Y(i);return Number.isNaN(a)?Ue(i):s.format(a)}};switch(n.name){case"text":return Ue;case"integer":return o({maximumFractionDigits:0});case"currency":return o({style:"currency",currency:(n.arg||"EUR").toUpperCase()});case"percent":return o({style:"percent",..._e(n.decimals,1)});case"percent100":{let r=o({style:"percent",..._e(n.decimals,1)});return s=>r(Y(s)/100)}case"compact":return o({notation:"compact",maximumFractionDigits:1});case"bytes":return r=>Mn(Y(r),t);case"duration":{let r=St[n.arg||"s"];return s=>jn(Y(s)*r,t)}case"date":case"datetime":case"time":{let r=A(t,Nt[n.name]);return s=>{let i=Y(s);return Number.isFinite(i)?r.format(new Date(i)):Ue(s)}}default:return o(_e(n.decimals,2))}}function ro(e,t){return t=R(t,"formatter"),zn(e,Ge(null,t.locale))}var wt=ee(64),me=e=>e.replace(/[^ :/-]+/g,t=>`"${t.replace(/"/g,"")}"`),pe=e=>e>0?"."+"0".repeat(e):"";function xe(e,t){if(!Number.isFinite(e)||Math.abs(e)>=1e21)return 0;let n=Math.abs(e).toFixed(t).replace(/0+$/,""),o=n.indexOf(".");return o===-1?0:n.length-o-1}function Ot(e,t,n=!0){let o="",r="",s=!1;for(let i of e)i.type==="integer"||i.type==="group"||i.type==="decimal"||i.type==="fraction"||i.type==="minusSign"||i.type==="percentSign"&&n?(o+=me(r),r="",i.type==="minusSign"?o+="-":i.type==="percentSign"?o+="%":s||(o+=t,s=!0)):r+=i.value;return o+me(r)}function kt(e,t,n,o=!0){let r=Ot(e.formatToParts(t),n,o),s=Ot(e.formatToParts(-t),n,o);return s===`-${r}`?r:`${r};${s}`}function Rn(e,t){let n=N(t,{style:"currency",currency:e});return kt(n,1234.5,`#,##0${pe(n.resolvedOptions().maximumFractionDigits)}`)}function Tt(e,t,n){return kt(N(t,{style:"percent"}),.5,`#,##0${pe(e)}`,n)}function Dn(e,t){if(!Number.isFinite(e)||e===0)return"#,##0";let n=N(t,{notation:"compact",maximumFractionDigits:1}).formatToParts(Math.abs(e)),o=n.filter(l=>l.type==="integer").map(l=>l.value).join(""),r=n.filter(l=>l.type==="fraction").map(l=>l.value).join(""),s=+`${o}.${r||0}`,i=s>0?Math.round(Math.log10(Math.abs(e)/s)):0;if(i<0||i%3!==0)return"General";let a=n.findIndex(l=>l.type==="integer"),u=n.slice(a).filter(l=>l.type==="compact"||l.type==="literal").map(l=>l.value).join("");return`#,##0${pe(r.length)}${",".repeat(i/3)}${me(u)}`}function Ln(e,t){return A(t,Nt[e]).formatToParts(new Date(Date.UTC(2026,0,5,3,4))).map(o=>{switch(o.type){case"year":return o.value.length===2?"yy":"yyyy";case"month":return/^\d+$/.test(o.value)?o.value.length===2?"mm":"m":"mmm";case"day":return o.value.length===2?"dd":"d";case"hour":return o.value.length===2?"hh":"h";case"minute":return"mm";case"second":return"ss";case"dayPeriod":return"AM/PM";case"weekday":return"ddd";default:return me(o.value)}}).join("")}function oo(e,t,n){let o=ge(e)||{name:"number",arg:void 0,decimals:void 0};switch(o.name){case"integer":return"#,##0";case"number":return`#,##0${pe(o.decimals??xe(t,2))}`;case"percent":return Tt(o.decimals??xe(t*100,1),n,!0);case"percent100":return Tt(o.decimals??xe(t,1),n,!1);case"currency":return wt.getOrSet(`${e}|${n}`,()=>Rn((o.arg||"EUR").toUpperCase(),n));case"compact":return Dn(t,n);case"date":case"datetime":case"time":return wt.getOrSet(`${o.name}|${n}`,()=>Ln(o.name,n));case"text":return"@";default:return"General"}}var ye=Object.freeze({candidates:1e3,length:64,distance:3});function Fn(e,t,n){if(Math.abs(e.length-t.length)>n)return n+1;let o=[],r=Array.from({length:t.length+1},(i,a)=>a),s=0;for(let i=1;i<=e.length;i++){let a=[i],u=i;for(let l=1;l<=t.length;l++){let c=Math.min(r[l]+1,a[l-1]+1,r[l-1]+(e[i-1]===t[l-1]?0:1));i>1&&l>1&&e[i-1]===t[l-2]&&e[i-2]===t[l-1]&&(c=Math.min(c,o[l-2]+1)),a.push(c),u=Math.min(u,c)}if(u>n&&s>=n)return n+1;s=u,o=r,r=a}return r[t.length]}function At(e,t){if(typeof e!="string"||e.length>ye.length)return null;let n=C(e);if(n==="")return null;let o=Math.min(ye.distance,Math.max(1,Math.floor(n.length/3))),r=null,s=o+1,i=0;for(let a of t){if(i++>=ye.candidates)break;if(typeof a!="string"||a.length>ye.length)continue;let u=Fn(n,C(a),Math.min(o,s-1));if(u<s&&(r=a,s=u,u===0))break}return r}var _=(e,t)=>e===null||t===null||t===0?null:e/t;function Pe(e){let t=e.axis!=="cols",n=t?e.rowNode:e.colNode;return{node:n,at:r=>t?e.raw(r,e.colNode):e.raw(e.rowNode,r),siblings:n.parent?n.parent.children:[n]}}function Ct(e){return(t,n)=>{let{node:o,at:r,siblings:s}=Pe(n);if(!o.parent||o.index===0||t===null)return null;let i=r(s[o.index-1])??0;return e?_(t-i,i):t-i}}function $t(e){return(t,n)=>{let{node:o,at:r,siblings:s}=Pe(n);if(!o.parent)return e?t===null?null:1:t;let i=0;for(let a=0;a<=o.index;a++)i+=r(s[a])??0;return e?_(i,r(o.parent)):i}}function Et(e){return(t,n)=>{let{node:o,at:r,siblings:s}=Pe(n);if(!o.parent||t===null)return null;let i=1;for(let a of s){let u=r(a);u!==null&&(e?u>t:u<t)&&i++}return i}}var be=Object.freeze({percentOfGrandTotal:{format:"percent",compute:(e,t)=>_(e,t.raw(t.rowRoot,t.colRoot))},percentOfRowTotal:{format:"percent",compute:(e,t)=>_(e,t.raw(t.rowNode,t.colRoot))},percentOfColumnTotal:{format:"percent",compute:(e,t)=>_(e,t.raw(t.rowRoot,t.colNode))},percentOfParentRow:{format:"percent",compute:(e,t)=>_(e,t.raw(t.rowNode.parent??t.rowNode,t.colNode))},percentOfParentColumn:{format:"percent",compute:(e,t)=>_(e,t.raw(t.rowNode,t.colNode.parent??t.colNode))},differenceFromPrevious:{format:"number",alongAxis:!0,compute:Ct(!1)},percentDifferenceFromPrevious:{format:"percent",alongAxis:!0,compute:Ct(!0)},runningTotal:{format:"number",alongAxis:!0,additive:!0,compute:$t(!1)},percentRunningTotal:{format:"percent",alongAxis:!0,additive:!0,compute:$t(!0)},rankAscending:{format:"integer",alongAxis:!0,compute:Et(!1)},rankDescending:{format:"integer",alongAxis:!0,compute:Et(!0)}}),uo=Object.freeze(Object.keys(be));var _n="(blank)";function Un(e,t,n){let o=t.toLowerCase(),r=n.toLowerCase();switch(e){case"equals":return o===r;case"notEquals":return o!==r;case"contains":return o.includes(r);case"notContains":return!o.includes(r);case"beginsWith":return o.startsWith(r);case"endsWith":return o.endsWith(r);default:return!1}}var It=Object.freeze({notEquals:"equals",notContains:"contains","!=":"=",notBetween:"between"}),Ve=e=>typeof e=="string"&&Object.hasOwn(It,e)?{op:It[e],not:!0}:{},Be=(e,t)=>m(e,"blanks")===void 0?{blanks:t}:{};function xn(e){if(!k(e))return e;let t=e,n=m(t,"type"),o=m(t,"op");switch(n){case"include":case"exclude":{let r=m(t,"items"),s=n==="exclude"?{not:!0}:{};if(!Array.isArray(r))return{...t,type:"in",...s};let i=r.includes(null),a=n==="include"?i:!i;return{...t,type:"in",items:r.filter(u=>u!==null),...s,...Be(t,a?"include":"exclude")}}case"label":{let r=m(t,"value"),s=typeof r=="string"?Be(t,Un(o,_n,r)?"include":"exclude"):{};return{...t,type:"text",on:"label",match:{case:"insensitive",whitespace:"exact"},...Ve(o),...s}}case"compare":case"relative":return{...t,...Ve(o),...Be(t,"exclude")};case"value":return{...t,...Ve(o)};default:return t}}function jt(e){let t=m(e,"filters");return Array.isArray(t)?{...e,filters:t.map(xn)}:e}var Dt=2,Lt=Pn({notView:"error schema",notJson:"error",tooLarge:"error",badVersion:"error schema",newerVersion:"error schema",noMigration:"error",unknownKey:"error schema",notList:"error schema",tooMany:"error schema",tooManyItems:"error schema",itemType:"error",itemTooLong:"error schema",itemCase:"warning",unknownField:"error",placedTwice:"error",groupingNoName:"error schema",groupingNameTaken:"error",groupingNoSource:"error",groupingUnknown:"error schema",binsNeedNumber:"error",groupingNeedsDate:"error",binSize:"error schema",notValueRef:"error schema",unknownAggregator:"error schema",aggregatorNeedsField:"error schema",aggregatorType:"error",unknownFormat:"error",badLabel:"error schema",unknownShowAs:"error schema",showAsNotAdditive:"error",showAsNotNumber:"error",unknownConditional:"error schema",conditionalNotNumber:"error",colorScaleColors:"error schema",dataBarColor:"error schema",unknownFilterType:"error schema",filterFieldType:"error",filterNoItems:"error schema",filterTextOp:"error schema",filterText:"error schema",filterMatch:"error schema",filterNot:"error schema",filterBlanks:"error schema",blanksUnspecified:"warning",filterEmpty:"warning",filterNotNumber:"error",filterCount:"error schema",filterTies:"error schema",filterPrecision:"error",filterValue:"error schema",filterValue2:"error schema",filterCompareValue:"error",filterRelativeDirection:"error schema",filterRelativeUnit:"error schema",filterRelativeCount:"error schema",filterRelativeAnchor:"error schema",sortNoItems:"error schema",sortedTwice:"error",badTotals:"error schema",collapsedPath:"error",unknownSetting:"error schema",badTitle:"error schema",unknownLocale:"error",unknownTimeZone:"error",timeZoneMismatch:"error",tooManyIssues:"warning"}),vo=Object.freeze(Object.keys(Lt));function Pn(e){let t={};for(let[n,o]of Object.entries(e)){let[r,s]=o.split(" ");t[n]=Object.freeze({severity:r==="warning"?"warning":"error",schema:s==="schema"})}return Object.freeze(t)}function E(e,t,n,o,r=Lt[n].severity){return o?{path:e,message:t,code:n,severity:r,params:o}:{path:e,message:t,code:n,severity:r}}var Vn=Object.freeze(["auto","bar","line","area","pie","donut","heatmap"]),ko=Object.freeze(["pie","donut"]),Bn=Object.freeze(["table","chart"]),Ao=Object.freeze(["colorScale","dataBar"]),Wn=Object.freeze(["auto","off","value","percent","both"]),qn=Object.freeze(["outside","inside"]),Jn=Object.freeze(["auto","bottom","right","off"]),Gn=Object.freeze(["auto","all","nth"]),Hn=Object.freeze(["auto","on","off"]),Mt=/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/;function Z(){return{version:Dt,rows:[],cols:[],values:[],filters:[],derived:[],sort:[],totals:{grandTotalRow:!0,grandTotalColumn:!0,rowSubtotals:!0,colSubtotals:!1},collapsed:{rows:[],cols:[]},display:"table",chart:{type:"auto",stacked:!1,horizontal:!1,valueLabels:"auto",legend:"auto",title:null,smooth:!1,axisLabels:"auto",groupLabels:"auto",labelPosition:"outside"},formatting:{locale:null,timeZone:null,weekStart:F}}}var Yn=Object.freeze({1:jt});function Zn(e){return Kn(e,Yn,Dt)}function Kn(e,t,n){let o=[];if(!k(e))return{view:null,issues:[E("","not a view object","notView")]};let r=m(e,"version")??1;if(!Number.isInteger(r)||r<1)return{view:null,issues:[E("version",`unknown version ${JSON.stringify(r)}`,"badVersion",{value:p(r)})]};if(r>n)return{view:null,issues:[E("version",`version ${r} is newer than this pivotkit-core reads (${n}); update pivotkit-core`,"newerVersion",{value:r,max:n})]};let s=e;for(let i=r;i<n;i++){let a=t[i];if(typeof a!="function")return{view:null,issues:[E("version",`no migration from version ${i}`,"noMigration",{value:i})]};s=a(s)}return{view:{...s,version:n},issues:o}}function K(e,t,n){return typeof e=="string"&&t.includes(e)?e:n}function he(e,t){return typeof e=="boolean"?e:t}function Ft(e){return(Array.isArray(e)?e:e&&Array.isArray(e.fields)?e.fields:e&&e.schema?e.schema.fields:[]).filter(n=>n&&typeof n.name=="string").map(n=>({name:n.name,type:typeof n.type=="string"?n.type:"string"}))}function P(e,t,n,o,r){let s=t.split(".").reduce((i,a)=>m(i,a),e);if(s!==void 0){if(!Array.isArray(s)){o.issue(t,"not a list","notList");return}s.slice(0,n).forEach((i,a)=>r(i,`${t}[${a}]`,a)),s.length>n&&o.issue(t,`more than ${n} entries`,"tooMany",{max:n})}}var S=Object.freeze({view:Object.freeze(Object.keys(Z())),derived:Object.freeze(["name","field","by","size","origin"]),value:Object.freeze(["field","agg","format","label","showAs","conditional"]),valueRef:Object.freeze(["field","agg"]),showAs:Object.freeze(["type","axis"]),conditional:Object.freeze({colorScale:Object.freeze(["type","colors"]),dataBar:Object.freeze(["type","color"])}),sort:Object.freeze(["field","by","order","items","value"]),totals:Object.freeze(Object.keys(Z().totals)),collapsed:Object.freeze(["rows","cols"]),chart:Object.freeze(Object.keys(Z().chart)),formatting:Object.freeze(Object.keys(Z().formatting))});function Qn(e,t,n){P(e,"derived",n.limits.derived,n,(o,r)=>{n.keys(o,S.derived,r);let s=n.text(m(o,"name")),i=n.fields.get(String(m(o,"field")??"").toLowerCase()),a=m(o,"by"),u=typeof a=="string"&&Object.hasOwn(v,a)?v[a]:null;if(!s)return n.issue(r,"needs a name","groupingNoName");if(n.fields.has(s.toLowerCase()))return n.issue(r,`name "${s}" is already a field`,"groupingNameTaken",{field:s});if(!i||i.derived)return n.issue(r,"unknown source field","groupingNoSource",{field:p(m(o,"field"))});if(!u)return n.issue(r,"unknown grouping","groupingUnknown",{value:p(a)});if(i.type!==u.source)return u.source==="number"?n.issue(r,"bins need a number field","binsNeedNumber",{field:i.name}):n.issue(r,"date grouping needs a date field","groupingNeedsDate",{field:i.name});let l={name:s,field:i.name,by:a};if(a==="bin"){let c=I(m(o,"size"));if(c===null||c<Ee)return n.issue(r,`bins need a size of at least ${Ee}`,"binSize");l.size=c,l.origin=I(m(o,"origin"))??0}t.derived.push(l),n.fields.set(s.toLowerCase(),{name:s,type:u.type,derived:!0})})}function Xn(e,t,n){let o=new Set;for(let r of["rows","cols"])P(e,r,n.limits.axisFields,n,(s,i)=>{let a=n.resolve(s);if(!a)return n.unknownField(i,s);if(o.has(a.name))return n.issue(i,`"${a.name}" is already placed`,"placedTwice",{field:a.name});o.add(a.name),t[r].push(a.name)})}function er(e,t,n){let o=m(e,"type");if((o==="colorScale"||o==="dataBar")&&n.keys(e,S.conditional[o],t),o==="colorScale"){let r=m(e,"colors"),s=Array.isArray(r)?r.filter(i=>typeof i=="string"&&Mt.test(i)).slice(0,3):[];return Array.isArray(r)&&r.length>0&&(s.length!==r.length||s.length<2)&&n.issue(`${t}.colors`,"two or three colours as #rgb or #rrggbb","colorScaleColors"),{type:o,colors:s.length>=2?s:[]}}if(o==="dataBar"){let r=m(e,"color"),s=typeof r=="string"&&Mt.test(r);return r!=null&&!s&&n.issue(`${t}.color`,"a colour as #rgb or #rrggbb","dataBarColor"),{type:o,color:s?r:null}}return n.issue(t,`unknown conditional format ${JSON.stringify(o)}`,"unknownConditional",{value:p(o)}),null}function tr(e,t,n,o){let r=typeof e=="string"?{type:e}:e;o.keys(r,S.showAs,n);let s=m(r,"type"),i=typeof s=="string"&&Object.hasOwn(be,s)?be[s]:null;return i?i.additive&&!W(t.agg).additive?(o.issue(n,`${s} needs an aggregator that adds up (sum or count), not ${t.agg}`,"showAsNotAdditive",{value:s,agg:t.agg}),null):{type:s,axis:K(m(r,"axis"),["rows","cols"],"rows")}:(o.issue(n,`unknown show-as ${JSON.stringify(s)}`,"unknownShowAs",{value:p(s)}),null)}function nr(e,t,n){P(e,"values",n.limits.values,n,(o,r)=>{let s=n.valueRef(o,r,S.value);if(!s)return;let i=n.resultType(s)==="number",a={...s,format:null,label:null,showAs:null,conditional:null},u=m(o,"format");u!=null&&(vt(u)?a.format=u.trim().toLowerCase():n.issue(`${r}.format`,`unknown format ${JSON.stringify(u)}`,"unknownFormat",{value:p(u)}));let l=m(o,"label");l!=null&&(a.label=n.text(l),a.label===null&&n.issue(`${r}.label`,`not a text up to ${n.limits.name} characters`,"badLabel",{max:n.limits.name}));let c=m(o,"showAs");c!=null&&(i?a.showAs=tr(c,s,`${r}.showAs`,n):n.issue(`${r}.showAs`,`${s.agg} has no number to show as ${JSON.stringify(m(c,"type")??c)}`,"showAsNotNumber",{agg:s.agg}));let f=m(o,"conditional");f!=null&&(i?a.conditional=er(f,`${r}.conditional`,n):n.issue(`${r}.conditional`,"conditional formatting needs a number value","conditionalNotNumber",{agg:s.agg})),t.values.push(a)})}function rr(e,t,n){P(e,"filters",n.limits.filters,n,(o,r)=>{let s=n.resolve(m(o,"field")),i=m(o,"type"),a=typeof i=="string"&&Object.hasOwn(O,i)?O[i]:null;if(!s)return n.unknownField(r,m(o,"field"));if(!a){let l=typeof i=="string"&&Object.hasOwn(Le,i)?{suggestion:Le[i]}:x(i,Object.keys(O));return n.issue(r,i===void 0?`a filter needs a type: one of ${Object.keys(O).join(", ")}`:`unknown filter type ${JSON.stringify(i)}`,"unknownFilterType",{value:p(i),...l})}if(n.keys(o,a.keys,r),!bt(s,t).some(l=>a.fields.includes(l)))return n.issue(r,`a ${i} filter does not work on the ${s.type} field "${s.name}"`,"filterFieldType",{field:s.name,type:s.type,value:i,allowed:a.fields.join(", "),suggestion:ht(s.type)});let u=a.normalize(o,{field:s.name,type:i},s,r,n,t);u&&t.filters.push(u)})}var or=Object.freeze(["label","value","custom"]);function sr(e,t,n,o){if(!Array.isArray(e))return o.issue(n,"a custom order needs a list of items","sortNoItems"),null;e.length>o.limits.items&&o.issue(n,`more than ${o.limits.items} items`,"tooManyItems",{max:o.limits.items});let r=new Set,s=[];for(let i of e.slice(0,o.limits.items)){let a=De(t,i,n,o);a!==void 0&&!r.has(a)&&(r.add(a),s.push(a))}return s}function ir(e,t,n){let o=new Set;P(e,"sort",n.limits.sort,n,(r,s)=>{n.keys(r,S.sort,s);let i=n.resolve(m(r,"field"));if(!i||o.has(i.name))return i?n.issue(s,`"${i.name}" is sorted twice`,"sortedTwice",{field:i.name}):n.unknownField(s,m(r,"field"));let a=K(m(r,"by"),or,"label"),u={field:i.name,by:a,order:K(m(r,"order"),["asc","desc"],"asc")};if(a==="custom"){let l=sr(m(r,"items"),i,`${s}.items`,n);if(!l)return;u.items=l}if(a==="value"){let l=m(r,"value")===void 0?n.defaultRef(t):n.valueRef(m(r,"value"),`${s}.value`);if(!l)return;u.value=l}o.add(i.name),t.sort.push(u)})}function ar(e,t,n){let o=m(e,"totals");if(o!==void 0){if(!k(o))return n.issue("totals","not an object","badTotals");n.keys(o,S.totals,"totals");for(let r of Object.keys(t.totals))t.totals[r]=he(m(o,r),t.totals[r])}}function ur(e,t,n){n.keys(m(e,"collapsed"),S.collapsed,"collapsed");for(let o of["rows","cols"]){let r=t[o].map(i=>n.fields.get(i.toLowerCase()).type),s=new Set;P(e,`collapsed.${o}`,n.limits.collapsed,n,i=>{if(!Array.isArray(i)||i.length===0||i.length>=r.length)return n.issue(`collapsed.${o}`,`path ${JSON.stringify(i)} does not fit the ${o}`,"collapsedPath");let a=i.map((l,c)=>M(r[c],l));if(a.includes(void 0))return n.issue(`collapsed.${o}`,`path ${JSON.stringify(i)} does not fit the field types`,"collapsedPath");let u=JSON.stringify(a);s.has(u)||(s.add(u),t.collapsed[o].push(a))})}}function lr(e,t,n){let o=m(e,"display");t.display=K(o,Bn,t.display),o!==void 0&&t.display!==o&&n.issue("display",`unknown display ${JSON.stringify(o)}`,"unknownSetting",{value:p(o)});let r=m(e,"chart");if(n.keys(r,S.chart,"chart"),r!==void 0){let s=(a,u,l)=>{let c=m(r,a),f=K(c,u,l);return c!==void 0&&f!==c&&n.issue(`chart.${a}`,`unknown ${a} ${JSON.stringify(c)}`,"unknownSetting",{value:p(c)}),f},i=m(r,"title");t.chart={type:s("type",Vn,t.chart.type),stacked:he(m(r,"stacked"),!1),horizontal:he(m(r,"horizontal"),!1),valueLabels:s("valueLabels",Wn,"auto"),legend:s("legend",Jn,"auto"),title:i==null?null:n.text(i),smooth:he(m(r,"smooth"),!1),axisLabels:s("axisLabels",Gn,"auto"),groupLabels:s("groupLabels",Hn,"auto"),labelPosition:s("labelPosition",qn,"outside")},i!=null&&t.chart.title===null&&!(typeof i=="string"&&i.trim()==="")&&n.issue("chart.title",`not a text up to ${n.limits.name} characters`,"badTitle",{max:n.limits.name})}}function cr(e,t,n){let o=m(e,"formatting");n.keys(o,S.formatting,"formatting");let r=m(o,"locale");r!=null&&(t.formatting.locale=Je(r),t.formatting.locale===null&&n.issue("formatting.locale",`unknown locale ${JSON.stringify(r)}`,"unknownLocale",{value:p(r)}));let s=m(o,"weekStart");s!=null&&(Number.isInteger(s)&&s>=1&&s<=7?t.formatting.weekStart=s:n.issue("formatting.weekStart","the first day of a week is 1 (Monday) to 7 (Sunday)","unknownSetting",{value:p(s)}));let i=m(o,"timeZone");i!=null&&(t.formatting.timeZone=Ye(i),t.formatting.timeZone===null&&n.issue("formatting.timeZone",`unknown time zone ${JSON.stringify(i)}`,"unknownTimeZone",{value:p(i)}))}var fr=[Qn,Xn,nr,rr,ir,ar,ur,lr,cr],zt=Object.freeze({columns:"cols",column:"cols",measures:"values",measure:"values",aggregations:"values",filter:"filters",sorting:"sort"});function x(e,t){let n=At(e,t);return n===null?{}:{suggestion:n}}var Rt=Object.freeze({avg:"average",mean:"average",cnt:"count",total:"sum",distinct:"countUnique",stddev:"stdev"});function dr(e){let t=typeof e=="string"&&Object.hasOwn(Rt,e.trim().toLowerCase())?Rt[e.trim().toLowerCase()]:null;return t?{suggestion:t}:x(e,Ne)}var mr=1e5;function gr(e,t,n,o){let r=new Map(Ft(e).map(u=>[u.name.toLowerCase(),u])),s=new Map,i=u=>{if(!s.has(u)){let l=e,c=l&&!Array.isArray(l)&&typeof l.column=="function"?l.column(u):void 0;s.set(u,c&&c.type==="string"&&c.dict.length<=mr?{exact:new Set(c.dict),byFold:new Map(c.dict.map(f=>[C(f),f]))}:null)}return s.get(u)},a={limits:t,fields:r,strict:o,issue:(u,l,c,f)=>{n(E(u,l,c,f))},warn:(u,l,c,f)=>{n(E(u,l,c,f,"warning"))},suggest:x,unknownField:(u,l)=>a.issue(u,`unknown field ${JSON.stringify(l)}`,"unknownField",{field:p(l),...x(l,[...r.values()].map(c=>c.name))}),keys:(u,l,c)=>{if(k(u))for(let f of Object.keys(u))l.includes(f)||a.warn(`${c}.${f.slice(0,100)}`,"unknown key","unknownKey",{value:p(f),...x(f,l)})},itemHint:(u,l,c)=>{if(typeof l!="string")return;let f=i(u.name),d=f&&!f.exact.has(l)?f.byFold.get(C(l)):void 0;d!==void 0&&a.warn(c,`item ${JSON.stringify(l)} is no item of "${u.name}"; did you mean ${JSON.stringify(d)}?`,"itemCase",{field:u.name,value:p(l),suggestion:d})},text:u=>{if(typeof u!="string")return null;let l=u.trim();return l===""||l.length>t.name?null:l},resolve:u=>typeof u=="string"&&u.length<=t.name?r.get(u.trim().toLowerCase()):void 0,resultType:u=>W(u.agg).resultType(u.field?r.get(u.field.toLowerCase()).type:"number"),defaultRef:u=>u.values.length?{field:u.values[0].field,agg:u.values[0].agg}:{field:null,agg:"count"},valueRef:(u,l,c=S.valueRef)=>{if(!k(u))return a.issue(l,"not a value reference","notValueRef"),null;a.keys(u,c,l);let f=m(u,"agg"),d=m(u,"field"),g=d==null?null:a.resolve(d);return W(f)?g===void 0?(a.unknownField(l,d),null):g===null&&f!=="count"?(a.issue(l,`${f} needs a field`,"aggregatorNeedsField",{agg:f}),null):g&&!ve(f,g.type)?(a.issue(l,`${f} does not work on the ${g.type} field "${g.name}"`,"aggregatorType",{agg:f,type:g.type,field:g.name}),null):{field:g?g.name:null,agg:f}:(a.issue(l,`unknown aggregator ${JSON.stringify(f)}`,"unknownAggregator",{value:p(f),...dr(f)}),null)}};return a}function Co(e,t,n){return n=R(n,"normalize"),_t(e,t,n,!1)}function _t(e,t,n,o){let r=qe(n),s=Z(),i=(d,g,y,b)=>({view:s,issues:[E(d,g,y,b)]}),a;try{let d=typeof e=="string"?e:JSON.stringify(e);if(typeof d!="string")return i("","not a view object","notView");if(d.length>r.json)return i("",`larger than ${r.json} characters`,"tooLarge",{max:r.json});a=JSON.parse(d)}catch{return i("","not valid JSON","notJson")}let u=pr(),l=Zn(a);if(l.issues.forEach(u.add),l.view===null)return{view:s,issues:u.done()};let c=l.view;for(let d of Object.keys(c))Object.hasOwn(s,d)||u.add(E(d.slice(0,100),"unknown key","unknownKey",{value:p(d),...Object.hasOwn(zt,d.toLowerCase())?{suggestion:zt[d.toLowerCase()]}:x(d,S.view)}));let f=gr(t,r,u.add,o);for(let d of fr)d(c,s,f);return{view:s,issues:u.done()}}function pr(){let e=[],t=new Map,n=0;return{add:o=>{let r=t.get(o.code)??0;if(r>=Q.perCode||e.length>=Q.total){n++;return}t.set(o.code,r+1),e.push(o)},done:()=>n===0?e:[...e,E("",`${n} more issues left out`,"tooManyIssues",{value:String(n),max:Q.perCode})]}}function $o(e,t,n){n=R(n,"validate");let{issues:o}=_t(e,t,n,!0),r=o.filter(s=>s.severity!=="warning");return{valid:r.length===0,errors:r,warnings:o.filter(s=>s.severity==="warning")}}function Eo(e,t){return Ft(t).concat((e.derived||[]).map(n=>({name:n.name,type:v[n.by].type,derived:!0})))}export{Ne as a,W as b,yr as c,N as d,Ir as e,jr as f,Mr as g,zr as h,Rr as i,re as j,Ae as k,Tr as l,Sr as m,Nr as n,nt as o,vr as p,kr as q,L as r,Ce as s,$e as t,C as u,q as v,J as w,U as x,G as y,it as z,rn as A,ue as B,at as C,ut as D,Me as E,Gr as F,ze as G,O as H,Hr as I,Yr as J,Zr as K,At as L,to as M,ge as N,no as O,vt as P,zn as Q,ro as R,xe as S,oo as T,be as U,uo as V,Dt as W,E as X,Vn as Y,ko as Z,Bn as _,Ao as $,Wn as aa,qn as ba,Jn as ca,Gn as da,Hn as ea,Z as fa,Co as ga,$o as ha,Eo as ia};
|