pivotkit-element 0.2.0 → 0.4.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.
@@ -0,0 +1 @@
1
+ import{b as Ve,c as z,d as le,f as Je,g as ue,h as Ge,i as ce,j as ee}from"./chunk-O2TTHYGT.js";import{a as Pe,b as $,c as x,d as I,f as ie,g as k,h as ae,i as y,j as P,k as S,m as Ze,n as Q,o as H,p as Be,q as K}from"./chunk-MB64GADT.js";var Se=Object.freeze(["string","number","boolean","date"]),Vt=/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,Zt=100;function He(e){let t=e.trim();return t.length<=Zt&&Vt.test(t)}var Bt=100,Ke=e=>e==null||e===""||typeof e=="function"||typeof e=="symbol";function Jt(e,t){if(Ke(e))return null;switch(typeof e){case"number":return Number.isFinite(e)?"number":null;case"boolean":return"boolean";case"string":return Je(e)?"date":t&&He(e)?"number":"string";case"bigint":return"number";default:return e instanceof Date?Number.isNaN(e.getTime())?null:"date":"string"}}function We(e,t){let n=null;for(let o=0;o<e.length;o++){let r=Jt(e[o],t);if(r==="string")return"string";if(!(r===null||r===n))if(n===null)n=r;else return"string"}return n??"null"}function Gt(e){if(typeof e=="string")return e;if(e instanceof Date)return Number.isNaN(e.getTime())?"":e.toISOString();if(typeof e=="object")try{return JSON.stringify(e)??""}catch{return""}return String(e)}function Wt(e){if(typeof e=="number")return Number.isFinite(e)?e:NaN;if(typeof e=="bigint")return Number(e);if(typeof e=="boolean")return e?1:0;if(typeof e=="string"&&He(e)){let t=Number(e.trim());return Number.isFinite(t)?t:NaN}return NaN}function Ht(e){if(typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)?e!==0:null;if(typeof e=="string"){let t=e.trim().toLowerCase();if(t==="true"||t==="1"||t==="yes")return!0;if(t==="false"||t==="0"||t==="no")return!1}return null}var Kt={number:e=>{let t=Wt(e);return Number.isNaN(t)?null:t},boolean:Ht,date:(e,t)=>{let n=ee(e,t);return Number.isNaN(n)?null:n},string:e=>{let t=Gt(e);return t===""?null:t},null:()=>null};function Yt(e,t,n,o){let r=t.length,s=new Int32Array(r),i=[],a=new Map,u=n==="number"||n==="boolean"||n==="date"?new Float64Array(r):null,l=Kt[n],c=!0;for(let m=0;m<r;m++){let p=t[m],g=Ke(p)?null:l(p,o);if(g===null){s[m]=-1,u&&(u[m]=NaN);continue}n==="date"&&g%I!==0&&(c=!1);let h=a.get(g);h===void 0&&(h=i.length,i.push(g),a.set(g,h)),s[m]=h,u&&(u[m]=typeof g=="boolean"?g?1:0:g)}let f=e.toLowerCase(),d={name:e,key:f,id:`column:${f}`,type:n,codes:s,dict:i,values:u};return n==="date"&&(d.dateOnly=c),d}function qt(e){let t=e;return t!==null&&typeof t=="object"&&!Array.isArray(t)&&Array.isArray(t.columns)&&Array.isArray(t.data)}var Xt=e=>Array.isArray(e)||ArrayBuffer.isView(e)&&!(e instanceof DataView);function Rr(e,t){t=k(t,"encode");let n=qt(e);$(n||Array.isArray(e),"encode(rows): rows must be an array of objects or columnar data { columns, data }");let o=z(t),r=ue(t.timeZone),s=ce(r),i=t.inferNumbers===!0,a=Array.isArray(t.columns)?new Set(t.columns.filter(h=>typeof h=="string").map(h=>h.toLowerCase())):null,u=[],l=(h,N)=>{u.length<Bt&&u.push({path:h,message:N})},{n:c,found:f}=n?en(e,a,o,l):Qt(e,a,o,l),d=new Map;if(t.types&&typeof t.types=="object")for(let h of Object.keys(t.types)){let N=t.types[h];Se.includes(N)&&d.set(h.toLowerCase(),N)}let m=a?[...a].filter(h=>f.has(h)):[...f.keys()],p=new Map,g=m.map(h=>{let{name:N,raw:O,type:b}=f.get(h),v=We(O,i),T=v==="string"&&!i?We(O,!0):v;return p.set(h,T),Yt(N,O,d.get(h)??b??v,s)});return tn(c,g,{timeZone:r,issues:u,detected:p,cacheEntries:o.cacheEntries})}function Qt(e,t,n,o){x("rows",e.length,n.rows,"rows");let r=e.length,s=new Map;for(let i=0;i<r;i++){let a=e[i];if(a===null||typeof a!="object")continue;let u=new Set;for(let l of Object.keys(a)){let c=l.toLowerCase(),f=s.get(c);if(f===void 0){if(t&&!t.has(c))continue;f={name:l,raw:new Array(r).fill(null),spellings:new Set([l])},s.set(c,f)}else f.spellings.has(l)||(f.spellings.add(l),o(f.name,`"${l}" and "${f.name}" are one column: names match case-insensitively`));u.has(c)&&o(f.name,`row ${i} has "${l}" next to another spelling of it; the later value is used`),u.add(c),f.raw[i]=a[l]}}return{n:r,found:s}}function en(e,t,n,o){let{columns:r,data:s,types:i}=e;$(s.length===r.length,`encode(data): ${r.length} column names but ${s.length} arrays in data`),$(i==null||Array.isArray(i),"encode(data): types must be an array, one entry per column");let a=s.length===0?0:s[0]?.length;for(let l=0;l<s.length;l++)$(Xt(s[l]),`encode(data): data[${l}] must be an array of the values of column ${l}`),$(s[l].length===a,`encode(data): every column must have the same length; data[0] has ${a} values, data[${l}] ${s[l].length}`);x("rows",a,n.rows,"rows");let u=new Map;for(let l=0;l<r.length;l++){let c=r[l];$(typeof c=="string",`encode(data): columns[${l}] must be a string`);let f=c.toLowerCase();if(t&&!t.has(f))continue;let d=u.get(f);if(d!==void 0){o(d.name,`"${c}" and "${d.name}" are one column: names match case-insensitively; the later column is left out`);continue}let m=i?i[l]:void 0;$(m==null||Se.includes(m),`encode(data): types[${l}] must be one of ${Se.join(", ")}`),u.set(f,{name:c,raw:s[l],type:m??void 0})}return{n:a,found:u}}function tn(e,t,n){let o=new Map(t.map(s=>[s.key,s])),r={length:e,columns:t,schema:{fields:t.map(s=>({name:s.name,type:s.type,detected:n.detected.get(s.key)??s.type}))},column:s=>typeof s=="string"?o.get(s.toLowerCase()):void 0,timeZone:n.timeZone,issues:n.issues};return Object.defineProperty(r,"cache",{value:H(n.cacheEntries),enumerable:!1}),r}function Ye(e){let t=e;return t!==null&&typeof t=="object"&&Array.isArray(t.columns)&&typeof t.column=="function"&&"cache"in t}var B=()=>"number",nn=()=>"text";function rn(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 qe(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 on(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 sn(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 Xe(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 an(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 fe(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 Qe(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 de=e=>e==="date"?"date":"number",et=e=>e==="date"?"date":e==="number"?"number":"text",Te=Object.freeze({count:{numeric:!1,additive:!0,resultType:B,create:rn},countUnique:{numeric:!1,keepsValues:!0,resultType:B,create:(e,t)=>{let n=qe(e,t);return{add:n.add,get:o=>n.sets[o]?n.sets[o].size:0}}},listUnique:{numeric:!1,keepsValues:!0,resultType:nn,create:(e,t,n,o)=>{let r=qe(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:B,create:on},average:{numeric:!0,dates:!0,resultType:de,create:sn},median:{numeric:!0,dates:!0,keepsValues:!0,resultType:de,create:an},min:{numeric:!0,dates:!0,resultType:de,create:Xe(-1)},max:{numeric:!0,dates:!0,resultType:de,create:Xe(1)},stdev:{numeric:!0,resultType:B,create:fe(!0,!0)},stdevp:{numeric:!0,resultType:B,create:fe(!1,!0)},var:{numeric:!0,resultType:B,create:fe(!0,!1)},varp:{numeric:!0,resultType:B,create:fe(!1,!1)},first:{numeric:!1,resultType:et,create:Qe(!1)},last:{numeric:!1,resultType:et,create:Qe(!0)}}),ln=Object.freeze(Object.keys(Te));function j(e){return typeof e=="string"&&Object.hasOwn(Te,e)?Te[e]:null}function ke(e,t){let n=j(e);return n?n.numeric?t==="number"||t==="boolean"||t==="null"||t==="date"&&n.dates===!0:!0:!1}function Er(e){return ln.filter(t=>ke(t,e))}var Ce=H(128);function E(e,t={}){return Ce.getOrSet(`n|${e}|${JSON.stringify(t)}`,()=>new Intl.NumberFormat(e,t))}function U(e,t){return Ce.getOrSet(`d|${e}|${JSON.stringify(t)}`,()=>new Intl.DateTimeFormat(e,t))}function tt(e){return Ce.getOrSet(`c|${e}`,()=>new Intl.Collator(e,{numeric:!0,sensitivity:"base"}))}var un={dateStyle:"medium",timeZone:"UTC"},cn={dateStyle:"medium",timeStyle:"short",timeZone:"UTC"},C=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 te(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 ne(e,t,n,o=C){if(t==null)return o.blank??C.blank;if(e.labeler)return e.labeler(t,n);switch(e.type){case"date":return U(n,e.dateOnly?un:cn).format(new Date(Number(t)));case"boolean":return t?o.true??"true":o.false??"false";default:return String(t)}}function fn(e,t,n){let o=e==null,r=t==null;if(o||r)return o===r?0:o?1:-1;let s=typeof e=="number"||typeof e=="boolean",i=typeof t=="number"||typeof t=="boolean";return s&&i?Number(e)-Number(t):s!==i?s?-1:1:tt(n).compare(String(e),String(t))}function $e(e,t,n){return n.getOrSet(`ranks:${e.id}:${t}`,()=>{let o=e.dict.map((s,i)=>i);o.sort((s,i)=>fn(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 me(e,t){return String(e).replace(/\{(\w+)\}/g,(n,o)=>Object.hasOwn(t,o)?String(t[o]):n)}var Zr=Object.freeze(["number","integer","currency","percent","percent100","compact","bytes","duration","date","datetime","time","text"]),dn=20,st={ms:.001,s:1,min:60,h:3600,d:86400},mn=/^(number|integer|currency|percent|percent100|compact|bytes|duration|date|datetime|time|text)(?::([A-Za-z0-9]{1,10}))?$/,xe=new Set(["number","percent","percent100"]),it={date:{dateStyle:"medium",timeZone:"UTC"},datetime:{dateStyle:"medium",timeStyle:"short",timeZone:"UTC"},time:{timeStyle:"short",timeZone:"UTC"}},pn={signDisplay:"negative"},pe=null;function gn(e){return pe===null&&(pe=typeof Intl.supportedValuesOf=="function"?new Set(Intl.supportedValuesOf("currency")):!1),pe?pe.has(e.toUpperCase()):/^[a-z]{3}$/i.test(e)}function Y(e){if(typeof e!="string")return null;let t=mn.exec(e.trim().toLowerCase());if(!t)return null;let[,n,o]=t;return o!==void 0&&(n==="currency"&&!gn(o)||n==="duration"&&!Object.hasOwn(st,o)||xe.has(n)&&!(/^\d{1,2}$/.test(o)&&Number(o)<=dn)||!["currency","duration",...xe].includes(n))?null:{name:n,arg:o,decimals:xe.has(n)&&o!==void 0?Number(o):void 0}}function Br(e,t){let n=Y(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 E(t,{style:"currency",currency:(n.arg||"EUR").toUpperCase()}).resolvedOptions().maximumFractionDigits??2;default:return null}}function at(e){return Y(e)!==null}function re(e){return e==null||e===""?NaN:typeof e=="number"?e:Number(e)}var Ie=(e,t)=>e===void 0?{maximumFractionDigits:t}:{minimumFractionDigits:e,maximumFractionDigits:e};function yn(e,t){if(!Number.isFinite(e))return"";let n=e<=-.05?"-":"",o=Math.abs(e);if(o<60)return`${n}${E(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 hn(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=E(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 Re(e,t){let n=Y(e)||{name:"number",arg:void 0,decimals:void 0},o=r=>{let s=E(t,{...pn,...r});return i=>{let a=re(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",...Ie(n.decimals,1)});case"percent100":{let r=o({style:"percent",...Ie(n.decimals,1)});return s=>r(re(s)/100)}case"compact":return o({notation:"compact",maximumFractionDigits:1});case"bytes":return r=>hn(re(r),t);case"duration":{let r=st[n.arg||"s"];return s=>yn(re(s)*r,t)}case"date":case"datetime":case"time":{let r=U(t,it[n.name]);return s=>{let i=re(s);return Number.isFinite(i)?r.format(new Date(i)):Le(s)}}default:return o(Ie(n.decimals,2))}}function Jr(e,t){return t=k(t,"formatter"),Re(e,K(null,t.locale))}var nt=H(64),ge=e=>e.replace(/[^ :/-]+/g,t=>`"${t.replace(/"/g,"")}"`),ye=e=>e>0?"."+"0".repeat(e):"";function Me(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 rt(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+=ge(r),r="",i.type==="minusSign"?o+="-":i.type==="percentSign"?o+="%":s||(o+=t,s=!0)):r+=i.value;return o+ge(r)}function lt(e,t,n,o=!0){let r=rt(e.formatToParts(t),n,o),s=rt(e.formatToParts(-t),n,o);return s===`-${r}`?r:`${r};${s}`}function bn(e,t){let n=E(t,{style:"currency",currency:e});return lt(n,1234.5,`#,##0${ye(n.resolvedOptions().maximumFractionDigits)}`)}function ot(e,t,n){return lt(E(t,{style:"percent"}),.5,`#,##0${ye(e)}`,n)}function wn(e,t){if(!Number.isFinite(e)||e===0)return"#,##0";let n=E(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${ye(r.length)}${",".repeat(i/3)}${ge(u)}`}function Nn(e,t){return U(t,it[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 ge(o.value)}}).join("")}function Gr(e,t,n){let o=Y(e)||{name:"number",arg:void 0,decimals:void 0};switch(o.name){case"integer":return"#,##0";case"number":return`#,##0${ye(o.decimals??Me(t,2))}`;case"percent":return ot(o.decimals??Me(t*100,1),n,!0);case"percent100":return ot(o.decimals??Me(t,1),n,!1);case"currency":return nt.getOrSet(`${e}|${n}`,()=>bn((o.arg||"EUR").toUpperCase(),n));case"compact":return wn(t,n);case"date":case"datetime":case"time":return nt.getOrSet(`${o.name}|${n}`,()=>Nn(o.name,n));case"text":return"@";default:return"General"}}function Fe(e,t){let n=new Int32Array(t.length),o=[];if(e.length===0)return o.push([]),{groupOf:n,paths:o};let r=1;for(let c of e)r*=c.dict.length+1;let s=r<2**52,i=new Map,a=e.length,u=e.map(c=>c.codes),l=e.map(c=>c.dict.length+1);for(let c=0;c<t.length;c++){let f=t[c],d;if(s){d=0;for(let p=0;p<a;p++)d=d*l[p]+u[p][f]+1}else{d="";for(let p=0;p<a;p++)d+=u[p][f]+","}let m=i.get(d);if(m===void 0){m=o.length;let p=new Array(a);for(let g=0;g<a;g++)p[g]=u[g][f];o.push(p),i.set(d,m)}n[c]=m}return{groupOf:n,paths:o}}function ut(e,t,n,o,r){return{id:e,depth:t,code:n,key:o,path:r?[...r.path,o]:[],parent:r,children:[],index:0}}function Ee(e,t,n={max:1/0,used:0}){let{groupOf:o,paths:r}=Fe(e,t);x("groups",n.used+r.length+(e.length>0?1:0),n.max,"groups");let s=ut(0,0,-2,null,null),i=[s],a=Math.max(1,...e.map(d=>d.dict.length+1)),u=(Number.isFinite(n.max)?n.max:t.length*e.length+1)*a<2**53,l=new Map,c=new Array(r.length);r.forEach((d,m)=>{let p=s;for(let g=0;g<d.length;g++){let h=d[g],N=u?p.id*a+h+1:`${p.id},${h}`,O=l.get(N);if(O===void 0){n.used+i.length>=n.max&&x("groups",n.used+i.length+1,n.max,"groups");let b=h===-1?null:e[g].dict[h];O=ut(i.length,g+1,h,b,p),i.push(O),l.set(N,O),p.children.push(O)}p=O}c[m]=p});let f=new Int32Array(t.length);for(let d=0;d<t.length;d++)f[d]=c[o[d]].id;return{root:s,nodes:i,leafOf:f,leafCount:r.length}}var On=(e,t)=>e===t||e===null&&t===null||typeof e=="number"&&typeof t=="number"&&Number.isNaN(e)&&Number.isNaN(t);function ct(e,t,n){let o=t==="cols"?e.colRoot:e.rowRoot;for(let r of n||[])if(o=o.children.find(s=>On(s.key,r)),!o)return null;return o}function Yr(e,t){t=k(t,"cellRows");let{row:n=[],col:o=[]}=t,r=Array.isArray(n)?ct(e,"rows",n):n,s=Array.isArray(o)?ct(e,"cols",o):o;if(!r||!s)return new Int32Array(0);let i=(u,l,c)=>{let f=u[l];for(;f&&f.depth>c.depth;)f=f.parent;return f===c},a=[];for(let u=0;u<e.rows.length;u++)i(e.rowNodes,e.rowLeafOf[u],r)&&i(e.colNodes,e.colLeafOf[u],s)&&a.push(e.rows[u]);return Int32Array.from(a)}var De=1e-9;function ft(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)*I,a=1+Math.round((o-i)/(7*I));return{year:r,week:a}}var vn=(e,t)=>U(t,{month:"short",timeZone:"UTC"}).format(new Date(Date.UTC(2e3,e-1,1))),An=(e,t)=>U(t,{month:"short",year:"numeric",timeZone:"UTC"}).format(new Date(Date.UTC(Math.floor(e/100),e%100-1,1))),Sn=(e,t)=>U(t,{weekday:"short",timeZone:"UTC"}).format(new Date(Date.UTC(2024,0,e))),eo=Object.freeze(["year","yearQuarter","yearMonth","yearWeek","day"]),to=Object.freeze(["quarter","month","week","weekday","hour"]),D=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:vn},week:{source:"date",type:"number",value:e=>ft(e.getTime()).week,label:e=>`W${ie(e)}`},day:{source:"date",type:"date",value:e=>Math.floor(e.getTime()/I)*I},hour:{source:"date",type:"number",value:e=>e.getUTCHours(),label:e=>`${ie(e)}:00`},weekday:{source:"date",type:"number",value:e=>(e.getUTCDay()+6)%7+1,label:Sn},yearQuarter:{source:"date",type:"number",value:e=>e.getUTCFullYear()*10+Math.floor(e.getUTCMonth()/3)+1,label:e=>`Q${e%10} ${Math.floor(e/10)}`},yearMonth:{source:"date",type:"number",value:e=>e.getUTCFullYear()*100+e.getUTCMonth()+1,label:An},yearWeek:{source:"date",type:"number",value:e=>{let t=ft(e.getTime());return t.year*100+t.week},label:e=>`${Math.floor(e/100)}-W${ie(e%100)}`},bin:{source:"number",type:"number"}}),no=Object.freeze(Object.keys(D)),Tn=Object.freeze([{unit:"day",maxDays:62},{unit:"yearMonth",maxDays:2*366},{unit:"yearQuarter",maxDays:6*366},{unit:"year",maxDays:1/0}]);function ro(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)/I;return s>=1?Tn.find(i=>s<=i.maxDays).unit:null}function kn(e,t){let n=Math.min(20,Math.max(Q(e),Q(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 mt(e,t){let n=e.column(t.field),o=Object.hasOwn(D,t.by)?D[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,()=>$n(n,t,o,r));return s.name===t.name?s:{...s,name:t.name,key:t.name.toLowerCase()}}var dt=9999;function Cn(e,t){return e.decimals>0?!1:t.every(n=>Math.abs(n)<=dt&&Math.abs(e.upperOf(n))<=dt)}function $n(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"?kn(t.size,t.origin??0):null,c=new Date(0);for(let d=0;d<r;d++){let m=e.values[d],p=NaN;if(Number.isNaN(m)||(l?p=l.lowerOf(m):(c.setTime(m),p=n.value(c))),Number.isNaN(p)){s[d]=-1,i[d]=NaN;continue}let g=u.get(p);g===void 0&&(g=a.length,a.push(p),u.set(p,g)),s[d]=g,i[d]=p}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=!Cn(l,a);f.labeler=(m,p)=>{let g=E(p,{maximumFractionDigits:l.decimals,signDisplay:"negative",useGrouping:d});return`${g.format(m)} \u2013 ${g.format(l.upperOf(m))}`}}else f.labeler=n.label;return f}var xn=Object.freeze(["equals","notEquals","contains","notContains","beginsWith","endsWith"]),ht=Object.freeze(["=","!=",">",">=","<","<=","between","notBetween"]),bt=Object.freeze(["year","month","day"]),he=500,wt=Object.freeze(["today","latest"]),oe=(e,t)=>typeof e=="string"&&t.includes(e)?e:null;function In(e,t,n){let o=t.toLocaleLowerCase(),r=n.toLocaleLowerCase();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!0}}function Nt(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"<=":return t<=n;case"between":return t>=r&&t<=s;case"notBetween":return t<r||t>s;default:return!0}}var Ln=(e,t)=>Nt(e.op,t,e.value,e.value2),Ot=e=>Math.floor(e/I)*I,je=e=>new Date(e).toISOString().slice(0,-14);function vt(e,t,n){let o=new Date(n),r=o.getUTCFullYear(),s=e==="year"?0:o.getUTCMonth(),i=e==="day"?o.getUTCDate():1,a=(f,d,m)=>new Date(0).setUTCFullYear(f,d,m),u=f=>e==="year"?a(r+f,s,i):e==="month"?a(r,s+f,i):a(r,s,i+f),l=u(1-t),c=u(1);return{from:Number.isNaN(l)?-1/0:l,to:Number.isNaN(c)?1/0:c}}function co(e,t,n){n=k(n,"relativeDateRange");let o=n.anchor??"today";if(!bt.includes(e)||!Number.isInteger(t)||t<1||t>he||!wt.includes(o)||o==="latest"&&n.latest===void 0)return null;let r=ue(n.timeZone),{from:s,to:i}=vt(e,t,we(o==="latest"?n.latest:n.now,r));return!Number.isFinite(s)||!Number.isFinite(i)?null:{from:je(s),to:je(i-I)}}function we(e,t){let n=ce(t),o=ee(e===void 0?Date.now():e,r=>le(r)?n(r):NaN);if(!le(o))throw new Pe("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"?ee(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"||typeof t=="number"||typeof t=="boolean"?String(t).slice(0,1e4):void 0}}function pt(e,t,n,o,r){let s=y(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=J(n.type,i);a===void 0?r.issue(`${o}.items`,`item ${JSON.stringify(i)} does not fit the ${n.type} field`,"itemType",{value:S(i),type:n.type}):t.items.push(a)}return t}function Mn(e,t,n,o,r){let s=oe(y(e,"op"),xn),i=y(e,"value");return s?typeof i!="string"||i.length>1e3?r.issue(o,"needs a text value","filterText"):Object.assign(t,{op:s,value:i}):r.issue(o,`unknown label operator ${JSON.stringify(y(e,"op"))}`,"filterLabelOp",{value:S(y(e,"op"))})}var At=(e,t)=>e.derived?t.derived.find(n=>n.name===e.name)?.by:void 0,Rn=e=>typeof e.value=="string";function Fn(e,t,n,o,r,s){if(n.type!=="number"&&n.type!=="date")return r.issue(o,"compares numbers and dates only","filterCompareField",{field:n.name});let i=At(n,s),a=n.type==="date"||i!==void 0&&D[i].source==="date"&&typeof y(e,"value")=="string"&&J("number",y(e,"value"))===void 0,u=m=>{if(!a){let g=m===void 0?void 0:J("number",m);return typeof g=="number"?g:null}let p=m===void 0||n.type!=="date"&&typeof m!="string"?void 0:J("date",m);return le(p)?je(Ot(p)):null},l=oe(y(e,"op"),ht),c=u(y(e,"value")),f=l==="between"||l==="notBetween",d=f?u(y(e,"value2")):null;return!l||c===null||f&&d===null?r.issue(o,`needs an operator and ${f?"two values":"a value"} of the ${n.type} field`,"filterCompareValue",{type:n.type}):Object.assign(t,{op:l,value:c},f?{value2:d}:{})}function En(e,t,n,o,r,s){let i=At(n,s);if(i===void 0?n.type!=="date":D[i].source!=="date")return r.issue(o,"needs a date field or a grouping of one","filterRelativeField",{field:n.name});let a=oe(y(e,"unit"),bt);if(!a)return r.issue(o,`unknown unit ${JSON.stringify(y(e,"unit"))}`,"filterRelativeUnit",{value:S(y(e,"unit"))});let u=P(y(e,"count"));if(u===null||!Number.isInteger(u)||u<1||u>he)return r.issue(o,`needs a whole count from 1 to ${he}`,"filterRelativeCount",{max:he});let l=y(e,"anchor"),c=l===void 0?"today":oe(l,wt);return c?Object.assign(t,{unit:a,count:u},c==="latest"?{anchor:c}:{}):r.issue(o,`unknown anchor ${JSON.stringify(l)}`,"filterRelativeAnchor",{value:S(l)})}function St(e,t,n,o){let r=y(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=St(e,o,r,s);if(!i)return;let a=P(y(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=y(e,"bottom");return Object.assign(t,{by:i,count:a,bottom:typeof u=="boolean"?u:!1})}function jn(e,t,n,o,r,s){let i=St(e,o,r,s);if(!i)return;let a=oe(y(e,"op"),ht),u=P(y(e,"value"));if(!a||u===null)return r.issue(o,"needs an operator and a number","filterValue");if(Object.assign(t,{by:i,op:a,value:u}),a==="between"||a==="notBetween"){let l=P(y(e,"value2"));if(l===null)return r.issue(o,`${a} needs value2`,"filterValue2",{value:a});t.value2=l}return t}function gt(e){return(t,n)=>{let o=new Map(t.dict.map((s,i)=>[s,i])),r=new Uint8Array(t.dict.length+1);for(let s of n.items){let i=s===null?-1:o.get(s);i!==void 0&&(r[i+1]=1)}return e?r:r.map(s=>1-s)}}function Un(e,t,n){let o=new Uint8Array(e.dict.length+1);for(let r=-1;r<e.dict.length;r++){let s=ne(e,r===-1?null:e.dict[r],n);o[r+1]=In(t.op,s,t.value)?1:0}return o}function _n(e,t){let n=e.type==="date",o=a=>n?Date.parse(`${a}T00:00Z`):a,[r,s]=[o(t.value),t.value2===void 0?void 0:o(t.value2)],i=new Uint8Array(e.dict.length+1);return e.dict.forEach((a,u)=>{i[u+1]=Nt(t.op,n&&typeof a=="number"?Ot(a):a,r,s)?1:0}),i}function zn(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 Pn(e,t,n,o){let{from:r,to:s}=vt(t.unit,t.count,(t.anchor==="latest"?zn(e):null)??o);return Uint8Array.from([0,...e.dict],(i,a)=>a>0&&typeof i=="number"&&i>=r&&i<s?1:0)}function Vn(e,t){return Uint8Array.from(t,n=>Ln(e,n)?1:0)}function Zn(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())s.filter(i=>typeof t[i]=="number").sort((i,a)=>(e.bottom?t[i]-t[a]:t[a]-t[i])||i-a).slice(0,e.count).forEach(i=>{o[i]=1});return o}var be=(e,t)=>typeof e.source=="function"?e.source(t):!!e.source,M=Object.freeze({include:{stage:"items",normalize:pt,allowed:gt(!0)},exclude:{stage:"items",normalize:pt,allowed:gt(!1)},label:{stage:"items",normalize:Mn,allowed:Un},compare:{stage:"items",normalize:Fn,allowed:_n,source:Rn},relative:{stage:"items",normalize:En,allowed:Pn,source:!0},top:{stage:"values",normalize:Dn,keep:Zn},value:{stage:"values",normalize:jn,keep:Vn}}),fo=Object.freeze(Object.keys(M)),Bn=Object.freeze(["label","compare","relative"]);function mo(e,t,n,o,r,s){let i=e.filters.filter(d=>d.field.toLowerCase()===t.toLowerCase()&&Bn.includes(d.type));if(!i.length)return null;let a=i.some(d=>d.type==="relative")?s():0,u=d=>M[d.type].allowed(be(M[d.type],d)?o:n,d,r,a),l=i.filter(d=>!be(M[d.type],d)).map(u),c=i.filter(d=>be(M[d.type],d)).map(u),f=new Uint8Array(n.dict.length+1);for(let d=0;d<n.codes.length;d++){let m=n.codes[d]+1;!f[m]&&l.every(p=>p[m]===1)&&c.every(p=>p[o.codes[d]+1]===1)&&(f[m]=1)}return f}function yt(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 Tt(e,t){let{view:n,columnOf:o,locale:r,today:s}=e,i=l=>n.derived.find(c=>c.name.toLowerCase()===l.toLowerCase())?.field??l;for(let l of n.filters){let c=M[l.type],f=o(be(c,l)?i(l.field):l.field);if(c.stage!=="items"||!f)continue;let d=c.allowed(f,l,r,s),m=f.codes;t=yt(t,p=>d[m[p]+1]===1)}let a=l=>{let c=n.rows.indexOf(l);if(c!==-1)return{fields:n.rows.slice(0,c+1),order:c};let f=n.cols.indexOf(l);return f!==-1?{fields:n.cols.slice(0,f+1),order:100+f}:{fields:[l],order:200}},u=n.filters.filter(l=>M[l.type].stage==="values").map((l,c)=>({f:l,i:c,...a(l.field)})).sort((l,c)=>l.order-c.order||l.i-c.i);for(let{f:l,fields:c}of u){let f=c.map(o);if(f.includes(null))continue;let{groupOf:d,paths:m}=e.groupBy(f,t),p=e.aggregateGroups(l.by,t,d,m.length),g=M[l.type].keep(l,p,m);t=yt(t,(h,N)=>g[d[N]]===1)}return t}var G=(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 kt(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?G(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?G(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 V=Object.freeze({percentOfGrandTotal:{format:"percent",compute:(e,t)=>G(e,t.raw(t.rowRoot,t.colRoot))},percentOfRowTotal:{format:"percent",compute:(e,t)=>G(e,t.raw(t.rowNode,t.colRoot))},percentOfColumnTotal:{format:"percent",compute:(e,t)=>G(e,t.raw(t.rowRoot,t.colNode))},percentOfParentRow:{format:"percent",compute:(e,t)=>G(e,t.raw(t.rowNode.parent??t.rowNode,t.colNode))},percentOfParentColumn:{format:"percent",compute:(e,t)=>G(e,t.raw(t.rowNode,t.colNode.parent??t.colNode))},differenceFromPrevious:{format:"number",alongAxis:!0,compute:kt(!1)},percentDifferenceFromPrevious:{format:"percent",alongAxis:!0,compute:kt(!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)}}),go=Object.freeze(Object.keys(V));var It=1;var Jn=Object.freeze(["auto","bar","line","area","pie","donut","heatmap"]),To=Object.freeze(["pie","donut"]),Gn=Object.freeze(["table","chart"]),ko=Object.freeze(["colorScale","dataBar"]),Wn=Object.freeze(["auto","off","value","percent","both"]),Hn=Object.freeze(["outside","inside"]),Kn=Object.freeze(["auto","bottom","right","off"]),Yn=Object.freeze(["auto","all","nth"]),qn=Object.freeze(["auto","on","off"]),xt=/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/;function Xn(){return{version:It,rows:[],cols:[],values:[],filters:[],derived:[],sort:[],totals:{grandTotalRow:!0,grandTotalColumn:!0,rowSubtotals:!0,colSubtotals:!0},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}}}var Qn=Object.freeze({});function er(e){return tr(e,Qn,It)}function tr(e,t,n){let o=[];if(!ae(e))return{view:null,issues:[{path:"",message:"not a view object",code:"notView"}]};let r=y(e,"version")??n;if(!Number.isInteger(r)||r<1)return{view:null,issues:[{path:"version",message:`unknown version ${JSON.stringify(r)}`,code:"badVersion",params:{value:S(r)}}]};if(r>n)return{view:null,issues:[{path:"version",message:`version ${r} is newer than this pivotkit-core reads (${n}); update pivotkit-core`,code:"newerVersion",params:{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:[{path:"version",message:`no migration from version ${i}`,code:"noMigration",params:{value:i}}]};s=a(s)}return{view:{...s,version:n},issues:o}}function se(e,t,n){return typeof e=="string"&&t.includes(e)?e:n}function Ne(e,t){return typeof e=="boolean"?e:t}function Lt(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 q(e,t,n,o,r){let s=t.split(".").reduce((i,a)=>y(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})}}function nr(e,t,n){q(e,"derived",n.limits.derived,n,(o,r)=>{let s=n.text(y(o,"name")),i=n.fields.get(String(y(o,"field")??"").toLowerCase()),a=y(o,"by"),u=typeof a=="string"&&Object.hasOwn(D,a)?D[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:S(y(o,"field"))});if(!u)return n.issue(r,"unknown grouping","groupingUnknown",{value:S(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=P(y(o,"size"));if(c===null||c<De)return n.issue(r,`bins need a size of at least ${De}`,"binSize");l.size=c,l.origin=P(y(o,"origin"))??0}t.derived.push(l),n.fields.set(s.toLowerCase(),{name:s,type:u.type,derived:!0})})}function rr(e,t,n){let o=new Set;for(let r of["rows","cols"])q(e,r,n.limits.axisFields,n,(s,i)=>{let a=n.resolve(s);if(!a)return n.issue(i,`unknown field ${JSON.stringify(s)}`,"unknownField",{field:S(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 or(e,t,n){let o=y(e,"type");if(o==="colorScale"){let r=y(e,"colors"),s=Array.isArray(r)?r.filter(i=>typeof i=="string"&&xt.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=y(e,"color"),s=typeof r=="string"&&xt.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:S(o)}),null}function sr(e,t,n,o){let r=typeof e=="string"?{type:e}:e,s=y(r,"type"),i=typeof s=="string"&&Object.hasOwn(V,s)?V[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:se(y(r,"axis"),["rows","cols"],"rows")}:(o.issue(n,`unknown show-as ${JSON.stringify(s)}`,"unknownShowAs",{value:S(s)}),null)}function ir(e,t,n){q(e,"values",n.limits.values,n,(o,r)=>{let s=n.valueRef(o,r);if(!s)return;let i=n.resultType(s)==="number",a={...s,format:null,label:null,showAs:null,conditional:null},u=y(o,"format");u!=null&&(at(u)?a.format=u.trim().toLowerCase():n.issue(`${r}.format`,`unknown format ${JSON.stringify(u)}`,"unknownFormat",{value:S(u)}));let l=y(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=y(o,"showAs");c!=null&&(i?a.showAs=sr(c,s,`${r}.showAs`,n):n.issue(`${r}.showAs`,`${s.agg} has no number to show as ${JSON.stringify(y(c,"type")??c)}`,"showAsNotNumber",{agg:s.agg}));let f=y(o,"conditional");f!=null&&(i?a.conditional=or(f,`${r}.conditional`,n):n.issue(`${r}.conditional`,"conditional formatting needs a number value","conditionalNotNumber",{agg:s.agg})),t.values.push(a)})}function ar(e,t,n){q(e,"filters",n.limits.filters,n,(o,r)=>{let s=n.resolve(y(o,"field")),i=y(o,"type"),a=typeof i=="string"&&Object.hasOwn(M,i)?M[i]:null;if(!s)return n.issue(r,`unknown field ${JSON.stringify(y(o,"field"))}`,"unknownField",{field:S(y(o,"field"))});if(!a)return n.issue(r,`unknown filter type ${JSON.stringify(i)}`,"unknownFilterType",{value:S(i)});let u=a.normalize(o,{field:s.name,type:i},s,r,n,t);u&&t.filters.push(u)})}var lr=Object.freeze(["label","value","custom"]);function ur(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=J(t.type,i);a===void 0?o.issue(n,`item ${JSON.stringify(i)} does not fit the ${t.type} field`,"itemType",{value:S(i),type:t.type}):r.has(a)||(r.add(a),s.push(a))}return s}function cr(e,t,n){let o=new Set;q(e,"sort",n.limits.sort,n,(r,s)=>{let i=n.resolve(y(r,"field"));if(!i||o.has(i.name))return i?n.issue(s,`"${i.name}" is sorted twice`,"sortedTwice",{field:i.name}):n.issue(s,`unknown field ${JSON.stringify(y(r,"field"))}`,"unknownField",{field:S(y(r,"field"))});let a=se(y(r,"by"),lr,"label"),u={field:i.name,by:a,order:se(y(r,"order"),["asc","desc"],"asc")};if(a==="custom"){let l=ur(y(r,"items"),i,`${s}.items`,n);if(!l)return;u.items=l}if(a==="value"){let l=y(r,"value")===void 0?n.defaultRef(t):n.valueRef(y(r,"value"),`${s}.value`);if(!l)return;u.value=l}o.add(i.name),t.sort.push(u)})}function fr(e,t,n){let o=y(e,"totals");if(o!==void 0){if(!ae(o))return n.issue("totals","not an object","badTotals");for(let r of Object.keys(t.totals))t.totals[r]=Ne(y(o,r),t.totals[r])}}function dr(e,t,n){for(let o of["rows","cols"]){let r=t[o].map(i=>n.fields.get(i.toLowerCase()).type),s=new Set;q(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 mr(e,t,n){let o=y(e,"display");t.display=se(o,Gn,t.display),o!==void 0&&t.display!==o&&n.issue("display",`unknown display ${JSON.stringify(o)}`,"unknownSetting",{value:S(o)});let r=y(e,"chart");if(r!==void 0){let s=(a,u,l)=>{let c=y(r,a),f=se(c,u,l);return c!==void 0&&f!==c&&n.issue(`chart.${a}`,`unknown ${a} ${JSON.stringify(c)}`,"unknownSetting",{value:S(c)}),f},i=y(r,"title");t.chart={type:s("type",Jn,t.chart.type),stacked:Ne(y(r,"stacked"),!1),horizontal:Ne(y(r,"horizontal"),!1),valueLabels:s("valueLabels",Wn,"auto"),legend:s("legend",Kn,"auto"),title:i==null?null:n.text(i),smooth:Ne(y(r,"smooth"),!1),axisLabels:s("axisLabels",Yn,"auto"),groupLabels:s("groupLabels",qn,"auto"),labelPosition:s("labelPosition",Hn,"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 pr(e,t,n){let o=y(e,"formatting"),r=y(o,"locale");r!=null&&(t.formatting.locale=Be(r),t.formatting.locale===null&&n.issue("formatting.locale",`unknown locale ${JSON.stringify(r)}`,"unknownLocale",{value:S(r)}));let s=y(o,"timeZone");s!=null&&(t.formatting.timeZone=Ge(s),t.formatting.timeZone===null&&n.issue("formatting.timeZone",`unknown time zone ${JSON.stringify(s)}`,"unknownTimeZone",{value:S(s)}))}var gr=[nr,rr,ir,ar,cr,fr,dr,mr,pr];function yr(e,t,n){let o=new Map(Lt(e).map(s=>[s.name.toLowerCase(),s])),r={limits:t,fields:o,issue:(s,i,a,u)=>{n.push(u?{path:s,message:i,code:a,params:u}:{path:s,message:i,code:a})},text:s=>{if(typeof s!="string")return null;let i=s.trim();return i===""||i.length>t.name?null:i},resolve:s=>typeof s=="string"&&s.length<=t.name?o.get(s.trim().toLowerCase()):void 0,resultType:s=>j(s.agg).resultType(s.field?o.get(s.field.toLowerCase()).type:"number"),defaultRef:s=>s.values.length?{field:s.values[0].field,agg:s.values[0].agg}:{field:null,agg:"count"},valueRef:(s,i)=>{if(!ae(s))return r.issue(i,"not a value reference","notValueRef"),null;let a=y(s,"agg"),u=y(s,"field"),l=u==null?null:r.resolve(u);return j(a)?l===void 0?(r.issue(i,`unknown field ${JSON.stringify(u)}`,"unknownField",{field:S(u)}),null):l===null&&a!=="count"?(r.issue(i,`${a} needs a field`,"aggregatorNeedsField",{agg:a}),null):l&&!ke(a,l.type)?(r.issue(i,`${a} does not work on the ${l.type} field "${l.name}"`,"aggregatorType",{agg:a,type:l.type,field:l.name}),null):{field:l?l.name:null,agg:a}:(r.issue(i,`unknown aggregator ${JSON.stringify(a)}`,"unknownAggregator",{value:S(a)}),null)}};return r}function Mt(e,t,n){n=k(n,"normalize");let o=z(n),r=[],s=Xn(),i=(f,d,m,p)=>({view:s,issues:[...r,p?{path:f,message:d,code:m,params:p}:{path:f,message:d,code:m}]}),a;try{let f=typeof e=="string"?e:JSON.stringify(e);if(typeof f!="string")return i("","not a view object","notView");if(f.length>o.json)return i("",`larger than ${o.json} characters`,"tooLarge",{max:o.json});a=JSON.parse(f)}catch{return i("","not valid JSON","notJson")}let u=er(a);if(r.push(...u.issues),u.view===null)return{view:s,issues:r};let l=u.view;for(let f of Object.keys(l))Object.hasOwn(s,f)||r.push({path:f.slice(0,100),message:"unknown key",code:"unknownKey"});let c=yr(t,o,r);for(let f of gr)f(l,s,c);return{view:s,issues:r}}function Co(e,t){return Lt(t).concat((e.derived||[]).map(n=>({name:n.name,type:D[n.by].type,derived:!0})))}var _e=e=>`${e.agg}\0${e.field??""}`;function hr(e,t){let n=new Map(t.derived.map(r=>[r.name.toLowerCase(),r])),o=new Map;return r=>{if(r==null)return null;let s=r.toLowerCase();if(!o.has(s)){let i=n.get(s);o.set(s,i?mt(e,i):e.column(r)??null)}return o.get(s)}}function Ft(e,t,n,o,r){let s=n?$e(n,r,e.cache):null;return j(t.agg).create(n,o,s,i=>ne(n,n.dict[i],r))}function br(e,t,n,o){let r=n.nodes.length,s=(t.depth+1)*(n.depth+1);x("pivotCells",Math.max(t.leafCount,n.leafCount)*s,o,"pivot cells");let i=m=>{let p=[];for(let g=m;g;g=g.parent)p.push(g.id);return p},a=new Map,u=new Map,l=new Int32Array(e.length),c=new Map,f=[],d=new Map;for(let m=0;m<e.length;m++){let p=t.leafOf[m],g=n.leafOf[m],h=p*r+g,N=c.get(h);if(N===void 0){N=c.size,c.set(h,N),x("pivotCells",f.length+s,o,"pivot cells"),a.has(p)||a.set(p,i(t.nodes[p])),u.has(g)||u.set(g,i(n.nodes[g]));for(let O of a.get(p))for(let b of u.get(g)){let v=O*r+b,T=d.get(v);T===void 0&&(T=d.size,d.set(v,T)),f.push(T)}}l[m]=N}return e.length===0&&d.set(0,0),{cellIndex:d,pairOf:l,cells:f,perPair:s}}function wr(e,t,n,o,r,s,i,a){let u=i.nodes.length,{cellIndex:l,pairOf:c,cells:f,perPair:d}=br(r,s,i,a),m=l.size,p=t.map(b=>Ft(e,b,b.field?n(b.field):null,m,o));for(let b of p)for(let v=0;v<r.length;v++){let T=c[v]*d,L=r[v];for(let R=T;R<T+d;R++)b.add(f[R],L)}let g=Symbol("unset"),h=t.map(()=>new Array(m).fill(g));return{value:(b,v,T)=>{let L=l.get(b.id*u+v.id);if(L===void 0)return null;let R=h[T][L];return R===g&&(R=h[T][L]=p[T].get(L)),R},has:(b,v)=>r.length>0&&l.has(b.id*u+v.id)}}function Rt(e,t,n,o,r,s){let i=a=>{if(a.children.length===0)return;let u=o.get(t[a.depth])??{by:"label",order:"asc"},l=u.order==="desc"?-1:1,c=s(n[a.depth]),f=m=>m.code<0?1/0:c[m.code],d=(m,p)=>{let g=f(m),h=f(p);return g===h?0:g===1/0||h===1/0?g===1/0?1:-1:(g-h)*l};if(u.by==="custom"){let m=new Map(u.items.map((g,h)=>[g,h])),p=g=>m.has(g.key)?m.get(g.key):1/0;a.children.sort((g,h)=>{let N=p(g),O=p(h);return N===1/0&&O===1/0?d(g,h):N===O?0:N===1/0?1:O===1/0?-1:(N-O)*l})}else if(u.by==="value"){let m=new Map(a.children.map(p=>[p,r(p,u.value)]));a.children.sort((p,g)=>{let h=m.get(p),N=m.get(g);return h===null||N===null?h===N?d(p,g):h===null?1:-1:(h-N)*l||d(p,g)})}else a.children.sort(d);a.children.forEach((m,p)=>{m.index=p,i(m)})};i(e.root)}function zo(e,t,n){n=k(n,"computePivot"),$(Ye(e),"computePivot(data, view): data must come from encode()");let o=z(n),{view:r,issues:s}=Mt(t,e,n),i=K(r.formatting.locale,n.locale);r.formatting.timeZone&&r.formatting.timeZone!==e.timeZone&&s.push({path:"formatting.timeZone",message:`the view was made for ${r.formatting.timeZone}, the data is encoded in ${e.timeZone}; pass timeZone to encode()`,code:"timeZoneMismatch",params:{value:r.formatting.timeZone,zone:e.timeZone}});let a=hr(e,r),u=w=>$e(w,i,e.cache),l={view:r,locale:i,today:we(n.now,e.timeZone),columnOf:a,groupBy:Fe,aggregateGroups:(w,A,F,_)=>{let X=Ft(e,w,w.field?a(w.field):null,_,i);for(let Z=0;Z<A.length;Z++)X.add(F[Z],A[Z]);return Array.from({length:_},(Z,Ae)=>X.get(Ae))}},c=new Int32Array(e.length);for(let w=0;w<c.length;w++)c[w]=w;c=Tt(l,c);let f=new Map,d=[],m=w=>{let A=_e(w);return f.has(A)||(f.set(A,d.length),d.push({field:w.field,agg:w.agg})),f.get(A)},p=r.values.map(m);for(let w of r.sort)w.by==="value"&&m(w.value);let g=d.reduce((w,A)=>w+(j(A.agg).keepsValues?Ve:1),0);x("work",c.length*(r.rows.length+1)*(r.cols.length+1)*g,o.work,"cell updates");let h=r.rows.map(a),N=r.cols.map(a),O={...Ee(h,c,{max:o.groups,used:0}),depth:h.length},b={...Ee(N,c,{max:o.groups,used:O.nodes.length}),depth:N.length},{value:v,has:T}=wr(e,d,a,i,c,O,b,o.pivotCells),L=w=>typeof w=="number"?w:null,R=new Map(r.sort.map(w=>[w.field,w]));Rt(O,r.rows,h,R,(w,A)=>L(v(w,b.root,f.get(_e(A)))),u),Rt(b,r.cols,N,R,(w,A)=>L(v(O.root,w,f.get(_e(A)))),u);let zt=r.values.map(w=>{if(w.showAs)return"number";let A=w.field?a(w.field):null;return j(w.agg).resultType(A?A.type:"number")}),ve=(w,A,F)=>v(w,A,p[F]),Pt=(w,A,F)=>{let _=r.values[F],X=ve(w,A,F);return _.showAs?V[_.showAs.type].compute(L(X),{rowNode:w,colNode:A,rowRoot:O.root,colRoot:b.root,raw:(Z,Ae)=>L(ve(Z,Ae,F)),axis:_.showAs.axis}):X};return{view:r,issues:s,locale:i,timeZone:e.timeZone,encoded:e,rows:c,rowFields:r.rows,colFields:r.cols,rowColumns:h,colColumns:N,values:r.values,valueTypes:zt,rowRoot:O.root,colRoot:b.root,rowNodes:O.nodes,colNodes:b.nodes,rowLeafOf:O.leafOf,colLeafOf:b.leafOf,value:ve,display:Pt,hasRows:T,label:(w,A,F=C)=>{if(!A.parent)return F.grandTotal??C.grandTotal;let _=(w==="cols"?N:h)[A.depth-1];return ne(_,A.key,i,F)}}}function Et(e){let t=e;return t!==null&&typeof t=="object"&&typeof t.display=="function"&&t.rowRoot!==void 0}function Dt(e){return JSON.stringify(e)}function ze(e,t,n,o,r){let s=new Set(n.map(Dt)),i=[];if(t===0)return i.push({node:e,kind:"leaf"}),i;let a=u=>{if(u.children.length===0){i.push({node:u,kind:"leaf"});return}if(s.has(Dt(u.path))){i.push({node:u,kind:"collapsed"});return}u.children.forEach(a),o&&i.push({node:u,kind:"subtotal"})};return e.children.forEach(a),(r||i.length===0)&&i.push({node:e,kind:"grand"}),i}var Nr=new Set(["average","median","stdev","stdevp","var","varp"]),Oe=2;function Or(e,t){let n=t?e.column(t):void 0;return!n||n.type!=="number"?Oe:e.cache.getOrSet(`decimals:${n.id}`,()=>{let o=0;for(let r of n.dict)if(typeof r=="number"&&(o=Math.max(o,Q(r)),o>=Oe))return Oe;return o})}function vr(e,t){let n=e.values[t],o=n.showAs?V[n.showAs.type].format:null;if(o==="percent")return n.format&&Y(n.format).name==="percent"?n.format:"percent:1";if(o==="integer")return"integer";if(n.format)return n.format;let r=e.valueTypes[t];if(r==="text")return"text";if(r==="date"){let s=e.encoded.column(n.field);return s&&s.dateOnly===!1?"datetime":"date"}return n.agg==="count"||n.agg==="countUnique"?"integer":`number:${Nr.has(n.agg)?Oe:Or(e.encoded,n.field)}`}function Ar(e,t=C){if(e.label)return e.label;let n;if(!e.field)n=t.countRows??C.countRows;else{let a={...C.aggregators,...t.aggregators||{}},u=Object.hasOwn(a,e.agg)?a[e.agg]:e.agg;n=me(t.valueName??C.valueName,{agg:u,field:te(e.field,t)})}if(!e.showAs)return n;let o={...C.showAs,...t.showAs||{}},r=e.showAs.type,s=Object.hasOwn(o,r)?o[r]:r,i=e.field&&e.agg==="sum"?te(e.field,t):n;return me(t.showAsName??C.showAsName,{showAs:s,value:i})}var W=e=>e==="grand"?2:e==="subtotal"?1:0;function Sr(e,t){let n=e;for(;n&&n.depth>t;)n=n.parent;return n}function jt(e,t,n,o,r,s){for(let i=t;i<o;i++)for(let a=n;a<r;a++){let u=e[i][a];if(!u||u.mergeKey===void 0)continue;let l=u.mergeKey,c=a+1;for(;c<r&&e[i][c]&&e[i][c].mergeKey===l;)c++;let f=i+1;for(;f<o;){let d=!0;for(let m=a;m<c;m++)if(!e[f][m]||e[f][m].mergeKey!==l){d=!1;break}if(!d)break;f++}if(c-a>1||f-i>1){u.colSpan=c-a,u.rowSpan=f-i,s.push({row:i,col:a,rowSpan:f-i,colSpan:c-a});for(let d=i;d<f;d++)for(let m=a;m<c;m++)(d!==i||m!==a)&&(e[d][m]=null)}}}function Tr(e,t){let n=e.map(Ze),o=n.length===3?t<=.5?0:1:0,r=n.length===3?t<=.5?t*2:(t-.5)*2:t,s=n[o],i=n[o+1];return"#"+s.map((a,u)=>Math.round(a+(i[u]-a)*r).toString(16).padStart(2,"0")).join("")}function qo(e){let t=e;return t!==null&&typeof t=="object"&&Array.isArray(t.rows)&&Array.isArray(t.merges)&&Number.isInteger(t.columnCount)}var Ut=(e,t,n)=>({axis:e,path:t.path,collapsed:n});function _t(e,t,{node:n,kind:o},r){let s=t==="cols"?"colHeader":"rowHeader",i=f=>t==="cols"?{colPath:f.path}:{rowPath:f.path},a=f=>e.result.label(t,f,e.labels),u=o==="grand"?0:n.depth-1;if(o!=="leaf"&&r===u){let d={text:o==="collapsed"?a(n):n.parent?me(e.labels.total,{label:a(n)}):e.labels.grandTotal,value:o==="collapsed"?n.key:null,kind:s,total:W(o),...i(n),mergeKey:`s${n.id}:${o}`};return o==="collapsed"&&(d.toggle=Ut(t,n,!0)),d}if(o!=="leaf"&&r>u)return{text:"",value:null,kind:s,total:W(o),mergeKey:`s${n.id}:${o}`};let l=Sr(n,r+1),c={text:a(l),value:l.key,kind:s,total:0,...i(l),mergeKey:`n${l.id}`};return l.children.length>0&&(c.toggle=Ut(t,l,!1)),c}function kr(e){let{view:t,k:n,h:o,width:r}=e,s=Array.from({length:o},()=>new Array(r).fill(null));for(let a=0;a<o;a++)for(let u=0;u<n;u++)a===o-1?s[a][u]={text:t.rows.length>0?te(t.rows[u],e.labels):"",value:null,kind:"corner",total:0,field:t.rows.length>0?t.rows[u]:void 0}:u===n-1?s[a][u]={text:te(t.cols[a],e.labels),value:null,kind:"corner",total:0,field:t.cols[a]}:s[a][u]={text:"",value:null,kind:"corner",total:0,mergeKey:"corner"};let i=t.values.length===1;return e.dataColumns.forEach(({line:a,vi:u},l)=>{let c=n+l;for(let d=0;d<t.cols.length;d++)s[d][c]=_t(e,"cols",a,d);let f={text:u>=0?e.names[u]:"",value:null,kind:"colHeader",total:i?0:W(a.kind),valueIndex:u>=0?u:void 0,colPath:i?[]:a.node.path};i&&(f.mergeKey="value"),s[o-1][c]=f}),s}function Cr(e,t){let{result:n,view:o,k:r,width:s}=e;return t.map(i=>{let{node:a,kind:u}=i,l=new Array(s).fill(null);for(let c=0;c<r;c++)l[c]=o.rows.length===0?{text:o.values.length>0||o.cols.length>0?e.labels.grandTotal:"",value:null,kind:"rowHeader",total:2,rowPath:[]}:_t(e,"rows",i,c);return e.dataColumns.forEach(({line:c,vi:f},d)=>{let m=Math.max(W(u),W(c.kind)),p=n.hasRows(a,c.node);if(f<0){l[r+d]={text:"",value:null,kind:"value",total:m,rowPath:a.path,colPath:c.node.path,hasRows:p};return}let g=n.display(a,c.node,f);l[r+d]={text:g===null?"":e.formatters[f](g),value:g,kind:"value",total:m,valueType:o.values[f].showAs?"number":n.valueTypes[f],format:e.formats[f],rowPath:a.path,colPath:c.node.path,valueIndex:f,hasRows:p}}),l})}function $r(e,t){e.view.values.forEach((n,o)=>{if(!n.conditional)return;let r=[];for(let a of t)for(let u=e.k;u<e.width;u++){let l=a[u];l&&l.valueIndex===o&&l.total===0&&typeof l.value=="number"&&r.push(l)}if(r.length===0)return;let s=1/0,i=-1/0;for(let a of r)s=Math.min(s,a.value),i=Math.max(i,a.value);for(let a of r)if(n.conditional.type==="colorScale"){let u=i===s?.5:(a.value-s)/(i-s),l=n.conditional.colors;a.style={scale:u,color:l.length>=2?Tr(l,u):null}}else{let u=Math.min(0,s),l=Math.max(0,i);a.style={bar:l===u?0:(a.value-u)/(l-u),color:n.conditional.color}}})}function Xo(e,t){t=k(t,"toGrid"),$(Et(e),"toGrid(result): result must come from computePivot()");let n=z(t),o=e.view,r=K(o.formatting.locale,t.locale??e.locale),s={...C,...t.labels||{}},i=ze(e.rowRoot,o.rows.length,o.collapsed.rows,o.totals.rowSubtotals,o.totals.grandTotalRow),u=ze(e.colRoot,o.cols.length,o.collapsed.cols,o.totals.colSubtotals,o.totals.grandTotalColumn).flatMap(b=>o.values.length===0?[{line:b,vi:-1}]:o.values.map((v,T)=>({line:b,vi:T}))),l=Math.max(1,o.rows.length),c=o.cols.length+1,f=l+u.length;x("cells",(c+i.length)*f,n.cells,"grid cells");let d=o.values.map((b,v)=>vr(e,v)),m={result:e,view:o,labels:s,dataColumns:u,k:l,h:c,width:f,formats:d,formatters:d.map(b=>Re(b,r)),names:o.values.map(b=>Ar(b,s))},p=kr(m),g=Cr(m,i),h=[];jt(p,0,0,c,f,h);let N=[];jt(g,0,0,g.length,l,N),h.push(...N.map(b=>({...b,row:b.row+c}))),$r(m,g);let O=p.concat(g);for(let b of O)for(let v of b)v&&delete v.mergeKey;return{rows:O,headerRows:c,rowHeaderColumns:l,columnCount:f,merges:h,dataColumns:u.map(({line:b,vi:v})=>({colPath:b.node.path,valueIndex:v,total:W(b.kind)})),bodyRows:i.map(({node:b,kind:v})=>({rowPath:b.path,total:W(v),collapsed:v==="collapsed"})),formats:d,showAs:o.values.map(b=>b.showAs?b.showAs.type:null),valueNames:m.names,conditional:o.values.map(b=>b.conditional),locale:r,timeZone:e.timeZone}}var es=Object.freeze({colorScale:Object.freeze(["#f8696b","#ffeb84","#63be7b"]),dataBar:"#638ec6",pieRadius:Object.freeze(["0%","70%"]),donutRadius:Object.freeze(["42%","70%"])});export{Se as a,Rr as b,Ye as c,ln as d,Er as e,E as f,eo as g,to as h,no as i,ro as j,mt as k,C as l,te as m,ne as n,$e as o,xn as p,ht as q,bt as r,he as s,wt as t,co as u,we as v,fo as w,mo as x,Zr as y,Y as z,Br as A,at as B,Re as C,Jr as D,Me as E,Gr as F,V as G,go as H,It as I,Jn as J,To as K,Gn as L,ko as M,Wn as N,Hn as O,Kn as P,Yn as Q,qn as R,Xn as S,Mt as T,Co as U,ct as V,Yr as W,zo as X,Et as Y,ze as Z,vr as _,Ar as $,qo as aa,Xo as ba,es as ca};
@@ -1,4 +1,4 @@
1
- import{c as oe,e as ne}from"./chunk-UTPKLCNX.js";import{A as ee,B as N,Y as R,_ as te,b as G,e as Y,h as q,n as J,o as W,v as Z,w as K,x as Q,y as L}from"./chunk-JGSNJX3N.js";import{b as d,c as _,d as A,e as P,f as S,g,l as z,q as V}from"./chunk-MB64GADT.js";import"./chunk-DCANE7XH.js";var ye=25569,$e=1048576,Ce=16384,re=32767,Te=Date.UTC(1900,0,1),ge=Date.UTC(1900,2,1),be=Date.UTC(1e4,0,1),Fe=new Set(["history"]);function M(e){return String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/[\u0000-\u0008\u000B\u000C\u000E-\u001F￾￿]/g,"").replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,"")}function E(e,t){let o="",n=e+1;for(;n>0;){let r=(n-1)%26;o=String.fromCharCode(65+r)+o,n=Math.floor((n-1)/26)}return`${o}${t+1}`}function Se(e){if(!(e>=Te&&e<be))return null;let t=e/A+ye;return e<ge?t-1:t}function se(e){return`FF${z(e).toUpperCase()}`}function Ee(e){let t=String(e??"").replace(/[\u0000-\u001F\u007F\\/?*[\]:]/g," ").replace(/^'+|'+$/g,"").trim().slice(0,31).trim();return Fe.has(t.toLowerCase())?`${t} 1`:t||"Pivot"}function ke(e){let t=new Map;for(let[n,r]of e)t.has(r)||t.set(r,[]),t.get(r).push(n);let o=[];for(let[n,r]of[...t.entries()].sort((a,i)=>a[0]-i[0])){r.sort((s,c)=>s-c);let a=r[0],i=r[0];for(let s=1;s<=r.length;s++){if(s<r.length&&r[s]===i+1){i=r[s];continue}o.push(a===i?E(n,a):`${E(n,a)}:${E(n,i)}`),s<r.length&&(a=i=r[s])}}return o.join(" ")}function X(e,t){t=g(t,"toXlsx"),d(R(e),"toXlsx(grid): grid must come from toGrid()"),_("xlsxRows",e.rows.length,$e,"rows (an Excel sheet)"),_("xlsxColumns",e.columnCount,Ce,"columns (an Excel sheet)");let o={...te,...t.theme||{}},n=e.locale,r=new Map,a=[{fmt:0,bold:!1}],i=new Map([["0|false",0]]),s=(u,p)=>{let v=0;u&&u!=="General"&&(r.has(u)||r.set(u,164+r.size),v=r.get(u));let y=`${v}|${p}`;return i.has(y)||(i.set(y,a.length),a.push({fmt:v,bold:p})),i.get(y)},c=(u,p,v)=>{let y=p.length>re?p.slice(0,re):p;return`<c r="${u}" t="inlineStr" s="${s("General",v)}"><is><t xml:space="preserve">${M(y)}</t></is></c>`},m=(u,p,v,y)=>`<c r="${u}" s="${s(v,y)}"><v>${p}</v></c>`,h=new Array(e.columnCount).fill(6),f=new Map,x=e.rows.map((u,p)=>{let v=p<e.headerRows,y=u.map((l,F)=>{if(!l)return"";let $=E(F,p),T=v||l.total>0;if((!l.colSpan||l.colSpan===1)&&(h[F]=Math.max(h[F],Math.min(60,l.text.length+2))),l.kind==="value"&&typeof l.value=="number"&&Number.isFinite(l.value)){if(l.total===0&&l.valueIndex!==void 0&&e.conditional&&e.conditional[l.valueIndex]){let C=f.get(l.valueIndex)??{cells:[],min:1/0,max:-1/0};C.cells.push([p,F]),C.min=Math.min(C.min,l.value),C.max=Math.max(C.max,l.value),f.set(l.valueIndex,C)}if(l.valueType==="date"){let C=Se(l.value);return C===null?c($,l.text,T):m($,C,N(l.format,l.value,n),T)}return m($,l.value,N(l.format,l.value,n),T)}return(l.kind==="rowHeader"||l.kind==="colHeader")&&typeof l.value=="number"&&l.text===String(l.value)?m($,l.value,"General",T):l.text===""?T?`<c r="${$}" s="${s("General",!0)}"/>`:"":c($,l.text,T)});return`<row r="${p+1}">${y.join("")}</row>`}),b=1,D=[...f.entries()].map(([u,{cells:p,min:v,max:y}])=>{let l=e.conditional[u],F;if(l.type==="colorScale"){let $=l.colors.length>=2?l.colors:o.colorScale,T=$.length===3?'<cfvo type="min"/><cfvo type="percentile" val="50"/><cfvo type="max"/>':'<cfvo type="min"/><cfvo type="max"/>';F=`<cfRule type="colorScale" priority="${b++}"><colorScale>${T}${$.map(C=>`<color rgb="${se(C)}"/>`).join("")}</colorScale></cfRule>`}else{let $=v>0?'<cfvo type="num" val="0"/>':'<cfvo type="min"/>',T=y<0?'<cfvo type="num" val="0"/>':'<cfvo type="max"/>';F=`<cfRule type="dataBar" priority="${b++}"><dataBar>${$}${T}<color rgb="${se(l.color||o.dataBar)}"/></dataBar></cfRule>`}return`<conditionalFormatting sqref="${ke(p)}">${F}</conditionalFormatting>`}),w=e.headerRows>0||e.rowHeaderColumns>0?`<pane${e.rowHeaderColumns?` xSplit="${e.rowHeaderColumns}"`:""}${e.headerRows?` ySplit="${e.headerRows}"`:""} topLeftCell="${E(e.rowHeaderColumns,e.headerRows)}" activePane="${e.rowHeaderColumns&&e.headerRows?"bottomRight":e.headerRows?"bottomLeft":"topRight"}" state="frozen"/>`:"",j=h.map((u,p)=>`<col min="${p+1}" max="${p+1}" width="${u}" customWidth="1"/>`).join(""),pe=e.merges.length?`<mergeCells count="${e.merges.length}">${e.merges.map(u=>`<mergeCell ref="${E(u.col,u.row)}:${E(u.col+u.colSpan-1,u.row+u.rowSpan-1)}"/>`).join("")}</mergeCells>`:"",k=`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
1
+ import{c as oe,e as ne}from"./chunk-UTPKLCNX.js";import{A as K,B as Q,C as L,E as ee,F as N,aa as R,c as Y,ca as te,f as q,l as J,m as W,z as Z}from"./chunk-WXBFHMFX.js";import{c as G}from"./chunk-O2TTHYGT.js";import{b as d,c as _,d as A,e as P,f as S,g,l as z,q as V}from"./chunk-MB64GADT.js";import"./chunk-DCANE7XH.js";var ye=25569,$e=1048576,Ce=16384,re=32767,Te=Date.UTC(1900,0,1),ge=Date.UTC(1900,2,1),be=Date.UTC(1e4,0,1),Fe=new Set(["history"]);function M(e){return String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/[\u0000-\u0008\u000B\u000C\u000E-\u001F￾￿]/g,"").replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,"")}function E(e,t){let o="",n=e+1;for(;n>0;){let r=(n-1)%26;o=String.fromCharCode(65+r)+o,n=Math.floor((n-1)/26)}return`${o}${t+1}`}function Se(e){if(!(e>=Te&&e<be))return null;let t=e/A+ye;return e<ge?t-1:t}function se(e){return`FF${z(e).toUpperCase()}`}function Ee(e){let t=String(e??"").replace(/[\u0000-\u001F\u007F\\/?*[\]:]/g," ").replace(/^'+|'+$/g,"").trim().slice(0,31).trim();return Fe.has(t.toLowerCase())?`${t} 1`:t||"Pivot"}function ke(e){let t=new Map;for(let[n,r]of e)t.has(r)||t.set(r,[]),t.get(r).push(n);let o=[];for(let[n,r]of[...t.entries()].sort((a,i)=>a[0]-i[0])){r.sort((s,c)=>s-c);let a=r[0],i=r[0];for(let s=1;s<=r.length;s++){if(s<r.length&&r[s]===i+1){i=r[s];continue}o.push(a===i?E(n,a):`${E(n,a)}:${E(n,i)}`),s<r.length&&(a=i=r[s])}}return o.join(" ")}function X(e,t){t=g(t,"toXlsx"),d(R(e),"toXlsx(grid): grid must come from toGrid()"),_("xlsxRows",e.rows.length,$e,"rows (an Excel sheet)"),_("xlsxColumns",e.columnCount,Ce,"columns (an Excel sheet)");let o={...te,...t.theme||{}},n=e.locale,r=new Map,a=[{fmt:0,bold:!1}],i=new Map([["0|false",0]]),s=(u,p)=>{let v=0;u&&u!=="General"&&(r.has(u)||r.set(u,164+r.size),v=r.get(u));let y=`${v}|${p}`;return i.has(y)||(i.set(y,a.length),a.push({fmt:v,bold:p})),i.get(y)},c=(u,p,v)=>{let y=p.length>re?p.slice(0,re):p;return`<c r="${u}" t="inlineStr" s="${s("General",v)}"><is><t xml:space="preserve">${M(y)}</t></is></c>`},m=(u,p,v,y)=>`<c r="${u}" s="${s(v,y)}"><v>${p}</v></c>`,h=new Array(e.columnCount).fill(6),f=new Map,x=e.rows.map((u,p)=>{let v=p<e.headerRows,y=u.map((l,F)=>{if(!l)return"";let $=E(F,p),T=v||l.total>0;if((!l.colSpan||l.colSpan===1)&&(h[F]=Math.max(h[F],Math.min(60,l.text.length+2))),l.kind==="value"&&typeof l.value=="number"&&Number.isFinite(l.value)){if(l.total===0&&l.valueIndex!==void 0&&e.conditional&&e.conditional[l.valueIndex]){let C=f.get(l.valueIndex)??{cells:[],min:1/0,max:-1/0};C.cells.push([p,F]),C.min=Math.min(C.min,l.value),C.max=Math.max(C.max,l.value),f.set(l.valueIndex,C)}if(l.valueType==="date"){let C=Se(l.value);return C===null?c($,l.text,T):m($,C,N(l.format,l.value,n),T)}return m($,l.value,N(l.format,l.value,n),T)}return(l.kind==="rowHeader"||l.kind==="colHeader")&&typeof l.value=="number"&&l.text===String(l.value)?m($,l.value,"General",T):l.text===""?T?`<c r="${$}" s="${s("General",!0)}"/>`:"":c($,l.text,T)});return`<row r="${p+1}">${y.join("")}</row>`}),b=1,D=[...f.entries()].map(([u,{cells:p,min:v,max:y}])=>{let l=e.conditional[u],F;if(l.type==="colorScale"){let $=l.colors.length>=2?l.colors:o.colorScale,T=$.length===3?'<cfvo type="min"/><cfvo type="percentile" val="50"/><cfvo type="max"/>':'<cfvo type="min"/><cfvo type="max"/>';F=`<cfRule type="colorScale" priority="${b++}"><colorScale>${T}${$.map(C=>`<color rgb="${se(C)}"/>`).join("")}</colorScale></cfRule>`}else{let $=v>0?'<cfvo type="num" val="0"/>':'<cfvo type="min"/>',T=y<0?'<cfvo type="num" val="0"/>':'<cfvo type="max"/>';F=`<cfRule type="dataBar" priority="${b++}"><dataBar>${$}${T}<color rgb="${se(l.color||o.dataBar)}"/></dataBar></cfRule>`}return`<conditionalFormatting sqref="${ke(p)}">${F}</conditionalFormatting>`}),w=e.headerRows>0||e.rowHeaderColumns>0?`<pane${e.rowHeaderColumns?` xSplit="${e.rowHeaderColumns}"`:""}${e.headerRows?` ySplit="${e.headerRows}"`:""} topLeftCell="${E(e.rowHeaderColumns,e.headerRows)}" activePane="${e.rowHeaderColumns&&e.headerRows?"bottomRight":e.headerRows?"bottomLeft":"topRight"}" state="frozen"/>`:"",j=h.map((u,p)=>`<col min="${p+1}" max="${p+1}" width="${u}" customWidth="1"/>`).join(""),pe=e.merges.length?`<mergeCells count="${e.merges.length}">${e.merges.map(u=>`<mergeCell ref="${E(u.col,u.row)}:${E(u.col+u.colSpan-1,u.row+u.rowSpan-1)}"/>`).join("")}</mergeCells>`:"",k=`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
2
  `,he=`${k}<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><sheetViews><sheetView workbookViewId="0">${w}</sheetView></sheetViews>${j?`<cols>${j}</cols>`:""}<sheetData>${x.join("")}</sheetData>${pe}${D.join("")}</worksheet>`,xe=[...r.entries()].map(([u,p])=>`<numFmt numFmtId="${p}" formatCode="${M(u)}"/>`).join(""),de=`${k}<styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">${r.size?`<numFmts count="${r.size}">${xe}</numFmts>`:""}<fonts count="2"><font><sz val="11"/><name val="Calibri"/></font><font><b/><sz val="11"/><name val="Calibri"/></font></fonts><fills count="2"><fill><patternFill patternType="none"/></fill><fill><patternFill patternType="gray125"/></fill></fills><borders count="1"><border/></borders><cellStyleXfs count="1"><xf/></cellStyleXfs><cellXfs count="${a.length}">${a.map(u=>`<xf numFmtId="${u.fmt}" fontId="${u.bold?1:0}"${u.fmt?' applyNumberFormat="1"':""}${u.bold?' applyFont="1"':""}/>`).join("")}</cellXfs><dxfs count="0"/></styleSheet>`,we=M(Ee(t.sheetName)),ve={"[Content_Types].xml":`${k}<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Default Extension="xml" ContentType="application/xml"/><Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/><Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/><Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"/></Types>`,"_rels/.rels":`${k}<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/></Relationships>`,"xl/workbook.xml":`${k}<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"><sheets><sheet name="${we}" sheetId="1" r:id="rId1"/></sheets></workbook>`,"xl/_rels/workbook.xml.rels":`${k}<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/></Relationships>`,"xl/styles.xml":de,"xl/worksheets/sheet1.xml":he},H={};for(let[u,p]of Object.entries(ve))H[u]=oe(p);return ne(H,{level:6})}var O=String.raw`[+\-\u2212]?\p{Sc}?\d[\d.,'\u2019\u00a0\u202f ]*(?:[\u00a0\u202f ]?(?:%|\p{Sc}))?`,Re=new RegExp(`^${O}$`,"u"),De=new RegExp(`^${O}\\s\u2013\\s${O}$`,"u");function _e(e){return le(e)===","?";":","}function le(e){let t=q(e).formatToParts(1.5).find(o=>o.type==="decimal");return t?t.value:"."}function me(e){if(/^[\t\r]/.test(e))return`'${e}`;let t=e.replace(/^[\s\u0000-\u001F\u007F]+/,"");return/^[=@]/.test(t)||/^[+-]/.test(t)&&!Re.test(t)&&!De.test(t)?`'${e}`:e}function ue(e){let t=new Date(e),o=`${S(t.getUTCFullYear(),4)}-${S(t.getUTCMonth()+1)}-${S(t.getUTCDate())}`;return e%A===0?o:`${o} ${S(t.getUTCHours())}:${S(t.getUTCMinutes())}:${S(t.getUTCSeconds())}`}function Ae(e,t){let o=String(Number(e.toPrecision(15)));return t==="."?o:o.replace(".",t)}function Le(e,t){let o=Math.sign(e)*Number(Math.abs(e).toFixed(t));return o===0?0:o}function Ie(e,t,o,n,r){let a=Z(t)?.name,i=a==="percent"||a==="percent100",s=n||i?K(t,r):null,c=a==="percent"?e*100:e,m=Ae(s===null?c:Le(c,s),o);return i?`${m}%`:m}function B(e,t){let o=new Map;for(let n of e.merges)for(let r=n.row;r<n.row+n.rowSpan;r++)for(let a=n.col;a<n.col+n.colSpan;a++)(r!==n.row||a!==n.col)&&o.set(`${r},${a}`,e.rows[n.row][n.col]);return e.rows.map((n,r)=>n.map((a,i)=>{if(a)return a;let s=o.get(`${r},${i}`);return t&&s&&s.kind==="rowHeader"&&s.total===0&&(s.colSpan??1)===1?s:null}))}var ce=e=>e.kind==="value"&&typeof e.value=="number"&&Number.isFinite(e.value);function ie(e,t){return t=g(t,"toCsv"),d(R(e),"toCsv(grid): grid must come from toGrid()"),I(e,t)}function I(e,t){let o=e.locale??P,n=t.separator??_e(o),r=le(o),a=s=>{let c=me(s);return/["\r\n]/.test(c)||c.includes(n)?`"${c.replace(/"/g,'""')}"`:c};return B(e,t.repeatLabels!==!1).map(s=>s.map(c=>{if(!c)return"";if(ce(c)){let m=c.valueIndex!==void 0&&!!e.showAs?.[c.valueIndex];return c.valueType==="date"?ue(c.value):Ie(c.value,c.format,r,m,o)}return a(c.text)}).join(n)).join(`\r
3
3
  `)+`\r
4
4
  `}function ae(e){let t=o=>{let n=me(String(o??""));return/["\t\r\n]/.test(n)?`"${n.replace(/"/g,'""')}"`:n};return e.map(o=>o.map(t).join(" ")).join(`\r
@@ -0,0 +1 @@
1
+ import{a as y}from"./chunk-VMHRXWK7.js";import{b as C,c as E,d as S,f as O,g as R,h as T,i as k,j as P}from"./chunk-FUHQLTFM.js";import"./chunk-O2TTHYGT.js";import"./chunk-MB64GADT.js";import"./chunk-DCANE7XH.js";var I=[",",";"," ","|"],F={",":"commas",";":"semicolons"," ":"tabs","|":"vertical bars"},L=65536,_=100,N=34,A=10,b=13;function v(n,m,e,c,o={}){let s=m.charCodeAt(0),a=n.length,t=e,i=o.line??1;for(;t<a;){let f=i,l=[];for(;;){let r;if(n.charCodeAt(t)===N){let h=i,d=t+1,g="";for(;;){let u=n.indexOf('"',d);if(u===-1){if(o.sample)return a;throw E("UNCLOSED_QUOTE",o.file??"file",`the quote that opens a value in line ${h} is never closed.`,{line:h})}if(i+=D(n,d,u),g+=n.slice(d,u),n.charCodeAt(u+1)===N){g+='"',d=u+2;continue}t=u+1;break}let p=t;for(;p<a;){let u=n.charCodeAt(p);if(u===s||u===A||u===b)break;p++}r=p>t?g+n.slice(t,p):g,t=p}else{let h=t;for(;h<a;){let d=n.charCodeAt(h);if(d===s||d===A||d===b)break;h++}r=n.slice(t,h),t=h}if(l.push(r),o.maxFields!==void 0&&l.length>o.maxFields)throw S("columns",l.length,o.maxFields,o.file??"file","columns");let w=t<a?n.charCodeAt(t):-1;if(w===s){t++;continue}w===b?(t+=n.charCodeAt(t+1)===A?2:1,i++):w===A&&(t++,i++);break}if(c(l,f))break}return o.line=i,t}function D(n,m,e){let c=0;for(let o=m;o<e;o++){let s=n.charCodeAt(o);(s===A||s===b&&n.charCodeAt(o+1)!==A)&&c++}return c}function M(n,m,e){let c=n.slice(m,m+L),o={sep:e??",",score:-1,width:1},s=e?[e,...I.filter(a=>a!==e)]:I;for(let a of s){let t=new Map,i=0;v(c,a,0,r=>(r.length===1&&r[0]===""||(t.set(r.length,(t.get(r.length)??0)+1),i++),i>=_),{sample:!0});let f=1,l=0;for(let[r,w]of t)r>1&&(w>l||w===l&&r>f)&&(f=r,l=w);f>1&&(l>o.score||l===o.score&&f>o.width)&&(o={sep:a,score:l,width:f})}return o.sep}function U(n){if(!n)return".";try{return new Intl.NumberFormat(n).formatToParts(1.5).find(e=>e.type==="decimal")?.value===","?",":"."}catch{return"."}}async function W(n,m){let e=T(m),c=O(n,e);e.signal?.throwIfAborted();let o=await R(n,e.limits,c);e.onProgress?.({phase:"read",done:o.length,total:o.length});let{text:s,encoding:a}=y(o,c);e.signal?.throwIfAborted();let t=0,i=typeof e.separator=="string"&&e.separator.length===1?e.separator:null,f=/^sep=(.)\r?\n/i.exec(s.slice(0,8));f&&(t=f[0].length,i??=f[1]),i??=M(s,t,/\.tsv$/i.test(c)?" ":void 0);let l=P({file:c,limits:e.limits,locale:e.locale,hints:{decimal:i===";"?",":U(e.locale)}});l.note("ENCODING",{encoding:a}),l.note("SEPARATOR",{separator:i,name:F[i]??`"${i}"`});let r=t,w={file:c,line:t>0?2:1,maxFields:e.limits.columns};for(;r<s.length;){let h=0;r=v(s,i,r,d=>(l.row(d),++h>=C),w),e.onProgress?.({phase:"parse",done:r,total:s.length}),r<s.length&&(await k(),e.signal?.throwIfAborted())}return e.signal?.throwIfAborted(),l.finish(e.types)}export{M as detectSeparator,W as read,v as splitRows};
@@ -0,0 +1 @@
1
+ import{a as v}from"./chunk-VMHRXWK7.js";import{b as N,c as d,e as h,f as T,g as j,h as E,i as S,j as _}from"./chunk-FUHQLTFM.js";import"./chunk-O2TTHYGT.js";import"./chunk-MB64GADT.js";import"./chunk-DCANE7XH.js";var z=4,w=e=>e!==null&&typeof e=="object"&&!Array.isArray(e);function L(e){if(Array.isArray(e)){let a=e.find(r=>r!=null);return a===void 0?{kind:"objects",rows:[]}:Array.isArray(a)&&e.every(r=>r===null||Array.isArray(r))?{kind:"arrays",rows:e}:w(a)&&e.every(r=>r===null||w(r))?{kind:"objects",rows:e}:null}return w(e)?Array.isArray(e.columns)&&Array.isArray(e.data)&&e.data.every(a=>Array.isArray(a))?{kind:"columnar",columns:e.columns,data:e.data}:Array.isArray(e.columns)&&Array.isArray(e.rows)?{kind:e.rows.every(a=>a===null||Array.isArray(a))?"header":"objects",columns:e.columns,rows:e.rows}:null:null}function P(e){let a=L(e);if(a)return{shape:a,property:null};if(!w(e))return null;let r=null;for(let s of Object.keys(e)){let l=L(e[s]);if(l&&(l.kind!=="objects"||l.rows.length>0)){let f=l.rows?.length??l.data?.[0]?.length??0;(!r||f>r.size)&&(r={shape:l,property:s,size:f})}}return r}function I(e,a,r,s,l,f){for(let y of Object.keys(e)){let i=a+y,n=e[y];w(n)&&r<z&&Object.keys(n).length>0?I(n,`${i}.`,r+1,s,l,f):s.has(i)||(r>0&&(f.nested??=i),l(),s.set(i,s.size))}}function J(e,a,r,s,l){for(let f of Object.keys(e)){let y=a+f,i=e[f];if(w(i)&&r<z&&Object.keys(i).length>0)J(i,`${y}.`,r+1,s,l);else{let n=s.get(y);n!==void 0&&(l[n]=i)}}}async function $(e,a){let r=E(a),s=T(e,r);r.signal?.throwIfAborted();let l=await j(e,r.limits,s);r.onProgress?.({phase:"read",done:l.length,total:l.length});let{text:f}=v(l,s),y;try{y=JSON.parse(f)}catch(t){throw d("INVALID_JSON",s,`this is no valid JSON (${String(t.message).slice(0,200)}).`)}r.signal?.throwIfAborted();let i=P(y);if(!i)throw d("NO_TABLE",s,"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:n,property:b}=i,c=_({file:s,limits:r.limits,locale:r.locale,hints:{textNumbers:!1}});b!==null&&c.note("JSON_PROPERTY",{property:b});let m=r.limits,k=0,A=async t=>{++k%N===0&&(r.onProgress?.({phase:"parse",done:k,total:t}),await S(),r.signal?.throwIfAborted())};if(n.kind==="columnar"){let t=n.data[0]?.length??0;if(n.columns.length!==n.data.length)throw d("NO_TABLE",s,`"columns" names ${n.columns.length} columns, but "data" holds ${n.data.length} arrays.`);if(!n.data.every(o=>o.length===t))throw d("NO_TABLE",s,'the arrays in "data" have different lengths.');h("columns",n.columns.length,m.columns,s,"columns"),h("rows",t,m.rows,s,"rows"),c.header(n.columns);for(let o=0;o<t;o++)c.row(n.data.map(g=>g[o])),await A(t)}else if(n.kind==="arrays"||n.kind==="header"){let t=n.rows;h("rows",t.length,m.rows+1,s,"rows");let o=0;for(n.kind==="header"?c.header(n.columns):(c.header(t[0]??[]),o=1);o<t.length;o++)c.row(t[o]??[]),await A(t.length)}else{let t=n.rows;h("rows",t.length,m.rows,s,"rows");let o=new Map;if(Array.isArray(n.columns))for(let u of n.columns)typeof u=="string"&&!o.has(u)&&o.set(u,o.size);let g=()=>h("columns",o.size+1,m.columns,s,"columns"),p={nested:null};for(let u of t)u&&I(u,"",0,o,g,p);p.nested&&c.note("JSON_FLATTENED",{example:p.nested}),c.header([...o.keys()]);for(let u of t){let O=new Array(o.size).fill(null);u&&J(u,"",0,o,O),c.row(O),await A(t.length)}}return r.signal?.throwIfAborted(),c.finish(r.types)}export{$ as read};
@@ -0,0 +1 @@
1
+ import{G as B,J as N,K as D,L as Ue,M as $e,a as Me,b as ct,d as ae,i as Ie,j as se,n as le,o as ie,p as ce,s as ue,t as de}from"./chunk-WNTTPBZ5.js";import{b as Pe}from"./chunk-WXBFHMFX.js";import{a as U,c as me,d as pe,f as $,k as he}from"./chunk-FUHQLTFM.js";import{c as xe}from"./chunk-O2TTHYGT.js";import{a as M}from"./chunk-MB64GADT.js";import{c as oe}from"./chunk-DCANE7XH.js";var je={dataSource:"Data source",hostData:"The report's data",rows:{one:"{count} row",other:"{count} rows"},columns:{one:"{count} column",other:"{count} columns"},fromFile:"From a file, only in this browser",load:"Load",loadFile:"Load data\u2026",backToOriginal:"Back to original data",backHint:"Undo brings the file back",dropHint:"or drop a file onto the report",formats:"Reads {formats}",formatNames:{csv:"CSV or text",json:"JSON",xlsx:"Excel workbook"},dropTitle:"Drop the file to load it",dropOne:"Drop one file at a time.",reading:"Reading {name}\u2026",phases:{read:"Reading the file",unpack:"Unpacking the workbook",parse:"Reading the rows",type:"Checking the columns"},cancel:"Cancel",previewTitle:"Load {name}",sheet:"Sheet",hiddenSheet:"{name} (hidden)",firstRows:"The first rows",someColumns:"The first {shown} of {count} columns are shown; the others keep the type found.",typeOf:"Type of {column}",types:{string:"Text",number:"Number",date:"Date",boolean:"Yes/No"},yes:"Yes",no:"No",noRows:"The file holds no rows.",notesTitle:{one:"{count} note",other:"{count} notes"},apply:"Load data",loaded:"{name} loaded: {rows}, {columns}",stepLoaded:"{name} loaded",originalShown:"The original data is shown",failed:"{name} could not be loaded: {message}",refused:"{name} was not loaded: {message}",sourceLine:"{name}, only in this browser",sourceSheet:"{name}, sheet \u201C{sheet}\u201D, only in this browser",notes:{ENCODING:"Read as {encoding}.",SEPARATOR:"Values separated by {name}.",LINES_SKIPPED:{one:"{count} line above the column names was skipped (a title block).",other:"{count} lines above the column names were skipped (a title block)."},COLUMN_RENAMED:"Column \u201C{from}\u201D is named \u201C{to}\u201D.",COLUMN_UNNAMED:"Column {position} has no name; it is named \u201C{to}\u201D.",COLUMNS_RENAMED_MORE:{one:"{count} more column was renamed.",other:"{count} more columns were renamed."},COLUMN_DROPPED:"Column {position} has no name and no values and was left out.",COLUMNS_ADDED:{one:"{count} row has more values than there are column names; the extra values are in columns named \u201CColumn \u2026\u201D.",other:"{count} rows have more values than there are column names; the extra values are in columns named \u201CColumn \u2026\u201D."},ROWS_EMPTY:{one:"{count} empty row was left out.",other:"{count} empty rows were left out."},TEXT_CUT:{one:"{count} value longer than {max} characters was cut.",other:"{count} values longer than {max} characters were cut."},CHARACTERS_REMOVED:{one:"Control or text direction characters were removed from {count} value.",other:"Control or text direction characters were removed from {count} values."},DATE_ORDER:"Dates in \u201C{column}\u201D were read as {order}; the values fit both.",VALUES_NOT_CONVERTED:{one:"{count} value in \u201C{column}\u201D cannot be read as {type} and is empty.",other:"{count} values in \u201C{column}\u201D cannot be read as {type} and are empty."},JSON_PROPERTY:"The rows were read from \u201C{property}\u201D.",JSON_FLATTENED:"Nested values became columns named with a dot (\u201C{example}\u201D).",SHEET:"Read the sheet \u201C{sheet}\u201D.",SHEETS:"Read the sheet \u201C{sheet}\u201D of {count} sheets.",USED_RANGE:"The sheet's used range reaches row {usedRow}; the values end at row {lastRow}, the empty rows below were skipped.",ERROR_CELLS:{one:"{count} cell holds an Excel error (such as #N/A) and is empty.",other:"{count} cells hold an Excel error (such as #N/A) and are empty."}},dateOrders:{dmy:"day/month/year",mdy:"month/day/year"}},ut={dataSource:"Datenquelle",hostData:"Die Daten des Berichts",rows:{one:"{count} Zeile",other:"{count} Zeilen"},columns:{one:"{count} Spalte",other:"{count} Spalten"},fromFile:"Aus einer Datei, nur in diesem Browser",load:"Laden",loadFile:"Daten laden\u2026",backToOriginal:"Zur\xFCck zu den Originaldaten",backHint:"R\xFCckg\xE4ngig holt die Datei zur\xFCck",dropHint:"oder eine Datei auf den Bericht ziehen",formats:"Liest {formats}",formatNames:{csv:"CSV oder Text",json:"JSON",xlsx:"Excel-Arbeitsmappe"},dropTitle:"Loslassen, um die Datei zu laden",dropOne:"Bitte nur eine Datei auf einmal ziehen.",reading:"{name} wird gelesen\u2026",phases:{read:"Datei wird gelesen",unpack:"Arbeitsmappe wird entpackt",parse:"Zeilen werden gelesen",type:"Spalten werden gepr\xFCft"},cancel:"Abbrechen",previewTitle:"{name} laden",sheet:"Blatt",hiddenSheet:"{name} (ausgeblendet)",firstRows:"Die ersten Zeilen",someColumns:"Die ersten {shown} von {count} Spalten werden gezeigt; die anderen behalten den erkannten Typ.",typeOf:"Typ von {column}",types:{string:"Text",number:"Zahl",date:"Datum",boolean:"Ja/Nein"},yes:"Ja",no:"Nein",noRows:"Die Datei enth\xE4lt keine Zeilen.",notesTitle:{one:"{count} Hinweis",other:"{count} Hinweise"},apply:"Daten laden",loaded:"{name} geladen: {rows}, {columns}",stepLoaded:"{name} geladen",originalShown:"Die Originaldaten werden gezeigt",failed:"{name} konnte nicht geladen werden: {message}",refused:"{name} wurde nicht geladen: {message}",sourceLine:"{name}, nur in diesem Browser",sourceSheet:"{name}, Blatt \u201E{sheet}\u201C, nur in diesem Browser",notes:{ENCODING:"Gelesen als {encoding}.",SEPARATOR:"Werte getrennt durch {name}.",LINES_SKIPPED:{one:"{count} Zeile \xFCber den Spaltennamen wurde \xFCbersprungen (ein Titelblock).",other:"{count} Zeilen \xFCber den Spaltennamen wurden \xFCbersprungen (ein Titelblock)."},COLUMN_RENAMED:"Die Spalte \u201E{from}\u201C hei\xDFt jetzt \u201E{to}\u201C.",COLUMN_UNNAMED:"Spalte {position} hat keinen Namen; sie hei\xDFt jetzt \u201E{to}\u201C.",COLUMNS_RENAMED_MORE:{one:"{count} weitere Spalte wurde umbenannt.",other:"{count} weitere Spalten wurden umbenannt."},COLUMN_DROPPED:"Spalte {position} hat weder Namen noch Werte und wurde weggelassen.",COLUMNS_ADDED:{one:"{count} Zeile hat mehr Werte als Spaltennamen; die zus\xE4tzlichen Werte stehen in Spalten namens \u201EColumn \u2026\u201C.",other:"{count} Zeilen haben mehr Werte als Spaltennamen; die zus\xE4tzlichen Werte stehen in Spalten namens \u201EColumn \u2026\u201C."},ROWS_EMPTY:{one:"{count} leere Zeile wurde weggelassen.",other:"{count} leere Zeilen wurden weggelassen."},TEXT_CUT:{one:"{count} Wert mit mehr als {max} Zeichen wurde gek\xFCrzt.",other:"{count} Werte mit mehr als {max} Zeichen wurden gek\xFCrzt."},CHARACTERS_REMOVED:{one:"Aus {count} Wert wurden Steuer- oder Richtungszeichen entfernt.",other:"Aus {count} Werten wurden Steuer- oder Richtungszeichen entfernt."},DATE_ORDER:"Datumswerte in \u201E{column}\u201C wurden als {order} gelesen; die Werte passen zu beidem.",VALUES_NOT_CONVERTED:{one:"{count} Wert in \u201E{column}\u201C l\xE4sst sich nicht als {type} lesen und bleibt leer.",other:"{count} Werte in \u201E{column}\u201C lassen sich nicht als {type} lesen und bleiben leer."},JSON_PROPERTY:"Die Zeilen wurden aus \u201E{property}\u201C gelesen.",JSON_FLATTENED:"Verschachtelte Werte wurden zu Spalten mit Punkt im Namen (\u201E{example}\u201C).",SHEET:"Gelesen wurde das Blatt \u201E{sheet}\u201C.",SHEETS:"Gelesen wurde das Blatt \u201E{sheet}\u201C von {count} Bl\xE4ttern.",USED_RANGE:"Der benutzte Bereich des Blatts reicht bis Zeile {usedRow}; die Werte enden in Zeile {lastRow}, die leeren Zeilen darunter wurden \xFCbersprungen.",ERROR_CELLS:{one:"{count} Zelle enth\xE4lt einen Excel-Fehler (etwa #NV) und bleibt leer.",other:"{count} Zellen enthalten einen Excel-Fehler (etwa #NV) und bleiben leer."}},dateOrders:{dmy:"Tag/Monat/Jahr",mdy:"Monat/Tag/Jahr"}},ze=Object.freeze({en:je,de:ut}),Fe=new WeakMap;function k(e){let t=Fe.get(e);if(t)return t;let n=Object.hasOwn(ze,e.lang)?ze[e.lang]:je,r=e[Ue]?.dataImport,o=$e(n,r);return Fe.set(e,o),o}function Ve(e,t,n){let r=e.params&&typeof e.params=="object"?e.params:{},o=e.code;o==="COLUMN_RENAMED"&&r.from===""?o="COLUMN_UNNAMED":o==="SHEET"&&Number(r.count)>1&&(o="SHEETS");let s=Object.hasOwn(t.notes,o)?t.notes[o]:null;if(!s)return String(e.message??o);let l=Object.fromEntries(Object.entries(r).map(([c,m])=>[c,typeof m=="number"?m.toLocaleString(n.locale):String(m??"")]));return o==="DATE_ORDER"?l.order=Object.hasOwn(t.dateOrders,String(r.order))?t.dateOrders[String(r.order)]:l.order:o==="VALUES_NOT_CONVERTED"&&(l.type=Object.hasOwn(t.types,String(r.type))?t.types[String(r.type)]:l.type),N(typeof s=="string"?s:D(s,Number(r.count)||0,n),l)}var A=oe(Me(),1),a=oe(Me(),1),ge=oe(ct(),1);var W=1,dt=/^[a-z0-9][a-z0-9-]{0,63}$/,mt=/^\.[a-z0-9]{1,16}$/,pt=/^[a-z0-9][a-z0-9!#$&^_.+-]*\/[a-z0-9][a-z0-9!#$&^_.+-]*$/,Be=["reader"];function Z(e){let t=e,n=r=>{throw new M("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.`),Be.includes(t.kind)||n(`has kind ${JSON.stringify(t.kind)}; API ${W} knows ${Be.map(r=>`"${r}"`).join(", ")}`),(typeof t.name!="string"||!dt.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"&&(mt.test(r)||pt.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 ht=Z({apiVersion:1,kind:"reader",name:"csv",label:"CSV or text",accept:[".csv",".tsv",".txt",".tab","text/csv","text/tab-separated-values","text/plain"],load:()=>import("./import-csv-TPSP3I44.js")}),ft=Z({apiVersion:1,kind:"reader",name:"json",label:"JSON",accept:[".json","application/json"],load:()=>import("./import-json-NCJFIKAC.js")}),z=Object.freeze([ht,ft]);function H(e,t=[]){for(let c of t)Z(c);let n=[...t,...z],r=typeof e?.name=="string"?e.name.toLowerCase():"",o=r.lastIndexOf("."),s=o===-1?"":r.slice(o);if(s){let c=n.find(m=>m.accept.includes(s));if(c)return c}let l=typeof e?.type=="string"?e.type.toLowerCase().split(";")[0].trim():"";return l?n.find(c=>c.accept.includes(l)):void 0}var fe=new WeakMap;async function ye(e){let t=Z(e),n=fe.get(e);return n||(n=Promise.resolve(t.load()).then(r=>{let o=r,s=o?.default&&typeof o.read!="function"?o.default:o;if(!s||typeof s.read!="function")throw new M("INVALID_ARGUMENT",`plugin "${t.name}": its load() must give a module with read(file, options)`);if(s.sheets!==void 0&&typeof s.sheets!="function")throw new M("INVALID_ARGUMENT",`plugin "${t.name}": sheets must be a function when given`);return s}),n.catch(()=>fe.delete(e)),fe.set(e,n)),n}async function We(e,t={}){let n=$(e,t),r=xe(t);if(e&&typeof e=="object"&&typeof e.size=="number"&&e.size>r.fileBytes)throw pe("fileBytes",e.size,r.fileBytes,n,"bytes");let o=t.reader??H(e,t.plugins);if(!o)throw me("NO_READER",n,"no reader for this kind of file.");let s=await ye(o),l={...t};return delete l.plugins,delete l.reader,yt(await s.read(e,l),o.name)}function yt(e,t){let n=o=>{throw new M("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}function gt(e){let t=[];for(let n of[...e,...z])for(let r of Array.isArray(n?.accept)?n.accept:[])typeof r=="string"&&!t.includes(r)&&t.push(r);return t.join(",")}var Ke=(e,t={})=>[...e,...z].map(n=>typeof n?.name=="string"&&Object.hasOwn(t,n.name)?t[n.name]:typeof n?.label=="string"?n.label.trim().slice(0,100):"").filter((n,r,o)=>n&&o.indexOf(n)===r),Et=1e4;function Ze(e){let t=e.data[0]?.length??0,n=r=>Array.isArray(r)&&r.length===e.columns.length;return{...e,rowCount:Number.isInteger(e.rowCount)&&e.rowCount>=0?e.rowCount:t,raw:n(e.raw)&&e.raw.every(r=>Array.isArray(r)&&r.length===t)?e.raw:e.data,detected:n(e.detected)?e.detected:e.types,hints:e.hints&&typeof e.hints=="object"?e.hints:{decimal:".",dateOrder:"dmy"},notes:e.notes.filter(r=>r&&typeof r.code=="string").map(r=>({code:r.code,params:r.params&&typeof r.params=="object"?r.params:{},message:String(r.message??r.code)}))}}var wt=e=>e!==null&&typeof e=="object"&&Array.isArray(e.columns)&&Array.isArray(e.types)&&Array.isArray(e.data)&&Array.isArray(e.notes),bt=e=>e?.reason??new DOMException("The read was cancelled","AbortError"),x=Symbol("worker unavailable");function St(e,t,n,r,o,s=Et){let l;try{l=e()}catch{return Promise.resolve(x)}return!l||typeof l.postMessage!="function"?Promise.resolve(x):new Promise((c,m)=>{let y=!1,i=setTimeout(()=>{h(),c(x)},s),h=()=>{clearTimeout(i),l.terminate?.(),r?.removeEventListener("abort",T)},T=()=>{h(),m(bt(r))};if(r?.aborted){T();return}r?.addEventListener("abort",T,{once:!0}),l.onmessage=E=>{let p=E.data;if(p?.type==="ready"&&!y){y=!0,clearTimeout(i);try{l.postMessage({file:t,options:n})}catch{h(),c(x)}}else if(p?.type==="progress")p.progress&&typeof p.progress=="object"&&o?.(p.progress);else if(p?.type==="done")h(),wt(p.table)?c(p.table):m(new Error("The import worker returned no table"));else if(p?.type==="error"){h();let w=p.error??{};m(typeof w.code=="string"?new M(w.code,String(w.message??""),w.details??{}):new Error(String(w.message??"The file could not be read")))}},l.onmessageerror=()=>{h(),m(new Error("The import worker's answer could not be read"))},l.onerror=E=>{E.preventDefault?.(),h(),y?m(new Error(String(E.message||"The file could not be read"))):c(x)}})}async function Nt(e,{plugins:t=[],worker:n,sheet:r,locale:o,limits:s,signal:l,onProgress:c,readyMs:m}={}){let y={name:e.name,...r!==void 0?{sheet:r}:{},...o?{locale:o}:{},...s?{limits:s}:{}},i=H(e,t);if(n&&i&&z.includes(i)){let h=await St(n,e,y,l,c,m);if(h!==x)return Ze(h)}return l?.throwIfAborted(),Ze(await We(e,{...y,plugins:t,signal:l,onProgress:c}))}async function Tt(e,{plugins:t=[],limits:n,signal:r}={}){let o=H(e,t);if(!o)return[];let s=await ye(o);if(typeof s.sheets!="function")return[];let l=await s.sheets(e,{name:e.name,...n?{limits:n}:{},signal:r});return Array.isArray(l)?l.filter(c=>c&&typeof c.name=="string"&&Number.isInteger(c.index)):[]}var He=120;function Xe(e){if(e.length<=He)return e;let t=He-3,n=e.charCodeAt(t-1);return n>=55296&&n<=56319&&(t-=1),`${e.slice(0,t)}...`}var Dt=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);function Je(e){let t=e.length*8,n=new Uint8Array(Math.ceil((e.length+9)/64)*64);n.set(e),n[e.length]=128;let r=new DataView(n.buffer);r.setUint32(n.length-8,Math.floor(t/2**32)),r.setUint32(n.length-4,t>>>0);let o=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),s=new Uint32Array(64),l=(y,i)=>y>>>i|y<<32-i;for(let y=0;y<n.length;y+=64){for(let f=0;f<16;f++)s[f]=r.getUint32(y+f*4);for(let f=16;f<64;f++){let O=l(s[f-15],7)^l(s[f-15],18)^s[f-15]>>>3,P=l(s[f-2],17)^l(s[f-2],19)^s[f-2]>>>10;s[f]=s[f-16]+O+s[f-7]+P>>>0}let[i,h,T,E,p,w,I,C]=o;for(let f=0;f<64;f++){let O=C+(l(p,6)^l(p,11)^l(p,25))+(p&w^~p&I)+Dt[f]+s[f]>>>0,P=(l(i,2)^l(i,13)^l(i,22))+(i&h^i&T^h&T)>>>0;C=I,I=w,w=p,p=E+O>>>0,E=T,T=h,h=i,i=O+P>>>0}o[0]+=i,o[1]+=h,o[2]+=T,o[3]+=E,o[4]+=p,o[5]+=w,o[6]+=I,o[7]+=C}let c=new Uint8Array(32),m=new DataView(c.buffer);return o.forEach((y,i)=>m.setUint32(i*4,y)),c}async function vt(e,t={}){let n=new TextEncoder().encode(e),r=t.subtle!==void 0?t.subtle:globalThis.crypto?.subtle,o;try{o=r?new Uint8Array(await r.digest("SHA-256",n)):Je(n)}catch{o=Je(n)}return[...o].map(s=>s.toString(16).padStart(2,"0")).join("")}async function Ot(e,t,n){let r=await vt([e,...t].join("\0"),n);return`${Xe(e)}#${r.slice(0,16)}`}var kt=8,At=60;function qe(e,t){try{return new Intl.ListFormat(t,{type:"conjunction"}).format(e)}catch{return e.join(", ")}}function Ge(e,t){let n=["B","KB","MB","GB"],r=e,o=0;for(;r>=1e3&&o<n.length-1;)r/=1e3,o+=1;return`${r.toLocaleString(t,{maximumFractionDigits:o===0?0:1})} ${n[o]}`}function Ct({labels:e,locale:t,source:n,plugins:r,onPick:o,onBack:s,close:l}){let c=k(e),m={lang:e.lang,locale:t};return a.default.createElement("div",{className:"pk-data-menu","data-testid":"data-menu"},a.default.createElement(ue,{title:c.dataSource,testId:"data-source"},a.default.createElement("p",{"data-testid":"data-name"},a.default.createElement("strong",null,n.name??c.hostData)),a.default.createElement("p",{className:"pk-hint","data-testid":"data-size"},`${D(c.rows,n.rows,m)} \xD7 ${D(c.columns,n.columns,m)}`),n.imported?a.default.createElement("p",{className:"pk-hint"},c.fromFile):null),a.default.createElement(ue,{title:c.load},a.default.createElement(de,{icon:"upload",onSelect:()=>{l(),o()},testId:"load-file"},c.loadFile),n.imported?a.default.createElement(de,{icon:"reset",hint:c.backHint,onSelect:()=>{l(),s()},testId:"back-to-original"},c.backToOriginal):null,a.default.createElement("p",{className:"pk-hint","data-testid":"drop-hint"},`${c.dropHint}. ${N(c.formats,{formats:qe(Ke(r,c.formatNames),t)})}`)))}function Rt({labels:e,locale:t,plugins:n,box:r}){let o=k(e),{layer:s}=(0,a.useContext)(le),l=(0,a.useRef)(null),[c]=(0,a.useState)(ie);ce(!0,[l],null,s);let m=r();if(!s||!m)return null;let y=s.ownerDocument.defaultView,i=Math.max(0,m.left),h=Math.max(0,m.top),T={left:i,top:h,width:Math.max(0,Math.min(m.right,y?.innerWidth??m.right)-i),height:Math.max(0,Math.min(m.bottom,y?.innerHeight??m.bottom)-h)};return(0,ge.createPortal)(a.default.createElement("div",{ref:l,...c?{popover:"manual"}:{},className:"pk-drop",style:T,"aria-hidden":"true","data-testid":"drop-overlay"},a.default.createElement("div",null,a.default.createElement(se,{name:"upload",size:24}),a.default.createElement("strong",null,o.dropTitle),a.default.createElement("span",null,N(o.formats,{formats:qe(Ke(n,o.formatNames),t)})))),s)}function _t({labels:e,source:t}){let n=k(e);return a.default.createElement("span",{className:"pk-row-label pk-source","data-testid":"source-line"},a.default.createElement(se,{name:"file",size:14}),N(t.sheet?n.sourceSheet:n.sourceLine,{name:t.name,sheet:t.sheet??""}))}function Ye(e,t){let n=B(e),r=`"${t}": `;return n.startsWith(r)?n.slice(r.length):n}function Lt(e,t,n,r){if(e==null)return"";if(t==="boolean")return e?n.yes:n.no;if(t==="number"&&typeof e=="number")return e.toLocaleString(r,{maximumFractionDigits:10});let o=String(e).replace(/^(\d{4}-\d\d-\d\d)T(\d\d:\d\d)(?::00(?:\.000)?)?$/,"$1 $2");return o.length>80?`${o.slice(0,79)}\u2026`:o}function Mt({job:e,labels:t,locale:n,plugins:r,worker:o,limits:s,timeZone:l,onApply:c,onClose:m,announce:y}){let i=k(t),h={lang:t.lang,locale:n},{layer:T}=(0,a.useContext)(le),E=e.file,p=(0,a.useMemo)(()=>$(E,{}),[E]),[w,I]=(0,a.useState)(void 0),[C,f]=(0,a.useState)([]),[O,P]=(0,a.useState)(null),[F,K]=(0,a.useState)(null),[R,Ee]=(0,a.useState)(null),[we,X]=(0,a.useState)(null),[be,Se]=(0,a.useState)(!1),[tt,Ne]=(0,a.useState)(null),Te=O&&O.sheet===w?O:null,j=!Te&&tt!==w,v=(0,a.useRef)({onClose:m,announce:y,t:i,name:p,plugins:r,worker:o,locale:n,limits:s});(0,a.useEffect)(()=>{v.current={onClose:m,announce:y,t:i,name:p,plugins:r,worker:o,locale:n,limits:s}}),(0,a.useEffect)(()=>{let u=new AbortController,g=0,b=v.current;return Nt(E,{plugins:b.plugins,worker:b.worker,sheet:w,locale:b.locale,limits:b.limits,signal:u.signal,onProgress:S=>{let L=Date.now();(L-g>120||S.done>=S.total)&&(g=L,Ee(S))}}).then(S=>{u.signal.aborted||(P({table:S,sheet:w}),K(null))},S=>{if(u.signal.aborted)return;let L=N(v.current.t.failed,{name:v.current.name,message:Ye(S,v.current.name)});w===void 0?(v.current.announce(L,{tone:"error"}),v.current.onClose()):(Ne(w),X(L))}),()=>u.abort()},[E,w]),(0,a.useEffect)(()=>{let u=new AbortController;return Tt(E,{plugins:v.current.plugins,limits:v.current.limits,signal:u.signal}).then(g=>!u.signal.aborted&&f(g),()=>{}),()=>u.abort()},[E]);let _=Te?.table??null,q=(0,a.useMemo)(()=>{if(!_||!F||F.every((u,g)=>u===_.types[g]))return{table:_,error:null};try{return{table:he(_,F),error:null}}catch(u){return{table:_,error:B(u)}}},[_,F]),d=q.table,Q=(0,a.useRef)(null),De=(0,a.useRef)(null),ve=(0,a.useRef)(null),[nt]=(0,a.useState)(ie);ce(!0,[De,Q],null,T);let{onKeyDown:rt}=Ie(Q,!0,m),ee=!!d&&!j,Oe=(0,a.useRef)(!1);(0,a.useEffect)(()=>{ee&&!Oe.current&&(Oe.current=!0,ve.current?.focus({preventScroll:!0}))},[ee]);let te=(0,a.useRef)(!0);(0,a.useEffect)(()=>()=>{te.current=!1},[]);let ke=(0,a.useId)(),ne=(0,a.useId)(),Ae=(0,a.useId)(),Ce=ae(),Re=(()=>{let u=d?.notes.find(g=>g.code==="SHEET");return u&&u.params?.sheet!==void 0?String(u.params.sheet):null})(),ot=w??C.find(u=>u.name===Re)?.index??0,at=async()=>{if(!(!d||be)){Se(!0);try{await new Promise(b=>setTimeout(b,0));let u=Pe({columns:d.columns,types:d.types,data:d.data},{timeZone:l??"UTC",limits:s}),g=await Ot(p,d.columns);if(!te.current)return;c({encoded:u,source:{id:g,name:Xe(p)},file:{name:p,size:E.size,type:E.type},sheet:Re,rows:d.rowCount,columns:d.columns.map((b,S)=>({name:b,type:d.types[S]})),notes:d.notes.map(b=>({code:b.code,params:{...b.params},message:b.message}))})}catch(u){te.current&&(X(N(i.failed,{name:p,message:Ye(u,p)})),Se(!1))}}};if(!T)return null;let _e=nt?{popover:"manual"}:{},V=d?d.columns.slice(0,At):[],st=d?Math.min(kt,d.rowCount):0,Le=R&&Object.hasOwn(i.phases,String(R.phase))?i.phases[String(R.phase)]:i.phases.read,re=R&&R.total>0?Math.min(100,Math.round(R.done/R.total*100)):null,lt=d&&!j?`${D(i.rows,d.rowCount,h)} \xB7 ${D(i.columns,d.columns.length,h)} \xB7 ${Ge(E.size,n)}`:Ge(E.size,n);return(0,ge.createPortal)(a.default.createElement(a.default.Fragment,null,a.default.createElement("div",{ref:De,..._e,className:"pk-scrim pk-import-scrim","aria-hidden":"true"}),a.default.createElement("div",{ref:Q,..._e,className:"pk-import",role:"dialog","aria-modal":"true","aria-labelledby":ke,"aria-describedby":d&&d.notes.length?`${ne} ${Ae}`:ne,"aria-busy":j||void 0,tabIndex:-1,onKeyDown:rt,"data-testid":"import-dialog"},a.default.createElement("div",{className:"pk-drill-head"},a.default.createElement("div",{className:"pk-drill-heading"},a.default.createElement("h2",{id:ke},N(i.previewTitle,{name:p})),a.default.createElement("p",{id:ne,className:"pk-hint",role:"status","data-testid":"import-meta"},lt))),a.default.createElement("div",{className:"pk-import-body"},C.length>1?a.default.createElement("label",{className:"pk-inline-form"},i.sheet,a.default.createElement("select",{name:`${Ce}-sheet`,value:ot,onChange:u=>{Ee(null),X(null),Ne(null),K(null),I(Number(u.target.value))},"data-testid":"import-sheet"},C.map(u=>a.default.createElement("option",{key:u.index,value:u.index},u.visible?u.name:N(i.hiddenSheet,{name:u.name}))))):null,we||q.error?a.default.createElement("p",{className:"pk-error",role:"alert","data-testid":"import-error"},we??q.error):null,j?a.default.createElement("div",{"data-testid":"import-progress"},a.default.createElement("p",null,N(i.reading,{name:p})),a.default.createElement("progress",{max:100,value:re??void 0,"aria-label":Le}),a.default.createElement("p",{className:"pk-hint"},`${Le}${re!==null?` \xB7 ${re} %`:""}`)):d?a.default.createElement(a.default.Fragment,null,d.rowCount===0?a.default.createElement("p",{"data-testid":"import-empty"},i.noRows):null,a.default.createElement("div",{className:"pk-drill-body","data-testid":"import-preview"},a.default.createElement("table",{className:"pk-drill-table"},a.default.createElement("caption",{className:"pk-sr"},i.firstRows),a.default.createElement("thead",null,a.default.createElement("tr",null,V.map((u,g)=>a.default.createElement("th",{key:g,scope:"col"},u,a.default.createElement("select",{name:`${Ce}-type-${g}`,value:d.types[g],"aria-label":N(i.typeOf,{column:u}),onChange:b=>K(S=>(S??_?.types??[]).map((L,it)=>it===g?b.target.value:L)),"data-testid":`import-type-${g}`},U.map(b=>a.default.createElement("option",{key:b,value:b},i.types[b]))))))),a.default.createElement("tbody",null,Array.from({length:st},(u,g)=>a.default.createElement("tr",{key:g},V.map((b,S)=>a.default.createElement("td",{key:S,className:d.types[S]==="number"?"pk-num":void 0},Lt(d.data[S][g],d.types[S],i,n)))))))),d.columns.length>V.length?a.default.createElement("p",{className:"pk-hint"},N(i.someColumns,{shown:V.length.toLocaleString(n),count:d.columns.length.toLocaleString(n)})):null,d.notes.length?a.default.createElement("div",{id:Ae,className:"pk-note","data-testid":"import-notes"},a.default.createElement("div",null,a.default.createElement("h3",null,D(i.notesTitle,d.notes.length,h)),a.default.createElement("ul",null,d.notes.map((u,g)=>a.default.createElement("li",{key:g,"data-code":u.code},Ve(u,i,h)))))):null):null),a.default.createElement("div",{className:"pk-popover-foot"},a.default.createElement("button",{type:"button",className:"pk-btn",onClick:m,"data-autofocus":"","data-testid":"import-cancel"},i.cancel),ee?a.default.createElement("button",{ref:ve,type:"button",className:"pk-btn pk-primary",onClick:at,disabled:be||!d||d.rowCount===0,"data-testid":"import-apply"},i.apply):null))),T)}var It=3,mn=Object.freeze({past:Object.freeze([]),future:Object.freeze([])});function Qe(e,t,n){return{past:[...e.past,{data:t.data,history:{...t.history,future:[]},note:n}].slice(-It),future:[]}}function xt(e,t){let n=e.past[e.past.length-1];return n?{steps:{past:e.past.slice(0,-1),future:[...e.future,{data:t.data,history:t.history,note:n.note}]},step:n}:null}function Pt(e,t){let n=e.future[e.future.length-1];return n?{steps:{past:[...e.past,{data:t.data,history:t.history,note:n.note}],future:e.future.slice(0,-1)},step:n}:null}function Ut(e){for(let t=e.past.length-1;t>=0;t--)if(e.past[t].data===null)return e.past[t].history;return null}function G(e,t,n,r=[]){let o=t?t.encoded:e.hostEncoded;return{cause:n,source:t?{...t.source}:e.hostSource?{...e.hostSource}:null,file:t?{...t.file}:null,sheet:t?t.sheet:null,rows:o.length,columns:o.schema.fields.map(s=>({name:s.name,type:s.type})),notes:r}}var $t=0;function Y(e,t){try{return{refused:e.onDataLoad?.(t)===!1}}catch(n){return t.cause!=="load"&&setTimeout(()=>{throw n},0),{refused:!0,error:n}}}function zt(e,t){let n={key:++$t,encoded:t.encoded,source:t.source,sheet:t.sheet,file:t.file},r=k(e.labels),o=Y(e,G(e,n,"load",t.notes));if(o.refused)return o.error!==void 0&&e.announce(N(r.refused,{name:t.source.name,message:B(o.error)}),{tone:"error"}),!1;let s={lang:e.labels.lang,locale:e.locale};return e.setSteps(Qe(e.steps,{data:e.imported,history:e.history.snapshot()},N(r.stepLoaded,{name:t.source.name}))),e.setImported(n),e.announce(N(r.loaded,{name:t.source.name,rows:D(r.rows,t.rows,s),columns:D(r.columns,t.columns.length,s)}),{action:{label:e.labels.undo,run:e.undo}}),!0}function Ft(e){if(!e.imported)return;let t=k(e.labels),n=Ut(e.steps);e.setSteps(Qe(e.steps,{data:e.imported,history:e.history.snapshot()},t.backToOriginal)),e.setImported(null),n&&e.history.replace({...n,past:[],future:[]}),Y(e,G(e,null,"original")),e.announce(t.originalShown,{action:{label:e.labels.undo,run:e.undo}})}function pn(e,t){let n=(t?xt:Pt)(e.steps,{data:e.imported,history:e.history.snapshot()});return n?(e.setSteps(n.steps),e.setImported(n.step.data),e.history.replace(n.step.history),Y(e,G(e,n.step.data,t?"undo":"redo")),n.step.note):null}function hn(e){e.imported&&Y(e,G(e,e.imported,"restore"))}var jt=0,J=new WeakMap;function et(e,t){let n=e.announce(t,{tone:"error"});typeof n=="number"&&typeof e.dismiss=="function"&&J.set(e.dismiss,[...J.get(e.dismiss)??[],n])}function Vt(e,t){let n=e.dismiss;typeof n=="function"&&((J.get(n)??[]).forEach(r=>n(r)),J.delete(n)),t.length===1?e.setJob({file:t[0],n:++jt}):t.length>1&&et(e,k(e.labels).dropOne)}function fn(e){e&&(e.value="",e.click())}function yn({api:e,input:t}){let n=ae(),r=e.job;return A.default.createElement(A.default.Fragment,null,A.default.createElement("input",{ref:t,type:"file",name:n,hidden:!0,tabIndex:-1,"aria-hidden":"true",accept:gt(e.plugins),onChange:o=>Vt(e,[...o.target.files??[]]),"data-testid":"file-input"}),e.dragging?A.default.createElement(Rt,{labels:e.labels,locale:e.locale,plugins:e.plugins,box:e.box}):null,r?A.default.createElement(Mt,{key:r.n,job:r,labels:e.labels,locale:e.locale,plugins:e.plugins,worker:e.worker,limits:e.limits,timeZone:e.timeZone,announce:(o,s)=>s?.tone==="error"?et(e,o):e.announce(o,s),onClose:()=>e.setJob(o=>o===r?null:o),onApply:o=>{zt(e,o),e.setJob(s=>s===r?null:s)}}):null)}function gn({api:e,close:t}){let n={name:e.sourceName??null,rows:e.encoded.length,columns:e.encoded.schema.fields.length,imported:!!e.imported};return A.default.createElement(Ct,{labels:e.labels,locale:e.locale,source:n,plugins:e.plugins,close:t,onPick:e.pick,onBack:()=>Ft(e)})}function En({api:e}){return e.imported?A.default.createElement(_t,{labels:e.labels,source:{name:e.imported.source.name,sheet:e.imported.sheet}}):null}export{gn as DataMenuPanel,yn as ImportLayer,En as SourceLine,pn as moveData,fn as pickFile,hn as restoreData,Vt as startFiles};
@@ -0,0 +1 @@
1
+ import"./chunk-DCANE7XH.js";var e={aboutSetting:"\xDCber {setting}",settingInfo:{grandTotalRow:"Eine letzte Zeile mit der Summe jeder Spalte.",grandTotalColumn:"Eine letzte Spalte mit der Summe jeder Zeile.",rowSubtotals:"Mit zwei oder mehr Feldern in Zeilen: eine Summenzeile unter jeder Gruppe des \xE4u\xDFeren Felds.",colSubtotals:"Mit zwei oder mehr Feldern in Spalten: eine Summenspalte nach jeder Gruppe des \xE4u\xDFeren Felds.",along:"Die Richtung der Berechnung: Zeilen geht die Zeilen jeder Spalte hinunter, Spalten \xFCber die Spalten jeder Zeile. Eine laufende Summe addiert entlang, eine Differenz vergleicht mit dem Eintrag davor.",showAs:"Zeigt jeden Wert als Anteil, Differenz, laufende Summe oder Rang statt der Zahl selbst. Bei Prozenten sagt ein Tipp \xFCber dem Ergebnis, was 100 % ist.",exportXlsx:"Jede Zahl mit allen Nachkommastellen, Formate bleiben, bereit zum Rechnen.",exportCsv:"Prozente und Berechnungen wie in der Tabelle, als reiner Text.",copyTable:"Die Tabelle wie angezeigt, mit \xDCberschriften und Summen: tabulatorgetrennt, wird in Excel oder Google Sheets in Spalten eingef\xFCgt.",copyDataJson:"Die Zahlen der Tabelle mit ihren Beschriftungen als JSON, f\xFCr ein Programm. Nicht die Ansicht selbst: Das ist Ansichten \u2192 Ansicht als JSON kopieren.",drillCopy:"Die Zeilen wie im Bereich angezeigt, mit einer \xDCberschriftenzeile: tabulatorgetrennt, wird in Excel oder Google Sheets in Spalten eingef\xFCgt.",drillJson:"Die Zeilen als JSON-Objekte, mit den Feldnamen und Rohwerten der Daten, f\xFCr ein Programm.",groupLabels:"Mit zwei oder mehr Feldern in Zeilen: die Eintr\xE4ge des \xE4u\xDFeren Felds einmal unter der Achse, unter ihren Kategorien.",labelPosition:"Au\xDFen: Name und Zahl jedes Segments daneben. Innen: die Zahl auf dem Segment, die Namen in der Legende; au\xDFen, wenn der Ring eines Donuts daf\xFCr zu schmal ist.",sharedView:"Nur Admins k\xF6nnen gemeinsame Ansichten \xE4ndern.",valuesFilter:"Werte werden hier nicht gefiltert: Ein Feld in Zeilen oder Spalten \xFCber sein Men\xFC filtern oder ein Feld in Filter ziehen."},back:"Zur\xFCck",backTo:"Zur\xFCck zum Men\xFC von {name}",levelTitle:"{name} \u203A {topic}",searchMenu:"Im Men\xFC von {name} suchen",searchMenuShort:"In diesem Men\xFC suchen (Taste /)",searchResults:"Treffer",searchNothing:"Nichts gefunden. Ein anderes Wort versuchen oder die Suche leeren.",sortByValue:"Nach Wert sortieren",sortOldestShort:"\xC4lteste",sortNewestShort:"Neueste",filterTopic:"Filter",filterAll:"Alle",groupTopic:"Gruppieren",groupNoneShort:"Keine",off:"Aus",moveToTitle:"Verschieben nach",topOwn:"Top N\u2026",binsOff:"Bereiche entfernen",valueConditionTitle:"Bedingung f\xFCr einen Wert",nameHint:"Gilt mit Enter oder beim Verlassen des Felds; Escape gibt den Namen zur\xFCck.",showAsKeywords:"prozent % anteil",nameKeywords:"umbenennen bezeichnung titel",filterKeywords:"werte ausw\xE4hlen regel regeln bedingung zeitraum datum",formatDecimals:{one:"Zahl, {count} Dezimalstelle",other:"Zahl, {count} Dezimalstellen"},listAnd:" und ",summaryAll:"Alle {total} {noun} gezeigt",summarySome:"{shown} der {total} {noun} gezeigt",summaryNone:"Nichts gezeigt",summaryOk:"Alle Eintr\xE4ge ausgew\xE4hlt, keine Regeln.",summaryKept:"Alle Eintr\xE4ge ausgew\xE4hlt; die Regeln behalten sie alle.",summaryQuickOnly:"Alle Eintr\xE4ge ausgew\xE4hlt; {quick}.",summaryPicks:"{count} durch deine Auswahl weggelassen",summaryQuick:"{count} au\xDFerhalb von {quick}",summaryRules:{one:"{items} durch die Regel weggelassen",other:"{items} durch die Regeln weggelassen"},summaryTotals:{one:"{items} durch die Regel zum Gesamtwert weggelassen",other:"{items} durch die Regeln zu den Gesamtwerten weggelassen"},summaryRows:"{rows} von {total} Zeilen",summaryData:"Daten {range}",yearsAll:"{years} zusammengefasst",yearsOne:"nur {year}",emptyPicks:"Nichts ist ausgew\xE4hlt.",emptyRules:"Kein Eintrag ({noun}) erf\xFCllt {rules}.",emptyTotal:"Kein Eintrag ({noun}) hat einen Gesamtwert, {rule} \u2013 {spread}.",totalSpread:"die Gesamtwerte reichen von {low} ({lowItem}) bis {high} ({highItem})",totalWords:"der bei {measure} {op} {number} ist",totalWordsTwo:"der bei {measure} {op} {from} und {to} liegt",resetFilter:"Filter zur\xFCcksetzen",nouns:{item:{one:"Eintrag",other:"Eintr\xE4ge"},value:{one:"Wert",other:"Werte"},date:{one:"Datum",other:"Daten"},year:{one:"Jahr",other:"Jahre"},quarter:{one:"Quartal",other:"Quartale"},month:{one:"Monat",other:"Monate"},week:{one:"Woche",other:"Wochen"},day:{one:"Tag",other:"Tage"},weekday:{one:"Wochentag",other:"Wochentage"},hour:{one:"Stunde",other:"Stunden"},range:{one:"Bereich",other:"Bereiche"}},quickTitle:"Schnellauswahl",quickCount:{year:"Anzahl Jahre",month:"Anzahl Monate",day:"Anzahl Tage"},quickLast:{year:{one:"Letztes {count} Jahr",other:"Letzte {count} Jahre"},month:{one:"Letzter {count} Monat",other:"Letzte {count} Monate"},day:{one:"Letzter {count} Tag",other:"Letzte {count} Tage"}},quickRows:"{rows} Zeilen",quickHidden:{one:"{choices} wird nicht angeboten: die Daten enden am {latest}.",other:"{choices} werden nicht angeboten: die Daten enden am {latest}."},anchorLabel:"Gez\xE4hlt ab",anchorToday:"heute ({date})",anchorLatest:"dem letzten Datensatz ({date})",quickLine:"Schnellauswahl: {text}",changeAbove:"oben \xE4ndern",yearsCombined:"Jahre zusammengefasst",yearsCombinedHint:"ein Eintrag ({noun}) \xFCber die markierten Jahre",yearsCombinedOne:"Die Tabelle zeigt nur {year}.",pickItems:"Eintr\xE4ge ausw\xE4hlen",picksState:"{picked} von {total} ausgew\xE4hlt",picksAll:"alle {total} ausgew\xE4hlt",clear:"Zur\xFCcksetzen",clearPicks:"Auswahl zur\xFCcksetzen",rulesState:{one:"{count} Regel",other:"{count} Regeln"},rulesNoneState:"Keine Regeln",removeAll:"Entfernen",removeRules:"Regeln entfernen",tailOut:{one:"Durch die Regeln weggelassen ({count}) \u2013 das H\xE4kchen gilt wieder, sobald sie weg sind",other:"Durch die Regeln weggelassen ({count}) \u2013 die H\xE4kchen gelten wieder, sobald sie weg sind"},rulesKeep:"{noun} behalten, f\xFCr die alles zutrifft:",rulesNone:"{noun} behalten, f\xFCr die alles zutrifft. Unten eine Regel hinzuf\xFCgen.",ruleKeeps:"Beh\xE4lt {kept} der {total} {noun}",ruleKeepsNone:"Beh\xE4lt 0 der {total} {noun} \u2013 {spread}.",ruleIncomplete:"Gilt, sobald sie vollst\xE4ndig ist.",explainRule:"Diese Regel erkl\xE4ren",ruleInfo:{number:"Vergleicht den Wert selbst, nicht seinen Gesamtwert. Beispiel: \u201Ezwischen 20 und 25\u201C beh\xE4lt die Werte von 20 bis 25.",date:"Vergleicht jedes Datum nach seinem Kalendertag. Beispiel: \u201Evor 1. M\xE4rz 2022\u201C beh\xE4lt jeden Tag bis zum 28. Februar 2022.",group:"Vergleicht jeden Eintrag nach seinem Platz auf der Zeitachse. Beispiel: \u201Eab 2022\u201C beh\xE4lt 2022 und alle sp\xE4teren.",cyclic:"Vergleicht jeden Eintrag nach seinem Platz im Jahr, \xFCber alle Jahre zusammen. Beispiel: \u201Eab Juni\u201C beh\xE4lt Juni bis Dezember.",total:"Der Gesamtwert eines Eintrags ist sein Wert in der Zeile Gesamt \u2013 {measure} \xFCber {scope} \u2013 nicht eine einzelne Zelle. Beispiel: \u201Egr\xF6\xDFer als 20\u201C beh\xE4lt die {nouns} mit einem Gesamtwert \xFCber 20.",name:"Vergleicht den Namen jedes Eintrags, wie die Tabelle ihn schreibt. Beispiel: \u201Eenth\xE4lt \xE4r\u201C beh\xE4lt M\xE4rz."},scopeItems:"alle {count} Eintr\xE4ge von {field}",scopeDates:"die Daten {range}",scopeRows:"jede Zeile",pickerSearch:"Eintr\xE4ge suchen",pickerMatch:"{count} von {total} passen",pickerNone:"Kein Treffer",rulesTitle:"Regeln",ruleAnd:"und",addRule:"Regel hinzuf\xFCgen",addRuleItem:"{field} vergleichen",addRuleTotal:"Gesamtwert vergleichen",addRuleName:"Regel zum Namen",removeRule:"Diese Regel entfernen",rulesFull:"H\xF6chstens {max} Regeln je Feld.",ruleName:"Name",ruleValue:"Wert",ruleDate:"Datum",dateOps:{"=":"gleich","!=":"ungleich",">":"nach",">=":"ab","<":"vor","<=":"bis",between:"zwischen",notBetween:"nicht zwischen"},lastOp:{one:"im letzten",other:"in den letzten"},ruleUnits:{year:{one:"Jahr",other:"Jahren"},month:{one:"Monat",other:"Monaten"},day:{one:"Tag",other:"Tagen"}},ruleWhose:"Eintr\xE4ge von {field} mit Gesamtwert",blanksOut:"Leere Eintr\xE4ge werden nicht behalten.",ruleUnit:"Einheit",moveLeft:"Nach links",moveRight:"Nach rechts",remove:"Feld entfernen",chartAutoNow:"Jetzt: {type}",sharedViews:"Gemeinsame Ansichten",myViews:"Meine Ansichten",noViews:"Noch keine gespeicherten Ansichten.",noViewsStore:"Noch keine. Gespeicherte Ansichten bleiben nur in diesem Browser.",publishView:"{name} als gemeinsame Ansicht ver\xF6ffentlichen",publishConfirm:"\u201E{name}\u201C als gemeinsame Ansicht ver\xF6ffentlichen? Alle, die diesen Bericht nutzen, sehen sie.",publishAction:"Ver\xF6ffentlichen",storeNote:"Nur in diesem Browser gespeichert: nicht auf anderen Ger\xE4ten, und weg, wenn die Websitedaten gel\xF6scht werden.",storeFull:"dieser Browser beh\xE4lt h\xF6chstens {max} Ansichten",storeTooLarge:"die Ansichten br\xE4uchten mehr als {max} Zeichen",storeRefused:"dieser Browser hat sie nicht behalten (Speicher gesperrt oder voll)",storeChanged:"die Ansichten wurden in einem anderen Tab ge\xE4ndert; das Men\xFC neu \xF6ffnen",toastSaved:"Ansicht \u201E{name}\u201C gespeichert",toastDeleted:"Ansicht \u201E{name}\u201C gel\xF6scht",toastPublished:"Ansicht \u201E{name}\u201C ver\xF6ffentlicht",toastSaveFailed:"Die Ansicht konnte nicht gespeichert werden: {message}",toastDeleteFailed:"Die Ansicht konnte nicht gel\xF6scht werden: {message}",toastPublishFailed:"Die Ansicht konnte nicht ver\xF6ffentlicht werden: {message}",toastSaveRejected:"Der Server konnte die Ansicht nicht speichern.",toastDeleteRejected:"Der Server konnte die Ansicht nicht l\xF6schen.",toastPublishRejected:"Der Server konnte die Ansicht nicht ver\xF6ffentlichen.",deleteView:"{name} l\xF6schen",deleteConfirm:"\u201E{name}\u201C l\xF6schen?",deleteAction:"L\xF6schen",saveView:"Aktuelle Ansicht speichern",viewName:"Name der Ansicht",thisView:"Diese Ansicht",saveNamed:"\u201E{name}\u201C speichern",saveAs:"Speichern unter\u2026",saveSharedLocked:"Gemeinsame Ansicht: nicht \xE4nderbar. \u201ESpeichern unter\u201C nutzen.",saveNotInViews:"Noch nicht gespeichert. \u201ESpeichern unter\u201C nutzen.",replaceConfirm:"\u201E{name}\u201C gibt es schon. Ersetzen?",replaceAction:"Ersetzen",replaceSharedConfirm:"Die gemeinsame Ansicht \u201E{name}\u201C f\xFCr alle ersetzen?",save:"Speichern",cancel:"Abbrechen",expandAll:"Alle aufklappen",collapseAll:"Alle zuklappen",aggregation:"Zusammenfassen mit",moreStatistics:"Weitere Statistiken",showAsNone:"Der Wert selbst",moreCalculations:"Weitere Berechnungen",showAsNames:{percentOfGrandTotal:"% des Gesamtergebnisses",percentOfRowTotal:"% der Zeilensumme",percentOfColumnTotal:"% der Spaltensumme",percentOfParentRow:"% der \xFCbergeordneten Zeile",percentOfParentColumn:"% der \xFCbergeordneten Spalte",differenceFromPrevious:"Differenz zum vorherigen",percentDifferenceFromPrevious:"% Differenz zum vorherigen",runningTotal:"Laufende Summe",percentRunningTotal:"% laufende Summe",rankAscending:"Rang, kleinster zuerst",rankDescending:"Rang, gr\xF6\xDFter zuerst"},along:"Entlang",format:"Zahlenformat",formatAuto:"Automatisch",formats:{number:"Zahl","number:0":"Zahl ohne Nachkommastellen","number:2":"Zahl mit 2 Nachkommastellen",integer:"Ganze Zahl",currency:"W\xE4hrung",percent:"Prozent",compact:"Kompakt (1,2 Tsd.)",bytes:"Bytes (KB, MB)","duration:h":"Dauer aus Stunden","duration:s":"Dauer aus Sekunden"},conditional:"Hervorheben",conditionalNone:"Keine",colorScale:"Farbskala",dataBar:"Datenbalken",rename:"Name",sortOldest:"\xC4lteste zuerst",sortNewest:"Neueste zuerst",groupNone:"Keine Gruppierung (jedes Datum mit Uhrzeit)",groupTimeline:"Entlang der Zeitachse",groupCyclic:"Gleicher Zeitraum in jedem Jahr",unitHints:{year:"2025",yearQuarter:"Q1 2025",yearMonth:"Jan. 2025",yearWeek:"2025-W03",day:"15.01.2025",quarter:"Q1 jedes Jahres",month:"Jan. jedes Jahres",week:"W03 jedes Jahres",weekday:"Mo. bis So.",hour:"00:00 bis 23:00",bin:""},bins:"Zahlenbereiche",binsState:"Bereiche zu {size} ab {start}",binSize:"Bereichsgr\xF6\xDFe",binStart:"Beginnt bei",binStartFar:"Bereiche ab {start} k\xF6nnen die Werte dieses Felds ({min} bis {max}) nicht fassen: Jede Zeile w\xE4re leer. Einen Beginn n\xE4her an den Werten w\xE4hlen.",apply:"Anwenden",topN:"Oberste Eintr\xE4ge",topCount:"Anzahl",bottom:"Unterste",topBy:"nach",searchValues:"Werte suchen",selectAll:"Alle ausw\xE4hlen",selectNone:"Keine ausw\xE4hlen",onlyThis:"Nur",valuesShown:"{shown} von {total} Werten; suchen, um weitere zu finden",conditionNumber:"Bedingung f\xFCr die Beschriftung",conditionNone:"Keine Bedingung",conditionValue:"Text",selected:"{count} ausgew\xE4hlt",exportDownload:"Herunterladen",exportCopy:"Kopieren",exportXlsx:"Excel-Arbeitsmappe (.xlsx)",exportCsv:"CSV-Datei (.csv)",exportPng:"Diagramm als Bild (.png)",exportPngNeedsChart:"Zuerst zum Diagramm wechseln.",exportNeedsField:"Zuerst ein Feld hinzuf\xFCgen.",copyTable:"Tabelle kopieren",copyDataJson:"Daten als JSON kopieren",toastTableCopied:"Tabelle kopiert: tabulatorgetrennt, wird in Excel oder Google Sheets in Spalten eingef\xFCgt",toastDataCopied:"Daten als JSON kopiert",toastCopyBlocked:"Diese Seite erlaubt kein Kopieren. Stattdessen eine Datei herunterladen.",drillTitle:"Zeilen hinter diesem Wert",drillCount:{one:"{count} Zeile",other:"{count} Zeilen"},drillShown:"Die ersten {shown} von {count} Zeilen",drillCopy:"Kopieren",drillJson:"Als JSON kopieren",drillCsv:"CSV herunterladen",drillXlsx:"Excel herunterladen",drillPart:"{shown} von {count} Zeilen",drillCopied:"{rows} kopiert: tabulatorgetrennt, wird in Excel oder Google Sheets in Spalten eingef\xFCgt",drillCopiedJson:"{rows} als JSON kopiert",drillExported:"{file} exportiert ({rows})",drillExportNote:"Enth\xE4lt die ersten {shown} von {count} Zeilen, wie hier gezeigt.",showTips:"Tipps zeigen",showSettingInfo:"Erkl\xE4rungen zeigen",resetTips:"Ausgeblendete Tipps wieder zeigen",sectionChanged:", ge\xE4ndert",help:"Hilfe",shortcutsTitle:"Tastenk\xFCrzel",keys:{Mod:"Strg",Shift:"Umschalt","Arrow keys":"Pfeiltasten",Enter:"Eingabe",Space:"Leertaste",Escape:"Esc",F10:"F10"},shortcuts:{undo:"R\xFCckg\xE4ngig",redo:"Wiederholen",move:"Zwischen den Werten der Tabelle wechseln",open:"Die Zeilen hinter einem Wert \xF6ffnen; nach einer \xDCberschrift sortieren; ein Men\xFC \xF6ffnen",drag:"Ein Feld oder einen Chip aufnehmen und ablegen",close:"Ein Men\xFC, ein Fenster oder einen Tipp schlie\xDFen",fields:"In der Feldliste: auf und ab zwischen den Feldern, links und rechts zum Griff eines Felds, seinem \u201Ei\u201C und seinem Men\xFC",fieldMenu:"Das Men\xFC des Felds im Fokus \xF6ffnen"},valueLabels:"Wertbeschriftung",valueLabelNames:{auto:"Automatisch",off:"Aus",value:"Wert",percent:"Prozent",both:"Wert und Prozent"},legend:"Legende",legendNames:{auto:"Automatisch",bottom:"Unten",right:"Rechts",off:"Aus"},chartTitle:"Titel",chartTitleNone:"Kein Titel",smoothLines:"Gegl\xE4ttete Linien",labelPosition:"Beschriftung",labelPositionNames:{outside:"Au\xDFen",inside:"Innen"},axisLabels:"Achsenbeschriftung",axisLabelNames:{auto:"Automatisch",all:"Alle (schr\xE4g)",nth:"Jede n-te"},groupLabels:"Gruppen unter der Achse",groupLabelNames:{auto:"Automatisch",on:"Ein",off:"Aus"},defaultName:"Standardnamen verwenden",shareThisView:"Diese Ansicht teilen",copyLink:"Link kopieren",copyJson:"Ansicht als JSON kopieren",downloadView:"Ansicht herunterladen (.pivotkit.json)",sharePrivacy:"Eine Ansicht enth\xE4lt die Namen der Felder und in ihren Filtern die dort gew\xE4hlten Werte: Nur dort teilen, wo diese gesehen werden d\xFCrfen.",loadView:"Ansichtsdatei \xF6ffnen\u2026",loadViewHint:"Eine Ansichtsdatei, eine Ansicht als JSON oder einen Link einf\xFCgen oder eine .pivotkit.json-Datei w\xE4hlen.",loadViewText:"Ansicht als JSON oder Link",chooseFile:"Datei w\xE4hlen\u2026",load:"Laden",loadCheckTitle:"Diese Ansicht passt vielleicht nicht zu diesen Daten",loadAnyway:"Trotzdem laden",switchAndLoad:"Zu \u201E{source}\u201C wechseln und laden",switchStartsFresh:"Der Wechsel zeigt die anderen Daten mit dieser Ansicht; R\xFCckg\xE4ngig beginnt dort.",numberInvalid:"Eine Zahl eingeben, etwa {example}.",countInvalid:"Eine ganze Zahl ab 1 eingeben.",countMax:"Eine ganze Zahl bis {max} eingeben.",sizeInvalid:"Eine Zahl \xFCber 0 eingeben, etwa {example}.",valueFilterBy:"Wert",valueFilterOp:"Bedingung",valueFilterNumber:"Zahl",valueFilterTo:"und",valueOps:{"=":"gleich","!=":"ungleich",">":"gr\xF6\xDFer als",">=":"mindestens","<":"kleiner als","<=":"h\xF6chstens",between:"zwischen",notBetween:"nicht zwischen"},moreFormats:"Weitere Formate",totals:"Summen",grandTotalRow:"Gesamtzeile",grandTotalColumn:"Gesamtspalte",rowSubtotals:"Teilergebnisse der Zeilen",colSubtotals:"Teilergebnisse der Spalten",needsRowField:"Braucht ein Feld in Zeilen.",needsColField:"Braucht ein Feld in Spalten.",needsRowFields:"Braucht zwei oder mehr Felder in Zeilen.",needsColFields:"Braucht zwei oder mehr Felder in Spalten.",expandNothing:"Nichts ist zugeklappt.",collapseNeedsRows:"Braucht zwei oder mehr Felder in Zeilen.",collapseAllDone:"Alle Gruppen sind schon zugeklappt.",groupsCollapsed:{one:"{count} Gruppe zugeklappt",other:"{count} Gruppen zugeklappt"},groupsExpanded:{one:"{count} Gruppe aufgeklappt",other:"{count} Gruppen aufgeklappt"},chartDisplay:"Darstellung",toastExported:"{file} exportiert",toastLinkCopied:"Link kopiert",toastJsonCopied:"Ansicht als JSON kopiert",toastCopyFailed:"Diese Seite erlaubt kein Kopieren. Stattdessen \u201EAnsicht herunterladen\u201C verwenden.",toastLinkTooLong:"Diese Ansicht ist zu gro\xDF f\xFCr einen Link. Stattdessen \u201EAnsicht herunterladen\u201C verwenden."};export{e as de};