pivotkit-element 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +131 -1
- package/dist/THIRD_PARTY_LICENSES.txt +2 -2
- package/dist/chunks/chunk-4PHDW2LB.js +1 -0
- package/dist/chunks/chunk-5QXN3X2Q.js +1 -0
- package/dist/chunks/chunk-65G326ME.js +1 -0
- package/dist/chunks/chunk-65O4Z5GI.js +1 -0
- package/dist/chunks/chunk-CCL5TDLA.js +6 -0
- package/dist/chunks/chunk-NSPPM3IJ.js +16 -0
- package/dist/chunks/chunk-PJA6QZ4Y.js +2 -0
- package/dist/chunks/chunk-QOKB5RDG.js +6 -0
- package/dist/chunks/chunk-SB3L4HHW.js +1 -0
- package/dist/chunks/chunk-WKVC2RPA.js +1 -0
- package/dist/chunks/chunk-XETFD6GR.js +1 -0
- package/dist/chunks/chunk-XR4CMFGN.js +1 -0
- package/dist/chunks/chunk-YUY4D5MF.js +8 -0
- package/dist/chunks/echarts-4DC3BQOK.js +5 -0
- package/dist/chunks/export-YHS47KGK.js +1 -0
- package/dist/chunks/import-csv-UCA275TR.js +1 -0
- package/dist/chunks/import-json-W4GCIW36.js +1 -0
- package/dist/chunks/import-ui-7XVUBL2H.js +1 -0
- package/dist/chunks/link-45LOEA7H.js +1 -0
- package/dist/chunks/menu-texts-de-74DWTJDI.js +1 -0
- package/dist/chunks/menus-XBN5D32E.js +2 -0
- package/dist/chunks/report-run-BZBFOMPF-4M6ACMUF.js +60 -0
- package/dist/chunks/unused-texts-Y4R67XSN-VYGDYJND.js +1 -0
- package/dist/chunks/unused-texts-de-6YVPTNVS-FL6CDBZX.js +1 -0
- package/dist/element.js +1 -1
- package/dist/import-worker.js +1 -0
- package/dist/index.js +1 -1
- package/package.json +11 -5
- package/types/element.d.ts +80 -93
- package/types/events.d.ts +1 -0
- package/types/global.d.ts +3 -1
- package/types/jsx.d.ts +1 -1
- package/dist/chunks/chunk-FW54TETI.js +0 -9
- package/dist/chunks/chunk-J3NYMXAT.js +0 -6
- package/dist/chunks/chunk-MB64GADT.js +0 -1
- package/dist/chunks/chunk-RXM4LLDS.js +0 -1
- package/dist/chunks/echarts-42T6EZ6B.js +0 -18
- package/dist/chunks/export-GKVGFFWM.js +0 -6
- package/dist/chunks/link-52SWRX4P.js +0 -1
- package/dist/chunks/menu-texts-de-X4IUO7W5.js +0 -1
- package/dist/chunks/menus-SYPZC2NE.js +0 -1
- package/dist/chunks/unused-texts-K3VFH65P-5EAURTYC.js +0 -1
- package/dist/chunks/unused-texts-de-OW4TGIVX-GHETGXFE.js +0 -1
|
@@ -1 +0,0 @@
|
|
|
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};
|