pivotkit-element 0.5.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 +34 -2
- package/README.md +1 -0
- package/dist/chunks/{chunk-SB3L4HHW.js → chunk-7V4PAOK7.js} +1 -1
- 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-NXZQI5LC.js +6 -0
- package/dist/chunks/{chunk-XETFD6GR.js → chunk-OHKPNELV.js} +1 -1
- package/dist/chunks/chunk-R6GXMVRO.js +1 -0
- package/dist/chunks/chunk-YMLEL3SK.js +8 -0
- package/dist/chunks/export-O6XO33DV.js +1 -0
- package/dist/chunks/import-ui-SZTWEYHK.js +1 -0
- package/dist/chunks/{link-45LOEA7H.js → link-7K6I4SJS.js} +1 -1
- package/dist/chunks/menu-texts-de-CRJ5OIVT.js +1 -0
- package/dist/chunks/menus-F36OYGXV.js +2 -0
- package/dist/chunks/{report-run-BZBFOMPF-4M6ACMUF.js → report-run-BZBFOMPF-T26ENZEM.js} +7 -7
- package/dist/element.js +1 -1
- package/dist/import-worker.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +4 -4
- package/types/element.d.ts +23 -2
- package/types/jsx.d.ts +1 -1
- package/dist/chunks/chunk-4PHDW2LB.js +0 -1
- package/dist/chunks/chunk-65O4Z5GI.js +0 -1
- package/dist/chunks/chunk-CCL5TDLA.js +0 -6
- package/dist/chunks/chunk-PJA6QZ4Y.js +0 -2
- package/dist/chunks/chunk-QOKB5RDG.js +0 -6
- package/dist/chunks/chunk-YUY4D5MF.js +0 -8
- package/dist/chunks/export-YHS47KGK.js +0 -1
- package/dist/chunks/import-ui-7XVUBL2H.js +0 -1
- package/dist/chunks/menu-texts-de-74DWTJDI.js +0 -1
- package/dist/chunks/menus-XBN5D32E.js +0 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{c as
|
|
1
|
+
import{c as Ct,d as Nt,e as Rt}from"./chunk-CXSW4YRL.js";import"./chunk-UTPKLCNX.js";import{b as wt,c as xt,d as bt,e as Tt,f as Et,h as Ot}from"./chunk-HFUBAP3D.js";import{b as mt,f as X,k as gt,m as kt}from"./chunk-OHKPNELV.js";import{h as St}from"./chunk-CHSIHYYE.js";import{L as B,ga as ut,m as dt}from"./chunk-KO3EKDH5.js";import{a as _,h as ft}from"./chunk-XR4CMFGN.js";import{Zd as $t,ce as vt,ee as yt}from"./chunk-NSPPM3IJ.js";import{a as F}from"./chunk-5QXN3X2Q.js";import"./chunk-DCANE7XH.js";var Bt="default-src 'none'; style-src 'unsafe-inline'; img-src data:; base-uri 'none'; form-action 'none'",_t=`<!doctype html>
|
|
2
2
|
<html lang="{{lang}}" dir="{{dir}}">
|
|
3
3
|
<head>
|
|
4
|
-
<meta http-equiv="Content-Security-Policy" content="${
|
|
4
|
+
<meta http-equiv="Content-Security-Policy" content="${Bt}">
|
|
5
5
|
<meta charset="utf-8">
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
7
7
|
<meta name="generator" content="pivotkit">
|
|
@@ -21,9 +21,9 @@ import{c as yt,d as Ct,e as Nt}from"./chunk-QOKB5RDG.js";import"./chunk-UTPKLCNX
|
|
|
21
21
|
</main>
|
|
22
22
|
</body>
|
|
23
23
|
</html>
|
|
24
|
-
`;var I=/[\u061c\u200e\u200f\u202a-\u202e\u2066-\u2069]/g,tt=Object.freeze({en:Object.freeze({untitled:"Report",source:"Source",rows:"Rows",rowsCount:"{count} rows",generated:"Generated",filters:"Filters",noFilters:"None",chart:"Chart",tableCut:"The table shows the first {shown} of {count} rows. Export it as Excel or CSV for all of them.",chartCut:"The chart shows the first {shown} of {count} categories.",chartUnavailable:"The chart is left out: ECharts is not available."}),de:Object.freeze({untitled:"Bericht",source:"Quelle",rows:"Zeilen",rowsCount:"{count} Zeilen",generated:"Erstellt",filters:"Filter",noFilters:"Keine",chart:"Diagramm",tableCut:"Die Tabelle zeigt die ersten {shown} von {count} Zeilen. F\xFCr alle als Excel oder CSV exportieren.",chartCut:"Das Diagramm zeigt die ersten {shown} von {count} Kategorien.",chartUnavailable:"Das Diagramm fehlt: ECharts ist nicht verf\xFCgbar."})});function et(t,a={}){let e=String(t).split("-")[0].toLowerCase(),n=Object.hasOwn(tt,e)?tt[e]:tt.en,r={...n};for(let[m,h]of Object.entries(a??{}))Object.hasOwn(n,m)&&typeof h=="string"&&(r[m]=h);return r}var L=(t,a)=>t.replace(/\{(\w+)\}/g,(e,n)=>Object.hasOwn(a,n)?String(a[n]):e);var
|
|
25
|
-
`).length;function
|
|
26
|
-
`),cut:x<h?{rows:x,of:h}:null}}var N=Object.freeze({"--pk-surface":"#ffffff","--pk-surface-2":"#f6f7f9","--pk-surface-raised":"#ffffff","--pk-text":"#1a1d23","--pk-muted":"#5a6270","--pk-border":"#dde1e7","--pk-border-strong":"#c3c9d2","--pk-grid":"#edf0f3","--pk-total":"#eef1f5","--pk-total-strong":"#e9edf3","--pk-shadow":"0 1px 2px rgb(16 24 40 / 0.06), 0 4px 12px rgb(16 24 40 / 0.08)","--pk-heat-low":"#eaf1fb","--pk-heat-high":"#2a78d6","--pk-scale-low":"var(--pk-heat-low)","--pk-scale-high":"var(--pk-heat-high)","--pk-chart-1":"#2a78d6","--pk-chart-2":"#eb6834","--pk-chart-3":"#1baf7a","--pk-chart-4":"#eda100","--pk-chart-5":"#e87ba4","--pk-chart-6":"#008300","--pk-chart-7":"#6250d6","--pk-chart-8":"#e34948"}),at=Object.freeze({"--pk-surface":"#16181d","--pk-surface-2":"#1c1f25","--pk-surface-raised":"#22262d","--pk-text":"#e8eaef","--pk-muted":"#a3aab7","--pk-border":"#2f343e","--pk-border-strong":"#454c58","--pk-grid":"#23272e","--pk-total":"#21252d","--pk-total-strong":"#252a33","--pk-shadow":"0 1px 2px rgb(0 0 0 / 0.4), 0 4px 12px rgb(0 0 0 / 0.3)","--pk-heat-low":"#1d2735","--pk-heat-high":"#3987e5","--pk-scale-low":"var(--pk-heat-low)","--pk-scale-high":"var(--pk-heat-high)","--pk-chart-1":"#3987e5","--pk-chart-2":"#d95926","--pk-chart-3":"#199e70","--pk-chart-4":"#c98500","--pk-chart-5":"#d55181","--pk-chart-6":"#008300","--pk-chart-7":"#9085e9","--pk-chart-8":"#e66767"}),D=Object.freeze({"--pk-weight-normal":"400","--pk-weight-medium":"500","--pk-weight-strong":"600","--pk-weight-bold":"700"}),M=Object.freeze({"--pk-radius-card":"8px"}),U=Object.freeze({"--pk-font-size":"14px","--pk-small":"max(14px, 0.93em)","--pk-report-title-size":"calc(var(--pk-font-size) * 10 / 7)","--pk-print-size":"10pt","--pk-print-small":"7pt"}),ot="system-ui, -apple-system, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif",
|
|
24
|
+
`;var I=/[\u061c\u200e\u200f\u202a-\u202e\u2066-\u2069]/g,tt=Object.freeze({en:Object.freeze({untitled:"Report",source:"Source",rows:"Rows",rowsCount:"{count} rows",generated:"Generated",filters:"Filters",noFilters:"None",chart:"Chart",tableCut:"The table shows the first {shown} of {count} rows. Export it as Excel or CSV for all of them.",chartCut:"The chart shows the first {shown} of {count} categories.",chartUnavailable:"The chart is left out: ECharts is not available."}),de:Object.freeze({untitled:"Bericht",source:"Quelle",rows:"Zeilen",rowsCount:"{count} Zeilen",generated:"Erstellt",filters:"Filter",noFilters:"Keine",chart:"Diagramm",tableCut:"Die Tabelle zeigt die ersten {shown} von {count} Zeilen. F\xFCr alle als Excel oder CSV exportieren.",chartCut:"Das Diagramm zeigt die ersten {shown} von {count} Kategorien.",chartUnavailable:"Das Diagramm fehlt: ECharts ist nicht verf\xFCgbar."})});function et(t,a={}){let e=String(t).split("-")[0].toLowerCase(),n=Object.hasOwn(tt,e)?tt[e]:tt.en,r={...n};for(let[m,h]of Object.entries(a??{}))Object.hasOwn(n,m)&&typeof h=="string"&&(r[m]=h);return r}var L=(t,a)=>t.replace(/\{(\w+)\}/g,(e,n)=>Object.hasOwn(a,n)?String(a[n]):e);var H=262144,rt=Object.freeze({title:"text",description:"text",source:"text",generated:"text",rows:"text",filters:"text",summary:"text",lang:"text",dir:"text",style:"markup",chart:"markup",table:"markup",details:"markup"}),At=Object.freeze(["lang","dir","title","alt","class","aria-label","aria-description"]),jt=new Set(["script","style","xmp","iframe","noembed","noframes","noscript","plaintext","template"]),Xt=new Set(["title","textarea"]),P="\\t\\n\\f\\r ",Jt=new RegExp(`^<(/?)([a-zA-Z][^${P}/>]*)`),Qt=new RegExp(`[${P}/]`),Yt=new RegExp(`^[^${P}/>=]+`),It=new RegExp(`^[${P}]*`),te=new RegExp(`^[^${P}>]*`);function v(t){return String(t).replace(I,"").replace(/[&<>"']/g,a=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[a])}function z(t,a,e={}){return new _("INVALID_TEMPLATE",`template: ${a}`,{reason:t,...e})}var C=(t,a)=>t.slice(0,a).split(`
|
|
25
|
+
`).length;function Lt(t){if(typeof t!="string")throw new _("INVALID_ARGUMENT","parseTemplate(source): source must be a string");if(t.length>H)throw new _("LIMIT_EXCEEDED",`the template has ${t.length.toLocaleString("en-US")} characters, more than the limit of ${H.toLocaleString("en-US")}`,{limit:"template",value:t.length,max:H});if(t.includes("\0"))throw z("nul","the template holds a NUL character");let a=[],e=new Set,n="",r=0,m=t.length,h=(i,S,d,u)=>{let b=t.indexOf("{{",i);if(b!==-1&&b<S){let o=/^\{\{\s*([^}\s]*)/.exec(t.slice(b,b+64))?.[1]??"";throw z(d,`a placeholder ${o?`{{${o}}} `:""}is not allowed ${u} (line ${C(t,b)})`,{placeholder:o,line:C(t,b)})}},x=(i,S,d)=>{let u=t.indexOf("}}",i+2),b=t.indexOf("{{",i+2);if(u===-1||b!==-1&&b<u)throw z("unclosed",`"{{" without "}}" (line ${C(t,i)})`,{line:C(t,i)});let o=t.slice(i+2,u).trim();if(!Object.hasOwn(rt,o)){let p=/^[\w-]{1,64}$/.test(o)?B(o,Object.keys(rt)):null;throw z("unknownPlaceholder",`unknown placeholder {{${o.slice(0,64)}}} (line ${C(t,i)})${p?`; did you mean {{${p}}}?`:""}`,{placeholder:o.slice(0,64),line:C(t,i),...p?{suggestion:p}:{}})}let c=rt[o];if(c==="markup"&&!S)throw z("markupInText",`{{${o}}} is markup and is allowed in the document's text only, not ${d} (line ${C(t,i)})`,{placeholder:o,line:C(t,i)});return{slot:{name:o,kind:c},end:u+2}},k=()=>{n&&(a.push(n),n="")},T=i=>{k(),a.push(i),e.add(i.name)};for(;r<m;){if(t.startsWith("{{",r)){if(/<\/?$/.test(t.slice(Math.max(0,r-2),r)))throw z("tagName",`a placeholder is not allowed where a tag's name starts (line ${C(t,r)})`,{line:C(t,r)});let{slot:s,end:g}=x(r,!0,"here");T(s),r=g;continue}if(t[r]!=="<"){n+=t[r++];continue}if(t.startsWith("<!--",r)){let s=t.indexOf("-->",r+4),g=s===-1?m:s+3;h(r,g,"comment","in a comment"),n+=t.slice(r,g),r=g;continue}if(t[r+1]==="!"||t[r+1]==="?"){let s=t.indexOf(">",r),g=s===-1?m:s+1;h(r,g,"markup","in a doctype or declaration"),n+=t.slice(r,g),r=g;continue}let i=Jt.exec(t.slice(r,r+256));if(!i){n+=t[r++];continue}let S=i[1]==="/",d=i[2].toLowerCase();k(),h(r,r+i[0].length,"tagName","in a tag's name"),n+=i[0],r+=i[0].length;let u=[],b=[];for(;r<m&&t[r]!==">";){if(Qt.test(t[r])){n+=t[r++];continue}let s=Yt.exec(t.slice(r,r+1024))?.[0]??t[r];h(r,r+s.length,"attributeName","in an attribute's name"),n+=s,r+=s.length;let g=It.exec(t.slice(r))?.[0]??"";if(t[r+g.length]!=="="){u.push({name:s.toLowerCase(),value:null});continue}n+=g+"=",r+=g.length+1,g=It.exec(t.slice(r))?.[0]??"",n+=g,r+=g.length;let E=t[r];if(E==='"'||E==="'"){let l=t.indexOf(E,r+1),O=l===-1?m:l;b.push({attr:s.toLowerCase(),start:r+1,end:O,quote:E}),u.push({name:s.toLowerCase(),value:t.slice(r+1,O)}),r=Math.min(m,O+1),n+="\0"+(b.length-1)+"\0";continue}let $=te.exec(t.slice(r))?.[0]??"";h(r,r+$.length,"unquoted",`in an unquoted attribute value (${s})`),u.push({name:s.toLowerCase(),value:$}),n+=$,r+=$.length}let o=d==="meta"&&u.some(s=>s.name==="name"&&(s.value??"").trim().toLowerCase()==="description")&&!u.some(s=>s.name==="http-equiv"),c=n;n="";let p=/\u0000(\d+)\u0000/g,f=0,w;for(;w=p.exec(c);){n+=c.slice(f,w.index),f=w.index+w[0].length;let s=b[Number(w[1])];At.includes(s.attr)||o&&s.attr==="content"||h(s.start,s.end,"attribute",`in the attribute "${s.attr}" (only ${At.join(", ")} and the content of <meta name="description"> without http-equiv)`),n+=s.quote;let E=s.start;for(;E<s.end;)if(t.startsWith("{{",E)){let{slot:$,end:l}=x(E,!1,"in an attribute");T($),E=l}else n+=t[E++];n+=s.quote}if(n+=c.slice(f),r<m&&(n+=">",r++),!S&&(jt.has(d)||Xt.has(d))){let s=new RegExp(`</${d}[${P}/>]`,"i"),g=t.slice(r),E=s.exec(g),$=E&&d!=="plaintext"?r+E.index:m;if(d==="script"&&t.slice(r,$).includes("<!--")&&h(r,m,"scriptComment",'after a <script> that holds "<!--"'),jt.has(d))h(r,$,"rawText",`inside <${d}>`),n+=t.slice(r,$);else{let l=r;for(;l<$;)if(t.startsWith("{{",l)){let{slot:O,end:A}=x(l,!1,`inside <${d}>`);T(O),l=A}else n+=t[l++]}r=$}}return k(),{parts:a,names:[...e]}}function zt(t,a){return t.parts.map(e=>{if(typeof e=="string")return e;let n=Object.hasOwn(a,e.name)?a[e.name]??"":"";return e.kind==="text"?v(n):n}).join("")}var K=/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/,nt=t=>t===2?" pk-grand":t===1?" pk-sub":"";function Pt(t,{maxCells:a,caption:e,colorScale:n=[...F.colorScale],dataBar:r=F.dataBar}){let m=Math.max(1,t.columnCount),h=t.rows.length-t.headerRows,x=Math.max(0,Math.min(h,Math.floor(a/m)-t.headerRows)),k=[],T=0,i=o=>{if(!o)return"";if(o.bar!==void 0){let c=o.color&&K.test(o.color)?o.color:r,p=Math.round(Math.max(0,Math.min(1,o.bar))*1e3)/10,f=`pk-c${T++}`;return k.push(`.${f}{--pk-bar:${p}%;--pk-bar-color:${K.test(c)?c:F.dataBar}}`),` pk-has-bar ${f}`}if(o.scale!==void 0){let c=Math.max(0,Math.min(1,o.scale)),p=o.color&&K.test(o.color)?o.color:gt(n.filter(w=>K.test(w)).length>=2?n.filter(w=>K.test(w)):[...F.colorScale],c),f=`pk-c${T++}`;return k.push(`.${f}{--pk-cell-bg:${p}}`),` pk-has-scale ${f}`}return""},S=o=>`${(o.colSpan??1)>1?` colspan="${o.colSpan}"`:""}${(o.rowSpan??1)>1?` rowspan="${o.rowSpan}"`:""}`,d=[];for(let o=0;o<t.headerRows;o++){let c=t.rows[o].map(p=>p?`<th scope="col" class="pk-th${p.kind==="corner"?" pk-corner":""}${nt(p.total)}"${S(p)}>${v(p.text)}</th>`:"").join("");d.push(`<tr>${c}</tr>`)}let u=[];for(let o=t.headerRows;o<t.headerRows+x;o++){let c=t.rows[o].map(p=>{if(!p)return"";let f=Math.min(p.rowSpan??1,t.headerRows+x-o),w=S({...p,rowSpan:f});if(p.kind==="rowHeader"){let g=p.toggle?.collapsed?" pk-collapsed":"";return`<th scope="row" class="pk-th pk-row${nt(p.total)}${g}"${w}>${v(p.text)}</th>`}return`<td class="pk-td${p.valueType==="text"?" pk-text":" pk-num"}${nt(p.total)}${i(p.style)}"${w}>${v(p.text)}</td>`}).join("");u.push(`<tr>${c}</tr>`)}return{html:`<table class="pk-table">${e?`<caption>${v(e)}</caption>`:""}<thead>${d.join("")}</thead><tbody>${u.join("")}</tbody></table>`,css:k.join(`
|
|
26
|
+
`),cut:x<h?{rows:x,of:h}:null}}var N=Object.freeze({"--pk-surface":"#ffffff","--pk-surface-2":"#f6f7f9","--pk-surface-raised":"#ffffff","--pk-text":"#1a1d23","--pk-muted":"#5a6270","--pk-border":"#dde1e7","--pk-border-strong":"#c3c9d2","--pk-grid":"#edf0f3","--pk-total":"#eef1f5","--pk-total-strong":"#e9edf3","--pk-shadow":"0 1px 2px rgb(16 24 40 / 0.06), 0 4px 12px rgb(16 24 40 / 0.08)","--pk-heat-low":"#eaf1fb","--pk-heat-high":"#2a78d6","--pk-scale-low":"var(--pk-heat-low)","--pk-scale-high":"var(--pk-heat-high)","--pk-chart-1":"#2a78d6","--pk-chart-2":"#eb6834","--pk-chart-3":"#1baf7a","--pk-chart-4":"#eda100","--pk-chart-5":"#e87ba4","--pk-chart-6":"#008300","--pk-chart-7":"#6250d6","--pk-chart-8":"#e34948"}),at=Object.freeze({"--pk-surface":"#16181d","--pk-surface-2":"#1c1f25","--pk-surface-raised":"#22262d","--pk-text":"#e8eaef","--pk-muted":"#a3aab7","--pk-border":"#2f343e","--pk-border-strong":"#454c58","--pk-grid":"#23272e","--pk-total":"#21252d","--pk-total-strong":"#252a33","--pk-shadow":"0 1px 2px rgb(0 0 0 / 0.4), 0 4px 12px rgb(0 0 0 / 0.3)","--pk-heat-low":"#1d2735","--pk-heat-high":"#3987e5","--pk-scale-low":"var(--pk-heat-low)","--pk-scale-high":"var(--pk-heat-high)","--pk-chart-1":"#3987e5","--pk-chart-2":"#d95926","--pk-chart-3":"#199e70","--pk-chart-4":"#c98500","--pk-chart-5":"#d55181","--pk-chart-6":"#008300","--pk-chart-7":"#9085e9","--pk-chart-8":"#e66767"}),D=Object.freeze({"--pk-weight-normal":"400","--pk-weight-medium":"500","--pk-weight-strong":"600","--pk-weight-bold":"700"}),M=Object.freeze({"--pk-radius-card":"8px"}),U=Object.freeze({"--pk-font-size":"14px","--pk-small":"max(14px, 0.93em)","--pk-report-title-size":"calc(var(--pk-font-size) * 10 / 7)","--pk-print-size":"10pt","--pk-print-small":"7pt"}),ot="system-ui, -apple-system, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif",ee=/^(?![\s\S]*(\/\*|\*\/))[#\w\s.,%()/*+-]*$/,re=new Set(["rgb","rgba","hsl","hsla","hwb","lab","lch","oklab","oklch","color","color-mix","light-dark","calc","min","max","clamp","var"]);function ne(t){if(/[\n\r\f]|url\(/i.test(t))return!1;let a=t.replace(/"[^"\\<>{};]*"/g,"");return ee.test(a)&&[...a.matchAll(/([\w-]*)\(/g)].every(e=>re.has(e[1].toLowerCase()))}function Dt(t={}){let a={...N,...D,...M,...U,"font-family":ot,...J(t)};return a["font-family"]=a["font-family"].replace(/["']/g,""),{getPropertyValue:e=>Object.hasOwn(a,e)?a[e]:""}}function J(t){let a={};for(let[e,n]of Object.entries(t??{}))(/^--pk-[a-z0-9-]+$/.test(e)||e==="font-family")&&typeof n=="string"&&n.length<=200&&ne(n)&&(a[e]=n.trim());return a}var ae=/^#(?:[0-9a-f]{3}|[0-9a-f]{6})$/i;function st(t={}){let a={...N,...J(t)},e=(x,k=0)=>{let T=Object.hasOwn(a,x)?a[x]:"",i=/^var\((--pk-[a-z0-9-]+)\)$/.exec(T);return i&&k<4?e(i[1],k+1):ae.test(T)?T:null},[n,r,m,h]=["--pk-scale-low","--pk-scale-mid","--pk-scale-high","--pk-chart-1"].map(x=>e(x));return{...n&&m?{colorScale:r?[n,r,m]:[n,m]}:{},...h?{dataBar:h}:{}}}var it=t=>Object.entries(t).filter(([a])=>a.startsWith("--pk-")).map(([a,e])=>`${a}:${e}`).join(";");var Mt=Object.freeze({landscape:8,small:16});function Ut({columns:t,tokens:a={},extra:e=""}){let n=a["font-family"]??ot,r=it({...N,...D,...M,...U,...a}),m={...N,...a}["--pk-surface"],h=t>Mt.landscape?"size:landscape;":"";return`:root{${r};color-scheme:light dark}
|
|
27
27
|
@media screen and (prefers-color-scheme:dark){:root{${it(at)}}}
|
|
28
28
|
*{box-sizing:border-box}
|
|
29
29
|
body{margin:0;background:var(--pk-surface);color:var(--pk-text);font:var(--pk-font-size)/1.45 ${n}}
|
|
@@ -55,6 +55,6 @@ body{font-size:var(--pk-print-size);-webkit-print-color-adjust:exact;print-color
|
|
|
55
55
|
thead{display:table-header-group}
|
|
56
56
|
tr{break-inside:avoid}
|
|
57
57
|
.pk-table th,.pk-table td{padding:2px 6px}
|
|
58
|
-
${t>
|
|
58
|
+
${t>Mt.small?".pk-table{font-size:var(--pk-print-small)}":""}
|
|
59
59
|
}
|
|
60
|
-
${e}`}var ae=new Set(["fill","fill-opacity","fill-rule","stroke","stroke-width","stroke-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","opacity","font-size","font-family","font-weight","font-style","text-anchor","dominant-baseline","paint-order","visibility"]),oe=new Set(["svg","g","rect","path","text","tspan","circle","ellipse","line","polyline","polygon","defs","clipPath","linearGradient","radialGradient","stop","pattern","image","title","desc"]),Ut=/[\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F]/g,se=t=>t===9||t===10||t===13||t>=32&&t<=55295&&t!==127||t>=57344&&t<=65533||t>=65536&&t<=1114111,ie=t=>se(t)&&!Number.isNaN(t)&&!String.fromCodePoint(t).match(I),le=/^[A-Za-z_][\w:.-]*$/,ce=Object.freeze({xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"}),pe=t=>t.replace(/&(quot|#39|apos|lt|gt|amp);/g,(a,e)=>({quot:'"',"#39":"'",apos:"'",lt:"<",gt:">",amp:"&"})[e]),Ft=t=>t.replace(/[&<>"]/g,a=>({"&":"&","<":"<",">":">",'"':"""})[a]),R=t=>new _("INVALID_ARGUMENT",`the chart's SVG was refused: ${t}`,{reason:t});function he(t){let a=[],e=/<(\/?)([a-zA-Z][\w:-]*)((?:\s+[^\s=>/]+(?:\s*=\s*(?:"[^"]*"|'[^']*'))?)*)\s*(\/?)>/y,n=/\s+([^\s=>/]+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'))?/g,r=t.startsWith("<?xml")?t.indexOf("?>")+2:0,m=0;for(;r<t.length;){let h=t.indexOf("<",r),x=t.slice(r,h===-1?t.length:h);if(/[<>]/.test(x)||/&(?!(?:amp|lt|gt|quot|apos|#\d+|#x[0-9a-fA-F]+);)/.test(x))throw R("text that is not escaped");if(a.push(x.replace(Ut,"").replace(I,"").replace(/&#(x[0-9a-fA-F]+|\d+);/g,(o,c)=>ie(c[0]==="x"?parseInt(c.slice(1),16):Number(c))?o:"")),h===-1)break;if(/^<style[\s>]/i.test(t.slice(h,h+7))){let o=t.search(/<\/style\s*>/i);if(o===-1||o<h)throw R("a <style> element that is not closed");r=t.indexOf(">",o)+1;continue}if(t.startsWith("<!--",h)){let o=t.indexOf("-->",h);r=o===-1?t.length:o+3;continue}e.lastIndex=h;let k=e.exec(t);if(!k)throw R("markup that is not a plain element");let[,b,i,S,d]=k;if(!oe.has(i))throw R(`the element <${i}>`);let u=`<${b}${i}`,O=new Map;for(let[,o,c,p]of S.matchAll(n)){let f=pe(c??p??"").replace(Ut,"").replace(I,""),w=o.toLowerCase();if(!le.test(o))throw R("an attribute name that is not a plain name");if((w==="xmlns"||w.startsWith("xmlns:"))&&ce[w]!==f)throw R(`the namespace ${o}`);if(w.startsWith("on"))throw R(`the event attribute ${o}`);if((w==="href"||w==="xlink:href"||w==="src")&&!(/^#[\w-]+$/.test(f)||/^data:image\/(?:png|jpeg|gif|webp);base64,[A-Za-z0-9+/=]*$/.test(f)))throw R(`a link in ${o}`);if(w==="style"){for(let s of f.split(";")){let g=s.indexOf(":"),T=s.slice(0,g).trim().toLowerCase(),$=s.slice(g+1).trim();g>0&&ae.has(T)&&!/url\s*\(|expression\s*\(/i.test($)&&O.set(T,$)}continue}if(/url\s*\(\s*['"]?\s*(?!#)/i.test(f))throw R(`an address in ${o}`);u+=` ${o}="${Ft(f)}"`}for(let[o,c]of O)new RegExp(`\\s${o}=`).test(u)||(u+=` ${o}="${Ft(c)}"`);u+=`${d}>`,a.push(u),i==="svg"&&(m+=b?-1:d?0:1),r=e.lastIndex}if(m!==0)throw R("an <svg> element that is not closed");return a.join("")}function Ht(t,{echarts:a,style:e,width:n,height:r,locale:m,labels:h,limits:x,now:k,maxCategories:b}){let i=t.view,S=xt(i,t.encoded),d=S.swap?X(t.encoded,bt(i),{locale:m,limits:x,...k!==void 0?{now:k}:{}}):t,u=kt(d,{labels:h,limits:x,maxCategories:b}),O=wt(d,{theme:Tt(e),locale:m,labels:h,limits:x,maxCategories:b,series:u,chart:S.chart}),o=vt(O,e,{width:n,height:r,categoryNames:u.categories,axisLabels:i.chart.axisLabels}),c=e.getPropertyValue("--pk-surface").trim()||N["--pk-surface"],p=a.init(null,null,{renderer:"svg",ssr:!0,width:n,height:r}),f;try{let{axisEvery:w,...s}=o;p.setOption({...s,backgroundColor:c,animation:!1}),f=p.renderToSVGString()}finally{p.dispose()}return{svg:he(f),categories:u.categories.length,of:u.categoryCount}}var fe="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",Q=Object.freeze({json:Object.freeze({mediaType:"application/json",extension:"json",text:!0}),csv:Object.freeze({mediaType:"text/csv;charset=utf-8",extension:"csv",text:!0}),xlsx:Object.freeze({mediaType:fe,extension:"xlsx",text:!1}),svg:Object.freeze({mediaType:"image/svg+xml",extension:"svg",text:!0}),html:Object.freeze({mediaType:"text/html;charset=utf-8",extension:"html",text:!0})}),V=Object.freeze({template:K,chartWidth:8e3,chartHeight:8e3,tableCells:2e5,categories:50}),pt=Object.freeze({width:800,height:480}),me=Object.freeze(["chartUnavailable","tableCut","chartCut","viewFile"]),de=new Set(["ar","he","fa","ur","ps","sd","ug","yi","dv","ckb"]),ue=Object.freeze({chart:[!0,!1,"auto"],chartEmbed:["image","inline"],bom:[!0,!1],strict:[!0,!1],trusted:[!0,!1]}),Kt=Object.freeze(["format","locale","timeZone","now","limits","trusted","strict","labels","texts","tokens","title","description","source","template","chart","chartEmbed","echarts","size","tableCells","bom"]),j=(t,a)=>new _("INVALID_OPTION",`render: ${a}`,{option:t}),lt=(t,a,e={})=>({path:"",code:t,message:a,severity:"warning",params:e});function ge(t,a){if(Array.isArray(t)||t&&typeof t=="object"&&Array.isArray(t.columns)&&Array.isArray(t.data)){let e=t;return mt(Array.isArray(t)?t:{columns:e.columns,types:e.types,data:e.data},{timeZone:a.timeZone??"UTC",...a.limits?{limits:a.limits}:{}})}if(t&&typeof t=="object"&&typeof t.column=="function")return t;throw new _("INVALID_ARGUMENT","render(view, data): data must be rows, columnar data ({ columns, types, data }) or encode()'s result")}function ke(t){let a=t?.width??pt.width,e=t?.height??pt.height;for(let[n,r,m]of[["width",a,V.chartWidth],["height",e,V.chartHeight]])if(!Number.isInteger(r)||r<100||r>m)throw j("size",`size.${n} must be a whole number from 100 to ${m}`);return{width:a,height:e}}function Gt(t,a,e){let n=t===void 0?new Date:new Date(t);if(Number.isNaN(n.getTime()))throw j("now","now must be a date, a time in ms or an ISO text");return new Intl.DateTimeFormat(a,{dateStyle:"medium",timeStyle:"short",timeZone:e}).format(n)}async function Vt(t,a,e={}){if(e===null||typeof e!="object"||Array.isArray(e))throw j("options","options must be an object");for(let l of Object.keys(e))if(!Kt.includes(l)){let E=B(l,Kt);throw j(l,`unknown option ${JSON.stringify(l.slice(0,40))}${E?`; did you mean ${JSON.stringify(E)}?`:""}`)}let n=e.format??"html";if(!Object.hasOwn(Q,n))throw j("format",`unknown format ${JSON.stringify(String(n)).slice(0,40)}; one of ${Object.keys(Q).join(", ")}`);let r=Q[n],m={format:n,mediaType:r.mediaType,extension:r.extension},h=n==="html"?It(e.template??Rt):null,x=n==="svg"||n==="html"?ke(e.size):null;for(let[l,E]of Object.entries(ue)){let A=e[l];if(A!==void 0&&!E.includes(A))throw j(l,`${l} takes ${E.map(W=>JSON.stringify(W)).join(", ")}, not ${JSON.stringify(String(A)).slice(0,40)}`)}if((n==="svg"||n==="html"&&e.chart===!0)&&typeof e.echarts?.init!="function")throw j("echarts",`${n==="svg"?"an SVG":"a report with chart: true"} needs ECharts: pass the echarts module (with its SVG renderer) as options.echarts`);e.now!==void 0&&Gt(e.now,"en-US","UTC");let k=[],b=Ot(typeof t=="string"?t:JSON.stringify(t??null));b.failed&&k.push({path:"",code:"viewFile",message:`not a view: ${b.issues.at(-1)?.message??b.failed}`,severity:"error",params:{value:b.failed}});let i=ge(a,e),S=e.trusted?e.limits:ft(e.limits),d=dt(b.view??{},i,{...S?{limits:S}:{}});k.push(...d.issues);let u={locale:e.locale??"en-US",...e.limits?{limits:e.limits}:{},...e.now!==void 0?{now:e.now}:{}},O=X(i,d.view,u);for(let l of O.issues)k.some(E=>E.code===l.code&&E.path===l.path)||k.push(l);let o=!k.some(l=>l.severity==="error");if(!o&&e.strict)return{...m,body:null,issues:k,ok:o,summary:null,view:d.view};let c=gt(O,{...e.labels?{labels:e.labels}:{},...e.limits?{limits:e.limits}:{}}),p={rows:c.bodyRows.length,columns:c.columnCount,sourceRows:i.length,truncated:!1},f=et(c.locale,e.texts),w=(e.title??(b.name||d.view.chart.title||f.untitled)).trim()||f.untitled,s=()=>Ht(O,{echarts:e.echarts,style:Pt(e.tokens),...x,locale:c.locale,labels:e.labels,limits:e.limits,now:e.now,maxCategories:V.categories}),g=l=>{l.categories<l.of&&(p.truncated=!0,k.push(lt("chartCut",L(ct.chartCut,{shown:l.categories,count:l.of}),{value:String(l.categories),max:l.of})))},T;if(n==="json")T=new TextEncoder().encode(yt(c));else if(n==="csv")T=Ct(c,{bom:e.bom!==!1});else if(n==="xlsx")T=Nt(c,{sheetName:w,theme:st(e.tokens)});else if(n==="svg"){let l=s();g(l),T=new TextEncoder().encode(l.svg)}else{let l=new Intl.NumberFormat(c.locale),E=zt(c,{maxCells:e.tableCells??V.tableCells,...st(e.tokens)}),A="";E.cut&&(p.truncated=!0,k.push(lt("tableCut",L(ct.tableCut,{shown:E.cut.rows,count:E.cut.of}),{value:String(E.cut.rows),max:E.cut.of})),A=`<p class="pk-report-note">${v(L(f.tableCut,{shown:l.format(E.cut.rows),count:l.format(E.cut.of)}))}</p>`);let W=e.chart===!0||(e.chart??"auto")==="auto"&&d.view.display==="chart",ht="";if(W&&typeof e.echarts?.init!="function")k.push(lt("chartUnavailable",ct.chartUnavailable));else if(W){let y=s();g(y);let q=y.categories<y.of?`<figcaption class="pk-report-note">${v(L(f.chartCut,{shown:l.format(y.categories),count:l.format(y.of)}))}</figcaption>`:"";ht=`<figure class="pk-report-chart">${e.chartEmbed==="inline"?y.svg:`<img alt="${v(`${f.chart}: ${w}`)}" width="${x?.width}" height="${x?.height}" src="data:image/svg+xml;base64,${we(new TextEncoder().encode(y.svg))}">`}${q}</figure>`}let Y=Et(d.view,i,{...S?{limits:S}:{}}),Wt=e.timeZone??c.timeZone??"UTC",F={title:w,description:e.description??b.description??"",source:e.source??"",generated:Gt(e.now,c.locale,Wt),rows:L(f.rowsCount,{count:l.format(i.length)}),filters:Y.filters.length?Y.filters.map(y=>y.text).join("; "):f.noFilters,summary:Y.text,lang:c.locale,dir:de.has(c.locale.split("-")[0].toLowerCase())?"rtl":"ltr"},Z=(y,q)=>q?`<dt>${v(y)}</dt><dd>${v(q)}</dd>`:"",Zt={style:`<style>${Mt({columns:c.columnCount,tokens:J(e.tokens??{}),extra:E.css})}</style>`,chart:ht,table:E.html+A,details:`<dl class="pk-report-details">${Z(f.source,F.source)}${Z(f.rows,F.rows)}${Z(f.filters,F.filters)}${Z(f.generated,F.generated)}</dl>`};T=new TextEncoder().encode(Lt(h,{...F,...Zt}))}let $={...m,body:T,issues:k,ok:o,summary:p,view:d.view};return r.text?{...$,text:new TextDecoder().decode(T)}:$}var ct=et("en");function we(t){let a="";for(let e=0;e<t.length;e+=32768)a+=String.fromCharCode(...t.subarray(e,e+32768));return btoa(a)}St([$t]);var Ye=Object.freeze([...Object.keys(D),...Object.keys(M),...Object.keys(N),"--pk-scale-mid"]),tr=Object.freeze(Object.keys(U));export{tr as REPORT_LENGTHS,Ye as REPORT_TOKENS,Vt as render};
|
|
60
|
+
${e}`}var oe=new Set(["fill","fill-opacity","fill-rule","stroke","stroke-width","stroke-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","opacity","font-size","font-family","font-weight","font-style","text-anchor","dominant-baseline","paint-order","visibility"]),se=new Set(["svg","g","rect","path","text","tspan","circle","ellipse","line","polyline","polygon","defs","clipPath","linearGradient","radialGradient","stop","pattern","image","title","desc"]),Ft=/[\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F]/g,ie=t=>t===9||t===10||t===13||t>=32&&t<=55295&&t!==127||t>=57344&&t<=65533||t>=65536&&t<=1114111,le=t=>ie(t)&&!Number.isNaN(t)&&!String.fromCodePoint(t).match(I),ce=/^[A-Za-z_][\w:.-]*$/,pe=Object.freeze({xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"}),he=t=>t.replace(/&(quot|#39|apos|lt|gt|amp);/g,(a,e)=>({quot:'"',"#39":"'",apos:"'",lt:"<",gt:">",amp:"&"})[e]),Ht=t=>t.replace(/[&<>"]/g,a=>({"&":"&","<":"<",">":">",'"':"""})[a]),R=t=>new _("INVALID_ARGUMENT",`the chart's SVG was refused: ${t}`,{reason:t});function fe(t){let a=[],e=/<(\/?)([a-zA-Z][\w:-]*)((?:\s+[^\s=>/]+(?:\s*=\s*(?:"[^"]*"|'[^']*'))?)*)\s*(\/?)>/y,n=/\s+([^\s=>/]+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'))?/g,r=t.startsWith("<?xml")?t.indexOf("?>")+2:0,m=0;for(;r<t.length;){let h=t.indexOf("<",r),x=t.slice(r,h===-1?t.length:h);if(/[<>]/.test(x)||/&(?!(?:amp|lt|gt|quot|apos|#\d+|#x[0-9a-fA-F]+);)/.test(x))throw R("text that is not escaped");if(a.push(x.replace(Ft,"").replace(I,"").replace(/&#(x[0-9a-fA-F]+|\d+);/g,(o,c)=>le(c[0]==="x"?parseInt(c.slice(1),16):Number(c))?o:"")),h===-1)break;if(/^<style[\s>]/i.test(t.slice(h,h+7))){let o=t.search(/<\/style\s*>/i);if(o===-1||o<h)throw R("a <style> element that is not closed");r=t.indexOf(">",o)+1;continue}if(t.startsWith("<!--",h)){let o=t.indexOf("-->",h);r=o===-1?t.length:o+3;continue}e.lastIndex=h;let k=e.exec(t);if(!k)throw R("markup that is not a plain element");let[,T,i,S,d]=k;if(!se.has(i))throw R(`the element <${i}>`);let u=`<${T}${i}`,b=new Map;for(let[,o,c,p]of S.matchAll(n)){let f=he(c??p??"").replace(Ft,"").replace(I,""),w=o.toLowerCase();if(!ce.test(o))throw R("an attribute name that is not a plain name");if((w==="xmlns"||w.startsWith("xmlns:"))&&pe[w]!==f)throw R(`the namespace ${o}`);if(w.startsWith("on"))throw R(`the event attribute ${o}`);if((w==="href"||w==="xlink:href"||w==="src")&&!(/^#[\w-]+$/.test(f)||/^data:image\/(?:png|jpeg|gif|webp);base64,[A-Za-z0-9+/=]*$/.test(f)))throw R(`a link in ${o}`);if(w==="style"){for(let s of f.split(";")){let g=s.indexOf(":"),E=s.slice(0,g).trim().toLowerCase(),$=s.slice(g+1).trim();g>0&&oe.has(E)&&!/url\s*\(|expression\s*\(/i.test($)&&b.set(E,$)}continue}if(/url\s*\(\s*['"]?\s*(?!#)/i.test(f))throw R(`an address in ${o}`);u+=` ${o}="${Ht(f)}"`}for(let[o,c]of b)new RegExp(`\\s${o}=`).test(u)||(u+=` ${o}="${Ht(c)}"`);u+=`${d}>`,a.push(u),i==="svg"&&(m+=T?-1:d?0:1),r=e.lastIndex}if(m!==0)throw R("an <svg> element that is not closed");return a.join("")}function Kt(t,{echarts:a,style:e,width:n,height:r,locale:m,labels:h,limits:x,now:k,maxCategories:T}){let i=t.view,S=bt(i,t.encoded),d=S.swap?X(t.encoded,Tt(i),{locale:m,limits:x,...k!==void 0?{now:k}:{}}):t,u=wt(d,{labels:h,limits:x,maxCategories:T}),b=xt(d,{theme:Et(e),locale:m,labels:h,limits:x,maxCategories:T,series:u,chart:S.chart}),o=yt(b,e,{width:n,height:r,categoryNames:u.categories,axisLabels:i.chart.axisLabels}),c=e.getPropertyValue("--pk-surface").trim()||N["--pk-surface"],p=a.init(null,null,{renderer:"svg",ssr:!0,width:n,height:r}),f;try{let{axisEvery:w,...s}=o;p.setOption({...s,backgroundColor:c,animation:!1}),f=p.renderToSVGString()}finally{p.dispose()}return{svg:fe(f),categories:u.categories.length,of:u.categoryCount}}var me="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",Q=Object.freeze({json:Object.freeze({mediaType:"application/json",extension:"json",text:!0}),csv:Object.freeze({mediaType:"text/csv;charset=utf-8",extension:"csv",text:!0}),xlsx:Object.freeze({mediaType:me,extension:"xlsx",text:!1}),svg:Object.freeze({mediaType:"image/svg+xml",extension:"svg",text:!0}),html:Object.freeze({mediaType:"text/html;charset=utf-8",extension:"html",text:!0})}),G=Object.freeze({template:H,chartWidth:8e3,chartHeight:8e3,tableCells:2e5,categories:50}),pt=Object.freeze({width:800,height:480}),de=Object.freeze(["chartUnavailable","tableCut","chartCut","viewFile"]),ue=new Set(["ar","he","fa","ur","ps","sd","ug","yi","dv","ckb"]),ge=Object.freeze({chart:[!0,!1,"auto"],chartEmbed:["image","inline"],bom:[!0,!1],strict:[!0,!1],trusted:[!0,!1]}),Gt=Object.freeze(["format","locale","timeZone","now","limits","trusted","strict","labels","texts","tokens","title","description","source","template","chart","chartEmbed","echarts","size","tableCells","bom"]),j=(t,a)=>new _("INVALID_OPTION",`render: ${a}`,{option:t}),lt=(t,a,e={})=>({path:"",code:t,message:a,severity:"warning",params:e});function ke(t,a){if(Array.isArray(t)||t&&typeof t=="object"&&Array.isArray(t.columns)&&Array.isArray(t.data)){let e=t;return mt(Array.isArray(t)?t:{columns:e.columns,types:e.types,data:e.data},{timeZone:a.timeZone??"UTC",...a.limits?{limits:a.limits}:{}})}if(t&&typeof t=="object"&&typeof t.column=="function")return t;throw new _("INVALID_ARGUMENT","render(view, data): data must be rows, columnar data ({ columns, types, data }) or encode()'s result")}function we(t){let a=t?.width??pt.width,e=t?.height??pt.height;for(let[n,r,m]of[["width",a,G.chartWidth],["height",e,G.chartHeight]])if(!Number.isInteger(r)||r<100||r>m)throw j("size",`size.${n} must be a whole number from 100 to ${m}`);return{width:a,height:e}}function Vt(t,a,e){let n=t===void 0?new Date:new Date(t);if(Number.isNaN(n.getTime()))throw j("now","now must be a date, a time in ms or an ISO text");return new Intl.DateTimeFormat(a,{dateStyle:"medium",timeStyle:"short",timeZone:e}).format(n)}async function Wt(t,a,e={}){if(e===null||typeof e!="object"||Array.isArray(e))throw j("options","options must be an object");for(let l of Object.keys(e))if(!Gt.includes(l)){let O=B(l,Gt);throw j(l,`unknown option ${JSON.stringify(l.slice(0,40))}${O?`; did you mean ${JSON.stringify(O)}?`:""}`)}let n=e.format??"html";if(!Object.hasOwn(Q,n))throw j("format",`unknown format ${JSON.stringify(String(n)).slice(0,40)}; one of ${Object.keys(Q).join(", ")}`);let r=Q[n],m={format:n,mediaType:r.mediaType,extension:r.extension},h=n==="html"?Lt(e.template??_t):null,x=n==="svg"||n==="html"?we(e.size):null;for(let[l,O]of Object.entries(ge)){let A=e[l];if(A!==void 0&&!O.includes(A))throw j(l,`${l} takes ${O.map(V=>JSON.stringify(V)).join(", ")}, not ${JSON.stringify(String(A)).slice(0,40)}`)}if((n==="svg"||n==="html"&&e.chart===!0)&&typeof e.echarts?.init!="function")throw j("echarts",`${n==="svg"?"an SVG":"a report with chart: true"} needs ECharts: pass the echarts module (with its SVG renderer) as options.echarts`);e.now!==void 0&&Vt(e.now,"en-US","UTC");let k=[],T=St(typeof t=="string"?t:JSON.stringify(t??null));T.failed&&k.push({path:"",code:"viewFile",message:`not a view: ${T.issues.at(-1)?.message??T.failed}`,severity:"error",params:{value:T.failed}});let i=ke(a,e),S=e.trusted?e.limits:ft(e.limits),d=ut(T.view??{},i,{...S?{limits:S}:{}});k.push(...d.issues);let u={locale:e.locale??"en-US",...e.limits?{limits:e.limits}:{},...e.now!==void 0?{now:e.now}:{}},b=X(i,d.view,u);for(let l of b.issues)k.some(O=>O.code===l.code&&O.path===l.path)||k.push(l);let o=!k.some(l=>l.severity==="error");if(!o&&e.strict)return{...m,body:null,issues:k,ok:o,summary:null,view:d.view};let c=kt(b,{labels:e.labels??dt(b.locale??u.locale),...e.limits?{limits:e.limits}:{}}),p={rows:c.bodyRows.length,columns:c.columnCount,sourceRows:i.length,keptRows:b.rows.length,truncated:!1},f=et(c.locale,e.texts),w=(e.title??(T.name||d.view.chart.title||f.untitled)).trim()||f.untitled,s=()=>Kt(b,{echarts:e.echarts,style:Dt(e.tokens),...x,locale:c.locale,labels:e.labels,limits:e.limits,now:e.now,maxCategories:G.categories}),g=l=>{l.categories<l.of&&(p.truncated=!0,k.push(lt("chartCut",L(ct.chartCut,{shown:l.categories,count:l.of}),{value:String(l.categories),max:l.of})))},E;if(n==="json")E=new TextEncoder().encode(Ct(c));else if(n==="csv")E=Nt(c,{bom:e.bom!==!1});else if(n==="xlsx")E=Rt(c,{sheetName:w,theme:st(e.tokens)});else if(n==="svg"){let l=s();g(l),E=new TextEncoder().encode(l.svg)}else{let l=new Intl.NumberFormat(c.locale),O=Pt(c,{maxCells:e.tableCells??G.tableCells,...st(e.tokens)}),A="";O.cut&&(p.truncated=!0,k.push(lt("tableCut",L(ct.tableCut,{shown:O.cut.rows,count:O.cut.of}),{value:String(O.cut.rows),max:O.cut.of})),A=`<p class="pk-report-note">${v(L(f.tableCut,{shown:l.format(O.cut.rows),count:l.format(O.cut.of)}))}</p>`);let V=e.chart===!0||(e.chart??"auto")==="auto"&&d.view.display==="chart",ht="";if(V&&typeof e.echarts?.init!="function")k.push(lt("chartUnavailable",ct.chartUnavailable));else if(V){let y=s();g(y);let q=y.categories<y.of?`<figcaption class="pk-report-note">${v(L(f.chartCut,{shown:l.format(y.categories),count:l.format(y.of)}))}</figcaption>`:"";ht=`<figure class="pk-report-chart">${e.chartEmbed==="inline"?y.svg:`<img alt="${v(`${f.chart}: ${w}`)}" width="${x?.width}" height="${x?.height}" src="data:image/svg+xml;base64,${xe(new TextEncoder().encode(y.svg))}">`}${q}</figure>`}let Y=Ot(d.view,i,{...S?{limits:S}:{}}),Zt=e.timeZone??c.timeZone??"UTC",W={title:w,description:e.description??T.description??"",source:e.source??"",generated:Vt(e.now,c.locale,Zt),rows:L(f.rowsCount,{count:l.format(i.length)}),filters:Y.filters.length?Y.filters.map(y=>y.text).join("; "):f.noFilters,summary:Y.text,lang:c.locale,dir:ue.has(c.locale.split("-")[0].toLowerCase())?"rtl":"ltr"},Z=(y,q)=>q?`<dt>${v(y)}</dt><dd>${v(q)}</dd>`:"",qt={style:`<style>${Ut({columns:c.columnCount,tokens:J(e.tokens??{}),extra:O.css})}</style>`,chart:ht,table:O.html+A,details:`<dl class="pk-report-details">${Z(f.source,W.source)}${Z(f.rows,l.format(i.length))}${Z(f.filters,W.filters)}${Z(f.generated,W.generated)}</dl>`};E=new TextEncoder().encode(zt(h,{...W,...qt}))}let $={...m,body:E,issues:k,ok:o,summary:p,view:d.view};return r.text?{...$,text:new TextDecoder().decode(E)}:$}var ct=et("en");function xe(t){let a="";for(let e=0;e<t.length;e+=32768)a+=String.fromCharCode(...t.subarray(e,e+32768));return btoa(a)}$t([vt]);var tr=Object.freeze([...Object.keys(D),...Object.keys(M),...Object.keys(N),"--pk-scale-mid"]),er=Object.freeze(Object.keys(U));export{er as REPORT_LENGTHS,tr as REPORT_TOKENS,Wt as render};
|
package/dist/element.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c,d}from"./chunks/chunk-
|
|
1
|
+
import{a,b,c,d}from"./chunks/chunk-NXZQI5LC.js";import"./chunks/chunk-7V4PAOK7.js";import"./chunks/chunk-YMLEL3SK.js";import"./chunks/chunk-HFUBAP3D.js";import"./chunks/chunk-OHKPNELV.js";import"./chunks/chunk-CHSIHYYE.js";import"./chunks/chunk-KO3EKDH5.js";import"./chunks/chunk-XR4CMFGN.js";import"./chunks/chunk-5QXN3X2Q.js";import"./chunks/chunk-DCANE7XH.js";export{a as EVENTS,c as PivotReportElement,b as TAG,d as define};
|
package/dist/import-worker.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var Ie=Object.defineProperty;var _=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(r){throw n=[r],r}};var ae=(e,t)=>{for(var n in t)Ie(e,n,{get:t[n],enumerable:!0})};var E,$=_(()=>{E=class extends Error{constructor(t,n,r={}){super(n),this.name="PivotkitError",this.code=t,this.details=r}}});function P(e){let t=e&&e.limits;if(t==null)return K;if(typeof t!="object"||Array.isArray(t))throw new E("INVALID_OPTION","options.limits must be an object");let n={...K};for(let r of Object.keys(t)){let o=t[r];if(!Object.hasOwn(K,r))throw new E("INVALID_OPTION",`unknown limit "${r}"`);if(!Number.isInteger(o)||o<1)throw new E("INVALID_OPTION",`limits.${r} must be a whole number of 1 or more`);if(Object.hasOwn(Q,r)&&o>Q[r])throw new E("INVALID_OPTION",`limits.${r} must be at most ${Q[r]}`);n[r]=o}return Object.freeze(n)}var K,Q,Ot,_t,q=_(()=>{$();K=Object.freeze({json:5e6,name:256,axisFields:8,values:16,filters:128,items:1e5,derived:64,sort:64,collapsed:1e4,topCount:1e6,textValue:1e3,srcParams:16,srcParamLength:256,rows:1e6,groups:5e5,pivotCells:2e6,work:1e8,cells:2e6,cacheEntries:16,fileBytes:104857600,columns:1e3,importCells:1e7,textLength:32767,archiveEntries:1e4,unpackedBytes:524288e3}),Q=Object.freeze({groups:2**27}),Ot=Object.freeze({filters:50,json:1e6}),_t=Object.freeze({perCode:100,total:1e3})});function Le(e,t,n,r=0,o=0,a=0,l=0){if(e>=100)return Date.UTC(e,t-1,n,r,o,a,l);let s=new Date(Date.UTC(2e3,t-1,n,r,o,a,l));return s.setUTCFullYear(e),s.getTime()}function R(e){let t=Ce.exec(e.trim());if(!t)return null;let n=t[8],r=+t[1],o=+t[2],a=+t[3],l=t[4]===void 0?0:+t[4],s=t[5]===void 0?0:+t[5],i=t[6]===void 0?0:+t[6],f=t[7];if(o<1||o>12||a<1||l>23||s>59||i>59)return null;let c=Le(r,o,a,l,s,i,f?Math.round(+`0.${f}`*1e3):0);if(new Date(c).getUTCDate()!==a)return null;let m=null;if(n)if(n==="Z")m=0;else{let w=n.slice(1).replace(":",""),g=Number(w.slice(0,2)),d=Number(w.slice(2)||0);if(g>23||d>59)return null;m=(n[0]==="-"?-1:1)*(g*60+d)}return{ms:c,offsetMinutes:m}}var Ce,le=_(()=>{Ce=/^(\d{4})-(\d{2})-(\d{2})(?:[T ](\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{1,9}))?)?(Z|[+-]\d{2}(?::?\d{2})?)?)?$/});function T(e,t,n,r={}){return new E("INVALID_FILE",`"${t}": ${n}`,{reason:e,file:t,...r})}function C(e,t,n,r,o){let a=l=>l.toLocaleString("en-US");return new E("LIMIT_EXCEEDED",`"${r}" has more than ${a(n)} ${o} (limits.${e}): load a smaller extract of it, or a host can raise this limit`,{limit:e,value:t,max:n,file:r})}function A(e,t,n,r,o){if(t>n)throw C(e,t,n,r,o)}function x(e,t){let n=e&&typeof e=="object"&&typeof e.name=="string"?e.name:"",r=ke(String(t?.name??n??"")).slice(0,256);return(new RegExp("\\p{Surrogate}$","u").test(r)?r.slice(0,-1):r)||"file"}async function F(e,t,n){if(e instanceof Uint8Array)return A("fileBytes",e.byteLength,t.fileBytes,n,"bytes"),e;if(e instanceof ArrayBuffer)return A("fileBytes",e.byteLength,t.fileBytes,n,"bytes"),new Uint8Array(e);if(typeof Blob<"u"&&e instanceof Blob)return A("fileBytes",e.size,t.fileBytes,n,"bytes"),new Uint8Array(await e.arrayBuffer());throw new E("INVALID_ARGUMENT","read(file): file must be a File, a Blob, an ArrayBuffer or a Uint8Array")}function z(e){let t=e??{};if(typeof t!="object")throw new E("INVALID_OPTION","read(file, options): options must be an object");return{...t,limits:P(t)}}function Pe(e,t){let n=r=>typeof r=="number"?r.toLocaleString("en-US"):r;switch(e){case"ENCODING":return`Read as ${t.encoding}.`;case"SEPARATOR":return`Values separated by ${t.name}.`;case"LINES_SKIPPED":return`${n(t.count)} line(s) above the column names were skipped (a title block).`;case"COLUMN_RENAMED":return t.from===""?`Column ${n(t.position)} has no name; it is named "${t.to}".`:`Column "${t.from}" is named "${t.to}".`;case"COLUMNS_RENAMED_MORE":return`${n(t.count)} more columns were renamed.`;case"COLUMN_DROPPED":return`Column ${n(t.position)} has no name and no values and was left out.`;case"COLUMNS_ADDED":return`${n(t.rows)} row(s) have more values than there are column names; the extra values are in ${n(t.count)} column(s) named "Column \u2026".`;case"ROWS_EMPTY":return`${n(t.count)} empty row(s) were left out.`;case"TEXT_CUT":return`${n(t.count)} value(s) longer than ${n(t.max)} characters were cut.`;case"CHARACTERS_REMOVED":return`Control or text direction characters were removed from ${n(t.count)} value(s).`;case"DATE_ORDER":return`Dates in "${t.column}" were read as ${t.order==="mdy"?"month/day/year":"day/month/year"}; the values fit both.`;case"VALUES_NOT_CONVERTED":return`${n(t.count)} value(s) in "${t.column}" are no ${t.type} and are empty.`;case"JSON_PROPERTY":return`The rows were read from "${t.property}".`;case"JSON_FLATTENED":return`Nested values became columns named with a dot ("${t.example}").`;case"SHEET":return Number(t.count)>1?`Read sheet "${t.sheet}" of ${n(t.count)} sheets.`:`Read sheet "${t.sheet}".`;case"USED_RANGE":return`The sheet's used range reaches row ${n(t.usedRow)}; values end at row ${n(t.lastRow)}, the empty rows below were skipped.`;case"ERROR_CELLS":return`${n(t.count)} cell(s) hold an Excel error (such as #N/A) and are empty.`;default:return e}}function N(e,t={}){let n={};for(let[r,o]of Object.entries(t))n[r]=typeof o=="string"?o.replace(v,"").slice(0,256):o;return{code:e,params:n,message:Pe(e,n)}}function ke(e){return e.replace(v,"").replace(fe," ").trim()}function ee(e,t,n,r,o,a){if(t<1||t>12||n<1||r>23||o>59||a>59)return null;let l=new Date(Date.UTC(2e3,t-1,n));if(l.setUTCFullYear(e),l.getUTCDate()!==n)return null;let s=`${String(e).padStart(4,"0")}-${I(t)}-${I(n)}`;return r===0&&o===0&&a===0?s:`${s}T${I(r)}:${I(o)}:${I(a)}`}function ce(e){return[+e[1],+e[2],+e[3],e[4]===void 0?0:+e[4],e[5]===void 0?0:+e[5],e[6]===void 0?0:+e[6]]}function ne(e,t){if(e.length>40)return null;if(R(e)!==null)return e;let n=de.exec(e);if(n){let[r,o,a,l,s,i]=ce(n);return ee(a,o,r,l,s,i)}if(n=me.exec(e),n){let[r,o,a,l,s,i]=ce(n);return t==="mdy"?ee(a,r,o,l,s,i):ee(a,o,r,l,s,i)}return null}function Be(e){let t=0;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);r>=48&&r<=57&&t++}return t}function j(e,t){if(e.length>40||!(t===","?je:Ue).test(e))return null;let n=Number(t===","?e.replaceAll(".","").replace(",","."):e);return Number.isFinite(n)?n:null}function Ge(e){return Ve.test(e)?!0:/^[+-]?\d+$/.test(e)&&Be(e)>ve}function pe(e){let t=e.toLowerCase();return Fe.has(t)?!0:ze.has(t)?!1:null}function k(e){let t=e.getTime();if(!Number.isFinite(t)||Math.abs(t)>864e13)return null;let n=Math.round(t/1e3)*1e3;Math.abs(t-n)<=2&&(t=n);let r=new Date(t).toISOString();return t%he===0?r.slice(0,10):t%1e3===0?r.slice(0,19):r.slice(0,23)}function He(e,t,n){if(t==="string"&&e.every(l=>l===null||typeof l=="string"))return{values:e,failed:0};let r=Je[t],o=new Array(e.length),a=0;for(let l=0;l<e.length;l++){let s=e[l];if(s===null){o[l]=null;continue}let i=r(s,n);i===void 0?(o[l]=null,a++):o[l]=i}return{values:o,failed:a}}function We(e,t){let n=0,r=0,o=0,a=0;for(let s of e)s!==null&&(typeof s=="number"?n++:typeof s=="boolean"?r++:s instanceof Date?o++:a++);let l=n+r+o+a;return l===0?{type:"string"}:a===0?n===l?{type:"number"}:r===l?{type:"boolean"}:o===l?{type:"date"}:{type:"string"}:a!==l?n===0&&r===0&&e.every(s=>s===null||s instanceof Date||typeof s=="string"&&R(s)!==null)?{type:"date"}:{type:"string"}:t.textNumbers===!1?{type:e.every(s=>s===null||R(s)!==null)?"date":"string"}:Xe(e,t)}function Xe(e,t){let n=!0,r=!0,o=!0,a=!0,l=!1,s=!1,i=!0,f=!0;for(let c of e)if(c!==null){if(n&&pe(c)===null&&(n=!1),r&&R(c)===null&&(r=!1),o&&(!de.test(c)||ne(c,"dmy")===null)&&(o=!1),a){let m=c.length<=40?me.exec(c):null;m?(+m[1]>12&&(l=!0),+m[2]>12&&(s=!0)):a=!1}if((i||f)&&(Ge(c)?(i=!1,f=!1):(i&&j(c,".")===null&&(i=!1),f&&j(c,",")===null&&(f=!1))),!n&&!r&&!o&&!a&&!i&&!f)return{type:"string"}}if(n)return{type:"boolean"};if(r||o)return{type:"date"};if(a&&!(l&&s)){let c=l?"dmy":s?"mdy":t.dateOrder;if(e.every(w=>w===null||ne(w,c)!==null))return{type:"date",dateOrder:c,ambiguousOrder:!l&&!s}}return i&&f?{type:"number",decimal:t.decimal}:i?{type:"number",decimal:"."}:f?{type:"number",decimal:","}:{type:"string"}}function te(e,t,n){if(e==null)return null;switch(typeof e){case"string":return ue(e,t,n);case"number":return Number.isFinite(e)?e:null;case"boolean":return e;case"bigint":return Number.isSafeInteger(Number(e))?Number(e):String(e);case"object":if(e instanceof Date)return Number.isNaN(e.getTime())?null:e;try{return ue(JSON.stringify(e)??"",t,n)}catch{return null}default:return null}}function ue(e,t,n){let r=e;return $e.test(r)&&(r=r.replace(v,""),n.removed++),r=r.replace(fe," ").trim(),r.length>t&&(r=r.slice(0,t),n.cut++),r===""?null:r}function G(e){let{file:t,limits:n}=e,r={decimal:e.hints?.decimal??".",dateOrder:e.hints?.dateOrder??(!e.locale||/^en-US$/i.test(e.locale)?"mdy":"dmy"),...e.hints?.serialDates?{serialDates:!0}:{},...e.hints?.textNumbers===!1?{textNumbers:!1}:{}},o=[],a={removed:0,cut:0,empty:0,extraRows:0},l=[],s=null,i=0,f=0,c=[],m=()=>{A("columns",l.length+1,n.columns,t,"columns"),l.push(new Array(f).fill(null))},w=u=>{let p=0,y=new Array(u.length);for(let h=0;h<u.length;h++){let b=te(u[h],n.textLength,a);y[h]=b,b!==null&&(p=h+1)}if(p===0){a.empty++;return}for(p>i&&a.extraRows++,p>l.length&&(A("columns",p,n.columns,t,"columns"),A("importCells",(f+1)*p,n.importCells,t,"values (rows x columns)"));l.length<p;)m();f++,A("rows",f,n.rows,t,"rows"),A("importCells",f*l.length,n.importCells,t,"values (rows x columns)");for(let h=0;h<l.length;h++)l[h].push(h<p?y[h]:null)},g=u=>{s=u.map(p=>{let y=te(p,n.name,{removed:0,cut:0});return y===null?null:y instanceof Date?k(y):String(y)}),i=s.length,A("columns",i,n.columns,t,"columns");for(let p=0;p<i;p++)l.push([])},d=()=>{let u=c??[];if(c=null,s===null){let p=0,y=u.map(O=>{let ie=0;for(let Re of O)te(Re,n.textLength,{removed:0,cut:0})!==null&&ie++;return ie});for(let O of y)p=Math.max(p,O);let h=y.findIndex(O=>O>0&&O*2>=p);h<0&&(h=u.length),y.slice(0,h).filter(O=>O>0).length>0&&o.push(N("LINES_SKIPPED",{count:h})),g(h<u.length?u[h]:[]),u.splice(0,h+1)}for(let p of u)w(p)};return{header(u){g(u)},row(u){if(c!==null&&s===null){c.push(u),c.length>=Me&&d();return}c!==null&&d(),w(u)},get rowCount(){return f+(c?.length??0)},note(u,p){o.push(N(u,p))},finish(u){return c!==null&&d(),Qe({header:s??[],columns:l,rowCount:f,notes:o,counts:a,hints:r,limits:n,types:u})}}}function Ke(e,t,n){let r=[],o=new Set,a=0,l=(i,f,c)=>{a++,a<=Z&&n.push(N("COLUMN_RENAMED",{position:i,from:f,to:c}))},s=i=>{let f=i;for(let c=2;o.has(f.toLowerCase());c++)f=`${i} (${c})`;return f};for(let i=0;i<t;i++){let f=i<e.length?e[i]:null,c;f===null||f===""?(c=s(`Column ${i+1}`),i<e.length&&l(i+1,"",c)):(c=s(f),c!==f&&l(i+1,f,c)),o.add(c.toLowerCase()),r.push(c)}return a>Z&&n.push(N("COLUMNS_RENAMED_MORE",{count:a-Z})),r}function Qe({header:e,columns:t,rowCount:n,notes:r,counts:o,hints:a,limits:l,types:s}){let i=[];for(let u=0;u<t.length;u++){if(!(u<e.length&&e[u]!==null&&e[u]!=="")&&t[u].every(y=>y===null)){u<e.length&&r.push(N("COLUMN_DROPPED",{position:u+1}));continue}i.push(u)}let f=i.map(u=>u<e.length?e[u]:null),c=Ke(f,i.length,r),m=i.map(u=>t[u]),w=i.filter(u=>u>=e.length).length;o.extraRows>0&&w>0&&r.push(N("COLUMNS_ADDED",{rows:o.extraRows,count:w})),o.empty>0&&r.push(N("ROWS_EMPTY",{count:o.empty})),o.cut>0&&r.push(N("TEXT_CUT",{count:o.cut,max:l.textLength})),o.removed>0&&r.push(N("CHARACTERS_REMOVED",{count:o.removed}));let g={columns:c,types:[],data:[],raw:m,detected:[],rowCount:n,notes:r,hints:a},d=m.map(u=>We(u,a));return g.detected=d.map(u=>u.type),d.forEach((u,p)=>{u.ambiguousOrder&&r.push(N("DATE_ORDER",{column:c[p],order:u.dateOrder}))}),qe(g,s,d)}function qe(e,t,n){let r=Ze(e.columns,t),o=e.notes.filter(s=>s.code!=="VALUES_NOT_CONVERTED"),a=[],l=[];for(let s=0;s<e.columns.length;s++){let i=n?.[s],f=r[s]??e.detected[s],c=i&&i.type===f?{...e.hints,...i.decimal?{decimal:i.decimal}:{},...i.dateOrder?{dateOrder:i.dateOrder}:{}}:e.hints;if(e.types[s]===f&&e.data[s]!==void 0){a.push(f),l.push(e.data[s]);let g=e.notes.find(d=>d.code==="VALUES_NOT_CONVERTED"&&d.params.column===e.columns[s]);g&&o.push(g);continue}let{values:m,failed:w}=He(e.raw[s],f,c);w>0&&o.push(N("VALUES_NOT_CONVERTED",{column:e.columns[s],type:f,count:w})),a.push(f),l.push(m)}return{...e,types:a,data:l,notes:o}}function Ze(e,t){let n=new Array(e.length).fill(void 0);if(Array.isArray(t))for(let r=0;r<e.length;r++)U.includes(t[r])&&(n[r]=t[r]);else if(t&&typeof t=="object"){let r=new Map;for(let o of Object.keys(t))U.includes(t[o])&&r.set(o.toLowerCase(),t[o]);e.forEach((o,a)=>{n[a]=r.get(o.toLowerCase())})}return n}var U,It,Z,Me,V,v,$e,fe,B,Ue,je,Ve,ve,de,me,Fe,ze,I,he,Ye,Je,L=_(()=>{$();q();le();U=Object.freeze(["string","number","date","boolean"]),It=Object.freeze(["ENCODING","SEPARATOR","LINES_SKIPPED","COLUMN_RENAMED","COLUMNS_RENAMED_MORE","COLUMN_DROPPED","COLUMNS_ADDED","ROWS_EMPTY","TEXT_CUT","CHARACTERS_REMOVED","DATE_ORDER","VALUES_NOT_CONVERTED","JSON_PROPERTY","JSON_FLATTENED","SHEET","USED_RANGE","ERROR_CELLS"]),Z=20,Me=50,V=16384,v=/[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f-\u009f\u00ad\u061c\u180e\u200b\u200e-\u200f\u202a-\u202e\u2060-\u2064\u2066-\u206f\ufeff\u{E0000}-\u{E007F}]|[\ud800-\udbff](?![\udc00-\udfff])|(?<![\ud800-\udbff])[\udc00-\udfff]/gu,$e=new RegExp(v.source,"u"),fe=/[\t\r\n\u2028\u2029]+/g;B=()=>new Promise(e=>setTimeout(e,0));Ue=/^[+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:[eE][+-]?\d+)?$/,je=/^[+-]?(?:\d{1,3}(?:\.\d{3})+|\d+)(?:,\d+)?$/,Ve=/^[+-]?0\d/,ve=15,de=/^(\d{1,2})\.(\d{1,2})\.(\d{4})(?:[ T,]+(\d{1,2}):(\d{2})(?::(\d{2}))?)?$/,me=/^(\d{1,2})\/(\d{1,2})\/(\d{4})(?:[ T,]+(\d{1,2}):(\d{2})(?::(\d{2}))?)?$/,Fe=new Set(["true","wahr"]),ze=new Set(["false","falsch"]),I=e=>String(e).padStart(2,"0");he=864e5,Ye=Date.UTC(1899,11,30);Je={string(e){return typeof e=="string"?e:e instanceof Date?k(e)??void 0:String(e)},number(e,t){if(typeof e=="number")return e;if(typeof e=="boolean")return e?1:0;if(typeof e=="string")return j(e,t.decimal)??j(e,t.decimal===","?".":",")??void 0},date(e,t){if(e instanceof Date)return k(e)??void 0;if(typeof e=="string")return ne(e,t.dateOrder)??void 0;if(typeof e=="number"&&t.serialDates&&e>0&&e<2958466)return k(new Date(Math.round((Ye+e*he)/1e3)*1e3))??void 0},boolean(e){if(typeof e=="boolean")return e;if(typeof e=="number")return e===1?!0:e===0?!1:void 0;if(typeof e=="string"){let t=pe(e);if(t!==null)return t;let n=e.toLowerCase();if(n==="yes"||n==="1")return!0;if(n==="no"||n==="0")return!1}}}});function tt(e){let t=Math.min(e.length,4096)&-2;if(t<8)return!1;let n=0;for(let r=1;r<t;r+=2)e[r]===0&&e[r-1]!==0&&n++;return n>t/2*.9}function J(e,t){for(let s of et)if(Y(e,s.bytes))throw T("WRONG_TYPE",t,`this is ${s.what}, not text.`);let n,r=0;Y(e,[239,187,191])?(n="utf-8",r=3):Y(e,[255,254])?(n="utf-16le",r=2):Y(e,[254,255])?(n="utf-16be",r=2):tt(e)&&(n="utf-16le");let o=e.subarray(r),a;if(n)a=new TextDecoder(n,{fatal:!1,ignoreBOM:!0}).decode(o);else try{a=new TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0}).decode(o),n="utf-8"}catch{a=new TextDecoder("windows-1252",{ignoreBOM:!0}).decode(o),n="windows-1252"}let l=a.indexOf("\0");if(l!==-1&&l<a.length-1)throw T("BINARY",t,"this file holds binary data, not text.");return{text:l===-1?a:a.slice(0,l),encoding:nt[n]}}var et,Y,nt,re=_(()=>{L();et=[{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"}],Y=(e,t)=>t.every((n,r)=>e[r]===n);nt={"utf-8":"UTF-8","utf-16le":"UTF-16 (little endian)","utf-16be":"UTF-16 (big endian)","windows-1252":"Windows-1252"}});var Ee={};ae(Ee,{detectSeparator:()=>ge,read:()=>lt,splitRows:()=>oe});function oe(e,t,n,r,o={}){let a=t.charCodeAt(0),l=e.length,s=n,i=o.line??1;for(;s<l;){let f=i,c=[];for(;;){let m;if(e.charCodeAt(s)===we){let g=i,d=s+1,u="";for(;;){let y=e.indexOf('"',d);if(y===-1){if(o.sample)return l;throw T("UNCLOSED_QUOTE",o.file??"file",`the quote that opens a value in line ${g} is never closed.`,{line:g})}if(i+=it(e,d,y),u+=e.slice(d,y),e.charCodeAt(y+1)===we){u+='"',d=y+2;continue}s=y+1;break}let p=s;for(;p<l;){let y=e.charCodeAt(p);if(y===a||y===D||y===H)break;p++}m=p>s?u+e.slice(s,p):u,s=p}else{let g=s;for(;g<l;){let d=e.charCodeAt(g);if(d===a||d===D||d===H)break;g++}m=e.slice(s,g),s=g}if(c.push(m),o.maxFields!==void 0&&c.length>o.maxFields)throw C("columns",c.length,o.maxFields,o.file??"file","columns");let w=s<l?e.charCodeAt(s):-1;if(w===a){s++;continue}w===H?(s+=e.charCodeAt(s+1)===D?2:1,i++):w===D&&(s++,i++);break}if(r(c,f))break}return o.line=i,s}function it(e,t,n){let r=0;for(let o=t;o<n;o++){let a=e.charCodeAt(o);(a===D||a===H&&e.charCodeAt(o+1)!==D)&&r++}return r}function ge(e,t,n){let r=e.slice(t,t+ot),o={sep:n??",",score:-1,width:1},a=n?[n,...ye.filter(l=>l!==n)]:ye;for(let l of a){let s=new Map,i=0;oe(r,l,0,m=>(m.length===1&&m[0]===""||(s.set(m.length,(s.get(m.length)??0)+1),i++),i>=st),{sample:!0});let f=1,c=0;for(let[m,w]of s)m>1&&(w>c||w===c&&m>f)&&(f=m,c=w);f>1&&(c>o.score||c===o.score&&f>o.width)&&(o={sep:l,score:c,width:f})}return o.sep}function at(e){if(!e)return".";try{return new Intl.NumberFormat(e).formatToParts(1.5).find(n=>n.type==="decimal")?.value===","?",":"."}catch{return"."}}async function lt(e,t){let n=z(t),r=x(e,n);n.signal?.throwIfAborted();let o=await F(e,n.limits,r);n.onProgress?.({phase:"read",done:o.length,total:o.length});let{text:a,encoding:l}=J(o,r);n.signal?.throwIfAborted();let s=0,i=typeof n.separator=="string"&&n.separator.length===1?n.separator:null,f=/^sep=(.)\r?\n/i.exec(a.slice(0,8));f&&(s=f[0].length,i??=f[1]),i??=ge(a,s,/\.tsv$/i.test(r)?" ":void 0);let c=G({file:r,limits:n.limits,locale:n.locale,hints:{decimal:i===";"?",":at(n.locale)}});c.note("ENCODING",{encoding:l}),c.note("SEPARATOR",{separator:i,name:rt[i]??`"${i}"`});let m=s,w={file:r,line:s>0?2:1,maxFields:n.limits.columns};for(;m<a.length;){let g=0;m=oe(a,i,m,d=>(c.row(d),++g>=V),w),n.onProgress?.({phase:"parse",done:m,total:a.length}),m<a.length&&(await B(),n.signal?.throwIfAborted())}return n.signal?.throwIfAborted(),c.finish(n.types)}var ye,rt,ot,st,we,D,H,Ae=_(()=>{L();re();ye=[",",";"," ","|"],rt={",":"commas",";":"semicolons"," ":"tabs","|":"vertical bars"},ot=65536,st=100,we=34,D=10,H=13});var be={};ae(be,{read:()=>ut});function Te(e){if(Array.isArray(e)){let t=e.find(n=>n!=null);return t===void 0?{kind:"objects",rows:[]}:Array.isArray(t)&&e.every(n=>n===null||Array.isArray(n))?{kind:"arrays",rows:e}:S(t)&&e.every(n=>n===null||S(n))?{kind:"objects",rows:e}:null}return S(e)?Array.isArray(e.columns)&&Array.isArray(e.data)&&e.data.every(t=>Array.isArray(t))?{kind:"columnar",columns:e.columns,data:e.data}:Array.isArray(e.columns)&&Array.isArray(e.rows)?{kind:e.rows.every(t=>t===null||Array.isArray(t))?"header":"objects",columns:e.columns,rows:e.rows}:null:null}function ct(e){let t=Te(e);if(t)return{shape:t,property:null};if(!S(e))return null;let n=null;for(let r of Object.keys(e)){let o=Te(e[r]);if(o&&(o.kind!=="objects"||o.rows.length>0)){let a=o.rows?.length??o.data?.[0]?.length??0;(!n||a>n.size)&&(n={shape:o,property:r,size:a})}}return n}function Oe(e,t,n,r,o,a){for(let l of Object.keys(e)){let s=t+l,i=e[l];S(i)&&n<Ne&&Object.keys(i).length>0?Oe(i,`${s}.`,n+1,r,o,a):r.has(s)||(n>0&&(a.nested??=s),o(),r.set(s,r.size))}}function _e(e,t,n,r,o){for(let a of Object.keys(e)){let l=t+a,s=e[a];if(S(s)&&n<Ne&&Object.keys(s).length>0)_e(s,`${l}.`,n+1,r,o);else{let i=r.get(l);i!==void 0&&(o[i]=s)}}}async function ut(e,t){let n=z(t),r=x(e,n);n.signal?.throwIfAborted();let o=await F(e,n.limits,r);n.onProgress?.({phase:"read",done:o.length,total:o.length});let{text:a}=J(o,r),l;try{l=JSON.parse(a)}catch(d){throw T("INVALID_JSON",r,`this is no valid JSON (${String(d.message).slice(0,200)}).`)}n.signal?.throwIfAborted();let s=ct(l);if(!s)throw T("NO_TABLE",r,"no table found: the JSON must be an array of objects, an array of arrays, { columns, rows } or { columns, data }, or an object with one of these under a property.");let{shape:i,property:f}=s,c=G({file:r,limits:n.limits,locale:n.locale,hints:{textNumbers:!1}});f!==null&&c.note("JSON_PROPERTY",{property:f});let m=n.limits,w=0,g=async d=>{++w%V===0&&(n.onProgress?.({phase:"parse",done:w,total:d}),await B(),n.signal?.throwIfAborted())};if(i.kind==="columnar"){let d=i.data[0]?.length??0;if(i.columns.length!==i.data.length)throw T("NO_TABLE",r,`"columns" names ${i.columns.length} columns, but "data" holds ${i.data.length} arrays.`);if(!i.data.every(u=>u.length===d))throw T("NO_TABLE",r,'the arrays in "data" have different lengths.');A("columns",i.columns.length,m.columns,r,"columns"),A("rows",d,m.rows,r,"rows"),c.header(i.columns);for(let u=0;u<d;u++)c.row(i.data.map(p=>p[u])),await g(d)}else if(i.kind==="arrays"||i.kind==="header"){let d=i.rows;A("rows",d.length,m.rows+1,r,"rows");let u=0;for(i.kind==="header"?c.header(i.columns):(c.header(d[0]??[]),u=1);u<d.length;u++)c.row(d[u]??[]),await g(d.length)}else{let d=i.rows;A("rows",d.length,m.rows,r,"rows");let u=new Map;if(Array.isArray(i.columns))for(let h of i.columns)typeof h=="string"&&!u.has(h)&&u.set(h,u.size);let p=()=>A("columns",u.size+1,m.columns,r,"columns"),y={nested:null};for(let h of d)h&&Oe(h,"",0,u,p,y);y.nested&&c.note("JSON_FLATTENED",{example:y.nested}),c.header([...u.keys()]);for(let h of d){let b=new Array(u.size).fill(null);h&&_e(h,"",0,u,b),c.row(b),await g(d.length)}}return n.signal?.throwIfAborted(),c.finish(n.types)}var Ne,S,xe=_(()=>{L();re();Ne=4,S=e=>e!==null&&typeof e=="object"&&!Array.isArray(e)});$();q();L();var W=1,ft=/^[a-z0-9][a-z0-9-]{0,63}$/,dt=/^\.[a-z0-9]{1,16}$/,mt=/^[a-z0-9][a-z0-9!#$&^_.+-]*\/[a-z0-9][a-z0-9!#$&^_.+-]*$/,De=["reader"];function X(e){let t=e,n=r=>{throw new E("INVALID_ARGUMENT",`plugin ${typeof t?.name=="string"?`"${t.name.slice(0,64)}" `:""}${r}`)};return(t===null||typeof t!="object"||Array.isArray(t))&&n("must be an object"),t.apiVersion!==W&&n(`uses plugin API version ${JSON.stringify(t.apiVersion)}; this pivotkit-core supports version ${W}. Use a version of the plugin made for API ${W}, or update pivotkit.`),De.includes(t.kind)||n(`has kind ${JSON.stringify(t.kind)}; API ${W} knows ${De.map(r=>`"${r}"`).join(", ")}`),(typeof t.name!="string"||!ft.test(t.name))&&n('needs a name of lower-case letters, digits and "-"'),(typeof t.label!="string"||t.label.trim()===""||t.label.length>100)&&n("needs a label of 1 to 100 characters"),(!Array.isArray(t.accept)||t.accept.length===0||!t.accept.every(r=>typeof r=="string"&&(dt.test(r)||mt.test(r))))&&n('needs accept: file name extensions (".xlsx") and media types ("text/csv"), in lower case'),typeof t.load!="function"&&n("needs load(): a function that imports the reader"),Object.freeze({apiVersion:t.apiVersion,kind:t.kind,name:t.name,label:t.label,accept:[...t.accept],load:t.load})}var pt=X({apiVersion:1,kind:"reader",name:"csv",label:"CSV or text",accept:[".csv",".tsv",".txt",".tab","text/csv","text/tab-separated-values","text/plain"],load:()=>Promise.resolve().then(()=>(Ae(),Ee))}),ht=X({apiVersion:1,kind:"reader",name:"json",label:"JSON",accept:[".json","application/json"],load:()=>Promise.resolve().then(()=>(xe(),be))}),yt=Object.freeze([pt,ht]);function wt(e,t=[]){for(let s of t)X(s);let n=[...t,...yt],r=typeof e?.name=="string"?e.name.toLowerCase():"",o=r.lastIndexOf("."),a=o===-1?"":r.slice(o);if(a){let s=n.find(i=>i.accept.includes(a));if(s)return s}let l=typeof e?.type=="string"?e.type.toLowerCase().split(";")[0].trim():"";return l?n.find(s=>s.accept.includes(l)):void 0}var se=new WeakMap;async function gt(e){let t=X(e),n=se.get(e);return n||(n=Promise.resolve(t.load()).then(r=>{let o=r,a=o?.default&&typeof o.read!="function"?o.default:o;if(!a||typeof a.read!="function")throw new E("INVALID_ARGUMENT",`plugin "${t.name}": its load() must give a module with read(file, options)`);if(a.sheets!==void 0&&typeof a.sheets!="function")throw new E("INVALID_ARGUMENT",`plugin "${t.name}": sheets must be a function when given`);return a}),n.catch(()=>se.delete(e)),se.set(e,n)),n}async function Se(e,t={}){let n=x(e,t),r=P(t);if(e&&typeof e=="object"&&typeof e.size=="number"&&e.size>r.fileBytes)throw C("fileBytes",e.size,r.fileBytes,n,"bytes");let o=t.reader??wt(e,t.plugins);if(!o)throw T("NO_READER",n,"no reader for this kind of file.");let a=await gt(o),l={...t};return delete l.plugins,delete l.reader,Et(await a.read(e,l),o.name)}function Et(e,t){let n=o=>{throw new E("INVALID_ARGUMENT",`plugin "${t}": read() must return a table of pivotkit-core/import (createTable().finish()); ${o}`)};(!e||typeof e!="object"||!Array.isArray(e.columns)||!Array.isArray(e.types)||!Array.isArray(e.data)||!Array.isArray(e.notes))&&n("it needs columns, types, data and notes");let r=e.data[0]?.length??0;return(e.types.length!==e.columns.length||e.data.length!==e.columns.length)&&n("columns, types and data differ in length"),e.columns.every(o=>typeof o=="string")||n("a column name is no string"),e.types.every(o=>U.includes(o))||n("a type is none of string, number, date, boolean"),e.data.every(o=>Array.isArray(o)&&o.length===r)||n("the columns differ in length"),e}var M=globalThis;M.onmessage=async e=>{let{file:t,options:n}=e.data??{};try{let r=await Se(t,{...n,plugins:[],onProgress:o=>M.postMessage({type:"progress",progress:o})});M.postMessage({type:"done",table:r})}catch(r){let o=r;M.postMessage({type:"error",error:{code:typeof o?.code=="string"?o.code:void 0,message:String(o?.message??o),details:o?.details&&typeof o.details=="object"?{...o.details}:{}}})}};M.postMessage({type:"ready"});
|
|
1
|
+
var Re=Object.defineProperty;var _=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(r){throw n=[r],r}};var ae=(e,t)=>{for(var n in t)Re(e,n,{get:t[n],enumerable:!0})};var E,$=_(()=>{E=class extends Error{constructor(t,n,r={}){super(n),this.name="PivotkitError",this.code=t,this.details=r}}});function P(e){let t=e&&e.limits;if(t==null)return K;if(typeof t!="object"||Array.isArray(t))throw new E("INVALID_OPTION","options.limits must be an object");let n={...K};for(let r of Object.keys(t)){let o=t[r];if(!Object.hasOwn(K,r))throw new E("INVALID_OPTION",`unknown limit "${r}"`);if(!Number.isInteger(o)||o<1)throw new E("INVALID_OPTION",`limits.${r} must be a whole number of 1 or more`);if(Object.hasOwn(Q,r)&&o>Q[r])throw new E("INVALID_OPTION",`limits.${r} must be at most ${Q[r]}`);n[r]=o}return Object.freeze(n)}var K,Q,Tt,_t,q=_(()=>{$();K=Object.freeze({json:5e6,name:256,axisFields:8,values:16,filters:128,items:1e5,derived:64,sort:64,collapsed:1e4,topCount:1e6,textValue:1e3,srcParams:16,srcParamLength:256,rows:1e6,groups:5e5,pivotCells:2e6,work:1e8,cells:2e6,cacheEntries:16,fileBytes:104857600,columns:1e3,importCells:1e7,textLength:32767,archiveEntries:1e4,unpackedBytes:524288e3}),Q=Object.freeze({groups:2**27}),Tt=Object.freeze({filters:50,json:1e6}),_t=Object.freeze({perCode:100,total:1e3})});function Le(e,t,n,r=0,o=0,a=0,l=0){if(e>=100)return Date.UTC(e,t-1,n,r,o,a,l);let s=new Date(Date.UTC(2e3,t-1,n,r,o,a,l));return s.setUTCFullYear(e),s.getTime()}function I(e){let t=Ce.exec(e.trim());if(!t)return null;let n=t[8],r=+t[1],o=+t[2],a=+t[3],l=t[4]===void 0?0:+t[4],s=t[5]===void 0?0:+t[5],i=t[6]===void 0?0:+t[6],f=t[7];if(o<1||o>12||a<1||l>23||s>59||i>59)return null;let c=Le(r,o,a,l,s,i,f?Math.round(+`0.${f}`*1e3):0);if(new Date(c).getUTCDate()!==a)return null;let m=null;if(n)if(n==="Z")m=0;else{let w=n.slice(1).replace(":",""),g=Number(w.slice(0,2)),d=Number(w.slice(2)||0);if(g>23||d>59)return null;m=(n[0]==="-"?-1:1)*(g*60+d)}return{ms:c,offsetMinutes:m}}var Ce,le=_(()=>{Ce=/^(\d{4})-(\d{2})-(\d{2})(?:[T ](\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{1,9}))?)?(Z|[+-]\d{2}(?::?\d{2})?)?)?$/});function N(e,t,n,r={}){return new E("INVALID_FILE",`"${t}": ${n}`,{reason:e,file:t,...r})}function C(e,t,n,r,o){let a=l=>l.toLocaleString("en-US");return new E("LIMIT_EXCEEDED",`"${r}" has more than ${a(n)} ${o} (limits.${e}): load a smaller extract of it, or a host can raise this limit`,{limit:e,value:t,max:n,file:r})}function A(e,t,n,r,o){if(t>n)throw C(e,t,n,r,o)}function x(e,t){let n=e&&typeof e=="object"&&typeof e.name=="string"?e.name:"",r=ke(String(t?.name??n??"")).slice(0,256);return(new RegExp("\\p{Surrogate}$","u").test(r)?r.slice(0,-1):r)||"file"}async function F(e,t,n){if(e instanceof Uint8Array)return A("fileBytes",e.byteLength,t.fileBytes,n,"bytes"),e;if(e instanceof ArrayBuffer)return A("fileBytes",e.byteLength,t.fileBytes,n,"bytes"),new Uint8Array(e);if(typeof Blob<"u"&&e instanceof Blob)return A("fileBytes",e.size,t.fileBytes,n,"bytes"),new Uint8Array(await e.arrayBuffer());throw new E("INVALID_ARGUMENT","read(file): file must be a File, a Blob, an ArrayBuffer or a Uint8Array")}function z(e){let t=e??{};if(typeof t!="object")throw new E("INVALID_OPTION","read(file, options): options must be an object");return{...t,limits:P(t)}}function Pe(e,t){let n=r=>typeof r=="number"?r.toLocaleString("en-US"):r;switch(e){case"ENCODING":return`Read as ${t.encoding}.`;case"SEPARATOR":return`Values separated by ${t.name}.`;case"LINES_SKIPPED":return`${n(t.count)} line(s) above the column names were skipped (a title block).`;case"COLUMN_RENAMED":return t.from===""?`Column ${n(t.position)} has no name; it is named "${t.to}".`:`Column "${t.from}" is named "${t.to}".`;case"COLUMNS_RENAMED_MORE":return`${n(t.count)} more columns were renamed.`;case"COLUMN_DROPPED":return`Column ${n(t.position)} has no name and no values and was left out.`;case"COLUMNS_ADDED":return`${n(t.rows)} row(s) have more values than there are column names; the extra values are in ${n(t.count)} column(s) named "Column \u2026".`;case"ROWS_EMPTY":return`${n(t.count)} empty row(s) were left out.`;case"TEXT_CUT":return`${n(t.count)} value(s) longer than ${n(t.max)} characters were cut.`;case"CHARACTERS_REMOVED":return`Control or text direction characters were removed from ${n(t.count)} value(s).`;case"DATE_ORDER":return`Dates in "${t.column}" were read as ${t.order==="mdy"?"month/day/year":"day/month/year"}; the values fit both.`;case"VALUES_NOT_CONVERTED":return`${n(t.count)} value(s) in "${t.column}" are no ${t.type} and are empty.`;case"JSON_PROPERTY":return`The rows were read from "${t.property}".`;case"JSON_FLATTENED":return`Nested values became columns named with a dot ("${t.example}").`;case"SHEET":return Number(t.count)>1?`Read sheet "${t.sheet}" of ${n(t.count)} sheets.`:`Read sheet "${t.sheet}".`;case"USED_RANGE":return`The sheet's used range reaches row ${n(t.usedRow)}; values end at row ${n(t.lastRow)}, the empty rows below were skipped.`;case"ERROR_CELLS":return`${n(t.count)} cell(s) hold an Excel error (such as #N/A) and are empty.`;default:return e}}function O(e,t={}){let n={};for(let[r,o]of Object.entries(t))n[r]=typeof o=="string"?o.replace(v,"").slice(0,256):o;return{code:e,params:n,message:Pe(e,n)}}function ke(e){return e.replace(v,"").replace(fe," ").trim()}function ee(e,t,n,r,o,a){if(t<1||t>12||n<1||r>23||o>59||a>59)return null;let l=new Date(Date.UTC(2e3,t-1,n));if(l.setUTCFullYear(e),l.getUTCDate()!==n)return null;let s=`${String(e).padStart(4,"0")}-${R(t)}-${R(n)}`;return r===0&&o===0&&a===0?s:`${s}T${R(r)}:${R(o)}:${R(a)}`}function ce(e){return[+e[1],+e[2],+e[3],e[4]===void 0?0:+e[4],e[5]===void 0?0:+e[5],e[6]===void 0?0:+e[6]]}function ne(e,t){if(e.length>40)return null;if(I(e)!==null)return e;let n=de.exec(e);if(n){let[r,o,a,l,s,i]=ce(n);return ee(a,o,r,l,s,i)}if(n=me.exec(e),n){let[r,o,a,l,s,i]=ce(n);return t==="mdy"?ee(a,r,o,l,s,i):ee(a,o,r,l,s,i)}return null}function Be(e){let t=0;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);r>=48&&r<=57&&t++}return t}function j(e,t){if(e.length>40||!(t===","?je:Ue).test(e))return null;let n=Number(t===","?e.replaceAll(".","").replace(",","."):e);return Number.isFinite(n)?n:null}function Ge(e){return Ve.test(e)?!0:/^[+-]?\d+$/.test(e)&&Be(e)>ve}function pe(e){let t=e.toLowerCase();return Fe.has(t)?!0:ze.has(t)?!1:null}function k(e){let t=e.getTime();if(!Number.isFinite(t)||Math.abs(t)>864e13)return null;let n=Math.round(t/1e3)*1e3;Math.abs(t-n)<=2&&(t=n);let r=new Date(t).toISOString();return t%he===0?r.slice(0,10):t%1e3===0?r.slice(0,19):r.slice(0,23)}function Je(e,t,n){if(t==="string"&&e.every(l=>l===null||typeof l=="string"))return{values:e,failed:0};let r=He[t],o=new Array(e.length),a=0;for(let l=0;l<e.length;l++){let s=e[l];if(s===null){o[l]=null;continue}let i=r(s,n);i===void 0?(o[l]=null,a++):o[l]=i}return{values:o,failed:a}}function We(e,t){let n=0,r=0,o=0,a=0;for(let s of e)s!==null&&(typeof s=="number"?n++:typeof s=="boolean"?r++:s instanceof Date?o++:a++);let l=n+r+o+a;return l===0?{type:"string"}:a===0?n===l?{type:"number"}:r===l?{type:"boolean"}:o===l?{type:"date"}:{type:"string"}:a!==l?n===0&&r===0&&e.every(s=>s===null||s instanceof Date||typeof s=="string"&&I(s)!==null)?{type:"date"}:{type:"string"}:t.textNumbers===!1?{type:e.every(s=>s===null||I(s)!==null)?"date":"string"}:Xe(e,t)}function Xe(e,t){let n=!0,r=!0,o=!0,a=!0,l=!1,s=!1,i=!0,f=!0;for(let c of e)if(c!==null){if(n&&pe(c)===null&&(n=!1),r&&I(c)===null&&(r=!1),o&&(!de.test(c)||ne(c,"dmy")===null)&&(o=!1),a){let m=c.length<=40?me.exec(c):null;m?(+m[1]>12&&(l=!0),+m[2]>12&&(s=!0)):a=!1}if((i||f)&&(Ge(c)?(i=!1,f=!1):(i&&j(c,".")===null&&(i=!1),f&&j(c,",")===null&&(f=!1))),!n&&!r&&!o&&!a&&!i&&!f)return{type:"string"}}if(n)return{type:"boolean"};if(r||o)return{type:"date"};if(a&&!(l&&s)){let c=l?"dmy":s?"mdy":t.dateOrder;if(e.every(w=>w===null||ne(w,c)!==null))return{type:"date",dateOrder:c,ambiguousOrder:!l&&!s}}return i&&f?{type:"number",decimal:t.decimal}:i?{type:"number",decimal:"."}:f?{type:"number",decimal:","}:{type:"string"}}function te(e,t,n){if(e==null)return null;switch(typeof e){case"string":return ue(e,t,n);case"number":return Number.isFinite(e)?e:null;case"boolean":return e;case"bigint":return Number.isSafeInteger(Number(e))?Number(e):String(e);case"object":if(e instanceof Date)return Number.isNaN(e.getTime())?null:e;try{return ue(JSON.stringify(e)??"",t,n)}catch{return null}default:return null}}function ue(e,t,n){let r=e;return $e.test(r)&&(r=r.replace(v,""),n.removed++),r=r.replace(fe," ").trim(),r.length>t&&(r=r.slice(0,t),n.cut++),r===""?null:r}function G(e){let{file:t,limits:n}=e,r={decimal:e.hints?.decimal??".",dateOrder:e.hints?.dateOrder??(!e.locale||/^en-US$/i.test(e.locale)?"mdy":"dmy"),...e.hints?.serialDates?{serialDates:!0}:{},...e.hints?.textNumbers===!1?{textNumbers:!1}:{}},o=[],a={removed:0,cut:0,empty:0,extraRows:0},l=[],s=null,i=0,f=0,c=[],m=()=>{A("columns",l.length+1,n.columns,t,"columns"),l.push(new Array(f).fill(null))},w=u=>{let p=0,y=new Array(u.length);for(let h=0;h<u.length;h++){let b=te(u[h],n.textLength,a);y[h]=b,b!==null&&(p=h+1)}if(p===0){a.empty++;return}for(p>i&&a.extraRows++,p>l.length&&(A("columns",p,n.columns,t,"columns"),A("importCells",(f+1)*p,n.importCells,t,"values (rows x columns)"));l.length<p;)m();f++,A("rows",f,n.rows,t,"rows"),A("importCells",f*l.length,n.importCells,t,"values (rows x columns)");for(let h=0;h<l.length;h++)l[h].push(h<p?y[h]:null)},g=u=>{s=u.map(p=>{let y=te(p,n.name,{removed:0,cut:0});return y===null?null:y instanceof Date?k(y):String(y)}),i=s.length,A("columns",i,n.columns,t,"columns");for(let p=0;p<i;p++)l.push([])},d=()=>{let u=c??[];if(c=null,s===null){let p=0,y=u.map(T=>{let ie=0;for(let Ie of T)te(Ie,n.textLength,{removed:0,cut:0})!==null&&ie++;return ie});for(let T of y)p=Math.max(p,T);let h=y.findIndex(T=>T>0&&T*2>=p);h<0&&(h=u.length),y.slice(0,h).filter(T=>T>0).length>0&&o.push(O("LINES_SKIPPED",{count:h})),g(h<u.length?u[h]:[]),u.splice(0,h+1)}for(let p of u)w(p)};return{header(u){g(u)},row(u){if(c!==null&&s===null){c.push(u),c.length>=Me&&d();return}c!==null&&d(),w(u)},get rowCount(){return f+(c?.length??0)},note(u,p){o.push(O(u,p))},finish(u){return c!==null&&d(),Qe({header:s??[],columns:l,rowCount:f,notes:o,counts:a,hints:r,limits:n,types:u})}}}function Ke(e,t,n){let r=[],o=new Set,a=0,l=(i,f,c)=>{a++,a<=Z&&n.push(O("COLUMN_RENAMED",{position:i,from:f,to:c}))},s=i=>{let f=i;for(let c=2;o.has(f.toLowerCase());c++)f=`${i} (${c})`;return f};for(let i=0;i<t;i++){let f=i<e.length?e[i]:null,c;f===null||f===""?(c=s(`Column ${i+1}`),i<e.length&&l(i+1,"",c)):(c=s(f),c!==f&&l(i+1,f,c)),o.add(c.toLowerCase()),r.push(c)}return a>Z&&n.push(O("COLUMNS_RENAMED_MORE",{count:a-Z})),r}function Qe({header:e,columns:t,rowCount:n,notes:r,counts:o,hints:a,limits:l,types:s}){let i=[];for(let u=0;u<t.length;u++){if(!(u<e.length&&e[u]!==null&&e[u]!=="")&&t[u].every(y=>y===null)){u<e.length&&r.push(O("COLUMN_DROPPED",{position:u+1}));continue}i.push(u)}let f=i.map(u=>u<e.length?e[u]:null),c=Ke(f,i.length,r),m=i.map(u=>t[u]),w=i.filter(u=>u>=e.length).length;o.extraRows>0&&w>0&&r.push(O("COLUMNS_ADDED",{rows:o.extraRows,count:w})),o.empty>0&&r.push(O("ROWS_EMPTY",{count:o.empty})),o.cut>0&&r.push(O("TEXT_CUT",{count:o.cut,max:l.textLength})),o.removed>0&&r.push(O("CHARACTERS_REMOVED",{count:o.removed}));let g={columns:c,types:[],data:[],raw:m,detected:[],rowCount:n,notes:r,hints:a},d=m.map(u=>We(u,a));return g.detected=d.map(u=>u.type),d.forEach((u,p)=>{u.ambiguousOrder&&r.push(O("DATE_ORDER",{column:c[p],order:u.dateOrder}))}),qe(g,s,d)}function qe(e,t,n){let r=Ze(e.columns,t),o=e.notes.filter(s=>s.code!=="VALUES_NOT_CONVERTED"),a=[],l=[];for(let s=0;s<e.columns.length;s++){let i=n?.[s],f=r[s]??e.detected[s],c=i&&i.type===f?{...e.hints,...i.decimal?{decimal:i.decimal}:{},...i.dateOrder?{dateOrder:i.dateOrder}:{}}:e.hints;if(e.types[s]===f&&e.data[s]!==void 0){a.push(f),l.push(e.data[s]);let g=e.notes.find(d=>d.code==="VALUES_NOT_CONVERTED"&&d.params.column===e.columns[s]);g&&o.push(g);continue}let{values:m,failed:w}=Je(e.raw[s],f,c);w>0&&o.push(O("VALUES_NOT_CONVERTED",{column:e.columns[s],type:f,count:w})),a.push(f),l.push(m)}return{...e,types:a,data:l,notes:o}}function Ze(e,t){let n=new Array(e.length).fill(void 0);if(Array.isArray(t))for(let r=0;r<e.length;r++)U.includes(t[r])&&(n[r]=t[r]);else if(t&&typeof t=="object"){let r=new Map;for(let o of Object.keys(t))U.includes(t[o])&&r.set(o.toLowerCase(),t[o]);e.forEach((o,a)=>{n[a]=r.get(o.toLowerCase())})}return n}var U,Rt,Z,Me,V,v,$e,fe,B,Ue,je,Ve,ve,de,me,Fe,ze,R,he,Ye,He,L=_(()=>{$();q();le();U=Object.freeze(["string","number","date","boolean"]),Rt=Object.freeze(["ENCODING","SEPARATOR","LINES_SKIPPED","COLUMN_RENAMED","COLUMNS_RENAMED_MORE","COLUMN_DROPPED","COLUMNS_ADDED","ROWS_EMPTY","TEXT_CUT","CHARACTERS_REMOVED","DATE_ORDER","VALUES_NOT_CONVERTED","JSON_PROPERTY","JSON_FLATTENED","SHEET","USED_RANGE","ERROR_CELLS"]),Z=20,Me=50,V=16384,v=/[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f-\u009f\u00ad\u061c\u180e\u200b\u200e-\u200f\u202a-\u202e\u2060-\u2064\u2066-\u206f\ufeff\u{E0000}-\u{E007F}]|[\ud800-\udbff](?![\udc00-\udfff])|(?<![\ud800-\udbff])[\udc00-\udfff]/gu,$e=new RegExp(v.source,"u"),fe=/[\t\r\n\u2028\u2029]+/g;B=()=>new Promise(e=>setTimeout(e,0));Ue=/^[+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:[eE][+-]?\d+)?$/,je=/^[+-]?(?:\d{1,3}(?:\.\d{3})+|\d+)(?:,\d+)?$/,Ve=/^[+-]?0\d/,ve=15,de=/^(\d{1,2})\.(\d{1,2})\.(\d{4})(?:[ T,]+(\d{1,2}):(\d{2})(?::(\d{2}))?)?$/,me=/^(\d{1,2})\/(\d{1,2})\/(\d{4})(?:[ T,]+(\d{1,2}):(\d{2})(?::(\d{2}))?)?$/,Fe=new Set(["true","wahr"]),ze=new Set(["false","falsch"]),R=e=>String(e).padStart(2,"0");he=864e5,Ye=Date.UTC(1899,11,30);He={string(e){return typeof e=="string"?e:e instanceof Date?k(e)??void 0:String(e)},number(e,t){if(typeof e=="number")return e;if(typeof e=="boolean")return e?1:0;if(typeof e=="string")return j(e,t.decimal)??j(e,t.decimal===","?".":",")??void 0},date(e,t){if(e instanceof Date)return k(e)??void 0;if(typeof e=="string")return ne(e,t.dateOrder)??void 0;if(typeof e=="number"&&t.serialDates&&e>0&&e<2958466)return k(new Date(Math.round((Ye+e*he)/1e3)*1e3))??void 0},boolean(e){if(typeof e=="boolean")return e;if(typeof e=="number")return e===1?!0:e===0?!1:void 0;if(typeof e=="string"){let t=pe(e);if(t!==null)return t;let n=e.toLowerCase();if(n==="yes"||n==="1")return!0;if(n==="no"||n==="0")return!1}}}});function tt(e){let t=Math.min(e.length,4096)&-2;if(t<8)return!1;let n=0;for(let r=1;r<t;r+=2)e[r]===0&&e[r-1]!==0&&n++;return n>t/2*.9}function H(e,t){for(let s of et)if(Y(e,s.bytes))throw N("WRONG_TYPE",t,`this is ${s.what}, not text.`);let n,r=0;Y(e,[239,187,191])?(n="utf-8",r=3):Y(e,[255,254])?(n="utf-16le",r=2):Y(e,[254,255])?(n="utf-16be",r=2):tt(e)&&(n="utf-16le");let o=e.subarray(r),a;if(n)a=new TextDecoder(n,{fatal:!1,ignoreBOM:!0}).decode(o);else try{a=new TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0}).decode(o),n="utf-8"}catch{a=new TextDecoder("windows-1252",{ignoreBOM:!0}).decode(o),n="windows-1252"}let l=a.indexOf("\0");if(l!==-1&&l<a.length-1)throw N("BINARY",t,"this file holds binary data, not text.");return{text:l===-1?a:a.slice(0,l),encoding:nt[n]}}var et,Y,nt,re=_(()=>{L();et=[{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"}],Y=(e,t)=>t.every((n,r)=>e[r]===n);nt={"utf-8":"UTF-8","utf-16le":"UTF-16 (little endian)","utf-16be":"UTF-16 (big endian)","windows-1252":"Windows-1252"}});var Ee={};ae(Ee,{detectSeparator:()=>ge,read:()=>lt,splitRows:()=>oe});function oe(e,t,n,r,o={}){let a=t.charCodeAt(0),l=e.length,s=n,i=o.line??1;for(;s<l;){let f=i,c=[];for(;;){let m;if(e.charCodeAt(s)===we){let g=i,d=s+1,u="";for(;;){let y=e.indexOf('"',d);if(y===-1){if(o.sample)return l;throw N("UNCLOSED_QUOTE",o.file??"file",`the quote that opens a value in line ${g} is never closed.`,{line:g})}if(i+=it(e,d,y),u+=e.slice(d,y),e.charCodeAt(y+1)===we){u+='"',d=y+2;continue}s=y+1;break}let p=s;for(;p<l;){let y=e.charCodeAt(p);if(y===a||y===D||y===J)break;p++}m=p>s?u+e.slice(s,p):u,s=p}else{let g=s;for(;g<l;){let d=e.charCodeAt(g);if(d===a||d===D||d===J)break;g++}m=e.slice(s,g),s=g}if(c.push(m),o.maxFields!==void 0&&c.length>o.maxFields)throw C("columns",c.length,o.maxFields,o.file??"file","columns");let w=s<l?e.charCodeAt(s):-1;if(w===a){s++;continue}w===J?(s+=e.charCodeAt(s+1)===D?2:1,i++):w===D&&(s++,i++);break}if(r(c,f))break}return o.line=i,s}function it(e,t,n){let r=0;for(let o=t;o<n;o++){let a=e.charCodeAt(o);(a===D||a===J&&e.charCodeAt(o+1)!==D)&&r++}return r}function ge(e,t,n){let r=e.slice(t,t+ot),o={sep:n??",",score:-1,width:1},a=n?[n,...ye.filter(l=>l!==n)]:ye;for(let l of a){let s=new Map,i=0;oe(r,l,0,m=>(m.length===1&&m[0]===""||(s.set(m.length,(s.get(m.length)??0)+1),i++),i>=st),{sample:!0});let f=1,c=0;for(let[m,w]of s)m>1&&(w>c||w===c&&m>f)&&(f=m,c=w);f>1&&(c>o.score||c===o.score&&f>o.width)&&(o={sep:l,score:c,width:f})}return o.sep}function at(e){if(!e)return".";try{return new Intl.NumberFormat(e).formatToParts(1.5).find(n=>n.type==="decimal")?.value===","?",":"."}catch{return"."}}async function lt(e,t){let n=z(t),r=x(e,n);n.signal?.throwIfAborted();let o=await F(e,n.limits,r);n.onProgress?.({phase:"read",done:o.length,total:o.length});let{text:a,encoding:l}=H(o,r);n.signal?.throwIfAborted();let s=0,i=typeof n.separator=="string"&&n.separator.length===1?n.separator:null,f=/^sep=(.)\r?\n/i.exec(a.slice(0,8));f&&(s=f[0].length,i??=f[1]),i??=ge(a,s,/\.tsv$/i.test(r)?" ":void 0);let c=G({file:r,limits:n.limits,locale:n.locale,hints:{decimal:i===";"?",":at(n.locale)}});c.note("ENCODING",{encoding:l}),c.note("SEPARATOR",{separator:i,name:rt[i]??`"${i}"`});let m=s,w={file:r,line:s>0?2:1,maxFields:n.limits.columns};for(;m<a.length;){let g=0;m=oe(a,i,m,d=>(c.row(d),++g>=V),w),n.onProgress?.({phase:"parse",done:m,total:a.length}),m<a.length&&(await B(),n.signal?.throwIfAborted())}return n.signal?.throwIfAborted(),c.finish(n.types)}var ye,rt,ot,st,we,D,J,Ae=_(()=>{L();re();ye=[",",";"," ","|"],rt={",":"commas",";":"semicolons"," ":"tabs","|":"vertical bars"},ot=65536,st=100,we=34,D=10,J=13});var be={};ae(be,{read:()=>ut});function Ne(e){if(Array.isArray(e)){let t=e.find(n=>n!=null);return t===void 0?{kind:"objects",rows:[]}:Array.isArray(t)&&e.every(n=>n===null||Array.isArray(n))?{kind:"arrays",rows:e}:S(t)&&e.every(n=>n===null||S(n))?{kind:"objects",rows:e}:null}return S(e)?Array.isArray(e.columns)&&Array.isArray(e.data)&&e.data.every(t=>Array.isArray(t))?{kind:"columnar",columns:e.columns,data:e.data}:Array.isArray(e.columns)&&Array.isArray(e.rows)?{kind:e.rows.every(t=>t===null||Array.isArray(t))?"header":"objects",columns:e.columns,rows:e.rows}:null:null}function ct(e){let t=Ne(e);if(t)return{shape:t,property:null};if(!S(e))return null;let n=null;for(let r of Object.keys(e)){let o=Ne(e[r]);if(o&&(o.kind!=="objects"||o.rows.length>0)){let a=o.rows?.length??o.data?.[0]?.length??0;(!n||a>n.size)&&(n={shape:o,property:r,size:a})}}return n}function Te(e,t,n,r,o,a){for(let l of Object.keys(e)){let s=t+l,i=e[l];S(i)&&n<Oe&&Object.keys(i).length>0?Te(i,`${s}.`,n+1,r,o,a):r.has(s)||(n>0&&(a.nested??=s),o(),r.set(s,r.size))}}function _e(e,t,n,r,o){for(let a of Object.keys(e)){let l=t+a,s=e[a];if(S(s)&&n<Oe&&Object.keys(s).length>0)_e(s,`${l}.`,n+1,r,o);else{let i=r.get(l);i!==void 0&&(o[i]=s)}}}async function ut(e,t){let n=z(t),r=x(e,n);n.signal?.throwIfAborted();let o=await F(e,n.limits,r);n.onProgress?.({phase:"read",done:o.length,total:o.length});let{text:a}=H(o,r),l;try{l=JSON.parse(a)}catch(d){throw N("INVALID_JSON",r,`this is no valid JSON (${String(d.message).slice(0,200)}).`)}n.signal?.throwIfAborted();let s=ct(l);if(!s)throw N("NO_TABLE",r,"no table found: the JSON must be an array of objects, an array of arrays, { columns, rows } or { columns, data }, or an object with one of these under a property.");let{shape:i,property:f}=s,c=G({file:r,limits:n.limits,locale:n.locale,hints:{textNumbers:!1}});f!==null&&c.note("JSON_PROPERTY",{property:f});let m=n.limits,w=0,g=async d=>{++w%V===0&&(n.onProgress?.({phase:"parse",done:w,total:d}),await B(),n.signal?.throwIfAborted())};if(i.kind==="columnar"){let d=i.data[0]?.length??0;if(i.columns.length!==i.data.length)throw N("NO_TABLE",r,`"columns" names ${i.columns.length} columns, but "data" holds ${i.data.length} arrays.`);if(!i.data.every(u=>u.length===d))throw N("NO_TABLE",r,'the arrays in "data" have different lengths.');A("columns",i.columns.length,m.columns,r,"columns"),A("rows",d,m.rows,r,"rows"),c.header(i.columns);for(let u=0;u<d;u++)c.row(i.data.map(p=>p[u])),await g(d)}else if(i.kind==="arrays"||i.kind==="header"){let d=i.rows;A("rows",d.length,m.rows+1,r,"rows");let u=0;for(i.kind==="header"?c.header(i.columns):(c.header(d[0]??[]),u=1);u<d.length;u++)c.row(d[u]??[]),await g(d.length)}else{let d=i.rows;A("rows",d.length,m.rows,r,"rows");let u=new Map;if(Array.isArray(i.columns))for(let h of i.columns)typeof h=="string"&&!u.has(h)&&u.set(h,u.size);let p=()=>A("columns",u.size+1,m.columns,r,"columns"),y={nested:null};for(let h of d)h&&Te(h,"",0,u,p,y);y.nested&&c.note("JSON_FLATTENED",{example:y.nested}),c.header([...u.keys()]);for(let h of d){let b=new Array(u.size).fill(null);h&&_e(h,"",0,u,b),c.row(b),await g(d.length)}}return n.signal?.throwIfAborted(),c.finish(n.types)}var Oe,S,xe=_(()=>{L();re();Oe=4,S=e=>e!==null&&typeof e=="object"&&!Array.isArray(e)});$();q();L();var W=1,ft=/^[a-z0-9][a-z0-9-]{0,63}$/,dt=/^\.[a-z0-9]{1,16}$/,mt=/^[a-z0-9][a-z0-9!#$&^_.+-]*\/[a-z0-9][a-z0-9!#$&^_.+-]*$/,De=["reader"];function X(e){let t=e,n=r=>{throw new E("INVALID_ARGUMENT",`plugin ${typeof t?.name=="string"?`"${t.name.slice(0,64)}" `:""}${r}`)};return(t===null||typeof t!="object"||Array.isArray(t))&&n("must be an object"),t.apiVersion!==W&&n(`uses plugin API version ${JSON.stringify(t.apiVersion)}; this pivotkit-core supports version ${W}. Use a version of the plugin made for API ${W}, or update pivotkit.`),De.includes(t.kind)||n(`has kind ${JSON.stringify(t.kind)}; API ${W} knows ${De.map(r=>`"${r}"`).join(", ")}`),(typeof t.name!="string"||!ft.test(t.name))&&n('needs a name of lower-case letters, digits and "-"'),(typeof t.label!="string"||t.label.trim()===""||t.label.length>100)&&n("needs a label of 1 to 100 characters"),(!Array.isArray(t.accept)||t.accept.length===0||!t.accept.every(r=>typeof r=="string"&&(dt.test(r)||mt.test(r))))&&n('needs accept: file name extensions (".xlsx") and media types ("text/csv"), in lower case'),typeof t.load!="function"&&n("needs load(): a function that imports the reader"),Object.freeze({apiVersion:t.apiVersion,kind:t.kind,name:t.name,label:t.label,accept:[...t.accept],load:t.load})}var pt=X({apiVersion:1,kind:"reader",name:"csv",label:"CSV or text",accept:[".csv",".tsv",".txt",".tab","text/csv","text/tab-separated-values","text/plain"],load:()=>Promise.resolve().then(()=>(Ae(),Ee))}),ht=X({apiVersion:1,kind:"reader",name:"json",label:"JSON",accept:[".json","application/json"],load:()=>Promise.resolve().then(()=>(xe(),be))}),yt=Object.freeze([pt,ht]);function wt(e,t=[]){for(let s of t)X(s);let n=[...t,...yt],r=typeof e?.name=="string"?e.name.toLowerCase():"",o=r.lastIndexOf("."),a=o===-1?"":r.slice(o);if(a){let s=n.find(i=>i.accept.includes(a));if(s)return s}let l=typeof e?.type=="string"?e.type.toLowerCase().split(";")[0].trim():"";return l?n.find(s=>s.accept.includes(l)):void 0}var se=new WeakMap;async function gt(e){let t=X(e),n=se.get(e);return n||(n=Promise.resolve(t.load()).then(r=>{let o=r,a=o?.default&&typeof o.read!="function"?o.default:o;if(!a||typeof a.read!="function")throw new E("INVALID_ARGUMENT",`plugin "${t.name}": its load() must give a module with read(file, options)`);if(a.sheets!==void 0&&typeof a.sheets!="function")throw new E("INVALID_ARGUMENT",`plugin "${t.name}": sheets must be a function when given`);return a}),n.catch(()=>se.delete(e)),se.set(e,n)),n}async function Se(e,t={}){let n=x(e,t),r=P(t);if(e&&typeof e=="object"&&typeof e.size=="number"&&e.size>r.fileBytes)throw C("fileBytes",e.size,r.fileBytes,n,"bytes");let o=t.reader??wt(e,t.plugins);if(!o)throw N("NO_READER",n,"no reader for this kind of file.");let a=await gt(o),l={...t};return delete l.plugins,delete l.reader,Et(await a.read(e,l),o.name)}function Et(e,t){let n=o=>{throw new E("INVALID_ARGUMENT",`plugin "${t}": read() must return a table of pivotkit-core/import (createTable().finish()); ${o}`)};(!e||typeof e!="object"||!Array.isArray(e.columns)||!Array.isArray(e.types)||!Array.isArray(e.data)||!Array.isArray(e.notes))&&n("it needs columns, types, data and notes");let r=e.data[0]?.length??0;return(e.types.length!==e.columns.length||e.data.length!==e.columns.length)&&n("columns, types and data differ in length"),e.columns.every(o=>typeof o=="string")||n("a column name is no string"),e.types.every(o=>U.includes(o))||n("a type is none of string, number, date, boolean"),e.data.every(o=>Array.isArray(o)&&o.length===r)||n("the columns differ in length"),e}var M=globalThis;M.onmessage=async e=>{let{file:t,options:n}=e.data??{};try{let r=await Se(t,{...n,plugins:[],onProgress:o=>M.postMessage({type:"progress",progress:o})});M.postMessage({type:"done",table:r})}catch(r){let o=r;M.postMessage({type:"error",error:{code:typeof o?.code=="string"?o.code:void 0,message:String(o?.message??o),details:o?.details&&typeof o.details=="object"?{...o.details}:{}}})}};M.postMessage({type:"ready"});
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as o,b as r,c as t,d as e}from"./chunks/chunk-
|
|
1
|
+
import{a as o,b as r,c as t,d as e}from"./chunks/chunk-NXZQI5LC.js";import"./chunks/chunk-7V4PAOK7.js";import"./chunks/chunk-YMLEL3SK.js";import"./chunks/chunk-HFUBAP3D.js";import"./chunks/chunk-OHKPNELV.js";import"./chunks/chunk-CHSIHYYE.js";import"./chunks/chunk-KO3EKDH5.js";import"./chunks/chunk-XR4CMFGN.js";import"./chunks/chunk-5QXN3X2Q.js";import"./chunks/chunk-DCANE7XH.js";e();export{o as EVENTS,t as PivotReportElement,r as TAG,e as define};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pivotkit-element",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "The pivot report builder of pivotkit as the web component <pivot-report>, with its own React: for Angular, PHP and plain HTML pages without React.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "eizedev <oss@eize.dev>",
|
|
@@ -67,9 +67,9 @@
|
|
|
67
67
|
"@dnd-kit/core": "6.3.1",
|
|
68
68
|
"@dnd-kit/sortable": "10.0.0",
|
|
69
69
|
"echarts": "6.1.0",
|
|
70
|
-
"pivotkit-core": "0.
|
|
71
|
-
"pivotkit-react": "0.
|
|
72
|
-
"pivotkit-report": "0.
|
|
70
|
+
"pivotkit-core": "0.6.0",
|
|
71
|
+
"pivotkit-react": "0.6.0",
|
|
72
|
+
"pivotkit-report": "0.2.0",
|
|
73
73
|
"react": "18.3.1",
|
|
74
74
|
"react-dom": "18.3.1"
|
|
75
75
|
},
|
package/types/element.d.ts
CHANGED
|
@@ -107,10 +107,11 @@ export type CellClick = {
|
|
|
107
107
|
export type ExportFile = {
|
|
108
108
|
/**
|
|
109
109
|
* "html": the HTML report; "svg": the chart as SVG; "print": the HTML report before it is printed
|
|
110
|
-
* (respondWith(false) prints nothing); "json": the view file (Views, "Download view"); "
|
|
110
|
+
* (respondWith(false) prints nothing); "json": the view file (Views, "Download view"); "data-csv",
|
|
111
|
+
* "data-json": Export → Source data, every row of the data shown as it is; "copy-table",
|
|
111
112
|
* "copy-json": Export → Copy table, Copy data as JSON; "drill-*": the drill-down panel's Export menu
|
|
112
113
|
*/
|
|
113
|
-
kind: "xlsx" | "csv" | "png" | "html" | "svg" | "print" | "json" | "copy-table" | "copy-json" | "drill-copy" | "drill-json" | "drill-csv" | "drill-xlsx";
|
|
114
|
+
kind: "xlsx" | "csv" | "png" | "html" | "svg" | "print" | "json" | "data-csv" | "data-json" | "copy-table" | "copy-json" | "drill-copy" | "drill-json" | "drill-csv" | "drill-xlsx";
|
|
114
115
|
/**
|
|
115
116
|
* with the extension ("pivot.xlsx"); for a copy the name it would have as a file
|
|
116
117
|
*/
|
|
@@ -138,6 +139,15 @@ export type TemplateSave = {
|
|
|
138
139
|
* where it goes: "user", the user's own views
|
|
139
140
|
*/
|
|
140
141
|
scope: "shared" | "user";
|
|
142
|
+
/**
|
|
143
|
+
* the data
|
|
144
|
+
* shown, as a view file names it (a loaded workbook's sheet in `params.sheet`); null without a source id
|
|
145
|
+
*/
|
|
146
|
+
source: {
|
|
147
|
+
id: string;
|
|
148
|
+
name?: string;
|
|
149
|
+
params?: Record<string, string>;
|
|
150
|
+
} | null;
|
|
141
151
|
/**
|
|
142
152
|
* call it in the listener with the promise of the
|
|
143
153
|
* host's save: "Saved" shows when it resolves, the error's message when it rejects
|
|
@@ -162,6 +172,14 @@ export type TemplatePublish = {
|
|
|
162
172
|
* the user's view to publish as a shared view
|
|
163
173
|
*/
|
|
164
174
|
view: PivotView;
|
|
175
|
+
/**
|
|
176
|
+
* the data shown, as for pivot-template-save
|
|
177
|
+
*/
|
|
178
|
+
source: {
|
|
179
|
+
id: string;
|
|
180
|
+
name?: string;
|
|
181
|
+
params?: Record<string, string>;
|
|
182
|
+
} | null;
|
|
165
183
|
/**
|
|
166
184
|
* as for pivot-template-save: "Published" shows
|
|
167
185
|
* when the promise resolves (the host then sets `templates` with the new shared entry)
|
|
@@ -275,6 +293,9 @@ export declare class PivotReportElement extends Base {
|
|
|
275
293
|
/** The panel with the rows behind a clicked value (default true; attribute drill-down="false"). */
|
|
276
294
|
get drillDown(): boolean;
|
|
277
295
|
set drillDown(value: boolean);
|
|
296
|
+
/** Export → Source data: every row of the data as a CSV or JSON file (default false; boolean attribute export-data). */
|
|
297
|
+
get exportData(): boolean;
|
|
298
|
+
set exportData(value: boolean);
|
|
278
299
|
/** Rows passed to the panel and to pivot-cell-click (default 1000). */
|
|
279
300
|
get drillDownLimit(): number | undefined;
|
|
280
301
|
set drillDownLimit(value: number | undefined);
|
package/types/jsx.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ import type { DetailedHTMLProps, HTMLAttributes } from "react";
|
|
|
8
8
|
import type { PivotReportElement } from "./element.js";
|
|
9
9
|
import type { PivotReportEventMap } from "./global.js";
|
|
10
10
|
|
|
11
|
-
type Settable = "data" | "dataKey" | "view" | "defaultView" | "templates" | "labels" | "fieldDefaults" | "limits" | "importLimits" | "locale" | "theme" | "height" | "timeZone" | "fileName" | "label" | "drillDown" | "drillDownLimit" | "saveTemplates" | "templateStore" | "canPublish" | "tips" | "storageKey" | "dismissedTips" | "chartOptions" | "shareLink" | "persistView" | "loading" | "fieldInfo" | "zoneInfo" | "settingInfo" | "sourceId" | "sourceName" | "sources" | "schemaUrl" | "grow" | "fieldList" | "allowImport" | "plugins";
|
|
11
|
+
type Settable = "data" | "dataKey" | "view" | "defaultView" | "templates" | "labels" | "fieldDefaults" | "limits" | "importLimits" | "locale" | "theme" | "height" | "timeZone" | "fileName" | "label" | "drillDown" | "drillDownLimit" | "exportData" | "saveTemplates" | "templateStore" | "canPublish" | "tips" | "storageKey" | "dismissedTips" | "chartOptions" | "shareLink" | "persistView" | "loading" | "fieldInfo" | "zoneInfo" | "settingInfo" | "sourceId" | "sourceName" | "sources" | "schemaUrl" | "grow" | "fieldList" | "allowImport" | "plugins";
|
|
12
12
|
|
|
13
13
|
/** The props of <pivot-report> in JSX. */
|
|
14
14
|
export type PivotReportJsxProps = DetailedHTMLProps<HTMLAttributes<PivotReportElement>, PivotReportElement> &
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{A as We,B as Ye,C as qe,D as Oe,a as Ve,f as B,g as X,i as Be,j as h,l as Q,m as D,n as k,o as m,p as I,q as p,t as we,u as ee,v as Je,w as He,x as M}from"./chunk-XR4CMFGN.js";var F=()=>"number",zt=()=>"text";function Ut(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 Ge(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 xt(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 Pt(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 Ze(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 Vt(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 Ke(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",Xe=e=>e==="date"?"date":e==="number"?"number":"text",Te=Object.freeze({count:{numeric:!1,additive:!0,resultType:F,create:Ut},countUnique:{numeric:!1,keepsValues:!0,resultType:F,create:(e,t)=>{let n=Ge(e,t);return{add:n.add,get:o=>n.sets[o]?n.sets[o].size:0}}},listUnique:{numeric:!1,keepsValues:!0,resultType:zt,create:(e,t,n,o)=>{let r=Ge(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:F,create:xt},average:{numeric:!0,dates:!0,resultType:ne,create:Pt},median:{numeric:!0,dates:!0,keepsValues:!0,resultType:ne,create:Vt},min:{numeric:!0,dates:!0,resultType:ne,create:Ze(-1)},max:{numeric:!0,dates:!0,resultType:ne,create:Ze(1)},stdev:{numeric:!0,resultType:F,create:te(!0,!0)},stdevp:{numeric:!0,resultType:F,create:te(!1,!0)},var:{numeric:!0,resultType:F,create:te(!0,!1)},varp:{numeric:!0,resultType:F,create:te(!1,!1)},first:{numeric:!1,resultType:Xe,create:Ke(!1)},last:{numeric:!1,resultType:Xe,create:Ke(!0)}}),Ne=Object.freeze(Object.keys(Te));function J(e){return typeof e=="string"&&Object.hasOwn(Te,e)?Te[e]:null}function Se(e,t){let n=J(e);return n?n.numeric?t==="number"||t==="boolean"||t==="null"||t==="date"&&n.dates===!0:!0:!1}function dr(e){return Ne.filter(t=>Se(t,e))}var ve=ee(128);function S(e,t={}){return ve.getOrSet(`n|${e}|${JSON.stringify(t)}`,()=>new Intl.NumberFormat(e,t))}function A(e,t){return ve.getOrSet(`d|${e}|${JSON.stringify(t)}`,()=>new Intl.DateTimeFormat(e,t))}function Qe(e){return ve.getOrSet(`c|${e}`,()=>new Intl.Collator(e,{numeric:!0,sensitivity:"base"}))}var Bt={dateStyle:"medium",timeZone:"UTC"},Jt={dateStyle:"medium",timeStyle:"short",timeZone:"UTC"},et=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)"})});function br(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 tt(e,t,n,o=et){if(t==null)return o.blank??et.blank;if(e.labeler)return e.labeler(t,n);switch(e.type){case"date":return A(n,e.dateOnly?Bt:Jt).format(new Date(Number(t)));case"boolean":return t?o.true??"true":o.false??"false";default:return String(t)}}function Ht(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:Qe(n).compare(String(e),String(t))}function hr(e,t,n){return n.getOrSet(`ranks:${e.id}:${t}`,()=>{let o=e.dict.map((s,i)=>i);o.sort((s,i)=>Ht(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 wr(e,t){return String(e).replace(/\{(\w+)\}/g,(n,o)=>Object.hasOwn(t,o)?String(t[o]):n)}var _=Object.freeze({case:"insensitive",whitespace:"collapse"}),ke=Object.freeze(["insensitive","sensitive"]),Ae=Object.freeze(["collapse","exact"]),Wt=/\s+/g;function C(e,t=_){let n=typeof e=="string"?e:String(e);return(t.whitespace??_.whitespace)==="collapse"&&(n=n.replace(Wt," ").trim()),(t.case??_.case)==="insensitive"?n.toLowerCase():n}var Ce=1e-9;function nt(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))),qt=(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)},Gt=(e,t)=>A(t,{weekday:"short",timeZone:"UTC"}).format(new Date(Date.UTC(2024,0,e))),vr=Object.freeze(["year","yearQuarter","yearMonth","yearWeek","day"]),kr=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=>nt(e.getTime()).week,label:e=>`W${Q(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=>`${Q(e)}:00`},weekday:{source:"date",type:"number",value:e=>(e.getUTCDay()+6)%7+1,label:Gt},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:qt},yearWeek:{source:"date",type:"number",value:e=>{let t=nt(e.getTime());return t.year*100+t.week},label:e=>`${Math.floor(e/100)}-W${Q(e%100)}`},bin:{source:"number",type:"number"}}),Ar=Object.freeze(Object.keys(v)),Zt=Object.freeze([{unit:"day",maxDays:62},{unit:"yearMonth",maxDays:2*366},{unit:"yearQuarter",maxDays:6*366},{unit:"year",maxDays:1/0}]);function Cr(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 i of n.dict)typeof i=="number"&&(o=Math.min(o,i),r=Math.max(r,i));let s=(r-o)/h;return s>=1?Zt.find(i=>s<=i.maxDays).unit:null}function Kt(e,t){let n=Math.min(20,Math.max(we(e),we(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 $r(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,()=>Qt(n,t,o,r));return s.name===t.name?s:{...s,name:t.name,key:t.name.toLowerCase()}}var rt=9999;function Xt(e,t){return e.decimals>0?!1:t.every(n=>Math.abs(n)<=rt&&Math.abs(e.upperOf(n))<=rt)}function Qt(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"?Kt(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=!Xt(l,a);f.labeler=(g,y)=>{let b=S(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 H=Object.freeze(["hour","day","week","month","quarter","year"]),W=Object.freeze(["last","next","this","before"]),U=500,Y=Object.freeze(["today","latest","first"]),L=1,$e=36e5,$=(e,t,n)=>new Date(0).setUTCFullYear(e,t,n);function re(e,t,n=L,o=0){if(e==="hour"){let u=(Math.floor(t/$e)+o)*$e;return M(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 ot(e,t,n){if(e==="hour"||e==="day"||e==="week"){let l=t+n*(e==="hour"?$e:e==="day"?h:7*h);return M(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 Ee(e,t,n=L){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=>re(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,ot(o,t,i)+1);let c=r?a(u(1-i-l),u(1-l)):a(ot(o,t,-i),t+1);return e.direction==="before"?{from:-1/0,to:c.from}:c}var st=Object.freeze(["equals","contains","beginsWith","endsWith"]),en=Object.freeze(["value","label"]),ae=Object.freeze(["=",">",">=","<","<=","between"]),it=Object.freeze(["year","quarter","month","day","hour"]),at=Object.freeze(["first","all"]),Ie=Object.freeze(["exclude","include","only"]),ut=Object.freeze({notEquals:"equals",notContains:"contains","!=":"=",notBetween:"between"}),R=(e,t)=>typeof e=="string"&&t.includes(e)?e:null;function tn(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 ct(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 nn=e=>Math.floor(e/h)*h,ue=e=>new Date(e).toISOString().slice(0,-14);function Pr(e,t,n){n=D(n,"relativeDateRange");let o=n.direction??"last",r=n.anchor??"today",s=n.weekStart??L,i=o==="this"||Number.isInteger(t)&&t>=1&&t<=U;if(!H.includes(e)||!W.includes(o)||!i||!Number.isInteger(s)||s<1||s>7||ft(r)===null||r==="latest"&&n.latest===void 0||r==="first"&&n.first===void 0)return null;let a=We(n.timeZone),u=r==="latest"?Me(n.latest,a):r==="first"?Me(n.first,a):r==="today"?Me(n.now,a):je(r),l={direction:o,unit:e,count:t,calendar:n.calendar??!0,includeCurrent:n.includeCurrent??!0},{from:c,to:f}=Ee(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)?ue(c):null,to:ue(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 je=e=>{let t=typeof e=="string"&&!Y.includes(e)?j("date",e):void 0;return typeof t=="number"?t:NaN};function ft(e){if(typeof e=="string"&&Y.includes(e))return e;let t=je(e);return M(t)?t%h===0?ue(t):new Date(t).toISOString().slice(0,19):null}function Me(e,t){let n=qe(t),o=Oe(e===void 0?Date.now():e,r=>M(r)?n(r):NaN);if(!M(o))throw new Ve("INVALID_OPTION","now must be a Date, epoch milliseconds or an ISO date string");return o}function j(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"?Oe(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 Re(e,t,n,o){let r=j(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 le(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"):Ie.includes(s)||o.issue(`${n}.blanks`,`unknown blanks ${JSON.stringify(s)}`,"filterBlanks",{value:p(s),...o.suggest(s,Ie)}),Object.assign(t,{not:r===!0,blanks:Ie.includes(s)?s:"exclude"})}function rn(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:Re(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 le(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 on(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 sn(e,t,n,o,r){let s=m(e,"op"),i=R(s,st),a=m(e,"value");if(!i){let d=ce(s),g=d?{suggestion:d}:r.suggest(s,st);return r.issue(o,`unknown text operator ${JSON.stringify(s)}${mt(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":R(u,en);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={..._};if(c!==void 0){let d=m(c,"case"),g=m(c,"whitespace");(!k(c)||d!==void 0&&!ke.includes(d)||g!==void 0&&!Ae.includes(g))&&r.issue(`${o}.match`,'match is { case: "insensitive" | "sensitive", whitespace: "collapse" | "exact" }',"filterMatch",{value:p(d??g??c)}),r.keys(c,an,`${o}.match`),f.case=ke.includes(d)?d:_.case,f.whitespace=Ae.includes(g)?g:_.whitespace}return Object.assign(t,{op:i,value:a,on:l,match:f}),le(e,t,o,r)}var an=Object.freeze(["case","whitespace"]),dt=(e,t)=>e.derived?t.derived.find(n=>n.name===e.name)?.by:void 0,un=e=>typeof e.value=="string";function ln(e,t,n,o,r,s){let i=dt(n,s),a=n.type==="date"||i!==void 0&&v[i].source==="date"&&typeof m(e,"value")=="string"&&j("number",m(e,"value"))===void 0,u=m(e,"precision"),l=u===void 0?"day":R(u,it);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,it)});let c=T=>{if(!a){let he=T===void 0?void 0:j("number",T);return typeof he=="number"?he:null}let V=T===void 0||n.type!=="date"&&typeof T!="string"?void 0:j("date",T);return typeof V=="number"&&M(V)?cn(V,l):null},f=m(e,"op"),d=R(f,ae);if(ce(f))return gt(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,ae)};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}:{}),le(e,t,o,r)}function cn(e,t){let n=re(t,e);return t==="hour"?new Date(n).toISOString().slice(0,-8):ue(Number.isNaN(n)?nn(e):n)}function ce(e){return typeof e=="string"&&Object.hasOwn(ut,e)?ut[e]:null}var mt=e=>e?`; write "${e}" with not: true`:"";function gt(e,t,n,o,r={}){let s=ce(e);return o.issue(t,`unknown operator ${JSON.stringify(e)}${mt(s)}`,n,{...r,value:p(e),suggestion:s})}function fn(e,t,n,o,r){let s=m(e,"direction"),i=s===void 0?"last":R(s,W);if(!i)return r.issue(o,`unknown direction ${JSON.stringify(s)}`,"filterRelativeDirection",{value:p(s),...r.suggest(s,W)});let a=R(m(e,"unit"),H);if(!a)return r.issue(o,`unknown unit ${JSON.stringify(m(e,"unit"))}`,"filterRelativeUnit",{value:p(m(e,"unit")),...r.suggest(m(e,"unit"),H)});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":ft(f);return d?(Object.assign(t,{direction:i,unit:a},i==="this"?{}:{count:l},{calendar:c("calendar"),includeCurrent:c("includeCurrent"),anchor:d}),le(e,t,o,r)):r.issue(o,`unknown anchor ${JSON.stringify(f)}`,"filterRelativeAnchor",{value:p(f),...r.suggest(f,Y)})}function pt(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 dn(e,t,n,o,r,s){let i=pt(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":R(l,at);return c||r.issue(`${o}.ties`,`unknown ties ${JSON.stringify(l)}`,"filterTies",{value:p(l),...r.suggest(l,at)}),Object.assign(t,{by:i,count:a,bottom:typeof u=="boolean"?u:!1,ties:c??"first"})}function mn(e,t,n,o,r,s){let i=pt(e,o,r,s);if(!i)return;let a=m(e,"op");if(ce(a))return gt(a,o,"filterValue",r);let u=R(a,ae),l=I(m(e,"value"));if(!u||l===null){let f=u||a===void 0?{}:{value:p(a),...r.suggest(a,ae)};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 oe(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 gn(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 pn(e,t){let n=new Uint8Array(e.dict.length+1).fill(t.not?1:0);return n[0]=t.not?0:1,n}function yn(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]=tn(t.op,t.on==="label"?tt(e,s,n):String(s),o,t.match)?1:0}),r}function bn(e,t){let n=e.type==="date",o=t.precision??"day",r=u=>n?j("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]=ct(t.op,n&&typeof u=="number"?re(o,u):u,s,i)?1:0}),a}function hn(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 wn(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 On(e,t,n,o,r){let s=t.anchor==="today"?o:t.anchor==="latest"?hn(e)??o:t.anchor==="first"?wn(e)??o:je(t.anchor),{from:i,to:a}=Ee(t,s,r);return Uint8Array.from([0,...e.dict],(u,l)=>l>0&&typeof u=="number"&&u>=i&&u<a?1:0)}function Tn(e,t){return Uint8Array.from(t,n=>typeof n=="number"&&!Number.isNaN(n)&&ct(e.op,n,e.value,e.value2)!==e.not?1:0)}function Nn(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]),ie=(e,t)=>typeof e.source=="function"?e.source(t):!!e.source,q=Object.freeze(["string","number","date","boolean"]),se=Object.freeze(["not","blanks"]),O=Object.freeze({in:{stage:"items",fields:q,keys:w("items",...se),required:w("items"),normalize:rn,allowed:oe(gn)},blank:{stage:"items",fields:q,keys:w("not"),required:w(),normalize:on,allowed:pn},text:{stage:"items",fields:q,keys:w("op","value","on","match",...se),required:w("op","value"),normalize:sn,allowed:oe(yn)},compare:{stage:"items",fields:Object.freeze(["number","date"]),keys:w("op","value","value2","precision",...se),required:w("op","value"),normalize:ln,allowed:oe(bn),source:un},relative:{stage:"items",fields:Object.freeze(["date","dateGrouping"]),keys:w("direction","unit","count","calendar","includeCurrent","anchor",...se),required:w("unit"),normalize:fn,allowed:oe(On),source:!0},top:{stage:"values",fields:q,keys:w("by","count","bottom","ties"),required:w("count"),normalize:dn,keep:Nn},value:{stage:"values",fields:q,keys:w("by","op","value","value2","not"),required:w("op","value"),normalize:mn,keep:Tn}}),Vr=Object.freeze(Object.keys(O)),De=Object.freeze({include:"in",exclude:"in",label:"text"});function yt(e,t){let n=dt(e,t);return n!==void 0&&v[n].source==="date"?[e.type,"dateGrouping"]:[e.type]}var bt=e=>e==="string"?"text":e==="number"||e==="date"?"compare":"in",Sn=Object.freeze(["blank","text","compare","relative"]);function Br(e,t,n,o,r,s){let i=e.filters.filter(d=>d.field.toLowerCase()===t.toLowerCase()&&Sn.includes(d.type));if(!i.length)return null;let a=i.some(d=>d.type==="relative")?s():0,u=d=>O[d.type].allowed(ie(O[d.type],d)?o:n,d,r,a,e.formatting.weekStart),l=i.filter(d=>!ie(O[d.type],d)).map(u),c=i.filter(d=>ie(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 lt(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 Jr(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(ie(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=lt(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=lt(t,(he,Lt)=>V[y[Lt]]===1),n&&(n[f]=t.length)}return t}var Gr=Object.freeze(["number","integer","currency","percent","percent100","compact","bytes","duration","date","datetime","time","text"]),vn=20,Tt={ms:.001,s:1,min:60,h:3600,d:86400},kn=/^(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"}},An={signDisplay:"negative"},fe=null;function Cn(e){return fe===null&&(fe=typeof Intl.supportedValuesOf=="function"?new Set(Intl.supportedValuesOf("currency")):!1),fe?fe.has(e.toUpperCase()):/^[a-z]{3}$/i.test(e)}function me(e){if(typeof e!="string")return null;let t=kn.exec(e.trim().toLowerCase());if(!t)return null;let[,n,o]=t;return o!==void 0&&(n==="currency"&&!Cn(o)||n==="duration"&&!Object.hasOwn(Tt,o)||Fe.has(n)&&!(/^\d{1,2}$/.test(o)&&Number(o)<=vn)||!["currency","duration",...Fe].includes(n))?null:{name:n,arg:o,decimals:Fe.has(n)&&o!==void 0?Number(o):void 0}}function Zr(e,t){let n=me(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 S(t,{style:"currency",currency:(n.arg||"EUR").toUpperCase()}).resolvedOptions().maximumFractionDigits??2;default:return null}}function St(e){return me(e)!==null}function G(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 $n(e,t){if(!Number.isFinite(e))return"";let n=e<=-.05?"-":"",o=Math.abs(e);if(o<60)return`${n}${S(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 En(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=S(t,{maximumFractionDigits:r===0?0:1}).format(o);return`${e<0&&/[1-9]/.test(s)?"-":""}${s} ${n[r]}`}function Le(e){return e==null?"":String(e)}function In(e,t){let n=me(e)||{name:"number",arg:void 0,decimals:void 0},o=r=>{let s=S(t,{...An,...r});return i=>{let a=G(i);return Number.isNaN(a)?Le(i):s.format(a)}};switch(n.name){case"text":return Le;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(G(s)/100)}case"compact":return o({notation:"compact",maximumFractionDigits:1});case"bytes":return r=>En(G(r),t);case"duration":{let r=Tt[n.arg||"s"];return s=>$n(G(s)*r,t)}case"date":case"datetime":case"time":{let r=A(t,Nt[n.name]);return s=>{let i=G(s);return Number.isFinite(i)?r.format(new Date(i)):Le(s)}}default:return o(_e(n.decimals,2))}}function Kr(e,t){return t=D(t,"formatter"),In(e,He(null,t.locale))}var ht=ee(64),de=e=>e.replace(/[^ :/-]+/g,t=>`"${t.replace(/"/g,"")}"`),ge=e=>e>0?"."+"0".repeat(e):"";function ze(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 wt(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+=de(r),r="",i.type==="minusSign"?o+="-":i.type==="percentSign"?o+="%":s||(o+=t,s=!0)):r+=i.value;return o+de(r)}function vt(e,t,n,o=!0){let r=wt(e.formatToParts(t),n,o),s=wt(e.formatToParts(-t),n,o);return s===`-${r}`?r:`${r};${s}`}function Mn(e,t){let n=S(t,{style:"currency",currency:e});return vt(n,1234.5,`#,##0${ge(n.resolvedOptions().maximumFractionDigits)}`)}function Ot(e,t,n){return vt(S(t,{style:"percent"}),.5,`#,##0${ge(e)}`,n)}function jn(e,t){if(!Number.isFinite(e)||e===0)return"#,##0";let n=S(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${ge(r.length)}${",".repeat(i/3)}${de(u)}`}function Rn(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 de(o.value)}}).join("")}function Xr(e,t,n){let o=me(e)||{name:"number",arg:void 0,decimals:void 0};switch(o.name){case"integer":return"#,##0";case"number":return`#,##0${ge(o.decimals??ze(t,2))}`;case"percent":return Ot(o.decimals??ze(t*100,1),n,!0);case"percent100":return Ot(o.decimals??ze(t,1),n,!1);case"currency":return ht.getOrSet(`${e}|${n}`,()=>Mn((o.arg||"EUR").toUpperCase(),n));case"compact":return jn(t,n);case"date":case"datetime":case"time":return ht.getOrSet(`${o.name}|${n}`,()=>Rn(o.name,n));case"text":return"@";default:return"General"}}var pe=Object.freeze({candidates:1e3,length:64,distance:3});function Dn(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 kt(e,t){if(typeof e!="string"||e.length>pe.length)return null;let n=C(e);if(n==="")return null;let o=Math.min(pe.distance,Math.max(1,Math.floor(n.length/3))),r=null,s=o+1,i=0;for(let a of t){if(i++>=pe.candidates)break;if(typeof a!="string"||a.length>pe.length)continue;let u=Dn(n,C(a),Math.min(o,s-1));if(u<s&&(r=a,s=u,u===0))break}return r}var z=(e,t)=>e===null||t===null||t===0?null:e/t;function Ue(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 At(e){return(t,n)=>{let{node:o,at:r,siblings:s}=Ue(n);if(!o.parent||o.index===0||t===null)return null;let i=r(s[o.index-1])??0;return e?z(t-i,i):t-i}}function Ct(e){return(t,n)=>{let{node:o,at:r,siblings:s}=Ue(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?z(i,r(o.parent)):i}}function $t(e){return(t,n)=>{let{node:o,at:r,siblings:s}=Ue(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 ye=Object.freeze({percentOfGrandTotal:{format:"percent",compute:(e,t)=>z(e,t.raw(t.rowRoot,t.colRoot))},percentOfRowTotal:{format:"percent",compute:(e,t)=>z(e,t.raw(t.rowNode,t.colRoot))},percentOfColumnTotal:{format:"percent",compute:(e,t)=>z(e,t.raw(t.rowRoot,t.colNode))},percentOfParentRow:{format:"percent",compute:(e,t)=>z(e,t.raw(t.rowNode.parent??t.rowNode,t.colNode))},percentOfParentColumn:{format:"percent",compute:(e,t)=>z(e,t.raw(t.rowNode,t.colNode.parent??t.colNode))},differenceFromPrevious:{format:"number",alongAxis:!0,compute:At(!1)},percentDifferenceFromPrevious:{format:"percent",alongAxis:!0,compute:At(!0)},runningTotal:{format:"number",alongAxis:!0,additive:!0,compute:Ct(!1)},percentRunningTotal:{format:"percent",alongAxis:!0,additive:!0,compute:Ct(!0)},rankAscending:{format:"integer",alongAxis:!0,compute:$t(!1)},rankDescending:{format:"integer",alongAxis:!0,compute:$t(!0)}}),no=Object.freeze(Object.keys(ye));var Fn="(blank)";function _n(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 Et=Object.freeze({notEquals:"equals",notContains:"contains","!=":"=",notBetween:"between"}),xe=e=>typeof e=="string"&&Object.hasOwn(Et,e)?{op:Et[e],not:!0}:{},Pe=(e,t)=>m(e,"blanks")===void 0?{blanks:t}:{};function Ln(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,...Pe(t,a?"include":"exclude")}}case"label":{let r=m(t,"value"),s=typeof r=="string"?Pe(t,_n(o,Fn,r)?"include":"exclude"):{};return{...t,type:"text",on:"label",match:{case:"insensitive",whitespace:"exact"},...xe(o),...s}}case"compare":case"relative":return{...t,...xe(o),...Pe(t,"exclude")};case"value":return{...t,...xe(o)};default:return t}}function It(e){let t=m(e,"filters");return Array.isArray(t)?{...e,filters:t.map(Ln)}:e}var Rt=2,Dt=zn({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"}),ho=Object.freeze(Object.keys(Dt));function zn(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=Dt[n].severity){return o?{path:e,message:t,code:n,severity:r,params:o}:{path:e,message:t,code:n,severity:r}}var Un=Object.freeze(["auto","bar","line","area","pie","donut","heatmap"]),wo=Object.freeze(["pie","donut"]),xn=Object.freeze(["table","chart"]),Oo=Object.freeze(["colorScale","dataBar"]),Pn=Object.freeze(["auto","off","value","percent","both"]),Vn=Object.freeze(["outside","inside"]),Bn=Object.freeze(["auto","bottom","right","off"]),Jn=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:Rt,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:L}}}var Wn=Object.freeze({1:It});function Yn(e){return qn(e,Wn,Rt)}function qn(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 be(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 N=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 Gn(e,t,n){P(e,"derived",n.limits.derived,n,(o,r)=>{n.keys(o,N.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<Ce)return n.issue(r,`bins need a size of at least ${Ce}`,"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 Zn(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 Kn(e,t,n){let o=m(e,"type");if((o==="colorScale"||o==="dataBar")&&n.keys(e,N.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 Xn(e,t,n,o){let r=typeof e=="string"?{type:e}:e;o.keys(r,N.showAs,n);let s=m(r,"type"),i=typeof s=="string"&&Object.hasOwn(ye,s)?ye[s]:null;return i?i.additive&&!J(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 Qn(e,t,n){P(e,"values",n.limits.values,n,(o,r)=>{let s=n.valueRef(o,r,N.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&&(St(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=Xn(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=Kn(f,`${r}.conditional`,n):n.issue(`${r}.conditional`,"conditional formatting needs a number value","conditionalNotNumber",{agg:s.agg})),t.values.push(a)})}function er(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(De,i)?{suggestion:De[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),!yt(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:bt(s.type)});let u=a.normalize(o,{field:s.name,type:i},s,r,n,t);u&&t.filters.push(u)})}var tr=Object.freeze(["label","value","custom"]);function nr(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=Re(t,i,n,o);a!==void 0&&!r.has(a)&&(r.add(a),s.push(a))}return s}function rr(e,t,n){let o=new Set;P(e,"sort",n.limits.sort,n,(r,s)=>{n.keys(r,N.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"),tr,"label"),u={field:i.name,by:a,order:K(m(r,"order"),["asc","desc"],"asc")};if(a==="custom"){let l=nr(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 or(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,N.totals,"totals");for(let r of Object.keys(t.totals))t.totals[r]=be(m(o,r),t.totals[r])}}function sr(e,t,n){n.keys(m(e,"collapsed"),N.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)=>j(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 ir(e,t,n){let o=m(e,"display");t.display=K(o,xn,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,N.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",Un,t.chart.type),stacked:be(m(r,"stacked"),!1),horizontal:be(m(r,"horizontal"),!1),valueLabels:s("valueLabels",Pn,"auto"),legend:s("legend",Bn,"auto"),title:i==null?null:n.text(i),smooth:be(m(r,"smooth"),!1),axisLabels:s("axisLabels",Jn,"auto"),groupLabels:s("groupLabels",Hn,"auto"),labelPosition:s("labelPosition",Vn,"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 ar(e,t,n){let o=m(e,"formatting");n.keys(o,N.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 ur=[Gn,Zn,Qn,er,rr,or,sr,ir,ar],jt=Object.freeze({columns:"cols",column:"cols",measures:"values",measure:"values",aggregations:"values",filter:"filters",sorting:"sort"});function x(e,t){let n=kt(e,t);return n===null?{}:{suggestion:n}}var lr=1e5;function cr(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<=lr?{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=>J(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=N.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 J(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&&!Se(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),...x(f,Ne)}),null)}};return a}function To(e,t,n){return n=D(n,"normalize"),_t(e,t,n,!1)}function _t(e,t,n,o){let r=Be(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=fr(),l=Yn(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(jt,d.toLowerCase())?{suggestion:jt[d.toLowerCase()]}:x(d,N.view)}));let f=cr(t,r,u.add,o);for(let d of ur)d(c,s,f);return{view:s,issues:u.done()}}function fr(){let e=[],t=new Map,n=0;return{add:o=>{let r=t.get(o.code)??0;if(r>=X.perCode||e.length>=X.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:X.perCode})]}}function No(e,t,n){n=D(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 So(e,t){return Ft(t).concat((e.derived||[]).map(n=>({name:n.name,type:v[n.by].type,derived:!0})))}export{Ne as a,J as b,dr as c,S as d,vr as e,kr as f,Ar as g,Cr as h,$r as i,et as j,br as k,tt as l,hr as m,wr as n,_ as o,ke as p,Ae as q,C as r,H as s,W as t,U as u,Y as v,st as w,en as x,ae as y,it as z,at as A,Ie as B,Pr as C,Me as D,O as E,Vr as F,Br as G,Jr as H,kt as I,Gr as J,me as K,Zr as L,St as M,In as N,Kr as O,ze as P,Xr as Q,ye as R,no as S,Rt as T,E as U,Un as V,wo as W,xn as X,Oo as Y,Pn as Z,Vn as _,Bn as $,Jn as aa,Hn as ba,Z as ca,To as da,No as ea,So as fa};
|