pivotkit-element 0.1.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.
- package/CHANGELOG.md +113 -1
- package/README.md +42 -365
- package/dist/chunks/chunk-DCANE7XH.js +1 -0
- package/dist/chunks/chunk-FW54TETI.js +9 -0
- package/dist/chunks/chunk-J3NYMXAT.js +6 -0
- package/dist/chunks/chunk-MB64GADT.js +1 -0
- package/dist/chunks/chunk-RXM4LLDS.js +1 -0
- package/dist/chunks/{echarts-LRMTE3RI.js → echarts-42T6EZ6B.js} +12 -12
- package/dist/chunks/{export-7NQ77OOT.js → export-GKVGFFWM.js} +1 -1
- package/dist/chunks/link-52SWRX4P.js +1 -0
- package/dist/chunks/menu-texts-de-X4IUO7W5.js +1 -0
- package/dist/chunks/menus-SYPZC2NE.js +1 -0
- package/dist/chunks/unused-texts-K3VFH65P-5EAURTYC.js +1 -0
- package/dist/chunks/unused-texts-de-OW4TGIVX-GHETGXFE.js +1 -0
- package/dist/element.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +3 -3
- package/dist/chunks/chunk-3J3RQPK7.js +0 -8
- package/dist/chunks/chunk-75T75RQU.js +0 -6
- package/dist/chunks/chunk-7HSMEVX7.js +0 -1
- package/dist/chunks/chunk-KQ7VYRM6.js +0 -1
- package/dist/chunks/chunk-LXY26OUE.js +0 -2
- package/dist/chunks/link-EYT7DYWT.js +0 -1
- package/dist/chunks/menus-CB4DJWWT.js +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{d as U,e as G,f as x,g as $,i as re,j as C,k as oe,l as y,m as P,o as Fe,p as X,q as H,r as _e,s as W}from"./chunk-7HSMEVX7.js";var z=()=>"number",Et=()=>"text";function Dt(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 je(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 Ft(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 _t(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 Re(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 jt(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 se(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],m=c-s[l];s[l]+=m/f,i[l]+=m*(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 Ue(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 ie=e=>e==="date"?"date":"number",Pe=e=>e==="date"?"date":e==="number"?"number":"text",he=Object.freeze({count:{numeric:!1,additive:!0,resultType:z,create:Dt},countUnique:{numeric:!1,keepsValues:!0,resultType:z,create:(e,t)=>{let n=je(e,t);return{add:n.add,get:o=>n.sets[o]?n.sets[o].size:0}}},listUnique:{numeric:!1,keepsValues:!0,resultType:Et,create:(e,t,n,o)=>{let r=je(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:z,create:Ft},average:{numeric:!0,dates:!0,resultType:ie,create:_t},median:{numeric:!0,dates:!0,keepsValues:!0,resultType:ie,create:jt},min:{numeric:!0,dates:!0,resultType:ie,create:Re(-1)},max:{numeric:!0,dates:!0,resultType:ie,create:Re(1)},stdev:{numeric:!0,resultType:z,create:se(!0,!0)},stdevp:{numeric:!0,resultType:z,create:se(!1,!0)},var:{numeric:!0,resultType:z,create:se(!0,!1)},varp:{numeric:!0,resultType:z,create:se(!1,!1)},first:{numeric:!1,resultType:Pe,create:Ue(!1)},last:{numeric:!1,resultType:Pe,create:Ue(!0)}}),Rt=Object.freeze(Object.keys(he));function E(e){return typeof e=="string"&&Object.hasOwn(he,e)?he[e]:null}function be(e,t){let n=E(e);return n?n.numeric?t==="number"||t==="boolean"||t==="null"||t==="date"&&n.dates===!0:!0:!1}function dr(e){return Rt.filter(t=>be(t,e))}var we=H(128);function L(e,t={}){return we.getOrSet(`n|${e}|${JSON.stringify(t)}`,()=>new Intl.NumberFormat(e,t))}function D(e,t){return we.getOrSet(`d|${e}|${JSON.stringify(t)}`,()=>new Intl.DateTimeFormat(e,t))}function ze(e){return we.getOrSet(`c|${e}`,()=>new Intl.Collator(e,{numeric:!0,sensitivity:"base"}))}var Ut={dateStyle:"medium",timeZone:"UTC"},Pt={dateStyle:"medium",timeStyle:"short",timeZone:"UTC"},v=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 Q(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 ee(e,t,n,o=v){if(t==null)return o.blank??v.blank;if(e.labeler)return e.labeler(t,n);switch(e.type){case"date":return D(n,e.dateOnly?Ut:Pt).format(new Date(Number(t)));case"boolean":return t?o.true??"true":o.false??"false";default:return String(t)}}function zt(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:ze(n).compare(String(e),String(t))}function Oe(e,t,n){return n.getOrSet(`ranks:${e.id}:${t}`,()=>{let o=e.dict.map((s,i)=>i);o.sort((s,i)=>zt(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 ae(e,t){return String(e).replace(/\{(\w+)\}/g,(n,o)=>Object.hasOwn(t,o)?String(t[o]):n)}var Or=Object.freeze(["number","integer","currency","percent","percent100","compact","bytes","duration","date","datetime","time","text"]),Bt=20,Ve={ms:.001,s:1,min:60,h:3600,d:86400},Zt=/^(number|integer|currency|percent|percent100|compact|bytes|duration|date|datetime|time|text)(?::([A-Za-z0-9]{1,10}))?$/,Ne=new Set(["number","percent","percent100"]),Ge={date:{dateStyle:"medium",timeZone:"UTC"},datetime:{dateStyle:"medium",timeStyle:"short",timeZone:"UTC"},time:{timeStyle:"short",timeZone:"UTC"}},Jt={signDisplay:"negative"},le=null;function Vt(e){return le===null&&(le=typeof Intl.supportedValuesOf=="function"?new Set(Intl.supportedValuesOf("currency")):!1),le?le.has(e.toUpperCase()):/^[a-z]{3}$/i.test(e)}function K(e){if(typeof e!="string")return null;let t=Zt.exec(e.trim().toLowerCase());if(!t)return null;let[,n,o]=t;return o!==void 0&&(n==="currency"&&!Vt(o)||n==="duration"&&!Object.hasOwn(Ve,o)||Ne.has(n)&&!(/^\d{1,2}$/.test(o)&&Number(o)<=Bt)||!["currency","duration",...Ne].includes(n))?null:{name:n,arg:o,decimals:Ne.has(n)&&o!==void 0?Number(o):void 0}}function Nr(e,t){let n=K(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 L(t,{style:"currency",currency:(n.arg||"EUR").toUpperCase()}).resolvedOptions().maximumFractionDigits??2;default:return null}}function He(e){return K(e)!==null}function te(e){return e==null||e===""?NaN:typeof e=="number"?e:Number(e)}var Ae=(e,t)=>e===void 0?{maximumFractionDigits:t}:{minimumFractionDigits:e,maximumFractionDigits:e};function Gt(e,t){if(!Number.isFinite(e))return"";let n=e<=-.05?"-":"",o=Math.abs(e);if(o<60)return`${n}${L(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 Ht(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=L(t,{maximumFractionDigits:r===0?0:1}).format(o);return`${e<0&&/[1-9]/.test(s)?"-":""}${s} ${n[r]}`}function Se(e){return e==null?"":String(e)}function ve(e,t){let n=K(e)||{name:"number",arg:void 0,decimals:void 0},o=r=>{let s=L(t,{...Jt,...r});return i=>{let a=te(i);return Number.isNaN(a)?Se(i):s.format(a)}};switch(n.name){case"text":return Se;case"integer":return o({maximumFractionDigits:0});case"currency":return o({style:"currency",currency:(n.arg||"EUR").toUpperCase()});case"percent":return o({style:"percent",...Ae(n.decimals,1)});case"percent100":{let r=o({style:"percent",...Ae(n.decimals,1)});return s=>r(te(s)/100)}case"compact":return o({notation:"compact",maximumFractionDigits:1});case"bytes":return r=>Ht(te(r),t);case"duration":{let r=Ve[n.arg||"s"];return s=>Gt(te(s)*r,t)}case"date":case"datetime":case"time":{let r=D(t,Ge[n.name]);return s=>{let i=te(s);return Number.isFinite(i)?r.format(new Date(i)):Se(s)}}default:return o(Ae(n.decimals,2))}}function Ar(e,t){return t=C(t,"formatter"),ve(e,W(null,t.locale))}var Be=H(64),ue=e=>e.replace(/[^ :/-]+/g,t=>`"${t.replace(/"/g,"")}"`),ce=e=>e>0?"."+"0".repeat(e):"";function Te(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 Ze(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+=ue(r),r="",i.type==="minusSign"?o+="-":i.type==="percentSign"?o+="%":s||(o+=t,s=!0)):r+=i.value;return o+ue(r)}function We(e,t,n,o=!0){let r=Ze(e.formatToParts(t),n,o),s=Ze(e.formatToParts(-t),n,o);return s===`-${r}`?r:`${r};${s}`}function Wt(e,t){let n=L(t,{style:"currency",currency:e});return We(n,1234.5,`#,##0${ce(n.resolvedOptions().maximumFractionDigits)}`)}function Je(e,t,n){return We(L(t,{style:"percent"}),.5,`#,##0${ce(e)}`,n)}function Kt(e,t){if(!Number.isFinite(e)||e===0)return"#,##0";let n=L(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${ce(r.length)}${",".repeat(i/3)}${ue(l)}`}function Yt(e,t){return D(t,Ge[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 ue(o.value)}}).join("")}function Sr(e,t,n){let o=K(e)||{name:"number",arg:void 0,decimals:void 0};switch(o.name){case"integer":return"#,##0";case"number":return`#,##0${ce(o.decimals??Te(t,2))}`;case"percent":return Je(o.decimals??Te(t*100,1),n,!0);case"percent100":return Je(o.decimals??Te(t,1),n,!1);case"currency":return Be.getOrSet(`${e}|${n}`,()=>Wt((o.arg||"EUR").toUpperCase(),n));case"compact":return Kt(t,n);case"date":case"datetime":case"time":return Be.getOrSet(`${o.name}|${n}`,()=>Yt(o.name,n));case"text":return"@";default:return"General"}}function Ke(e){return JSON.stringify(e)}function $e(e,t,n,o,r){let s=new Set(n.map(Ke)),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(Ke(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 Ce=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}),Ye=10;function _(e){let t=e&&e.limits;if(t==null)return Ce;if(typeof t!="object")throw new U("INVALID_OPTION","options.limits must be an object");let n={...Ce};for(let o of Object.keys(t)){let r=t[o];if(!Object.hasOwn(Ce,o))throw new U("INVALID_OPTION",`unknown limit "${o}"`);if(!Number.isInteger(r)||r<1)throw new U("INVALID_OPTION",`limits.${o} must be a whole number of 1 or more`);if(Object.hasOwn(ke,o)&&r>ke[o])throw new U("INVALID_OPTION",`limits.${o} must be at most ${ke[o]}`);n[o]=r}return Object.freeze(n)}var xe=1e-9;function qe(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=1+Math.round((o-i)/(7*$));return{year:r,week:a}}var qt=(e,t)=>D(t,{month:"short",timeZone:"UTC"}).format(new Date(Date.UTC(2e3,e-1,1))),Xt=(e,t)=>D(t,{month:"short",year:"numeric",timeZone:"UTC"}).format(new Date(Date.UTC(Math.floor(e/100),e%100-1,1))),Qt=(e,t)=>D(t,{weekday:"short",timeZone:"UTC"}).format(new Date(Date.UTC(2024,0,e))),Ir=Object.freeze(["year","yearQuarter","yearMonth","yearWeek","day"]),Mr=Object.freeze(["quarter","month","week","weekday","hour"]),B=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:qt},week:{source:"date",type:"number",value:e=>qe(e.getTime()).week,label:e=>`W${re(e)}`},day:{source:"date",type:"date",value:e=>Math.floor(e.getTime()/$)*$},hour:{source:"date",type:"number",value:e=>e.getUTCHours(),label:e=>`${re(e)}:00`},weekday:{source:"date",type:"number",value:e=>(e.getUTCDay()+6)%7+1,label:Qt},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:Xt},yearWeek:{source:"date",type:"number",value:e=>{let t=qe(e.getTime());return t.year*100+t.week},label:e=>`${Math.floor(e/100)}-W${re(e%100)}`},bin:{source:"number",type:"number"}}),Lr=Object.freeze(Object.keys(B)),en=Object.freeze([{unit:"day",maxDays:62},{unit:"yearMonth",maxDays:2*366},{unit:"yearQuarter",maxDays:6*366},{unit:"year",maxDays:1/0}]);function Er(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)/$;return s>=1?en.find(i=>s<=i.maxDays).unit:null}function tn(e,t){let n=Math.min(20,Math.max(X(e),X(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 Qe(e,t){let n=e.column(t.field),o=Object.hasOwn(B,t.by)?B[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,()=>rn(n,t,o,r));return s.name===t.name?s:{...s,name:t.name,key:t.name.toLowerCase()}}var Xe=9999;function nn(e,t){return e.decimals>0?!1:t.every(n=>Math.abs(n)<=Xe&&Math.abs(e.upperOf(n))<=Xe)}function rn(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"?tn(t.size,t.origin??0):null,c=new Date(0);for(let m=0;m<r;m++){let p=e.values[m],g=NaN;if(Number.isNaN(p)||(u?g=u.lowerOf(p):(c.setTime(p),g=n.value(c))),Number.isNaN(g)){s[m]=-1,i[m]=NaN;continue}let d=l.get(g);d===void 0&&(d=a.length,a.push(g),l.set(g,d)),s[m]=d,i[m]=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 m=!nn(u,a);f.labeler=(p,g)=>{let d=L(g,{maximumFractionDigits:u.decimals,signDisplay:"negative",useGrouping:m});return`${d.format(p)} \u2013 ${d.format(u.upperOf(p))}`}}else f.labeler=n.label;return f}var et="UTC",on=/^(\d{4})-(\d{2})-(\d{2})(?:[T ](\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{1,9}))?)?(Z|[+-]\d{2}(?::?\d{2})?)?)?$/;function tt(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 nt(e){let t=on.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=tt(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 m=n.slice(1).replace(":",""),p=Number(m.slice(0,2)),g=Number(m.slice(2)||0);if(p>23||g>59)return null;f=(n[0]==="-"?-1:1)*(p*60+g)}return{ms:c,offsetMinutes:f}}function rt(e){return nt(e)!==null}function ot(e){if(e==null)return et;if(e==="local")return new Intl.DateTimeFormat().resolvedOptions().timeZone??et;let t=Ie(e);if(!t)throw new U("INVALID_OPTION",`time zone ${JSON.stringify(e)} is not "UTC", "local" or an IANA name`);return t}function Ie(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 st(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 tt(s.year,s.month,s.day,s.hour,s.minute,s.second)-i},o=new Map;return r=>{let s=Math.floor(r/$),i=o.get(s);if(i===void 0){let a=n(s*$),l=n((s+1)*$-1);i=a===l?a:NaN,o.set(s,i)}return r+(Number.isNaN(i)?n(r):i)}}function fe(e,t){if(e instanceof Date){let n=e.getTime();return Number.isNaN(n)?NaN:t(n)}if(typeof e=="string"){let n=nt(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 sn=Object.freeze(["string","number","boolean","date"]),an=/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,ln=100;function at(e){let t=e.trim();return t.length<=ln&&an.test(t)}var un=100,lt=e=>e==null||e===""||typeof e=="function"||typeof e=="symbol";function cn(e,t){if(lt(e))return null;switch(typeof e){case"number":return Number.isFinite(e)?"number":null;case"boolean":return"boolean";case"string":return rt(e)?"date":t&&at(e)?"number":"string";case"bigint":return"number";default:return e instanceof Date?Number.isNaN(e.getTime())?null:"date":"string"}}function it(e,t){let n=null;for(let o=0;o<e.length;o++){let r=cn(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 fn(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 dn(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"&&at(e)){let t=Number(e.trim());return Number.isFinite(t)?t:NaN}return NaN}function mn(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 pn={number:e=>{let t=dn(e);return Number.isNaN(t)?null:t},boolean:mn,date:(e,t)=>{let n=fe(e,t);return Number.isNaN(n)?null:n},string:e=>{let t=fn(e);return t===""?null:t},null:()=>null};function gn(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=pn[n],c=!0;for(let p=0;p<r;p++){let g=t[p],d=lt(g)?null:u(g,o);if(d===null){s[p]=-1,l&&(l[p]=NaN);continue}n==="date"&&d%$!==0&&(c=!1);let h=a.get(d);h===void 0&&(h=i.length,i.push(d),a.set(d,h)),s[p]=h,l&&(l[p]=typeof d=="boolean"?d?1:0:d)}let f=e.toLowerCase(),m={name:e,key:f,id:`column:${f}`,type:n,codes:s,dict:i,values:l};return n==="date"&&(m.dateOnly=c),m}function Br(e,t){t=C(t,"encode"),G(Array.isArray(e),"encode(rows): rows must be an array of objects");let n=_(t);x("rows",e.length,n.rows,"rows");let o=e.length,r=ot(t.timeZone),s=st(r),i=t.inferNumbers===!0,a=Array.isArray(t.columns)?new Set(t.columns.filter(d=>typeof d=="string").map(d=>d.toLowerCase())):null,l=[],u=(d,h)=>{l.length<un&&l.push({path:d,message:h})},c=new Map;for(let d=0;d<o;d++){let h=e[d];if(h===null||typeof h!="object")continue;let A=new Set;for(let O of Object.keys(h)){let b=O.toLowerCase(),N=c.get(b);if(N===void 0){if(a&&!a.has(b))continue;N={name:O,raw:new Array(o).fill(null),spellings:new Set([O])},c.set(b,N)}else N.spellings.has(O)||(N.spellings.add(O),u(N.name,`"${O}" and "${N.name}" are one column: names match case-insensitively`));A.has(b)&&u(N.name,`row ${d} has "${O}" next to another spelling of it; the later value is used`),A.add(b),N.raw[d]=h[O]}}let f=new Map;if(t.types&&typeof t.types=="object")for(let d of Object.keys(t.types)){let h=t.types[d];sn.includes(h)&&f.set(d.toLowerCase(),h)}let m=a?[...a].filter(d=>c.has(d)):[...c.keys()],p=new Map,g=m.map(d=>{let{name:h,raw:A}=c.get(d),O=it(A,i),b=O==="string"&&!i?it(A,!0):O;return p.set(d,b),gn(h,A,f.get(d)??O,s)});return yn(o,g,{timeZone:r,issues:l,detected:p,cacheEntries:n.cacheEntries})}function yn(e,t,n){let o=new Map(t.map(s=>[s.key,s])),r={length:e,columns:t,schema:{fields:t.map(s=>({name:s.name,type:s.type,detected:n.detected.get(s.key)??s.type}))},column:s=>typeof s=="string"?o.get(s.toLowerCase()):void 0,timeZone:n.timeZone,issues:n.issues};return Object.defineProperty(r,"cache",{value:H(n.cacheEntries),enumerable:!1}),r}function ut(e){let t=e;return t!==null&&typeof t=="object"&&Array.isArray(t.columns)&&typeof t.column=="function"&&"cache"in t}var hn=Object.freeze(["equals","notEquals","contains","notContains","beginsWith","endsWith"]),bn=Object.freeze(["=","!=",">",">=","<","<=","between","notBetween"]),mt=(e,t)=>typeof e=="string"&&t.includes(e)?e:null;function wn(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 On(e,t){if(typeof t!="number"||Number.isNaN(t))return!1;let n=e.value,o=Math.min(n,e.value2??n),r=Math.max(n,e.value2??n);switch(e.op){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>=o&&t<=r;case"notBetween":return t<o||t>r;default:return!0}}function de(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"?fe(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 ct(e,t,n,o,r){let s=y(e,"items");if(!Array.isArray(s))return r.issue(o,"needs a list of items");s.length>r.limits.items&&r.issue(`${o}.items`,`more than ${r.limits.items} items`),t.items=[];for(let i of s.slice(0,r.limits.items)){let a=de(n.type,i);a===void 0?r.issue(`${o}.items`,`item ${JSON.stringify(i)} does not fit the ${n.type} field`):t.items.push(a)}return t}function Nn(e,t,n,o,r){let s=mt(y(e,"op"),hn),i=y(e,"value");return s?typeof i!="string"||i.length>1e3?r.issue(o,"needs a text value"):Object.assign(t,{op:s,value:i}):r.issue(o,`unknown label operator ${JSON.stringify(y(e,"op"))}`)}function pt(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`),null):s}function An(e,t,n,o,r,s){let i=pt(e,o,r,s);if(!i)return;let a=P(y(e,"count"));if(a===null||a<1||a>r.limits.topCount||!Number.isInteger(a))return r.issue(o,"needs a whole count of 1 or more");let l=y(e,"bottom");return Object.assign(t,{by:i,count:a,bottom:typeof l=="boolean"?l:!1})}function Sn(e,t,n,o,r,s){let i=pt(e,o,r,s);if(!i)return;let a=mt(y(e,"op"),bn),l=P(y(e,"value"));if(!a||l===null)return r.issue(o,"needs an operator and a number");if(Object.assign(t,{by:i,op:a,value:l}),a==="between"||a==="notBetween"){let u=P(y(e,"value2"));if(u===null)return r.issue(o,`${a} needs value2`);t.value2=u}return t}function ft(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 Tn(e,t,n){let o=new Uint8Array(e.dict.length+1);for(let r=-1;r<e.dict.length;r++){let s=ee(e,r===-1?null:e.dict[r],n);o[r+1]=wn(t.op,s,t.value)?1:0}return o}function vn(e,t){return Uint8Array.from(t,n=>On(e,n)?1:0)}function $n(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 Z=Object.freeze({include:{stage:"items",normalize:ct,allowed:ft(!0)},exclude:{stage:"items",normalize:ct,allowed:ft(!1)},label:{stage:"items",normalize:Nn,allowed:Tn},top:{stage:"values",normalize:An,keep:$n},value:{stage:"values",normalize:Sn,keep:vn}}),Hr=Object.freeze(Object.keys(Z));function dt(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 gt(e,t){let{view:n,columnOf:o,locale:r}=e;for(let a of n.filters){let l=Z[a.type],u=o(a.field);if(l.stage!=="items"||!u)continue;let c=l.allowed(u,a,r),f=u.codes;t=dt(t,m=>c[f[m]+1]===1)}let s=a=>{let l=n.rows.indexOf(a);if(l!==-1)return{fields:n.rows.slice(0,l+1),order:l};let u=n.cols.indexOf(a);return u!==-1?{fields:n.cols.slice(0,u+1),order:100+u}:{fields:[a],order:200}},i=n.filters.filter(a=>Z[a.type].stage==="values").map((a,l)=>({f:a,i:l,...s(a.field)})).sort((a,l)=>a.order-l.order||a.i-l.i);for(let{f:a,fields:l}of i){let u=l.map(o);if(u.includes(null))continue;let{groupOf:c,paths:f}=e.groupBy(u,t),m=e.aggregateGroups(a.by,t,c,f.length),p=Z[a.type].keep(a,m,f);t=dt(t,(g,d)=>p[c[d]]===1)}return t}var J=(e,t)=>e===null||t===null||t===0?null:e/t;function Me(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 yt(e){return(t,n)=>{let{node:o,at:r,siblings:s}=Me(n);if(!o.parent||o.index===0||t===null)return null;let i=r(s[o.index-1])??0;return e?J(t-i,i):t-i}}function ht(e){return(t,n)=>{let{node:o,at:r,siblings:s}=Me(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?J(i,r(o.parent)):i}}function bt(e){return(t,n)=>{let{node:o,at:r,siblings:s}=Me(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 j=Object.freeze({percentOfGrandTotal:{format:"percent",compute:(e,t)=>J(e,t.raw(t.rowRoot,t.colRoot))},percentOfRowTotal:{format:"percent",compute:(e,t)=>J(e,t.raw(t.rowNode,t.colRoot))},percentOfColumnTotal:{format:"percent",compute:(e,t)=>J(e,t.raw(t.rowRoot,t.colNode))},percentOfParentRow:{format:"percent",compute:(e,t)=>J(e,t.raw(t.rowNode.parent??t.rowNode,t.colNode))},percentOfParentColumn:{format:"percent",compute:(e,t)=>J(e,t.raw(t.rowNode,t.colNode.parent??t.colNode))},differenceFromPrevious:{format:"number",alongAxis:!0,compute:yt(!1)},percentDifferenceFromPrevious:{format:"percent",alongAxis:!0,compute:yt(!0)},runningTotal:{format:"number",alongAxis:!0,additive:!0,compute:ht(!1)},percentRunningTotal:{format:"percent",alongAxis:!0,additive:!0,compute:ht(!0)},rankAscending:{format:"integer",alongAxis:!0,compute:bt(!1)},rankDescending:{format:"integer",alongAxis:!0,compute:bt(!0)}}),Kr=Object.freeze(Object.keys(j));function Le(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],m;if(s){m=0;for(let g=0;g<a;g++)m=m*u[g]+l[g][f]+1}else{m="";for(let g=0;g<a;g++)m+=l[g][f]+","}let p=i.get(m);if(p===void 0){p=o.length;let g=new Array(a);for(let d=0;d<a;d++)g[d]=l[d][f];o.push(g),i.set(m,p)}n[c]=p}return{groupOf:n,paths:o}}function wt(e,t,n,o,r){return{id:e,depth:t,code:n,key:o,path:r?[...r.path,o]:[],parent:r,children:[],index:0}}function Ee(e,t,n={max:1/0,used:0}){let{groupOf:o,paths:r}=Le(e,t);x("groups",n.used+r.length+(e.length>0?1:0),n.max,"groups");let s=wt(0,0,-2,null,null),i=[s],a=Math.max(1,...e.map(m=>m.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((m,p)=>{let g=s;for(let d=0;d<m.length;d++){let h=m[d],A=l?g.id*a+h+1:`${g.id},${h}`,O=u.get(A);if(O===void 0){n.used+i.length>=n.max&&x("groups",n.used+i.length+1,n.max,"groups");let b=h===-1?null:e[d].dict[h];O=wt(i.length,d+1,h,b,g),i.push(O),u.set(A,O),g.children.push(O)}g=O}c[p]=g});let f=new Int32Array(t.length);for(let m=0;m<t.length;m++)f[m]=c[o[m]].id;return{root:s,nodes:i,leafOf:f,leafCount:r.length}}var Cn=(e,t)=>e===t||e===null&&t===null||typeof e=="number"&&typeof t=="number"&&Number.isNaN(e)&&Number.isNaN(t);function Ot(e,t,n){let o=t==="cols"?e.colRoot:e.rowRoot;for(let r of n||[])if(o=o.children.find(s=>Cn(s.key,r)),!o)return null;return o}function Qr(e,t){t=C(t,"cellRows");let{row:n=[],col:o=[]}=t,r=Array.isArray(n)?Ot(e,"rows",n):n,s=Array.isArray(o)?Ot(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 At=1,kn=Object.freeze(["auto","bar","line","area","pie","donut","heatmap"]),uo=Object.freeze(["pie","donut"]),xn=Object.freeze(["table","chart"]),co=Object.freeze(["colorScale","dataBar"]),In=Object.freeze(["auto","off","value","percent","both"]),Mn=Object.freeze(["outside","inside"]),Ln=Object.freeze(["auto","bottom","right","off"]),En=Object.freeze(["auto","all","nth"]),Dn=Object.freeze(["auto","on","off"]),Nt=/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/;function Fn(){return{version:At,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 _n=Object.freeze({});function jn(e){return Rn(e,_n,At)}function Rn(e,t,n){let o=[];if(!oe(e))return{view:null,issues:[{path:"",message:"not a view object"}]};let r=y(e,"version")??n;if(!Number.isInteger(r)||r<1)return{view:null,issues:[{path:"version",message:`unknown version ${JSON.stringify(r)}`}]};if(r>n)return{view:null,issues:[{path:"version",message:`version ${r} is newer than this pivotkit-core reads (${n}); update pivotkit-core`}]};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}`}]};s=a(s)}return{view:{...s,version:n},issues:o}}function ne(e,t,n){return typeof e=="string"&&t.includes(e)?e:n}function me(e,t){return typeof e=="boolean"?e:t}function St(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 Y(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");return}s.slice(0,n).forEach((i,a)=>r(i,`${t}[${a}]`,a)),s.length>n&&o.issue(t,`more than ${n} entries`)}}function Un(e,t,n){Y(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(B,a)?B[a]:null;if(!s)return n.issue(r,"needs a name");if(n.fields.has(s.toLowerCase()))return n.issue(r,`name "${s}" is already a field`);if(!i||i.derived)return n.issue(r,"unknown source field");if(!l)return n.issue(r,"unknown grouping");if(i.type!==l.source)return n.issue(r,l.source==="number"?"bins need a number field":"date grouping needs a date field");let u={name:s,field:i.name,by:a};if(a==="bin"){let c=P(y(o,"size"));if(c===null||c<xe)return n.issue(r,`bins need a size of at least ${xe}`);u.size=c,u.origin=P(y(o,"origin"))??0}t.derived.push(u),n.fields.set(s.toLowerCase(),{name:s,type:l.type,derived:!0})})}function Pn(e,t,n){let o=new Set;for(let r of["rows","cols"])Y(e,r,n.limits.axisFields,n,(s,i)=>{let a=n.resolve(s);if(!a)return n.issue(i,`unknown field ${JSON.stringify(s)}`);if(o.has(a.name))return n.issue(i,`"${a.name}" is already placed`);o.add(a.name),t[r].push(a.name)})}function zn(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"&&Nt.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"),{type:o,colors:s.length>=2?s:[]}}if(o==="dataBar"){let r=y(e,"color"),s=typeof r=="string"&&Nt.test(r);return r!=null&&!s&&n.issue(`${t}.color`,"a colour as #rgb or #rrggbb"),{type:o,color:s?r:null}}return n.issue(t,`unknown conditional format ${JSON.stringify(o)}`),null}function Bn(e,t,n,o){let r=typeof e=="string"?{type:e}:e,s=y(r,"type"),i=typeof s=="string"&&Object.hasOwn(j,s)?j[s]:null;return i?i.additive&&!E(t.agg).additive?(o.issue(n,`${s} needs an aggregator that adds up (sum or count), not ${t.agg}`),null):{type:s,axis:ne(y(r,"axis"),["rows","cols"],"rows")}:(o.issue(n,`unknown show-as ${JSON.stringify(s)}`),null)}function Zn(e,t,n){Y(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&&(He(l)?a.format=l.trim().toLowerCase():n.issue(`${r}.format`,`unknown format ${JSON.stringify(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`));let c=y(o,"showAs");c!=null&&(i?a.showAs=Bn(c,s,`${r}.showAs`,n):n.issue(`${r}.showAs`,`${s.agg} has no number to show as ${JSON.stringify(y(c,"type")??c)}`));let f=y(o,"conditional");f!=null&&(i?a.conditional=zn(f,`${r}.conditional`,n):n.issue(`${r}.conditional`,"conditional formatting needs a number value")),t.values.push(a)})}function Jn(e,t,n){Y(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(Z,i)?Z[i]:null;if(!s)return n.issue(r,`unknown field ${JSON.stringify(y(o,"field"))}`);if(!a)return n.issue(r,`unknown filter type ${JSON.stringify(i)}`);let l=a.normalize(o,{field:s.name,type:i},s,r,n,t);l&&t.filters.push(l)})}var Vn=Object.freeze(["label","value","custom"]);function Gn(e,t,n,o){if(!Array.isArray(e))return o.issue(n,"a custom order needs a list of items"),null;e.length>o.limits.items&&o.issue(n,`more than ${o.limits.items} items`);let r=new Set,s=[];for(let i of e.slice(0,o.limits.items)){let a=de(t.type,i);a===void 0?o.issue(n,`item ${JSON.stringify(i)} does not fit the ${t.type} field`):r.has(a)||(r.add(a),s.push(a))}return s}function Hn(e,t,n){let o=new Set;Y(e,"sort",n.limits.sort,n,(r,s)=>{let i=n.resolve(y(r,"field"));if(!i||o.has(i.name))return n.issue(s,i?`"${i.name}" is sorted twice`:`unknown field ${JSON.stringify(y(r,"field"))}`);let a=ne(y(r,"by"),Vn,"label"),l={field:i.name,by:a,order:ne(y(r,"order"),["asc","desc"],"asc")};if(a==="custom"){let u=Gn(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 Wn(e,t,n){let o=y(e,"totals");if(o!==void 0){if(!oe(o))return n.issue("totals","not an object");for(let r of Object.keys(t.totals))t.totals[r]=me(y(o,r),t.totals[r])}}function Kn(e,t,n){for(let o of["rows","cols"]){let r=t[o].map(i=>n.fields.get(i.toLowerCase()).type),s=new Set;Y(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}`);let a=i.map((u,c)=>de(r[c],u));if(a.includes(void 0))return n.issue(`collapsed.${o}`,`path ${JSON.stringify(i)} does not fit the field types`);let l=JSON.stringify(a);s.has(l)||(s.add(l),t.collapsed[o].push(a))})}}function Yn(e,t,n){let o=y(e,"display");t.display=ne(o,xn,t.display),o!==void 0&&t.display!==o&&n.issue("display",`unknown display ${JSON.stringify(o)}`);let r=y(e,"chart");if(r!==void 0){let s=(a,l,u)=>{let c=y(r,a),f=ne(c,l,u);return c!==void 0&&f!==c&&n.issue(`chart.${a}`,`unknown ${a} ${JSON.stringify(c)}`),f},i=y(r,"title");t.chart={type:s("type",kn,t.chart.type),stacked:me(y(r,"stacked"),!1),horizontal:me(y(r,"horizontal"),!1),valueLabels:s("valueLabels",In,"auto"),legend:s("legend",Ln,"auto"),title:i==null?null:n.text(i),smooth:me(y(r,"smooth"),!1),axisLabels:s("axisLabels",En,"auto"),groupLabels:s("groupLabels",Dn,"auto"),labelPosition:s("labelPosition",Mn,"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`)}}function qn(e,t,n){let o=y(e,"formatting"),r=y(o,"locale");r!=null&&(t.formatting.locale=_e(r),t.formatting.locale===null&&n.issue("formatting.locale",`unknown locale ${JSON.stringify(r)}`));let s=y(o,"timeZone");s!=null&&(t.formatting.timeZone=Ie(s),t.formatting.timeZone===null&&n.issue("formatting.timeZone",`unknown time zone ${JSON.stringify(s)}`))}var Xn=[Un,Pn,Zn,Jn,Hn,Wn,Kn,Yn,qn];function Qn(e,t,n){let o=new Map(St(e).map(s=>[s.name.toLowerCase(),s])),r={limits:t,fields:o,issue:(s,i)=>{n.push({path:s,message:i})},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=>E(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(!oe(s))return r.issue(i,"not a value reference"),null;let a=y(s,"agg"),l=y(s,"field"),u=l==null?null:r.resolve(l);return E(a)?u===void 0?(r.issue(i,`unknown field ${JSON.stringify(l)}`),null):u===null&&a!=="count"?(r.issue(i,`${a} needs a field`),null):u&&!be(a,u.type)?(r.issue(i,`${a} does not work on the ${u.type} field "${u.name}"`),null):{field:u?u.name:null,agg:a}:(r.issue(i,`unknown aggregator ${JSON.stringify(a)}`),null)}};return r}function Tt(e,t,n){n=C(n,"normalize");let o=_(n),r=[],s=Fn(),i=(f,m)=>({view:s,issues:[...r,{path:f,message:m}]}),a;try{let f=typeof e=="string"?e:JSON.stringify(e);if(typeof f!="string")return i("","not a view object");if(f.length>o.json)return i("",`larger than ${o.json} characters`);a=JSON.parse(f)}catch{return i("","not valid JSON")}let l=jn(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"});let c=Qn(t,o,r);for(let f of Xn)f(u,s,c);return{view:s,issues:r}}function fo(e,t){return St(t).concat((e.derived||[]).map(n=>({name:n.name,type:B[n.by].type,derived:!0})))}var De=e=>`${e.agg}\0${e.field??""}`;function er(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?Qe(e,i):e.column(r)??null)}return o.get(s)}}function $t(e,t,n,o,r){let s=n?Oe(n,r,e.cache):null;return E(t.agg).create(n,o,s,i=>ee(n,n.dict[i],r))}function tr(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 d=p;d;d=d.parent)g.push(d.id);return g},a=new Map,l=new Map,u=new Int32Array(e.length),c=new Map,f=[],m=new Map;for(let p=0;p<e.length;p++){let g=t.leafOf[p],d=n.leafOf[p],h=g*r+d,A=c.get(h);if(A===void 0){A=c.size,c.set(h,A),x("pivotCells",f.length+s,o,"pivot cells"),a.has(g)||a.set(g,i(t.nodes[g])),l.has(d)||l.set(d,i(n.nodes[d]));for(let O of a.get(g))for(let b of l.get(d)){let N=O*r+b,T=m.get(N);T===void 0&&(T=m.size,m.set(N,T)),f.push(T)}}u[p]=A}return e.length===0&&m.set(0,0),{cellIndex:m,pairOf:u,cells:f,perPair:s}}function nr(e,t,n,o,r,s,i,a){let l=i.nodes.length,{cellIndex:u,pairOf:c,cells:f,perPair:m}=tr(r,s,i,a),p=u.size,g=t.map(b=>$t(e,b,b.field?n(b.field):null,p,o));for(let b of g)for(let N=0;N<r.length;N++){let T=c[N]*m,k=r[N];for(let I=T;I<T+m;I++)b.add(f[I],k)}let d=Symbol("unset"),h=t.map(()=>new Array(p).fill(d));return{value:(b,N,T)=>{let k=u.get(b.id*l+N.id);if(k===void 0)return null;let I=h[T][k];return I===d&&(I=h[T][k]=g[T].get(k)),I},has:(b,N)=>r.length>0&&u.has(b.id*l+N.id)}}function vt(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],m=(p,g)=>{let d=f(p),h=f(g);return d===h?0:d===1/0||h===1/0?d===1/0?1:-1:(d-h)*u};if(l.by==="custom"){let p=new Map(l.items.map((d,h)=>[d,h])),g=d=>p.has(d.key)?p.get(d.key):1/0;a.children.sort((d,h)=>{let A=g(d),O=g(h);return A===1/0&&O===1/0?m(d,h):A===O?0:A===1/0?1:O===1/0?-1:(A-O)*u})}else if(l.by==="value"){let p=new Map(a.children.map(g=>[g,r(g,l.value)]));a.children.sort((g,d)=>{let h=p.get(g),A=p.get(d);return h===null||A===null?h===A?m(g,d):h===null?1:-1:(h-A)*u||m(g,d)})}else a.children.sort(m);a.children.forEach((p,g)=>{p.index=g,i(p)})};i(e.root)}function vo(e,t,n){n=C(n,"computePivot"),G(ut(e),"computePivot(data, view): data must come from encode()");let o=_(n),{view:r,issues:s}=Tt(t,e,n),i=W(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()`});let a=er(e,r),l=w=>Oe(w,i,e.cache),u={view:r,locale:i,columnOf:a,groupBy:Le,aggregateGroups:(w,S,M,F)=>{let q=$t(e,w,w.field?a(w.field):null,F,i);for(let R=0;R<S.length;R++)q.add(M[R],S[R]);return Array.from({length:F},(R,ye)=>q.get(ye))}},c=new Int32Array(e.length);for(let w=0;w<c.length;w++)c[w]=w;c=gt(u,c);let f=new Map,m=[],p=w=>{let S=De(w);return f.has(S)||(f.set(S,m.length),m.push({field:w.field,agg:w.agg})),f.get(S)},g=r.values.map(p);for(let w of r.sort)w.by==="value"&&p(w.value);let d=m.reduce((w,S)=>w+(E(S.agg).keepsValues?Ye:1),0);x("work",c.length*(r.rows.length+1)*(r.cols.length+1)*d,o.work,"cell updates");let h=r.rows.map(a),A=r.cols.map(a),O={...Ee(h,c,{max:o.groups,used:0}),depth:h.length},b={...Ee(A,c,{max:o.groups,used:O.nodes.length}),depth:A.length},{value:N,has:T}=nr(e,m,a,i,c,O,b,o.pivotCells),k=w=>typeof w=="number"?w:null,I=new Map(r.sort.map(w=>[w.field,w]));vt(O,r.rows,h,I,(w,S)=>k(N(w,b.root,f.get(De(S)))),l),vt(b,r.cols,A,I,(w,S)=>k(N(O.root,w,f.get(De(S)))),l);let Mt=r.values.map(w=>{if(w.showAs)return"number";let S=w.field?a(w.field):null;return E(w.agg).resultType(S?S.type:"number")}),ge=(w,S,M)=>N(w,S,g[M]),Lt=(w,S,M)=>{let F=r.values[M],q=ge(w,S,M);return F.showAs?j[F.showAs.type].compute(k(q),{rowNode:w,colNode:S,rowRoot:O.root,colRoot:b.root,raw:(R,ye)=>k(ge(R,ye,M)),axis:F.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:A,values:r.values,valueTypes:Mt,rowRoot:O.root,colRoot:b.root,rowNodes:O.nodes,colNodes:b.nodes,rowLeafOf:O.leafOf,colLeafOf:b.leafOf,value:ge,display:Lt,hasRows:T,label:(w,S,M=v)=>{if(!S.parent)return M.grandTotal??v.grandTotal;let F=(w==="cols"?A:h)[S.depth-1];return ee(F,S.key,i,M)}}}function Ct(e){let t=e;return t!==null&&typeof t=="object"&&typeof t.display=="function"&&t.rowRoot!==void 0}var rr=new Set(["average","median","stdev","stdevp","var","varp"]),pe=2;function or(e,t){let n=t?e.column(t):void 0;return!n||n.type!=="number"?pe:e.cache.getOrSet(`decimals:${n.id}`,()=>{let o=0;for(let r of n.dict)if(typeof r=="number"&&(o=Math.max(o,X(r)),o>=pe))return pe;return o})}function sr(e,t){let n=e.values[t],o=n.showAs?j[n.showAs.type].format:null;if(o==="percent")return n.format&&K(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:${rr.has(n.agg)?pe:or(e.encoded,n.field)}`}function ir(e,t=v){if(e.label)return e.label;let n;if(!e.field)n=t.countRows??v.countRows;else{let a={...v.aggregators,...t.aggregators||{}},l=Object.hasOwn(a,e.agg)?a[e.agg]:e.agg;n=ae(t.valueName??v.valueName,{agg:l,field:Q(e.field,t)})}if(!e.showAs)return n;let o={...v.showAs,...t.showAs||{}},r=e.showAs.type,s=Object.hasOwn(o,r)?o[r]:r,i=e.field&&e.agg==="sum"?Q(e.field,t):n;return ae(t.showAsName??v.showAsName,{showAs:s,value:i})}var V=e=>e==="grand"?2:e==="subtotal"?1:0;function ar(e,t){let n=e;for(;n&&n.depth>t;)n=n.parent;return n}function kt(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 m=!0;for(let p=a;p<c;p++)if(!e[f][p]||e[f][p].mergeKey!==u){m=!1;break}if(!m)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 m=i;m<f;m++)for(let p=a;p<c;p++)(m!==i||p!==a)&&(e[m][p]=null)}}}function lr(e,t){let n=e.map(Fe),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 Fo(e){let t=e;return t!==null&&typeof t=="object"&&Array.isArray(t.rows)&&Array.isArray(t.merges)&&Number.isInteger(t.columnCount)}var xt=(e,t,n)=>({axis:e,path:t.path,collapsed:n});function It(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 m={text:o==="collapsed"?a(n):n.parent?ae(e.labels.total,{label:a(n)}):e.labels.grandTotal,value:o==="collapsed"?n.key:null,kind:s,total:V(o),...i(n),mergeKey:`s${n.id}:${o}`};return o==="collapsed"&&(m.toggle=xt(t,n,!0)),m}if(o!=="leaf"&&r>l)return{text:"",value:null,kind:s,total:V(o),mergeKey:`s${n.id}:${o}`};let u=ar(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=xt(t,u,!1)),c}function ur(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?Q(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:Q(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 m=0;m<t.cols.length;m++)s[m][c]=It(e,"cols",a,m);let f={text:l>=0?e.names[l]:"",value:null,kind:"colHeader",total:i?0:V(a.kind),valueIndex:l>=0?l:void 0,colPath:i?[]:a.node.path};i&&(f.mergeKey="value"),s[o-1][c]=f}),s}function cr(e,t){let{result:n,view:o,k:r,width:s}=e;return t.map(i=>{let{node:a,kind: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:[]}:It(e,"rows",i,c);return e.dataColumns.forEach(({line:c,vi:f},m)=>{let p=Math.max(V(l),V(c.kind)),g=n.hasRows(a,c.node);if(f<0){u[r+m]={text:"",value:null,kind:"value",total:p,rowPath:a.path,colPath:c.node.path,hasRows:g};return}let d=n.display(a,c.node,f);u[r+m]={text:d===null?"":e.formatters[f](d),value:d,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 fr(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?lr(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 _o(e,t){t=C(t,"toGrid"),G(Ct(e),"toGrid(result): result must come from computePivot()");let n=_(t),o=e.view,r=W(o.formatting.locale,t.locale??e.locale),s={...v,...t.labels||{}},i=$e(e.rowRoot,o.rows.length,o.collapsed.rows,o.totals.rowSubtotals,o.totals.grandTotalRow),l=$e(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((N,T)=>({line:b,vi:T}))),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 m=o.values.map((b,N)=>sr(e,N)),p={result:e,view:o,labels:s,dataColumns:l,k:u,h:c,width:f,formats:m,formatters:m.map(b=>ve(b,r)),names:o.values.map(b=>ir(b,s))},g=ur(p),d=cr(p,i),h=[];kt(g,0,0,c,f,h);let A=[];kt(d,0,0,d.length,u,A),h.push(...A.map(b=>({...b,row:b.row+c}))),fr(p,d);let O=g.concat(d);for(let b of O)for(let N of b)N&&delete N.mergeKey;return{rows:O,headerRows:c,rowHeaderColumns:u,columnCount:f,merges:h,dataColumns:l.map(({line:b,vi:N})=>({colPath:b.node.path,valueIndex:N,total:V(b.kind)})),bodyRows:i.map(({node:b,kind:N})=>({rowPath:b.path,total:V(N),collapsed:N==="collapsed"})),formats:m,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 Ro=Object.freeze({colorScale:Object.freeze(["#f8696b","#ffeb84","#63be7b"]),dataBar:"#638ec6",pieRadius:Object.freeze(["0%","70%"]),donutRadius:Object.freeze(["42%","70%"])});export{Ce as a,_ as b,sn as c,Br as d,ut as e,Rt as f,dr as g,L as h,Ir as i,Mr as j,Lr as k,Er as l,Qe as m,v as n,Q as o,ee as p,Oe as q,hn as r,bn as s,Hr as t,Or as u,K as v,Nr as w,He as x,ve as y,Ar as z,Te as A,Sr as B,j as C,Kr as D,At as E,kn as F,uo as G,xn as H,co as I,In as J,Mn as K,Ln as L,En as M,Dn as N,Fn as O,Tt as P,fo as Q,Ot as R,Qr as S,vo as T,Ct as U,$e as V,sr as W,ir as X,Fo as Y,_o as Z,Ro as _};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{C as we,D as re,E as Y,F as ve,G as ne,H as Se,I as Oe,J as _e,K as Ie,L as Te,M as Ce,N as Me,P as se,U as ae,V as Fe,W as Ne,X as $e,_ as ie,b as H,c as ue,e as pe,f as de,i as W,j as he,k as ge,m as ye,n as j,p as oe,q as be,r as Le,s as xe,t as Ae,u as Ee,y as G}from"./chunk-KQ7VYRM6.js";import{e as _,f as me,j as P,k as C,s as B}from"./chunk-7HSMEVX7.js";function Xe(e,o,t){t=P(t,"fieldItems"),_(pe(e),"fieldItems(data, field): data must come from encode()");let r=H(t),{view:n}=se(t.view??{},e,{limits:t.limits}),i=B(n.formatting.locale,t.locale),l={...j,...t.labels||{}};if(typeof o!="string")return null;let s=n.derived.find(c=>c.name.toLowerCase()===o.trim().toLowerCase()),a=s?ye(e,s):e.column(o.trim());if(!a)return null;let m=new Float64Array(a.dict.length+1);for(let c=0;c<a.codes.length;c++)m[a.codes[c]+1]++;let f=be(a,i,e.cache),u=[];for(let c=0;c<a.dict.length;c++)m[c+1]>0&&u.push(c);u.sort((c,x)=>f[c]-f[x]);let d=u.map(c=>({value:a.dict[c],label:oe(a,a.dict[c],i,l),count:m[c+1]}));return m[0]>0&&d.push({value:null,label:oe(a,null,i,l),count:m[0]}),{field:a.name,type:a.type,items:d.slice(0,r.items),truncated:d.length>r.items}}var Ke=Object.freeze({aggregators:de,commonAggregators:Object.freeze(["sum","count","average","min","max"]),columnTypes:ue,deriveUnits:ge,timelineUnits:W,cyclicUnits:he,filterTypes:Ae,labelOps:Le,valueOps:xe,formats:Ee,showAs:re,showAsAlongAxis:Object.freeze(re.filter(e=>we[e].alongAxis)),chartTypes:ve,chartValueLabels:_e,chartLegends:Te,chartAxisLabels:Ce,chartGroupLabels:Me,chartLabelPositions:Ie,displayModes:Se,conditionalTypes:Oe});var J="pivotkit-view",M=1,ke="https://pivotkit.eize.dev/schema/view-file-1.json",b=Object.freeze({text:1e6,name:256,description:2e3,fields:1e3}),qe=Object.freeze(["string","number","date","boolean","null"]);function S(e,o){return typeof e!="string"?"":e.replace(/[\u0000-\u001F\u007F]+/g," ").trim().slice(0,o)}var g=(e,o)=>C(e)&&Object.hasOwn(e,o)?e[o]:void 0;function le(e){let o=new Map,t=s=>{let a=g(e,s);return Array.isArray(a)?a:[]};for(let s of t("derived")){let a=g(s,"name"),m=g(s,"field");typeof a=="string"&&typeof m=="string"&&o.set(a.toLowerCase(),m)}let r=[],n=new Set,i=s=>{if(typeof s!="string"||s==="")return;let a=o.get(s.toLowerCase())??s;n.has(a.toLowerCase())||(n.add(a.toLowerCase()),r.push(a))},l=s=>i(g(s,"field"));t("rows").forEach(i),t("cols").forEach(i),t("values").forEach(l);for(let s of t("filters"))i(g(s,"field")),l(g(s,"by"));for(let s of t("sort"))i(g(s,"field")),l(g(s,"value"));return r}function Re(e){let o=e&&e.schema&&Array.isArray(e.schema.fields)?e.schema.fields:[];return new Map(o.filter(t=>t&&typeof t.name=="string").map(t=>[t.name.toLowerCase(),t]))}function Qe(e,o={},t={}){if(!C(e))throw new TypeError("toViewFile(view): view must be an object");let r=S(o.name,b.name),n=S(o.source?.id,b.name);if(t.link)return{format:J,formatVersion:M,...n?{source:{id:n}}:{},...r?{name:r}:{},view:e};let i=S(o.description,b.description),l=o.createdAt instanceof Date?o.createdAt:typeof o.createdAt=="string"&&o.createdAt?new Date(o.createdAt):null,s=l&&!Number.isNaN(l.getTime())?l.toISOString():null,a=o.generator&&typeof o.generator.name=="string"?{name:S(o.generator.name,b.name),version:S(o.generator.version,b.name)}:null,m=S(o.source?.name,b.name),f=o.schemaUrl===void 0?ke:typeof o.schemaUrl=="string"?o.schemaUrl.trim():"",u=Re(o.data),d=o.data?le(e).map(c=>u.get(c.toLowerCase())).filter(Boolean).map(c=>({name:c.name,type:typeof c.type=="string"?c.type:"string"})):null;return{...f?{$schema:f}:{},format:J,formatVersion:M,name:r,...i?{description:i}:{},...s?{createdAt:s}:{},...a?{generator:a}:{},source:{...n?{id:n}:{},...m?{name:m}:{},...d?{fields:d}:{}},extensions:{},view:e}}function Ze(e){return`${JSON.stringify(e,null,2)}
|
|
2
|
-
`}function et(e){return`${(typeof e=="string"?e:"").toLowerCase().normalize("NFKD").replace(/[̀-ͯ]/g,"").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,80).replace(/-+$/,"")||"view"}.pivotkit.json`}function tt(e,o={}){let t={view:null,envelope:!1,name:"",description:"",createdAt:null,generator:null,source:null,failed:null,issues:[]},r=(a,m)=>({...t,failed:a,issues:[...t.issues,{path:"",message:m}]}),n=e;if(typeof e=="string"){if(e.trim()==="")return r("empty","empty text");if(e.length>b.text)return r("tooLarge",`longer than ${b.text} characters`);try{n=JSON.parse(e)}catch{return r("notJson","not valid JSON")}}if(!C(n))return r("notView","not a JSON object");let i=(a,m)=>t.issues.push({path:a,message:m}),l;if(g(n,"format")===J){t.envelope=!0;let a=g(n,"formatVersion");if(a==null)i("formatVersion",`missing; read as ${M}`);else if(a!==M)return(typeof a=="number"?a:typeof a=="string"&&a.trim()!==""?Number(a):NaN)>M?r("newerFormat",`format version ${JSON.stringify(a)} is newer than ${M}`):r("notView",`format version ${JSON.stringify(a)} is not ${M}`);l=g(n,"view"),t.name=S(g(n,"name"),b.name),t.description=S(g(n,"description"),b.description);let m=g(n,"createdAt");t.createdAt=typeof m=="string"&&!Number.isNaN(Date.parse(m))?m.slice(0,64):null,m!==void 0&&t.createdAt===null&&i("createdAt","not a date and time");let f=g(n,"generator");C(f)&&typeof g(f,"name")=="string"&&(t.generator={name:S(g(f,"name"),b.name),version:S(g(f,"version"),b.name)}),t.source=ot(g(n,"source"),i)}else{let a=g(n,"view");C(a)&&typeof g(n,"name")=="string"?(l=a,t.name=S(g(n,"name"),b.name)):l=n}if(!C(l))return r("notView","no view object");let s=g(l,"version");return typeof s=="number"&&s>Y?r("newerView",`view version ${s} is newer than ${Y}`):(t.view=l,o.data&&(t.compatible=rt(t,o.data,o.sourceId)),t)}function ot(e,o){if(e===void 0)return null;if(!C(e))return o("source","not an object"),null;let t={},r=S(g(e,"id"),b.name),n=S(g(e,"name"),b.name);r&&(t.id=r),n&&(t.name=n);let i=g(e,"fields");return i!==void 0&&(Array.isArray(i)?(i.length>b.fields&&o("source.fields",`more than ${b.fields} fields; the rest left out`),t.fields=[],i.slice(0,b.fields).forEach((l,s)=>{let a=S(g(l,"name"),b.name),m=g(l,"type");a?qe.includes(m)?t.fields?.push({name:a,type:m}):(o(`source.fields[${s}].type`,`unknown type ${JSON.stringify(m)}`),t.fields?.push({name:a,type:"string"})):o(`source.fields[${s}]`,"no name")})):o("source.fields","not a list")),t}function rt(e,o,t){let r=Re(o),n=e.source?.fields,i=le(e.view),l=i.filter(f=>!r.has(f.toLowerCase())),s=(n??[]).filter(f=>r.has(f.name.toLowerCase())&&r.get(f.name.toLowerCase()).type!==f.type).map(f=>({name:f.name,type:f.type,dataType:String(r.get(f.name.toLowerCase()).type)})),a=e.source?.id,m=typeof t=="string"&&t&&a?a===t?"same":"other":"unknown";return{ok:m!=="other"&&l.length===0&&s.length===0,source:m,missing:l,changed:s,needs:i}}function Ve(e,o){o=P(o,"toSeries"),_(ae(e),"toSeries(result): result must come from computePivot()");let t=H(o),r=e.view,n={...j,...o.labels||{}},i=o.separator??" / ",l=(p,A,h)=>Fe(p,A,h,!1,!1).filter(L=>L.kind!=="grand"),s=l(e.rowRoot,r.rows.length,r.collapsed.rows),a=l(e.colRoot,r.cols.length,r.collapsed.cols);s.length===0&&(s=[{node:e.rowRoot,kind:"leaf"}]);let m=s.length;o.maxCategories!==void 0&&(_(Number.isInteger(o.maxCategories)&&o.maxCategories>0,"toSeries: maxCategories must be a positive whole number"),s=s.slice(0,o.maxCategories)),a.length===0&&(a=[{node:e.colRoot,kind:"leaf"}]);let f=(p,A)=>{let h=[];for(let L=A;L&&L.parent;L=L.parent)h.unshift(e.label(p,L,n));return h},u=(p,A)=>{let h=f(p,A);return h.length?h.join(i):n.grandTotal},d=r.values.filter((p,A)=>e.valueTypes[A]!=="text").length;me("cells",s.length*Math.max(1,a.length*d),t.cells,"chart data points");let c=r.values.map(p=>$e(p,n)),x=p=>typeof p=="number"&&Number.isFinite(p)?p:null,I=[];for(let{node:p}of a)r.values.forEach((A,h)=>{if(e.valueTypes[h]==="text")return;let L=p.parent?u("cols",p):"",T=L&&r.values.length>1?`${L}${i}${c[h]}`:L||c[h];I.push({name:T,valueIndex:h,colPath:p.path,format:Ne(e,h),data:s.map(({node:$})=>x(e.display($,p,h)))})});return{categories:s.map(({node:p})=>u("rows",p)),categoryLevels:s.map(({node:p})=>f("rows",p)),categoryCount:m,categoryPaths:s.map(({node:p})=>p.path),series:I,totals:r.values.map((p,A)=>s.map(({node:h})=>x(e.display(h,e.colRoot,A))))}}var nt=32,ce={top:24,bottom:32,right:160};function st(e,o,t,r){let n=e==="bottom"||e==="right"||e==="off"?e:o?"top":"off";return n==="off"?{legend:null,room:{top:0,bottom:0,right:0}}:n==="right"?{legend:{type:"scroll",orient:"vertical",right:0,top:t+8,bottom:8,textStyle:r},room:{top:0,bottom:0,right:ce.right}}:n==="bottom"?{legend:{type:"scroll",bottom:0,textStyle:r},room:{top:0,bottom:ce.bottom,right:0}}:{legend:{type:"scroll",top:t,textStyle:r},room:{top:ce.top,bottom:0,right:0}}}var ze=24;function at(e,o,t,{separator:r,axisLine:n,theme:i}){let l=e.categoryLevels??[];if(t.groupLabels==="off"||o<2||!l.some(c=>c.length>=2))return null;let s=l.map(c=>c[0]??""),a=l.map((c,x)=>c.length>1?c.slice(1).join(r):e.categories[x]),m=s.map((c,x)=>x===0||c!==s[x-1]),f=new Set,u=0,d=s.length;for(let c=1;c<=s.length;c++)(c===s.length||m[c])&&(f.add(Math.floor((u+c-1)/2)),d=Math.min(d,c-u),u=c);return{leaves:a,axis:{type:"category",data:s,position:t.horizontal?"left":"bottom",offset:ze,axisLine:{show:!1},axisTick:{show:!0,inside:!0,length:ze,interval:c=>c>0&&m[c]===!0,lineStyle:n.lineStyle},axisLabel:{color:i.textColor,fontWeight:600,interval:c=>f.has(c)},axisPointer:{show:!1},splitLine:{show:!1},groups:!0,groupsAuto:t.groupLabels!=="on",groupSize:d}}}function D(e,o){let t=Array.isArray(e.derived)?e.derived:[],r=n=>{let i=String(n).toLowerCase(),l=t.find(s=>s&&typeof s.name=="string"&&s.name.toLowerCase()===i);return l&&!W.includes(l.by)?!1:o.column(l?l.field:n)?.type==="date"};return(Array.isArray(e.rows)?e.rows:[]).some(r)?"line":"bar"}function it(e,o){o=P(o,"toEChartsOption"),_(ae(e),"toEChartsOption(result): result must come from computePivot()");let t=o.theme??{},r={...e.view.chart,...o.chart||{}};r.type==="auto"&&(r.type=D(e.view,e.encoded));let n=B(e.view.formatting.locale,o.locale??e.locale),i=o.series??Ve(e,o);_(i&&Array.isArray(i.series)&&Array.isArray(i.categories),"toEChartsOption: series must come from toSeries()");let l=i.series[0],s=G(l?l.format:"number",n),a=G(l&&/^percent/.test(l.format)?l.format:"compact",n),m={color:t.textColor,fontFamily:t.fontFamily},f={lineStyle:{color:t.axisColor}},u={backgroundColor:t.backgroundColor??"transparent",textStyle:m,...t.colors&&t.colors.length?{color:t.colors}:{}},d=E=>typeof E=="number"?s(E):"",c=typeof r.title=="string"&&r.title.trim()?{title:{text:r.title.trim(),left:"center",top:0,textStyle:{...m,fontSize:16,fontWeight:600}}}:{},x=c.title?nt:0,{legend:I,room:p}=st(r.legend,ne.includes(r.type)||i.series.length>1,x,m),A=I?{legend:I}:{},h=r.valueLabels==="off"||r.valueLabels==="value"||r.valueLabels==="percent"||r.valueLabels==="both"?r.valueLabels:"auto";if(ne.includes(r.type)){let E=l?l.valueIndex:0,F=i.categories.map((w,Je)=>({name:w,value:i.totals[E]?i.totals[E][Je]:null})).filter(w=>typeof w.value=="number"&&w.value>0),k=w=>G("percent100:1",n)(w.percent),N=r.labelPosition==="inside",v={value:w=>s(w.value),percent:k,both:w=>`${s(w.value)} (${k(w)})`},te=h==="off"?{show:!1}:N?{position:"inside",formatter:v[h==="auto"?"percent":h]}:h==="auto"?{}:{formatter:w=>`${w.name}: ${v[h](w)}`},R=r.type==="donut"?t.donutRadius??ie.donutRadius:t.pieRadius??ie.pieRadius;return{...u,...c,tooltip:{trigger:"item",valueFormatter:d},...A,series:[{type:"pie",name:l?l.name:"",radius:[...R],top:x+p.top,...p.bottom?{bottom:p.bottom}:{},...p.right?{right:p.right}:{},data:F,...N?{minShowLabelAngle:12,labelLine:{show:!1}}:{},label:{...N?{}:{color:t.textColor},...te}}]}}if(r.type==="heatmap"){let E=i.series.filter(v=>v.valueIndex===(l?l.valueIndex:0)),F=[],k=1/0,N=-1/0;return E.forEach((v,te)=>{v.data.forEach((R,w)=>{R!==null&&(F.push([te,w,R]),k=Math.min(k,R),N=Math.max(N,R))})}),{...u,...c,tooltip:{trigger:"item",valueFormatter:d},grid:{top:16+x,bottom:64},xAxis:{type:"category",data:E.map(v=>v.name),axisLine:f,axisLabel:{color:t.textColor,interval:0},splitArea:{show:!1}},yAxis:{type:"category",data:i.categories,axisLine:f,axisLabel:{color:t.textColor},splitArea:{show:!1}},visualMap:{min:F.length?k:0,max:F.length?N:1,calculable:!0,orient:"horizontal",left:"center",bottom:0,textStyle:m,formatter:v=>typeof v=="number"?s(v):String(v),...t.heatmapColors?{inRange:{color:t.heatmapColors}}:{}},series:[{type:"heatmap",name:l?l.name:"",data:F,label:{show:h==="auto"?F.length<=200:h!=="off",formatter:v=>s(v.value[2])}}]}}let L=r.type==="line"||r.type==="area"?"line":"bar",T=at(i,e.view.rows.length,r,{separator:o.separator??" / ",axisLine:f,theme:t}),$={type:"category",data:T?T.leaves:i.categories,axisLine:f,axisLabel:{color:t.textColor}},fe={type:"value",axisLine:f,axisLabel:{color:t.textColor,formatter:E=>a(E)},splitLine:{lineStyle:{color:t.gridColor}}},We=h!=="auto"&&h!=="off",Ge=L==="line"?"top":r.stacked?"inside":r.horizontal?"right":"top",Ye=We?{label:{show:!0,position:Ge,color:t.textColor,formatter:E=>typeof E.value=="number"?s(E.value):""}}:{};return{...u,...c,...A,tooltip:{trigger:"axis",valueFormatter:d},grid:{top:16+x+p.top,...p.bottom?{bottom:p.bottom+8}:{},...p.right?{right:p.right+8}:{}},xAxis:r.horizontal?fe:T?[$,T.axis]:$,yAxis:r.horizontal?T?[{...$,inverse:!0},{...T.axis,inverse:!0}]:{...$,inverse:!0}:fe,series:i.series.map(E=>({type:L,name:E.name,data:E.data,...r.stacked?{stack:"total"}:{},...r.type==="area"?{areaStyle:{}}:{},...L==="line"?{connectNulls:!1,smooth:!!r.smooth}:{},...Ye}))}}var O=Object.freeze({fields:1e3,label:120,description:1e3,order:1e3,href:2e3,depth:32,steps:2e4}),z=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),y=(e,o)=>z(e)&&Object.hasOwn(e,o)?e[o]:void 0,X=(e,...o)=>Object.fromEntries(Object.entries(e).filter(([t])=>!o.includes(t)));function Pe(e,o){if(typeof e!="string")return;let t=e.slice(0,o*4).replace(/[\u0000-\u001f\u007f-\u009f\u2028\u2029]+/g," ").replace(/[\u200b-\u200f\u202a-\u202e\u2060-\u2064\u2066-\u2069\ufeff]/g,"").replace(/\s+/g," ").trim();if(t)return t.length>o?`${t.slice(0,o-1).trimEnd()}\u2026`:t}function lt(e){if(!(typeof e!="string"||e.length>O.href))try{let o=new URL(e.trim());return o.protocol==="https:"&&!o.username&&!o.password?o.href:void 0}catch{return}}function Ue(e,o){if(typeof o!="string"||!o.startsWith("#"))return;let t=o.slice(1).split("/").slice(1).map(n=>n.replace(/~1/g,"/").replace(/~0/g,"~")),r=e;for(let n of t)if(r=Array.isArray(r)&&/^\d+$/.test(n)?r[Number(n)]:y(r,n),r===void 0)return;return r}var je=Symbol("resolving");function U(e,o,t,r=t){let n=`${r}:${o}`;!e.said.has(n)&&e.issues.length<100&&(e.said.add(n),e.issues.push({path:o,message:t}))}function V(e,o,t,r=0){if(!z(o))return;if(r>O.depth){U(e,t,`nested deeper than ${O.depth} levels; not read`,"depth");return}if(e.steps<=0){U(e,"",`stopped after ${O.steps} schema objects; the rest is not read`,"steps");return}e.steps-=1;let n=o,i=y(n,"$ref");if(typeof i=="string"){let s=e.refs.get(i);if(s===je){U(e,t,`$ref ${i.slice(0,200)} refers to itself; not read`);return}if(!e.refs.has(i)){let a=Ue(e.root,i);a===void 0&&U(e,t,i.startsWith("#")?`$ref ${i.slice(0,200)} is not in the document`:`$ref ${i.slice(0,200)} is not local; not fetched`),e.refs.set(i,je),s=V(e,a,i.slice(0,200),r+1),e.refs.set(i,s)}if(!s)return;n={...s,...X(n,"$ref")}}let l=y(n,"allOf");if(Array.isArray(l)){let s=l.slice(0,O.fields).map((f,u)=>V(e,f,`${t}.allOf[${u}]`,r+1)).filter(Boolean),a={};for(let f of[...s,n]){let u=y(f,"properties");if(z(u))for(let d of Object.keys(u))Object.defineProperty(a,d,{value:u[d],enumerable:!0,writable:!0,configurable:!0})}n={...s.reduce((f,u)=>({...f,...X(u,"properties")}),{}),...X(n,"allOf"),properties:a}}for(let s of["anyOf","oneOf"]){let a=y(n,s);if(Array.isArray(a)){let m=a.slice(0,O.fields).map((f,u)=>V(e,f,`${t}.${s}[${u}]`,r+1)).filter(f=>f&&y(f,"type")!=="null");m.length===1&&(n={...m[0],...X(n,s)})}}return n}function De(e){let o=y(e,"type"),t=Array.isArray(o)?o.filter(r=>r!=="null"):[o];return t.length===1&&typeof t[0]=="string"?t[0]:void 0}function ct(e,o,t="fieldDefaultsFromSchema"){return _(typeof o=="string"&&o.trim()!=="",`${t}: an OpenAPI document needs options.schema, the name of a schema or a local $ref`),o.startsWith("#")?Ue(e,o):y(y(y(e,"components"),"schemas"),o)??y(y(e,"definitions"),o)}function ft(e,o={}){_(z(e),"fieldDefaultsFromSchema: the schema must be an object"),_(z(o),"fieldDefaultsFromSchema: options must be an object");let t=e,r=y(t,"openapi")!==void 0||y(t,"swagger")!==void 0,n={root:t,steps:O.steps,refs:new Map,issues:[],said:new Set},i=V(n,r||o.schema!==void 0?ct(t,o.schema):t,"");_(i,`fieldDefaultsFromSchema: no schema ${JSON.stringify(String(o.schema??"")).slice(0,80)} in the document`),De(i)==="array"&&(i=V(n,y(i,"items"),"items"));let l=y(i,"properties");_(z(l),"fieldDefaultsFromSchema: the schema of a row must have properties");let s={},a=Object.keys(l);a.length>O.fields&&U(n,"properties",`${a.length} fields, more than ${O.fields}: the first ${O.fields} are read`);for(let m of a.slice(0,O.fields)){let f=V(n,l[m],`properties.${m.slice(0,200)}`);if(!f)continue;let u={},d=Pe(y(f,"title"),O.label);d&&(u.label=d);let c=Pe(y(f,"description"),O.description);c&&(u.description=c);let x=lt(y(y(f,"externalDocs"),"url"));x&&(u.href=x);let I=De(f),p=y(f,"format");I==="integer"||I==="number"?u.type="number":I==="string"&&(p==="date"||p==="date-time")&&(u.type="date");let A=y(f,"enum");if(Array.isArray(A)){let h=A.slice(0,O.order).filter(L=>L===null||["string","number","boolean"].includes(typeof L));h.length>0&&(u.order=h)}Object.keys(u).length>0&&Object.defineProperty(s,m,{value:u,enumerable:!0,writable:!0,configurable:!0})}return{defaults:s,issues:n.issues}}var q=Object.freeze({auto:{chart:{type:"auto",stacked:!1,horizontal:!1},icon:"sparkle",axis:!0},bar:{chart:{type:"bar",stacked:!1,horizontal:!1},icon:"chart",axis:!0},stacked:{chart:{type:"bar",stacked:!0,horizontal:!1},icon:"stacked",axis:!0},horizontal:{chart:{type:"bar",stacked:!1,horizontal:!0},icon:"horizontal",axis:!0},line:{chart:{type:"line",stacked:!1,horizontal:!1},icon:"line",axis:!0},area:{chart:{type:"area",stacked:!1,horizontal:!1},icon:"area",axis:!0},pie:{chart:{type:"pie",stacked:!1,horizontal:!1},icon:"pie",axis:!1},donut:{chart:{type:"donut",stacked:!1,horizontal:!1},icon:"donut",axis:!1},heatmap:{chart:{type:"heatmap",stacked:!1,horizontal:!1},icon:"heatmap",axis:!1}}),Io=Object.freeze(["pie","donut"]),He=Object.freeze(Object.keys(q));function mt(e){let o=He.find(t=>{let r=q[t].chart;return r.type===e.type&&r.stacked===!!e.stacked&&r.horizontal===!!e.horizontal});return o||(e.type==="bar"?e.horizontal?"horizontal":"stacked":He.find(t=>q[t].chart.type===e.type)??"bar")}function To(e,o){if(e.chart.type!=="auto")return{name:mt(e.chart),auto:!1,swap:!1,chart:{type:e.chart.type,stacked:!!e.chart.stacked,horizontal:!!e.chart.horizontal}};let t=D(e,o),r=t==="bar"&&e.cols.length>0&&D({...e,rows:e.cols},o)==="line",n=t==="line"||r?"line":"bar";return{name:n,auto:!0,swap:r,chart:{...q[n].chart}}}var Co=8,Mo=50;function Fo(e){return Math.round(Math.min(24,Math.max(0,e)*.05))}var ut=120,Q={x:80,y:120},Z=16,pt=4;function No(e,o,t=12){if(e.length===0)return{rotate:0};let r=Math.max(0,o-Q.x)/e.length;return Math.max(...e.map(i=>String(i).length))*t*.55<=r?{rotate:0}:{rotate:45,width:ut,overflow:"truncate"}}function $o(e,o,t,r,n,i=12){let l=Math.max(0,t-Q.x)/Math.max(1,e),s=Math.max(0,r-Q.y)/Math.max(1,o),a=n.reduce((m,f)=>Math.max(m,String(f).length),0)*i*.55;return l>=a+2*pt&&s>=Z}function ko(e,o){let t=Math.max(0,o-Q.y)/Math.max(1,e);return t>=Z?0:Math.ceil(Z/Math.max(t,.1))-1}var Be=120,ee={x:80,y:60};function Ro(e,{width:o,height:t,horizontal:r=!1,mode:n="auto",fontSize:i=12}){let l=Math.max(1,e.length),s={width:Be,overflow:"truncate"},a=(d,c)=>Math.max(1,Math.ceil(c/Math.max(d,.1))),m=(d,c)=>({rotate:d,interval:c-1,every:c,...s});if(r){let d=Math.max(0,t-ee.y)/l;return m(0,n==="all"?1:a(d,i+1))}let f=Math.max(0,o-ee.x)/l,u=Math.min(Be,Math.max(0,...e.map(d=>String(d).length))*i*.55);return n==="nth"?m(0,a(f,u+8)):u+8<=f?m(0,1):m(45,n==="all"?1:a(f,Z))}var K=Object.freeze({along:56,across:28,width:420,height:260});function zo(e,o,{width:t,height:r,horizontal:n=!1}){if(t<K.width||r<K.height)return!1;let i=Math.max(1,e);return(n?Math.max(0,r-ee.y)/i:Math.max(0,t-ee.x)/i)*Math.max(1,o)>=(n?K.across:K.along)}export{Xe as a,Ve as b,it as c,Ke as d,Pe as e,ft as f,b as g,Qe as h,Ze as i,et as j,tt as k,q as l,Io as m,He as n,mt as o,To as p,Co as q,Mo as r,Fo as s,No as t,$o as u,ko as v,Be as w,Ro as x,zo as y};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as m,b as w,c as b,d as y}from"./chunk-UTPKLCNX.js";import{d as p,e as d,k as f}from"./chunk-7HSMEVX7.js";var h=1024;function L(r,t){let e=[],n=0,l=!1,o=!1,c=new w((i,S)=>{n+=i.length,n>t?l=!0:e.push(i),o=o||S});for(let i=0;i<r.length&&!l;i+=h)c.push(r.subarray(i,i+h),i+h>=r.length);if(l)return{bytes:null,inflated:n};if(!o)throw new Error("unexpected end of data");let u=new Uint8Array(n),g=0;for(let i of e)u.set(i,g),g+=i.length;return{bytes:u,inflated:n}}var a="1.",s=Object.freeze({text:32e3,json:1e6}),k=/^[A-Za-z0-9_-]*$/;function j(r){let t="";for(let e=0;e<r.length;e+=32768)t+=String.fromCharCode(...r.subarray(e,e+32768));return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function v(r){let t=atob(r.replace(/-/g,"+").replace(/_/g,"/")+"=".repeat((4-r.length%4)%4)),e=new Uint8Array(t.length);for(let n=0;n<t.length;n++)e[n]=t.charCodeAt(n);return e}function $(r){d(f(r),"encodeViewLink(view): view must be an object");let t=JSON.stringify(r),e=(l,o,c)=>new p("LIMIT_EXCEEDED",`${l.toLocaleString("en-US")} ${c} exceed the limit of ${o.toLocaleString("en-US")} (LINK_LIMITS)`,{limit:"link",value:l,max:o});if(t.length>s.json)throw e(t.length,s.json,"characters of the view");let n=a+j(m(b(t),{level:9}));if(n.length>s.text)throw e(n.length,s.text,"characters of the link");return n}function A(r){let t=o=>({view:null,issues:[{path:"",message:o}]});if(typeof r!="string"||r.trim()==="")return t("empty link");let e=r.trim();if(e.length>s.text)return t(`link longer than ${s.text} characters`);if(!e.startsWith(a)||!k.test(e.slice(a.length)))return t("not a pivotkit view link");let n=e.slice(a.length);if(n==="")return t("the link is damaged");let l;try{let o=L(v(n),s.json);if(o.bytes===null)return t(`view larger than ${s.json} characters`);l=y(o.bytes)}catch{return t("the link is damaged")}try{let o=JSON.parse(l);return f(o)?{view:o,issues:[]}:t("not a view object")}catch{return t("not valid JSON")}}export{s as LINK_LIMITS,A as decodeViewLink,$ as encodeViewLink};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$ as at,B as We,Ba as H,C as Ge,Ca as L,E as _e,F as He,G as Ke,H as x,I as ge,K as Xe,P as Ue,Pa as gt,Q as ve,R as Ee,T as qe,U as Qe,V as Ye,W as et,X as tt,Z as nt,_ as Y,a as re,aa as ot,ba as we,ca as rt,d as pe,da as lt,ea as it,f as Be,fa as st,g as T,ga as ke,h as he,ha as ct,i as Ve,ia as ye,j as Re,ja as be,l as fe,m as ze,na as mt,o as Je,oa as ut,r as je,t as Me,va as dt,w as Z,wa as Ne,xa as pt,y as Ze,ya as ht,z as W,za as ft}from"./chunk-3J3RQPK7.js";import{a as Le,d as z,e as me,g as U,h as De,k as Ie,l as ue,m as Pe,n as $e,o as de}from"./chunk-LXY26OUE.js";import{Z as Oe,g as Te,o as X,x as ce}from"./chunk-KQ7VYRM6.js";import{c as oe}from"./chunk-7HSMEVX7.js";var wt={aboutSetting:"About {setting}",settingInfo:{grandTotalRow:"A last row with the total of every column.",grandTotalColumn:"A last column with the total of every row.",rowSubtotals:"With two or more fields in Rows: a total row under each group of the outer field.",colSubtotals:"With two or more fields in Columns: a total column after each group of the outer field.",along:"The direction the calculation walks: Rows goes down the rows of each column, Columns across the columns of each row. A running total adds up along it, a difference compares with the item before it.",showAs:"Shows each value as a share, a difference, a running total or a rank instead of the number itself. For percentages, a tip above the result says what 100% is.",exportXlsx:"Every number with all its decimals, formats kept, ready to calculate with.",exportCsv:"Percentages and calculations as the table shows them, as plain text.",copyTable:"The table as it is shown, headers and totals included: tab-separated, pastes into Excel or Google Sheets as columns.",copyDataJson:"The table's numbers with their labels as JSON, for a program. Not the view itself: that is Views \u2192 Copy view as JSON.",drillCopy:"The rows as the panel shows them, with a header row: tab-separated, pastes into Excel or Google Sheets as columns.",drillJson:"The rows as JSON objects, with the data's field names and raw values, for a program.",groupLabels:"With two or more fields in Rows: the outer field's items written once under the axis, below their categories.",labelPosition:"Outside: each slice's name and number next to it. Inside: the number on the slice, the names in the legend.",sharedView:"Only admins can change shared views."},moveLeft:"Move left",moveRight:"Move right",remove:"Remove field",chartAutoNow:"Now: {type}",sharedViews:"Shared views",myViews:"My views",noViews:"No saved views yet.",publishView:"Publish {name} as a shared view",publishConfirm:"Publish \u201C{name}\u201D as a shared view? Everyone who uses this report sees it.",publishAction:"Publish",storeNote:"Kept in this browser only: not on other devices, and gone when the site's data is cleared.",storeFull:"this browser keeps at most {max} views",storeTooLarge:"the views would take more than {max} characters",storeRefused:"this browser did not keep it (storage blocked or full)",storeChanged:"the views were changed in another tab; open the menu again",toastSaved:"View \u201C{name}\u201D saved",toastDeleted:"View \u201C{name}\u201D deleted",toastPublished:"View \u201C{name}\u201D published",toastSaveFailed:"The view could not be saved: {message}",toastDeleteFailed:"The view could not be deleted: {message}",toastPublishFailed:"The view could not be published: {message}",toastSaveRejected:"The server could not save the view.",toastDeleteRejected:"The server could not delete the view.",toastPublishRejected:"The server could not publish the view.",deleteView:"Delete {name}",deleteConfirm:"Delete \u201C{name}\u201D?",deleteAction:"Delete",saveView:"Save current view",viewName:"Name of the view",save:"Save",cancel:"Cancel",expandAll:"Expand all",collapseAll:"Collapse all",aggregation:"Summarize by",moreStatistics:"More statistics",showAsNone:"The value itself",moreCalculations:"More calculations",showAsNames:{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"},along:"Along",format:"Number format",formatAuto:"Automatic",formats:{number:"Number","number:0":"Number, no decimals","number:2":"Number, 2 decimals",integer:"Whole number",currency:"Currency",percent:"Percent",compact:"Compact (1.2K)",bytes:"Bytes (KB, MB)","duration:h":"Duration from hours","duration:s":"Duration from seconds"},conditional:"Highlight",conditionalNone:"None",colorScale:"Colour scale",dataBar:"Data bars",rename:"Name",sortOldest:"Oldest first",sortNewest:"Newest first",groupBy:"Group dates by",groupNone:"No grouping (every date and time)",groupTimeline:"Along the time line",groupCyclic:"Compare periods across years",unitHints:{year:"2025",yearQuarter:"Q1 2025",yearMonth:"Jan 2025",yearWeek:"2025-W03",day:"Jan 15, 2025",quarter:"Q1 of every year",month:"Jan of every year",week:"W03 of every year",weekday:"Mon to Sun",hour:"00:00 to 23:00",bin:""},bins:"Group numbers into ranges",binSize:"Range size",binStart:"Starting at",binStartFar:"Ranges from {start} cannot hold this field's values ({min} to {max}): every row would be blank. Pick a start closer to them.",apply:"Apply",removeSetting:"Remove",topN:"Show only the top items",topCount:"Count",bottom:"Bottom",topBy:"by",searchValues:"Search values",selectAll:"Select all",selectNone:"Select none",onlyThis:"Only",valuesShown:"{shown} of {total} values; search to find more",conditionNumber:"Condition on the label",conditionNone:"No condition",conditionValue:"Text",selected:"{count} selected",exportDownload:"Download",exportCopy:"Copy",exportXlsx:"Excel workbook (.xlsx)",exportCsv:"CSV file (.csv)",exportPng:"Chart image (.png)",exportPngNeedsChart:"Switch to Chart first.",copyTable:"Copy table",copyDataJson:"Copy data as JSON",toastTableCopied:"Table copied: tab-separated, pastes into Excel or Google Sheets as columns",toastDataCopied:"Data copied as JSON",toastCopyBlocked:"This page does not allow copying. Download a file instead.",drillTitle:"Rows behind this value",drillCount:{one:"{count} row",other:"{count} rows"},drillShown:"Showing the first {shown} of {count} rows",drillCopy:"Copy",drillJson:"Copy as JSON",drillCsv:"Download CSV",drillXlsx:"Download Excel",drillPart:"{shown} of {count} rows",drillCopied:"Copied {rows}: tab-separated, pastes into Excel or Google Sheets as columns",drillCopiedJson:"Copied {rows} as JSON",drillExported:"Exported {file} ({rows})",drillExportNote:"Holds the first {shown} of {count} rows, as shown here.",showTips:"Show tips",showSettingInfo:"Show explanations",resetTips:"Show dismissed tips again",help:"Help",shortcutsTitle:"Keyboard shortcuts",keys:{Mod:"Ctrl",Shift:"Shift","Arrow keys":"Arrow keys",Enter:"Enter",Space:"Space",Escape:"Escape",F10:"F10"},valueLabels:"Value labels",valueLabelNames:{auto:"Automatic",off:"Off",value:"Value",percent:"Percent",both:"Value and percent"},legend:"Legend",legendNames:{auto:"Automatic",bottom:"Bottom",right:"Right",off:"Off"},chartTitle:"Title",chartTitleNone:"No title",smoothLines:"Smooth lines",labelPosition:"Labels",labelPositionNames:{outside:"Outside",inside:"Inside"},axisLabels:"Axis labels",axisLabelNames:{auto:"Automatic",all:"All (slanted)",nth:"Every n-th"},groupLabels:"Group labels under the axis",groupLabelNames:{auto:"Automatic",on:"On",off:"Off"},defaultName:"Use the default name",share:"Share",copyLink:"Copy link",copyJson:"Copy view as JSON",downloadView:"Download view (.pivotkit.json)",sharePrivacy:"A view holds the names of fields and, in its filters, the values chosen there: share it only where those may be seen.",loadView:"Load view\u2026",loadViewHint:"Paste a view file, a view as JSON or a link, or choose a .pivotkit.json file.",loadViewText:"View as JSON or link",chooseFile:"Choose file\u2026",load:"Load",loadCheckTitle:"This view may not fit this data",loadAnyway:"Load anyway",switchAndLoad:"Switch to \u201C{source}\u201D and load",switchStartsFresh:"Switching shows the other data with this view; Undo starts there.",numberInvalid:"Enter a number, such as {example}.",countInvalid:"Enter a whole number of 1 or more.",sizeInvalid:"Enter a number above 0, such as {example}.",valueFilter:"Value filter\u2026",valueFilterBy:"Value",valueFilterOp:"Condition",valueFilterNumber:"Number",valueFilterTo:"and",valueOps:{"=":"equals","!=":"does not equal",">":"greater than",">=":"greater than or equal to","<":"less than","<=":"less than or equal to",between:"between",notBetween:"not between"},removeFilter:"Remove filter",valuesFilterHint:"Values are not filtered here: filter a field on Rows or Columns through its menu, or move a field to Filters.",moreFormats:"More formats"},Bt={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.",sharedView:"Nur Admins k\xF6nnen gemeinsame Ansichten \xE4ndern."},moveLeft:"Nach links",moveRight:"Nach rechts",remove:"Feld entfernen",chartAutoNow:"Jetzt: {type}",sharedViews:"Gemeinsame Ansichten",myViews:"Meine Ansichten",noViews:"Noch keine gespeicherten Ansichten.",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",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",groupBy:"Datum gruppieren nach",groupNone:"Keine Gruppierung (jedes Datum mit Uhrzeit)",groupTimeline:"Entlang der Zeitachse",groupCyclic:"Zeitr\xE4ume \xFCber Jahre vergleichen",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:"Zahlen in Bereiche gruppieren",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",removeSetting:"Entfernen",topN:"Nur die obersten Eintr\xE4ge zeigen",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.",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",help:"Hilfe",shortcutsTitle:"Tastenk\xFCrzel",keys:{Mod:"Strg",Shift:"Umschalt","Arrow keys":"Pfeiltasten",Enter:"Eingabe",Space:"Leertaste",Escape:"Esc",F10:"F10"},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",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.",sizeInvalid:"Eine Zahl \xFCber 0 eingeben, etwa {example}.",valueFilter:"Wertfilter\u2026",valueFilterBy:"Wert",valueFilterOp:"Bedingung",valueFilterNumber:"Zahl",valueFilterTo:"und",valueOps:{"=":"gleich","!=":"ungleich",">":"gr\xF6\xDFer als",">=":"gr\xF6\xDFer oder gleich","<":"kleiner als","<=":"kleiner oder gleich",between:"zwischen",notBetween:"nicht zwischen"},removeFilter:"Filter entfernen",valuesFilterHint:"Werte werden hier nicht gefiltert: Ein Feld in Zeilen oder Spalten \xFCber sein Men\xFC filtern oder ein Feld in Filter ziehen.",moreFormats:"Weitere Formate"},vt=Object.freeze({en:wt,de:Bt}),Et=new WeakMap;function kt(e){let t=Et.get(e);if(t)return t;let n=Object.hasOwn(vt,e.lang)?vt[e.lang]:wt,a={...e,...Re(n,e[Ve])};return Et.set(e,a),a}var i=oe(re(),1);var r=oe(re(),1);var G=Object.freeze({count:500,text:5e6});function Vt(e){try{return JSON.stringify(e)?.length??0}catch{return-1}}function yt(e){let t={templates:[],issues:[]},n=(o,s)=>t.issues.push({path:o,message:s}),a=e;if(typeof e=="string"){if(e.length>G.text)return n("",`longer than ${G.text} characters; not read`),t;try{a=JSON.parse(e)}catch{return n("","not valid JSON"),t}}if(!Array.isArray(a))return n("","not a list of templates"),t;a.length>G.count&&n("",`${a.length} templates, more than ${G.count}: the first ${G.count} are read`);let l=typeof e=="string"?-1/0:0;for(let o=0;o<Math.min(a.length,G.count);o++){let s=a[o];if(l!==-1/0){let k=Vt(s);if(k<0){n(`[${o}]`,"not JSON; left out");continue}if(l+=k,l>G.text){n(`[${o}]`,`the templates are longer than ${G.text} characters as JSON; this one and the rest are left out`);break}}let c=Ie(s);if(c.failed||!c.view){n(`[${o}]`,`${c.issues.at(-1)?.message??"no view"}; left out`);continue}let u=c.view===s,m=me(u?Object.hasOwn(c.view,"name")?c.view.name:void 0:c.name,U.name);if(!m){n(`[${o}]`,"no name; left out");continue}let d={...c.view};u&&delete d.name;let v={name:m,view:d},y=me(c.description,U.description);y&&(v.description=y),c.source&&Object.keys(c.source).length>0&&(v.source=c.source),t.templates.push(v),c.issues.forEach(k=>n(`[${o}]${k.path?`.${k.path}`:""}`,k.message))}return t}var w=oe(re(),1);var E=oe(re(),1);var bt=new Map;function Rt(e){let t=bt.get(e);if(!t){let n;try{n=new Intl.NumberFormat(e).formatToParts(12345.6)}catch{n=new Intl.NumberFormat("en-US").formatToParts(12345.6)}t={decimal:n.find(a=>a.type==="decimal")?.value??".",group:n.find(a=>a.type==="group")?.value??","},bt.set(e,t)}return t}var Nt=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),zt=/^[+-]?(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?$/i;function Jt(e,t){let n=String(e??"").replace(/[\s\u00a0\u202f]/g,"").replace(/\u2212/g,"-");if(n==="")return null;let{decimal:a,group:l}=Rt(t),o=/[\s\u00a0\u202f]/.test(l)?"":Nt(l),s=Nt(a),c=o?`\\d{1,3}(?:${o}\\d{3})+`:"(?!)",m=new RegExp(`^([+-]?)(${c}|\\d+)?(?:${s}(\\d+))?$`).exec(n);if(m&&(m[2]!==void 0||m[3]!==void 0)){let d=(m[2]??"0").split(l).join(""),v=+`${m[1]}${d}${m[3]!==void 0?`.${m[3]}`:""}`;return Number.isFinite(v)?v:null}if(zt.test(n)){let d=Number(n);return Number.isFinite(d)?d:null}return null}function ee(e,t){if(typeof e!="number"||!Number.isFinite(e))return"";try{return e.toLocaleString(t,{useGrouping:!1,maximumFractionDigits:20})}catch{return String(e)}}var jt=["number","number:0","number:2","currency","percent"].filter(ce),St=["integer","compact","bytes","duration:h","duration:s"].filter(ce),xt=z.showAs.filter(e=>["percentOfGrandTotal","percentOfRowTotal","percentOfColumnTotal"].includes(e));function le({title:e,open:t,children:n}){return i.default.createElement("details",{className:"pk-more",open:t},i.default.createElement("summary",{className:"pk-more-title"},e),n)}function te(e,{kind:t="number",required:n=!0,tried:a=!1,labels:l,locale:o}){let s=Jt(e,o),c=s!==null&&(t==="number"||(t==="size"?s>0:Number.isInteger(s)&&s>=1)),u=()=>t==="count"?l.countInvalid:T(t==="size"?l.sizeInvalid:l.numberInvalid,{example:(t==="size"?.5:1234.5).toLocaleString(o)});return e.trim()===""?{value:null,problem:n&&a?u():null}:c?{value:s,problem:null}:{value:null,problem:u()}}function se({value:e,onChange:t,problem:n,label:a,testId:l,className:o="pk-field-label",shown:s,shownClass:c}){let u=(0,i.useId)();return i.default.createElement(i.default.Fragment,null,i.default.createElement("label",{className:o},s?i.default.createElement("span",{className:c},s):i.default.createElement("span",{className:"pk-sr"},a),i.default.createElement("input",{type:"text",inputMode:"decimal",autoComplete:"off",spellCheck:!1,value:e,onChange:m=>t(m.target.value),"aria-label":a,"aria-invalid":n?!0:void 0,"aria-describedby":n?u:void 0,"data-testid":l})),n?i.default.createElement("p",{id:u,className:"pk-form-problem","data-testid":`${l}-problem`},n):null)}function Mt({grouping:e,labels:t,onApply:n,onClear:a,range:l,locale:o}){let[s,c]=(0,i.useState)(ee(e?.size,o)),[u,m]=(0,i.useState)(ee(e?.origin,o)),[d,v]=(0,i.useState)(!1),y=(0,i.useId)(),k=te(s,{kind:"size",tried:d,labels:t,locale:o}),p=te(u,{required:!1,labels:t,locale:o}),b=k.value,h=u.trim()===""?0:p.value,f=b!==null&&h!==null&&qe(b,h,l)==="far",F=I=>I.toLocaleString(o,{maximumFractionDigits:6});return i.default.createElement("form",{className:"pk-inline-form pk-bin-form",onSubmit:I=>{if(I.preventDefault(),a&&s.trim()===""){a();return}v(!0),b!==null&&h!==null&&!f&&n(b,h)}},i.default.createElement(se,{value:s,onChange:c,problem:k.problem,label:t.binSize,shown:t.binSize,testId:"bin-size"}),i.default.createElement("label",{className:"pk-field-label"},i.default.createElement("span",null,t.binStart),i.default.createElement(W,{type:"text",inputMode:"decimal",autoComplete:"off",spellCheck:!1,value:u,placeholder:"0",onChange:m,clearLabel:t.clearText,"data-testid":"bin-start","aria-invalid":f||p.problem?!0:void 0,"aria-describedby":f||p.problem?y:void 0})),p.problem?i.default.createElement("p",{id:y,className:"pk-form-problem","data-testid":"bin-start-problem"},p.problem):f&&l&&h!==null&&b!==null?i.default.createElement("p",{id:y,className:"pk-form-problem","data-testid":"bin-problem"},T(t.binStartFar,{start:F(h),min:F(l.min),max:F(l.max)})):null,i.default.createElement("button",{type:"submit",className:"pk-btn pk-primary",disabled:f},t.apply),a?i.default.createElement("button",{type:"button",className:"pk-btn",onClick:a,"data-testid":"bin-remove"},t.removeSetting):null)}function At({choices:e,names:t,index:n,onChange:a,label:l,prefix:o,testId:s}){return e.length<2?i.default.createElement("span",{className:"pk-muted pk-by"},o?`${o} ${t[0]}`:t[0]):i.default.createElement("label",{className:"pk-field-label pk-by-pick"},o?i.default.createElement("span",{className:"pk-muted"},o):i.default.createElement("span",{className:"pk-sr"},l),i.default.createElement("select",{value:n,onChange:c=>a(Number(c.target.value)),"aria-label":l,"data-testid":s},e.map((c,u)=>i.default.createElement("option",{key:`${c.field}:${c.agg}`,value:u},t[u]))))}var Tt=(e,t)=>Math.max(0,e.findIndex(n=>ke(n,t)));function Zt({top:e,labels:t,choices:n,names:a,onApply:l,locale:o}){let[s,c]=(0,i.useState)(ee(e?.count??10,o)),[u,m]=(0,i.useState)(!!e?.bottom),[d,v]=(0,i.useState)(()=>Tt(n,e?.by)),[y,k]=(0,i.useState)(!1),p=te(s,{kind:"count",tried:y,labels:t,locale:o});return i.default.createElement("form",{className:"pk-inline-form",onSubmit:b=>{if(b.preventDefault(),e&&s.trim()===""){l(null);return}k(!0),p.value!==null&&l({count:p.value,bottom:u,by:n[d]})}},i.default.createElement("div",{className:"pk-segmented pk-small",role:"group","aria-label":t.topN},i.default.createElement("button",{type:"button","aria-pressed":!u,onClick:()=>m(!1)},t.top),i.default.createElement("button",{type:"button","aria-pressed":u,onClick:()=>m(!0)},t.bottom)),i.default.createElement(se,{value:s,onChange:c,problem:p.problem,label:t.topCount,testId:"top-count",className:"pk-field-label pk-narrow-input"}),i.default.createElement(At,{choices:n,names:a,index:d,onChange:v,label:t.topBy,prefix:t.topBy,testId:"top-by"}),i.default.createElement("button",{type:"submit",className:"pk-btn pk-primary"},t.apply),e?i.default.createElement("button",{type:"button",className:"pk-btn",onClick:()=>l(null),"data-testid":"top-remove"},t.removeSetting):null)}function Wt({condition:e,labels:t,choices:n,names:a,onApply:l,locale:o}){let[s,c]=(0,i.useState)(()=>Tt(n,e?.by)),[u,m]=(0,i.useState)(e?.op??">"),[d,v]=(0,i.useState)(ee(e?.value,o)),[y,k]=(0,i.useState)(ee(e?.value2,o)),[p,b]=(0,i.useState)(!1),h=u==="between"||u==="notBetween",f=te(d,{tried:p,labels:t,locale:o}),F=te(y,{tried:p,labels:t,locale:o}),I=f.value!==null&&(!h||F.value!==null);return i.default.createElement("form",{className:"pk-inline-form pk-value-filter",onSubmit:A=>{if(A.preventDefault(),e&&d.trim()===""&&y.trim()===""){l(null);return}b(!0),I&&l({by:n[s],op:u,value:f.value,...h?{value2:F.value}:{}})}},i.default.createElement(At,{choices:n,names:a,index:s,onChange:c,label:t.valueFilterBy,testId:"value-filter-by"}),i.default.createElement("label",{className:"pk-field-label"},i.default.createElement("span",{className:"pk-sr"},t.valueFilterOp),i.default.createElement("select",{value:u,onChange:A=>m(A.target.value),"aria-label":t.valueFilterOp,"data-testid":"value-filter-op"},z.valueOps.map(A=>i.default.createElement("option",{key:A,value:A},t.valueOps[A]??A)))),i.default.createElement(se,{value:d,onChange:v,problem:f.problem,label:t.valueFilterNumber,testId:"value-filter-number",className:"pk-field-label pk-narrow-input"}),h?i.default.createElement(se,{value:y,onChange:k,problem:F.problem,label:`${t.valueFilterTo} ${t.valueFilterNumber}`,shown:t.valueFilterTo,shownClass:"pk-muted",testId:"value-filter-number2",className:"pk-field-label pk-narrow-input"}):null,i.default.createElement("button",{type:"submit",className:"pk-btn pk-primary","data-testid":"value-filter-apply"},t.apply),e?i.default.createElement("button",{type:"button",className:"pk-btn",onClick:()=>l(null),"data-testid":"value-filter-remove"},t.removeSetting):null)}function Lt({view:e,zone:t,index:n,count:a,labels:l,commit:o,close:s,text:c,type:u}){return i.default.createElement(L,{title:l.move,id:"move"},Xe.filter(m=>m!==t).map(m=>i.default.createElement(x,{key:m,icon:Ze[m],onSelect:()=>{s(),o(Ue(e,t,n,m,void 0,{type:u}),{step:"moved",field:c,zone:m})},testId:`move-${m}`},T(l.moveTo,{zone:l.zones[m]}))),t!=="filters"&&n>0?i.default.createElement(x,{icon:"chevronRight",onSelect:()=>{s(),o(ve(e,t,n,n-1),{step:"reordered",zone:t})}},l.moveLeft):null,t!=="filters"&&n<a-1?i.default.createElement(x,{icon:"chevronRight",onSelect:()=>{s(),o(ve(e,t,n,n+1),{step:"reordered",zone:t})}},l.moveRight):null)}function Ot({labels:e,onRemove:t,close:n}){return i.default.createElement("div",{className:"pk-menu-foot"},i.default.createElement(x,{icon:"trash",danger:!0,onSelect:()=>{n(),t()},testId:"menu-remove"},e.remove))}function Cn({view:e,zone:t,index:n,field:a,types:l,labels:o,commit:s,close:c,openFilter:u,chipRef:m,onRemove:d,defaultsOf:v,rangeOf:y,locale:k,info:p,state:b}){let h=et(e,a),f=X(a,o.core),F=l.get(h.toLowerCase()),I=Ye(e,a),A=nt(e,a),P=ct(e,S=>l.get(S.toLowerCase())),B=Y(e,a,["top"])[0],g=Y(e,a,["value"])[0],C=S=>{let D=st(P,S);return{choices:D,names:D.map(_=>ze(e,_,o))}},{choices:$,names:V}=C(A?.by==="value"?A.value:null),J=C(B?.by),R=C(g?.by),N=(S,D,_)=>A?A.by===S&&A.order===D&&(S!=="value"||ke(A.value,_)):S==="label"&&D==="asc",O=h===a?v?.(h)?.order:void 0,j=A?.by==="custom"?A.items:Array.isArray(O)&&O.length>0?O:null,K=(S,D,_)=>{c();let ae=S==="value"?{by:S,order:D,value:_}:S==="custom"?{by:S,order:D,items:[...j]}:{by:S,order:D};s(tt(e,a,S==="label"&&D==="asc"&&!(Array.isArray(O)&&O.length>0)?null:ae),{step:"sort",field:f})},ne=(S,D,_)=>{c();let ae=X(h,o.core),$t=S?Je(ae,S,o,D):null;s(Qe(e,a,S,{size:D,origin:_,name:$t??void 0}).view,{step:"group",field:ae})},Ae=S=>i.default.createElement(x,{key:S,checked:I?.by===S,onSelect:()=>ne(S),testId:`group-${S}`,hint:o.unitHints[S]||void 0},o.units[S]??S);return i.default.createElement(i.default.Fragment,null,i.default.createElement("div",{className:"pk-menu-body"},p?i.default.createElement(ge,{info:p,labels:o,className:"pk-field-desc pk-menu-desc"}):null,i.default.createElement(L,{title:o.sort,id:"sort"},i.default.createElement(x,{checked:N("label","asc"),icon:"sortAsc",onSelect:()=>K("label","asc")},F==="date"?o.sortOldest:o.sortLabelAsc),i.default.createElement(x,{checked:N("label","desc"),icon:"sortDesc",onSelect:()=>K("label","desc")},F==="date"?o.sortNewest:o.sortLabelDesc),$.map((S,D)=>i.default.createElement(i.default.Fragment,{key:`${S.field}:${S.agg}`},i.default.createElement(x,{checked:N("value","desc",S),icon:"sortDesc",onSelect:()=>K("value","desc",S),testId:`sort-value-desc-${D}`},T(o.sortValueDesc,{value:V[D]})),i.default.createElement(x,{checked:N("value","asc",S),icon:"sortAsc",onSelect:()=>K("value","asc",S),testId:`sort-value-asc-${D}`},T(o.sortValueAsc,{value:V[D]})))),j?i.default.createElement(x,{checked:N("custom","asc"),icon:"sortAsc",onSelect:()=>K("custom","asc"),testId:"sort-custom"},o.sortCustom):null,j?i.default.createElement(x,{checked:N("custom","desc"),icon:"sortDesc",onSelect:()=>K("custom","desc"),testId:"sort-custom-desc"},o.sortCustomDesc):null),F==="date"?i.default.createElement(L,{title:o.groupBy,id:"groupBy"},i.default.createElement("div",{className:"pk-subtitle"},o.groupTimeline),i.default.createElement("div",{className:"pk-choice-grid"},z.timelineUnits.map(Ae)),i.default.createElement("div",{className:"pk-subtitle"},o.groupCyclic),i.default.createElement("div",{className:"pk-choice-grid"},z.cyclicUnits.map(Ae)),i.default.createElement(x,{checked:!I,onSelect:()=>ne(null),testId:"group-none"},o.groupNone)):null,F==="number"?i.default.createElement(L,{title:o.bins,id:"bins"},i.default.createElement(Mt,{grouping:I?.by==="bin"?I:null,labels:o,range:y?.(h)??null,locale:k,onApply:(S,D)=>ne("bin",S,D),onClear:I?()=>ne(null):null})):null,i.default.createElement(L,{title:o.topN,id:"topN"},i.default.createElement(Zt,{top:B,labels:o,choices:J.choices,names:J.names,locale:k,onApply:S=>{c(),s(rt(e,a,S,B),{step:"top",field:f})}})),i.default.createElement(L,{title:o.zones.filters,id:"filters"},be(e,a)?i.default.createElement(i.default.Fragment,null,i.default.createElement(x,{icon:"filter",tone:"accent",onSelect:()=>{c(),u(a,m.current)},testId:"open-filter"},je(e,a,b,o,k)),i.default.createElement(x,{icon:"x",onSelect:()=>{c(),s(ye(e,a),{step:"filter",field:f})},testId:"remove-filter"},o.removeFilter)):i.default.createElement(x,{icon:"filter",onSelect:()=>{c(),u(a,m.current)},testId:"open-filter"},o.filter),i.default.createElement(le,{title:o.valueFilter,open:!!g},i.default.createElement(Wt,{condition:g,labels:o,choices:R.choices,names:R.names,locale:k,onApply:S=>{c(),s(lt(e,a,S,g),{step:"filter",field:f})}}))),i.default.createElement(Lt,{view:e,zone:t,index:n,count:e[t].length,labels:o,commit:s,close:c,text:f,type:F})),i.default.createElement(Ot,{labels:o,onRemove:d,close:c}))}function Fn({view:e,index:t,types:n,labels:a,commit:l,close:o,onRemove:s,defaultsOf:c,info:u}){let m=e.values[t],d=m.field?n.get(m.field.toLowerCase())??"string":"number",v=m.field?Te(d):["count"],y=z.commonAggregators.filter(g=>v.includes(g)),k=v.filter(g=>!z.commonAggregators.includes(g)),p=z.showAs.filter(g=>!xt.includes(g)),b=it(m,d),h=fe(m,a),f=g=>{o(),l(Ee(e,t,g,{defaults:m.field?c?.(m.field):void 0}),{step:"value",field:h})},[F,I]=(0,i.useState)(m.label??""),A=g=>i.default.createElement(x,{key:g,checked:m.agg===g,onSelect:()=>f({agg:g}),testId:`agg-${g}`},a.core.aggregators[g]??g),P=g=>i.default.createElement(x,{key:g,checked:m.format===g,onSelect:()=>f({format:g}),testId:`format-${g}`},a.formats[g]??g),B=g=>i.default.createElement(x,{key:g,checked:m.showAs?.type===g,onSelect:()=>f({showAs:{type:g,axis:m.showAs?.axis??"rows"}}),testId:`showas-${g}`},a.showAsNames[g]??g);return i.default.createElement(i.default.Fragment,null,i.default.createElement("div",{className:"pk-menu-body"},u?i.default.createElement(ge,{info:u,labels:a,className:"pk-field-desc pk-menu-desc"}):null,i.default.createElement(L,{title:a.aggregation,id:"summarize"},i.default.createElement("div",{className:"pk-choice-grid"},y.map(A)),k.length?i.default.createElement(le,{title:a.moreStatistics,open:k.includes(m.agg)},i.default.createElement("div",{className:"pk-choice-grid"},k.map(A))):null),b?i.default.createElement(L,{title:a.showAs,id:"showAs",info:"showAs"},i.default.createElement("div",{className:"pk-choice-grid"},i.default.createElement(x,{checked:!m.showAs,onSelect:()=>f({showAs:null}),testId:"showas-none"},a.showAsNone),xt.map(B)),i.default.createElement(le,{title:a.moreCalculations,open:!!(m.showAs&&p.includes(m.showAs.type))},i.default.createElement("div",{className:"pk-choice-grid"},p.map(B))),m.showAs&&z.showAsAlongAxis.includes(m.showAs.type)?i.default.createElement("div",{className:"pk-setting-row"},i.default.createElement("div",{className:"pk-segmented pk-small",role:"group","aria-label":a.along},i.default.createElement("span",{className:"pk-muted"},a.along),["rows","cols"].map(g=>i.default.createElement("button",{key:g,type:"button","aria-pressed":m.showAs.axis===g,onClick:()=>f({showAs:{...m.showAs,axis:g}})},a.zones[g]))),i.default.createElement(H,{id:"along",name:a.along})):null):null,b?i.default.createElement(L,{title:a.format,id:"format"},i.default.createElement("div",{className:"pk-choice-grid"},i.default.createElement(x,{checked:!m.format,onSelect:()=>f({format:null})},a.formatAuto),jt.map(P)),i.default.createElement(le,{title:a.moreFormats,open:St.includes(m.format??"")},i.default.createElement("div",{className:"pk-choice-grid"},St.map(P)))):null,b?i.default.createElement(L,{title:a.conditional,id:"highlight"},i.default.createElement("div",{className:"pk-choice-grid"},i.default.createElement(x,{checked:!m.conditional,onSelect:()=>f({conditional:null})},a.conditionalNone),i.default.createElement(x,{checked:m.conditional?.type==="colorScale",onSelect:()=>f({conditional:{type:"colorScale"}}),testId:"cond-colorScale"},a.colorScale),i.default.createElement(x,{checked:m.conditional?.type==="dataBar",onSelect:()=>f({conditional:{type:"dataBar",color:null}}),testId:"cond-dataBar"},a.dataBar))):null,i.default.createElement(L,{title:a.rename,id:"name"},i.default.createElement("form",{className:"pk-inline-form",onSubmit:g=>{g.preventDefault(),f({label:F.trim()||null})}},i.default.createElement(W,{type:"text",value:F,placeholder:fe({...m,label:null},a),onChange:I,onClear:()=>m.label?l(Ee(e,t,{label:null}),{step:"value",field:h}):void 0,clearLabel:a.defaultName,"aria-label":a.rename,maxLength:200,"data-testid":"value-name"}),i.default.createElement("button",{type:"submit",className:"pk-btn pk-primary"},a.apply))),i.default.createElement(L,{title:a.zones.filters,id:"valueFilters"},i.default.createElement("p",{className:"pk-hint pk-menu-hint","data-testid":"values-filter-hint"},a.valuesFilterHint)),i.default.createElement(Lt,{view:e,zone:"values",index:t,count:e.values.length,labels:a,commit:l,close:o,text:h,type:d})),i.default.createElement(Ot,{labels:a,onRemove:s,close:o}))}var Q=Object.freeze({count:100,text:5e5}),Ct=!1;function Dt(e){return e?e.length>Q.text?(Ct||(Ct=!0,console.warn(`pivotkit: the browser store of views holds more than ${Q.text} characters; it is not read, and the next save replaces it`)),[]):yt(e).templates:[]}function On(e,t){return Dt(e).map((n,a)=>({name:n.name,view:n.view,id:n.source?.id,at:a})).filter(n=>!n.id||!t||n.id===t).map(({name:n,view:a,at:l})=>({name:n,view:a,at:l}))}function Gt(e,t,n){let a=Dt(e),l=a;if(t.remove!==void 0){if(a[t.remove]?.name!==t.removeName)throw new Error(n("changed",0));l=a.filter((c,u)=>u!==t.remove)}let o=!!(t.name&&t.view);if(o){let c=t.sourceId;if(l=l.filter(u=>u.name!==t.name||(u.source?.id??void 0)!==c),l.push({name:t.name,view:t.view,...c?{source:{id:c}}:{}}),l.length>Q.count)throw new Error(n("count",Q.count))}let s=l.length?JSON.stringify(l.map(c=>De(c.view,{name:c.name,source:c.source},{link:!0}))):null;if(o&&s&&s.length>Q.text)throw new Error(n("text",Q.text));return s}function _t(e,t,n,a,l){let o={count:n.storeFull,text:n.storeTooLarge,changed:n.storeChanged},s=Gt(e,t,(c,u)=>T(o[c],{max:u.toLocaleString(a)}));if(!l(s))throw new Error(n.storeRefused)}function Ht({view:e,plan:t,labels:n,onChart:a,close:l}){let o=de(e.chart);return $e.map(s=>r.default.createElement(x,{key:s,icon:ue[s].icon,checked:e.display==="chart"&&o===s,hint:s==="auto"&&t?T(n.chartAutoNow,{type:n.chartTypes[t.name]}):void 0,onSelect:()=>{l(),a(s)},testId:`chart-${s}`},n.chartTypes[s]))}var Ft={slices:["auto","off","value","percent","both"],other:["auto","off","value"]},Kt=["outside","inside"],Xt=["auto","bottom","right","off"],Ut=["auto","all","nth"],qt=["auto","on","off"];function Qt({title:e,labels:t,onDisplay:n}){let[a,l]=(0,r.useState)(e??""),[o,s]=(0,r.useState)(e);return e!==o&&(s(e),l(e??"")),r.default.createElement("form",{className:"pk-inline-form",onSubmit:c=>{c.preventDefault(),n({title:a.trim()||null})}},r.default.createElement(W,{type:"text",value:a,onChange:l,onClear:()=>e?n({title:null}):void 0,clearLabel:t.clearText,placeholder:t.chartTitleNone,"aria-label":t.chartTitle,maxLength:200,"data-testid":"chart-title"}),r.default.createElement("button",{type:"submit",className:"pk-btn pk-primary",disabled:(a.trim()||null)===(e??null)},t.apply))}function Yt({view:e,plan:t,labels:n,onDisplay:a}){let l=e.chart,o=t?t.name:de(l),s=Pe.includes(o),c=ue[o].axis,u=s?Ft.slices:Ft.other,m=!s&&(l.valueLabels==="percent"||l.valueLabels==="both")?"value":l.valueLabels;return r.default.createElement(L,{title:n.chartDisplay,id:"chartDisplay"},r.default.createElement("div",{className:"pk-subtitle"},n.valueLabels),r.default.createElement("div",{className:"pk-choice-grid"},u.map(d=>r.default.createElement(x,{key:d,checked:m===d,onSelect:()=>a({valueLabels:d}),testId:`labels-${d}`},n.valueLabelNames[d]))),s?r.default.createElement(r.default.Fragment,null,r.default.createElement("div",{className:"pk-subtitle pk-setting-row"},r.default.createElement("span",null,n.labelPosition),r.default.createElement(H,{id:"labelPosition",name:n.labelPosition})),r.default.createElement("div",{className:"pk-choice-grid"},Kt.map(d=>r.default.createElement(x,{key:d,checked:(l.labelPosition??"outside")===d,disabled:l.valueLabels==="off",onSelect:()=>a({labelPosition:d}),testId:`label-position-${d}`},n.labelPositionNames[d])))):null,r.default.createElement("div",{className:"pk-subtitle"},n.legend),r.default.createElement("div",{className:"pk-choice-grid"},Xt.map(d=>r.default.createElement(x,{key:d,checked:l.legend===d,onSelect:()=>a({legend:d}),testId:`legend-${d}`},n.legendNames[d]))),r.default.createElement("div",{className:"pk-subtitle"},n.chartTitle),r.default.createElement(Qt,{title:l.title,labels:n,onDisplay:a}),c?r.default.createElement(r.default.Fragment,null,r.default.createElement("div",{className:"pk-subtitle"},n.axisLabels),r.default.createElement("div",{className:"pk-choice-grid"},Ut.map(d=>r.default.createElement(x,{key:d,checked:l.axisLabels===d,onSelect:()=>a({axisLabels:d}),testId:`axis-${d}`},n.axisLabelNames[d])))):null,c&&e.rows.length>=2?r.default.createElement(r.default.Fragment,null,r.default.createElement("div",{className:"pk-subtitle pk-setting-row"},r.default.createElement("span",null,n.groupLabels),r.default.createElement(H,{id:"groupLabels",name:n.groupLabels})),r.default.createElement("div",{className:"pk-choice-grid"},qt.map(d=>r.default.createElement(x,{key:d,checked:l.groupLabels===d,onSelect:()=>a({groupLabels:d}),testId:`groups-${d}`},n.groupLabelNames[d])))):null,o==="line"||o==="area"?r.default.createElement(ie,{checked:l.smooth,onChange:d=>a({smooth:d}),testId:"chart-smooth"},n.smoothLines):null)}function Dn({view:e,plan:t,labels:n,onChart:a,onDisplay:l,close:o}){return r.default.createElement(r.default.Fragment,null,r.default.createElement(L,{title:n.chartType,id:"chartType"},r.default.createElement("div",{className:"pk-choice-grid"},r.default.createElement(Ht,{view:e,plan:t,labels:n,onChart:a,close:o}))),r.default.createElement(Yt,{view:e,plan:t,labels:n,onDisplay:l}))}function en({labels:e,mod:t}){let n=a=>a==="Mod"?t==="\u2318"?"\u2318":e.keys.Mod:Object.hasOwn(e.keys,a)?e.keys[a]:a;return r.default.createElement("dl",{className:"pk-shortcuts","data-testid":"shortcuts"},gt.map(a=>r.default.createElement("div",{key:a.text,className:"pk-shortcut"},r.default.createElement("dt",null,a.keys.map((l,o)=>r.default.createElement(r.default.Fragment,{key:l},o?" + ":null,r.default.createElement("kbd",null,n(l))))),r.default.createElement("dd",null,e.shortcuts[a.text]))))}function ie({checked:e,onChange:t,testId:n,children:a,disabled:l,reason:o,info:s,name:c}){let u=(0,r.useId)();return r.default.createElement("div",{className:"pk-setting-row"},r.default.createElement("label",{className:`pk-switch${l?" pk-disabled":""}`},r.default.createElement("input",{type:"checkbox",checked:e,disabled:l,onChange:m=>t(m.target.checked),"aria-describedby":l&&o?u:void 0,"data-testid":n}),r.default.createElement("span",{className:"pk-switch-track","aria-hidden":"true"}),r.default.createElement("span",{className:"pk-switch-text"},a,l&&o?r.default.createElement("span",{id:u,className:"pk-option-hint","data-testid":n?`${n}-reason`:void 0},o):null)),s?r.default.createElement(H,{id:s,name:c??""}):null)}function In({view:e,labels:t,onTotal:n,onExpand:a,onCollapse:l,close:o,tips:s,mod:c,folding:u,help:m}){return r.default.createElement(r.default.Fragment,null,r.default.createElement(L,{title:t.totals,id:"totals"},mt.map(d=>{let v=ut(e,d);return r.default.createElement(ie,{key:d,checked:e.totals[d],onChange:y=>n(d,y),disabled:v!==null,reason:v?t[v]:null,info:d,name:t[d],testId:`total-${d}`},t[d])})),r.default.createElement(L,{title:t.zones.rows,id:"folding"},r.default.createElement(x,{icon:"chevronDown",onSelect:()=>{o(),a()},disabled:!u.canExpand,reason:u.why.expand?t[u.why.expand]:void 0,testId:"expand-all"},t.expandAll),r.default.createElement(x,{icon:"chevronRight",onSelect:()=>{o(),l()},disabled:!u.canCollapse,reason:u.why.collapse?t[u.why.collapse]:void 0,testId:"collapse-all"},t.collapseAll)),r.default.createElement(L,{title:t.help,id:"help"},s.controls?r.default.createElement(ie,{checked:s.on,onChange:s.onOn,testId:"show-tips"},t.showTips):null,m?.explanations?r.default.createElement(ie,{checked:m.explanations.on,onChange:m.explanations.set,testId:"show-explanations"},t.showSettingInfo):null,s.controls?r.default.createElement(x,{icon:"reset",onSelect:()=>s.onReset(),disabled:!s.canReset,testId:"reset-tips"},t.resetTips):null,r.default.createElement("details",{className:"pk-more"},r.default.createElement("summary",{className:"pk-more-title","data-testid":"shortcuts-title"},t.shortcutsTitle),r.default.createElement(en,{labels:t,mod:c}))))}function tn({labels:e,onSave:t}){let[n,a]=(0,r.useState)(""),l=(0,r.useRef)(null);return r.default.createElement("form",{className:"pk-inline-form",onSubmit:o=>{if(o.preventDefault(),n.trim()){let s=t(n.trim());a(""),l.current?.focus({preventScroll:!0}),Promise.resolve(s).then(()=>requestAnimationFrame(()=>{let c=l.current,u=c?We(c):null;c&&c.isConnected&&u!==c&&!(u instanceof HTMLInputElement||u instanceof HTMLTextAreaElement)&&c.focus({preventScroll:!0})}))}}},r.default.createElement(W,{type:"text",value:n,onChange:a,clearLabel:e.clearText,placeholder:e.viewName,"aria-label":e.viewName,maxLength:120,"data-testid":"saved-view-name",inputRef:l}),r.default.createElement("button",{type:"submit",className:"pk-btn pk-primary",disabled:!n.trim()},e.save))}function nn({check:e,labels:t,onCancel:n,close:a,title:l,quiet:o=!1}){let s=(0,r.useId)(),c=(0,r.useRef)(null);return(0,r.useEffect)(()=>{o||c.current?.focus({preventScroll:!0})},[o]),r.default.createElement("div",{className:"pk-load-check",role:"group","aria-labelledby":s,"data-testid":"load-check"},r.default.createElement("p",{id:s,className:"pk-load-check-title"},r.default.createElement(Z,{name:"info",size:16}),r.default.createElement("span",null,l??t.loadCheckTitle)),r.default.createElement("ul",{className:"pk-load-check-lines"},e.lines.map((u,m)=>r.default.createElement("li",{key:m},u))),r.default.createElement("div",{className:"pk-load-check-actions"},e.switchTo?r.default.createElement("button",{ref:c,type:"button",className:"pk-btn pk-primary","data-autofocus":"","data-testid":"load-switch",onClick:()=>{a(),e.switchTo?.run()}},T(t.switchAndLoad,{source:e.switchTo.name})):null,r.default.createElement("button",{ref:e.switchTo?void 0:c,type:"button",className:e.switchTo?"pk-btn":"pk-btn pk-primary","data-autofocus":e.switchTo?void 0:"","data-testid":"load-anyway",onClick:()=>{a(),e.load()}},t.loadAnyway),r.default.createElement("button",{type:"button",className:"pk-btn","data-testid":"load-cancel",onClick:n},t.cancel)),e.switchTo?r.default.createElement("p",{className:"pk-hint"},t.switchStartsFresh):null)}function an({labels:e,onLoadText:t,close:n}){let[a,l]=(0,r.useState)(""),[o,s]=(0,r.useState)(null),[c,u]=(0,r.useState)(null),[m,d]=(0,r.useState)(!1),v=(0,r.useRef)(null),y=(0,r.useRef)(null),k=(0,r.useId)();(0,r.useEffect)(()=>{c||y.current?.focus({preventScroll:!0})},[c]);let p=async b=>{d(!0);let h=await t(b);d(!1),typeof h=="string"?s(h):h?u(h):n()};return c?r.default.createElement(nn,{check:c,labels:e,onCancel:()=>u(null),close:n}):r.default.createElement("form",{className:"pk-inline-form pk-load-view",onSubmit:b=>{b.preventDefault(),p(a)}},r.default.createElement("p",{className:"pk-hint"},e.loadViewHint),r.default.createElement(W,{multiline:!0,value:a,onChange:b=>{l(b),s(null)},clearLabel:e.clearText,"aria-label":e.loadViewText,placeholder:e.loadViewText,rows:4,spellCheck:!1,"aria-invalid":o?!0:void 0,"aria-describedby":o?k:void 0,"data-testid":"load-view-text",inputRef:y}),o?r.default.createElement("p",{id:k,className:"pk-form-problem",role:"alert","data-testid":"load-view-problem"},o):null,r.default.createElement("input",{ref:v,type:"file",accept:"application/json,.json",className:"pk-sr",tabIndex:-1,"aria-hidden":"true","data-testid":"load-view-file",onChange:async b=>{let h=b.target.files?.[0];if(b.target.value="",h){let f;try{f=h.size>U.text?null:await h.text()}catch{f=null}f===null?s(h.size>U.text?e.viewFailed.tooLarge:e.viewFailed.file):p(f)}}}),r.default.createElement("button",{type:"button",className:"pk-btn",onClick:()=>v.current?.click(),disabled:m,"data-testid":"load-view-choose"},r.default.createElement(Z,{name:"file"}),r.default.createElement("span",{className:"pk-btn-text"},e.chooseFile)),r.default.createElement("button",{type:"submit",className:"pk-btn pk-primary",disabled:m||!a.trim(),"data-testid":"load-view-apply"},e.load))}function on({labels:e,share:t,close:n}){let[a,l]=(0,r.useState)(!1);return a?r.default.createElement(L,{title:e.loadView.replace(/…$/,"")},r.default.createElement(an,{labels:e,onLoadText:t.loadText,close:n})):r.default.createElement(L,{title:e.share,id:"share"},t.canLink?r.default.createElement(x,{icon:"link",onSelect:()=>{n(),t.copyLink()},testId:"copy-link"},e.copyLink):null,r.default.createElement(x,{icon:"copy",onSelect:()=>{n(),t.copyJson()},testId:"copy-json"},e.copyJson),r.default.createElement(x,{icon:"download",onSelect:()=>{n(),t.download()},testId:"download-view"},e.downloadView),r.default.createElement(x,{icon:"upload",onSelect:()=>l(!0),testId:"load-view"},e.loadView),r.default.createElement("p",{className:"pk-hint pk-menu-hint","data-testid":"share-privacy"},e.sharePrivacy))}function rn(e,t){let n=(l,o,s,c,u)=>Promise.resolve().then(l).then(()=>(e.announce(T(o,{name:u})),!0),m=>(e.announce(Be(s,c,m),{tone:"error"}),!1)),a=l=>_t(e.viewsText,l,t,e.locale,e.keep);return{save:e.onSave||e.store?l=>n(()=>e.onSave?e.onSave(l,e.view,{scope:"user"}):a({name:l,view:e.view,sourceId:e.sourceId}),t.toastSaved,t.toastSaveFailed,t.toastSaveRejected,l).then(o=>o&&e.onSaved()):null,remove:e.onDelete||e.store?l=>n(()=>l.at!==void 0?a({remove:l.at,removeName:l.name}):e.onDelete(l.name,{scope:l.scope}),t.toastDeleted,t.toastDeleteFailed,t.toastDeleteRejected,l.name):null,publish:e.onPublish?l=>n(()=>e.onPublish(l.name,e.normalized(l.view)),t.toastPublished,t.toastPublishFailed,t.toastPublishRejected,l.name):null}}function Pn({templates:e,labels:t,onLoad:n,actions:a,close:l,share:o}){let{save:s,remove:c,publish:u}=rn(a,t),m=a.store&&!a.onSave,[d,v]=(0,r.useState)(null),[y,k]=(0,r.useState)(!1),p=(0,r.useRef)(null),[b,h]=(0,r.useState)(null);(0,r.useEffect)(()=>{o?.prepare?.()},[o]),(0,r.useEffect)(()=>{if(b&&p.current){let C=[...p.current.querySelectorAll("[data-pk-entry]")];(C.find(V=>V.getAttribute("data-pk-entry")===b.key)??C[Math.min(b.place,C.length-1)]??p.current).querySelector("[data-pk-option]")?.focus({preventScroll:!0}),h(null)}},[b,e]);let f=C=>`${C.scope}:${C.at??""}:${C.name}`;(0,r.useEffect)(()=>{d&&p.current?.querySelector(".pk-confirm [data-autofocus]")?.focus({preventScroll:!0})},[d]);let F=C=>{v(null);let $=p.current?[...p.current.querySelectorAll("[data-pk-entry], .pk-confirm")]:[];h({key:f(C),place:Math.max(0,$.findIndex(V=>V.classList.contains("pk-confirm")))})},I=(C,$)=>{if(d&&d.at===$){let J=d.kind,R=J==="publish",N=T(R?t.publishConfirm:t.deleteConfirm,{name:C.name});return r.default.createElement("div",{key:`${$}:${C.name}`,className:"pk-template pk-confirm",role:"group","aria-label":N},r.default.createElement("span",{className:"pk-confirm-text"},N),r.default.createElement("button",{type:"button",className:R?"pk-btn pk-primary":"pk-btn pk-danger-btn",disabled:y,"data-autofocus":"","data-testid":`confirm-${J}`,onClick:async()=>{k(!0);let O=await(R?u:c)?.(C);k(!1),O&&F(C)}},R?t.publishAction:t.deleteAction),r.default.createElement("button",{type:"button",className:"pk-btn",disabled:y,onClick:()=>F(C)},t.cancel))}let V=(J,R,N)=>r.default.createElement("button",{type:"button",className:"pk-icon-btn",onClick:()=>v({at:$,kind:J}),"aria-label":N,title:N,"data-testid":`${J}-view-${C.name}`},r.default.createElement(Z,{name:R}));return r.default.createElement("div",{key:`${$}:${C.name}`,className:"pk-template","data-pk-entry":f(C)},r.default.createElement(x,{icon:"bookmark",onSelect:()=>{l(),n(C)},testId:`saved-view-${C.name}`},C.name),u&&C.scope==="user"?V("publish","upload",T(t.publishView,{name:C.name})):null,c&&C.deletable?V("delete","trash",T(t.deleteView,{name:C.name})):C.scope==="shared"&&A?r.default.createElement(H,{id:"sharedView",name:C.name}):null)},A=!!u||e.some(C=>C.scope==="shared"&&C.deletable),P=C=>e.map(($,V)=>$.scope===C?I($,V):null).filter(Boolean),B=P("shared"),g=P("user");return r.default.createElement("div",{ref:p,className:"pk-views"},B.length?r.default.createElement(L,{title:t.sharedViews,id:"sharedViews"},B):null,g.length||s||!B.length?r.default.createElement(L,{title:t.myViews,id:"myViews"},g.length||s?g:r.default.createElement("p",{className:"pk-hint"},t.noViews),s?r.default.createElement(r.default.Fragment,null,r.default.createElement("div",{className:"pk-subtitle"},t.saveView),r.default.createElement(tn,{labels:t,onSave:s})):null,m?r.default.createElement("p",{className:"pk-hint pk-menu-hint","data-testid":"store-note"},t.storeNote):null):null,o?r.default.createElement(on,{labels:t,share:o,close:l}):null)}function M({icon:e,text:t,info:n,onSelect:a,testId:l,disabled:o,reason:s}){let c=r.default.createElement(x,{icon:e,onSelect:a,disabled:o,reason:s,testId:l},t);return n?r.default.createElement("div",{className:"pk-setting-row"},c,r.default.createElement(H,{id:n,name:t})):c}function $n({labels:e,onExport:t,chartReady:n,display:a,prepare:l,close:o}){(0,r.useEffect)(()=>{l()},[l]);let s=c=>()=>{o(),t(c)};return r.default.createElement(r.default.Fragment,null,r.default.createElement(L,{title:e.exportDownload,id:"exportDownload"},r.default.createElement(M,{icon:"file",text:e.exportXlsx,info:"exportXlsx",onSelect:s("xlsx"),testId:"export-xlsx"}),r.default.createElement(M,{icon:"file",text:e.exportCsv,info:"exportCsv",onSelect:s("csv"),testId:"export-csv"}),r.default.createElement(M,{icon:"image",text:e.exportPng,disabled:!n,reason:a!=="chart"?e.exportPngNeedsChart:void 0,onSelect:s("png"),testId:"export-png"})),r.default.createElement(L,{title:e.exportCopy,id:"exportCopy"},r.default.createElement(M,{icon:"copy",text:e.copyTable,info:"copyTable",onSelect:s("copy-table"),testId:"export-copy-table"}),r.default.createElement(M,{icon:"copy",text:e.copyDataJson,info:"copyDataJson",onSelect:s("copy-json"),testId:"export-copy-json"})))}var ln=300,q=e=>JSON.stringify(e);function sn({view:e,base:t,field:n,encoded:a,locale:l,labels:o,commit:s,close:c}){let u=t??e,m=(0,w.useMemo)(()=>Le(a,n,{view:u,locale:l,labels:o.core}),[a,n,u,l,o]),d=(0,w.useMemo)(()=>m?m.items.map(N=>N.value):[],[m]),[v,y]=(0,w.useState)(()=>new Set(ot(u,n,d).map(q))),[k,p]=(0,w.useState)(""),b=Y(u,n,["label"])[0],[h,f]=(0,w.useState)(b?.op??""),[F,I]=(0,w.useState)(b?.value??"");if(!m)return null;let A=k.trim().toLocaleLowerCase(),P=A?m.items.filter(N=>N.label.toLocaleLowerCase().includes(A)):m.items,B=P.slice(0,ln),g=N=>{let O=new Set(v);for(let j of P)N?O.add(q(j.value)):O.delete(q(j.value));y(O)},C=N=>{let O=new Set(v),j=q(N);O.has(j)?O.delete(j):O.add(j),y(O)},$=X(n,o.core),V=()=>{let N=at(u,n,d.filter(O=>v.has(q(O))),d);N=we(N,n,h?{op:h,value:F}:null),c(),s(N,{step:"filter",field:$})},J=!t&&be(u,n),R=dt(a,u,n)??(b?"text":null);return w.default.createElement("form",{className:"pk-filter",onSubmit:N=>{N.preventDefault(),V()}},w.default.createElement("div",{className:"pk-popover-head"},w.default.createElement("h3",null,T(o.filterTitle,{field:$})),w.default.createElement("span",{className:"pk-muted"},T(o.selected,{count:v.size.toLocaleString(l)}))),J?w.default.createElement("button",{type:"button",className:"pk-btn pk-remove-filter",onClick:()=>{c(),s(ye(u,n),{step:"filter",field:$})},"data-testid":"filter-remove"},w.default.createElement(Z,{name:"x"}),w.default.createElement("span",{className:"pk-btn-text"},o.removeFilter)):null,w.default.createElement("label",{className:"pk-search"},w.default.createElement(Z,{name:"search"}),w.default.createElement("span",{className:"pk-sr"},o.searchValues),w.default.createElement(W,{type:"search",value:k,placeholder:o.searchValues,onChange:p,clearLabel:o.clearText,"data-autofocus":"","data-testid":"filter-search"})),w.default.createElement("div",{className:"pk-filter-actions"},w.default.createElement("button",{type:"button",className:"pk-link",onClick:()=>g(!0)},o.selectAll),w.default.createElement("button",{type:"button",className:"pk-link",onClick:()=>g(!1)},o.selectNone)),w.default.createElement("div",{className:"pk-filter-body"},w.default.createElement("ul",{className:"pk-values",role:"list"},B.map(N=>{let O=q(N.value);return w.default.createElement("li",{key:O,className:"pk-value"},w.default.createElement("label",null,w.default.createElement("input",{type:"checkbox",checked:v.has(O),onChange:()=>C(N.value)}),w.default.createElement("span",{className:"pk-value-label"},N.label),w.default.createElement("span",{className:"pk-count"},N.count.toLocaleString(l))),w.default.createElement("button",{type:"button",className:"pk-link pk-only",onClick:()=>y(new Set([O])),"aria-label":`${o.onlyThis}: ${N.label}`},o.onlyThis))})),P.length>B.length?w.default.createElement("p",{className:"pk-hint"},T(o.valuesShown,{shown:B.length,total:P.length.toLocaleString(l)})):null,R?w.default.createElement("fieldset",{className:"pk-condition"},w.default.createElement("legend",null,R==="number"?o.conditionNumber:o.condition),w.default.createElement("select",{value:h,onChange:N=>f(N.target.value),"aria-label":R==="number"?o.conditionNumber:o.condition},w.default.createElement("option",{value:""},o.conditionNone),z.labelOps.map(N=>w.default.createElement("option",{key:N,value:N},o.labelOps[N]??N))),h?w.default.createElement(W,{type:"text",value:F,onChange:I,onClear:()=>{!t&&Y(u,n,["label"]).length&&s(we(u,n,null),{step:"filter",field:$})},clearLabel:o.clearText,"aria-label":o.conditionValue,placeholder:o.conditionValue,maxLength:1e3,"data-testid":"filter-condition-text"}):null):null),w.default.createElement("div",{className:"pk-popover-foot"},w.default.createElement("button",{type:"button",className:"pk-btn",onClick:c},o.cancel),w.default.createElement("button",{type:"submit",className:"pk-btn pk-primary","data-testid":"filter-apply"},o.apply)))}function Vn({target:e,onClose:t,view:n,encoded:a,locale:l,labels:o,commit:s}){let c=(0,w.useMemo)(()=>({current:e?e.anchor:null}),[e]);return w.default.createElement(He,{open:!!e,anchor:c,onClose:t,label:e?T(o.filterTitle,{field:X(e.field,o.core)}):"",className:"pk-filter-popover",fill:!0},e?w.default.createElement(sn,{key:e.field,view:n,base:e.base,field:e.field,encoded:a,locale:l,labels:o,commit:s,close:t}):null)}var It="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",Ce=null,Se=null;function Fe(){return Se??=import("./export-7NQ77OOT.js").then(e=>(Ce=e,e),e=>{throw Se=null,e}),Se}var cn=()=>Ce,mn=()=>{Fe().catch(()=>{})};function xe(e,{doc:t,onExport:n,...a}){return n?.({...a,blob:e})===!1?!1:(ht(e,a.fileName,t),!0)}async function Pt(e,{type:t,container:n,onExport:a,...l}){return a?.({...l,blob:new Blob([e],{type:t}),text:e})===!1?"kept":await ft(e,n)?"copied":"blocked"}async function zn(e,{fileName:t,result:n,locale:a,labels:l,limits:o,root:s,chartRef:c,announce:u,onExport:m}){l=kt(l);let d=Ne(t),v=s.current?.ownerDocument;try{if(e==="png"){let h=s.current?getComputedStyle(s.current).getPropertyValue("--pk-surface").trim():"",f=c.current?.getDataURL({type:"png",pixelRatio:2,backgroundColor:h||void 0}),F=`${d}.png`;f&&xe(pt(f),{kind:e,fileName:F,doc:v,onExport:m})&&u(T(l.toastExported,{file:F}));return}if(!n)return;let y=Ce??await Fe(),k=Oe(n,{locale:a,labels:l.core,limits:o});if(e==="copy-table"||e==="copy-json"){let h=e==="copy-json",f=await Pt(h?y.toJson(k):y.toTsv(k),{kind:e,fileName:`${d}.${h?"json":"tsv"}`,type:h?"application/json":"text/tab-separated-values",container:s.current,onExport:m});f!=="kept"&&u(f==="copied"?h?l.toastDataCopied:l.toastTableCopied:l.toastCopyBlocked,f==="copied"?void 0:{tone:"error"});return}let p=`${d}.${e}`,b=e==="xlsx"?y.toXlsx(k,{sheetName:d}):y.toCsvBytes(k,{bom:!0});xe(new Blob([b],{type:e==="xlsx"?It:"text/csv;charset=utf-8"}),{kind:e,fileName:p,doc:v,onExport:m})&&u(T(l.toastExported,{file:p}))}catch(y){u(T(l.toastExportFailed,{message:pe(y)}),{tone:"error"})}}function un({shown:e,count:t},n,a){return e<t?T(n.drillPart,{shown:e.toLocaleString(a),count:t.toLocaleString(a)}):he(n.drillCount,t,{lang:n.lang,locale:a})}async function dn(e,{drill:t,encoded:n,labels:a,onExport:l,announce:o,root:s}){let{locale:c}=t,u={shown:t.rows.length,count:t.count},m=un(u,a,c),d=Ne(t.name);try{let v=cn()??await Fe();if(e==="drill-copy"||e==="drill-json"){let F=e==="drill-json",I=F?JSON.stringify(Array.from(t.indices,P=>Me(n,P)),null,2):v.toTsv([t.columns.map(P=>P.label??P.name),...t.rows]),A=await Pt(I,{kind:e,fileName:`${d}.${F?"json":"tsv"}`,type:F?"application/json":"text/tab-separated-values",container:s,onExport:l,rows:u});A!=="kept"&&o(A==="copied"?T(F?a.drillCopiedJson:a.drillCopied,{rows:m}):a.toastCopyBlocked,A==="copied"?void 0:{tone:"error"});return}let y=e==="drill-xlsx",k=Object.fromEntries(t.columns.map(F=>[F.name,F.label??F.name])),p={locale:c,formats:t.formats,labels:{fields:k,true:a.core.true,false:a.core.false}},b=`${d}.${y?"xlsx":"csv"}`,h=y?v.rowsToXlsx(n,t.indices,{...p,sheetName:t.name}):v.rowsToCsvBytes(n,t.indices,p),f=new Blob([h],{type:y?It:"text/csv;charset=utf-8"});xe(f,{kind:e,fileName:b,doc:s?.ownerDocument,onExport:l,rows:u})&&o(T(a.drillExported,{file:b,rows:m}))}catch(v){o(T(a.toastExportFailed,{message:pe(v)}),{tone:"error"})}}function Jn({drill:e,onClose:t,labels:n,locale:a,exportContext:l}){let o=(0,E.useId)(),s=(0,E.useRef)(null),[c,u]=(0,E.useState)(!1),m=(0,E.useContext)(_e).size==="narrow",{onKeyDown:d}=Ge(s,!!e,c?()=>u(!1):t);if((0,E.useEffect)(()=>{e&&l&&mn()},[e,l]),!e)return null;let v=e.count.toLocaleString(a),y=e.rows.length<e.count,k=(p,b)=>()=>{b(),l&&dn(p,{drill:e,labels:n,...l,root:l.root.current})};return E.default.createElement(E.default.Fragment,null,E.default.createElement("div",{className:"pk-scrim pk-drill-scrim",onClick:t,"aria-hidden":"true"}),E.default.createElement("div",{className:`pk-drill${c&&!m?" pk-drill-big":""}`,role:"dialog","aria-modal":"true","aria-labelledby":o,"data-testid":"drill-panel","data-pk-enlarged":c&&!m?"":void 0,ref:s,tabIndex:-1,onKeyDown:p=>{p.target instanceof Node&&s.current?.contains(p.target)&&d(p)}},E.default.createElement("div",{className:"pk-drill-head"},E.default.createElement("div",{className:"pk-drill-heading"},E.default.createElement("h2",{id:o},n.drillTitle),E.default.createElement("p",{className:"pk-drill-path"},e.title),E.default.createElement("p",{className:"pk-muted","data-testid":"drill-count"},y?T(n.drillShown,{shown:e.rows.length.toLocaleString(a),count:v}):he(n.drillCount,e.count,{lang:n.lang,locale:a}))),E.default.createElement("div",{className:"pk-drill-actions"},l?E.default.createElement(Ke,{label:n.exportLabel,icon:"download",text:n.exportLabel,role:"dialog",align:"end",testId:"drill-export",className:"pk-btn pk-small-btn"},p=>E.default.createElement(E.default.Fragment,null,y?E.default.createElement("p",{className:"pk-hint pk-menu-hint","data-testid":"drill-export-note"},T(n.drillExportNote,{shown:e.rows.length.toLocaleString(a),count:v})):null,E.default.createElement(L,{title:n.exportCopy,id:"exportCopy"},E.default.createElement(M,{icon:"copy",text:n.drillCopy,info:"drillCopy",onSelect:k("drill-copy",p),testId:"drill-copy"}),E.default.createElement(M,{icon:"copy",text:n.drillJson,info:"drillJson",onSelect:k("drill-json",p),testId:"drill-json"})),E.default.createElement(L,{title:n.exportDownload,id:"exportDownload"},E.default.createElement(M,{icon:"file",text:n.drillCsv,onSelect:k("drill-csv",p),testId:"drill-csv"}),E.default.createElement(M,{icon:"file",text:n.drillXlsx,onSelect:k("drill-xlsx",p),testId:"drill-xlsx"})))):null,m?null:E.default.createElement("button",{type:"button",className:"pk-btn pk-pressable pk-small-btn","data-pk-on":c?"":void 0,onClick:()=>u(p=>!p),"data-testid":"drill-enlarge"},E.default.createElement(Z,{name:"enlarge",size:14}),E.default.createElement("span",{className:"pk-btn-text"},c?n.reduce:n.enlarge)),E.default.createElement("button",{type:"button",className:"pk-icon-btn",onClick:t,"data-autofocus":"","aria-label":n.close,title:n.close},E.default.createElement(Z,{name:"x"})))),E.default.createElement("div",{className:"pk-drill-body",tabIndex:0,"aria-label":e.title},E.default.createElement("table",{className:"pk-drill-table"},E.default.createElement("thead",null,E.default.createElement("tr",null,e.columns.map(p=>E.default.createElement("th",{key:p.name,scope:"col",className:p.numeric?"pk-num":void 0,title:p.description,"aria-description":p.description},p.label??p.name)))),E.default.createElement("tbody",null,e.rows.map((p,b)=>E.default.createElement("tr",{key:b},e.columns.map((h,f)=>E.default.createElement("td",{key:h.name,className:h.numeric?"pk-num":void 0},h.numeric||p[f].length<24?p[f]:E.default.createElement("div",{className:"pk-drill-text"},p[f]))))))))))}export{Cn as AxisMenu,Dn as ChartTypePanel,Jn as DrillPanel,$n as ExportPanel,Vn as FilterPopover,nn as LoadCheck,In as OptionsPanel,Fn as ValueMenu,Pn as ViewsPanel,kt as menuLabels,mn as prepareExporters,zn as runExport,On as storedViews};
|