pivotkit-element 0.2.0 → 0.3.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{a as R,b as H,c as x,d as A,f as ae,g as C,h as le,i as y,j as z,k as S,m as Be,n as ee,o as K,p as Je,q as Y}from"./chunk-MB64GADT.js";var Ae=Object.freeze({json:5e6,name:256,axisFields:8,values:16,filters:128,items:1e5,derived:64,sort:64,collapsed:1e4,topCount:1e6,rows:1e6,groups:5e5,pivotCells:2e6,work:1e8,cells:2e6,cacheEntries:16}),ke=Object.freeze({groups:2**27}),Ge=10;function P(e){let t=e&&e.limits;if(t==null)return Ae;if(typeof t!="object")throw new R("INVALID_OPTION","options.limits must be an object");let n={...Ae};for(let o of Object.keys(t)){let r=t[o];if(!Object.hasOwn(Ae,o))throw new R("INVALID_OPTION",`unknown limit "${o}"`);if(!Number.isInteger(r)||r<1)throw new R("INVALID_OPTION",`limits.${o} must be a whole number of 1 or more`);if(Object.hasOwn(ke,o)&&r>ke[o])throw new R("INVALID_OPTION",`limits.${o} must be at most ${ke[o]}`);n[o]=r}return Object.freeze(n)}var B=()=>"number",Wt=()=>"text";function Ht(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 We(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 Kt(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 Yt(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 He(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 qt(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 ue(e,t){return(n,o)=>{let r=new Float64Array(o),s=new Float64Array(o),i=new Float64Array(o),a=n.values;return{add:(l,u)=>{let c=a[u];if(c===c){let f=++r[l],d=c-s[l];s[l]+=d/f,i[l]+=d*(c-s[l])}},get:l=>{let u=r[l],c=e?u-1:u;if(c<=0)return null;let f=Math.max(0,i[l])/c;return t?Math.sqrt(f):f}}}}function Ke(e){return(t,n,o)=>{let r=new Int32Array(n).fill(-1),s=t.codes;return{add:(i,a)=>{let l=s[a];if(l===-1)return;let u=r[i];(u===-1||(e?o[l]>o[u]:o[l]<o[u]))&&(r[i]=l)},get:i=>{let a=r[i];if(a===-1)return null;let l=t.dict[a];return typeof l=="boolean"?String(l):l}}}}var ce=e=>e==="date"?"date":"number",Ye=e=>e==="date"?"date":e==="number"?"number":"text",Ce=Object.freeze({count:{numeric:!1,additive:!0,resultType:B,create:Ht},countUnique:{numeric:!1,keepsValues:!0,resultType:B,create:(e,t)=>{let n=We(e,t);return{add:n.add,get:o=>n.sets[o]?n.sets[o].size:0}}},listUnique:{numeric:!1,keepsValues:!0,resultType:Wt,create:(e,t,n,o)=>{let r=We(e,t);return{add:r.add,get:s=>{let i=r.sets[s];return i?[...i].sort((a,l)=>n[a]-n[l]).map(o).join(", "):null}}}},sum:{numeric:!0,additive:!0,resultType:B,create:Kt},average:{numeric:!0,dates:!0,resultType:ce,create:Yt},median:{numeric:!0,dates:!0,keepsValues:!0,resultType:ce,create:qt},min:{numeric:!0,dates:!0,resultType:ce,create:He(-1)},max:{numeric:!0,dates:!0,resultType:ce,create:He(1)},stdev:{numeric:!0,resultType:B,create:ue(!0,!0)},stdevp:{numeric:!0,resultType:B,create:ue(!1,!0)},var:{numeric:!0,resultType:B,create:ue(!0,!1)},varp:{numeric:!0,resultType:B,create:ue(!1,!1)},first:{numeric:!1,resultType:Ye,create:Ke(!1)},last:{numeric:!1,resultType:Ye,create:Ke(!0)}}),Xt=Object.freeze(Object.keys(Ce));function _(e){return typeof e=="string"&&Object.hasOwn(Ce,e)?Ce[e]:null}function Ie(e,t){let n=_(e);return n?n.numeric?t==="number"||t==="boolean"||t==="null"||t==="date"&&n.dates===!0:!0:!1}function Dr(e){return Xt.filter(t=>Ie(t,e))}var $e=K(128);function D(e,t={}){return $e.getOrSet(`n|${e}|${JSON.stringify(t)}`,()=>new Intl.NumberFormat(e,t))}function j(e,t){return $e.getOrSet(`d|${e}|${JSON.stringify(t)}`,()=>new Intl.DateTimeFormat(e,t))}function qe(e){return $e.getOrSet(`c|${e}`,()=>new Intl.Collator(e,{numeric:!0,sensitivity:"base"}))}var Qt={dateStyle:"medium",timeZone:"UTC"},en={dateStyle:"medium",timeStyle:"short",timeZone:"UTC"},I=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=I){if(t==null)return o.blank??I.blank;if(e.labeler)return e.labeler(t,n);switch(e.type){case"date":return j(n,e.dateOnly?Qt:en).format(new Date(Number(t)));case"boolean":return t?o.true??"true":o.false??"false";default:return String(t)}}function tn(e,t,n){let o=e==null,r=t==null;if(o||r)return o===r?0:o?1:-1;let s=typeof e=="number"||typeof e=="boolean",i=typeof t=="number"||typeof t=="boolean";return s&&i?Number(e)-Number(t):s!==i?s?-1:1:qe(n).compare(String(e),String(t))}function xe(e,t,n){return n.getOrSet(`ranks:${e.id}:${t}`,()=>{let o=e.dict.map((s,i)=>i);o.sort((s,i)=>tn(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 fe(e,t){return String(e).replace(/\{(\w+)\}/g,(n,o)=>Object.hasOwn(t,o)?String(t[o]):n)}var Vr=Object.freeze(["number","integer","currency","percent","percent100","compact","bytes","duration","date","datetime","time","text"]),nn=20,tt={ms:.001,s:1,min:60,h:3600,d:86400},rn=/^(number|integer|currency|percent|percent100|compact|bytes|duration|date|datetime|time|text)(?::([A-Za-z0-9]{1,10}))?$/,Me=new Set(["number","percent","percent100"]),nt={date:{dateStyle:"medium",timeZone:"UTC"},datetime:{dateStyle:"medium",timeStyle:"short",timeZone:"UTC"},time:{timeStyle:"short",timeZone:"UTC"}},on={signDisplay:"negative"},de=null;function sn(e){return de===null&&(de=typeof Intl.supportedValuesOf=="function"?new Set(Intl.supportedValuesOf("currency")):!1),de?de.has(e.toUpperCase()):/^[a-z]{3}$/i.test(e)}function q(e){if(typeof e!="string")return null;let t=rn.exec(e.trim().toLowerCase());if(!t)return null;let[,n,o]=t;return o!==void 0&&(n==="currency"&&!sn(o)||n==="duration"&&!Object.hasOwn(tt,o)||Me.has(n)&&!(/^\d{1,2}$/.test(o)&&Number(o)<=nn)||!["currency","duration",...Me].includes(n))?null:{name:n,arg:o,decimals:Me.has(n)&&o!==void 0?Number(o):void 0}}function Zr(e,t){let n=q(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 D(t,{style:"currency",currency:(n.arg||"EUR").toUpperCase()}).resolvedOptions().maximumFractionDigits??2;default:return null}}function rt(e){return q(e)!==null}function re(e){return e==null||e===""?NaN:typeof e=="number"?e:Number(e)}var Le=(e,t)=>e===void 0?{maximumFractionDigits:t}:{minimumFractionDigits:e,maximumFractionDigits:e};function an(e,t){if(!Number.isFinite(e))return"";let n=e<=-.05?"-":"",o=Math.abs(e);if(o<60)return`${n}${D(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],l=Math.floor(o/a),u=[`${l} ${i}`],c=r[s+1];if(c){let f=Math.floor((o-l*a)/c[1]);f>0&&u.push(`${f} ${c[0]}`)}return n+u.join(" ")}function ln(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=D(t,{maximumFractionDigits:r===0?0:1}).format(o);return`${e<0&&/[1-9]/.test(s)?"-":""}${s} ${n[r]}`}function Ee(e){return e==null?"":String(e)}function Fe(e,t){let n=q(e)||{name:"number",arg:void 0,decimals:void 0},o=r=>{let s=D(t,{...on,...r});return i=>{let a=re(i);return Number.isNaN(a)?Ee(i):s.format(a)}};switch(n.name){case"text":return Ee;case"integer":return o({maximumFractionDigits:0});case"currency":return o({style:"currency",currency:(n.arg||"EUR").toUpperCase()});case"percent":return o({style:"percent",...Le(n.decimals,1)});case"percent100":{let r=o({style:"percent",...Le(n.decimals,1)});return s=>r(re(s)/100)}case"compact":return o({notation:"compact",maximumFractionDigits:1});case"bytes":return r=>ln(re(r),t);case"duration":{let r=tt[n.arg||"s"];return s=>an(re(s)*r,t)}case"date":case"datetime":case"time":{let r=j(t,nt[n.name]);return s=>{let i=re(s);return Number.isFinite(i)?r.format(new Date(i)):Ee(s)}}default:return o(Le(n.decimals,2))}}function Br(e,t){return t=C(t,"formatter"),Fe(e,Y(null,t.locale))}var Xe=K(64),me=e=>e.replace(/[^ :/-]+/g,t=>`"${t.replace(/"/g,"")}"`),pe=e=>e>0?"."+"0".repeat(e):"";function De(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 Qe(e,t,n=!0){let o="",r="",s=!1;for(let i of e)i.type==="integer"||i.type==="group"||i.type==="decimal"||i.type==="fraction"||i.type==="minusSign"||i.type==="percentSign"&&n?(o+=me(r),r="",i.type==="minusSign"?o+="-":i.type==="percentSign"?o+="%":s||(o+=t,s=!0)):r+=i.value;return o+me(r)}function ot(e,t,n,o=!0){let r=Qe(e.formatToParts(t),n,o),s=Qe(e.formatToParts(-t),n,o);return s===`-${r}`?r:`${r};${s}`}function un(e,t){let n=D(t,{style:"currency",currency:e});return ot(n,1234.5,`#,##0${pe(n.resolvedOptions().maximumFractionDigits)}`)}function et(e,t,n){return ot(D(t,{style:"percent"}),.5,`#,##0${pe(e)}`,n)}function cn(e,t){if(!Number.isFinite(e)||e===0)return"#,##0";let n=D(t,{notation:"compact",maximumFractionDigits:1}).formatToParts(Math.abs(e)),o=n.filter(u=>u.type==="integer").map(u=>u.value).join(""),r=n.filter(u=>u.type==="fraction").map(u=>u.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(u=>u.type==="integer"),l=n.slice(a).filter(u=>u.type==="compact"||u.type==="literal").map(u=>u.value).join("");return`#,##0${pe(r.length)}${",".repeat(i/3)}${me(l)}`}function fn(e,t){return j(t,nt[e]).formatToParts(new Date(Date.UTC(2026,0,5,3,4))).map(o=>{switch(o.type){case"year":return o.value.length===2?"yy":"yyyy";case"month":return/^\d+$/.test(o.value)?o.value.length===2?"mm":"m":"mmm";case"day":return o.value.length===2?"dd":"d";case"hour":return o.value.length===2?"hh":"h";case"minute":return"mm";case"second":return"ss";case"dayPeriod":return"AM/PM";case"weekday":return"ddd";default:return me(o.value)}}).join("")}function Jr(e,t,n){let o=q(e)||{name:"number",arg:void 0,decimals:void 0};switch(o.name){case"integer":return"#,##0";case"number":return`#,##0${pe(o.decimals??De(t,2))}`;case"percent":return et(o.decimals??De(t*100,1),n,!0);case"percent100":return et(o.decimals??De(t,1),n,!1);case"currency":return Xe.getOrSet(`${e}|${n}`,()=>un((o.arg||"EUR").toUpperCase(),n));case"compact":return cn(t,n);case"date":case"datetime":case"time":return Xe.getOrSet(`${o.name}|${n}`,()=>fn(o.name,n));case"text":return"@";default:return"General"}}function Re(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,l=e.map(c=>c.codes),u=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 g=0;g<a;g++)d=d*u[g]+l[g][f]+1}else{d="";for(let g=0;g<a;g++)d+=l[g][f]+","}let p=i.get(d);if(p===void 0){p=o.length;let g=new Array(a);for(let m=0;m<a;m++)g[m]=l[m][f];o.push(g),i.set(d,p)}n[c]=p}return{groupOf:n,paths:o}}function st(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 _e(e,t,n={max:1/0,used:0}){let{groupOf:o,paths:r}=Re(e,t);x("groups",n.used+r.length+(e.length>0?1:0),n.max,"groups");let s=st(0,0,-2,null,null),i=[s],a=Math.max(1,...e.map(d=>d.dict.length+1)),l=(Number.isFinite(n.max)?n.max:t.length*e.length+1)*a<2**53,u=new Map,c=new Array(r.length);r.forEach((d,p)=>{let g=s;for(let m=0;m<d.length;m++){let h=d[m],v=l?g.id*a+h+1:`${g.id},${h}`,N=u.get(v);if(N===void 0){n.used+i.length>=n.max&&x("groups",n.used+i.length+1,n.max,"groups");let b=h===-1?null:e[m].dict[h];N=st(i.length,m+1,h,b,g),i.push(N),u.set(v,N),g.children.push(N)}g=N}c[p]=g});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 dn=(e,t)=>e===t||e===null&&t===null||typeof e=="number"&&typeof t=="number"&&Number.isNaN(e)&&Number.isNaN(t);function it(e,t,n){let o=t==="cols"?e.colRoot:e.rowRoot;for(let r of n||[])if(o=o.children.find(s=>dn(s.key,r)),!o)return null;return o}function Kr(e,t){t=C(t,"cellRows");let{row:n=[],col:o=[]}=t,r=Array.isArray(n)?it(e,"rows",n):n,s=Array.isArray(o)?it(e,"cols",o):o;if(!r||!s)return new Int32Array(0);let i=(l,u,c)=>{let f=l[u];for(;f&&f.depth>c.depth;)f=f.parent;return f===c},a=[];for(let l=0;l<e.rows.length;l++)i(e.rowNodes,e.rowLeafOf[l],r)&&i(e.colNodes,e.colLeafOf[l],s)&&a.push(e.rows[l]);return Int32Array.from(a)}var je=1e-9;function at(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)*A,a=1+Math.round((o-i)/(7*A));return{year:r,week:a}}var mn=(e,t)=>j(t,{month:"short",timeZone:"UTC"}).format(new Date(Date.UTC(2e3,e-1,1))),pn=(e,t)=>j(t,{month:"short",year:"numeric",timeZone:"UTC"}).format(new Date(Date.UTC(Math.floor(e/100),e%100-1,1))),gn=(e,t)=>j(t,{weekday:"short",timeZone:"UTC"}).format(new Date(Date.UTC(2024,0,e))),Qr=Object.freeze(["year","yearQuarter","yearMonth","yearWeek","day"]),eo=Object.freeze(["quarter","month","week","weekday","hour"]),F=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:mn},week:{source:"date",type:"number",value:e=>at(e.getTime()).week,label:e=>`W${ae(e)}`},day:{source:"date",type:"date",value:e=>Math.floor(e.getTime()/A)*A},hour:{source:"date",type:"number",value:e=>e.getUTCHours(),label:e=>`${ae(e)}:00`},weekday:{source:"date",type:"number",value:e=>(e.getUTCDay()+6)%7+1,label:gn},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:pn},yearWeek:{source:"date",type:"number",value:e=>{let t=at(e.getTime());return t.year*100+t.week},label:e=>`${Math.floor(e/100)}-W${ae(e%100)}`},bin:{source:"number",type:"number"}}),to=Object.freeze(Object.keys(F)),yn=Object.freeze([{unit:"day",maxDays:62},{unit:"yearMonth",maxDays:2*366},{unit:"yearQuarter",maxDays:6*366},{unit:"year",maxDays:1/0}]);function no(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)/A;return s>=1?yn.find(i=>s<=i.maxDays).unit:null}function hn(e,t){let n=Math.min(20,Math.max(ee(e),ee(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=l=>{let u=s+l*r;return i&&Number.isSafeInteger(u)?u/o:t+l*e};return{decimals:n,lowerOf(l){let u=Math.floor((l-t)/e);return Number.isSafeInteger(u)?(l>=a(u+1)?u++:l<a(u)&&u--,a(u)):NaN},upperOf(l){return a(Math.round((l-t)/e)+1)}}}function ut(e,t){let n=e.column(t.field),o=Object.hasOwn(F,t.by)?F[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,()=>wn(n,t,o,r));return s.name===t.name?s:{...s,name:t.name,key:t.name.toLowerCase()}}var lt=9999;function bn(e,t){return e.decimals>0?!1:t.every(n=>Math.abs(n)<=lt&&Math.abs(e.upperOf(n))<=lt)}function wn(e,t,n,o){let r=e.values.length,s=new Int32Array(r),i=new Float64Array(r),a=[],l=new Map,u=t.by==="bin"?hn(t.size,t.origin??0):null,c=new Date(0);for(let d=0;d<r;d++){let p=e.values[d],g=NaN;if(Number.isNaN(p)||(u?g=u.lowerOf(p):(c.setTime(p),g=n.value(c))),Number.isNaN(g)){s[d]=-1,i[d]=NaN;continue}let m=l.get(g);m===void 0&&(m=a.length,a.push(g),l.set(g,m)),s[d]=m,i[d]=g}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(u){let d=!bn(u,a);f.labeler=(p,g)=>{let m=D(g,{maximumFractionDigits:u.decimals,signDisplay:"negative",useGrouping:d});return`${m.format(p)} \u2013 ${m.format(u.upperOf(p))}`}}else f.labeler=n.label;return f}var ct="UTC",ft=864e13,ge=e=>typeof e=="number"&&Math.abs(e)<=ft,Nn=/^(\d{4})-(\d{2})-(\d{2})(?:[T ](\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{1,9}))?)?(Z|[+-]\d{2}(?::?\d{2})?)?)?$/;function dt(e,t,n,o=0,r=0,s=0,i=0){if(e>=100)return Date.UTC(e,t-1,n,o,r,s,i);let a=new Date(Date.UTC(2e3,t-1,n,o,r,s,i));return a.setUTCFullYear(e),a.getTime()}function mt(e){let t=Nn.exec(e.trim());if(!t)return null;let n=t[8],o=+t[1],r=+t[2],s=+t[3],i=t[4]===void 0?0:+t[4],a=t[5]===void 0?0:+t[5],l=t[6]===void 0?0:+t[6],u=t[7];if(r<1||r>12||s<1||i>23||a>59||l>59)return null;let c=dt(o,r,s,i,a,l,u?Math.round(+`0.${u}`*1e3):0);if(new Date(c).getUTCDate()!==s)return null;let f=null;if(n)if(n==="Z")f=0;else{let d=n.slice(1).replace(":",""),p=Number(d.slice(0,2)),g=Number(d.slice(2)||0);if(p>23||g>59)return null;f=(n[0]==="-"?-1:1)*(p*60+g)}return{ms:c,offsetMinutes:f}}function pt(e){return mt(e)!==null}function ye(e){if(e==null)return ct;if(e==="local")return new Intl.DateTimeFormat().resolvedOptions().timeZone??ct;let t=Ue(e);if(!t)throw new R("INVALID_OPTION",`time zone ${JSON.stringify(e)} is not "UTC", "local" or an IANA name`);return t}function Ue(e){if(typeof e!="string"||e.length===0||e.length>64)return null;if(e.toUpperCase()==="UTC")return"UTC";try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).resolvedOptions().timeZone}catch{return null}}function he(e){if(e==="UTC")return r=>r;let t=new Intl.DateTimeFormat("en-US",{timeZone:e,hourCycle:"h23",year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric"}),n=r=>{let s={};for(let a of t.formatToParts(new Date(r)))s[a.type]=Number(a.value);let i=r-(r%1e3+1e3)%1e3;return dt(s.year,s.month,s.day,s.hour,s.minute,s.second)-i},o=new Map;return r=>{let s=Math.floor(r/A),i=o.get(s);if(i===void 0){let a=n(s*A),l=n(Math.min((s+1)*A-1,ft));i=a===l?a:NaN,o.set(s,i)}return r+(Number.isNaN(i)?n(r):i)}}function oe(e,t){if(e instanceof Date){let n=e.getTime();return Number.isNaN(n)?NaN:t(n)}if(typeof e=="string"){let n=mt(e);return n?n.offsetMinutes===null?n.ms:t(n.ms-n.offsetMinutes*6e4):NaN}return typeof e=="number"&&Number.isFinite(e)?t(e):NaN}var On=Object.freeze(["string","number","boolean","date"]),vn=/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,Tn=100;function yt(e){let t=e.trim();return t.length<=Tn&&vn.test(t)}var Sn=100,ht=e=>e==null||e===""||typeof e=="function"||typeof e=="symbol";function An(e,t){if(ht(e))return null;switch(typeof e){case"number":return Number.isFinite(e)?"number":null;case"boolean":return"boolean";case"string":return pt(e)?"date":t&&yt(e)?"number":"string";case"bigint":return"number";default:return e instanceof Date?Number.isNaN(e.getTime())?null:"date":"string"}}function gt(e,t){let n=null;for(let o=0;o<e.length;o++){let r=An(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 kn(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 Cn(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"&&yt(e)){let t=Number(e.trim());return Number.isFinite(t)?t:NaN}return NaN}function In(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 $n={number:e=>{let t=Cn(e);return Number.isNaN(t)?null:t},boolean:In,date:(e,t)=>{let n=oe(e,t);return Number.isNaN(n)?null:n},string:e=>{let t=kn(e);return t===""?null:t},null:()=>null};function xn(e,t,n,o){let r=t.length,s=new Int32Array(r),i=[],a=new Map,l=n==="number"||n==="boolean"||n==="date"?new Float64Array(r):null,u=$n[n],c=!0;for(let p=0;p<r;p++){let g=t[p],m=ht(g)?null:u(g,o);if(m===null){s[p]=-1,l&&(l[p]=NaN);continue}n==="date"&&m%A!==0&&(c=!1);let h=a.get(m);h===void 0&&(h=i.length,i.push(m),a.set(m,h)),s[p]=h,l&&(l[p]=typeof m=="boolean"?m?1:0:m)}let f=e.toLowerCase(),d={name:e,key:f,id:`column:${f}`,type:n,codes:s,dict:i,values:l};return n==="date"&&(d.dateOnly=c),d}function fo(e,t){t=C(t,"encode"),H(Array.isArray(e),"encode(rows): rows must be an array of objects");let n=P(t);x("rows",e.length,n.rows,"rows");let o=e.length,r=ye(t.timeZone),s=he(r),i=t.inferNumbers===!0,a=Array.isArray(t.columns)?new Set(t.columns.filter(m=>typeof m=="string").map(m=>m.toLowerCase())):null,l=[],u=(m,h)=>{l.length<Sn&&l.push({path:m,message:h})},c=new Map;for(let m=0;m<o;m++){let h=e[m];if(h===null||typeof h!="object")continue;let v=new Set;for(let N of Object.keys(h)){let b=N.toLowerCase(),O=c.get(b);if(O===void 0){if(a&&!a.has(b))continue;O={name:N,raw:new Array(o).fill(null),spellings:new Set([N])},c.set(b,O)}else O.spellings.has(N)||(O.spellings.add(N),u(O.name,`"${N}" and "${O.name}" are one column: names match case-insensitively`));v.has(b)&&u(O.name,`row ${m} has "${N}" next to another spelling of it; the later value is used`),v.add(b),O.raw[m]=h[N]}}let f=new Map;if(t.types&&typeof t.types=="object")for(let m of Object.keys(t.types)){let h=t.types[m];On.includes(h)&&f.set(m.toLowerCase(),h)}let d=a?[...a].filter(m=>c.has(m)):[...c.keys()],p=new Map,g=d.map(m=>{let{name:h,raw:v}=c.get(m),N=gt(v,i),b=N==="string"&&!i?gt(v,!0):N;return p.set(m,b),xn(h,v,f.get(m)??N,s)});return Mn(o,g,{timeZone:r,issues:l,detected:p,cacheEntries:n.cacheEntries})}function Mn(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:K(n.cacheEntries),enumerable:!1}),r}function bt(e){let t=e;return t!==null&&typeof t=="object"&&Array.isArray(t.columns)&&typeof t.column=="function"&&"cache"in t}var Ln=Object.freeze(["equals","notEquals","contains","notContains","beginsWith","endsWith"]),vt=Object.freeze(["=","!=",">",">=","<","<=","between","notBetween"]),Tt=Object.freeze(["year","month","day"]),be=500,St=Object.freeze(["today","latest"]),se=(e,t)=>typeof e=="string"&&t.includes(e)?e:null;function En(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 At(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 Dn=(e,t)=>At(e.op,t,e.value,e.value2),kt=e=>Math.floor(e/A)*A,ze=e=>new Date(e).toISOString().slice(0,-14);function Ct(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,p)=>new Date(0).setUTCFullYear(f,d,p),l=f=>e==="year"?a(r+f,s,i):e==="month"?a(r,s+f,i):a(r,s,i+f),u=l(1-t),c=l(1);return{from:Number.isNaN(u)?-1/0:u,to:Number.isNaN(c)?1/0:c}}function wo(e,t,n){n=C(n,"relativeDateRange");let o=n.anchor??"today";if(!Tt.includes(e)||!Number.isInteger(t)||t<1||t>be||!St.includes(o)||o==="latest"&&n.latest===void 0)return null;let r=ye(n.timeZone),{from:s,to:i}=Ct(e,t,Ne(o==="latest"?n.latest:n.now,r));return!Number.isFinite(s)||!Number.isFinite(i)?null:{from:ze(s),to:ze(i-A)}}function Ne(e,t){let n=he(t),o=oe(e===void 0?Date.now():e,r=>ge(r)?n(r):NaN);if(!ge(o))throw new R("INVALID_OPTION","now must be a Date, epoch milliseconds or an ISO date string");return o}function J(e,t){if(t===null)return null;switch(e){case"number":{let n=typeof t=="number"?t:typeof t=="string"&&t.trim()!==""?Number(t):NaN;return Number.isFinite(n)?n:void 0}case"date":{let n=typeof t=="number"?t:typeof t=="string"?oe(t,o=>o):NaN;return Number.isFinite(n)?n:void 0}case"boolean":return typeof t=="boolean"?t:t==="true"?!0:t==="false"?!1:void 0;default:return typeof t=="string"||typeof t=="number"||typeof t=="boolean"?String(t).slice(0,1e4):void 0}}function wt(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 Fn(e,t,n,o,r){let s=se(y(e,"op"),Ln),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 It=(e,t)=>e.derived?t.derived.find(n=>n.name===e.name)?.by:void 0,Rn=e=>typeof e.value=="string";function _n(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=It(n,s),a=n.type==="date"||i!==void 0&&F[i].source==="date"&&typeof y(e,"value")=="string"&&J("number",y(e,"value"))===void 0,l=p=>{if(!a){let m=p===void 0?void 0:J("number",p);return typeof m=="number"?m:null}let g=p===void 0||n.type!=="date"&&typeof p!="string"?void 0:J("date",p);return ge(g)?ze(kt(g)):null},u=se(y(e,"op"),vt),c=l(y(e,"value")),f=u==="between"||u==="notBetween",d=f?l(y(e,"value2")):null;return!u||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:u,value:c},f?{value2:d}:{})}function jn(e,t,n,o,r,s){let i=It(n,s);if(i===void 0?n.type!=="date":F[i].source!=="date")return r.issue(o,"needs a date field or a grouping of one","filterRelativeField",{field:n.name});let a=se(y(e,"unit"),Tt);if(!a)return r.issue(o,`unknown unit ${JSON.stringify(y(e,"unit"))}`,"filterRelativeUnit",{value:S(y(e,"unit"))});let l=z(y(e,"count"));if(l===null||!Number.isInteger(l)||l<1||l>be)return r.issue(o,`needs a whole count from 1 to ${be}`,"filterRelativeCount",{max:be});let u=y(e,"anchor"),c=u===void 0?"today":se(u,St);return c?Object.assign(t,{unit:a,count:l},c==="latest"?{anchor:c}:{}):r.issue(o,`unknown anchor ${JSON.stringify(u)}`,"filterRelativeAnchor",{value:S(u)})}function $t(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 Un(e,t,n,o,r,s){let i=$t(e,o,r,s);if(!i)return;let a=z(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 l=y(e,"bottom");return Object.assign(t,{by:i,count:a,bottom:typeof l=="boolean"?l:!1})}function zn(e,t,n,o,r,s){let i=$t(e,o,r,s);if(!i)return;let a=se(y(e,"op"),vt),l=z(y(e,"value"));if(!a||l===null)return r.issue(o,"needs an operator and a number","filterValue");if(Object.assign(t,{by:i,op:a,value:l}),a==="between"||a==="notBetween"){let u=z(y(e,"value2"));if(u===null)return r.issue(o,`${a} needs value2`,"filterValue2",{value:a});t.value2=u}return t}function Nt(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 Pn(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]=En(t.op,s,t.value)?1:0}return o}function Vn(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,l)=>{i[l+1]=At(t.op,n&&typeof a=="number"?kt(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 Bn(e,t,n,o){let{from:r,to:s}=Ct(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 Jn(e,t){return Uint8Array.from(t,n=>Dn(e,n)?1:0)}function Gn(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 we=(e,t)=>typeof e.source=="function"?e.source(t):!!e.source,M=Object.freeze({include:{stage:"items",normalize:wt,allowed:Nt(!0)},exclude:{stage:"items",normalize:wt,allowed:Nt(!1)},label:{stage:"items",normalize:Fn,allowed:Pn},compare:{stage:"items",normalize:_n,allowed:Vn,source:Rn},relative:{stage:"items",normalize:jn,allowed:Bn,source:!0},top:{stage:"values",normalize:Un,keep:Gn},value:{stage:"values",normalize:zn,keep:Jn}}),No=Object.freeze(Object.keys(M)),Wn=Object.freeze(["label","compare","relative"]);function Oo(e,t,n,o,r,s){let i=e.filters.filter(d=>d.field.toLowerCase()===t.toLowerCase()&&Wn.includes(d.type));if(!i.length)return null;let a=i.some(d=>d.type==="relative")?s():0,l=d=>M[d.type].allowed(we(M[d.type],d)?o:n,d,r,a),u=i.filter(d=>!we(M[d.type],d)).map(l),c=i.filter(d=>we(M[d.type],d)).map(l),f=new Uint8Array(n.dict.length+1);for(let d=0;d<n.codes.length;d++){let p=n.codes[d]+1;!f[p]&&u.every(g=>g[p]===1)&&c.every(g=>g[o.codes[d]+1]===1)&&(f[p]=1)}return f}function Ot(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 xt(e,t){let{view:n,columnOf:o,locale:r,today:s}=e,i=u=>n.derived.find(c=>c.name.toLowerCase()===u.toLowerCase())?.field??u;for(let u of n.filters){let c=M[u.type],f=o(we(c,u)?i(u.field):u.field);if(c.stage!=="items"||!f)continue;let d=c.allowed(f,u,r,s),p=f.codes;t=Ot(t,g=>d[p[g]+1]===1)}let a=u=>{let c=n.rows.indexOf(u);if(c!==-1)return{fields:n.rows.slice(0,c+1),order:c};let f=n.cols.indexOf(u);return f!==-1?{fields:n.cols.slice(0,f+1),order:100+f}:{fields:[u],order:200}},l=n.filters.filter(u=>M[u.type].stage==="values").map((u,c)=>({f:u,i:c,...a(u.field)})).sort((u,c)=>u.order-c.order||u.i-c.i);for(let{f:u,fields:c}of l){let f=c.map(o);if(f.includes(null))continue;let{groupOf:d,paths:p}=e.groupBy(f,t),g=e.aggregateGroups(u.by,t,d,p.length),m=M[u.type].keep(u,g,p);t=Ot(t,(h,v)=>m[d[v]]===1)}return t}var G=(e,t)=>e===null||t===null||t===0?null:e/t;function Pe(e){let t=e.axis!=="cols",n=t?e.rowNode:e.colNode;return{node:n,at:r=>t?e.raw(r,e.colNode):e.raw(e.rowNode,r),siblings:n.parent?n.parent.children:[n]}}function Mt(e){return(t,n)=>{let{node:o,at:r,siblings:s}=Pe(n);if(!o.parent||o.index===0||t===null)return null;let i=r(s[o.index-1])??0;return e?G(t-i,i):t-i}}function Lt(e){return(t,n)=>{let{node:o,at:r,siblings:s}=Pe(n);if(!o.parent)return e?t===null?null:1:t;let i=0;for(let a=0;a<=o.index;a++)i+=r(s[a])??0;return e?G(i,r(o.parent)):i}}function Et(e){return(t,n)=>{let{node:o,at:r,siblings:s}=Pe(n);if(!o.parent||t===null)return null;let i=1;for(let a of s){let l=r(a);l!==null&&(e?l>t:l<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:Mt(!1)},percentDifferenceFromPrevious:{format:"percent",alongAxis:!0,compute:Mt(!0)},runningTotal:{format:"number",alongAxis:!0,additive:!0,compute:Lt(!1)},percentRunningTotal:{format:"percent",alongAxis:!0,additive:!0,compute:Lt(!0)},rankAscending:{format:"integer",alongAxis:!0,compute:Et(!1)},rankDescending:{format:"integer",alongAxis:!0,compute:Et(!0)}}),To=Object.freeze(Object.keys(V));var Ft=1;var Hn=Object.freeze(["auto","bar","line","area","pie","donut","heatmap"]),Eo=Object.freeze(["pie","donut"]),Kn=Object.freeze(["table","chart"]),Do=Object.freeze(["colorScale","dataBar"]),Yn=Object.freeze(["auto","off","value","percent","both"]),qn=Object.freeze(["outside","inside"]),Xn=Object.freeze(["auto","bottom","right","off"]),Qn=Object.freeze(["auto","all","nth"]),er=Object.freeze(["auto","on","off"]),Dt=/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/;function tr(){return{version:Ft,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 nr=Object.freeze({});function rr(e){return or(e,nr,Ft)}function or(e,t,n){let o=[];if(!le(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 ie(e,t,n){return typeof e=="string"&&t.includes(e)?e:n}function Oe(e,t){return typeof e=="boolean"?e:t}function Rt(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 X(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 sr(e,t,n){X(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"),l=typeof a=="string"&&Object.hasOwn(F,a)?F[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(!l)return n.issue(r,"unknown grouping","groupingUnknown",{value:S(a)});if(i.type!==l.source)return l.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 u={name:s,field:i.name,by:a};if(a==="bin"){let c=z(y(o,"size"));if(c===null||c<je)return n.issue(r,`bins need a size of at least ${je}`,"binSize");u.size=c,u.origin=z(y(o,"origin"))??0}t.derived.push(u),n.fields.set(s.toLowerCase(),{name:s,type:l.type,derived:!0})})}function ir(e,t,n){let o=new Set;for(let r of["rows","cols"])X(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 ar(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"&&Dt.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"&&Dt.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 lr(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&&!_(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:ie(y(r,"axis"),["rows","cols"],"rows")}:(o.issue(n,`unknown show-as ${JSON.stringify(s)}`,"unknownShowAs",{value:S(s)}),null)}function ur(e,t,n){X(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},l=y(o,"format");l!=null&&(rt(l)?a.format=l.trim().toLowerCase():n.issue(`${r}.format`,`unknown format ${JSON.stringify(l)}`,"unknownFormat",{value:S(l)}));let u=y(o,"label");u!=null&&(a.label=n.text(u),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=lr(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=ar(f,`${r}.conditional`,n):n.issue(`${r}.conditional`,"conditional formatting needs a number value","conditionalNotNumber",{agg:s.agg})),t.values.push(a)})}function cr(e,t,n){X(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 l=a.normalize(o,{field:s.name,type:i},s,r,n,t);l&&t.filters.push(l)})}var fr=Object.freeze(["label","value","custom"]);function dr(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 mr(e,t,n){let o=new Set;X(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=ie(y(r,"by"),fr,"label"),l={field:i.name,by:a,order:ie(y(r,"order"),["asc","desc"],"asc")};if(a==="custom"){let u=dr(y(r,"items"),i,`${s}.items`,n);if(!u)return;l.items=u}if(a==="value"){let u=y(r,"value")===void 0?n.defaultRef(t):n.valueRef(y(r,"value"),`${s}.value`);if(!u)return;l.value=u}o.add(i.name),t.sort.push(l)})}function pr(e,t,n){let o=y(e,"totals");if(o!==void 0){if(!le(o))return n.issue("totals","not an object","badTotals");for(let r of Object.keys(t.totals))t.totals[r]=Oe(y(o,r),t.totals[r])}}function gr(e,t,n){for(let o of["rows","cols"]){let r=t[o].map(i=>n.fields.get(i.toLowerCase()).type),s=new Set;X(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((u,c)=>J(r[c],u));if(a.includes(void 0))return n.issue(`collapsed.${o}`,`path ${JSON.stringify(i)} does not fit the field types`,"collapsedPath");let l=JSON.stringify(a);s.has(l)||(s.add(l),t.collapsed[o].push(a))})}}function yr(e,t,n){let o=y(e,"display");t.display=ie(o,Kn,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,l,u)=>{let c=y(r,a),f=ie(c,l,u);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",Hn,t.chart.type),stacked:Oe(y(r,"stacked"),!1),horizontal:Oe(y(r,"horizontal"),!1),valueLabels:s("valueLabels",Yn,"auto"),legend:s("legend",Xn,"auto"),title:i==null?null:n.text(i),smooth:Oe(y(r,"smooth"),!1),axisLabels:s("axisLabels",Qn,"auto"),groupLabels:s("groupLabels",er,"auto"),labelPosition:s("labelPosition",qn,"outside")},i!=null&&t.chart.title===null&&!(typeof i=="string"&&i.trim()==="")&&n.issue("chart.title",`not a text up to ${n.limits.name} characters`,"badTitle",{max:n.limits.name})}}function hr(e,t,n){let o=y(e,"formatting"),r=y(o,"locale");r!=null&&(t.formatting.locale=Je(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=Ue(s),t.formatting.timeZone===null&&n.issue("formatting.timeZone",`unknown time zone ${JSON.stringify(s)}`,"unknownTimeZone",{value:S(s)}))}var br=[sr,ir,ur,cr,mr,pr,gr,yr,hr];function wr(e,t,n){let o=new Map(Rt(e).map(s=>[s.name.toLowerCase(),s])),r={limits:t,fields:o,issue:(s,i,a,l)=>{n.push(l?{path:s,message:i,code:a,params:l}:{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=>_(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(!le(s))return r.issue(i,"not a value reference","notValueRef"),null;let a=y(s,"agg"),l=y(s,"field"),u=l==null?null:r.resolve(l);return _(a)?u===void 0?(r.issue(i,`unknown field ${JSON.stringify(l)}`,"unknownField",{field:S(l)}),null):u===null&&a!=="count"?(r.issue(i,`${a} needs a field`,"aggregatorNeedsField",{agg:a}),null):u&&!Ie(a,u.type)?(r.issue(i,`${a} does not work on the ${u.type} field "${u.name}"`,"aggregatorType",{agg:a,type:u.type,field:u.name}),null):{field:u?u.name:null,agg:a}:(r.issue(i,`unknown aggregator ${JSON.stringify(a)}`,"unknownAggregator",{value:S(a)}),null)}};return r}function _t(e,t,n){n=C(n,"normalize");let o=P(n),r=[],s=tr(),i=(f,d,p,g)=>({view:s,issues:[...r,g?{path:f,message:d,code:p,params:g}:{path:f,message:d,code:p}]}),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 l=rr(a);if(r.push(...l.issues),l.view===null)return{view:s,issues:r};let u=l.view;for(let f of Object.keys(u))Object.hasOwn(s,f)||r.push({path:f.slice(0,100),message:"unknown key",code:"unknownKey"});let c=wr(t,o,r);for(let f of br)f(u,s,c);return{view:s,issues:r}}function Fo(e,t){return Rt(t).concat((e.derived||[]).map(n=>({name:n.name,type:F[n.by].type,derived:!0})))}var Ve=e=>`${e.agg}\0${e.field??""}`;function Nr(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?ut(e,i):e.column(r)??null)}return o.get(s)}}function Ut(e,t,n,o,r){let s=n?xe(n,r,e.cache):null;return _(t.agg).create(n,o,s,i=>ne(n,n.dict[i],r))}function Or(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=p=>{let g=[];for(let m=p;m;m=m.parent)g.push(m.id);return g},a=new Map,l=new Map,u=new Int32Array(e.length),c=new Map,f=[],d=new Map;for(let p=0;p<e.length;p++){let g=t.leafOf[p],m=n.leafOf[p],h=g*r+m,v=c.get(h);if(v===void 0){v=c.size,c.set(h,v),x("pivotCells",f.length+s,o,"pivot cells"),a.has(g)||a.set(g,i(t.nodes[g])),l.has(m)||l.set(m,i(n.nodes[m]));for(let N of a.get(g))for(let b of l.get(m)){let O=N*r+b,k=d.get(O);k===void 0&&(k=d.size,d.set(O,k)),f.push(k)}}u[p]=v}return e.length===0&&d.set(0,0),{cellIndex:d,pairOf:u,cells:f,perPair:s}}function vr(e,t,n,o,r,s,i,a){let l=i.nodes.length,{cellIndex:u,pairOf:c,cells:f,perPair:d}=Or(r,s,i,a),p=u.size,g=t.map(b=>Ut(e,b,b.field?n(b.field):null,p,o));for(let b of g)for(let O=0;O<r.length;O++){let k=c[O]*d,$=r[O];for(let L=k;L<k+d;L++)b.add(f[L],$)}let m=Symbol("unset"),h=t.map(()=>new Array(p).fill(m));return{value:(b,O,k)=>{let $=u.get(b.id*l+O.id);if($===void 0)return null;let L=h[k][$];return L===m&&(L=h[k][$]=g[k].get($)),L},has:(b,O)=>r.length>0&&u.has(b.id*l+O.id)}}function jt(e,t,n,o,r,s){let i=a=>{if(a.children.length===0)return;let l=o.get(t[a.depth])??{by:"label",order:"asc"},u=l.order==="desc"?-1:1,c=s(n[a.depth]),f=p=>p.code<0?1/0:c[p.code],d=(p,g)=>{let m=f(p),h=f(g);return m===h?0:m===1/0||h===1/0?m===1/0?1:-1:(m-h)*u};if(l.by==="custom"){let p=new Map(l.items.map((m,h)=>[m,h])),g=m=>p.has(m.key)?p.get(m.key):1/0;a.children.sort((m,h)=>{let v=g(m),N=g(h);return v===1/0&&N===1/0?d(m,h):v===N?0:v===1/0?1:N===1/0?-1:(v-N)*u})}else if(l.by==="value"){let p=new Map(a.children.map(g=>[g,r(g,l.value)]));a.children.sort((g,m)=>{let h=p.get(g),v=p.get(m);return h===null||v===null?h===v?d(g,m):h===null?1:-1:(h-v)*u||d(g,m)})}else a.children.sort(d);a.children.forEach((p,g)=>{p.index=g,i(p)})};i(e.root)}function Ho(e,t,n){n=C(n,"computePivot"),H(bt(e),"computePivot(data, view): data must come from encode()");let o=P(n),{view:r,issues:s}=_t(t,e,n),i=Y(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=Nr(e,r),l=w=>xe(w,i,e.cache),u={view:r,locale:i,today:Ne(n.now,e.timeZone),columnOf:a,groupBy:Re,aggregateGroups:(w,T,E,U)=>{let Q=Ut(e,w,w.field?a(w.field):null,U,i);for(let Z=0;Z<T.length;Z++)Q.add(E[Z],T[Z]);return Array.from({length:U},(Z,Se)=>Q.get(Se))}},c=new Int32Array(e.length);for(let w=0;w<c.length;w++)c[w]=w;c=xt(u,c);let f=new Map,d=[],p=w=>{let T=Ve(w);return f.has(T)||(f.set(T,d.length),d.push({field:w.field,agg:w.agg})),f.get(T)},g=r.values.map(p);for(let w of r.sort)w.by==="value"&&p(w.value);let m=d.reduce((w,T)=>w+(_(T.agg).keepsValues?Ge:1),0);x("work",c.length*(r.rows.length+1)*(r.cols.length+1)*m,o.work,"cell updates");let h=r.rows.map(a),v=r.cols.map(a),N={..._e(h,c,{max:o.groups,used:0}),depth:h.length},b={..._e(v,c,{max:o.groups,used:N.nodes.length}),depth:v.length},{value:O,has:k}=vr(e,d,a,i,c,N,b,o.pivotCells),$=w=>typeof w=="number"?w:null,L=new Map(r.sort.map(w=>[w.field,w]));jt(N,r.rows,h,L,(w,T)=>$(O(w,b.root,f.get(Ve(T)))),l),jt(b,r.cols,v,L,(w,T)=>$(O(N.root,w,f.get(Ve(T)))),l);let Jt=r.values.map(w=>{if(w.showAs)return"number";let T=w.field?a(w.field):null;return _(w.agg).resultType(T?T.type:"number")}),Te=(w,T,E)=>O(w,T,g[E]),Gt=(w,T,E)=>{let U=r.values[E],Q=Te(w,T,E);return U.showAs?V[U.showAs.type].compute($(Q),{rowNode:w,colNode:T,rowRoot:N.root,colRoot:b.root,raw:(Z,Se)=>$(Te(Z,Se,E)),axis:U.showAs.axis}):Q};return{view:r,issues:s,locale:i,timeZone:e.timeZone,encoded:e,rows:c,rowFields:r.rows,colFields:r.cols,rowColumns:h,colColumns:v,values:r.values,valueTypes:Jt,rowRoot:N.root,colRoot:b.root,rowNodes:N.nodes,colNodes:b.nodes,rowLeafOf:N.leafOf,colLeafOf:b.leafOf,value:Te,display:Gt,hasRows:k,label:(w,T,E=I)=>{if(!T.parent)return E.grandTotal??I.grandTotal;let U=(w==="cols"?v:h)[T.depth-1];return ne(U,T.key,i,E)}}}function zt(e){let t=e;return t!==null&&typeof t=="object"&&typeof t.display=="function"&&t.rowRoot!==void 0}function Pt(e){return JSON.stringify(e)}function Ze(e,t,n,o,r){let s=new Set(n.map(Pt)),i=[];if(t===0)return i.push({node:e,kind:"leaf"}),i;let a=l=>{if(l.children.length===0){i.push({node:l,kind:"leaf"});return}if(s.has(Pt(l.path))){i.push({node:l,kind:"collapsed"});return}l.children.forEach(a),o&&i.push({node:l,kind:"subtotal"})};return e.children.forEach(a),(r||i.length===0)&&i.push({node:e,kind:"grand"}),i}var Tr=new Set(["average","median","stdev","stdevp","var","varp"]),ve=2;function Sr(e,t){let n=t?e.column(t):void 0;return!n||n.type!=="number"?ve:e.cache.getOrSet(`decimals:${n.id}`,()=>{let o=0;for(let r of n.dict)if(typeof r=="number"&&(o=Math.max(o,ee(r)),o>=ve))return ve;return o})}function Ar(e,t){let n=e.values[t],o=n.showAs?V[n.showAs.type].format:null;if(o==="percent")return n.format&&q(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:${Tr.has(n.agg)?ve:Sr(e.encoded,n.field)}`}function kr(e,t=I){if(e.label)return e.label;let n;if(!e.field)n=t.countRows??I.countRows;else{let a={...I.aggregators,...t.aggregators||{}},l=Object.hasOwn(a,e.agg)?a[e.agg]:e.agg;n=fe(t.valueName??I.valueName,{agg:l,field:te(e.field,t)})}if(!e.showAs)return n;let o={...I.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 fe(t.showAsName??I.showAsName,{showAs:s,value:i})}var W=e=>e==="grand"?2:e==="subtotal"?1:0;function Cr(e,t){let n=e;for(;n&&n.depth>t;)n=n.parent;return n}function Vt(e,t,n,o,r,s){for(let i=t;i<o;i++)for(let a=n;a<r;a++){let l=e[i][a];if(!l||l.mergeKey===void 0)continue;let u=l.mergeKey,c=a+1;for(;c<r&&e[i][c]&&e[i][c].mergeKey===u;)c++;let f=i+1;for(;f<o;){let d=!0;for(let p=a;p<c;p++)if(!e[f][p]||e[f][p].mergeKey!==u){d=!1;break}if(!d)break;f++}if(c-a>1||f-i>1){l.colSpan=c-a,l.rowSpan=f-i,s.push({row:i,col:a,rowSpan:f-i,colSpan:c-a});for(let d=i;d<f;d++)for(let p=a;p<c;p++)(d!==i||p!==a)&&(e[d][p]=null)}}}function Ir(e,t){let n=e.map(Be),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,l)=>Math.round(a+(i[l]-a)*r).toString(16).padStart(2,"0")).join("")}function ss(e){let t=e;return t!==null&&typeof t=="object"&&Array.isArray(t.rows)&&Array.isArray(t.merges)&&Number.isInteger(t.columnCount)}var Zt=(e,t,n)=>({axis:e,path:t.path,collapsed:n});function Bt(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),l=o==="grand"?0:n.depth-1;if(o!=="leaf"&&r===l){let d={text:o==="collapsed"?a(n):n.parent?fe(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=Zt(t,n,!0)),d}if(o!=="leaf"&&r>l)return{text:"",value:null,kind:s,total:W(o),mergeKey:`s${n.id}:${o}`};let u=Cr(n,r+1),c={text:a(u),value:u.key,kind:s,total:0,...i(u),mergeKey:`n${u.id}`};return u.children.length>0&&(c.toggle=Zt(t,u,!1)),c}function $r(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 l=0;l<n;l++)a===o-1?s[a][l]={text:t.rows.length>0?te(t.rows[l],e.labels):"",value:null,kind:"corner",total:0,field:t.rows.length>0?t.rows[l]:void 0}:l===n-1?s[a][l]={text:te(t.cols[a],e.labels),value:null,kind:"corner",total:0,field:t.cols[a]}:s[a][l]={text:"",value:null,kind:"corner",total:0,mergeKey:"corner"};let i=t.values.length===1;return e.dataColumns.forEach(({line:a,vi:l},u)=>{let c=n+u;for(let d=0;d<t.cols.length;d++)s[d][c]=Bt(e,"cols",a,d);let f={text:l>=0?e.names[l]:"",value:null,kind:"colHeader",total:i?0:W(a.kind),valueIndex:l>=0?l:void 0,colPath:i?[]:a.node.path};i&&(f.mergeKey="value"),s[o-1][c]=f}),s}function xr(e,t){let{result:n,view:o,k:r,width:s}=e;return t.map(i=>{let{node:a,kind:l}=i,u=new Array(s).fill(null);for(let c=0;c<r;c++)u[c]=o.rows.length===0?{text:o.values.length>0||o.cols.length>0?e.labels.grandTotal:"",value:null,kind:"rowHeader",total:2,rowPath:[]}:Bt(e,"rows",i,c);return e.dataColumns.forEach(({line:c,vi:f},d)=>{let p=Math.max(W(l),W(c.kind)),g=n.hasRows(a,c.node);if(f<0){u[r+d]={text:"",value:null,kind:"value",total:p,rowPath:a.path,colPath:c.node.path,hasRows:g};return}let m=n.display(a,c.node,f);u[r+d]={text:m===null?"":e.formatters[f](m),value:m,kind:"value",total:p,valueType:o.values[f].showAs?"number":n.valueTypes[f],format:e.formats[f],rowPath:a.path,colPath:c.node.path,valueIndex:f,hasRows:g}}),u})}function Mr(e,t){e.view.values.forEach((n,o)=>{if(!n.conditional)return;let r=[];for(let a of t)for(let l=e.k;l<e.width;l++){let u=a[l];u&&u.valueIndex===o&&u.total===0&&typeof u.value=="number"&&r.push(u)}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 l=i===s?.5:(a.value-s)/(i-s),u=n.conditional.colors;a.style={scale:l,color:u.length>=2?Ir(u,l):null}}else{let l=Math.min(0,s),u=Math.max(0,i);a.style={bar:u===l?0:(a.value-l)/(u-l),color:n.conditional.color}}})}function is(e,t){t=C(t,"toGrid"),H(zt(e),"toGrid(result): result must come from computePivot()");let n=P(t),o=e.view,r=Y(o.formatting.locale,t.locale??e.locale),s={...I,...t.labels||{}},i=Ze(e.rowRoot,o.rows.length,o.collapsed.rows,o.totals.rowSubtotals,o.totals.grandTotalRow),l=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((O,k)=>({line:b,vi:k}))),u=Math.max(1,o.rows.length),c=o.cols.length+1,f=u+l.length;x("cells",(c+i.length)*f,n.cells,"grid cells");let d=o.values.map((b,O)=>Ar(e,O)),p={result:e,view:o,labels:s,dataColumns:l,k:u,h:c,width:f,formats:d,formatters:d.map(b=>Fe(b,r)),names:o.values.map(b=>kr(b,s))},g=$r(p),m=xr(p,i),h=[];Vt(g,0,0,c,f,h);let v=[];Vt(m,0,0,m.length,u,v),h.push(...v.map(b=>({...b,row:b.row+c}))),Mr(p,m);let N=g.concat(m);for(let b of N)for(let O of b)O&&delete O.mergeKey;return{rows:N,headerRows:c,rowHeaderColumns:u,columnCount:f,merges:h,dataColumns:l.map(({line:b,vi:O})=>({colPath:b.node.path,valueIndex:O,total:W(b.kind)})),bodyRows:i.map(({node:b,kind:O})=>({rowPath:b.path,total:W(O),collapsed:O==="collapsed"})),formats:d,showAs:o.values.map(b=>b.showAs?b.showAs.type:null),valueNames:p.names,conditional:o.values.map(b=>b.conditional),locale:r,timeZone:e.timeZone}}var ls=Object.freeze({colorScale:Object.freeze(["#f8696b","#ffeb84","#63be7b"]),dataBar:"#638ec6",pieRadius:Object.freeze(["0%","70%"]),donutRadius:Object.freeze(["42%","70%"])});export{Ae as a,P as b,On as c,fo as d,bt as e,Xt as f,Dr as g,D as h,Qr as i,eo as j,to as k,no as l,ut as m,I as n,te as o,ne as p,xe as q,Ln as r,vt as s,Tt as t,be as u,St as v,wo as w,Ne as x,No as y,Oo as z,Vr as A,q as B,Zr as C,rt as D,Fe as E,Br as F,De as G,Jr as H,V as I,To as J,Ft as K,Hn as L,Eo as M,Kn as N,Do as O,Yn as P,qn as Q,Xn as R,Qn as S,er as T,tr as U,_t as V,Fo as W,it as X,Kr as Y,Ho as Z,zt as _,Ze as $,Ar as aa,kr as ba,ss as ca,is as da,ls as ea};
@@ -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{B as Z,C as K,D as Q,E as L,G as ee,H as N,b as G,ca as R,e as Y,ea as te,h as q,n as J,o as W}from"./chunk-RXM4LLDS.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"./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.",newReport:"Nimmt alle Felder heraus, um neu anzufangen. R\xFCckg\xE4ngig holt sie zur\xFCck; gespeicherte Ansichten bleiben.",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?",newAlready:"Der Bericht ist schon leer.",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",share:"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:"Ansicht laden\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};