pivotkit-element 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +34 -2
- package/README.md +1 -0
- package/dist/chunks/{chunk-SB3L4HHW.js → chunk-7V4PAOK7.js} +1 -1
- package/dist/chunks/chunk-CHSIHYYE.js +2 -0
- package/dist/chunks/chunk-CXSW4YRL.js +13 -0
- package/dist/chunks/chunk-HFUBAP3D.js +1 -0
- package/dist/chunks/chunk-KO3EKDH5.js +1 -0
- package/dist/chunks/chunk-NXZQI5LC.js +6 -0
- package/dist/chunks/{chunk-XETFD6GR.js → chunk-OHKPNELV.js} +1 -1
- package/dist/chunks/chunk-R6GXMVRO.js +1 -0
- package/dist/chunks/chunk-YMLEL3SK.js +8 -0
- package/dist/chunks/export-O6XO33DV.js +1 -0
- package/dist/chunks/import-ui-SZTWEYHK.js +1 -0
- package/dist/chunks/{link-45LOEA7H.js → link-7K6I4SJS.js} +1 -1
- package/dist/chunks/menu-texts-de-CRJ5OIVT.js +1 -0
- package/dist/chunks/menus-F36OYGXV.js +2 -0
- package/dist/chunks/{report-run-BZBFOMPF-4M6ACMUF.js → report-run-BZBFOMPF-T26ENZEM.js} +7 -7
- package/dist/element.js +1 -1
- package/dist/import-worker.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +4 -4
- package/types/element.d.ts +23 -2
- package/types/jsx.d.ts +1 -1
- package/dist/chunks/chunk-4PHDW2LB.js +0 -1
- package/dist/chunks/chunk-65O4Z5GI.js +0 -1
- package/dist/chunks/chunk-CCL5TDLA.js +0 -6
- package/dist/chunks/chunk-PJA6QZ4Y.js +0 -2
- package/dist/chunks/chunk-QOKB5RDG.js +0 -6
- package/dist/chunks/chunk-YUY4D5MF.js +0 -8
- package/dist/chunks/export-YHS47KGK.js +0 -1
- package/dist/chunks/import-ui-7XVUBL2H.js +0 -1
- package/dist/chunks/menu-texts-de-74DWTJDI.js +0 -1
- package/dist/chunks/menus-XBN5D32E.js +0 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as Ze}from"./chunk-R6GXMVRO.js";import{A as je,B as Ve,a as Ue,b as pt,d as le,i as Fe,j as ie,o as ce,p as ue,q as de,t as me,u as pe,v as $,y as x,z as O}from"./chunk-YMLEL3SK.js";import"./chunk-HFUBAP3D.js";import{b as We}from"./chunk-OHKPNELV.js";import"./chunk-CHSIHYYE.js";import"./chunk-KO3EKDH5.js";import{a as z,c as he,d as fe,f as U,k as ye}from"./chunk-WKVC2RPA.js";import{a as _,i as Be}from"./chunk-XR4CMFGN.js";import"./chunk-5QXN3X2Q.js";import{c as se}from"./chunk-DCANE7XH.js";var Ge={dataSource:"Data source",hostData:"The report's data",rows:{one:"{count} row",other:"{count} rows"},columns:{one:"{count} column",other:"{count} columns"},fromFile:"From a file, only in this browser",load:"Load",loadFile:"Load data\u2026",backToOriginal:"Back to original data",backHint:"Undo brings the file back",dropHint:"or drop a file onto the report",formats:"Reads {formats}",formatNames:{csv:"CSV or text",json:"JSON",xlsx:"Excel workbook"},dropTitle:"Drop the file to load it",dropOne:"Drop one file at a time.",reading:"Reading {name}\u2026",phases:{read:"Reading the file",unpack:"Unpacking the workbook",parse:"Reading the rows",type:"Checking the columns"},cancel:"Cancel",previewTitle:"Load {name}",sheet:"Sheet",hiddenSheet:"{name} (hidden)",firstRows:"The first rows",someColumns:"The first {shown} of {count} columns are shown; the others keep the type found.",typeOf:"Type of {column}",types:{string:"Text",number:"Number",date:"Date",boolean:"Yes/No"},yes:"Yes",no:"No",noRows:"The file holds no rows.",notesTitle:{one:"{count} note",other:"{count} notes"},apply:"Load data",loaded:"{name} loaded: {rows}, {columns}",stepLoaded:"{name} loaded",originalShown:"The original data is shown",failed:"{name} could not be loaded: {message}",refused:"{name} was not loaded: {message}",overLimit:"it has more than {max} {what} ({key}): load a smaller extract of it, or a host can raise this limit",limitWhat:{rows:"rows",columns:"columns",fileBytes:"bytes",importCells:"values (rows x columns)",archiveEntries:"parts in its ZIP directory",unpackedBytes:"bytes unpacked"},sourceLine:"{name}, only in this browser",sourceSheet:"{name}, sheet \u201C{sheet}\u201D, only in this browser",sheetMissing:"\u201C{name}\u201D was made for the sheet \u201C{sheet}\u201D, which {file} does not have.",sheetRefused:"\u201C{name}\u201D was not opened: the sheet \u201C{sheet}\u201D was not loaded.",notes:{ENCODING:"Read as {encoding}.",SEPARATOR:"Values separated by {name}.",LINES_SKIPPED:{one:"{count} line above the column names was skipped (a title block).",other:"{count} lines above the column names were skipped (a title block)."},COLUMN_RENAMED:"Column \u201C{from}\u201D is named \u201C{to}\u201D.",COLUMN_UNNAMED:"Column {position} has no name; it is named \u201C{to}\u201D.",COLUMNS_RENAMED_MORE:{one:"{count} more column was renamed.",other:"{count} more columns were renamed."},COLUMN_DROPPED:"Column {position} has no name and no values and was left out.",COLUMNS_ADDED:{one:"{count} row has more values than there are column names; the extra values are in columns named \u201CColumn \u2026\u201D.",other:"{count} rows have more values than there are column names; the extra values are in columns named \u201CColumn \u2026\u201D."},ROWS_EMPTY:{one:"{count} empty row was left out.",other:"{count} empty rows were left out."},TEXT_CUT:{one:"{count} value longer than {max} characters was cut.",other:"{count} values longer than {max} characters were cut."},CHARACTERS_REMOVED:{one:"Control or text direction characters were removed from {count} value.",other:"Control or text direction characters were removed from {count} values."},DATE_ORDER:"Dates in \u201C{column}\u201D were read as {order}; the values fit both.",VALUES_NOT_CONVERTED:{one:"{count} value in \u201C{column}\u201D cannot be read as {type} and is empty.",other:"{count} values in \u201C{column}\u201D cannot be read as {type} and are empty."},JSON_PROPERTY:"The rows were read from \u201C{property}\u201D.",JSON_FLATTENED:"Nested values became columns named with a dot (\u201C{example}\u201D).",SHEET:"Read the sheet \u201C{sheet}\u201D.",SHEETS:"Read the sheet \u201C{sheet}\u201D of {count} sheets.",USED_RANGE:"The sheet's used range reaches row {usedRow}; the values end at row {lastRow}, the empty rows below were skipped.",ERROR_CELLS:{one:"{count} cell holds an Excel error (such as #N/A) and is empty.",other:"{count} cells hold an Excel error (such as #N/A) and are empty."}},dateOrders:{dmy:"day/month/year",mdy:"month/day/year"}},ht={dataSource:"Datenquelle",hostData:"Die Daten des Berichts",rows:{one:"{count} Zeile",other:"{count} Zeilen"},columns:{one:"{count} Spalte",other:"{count} Spalten"},fromFile:"Aus einer Datei, nur in diesem Browser",load:"Laden",loadFile:"Daten laden\u2026",backToOriginal:"Zur\xFCck zu den Originaldaten",backHint:"R\xFCckg\xE4ngig holt die Datei zur\xFCck",dropHint:"oder eine Datei auf den Bericht ziehen",formats:"Liest {formats}",formatNames:{csv:"CSV oder Text",json:"JSON",xlsx:"Excel-Arbeitsmappe"},dropTitle:"Loslassen, um die Datei zu laden",dropOne:"Bitte nur eine Datei auf einmal ziehen.",reading:"{name} wird gelesen\u2026",phases:{read:"Datei wird gelesen",unpack:"Arbeitsmappe wird entpackt",parse:"Zeilen werden gelesen",type:"Spalten werden gepr\xFCft"},cancel:"Abbrechen",previewTitle:"{name} laden",sheet:"Blatt",hiddenSheet:"{name} (ausgeblendet)",firstRows:"Die ersten Zeilen",someColumns:"Die ersten {shown} von {count} Spalten werden gezeigt; die anderen behalten den erkannten Typ.",typeOf:"Typ von {column}",types:{string:"Text",number:"Zahl",date:"Datum",boolean:"Ja/Nein"},yes:"Ja",no:"Nein",noRows:"Die Datei enth\xE4lt keine Zeilen.",notesTitle:{one:"{count} Hinweis",other:"{count} Hinweise"},apply:"Daten laden",loaded:"{name} geladen: {rows}, {columns}",stepLoaded:"{name} geladen",originalShown:"Die Originaldaten werden gezeigt",failed:"{name} konnte nicht geladen werden: {message}",refused:"{name} wurde nicht geladen: {message}",overLimit:"sie hat mehr als {max} {what} ({key}): eine kleinere Auswahl daraus laden, oder eine Anwendung kann diese Grenze anheben",limitWhat:{rows:"Zeilen",columns:"Spalten",fileBytes:"Bytes",importCells:"Werte (Zeilen x Spalten)",archiveEntries:"Teile in ihrem ZIP-Verzeichnis",unpackedBytes:"entpackte Bytes"},sourceLine:"{name}, nur in diesem Browser",sourceSheet:"{name}, Blatt \u201E{sheet}\u201C, nur in diesem Browser",sheetMissing:"\u201E{name}\u201C wurde f\xFCr das Blatt \u201E{sheet}\u201C gemacht, das {file} nicht hat.",sheetRefused:"\u201E{name}\u201C wurde nicht ge\xF6ffnet: das Blatt \u201E{sheet}\u201C wurde nicht geladen.",notes:{ENCODING:"Gelesen als {encoding}.",SEPARATOR:"Werte getrennt durch {name}.",LINES_SKIPPED:{one:"{count} Zeile \xFCber den Spaltennamen wurde \xFCbersprungen (ein Titelblock).",other:"{count} Zeilen \xFCber den Spaltennamen wurden \xFCbersprungen (ein Titelblock)."},COLUMN_RENAMED:"Die Spalte \u201E{from}\u201C hei\xDFt jetzt \u201E{to}\u201C.",COLUMN_UNNAMED:"Spalte {position} hat keinen Namen; sie hei\xDFt jetzt \u201E{to}\u201C.",COLUMNS_RENAMED_MORE:{one:"{count} weitere Spalte wurde umbenannt.",other:"{count} weitere Spalten wurden umbenannt."},COLUMN_DROPPED:"Spalte {position} hat weder Namen noch Werte und wurde weggelassen.",COLUMNS_ADDED:{one:"{count} Zeile hat mehr Werte als Spaltennamen; die zus\xE4tzlichen Werte stehen in Spalten namens \u201EColumn \u2026\u201C.",other:"{count} Zeilen haben mehr Werte als Spaltennamen; die zus\xE4tzlichen Werte stehen in Spalten namens \u201EColumn \u2026\u201C."},ROWS_EMPTY:{one:"{count} leere Zeile wurde weggelassen.",other:"{count} leere Zeilen wurden weggelassen."},TEXT_CUT:{one:"{count} Wert mit mehr als {max} Zeichen wurde gek\xFCrzt.",other:"{count} Werte mit mehr als {max} Zeichen wurden gek\xFCrzt."},CHARACTERS_REMOVED:{one:"Aus {count} Wert wurden Steuer- oder Richtungszeichen entfernt.",other:"Aus {count} Werten wurden Steuer- oder Richtungszeichen entfernt."},DATE_ORDER:"Datumswerte in \u201E{column}\u201C wurden als {order} gelesen; die Werte passen zu beidem.",VALUES_NOT_CONVERTED:{one:"{count} Wert in \u201E{column}\u201C l\xE4sst sich nicht als {type} lesen und bleibt leer.",other:"{count} Werte in \u201E{column}\u201C lassen sich nicht als {type} lesen und bleiben leer."},JSON_PROPERTY:"Die Zeilen wurden aus \u201E{property}\u201C gelesen.",JSON_FLATTENED:"Verschachtelte Werte wurden zu Spalten mit Punkt im Namen (\u201E{example}\u201C).",SHEET:"Gelesen wurde das Blatt \u201E{sheet}\u201C.",SHEETS:"Gelesen wurde das Blatt \u201E{sheet}\u201C von {count} Bl\xE4ttern.",USED_RANGE:"Der benutzte Bereich des Blatts reicht bis Zeile {usedRow}; die Werte enden in Zeile {lastRow}, die leeren Zeilen darunter wurden \xFCbersprungen.",ERROR_CELLS:{one:"{count} Zelle enth\xE4lt einen Excel-Fehler (etwa #NV) und bleibt leer.",other:"{count} Zellen enthalten einen Excel-Fehler (etwa #NV) und bleiben leer."}},dateOrders:{dmy:"Tag/Monat/Jahr",mdy:"Monat/Tag/Jahr"}},He=Object.freeze({en:Ge,de:ht}),Je=new WeakMap;function T(e){let t=Je.get(e);if(t)return t;let n=Object.hasOwn(He,e.lang)?He[e.lang]:Ge,r=e[je]?.dataImport,o=Ve(n,r);return Je.set(e,o),o}function Ye(e,t,n){let r=e.params&&typeof e.params=="object"?e.params:{},o=e.code;o==="COLUMN_RENAMED"&&r.from===""?o="COLUMN_UNNAMED":o==="SHEET"&&Number(r.count)>1&&(o="SHEETS");let s=Object.hasOwn(t.notes,o)?t.notes[o]:null;if(!s)return String(e.message??o);let l=Object.fromEntries(Object.entries(r).map(([c,m])=>[c,typeof m=="number"?m.toLocaleString(n.locale):String(m??"")]));return o==="DATE_ORDER"?l.order=Object.hasOwn(t.dateOrders,String(r.order))?t.dateOrders[String(r.order)]:l.order:o==="VALUES_NOT_CONVERTED"&&(l.type=Object.hasOwn(t.types,String(r.type))?t.types[String(r.type)]:l.type),x(typeof s=="string"?s:O(s,Number(r.count)||0,n),l)}function ge(e,t,n,r){let o=e,s=o&&typeof o=="object"&&o.code==="LIMIT_EXCEEDED"&&o.details&&typeof o.details=="object"?o.details:null;if(s&&typeof s.limit=="string"&&Object.hasOwn(n.limitWhat,s.limit)&&typeof s.max=="number")return x(n.overLimit,{max:s.max.toLocaleString(r.locale),what:n.limitWhat[s.limit],key:`limits.${s.limit}`});let l=$(e);for(let c of[`"${t}": `,`"${t}" `])if(l.startsWith(c))return l.slice(c.length);return l}var C=se(Ue(),1),a=se(Ue(),1),xe=se(pt(),1);function H(e){if(e.length<=120)return e;let t=117,n=e.charCodeAt(t-1);return n>=55296&&n<=56319&&(t-=1),`${e.slice(0,t)}...`}var ft=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);function Xe(e){let t=e.length*8,n=new Uint8Array(Math.ceil((e.length+9)/64)*64);n.set(e),n[e.length]=128;let r=new DataView(n.buffer);r.setUint32(n.length-8,Math.floor(t/2**32)),r.setUint32(n.length-4,t>>>0);let o=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),s=new Uint32Array(64),l=(y,i)=>y>>>i|y<<32-i;for(let y=0;y<n.length;y+=64){for(let f=0;f<16;f++)s[f]=r.getUint32(y+f*4);for(let f=16;f<64;f++){let v=l(s[f-15],7)^l(s[f-15],18)^s[f-15]>>>3,P=l(s[f-2],17)^l(s[f-2],19)^s[f-2]>>>10;s[f]=s[f-16]+v+s[f-7]+P>>>0}let[i,h,N,w,p,b,M,k]=o;for(let f=0;f<64;f++){let v=k+(l(p,6)^l(p,11)^l(p,25))+(p&b^~p&M)+ft[f]+s[f]>>>0,P=(l(i,2)^l(i,13)^l(i,22))+(i&h^i&N^h&N)>>>0;k=M,M=b,b=p,p=w+v>>>0,w=N,N=h,h=i,i=v+P>>>0}o[0]+=i,o[1]+=h,o[2]+=N,o[3]+=w,o[4]+=p,o[5]+=b,o[6]+=M,o[7]+=k}let c=new Uint8Array(32),m=new DataView(c.buffer);return o.forEach((y,i)=>m.setUint32(i*4,y)),c}async function yt(e,t={}){let n=new TextEncoder().encode(e),r=t.subtle!==void 0?t.subtle:globalThis.crypto?.subtle,o;try{o=r?new Uint8Array(await r.digest("SHA-256",n)):Xe(n)}catch{o=Xe(n)}return[...o].map(s=>s.toString(16).padStart(2,"0")).join("")}async function Ee(e,t,n){let r=await yt([e,...t].join("\0"),n);return`${H(e)}#${r.slice(0,16)}`}var J=1,gt=/^[a-z0-9][a-z0-9-]{0,63}$/,Et=/^\.[a-z0-9]{1,16}$/,wt=/^[a-z0-9][a-z0-9!#$&^_.+-]*\/[a-z0-9][a-z0-9!#$&^_.+-]*$/,Ke=["reader"];function G(e){let t=e,n=r=>{throw new _("INVALID_ARGUMENT",`plugin ${typeof t?.name=="string"?`"${t.name.slice(0,64)}" `:""}${r}`)};return(t===null||typeof t!="object"||Array.isArray(t))&&n("must be an object"),t.apiVersion!==J&&n(`uses plugin API version ${JSON.stringify(t.apiVersion)}; this pivotkit-core supports version ${J}. Use a version of the plugin made for API ${J}, or update pivotkit.`),Ke.includes(t.kind)||n(`has kind ${JSON.stringify(t.kind)}; API ${J} knows ${Ke.map(r=>`"${r}"`).join(", ")}`),(typeof t.name!="string"||!gt.test(t.name))&&n('needs a name of lower-case letters, digits and "-"'),(typeof t.label!="string"||t.label.trim()===""||t.label.length>100)&&n("needs a label of 1 to 100 characters"),(!Array.isArray(t.accept)||t.accept.length===0||!t.accept.every(r=>typeof r=="string"&&(Et.test(r)||wt.test(r))))&&n('needs accept: file name extensions (".xlsx") and media types ("text/csv"), in lower case'),typeof t.load!="function"&&n("needs load(): a function that imports the reader"),Object.freeze({apiVersion:t.apiVersion,kind:t.kind,name:t.name,label:t.label,accept:[...t.accept],load:t.load})}var bt=G({apiVersion:1,kind:"reader",name:"csv",label:"CSV or text",accept:[".csv",".tsv",".txt",".tab","text/csv","text/tab-separated-values","text/plain"],load:()=>import("./import-csv-UCA275TR.js")}),xt=G({apiVersion:1,kind:"reader",name:"json",label:"JSON",accept:[".json","application/json"],load:()=>import("./import-json-W4GCIW36.js")}),F=Object.freeze([bt,xt]);function Y(e,t=[]){for(let c of t)G(c);let n=[...t,...F],r=typeof e?.name=="string"?e.name.toLowerCase():"",o=r.lastIndexOf("."),s=o===-1?"":r.slice(o);if(s){let c=n.find(m=>m.accept.includes(s));if(c)return c}let l=typeof e?.type=="string"?e.type.toLowerCase().split(";")[0].trim():"";return l?n.find(c=>c.accept.includes(l)):void 0}var we=new WeakMap;async function be(e){let t=G(e),n=we.get(e);return n||(n=Promise.resolve(t.load()).then(r=>{let o=r,s=o?.default&&typeof o.read!="function"?o.default:o;if(!s||typeof s.read!="function")throw new _("INVALID_ARGUMENT",`plugin "${t.name}": its load() must give a module with read(file, options)`);if(s.sheets!==void 0&&typeof s.sheets!="function")throw new _("INVALID_ARGUMENT",`plugin "${t.name}": sheets must be a function when given`);return s}),n.catch(()=>we.delete(e)),we.set(e,n)),n}async function qe(e,t={}){let n=U(e,t),r=Be(t);if(e&&typeof e=="object"&&typeof e.size=="number"&&e.size>r.fileBytes)throw fe("fileBytes",e.size,r.fileBytes,n,"bytes");let o=t.reader??Y(e,t.plugins);if(!o)throw he("NO_READER",n,"no reader for this kind of file.");let s=await be(o),l={...t};return delete l.plugins,delete l.reader,St(await s.read(e,l),o.name)}function St(e,t){let n=o=>{throw new _("INVALID_ARGUMENT",`plugin "${t}": read() must return a table of pivotkit-core/import (createTable().finish()); ${o}`)};(!e||typeof e!="object"||!Array.isArray(e.columns)||!Array.isArray(e.types)||!Array.isArray(e.data)||!Array.isArray(e.notes))&&n("it needs columns, types, data and notes");let r=e.data[0]?.length??0;return(e.types.length!==e.columns.length||e.data.length!==e.columns.length)&&n("columns, types and data differ in length"),e.columns.every(o=>typeof o=="string")||n("a column name is no string"),e.types.every(o=>z.includes(o))||n("a type is none of string, number, date, boolean"),e.data.every(o=>Array.isArray(o)&&o.length===r)||n("the columns differ in length"),e}function Nt(e){let t=[];for(let n of[...e,...F])for(let r of Array.isArray(n?.accept)?n.accept:[])typeof r=="string"&&!t.includes(r)&&t.push(r);return t.join(",")}var tt=(e,t={})=>[...e,...F].map(n=>typeof n?.name=="string"&&Object.hasOwn(t,n.name)?t[n.name]:typeof n?.label=="string"?n.label.trim().slice(0,100):"").filter((n,r,o)=>n&&o.indexOf(n)===r),Dt=1e4;function Qe(e){let t=e.data[0]?.length??0,n=r=>Array.isArray(r)&&r.length===e.columns.length;return{...e,rowCount:Number.isInteger(e.rowCount)&&e.rowCount>=0?e.rowCount:t,raw:n(e.raw)&&e.raw.every(r=>Array.isArray(r)&&r.length===t)?e.raw:e.data,detected:n(e.detected)?e.detected:e.types,hints:e.hints&&typeof e.hints=="object"?e.hints:{decimal:".",dateOrder:"dmy"},notes:e.notes.filter(r=>r&&typeof r.code=="string").map(r=>({code:r.code,params:r.params&&typeof r.params=="object"?r.params:{},message:String(r.message??r.code)}))}}var Ot=e=>e!==null&&typeof e=="object"&&Array.isArray(e.columns)&&Array.isArray(e.types)&&Array.isArray(e.data)&&Array.isArray(e.notes),Tt=e=>e?.reason??new DOMException("The read was cancelled","AbortError"),I=Symbol("worker unavailable");function kt(e,t,n,r,o,s=Dt){let l;try{l=e()}catch{return Promise.resolve(I)}return!l||typeof l.postMessage!="function"?Promise.resolve(I):new Promise((c,m)=>{let y=!1,i=setTimeout(()=>{h(),c(I)},s),h=()=>{clearTimeout(i),l.terminate?.(),r?.removeEventListener("abort",N)},N=()=>{h(),m(Tt(r))};if(r?.aborted){N();return}r?.addEventListener("abort",N,{once:!0}),l.onmessage=w=>{let p=w.data;if(p?.type==="ready"&&!y){y=!0,clearTimeout(i);try{l.postMessage({file:t,options:n})}catch{h(),c(I)}}else if(p?.type==="progress")p.progress&&typeof p.progress=="object"&&o?.(p.progress);else if(p?.type==="done")h(),Ot(p.table)?c(p.table):m(new Error("The import worker returned no table"));else if(p?.type==="error"){h();let b=p.error??{};m(typeof b.code=="string"?new _(b.code,String(b.message??""),b.details??{}):new Error(String(b.message??"The file could not be read")))}},l.onmessageerror=()=>{h(),m(new Error("The import worker's answer could not be read"))},l.onerror=w=>{w.preventDefault?.(),h(),y?m(new Error(String(w.message||"The file could not be read"))):c(I)}})}async function vt(e,{plugins:t=[],worker:n,sheet:r,locale:o,limits:s,signal:l,onProgress:c,readyMs:m}={}){let y={name:e.name,...r!==void 0?{sheet:r}:{},...o?{locale:o}:{},...s?{limits:s}:{}},i=Y(e,t);if(n&&i&&F.includes(i)){let h=await kt(n,e,y,l,c,m);if(h!==I)return Qe(h)}return l?.throwIfAborted(),Qe(await qe(e,{...y,plugins:t,signal:l,onProgress:c}))}async function Ct(e,{plugins:t=[],limits:n,signal:r}={}){let o=Y(e,t);if(!o)return[];let s=await be(o);if(typeof s.sheets!="function")return[];let l=await s.sheets(e,{name:e.name,...n?{limits:n}:{},signal:r});return Array.isArray(l)?l.filter(c=>c&&typeof c.name=="string"&&Number.isInteger(c.index)):[]}var At=8,Rt=60;function nt(e,t){try{return new Intl.ListFormat(t,{type:"conjunction"}).format(e)}catch{return e.join(", ")}}function et(e,t){let n=["B","KB","MB","GB"],r=e,o=0;for(;r>=1e3&&o<n.length-1;)r/=1e3,o+=1;return`${r.toLocaleString(t,{maximumFractionDigits:o===0?0:1})} ${n[o]}`}function Lt({labels:e,locale:t,source:n,plugins:r,onPick:o,onBack:s,close:l}){let c=T(e),m={lang:e.lang,locale:t};return a.default.createElement("div",{className:"pk-data-menu","data-testid":"data-menu"},a.default.createElement(me,{title:c.dataSource,testId:"data-source"},a.default.createElement("p",{"data-testid":"data-name"},a.default.createElement("strong",null,n.name??c.hostData)),a.default.createElement("p",{className:"pk-hint","data-testid":"data-size"},`${O(c.rows,n.rows,m)} \xD7 ${O(c.columns,n.columns,m)}`),n.imported?a.default.createElement("p",{className:"pk-hint"},c.fromFile):null),a.default.createElement(me,{title:c.load},a.default.createElement(pe,{icon:"upload",onSelect:()=>{l(),o()},testId:"load-file"},c.loadFile),n.imported?a.default.createElement(pe,{icon:"reset",hint:c.backHint,onSelect:()=>{l(),s()},testId:"back-to-original"},c.backToOriginal):null,a.default.createElement("p",{className:"pk-hint","data-testid":"drop-hint"},`${c.dropHint}. ${x(c.formats,{formats:nt(tt(r,c.formatNames),t)})}`)))}function _t({labels:e,locale:t,plugins:n,box:r}){let o=T(e),{layer:s}=(0,a.useContext)(ce),l=(0,a.useRef)(null),[c]=(0,a.useState)(ue);de(!0,[l],null,s);let m=r();if(!s||!m)return null;let y=s.ownerDocument.defaultView,i=Math.max(0,m.left),h=Math.max(0,m.top),N={left:i,top:h,width:Math.max(0,Math.min(m.right,y?.innerWidth??m.right)-i),height:Math.max(0,Math.min(m.bottom,y?.innerHeight??m.bottom)-h)};return(0,xe.createPortal)(a.default.createElement("div",{ref:l,...c?{popover:"manual"}:{},className:"pk-drop",style:N,"aria-hidden":"true","data-testid":"drop-overlay"},a.default.createElement("div",null,a.default.createElement(ie,{name:"upload",size:24}),a.default.createElement("strong",null,o.dropTitle),a.default.createElement("span",null,x(o.formats,{formats:nt(tt(n,o.formatNames),t)})))),s)}function Mt({labels:e,source:t}){let n=T(e);return a.default.createElement("span",{className:"pk-row-label pk-source","data-testid":"source-line"},a.default.createElement(ie,{name:"file",size:14}),x(t.sheet?n.sourceSheet:n.sourceLine,{name:t.name,sheet:t.sheet??""}))}function It(e,t,n,r){if(e==null)return"";if(t==="boolean")return e?n.yes:n.no;if(t==="number"&&typeof e=="number")return e.toLocaleString(r,{maximumFractionDigits:10});let o=String(e).replace(/^(\d{4}-\d\d-\d\d)T(\d\d:\d\d)(?::00(?:\.000)?)?$/,"$1 $2");return o.length>80?`${o.slice(0,79)}\u2026`:o}function Pt({job:e,labels:t,locale:n,plugins:r,worker:o,limits:s,timeZone:l,onApply:c,onClose:m,announce:y}){let i=T(t),h={lang:t.lang,locale:n},{layer:N}=(0,a.useContext)(ce),w=e.file,p=(0,a.useMemo)(()=>U(w,{}),[w]),[b,M]=(0,a.useState)(e.sheet),[k,f]=(0,a.useState)([]),[v,P]=(0,a.useState)(null),[B,ee]=(0,a.useState)(null),[A,Se]=(0,a.useState)(null),[Ne,te]=(0,a.useState)(null),[De,Oe]=(0,a.useState)(!1),[st,Te]=(0,a.useState)(null),ke=v&&v.sheet===b?v:null,W=!ke&&st!==b,D=(0,a.useRef)({onClose:m,announce:y,t:i,name:p,plugins:r,worker:o,locale:n,limits:s,where:h});(0,a.useEffect)(()=>{D.current={onClose:m,announce:y,t:i,name:p,plugins:r,worker:o,locale:n,limits:s,where:h}}),(0,a.useEffect)(()=>{let u=new AbortController,g=0,E=D.current;return vt(w,{plugins:E.plugins,worker:E.worker,sheet:b,locale:E.locale,limits:E.limits,signal:u.signal,onProgress:S=>{let L=Date.now();(L-g>120||S.done>=S.total)&&(g=L,Se(S))}}).then(S=>{u.signal.aborted||(P({table:S,sheet:b}),ee(null))},S=>{if(u.signal.aborted)return;let L=x(D.current.t.failed,{name:D.current.name,message:ge(S,D.current.name,D.current.t,D.current.where)});b===void 0?(D.current.announce(L,{tone:"error"}),D.current.onClose()):(Te(b),te(L))}),()=>u.abort()},[w,b]),(0,a.useEffect)(()=>{let u=new AbortController;return Ct(w,{plugins:D.current.plugins,limits:D.current.limits,signal:u.signal}).then(g=>!u.signal.aborted&&f(g),()=>{}),()=>u.abort()},[w]);let R=ke?.table??null,j=(0,a.useMemo)(()=>{if(!R||!B||B.every((u,g)=>u===R.types[g]))return{table:R,error:null};try{return{table:ye(R,B),error:null}}catch(u){return{table:R,error:$(u)}}},[R,B]),d=j.table,ne=(0,a.useRef)(null),ve=(0,a.useRef)(null),Ce=(0,a.useRef)(null),[lt]=(0,a.useState)(ue);de(!0,[ve,ne],null,N);let{onKeyDown:it}=Fe(ne,!0,m),V=!!d&&!W,Ae=(0,a.useRef)(!1);(0,a.useEffect)(()=>{V&&!Ae.current&&(Ae.current=!0,Ce.current?.focus({preventScroll:!0}))},[V]);let re=(0,a.useRef)(!0);(0,a.useEffect)(()=>()=>{re.current=!1},[]);let Re=(0,a.useId)(),oe=(0,a.useId)(),Le=(0,a.useId)(),_e=le(),Me=(()=>{let u=d?.notes.find(g=>g.code==="SHEET");return u&&u.params?.sheet!==void 0?String(u.params.sheet):null})(),ct=typeof b=="number"?b:k.find(u=>u.name===Me)?.index??0,Ie=async()=>{if(!(!d||De)){Oe(!0);try{await new Promise(E=>setTimeout(E,0));let u=We({columns:d.columns,types:d.types,data:d.data},{timeZone:l??"UTC",limits:s}),g=await Ee(p,d.columns);if(!re.current)return;c({encoded:u,source:{id:g,name:H(p)},file:{name:p,size:w.size,type:w.type},sheet:Me,sheets:k.map(E=>E.name),blob:w,rows:d.rowCount,columns:d.columns.map((E,S)=>({name:E,type:d.types[S]})),notes:d.notes.map(E=>({code:E.code,params:{...E.params},message:E.message}))})}catch(u){re.current&&(te(x(i.failed,{name:p,message:ge(u,p,i,h)})),Oe(!1))}}},Pe=(0,a.useRef)(!1);if((0,a.useEffect)(()=>{e.auto&&V&&d&&d.rowCount>0&&!j.error&&!Pe.current&&(Pe.current=!0,Ie())}),!N)return null;let $e=lt?{popover:"manual"}:{},Z=d?d.columns.slice(0,Rt):[],ut=d?Math.min(At,d.rowCount):0,ze=A&&Object.hasOwn(i.phases,String(A.phase))?i.phases[String(A.phase)]:i.phases.read,ae=A&&A.total>0?Math.min(100,Math.round(A.done/A.total*100)):null,dt=d&&!W?`${O(i.rows,d.rowCount,h)} \xB7 ${O(i.columns,d.columns.length,h)} \xB7 ${et(w.size,n)}`:et(w.size,n);return(0,xe.createPortal)(a.default.createElement(a.default.Fragment,null,a.default.createElement("div",{ref:ve,...$e,className:"pk-scrim pk-import-scrim","aria-hidden":"true"}),a.default.createElement("div",{ref:ne,...$e,className:"pk-import",role:"dialog","aria-modal":"true","aria-labelledby":Re,"aria-describedby":d&&d.notes.length?`${oe} ${Le}`:oe,"aria-busy":W||void 0,tabIndex:-1,onKeyDown:it,"data-testid":"import-dialog"},a.default.createElement("div",{className:"pk-drill-head"},a.default.createElement("div",{className:"pk-drill-heading"},a.default.createElement("h2",{id:Re},x(i.previewTitle,{name:p})),a.default.createElement("p",{id:oe,className:"pk-hint",role:"status","data-testid":"import-meta"},dt))),a.default.createElement("div",{className:"pk-import-body"},k.length>1?a.default.createElement("label",{className:"pk-inline-form"},i.sheet,a.default.createElement("select",{name:`${_e}-sheet`,value:ct,onChange:u=>{Se(null),te(null),Te(null),ee(null),M(Number(u.target.value))},"data-testid":"import-sheet"},k.map(u=>a.default.createElement("option",{key:u.index,value:u.index},u.visible?u.name:x(i.hiddenSheet,{name:u.name}))))):null,Ne||j.error?a.default.createElement("p",{className:"pk-error",role:"alert","data-testid":"import-error"},Ne??j.error):null,W?a.default.createElement("div",{"data-testid":"import-progress"},a.default.createElement("p",null,x(i.reading,{name:p})),a.default.createElement("progress",{max:100,value:ae??void 0,"aria-label":ze}),a.default.createElement("p",{className:"pk-hint"},`${ze}${ae!==null?` \xB7 ${ae} %`:""}`)):d?a.default.createElement(a.default.Fragment,null,d.rowCount===0?a.default.createElement("p",{"data-testid":"import-empty"},i.noRows):null,a.default.createElement("div",{className:"pk-drill-body","data-testid":"import-preview"},a.default.createElement("table",{className:"pk-drill-table"},a.default.createElement("caption",{className:"pk-sr"},i.firstRows),a.default.createElement("thead",null,a.default.createElement("tr",null,Z.map((u,g)=>a.default.createElement("th",{key:g,scope:"col"},u,a.default.createElement("select",{name:`${_e}-type-${g}`,value:d.types[g],"aria-label":x(i.typeOf,{column:u}),onChange:E=>ee(S=>(S??R?.types??[]).map((L,mt)=>mt===g?E.target.value:L)),"data-testid":`import-type-${g}`},z.map(E=>a.default.createElement("option",{key:E,value:E},i.types[E]))))))),a.default.createElement("tbody",null,Array.from({length:ut},(u,g)=>a.default.createElement("tr",{key:g},Z.map((E,S)=>a.default.createElement("td",{key:S,className:d.types[S]==="number"?"pk-num":void 0},It(d.data[S][g],d.types[S],i,n)))))))),d.columns.length>Z.length?a.default.createElement("p",{className:"pk-hint"},x(i.someColumns,{shown:Z.length.toLocaleString(n),count:d.columns.length.toLocaleString(n)})):null,d.notes.length?a.default.createElement("div",{id:Le,className:"pk-note","data-testid":"import-notes"},a.default.createElement("div",null,a.default.createElement("h3",null,O(i.notesTitle,d.notes.length,h)),a.default.createElement("ul",null,d.notes.map((u,g)=>a.default.createElement("li",{key:g,"data-code":u.code},Ye(u,i,h)))))):null):null),a.default.createElement("div",{className:"pk-popover-foot"},a.default.createElement("button",{type:"button",className:"pk-btn",onClick:m,"data-autofocus":"","data-testid":"import-cancel"},i.cancel),V?a.default.createElement("button",{ref:Ce,type:"button",className:"pk-btn pk-primary",onClick:Ie,disabled:De||!d||d.rowCount===0,"data-testid":"import-apply"},i.apply):null))),N)}var $t=3,wn=Object.freeze({past:Object.freeze([]),future:Object.freeze([])});function rt(e,t,n){return{past:[...e.past,{data:t.data,history:{...t.history,future:[]},note:n}].slice(-$t),future:[]}}function zt(e,t){let n=e.past[e.past.length-1];return n?{steps:{past:e.past.slice(0,-1),future:[...e.future,{data:t.data,history:t.history,note:n.note}]},step:n}:null}function Ut(e,t){let n=e.future[e.future.length-1];return n?{steps:{past:[...e.past,{data:t.data,history:t.history,note:n.note}],future:e.future.slice(0,-1)},step:n}:null}function Ft(e){for(let t=e.past.length-1;t>=0;t--)if(e.past[t].data===null)return e.past[t].history;return null}function q(e,t,n,r=[]){let o=t?t.encoded:e.hostEncoded;return{cause:n,source:t?{...t.source}:e.hostSource?{...e.hostSource}:null,file:t?{...t.file}:null,sheet:t?t.sheet:null,rows:o.length,columns:o.schema.fields.map(s=>({name:s.name,type:s.type})),notes:r}}var Bt=0;function Q(e,t){try{return{refused:e.onDataLoad?.(t)===!1}}catch(n){return t.cause!=="load"&&setTimeout(()=>{throw n},0),{refused:!0,error:n}}}function Wt(e,t){let n={key:++Bt,encoded:t.encoded,source:t.source,sheet:t.sheet,sheets:t.sheets,blob:t.blob,file:t.file},r=T(e.labels),o=Q(e,q(e,n,"load",t.notes));if(o.refused)return o.error!==void 0&&e.announce(x(r.refused,{name:t.source.name,message:$(o.error)}),{tone:"error"}),!1;let s={lang:e.labels.lang,locale:e.locale};return e.setSteps(rt(e.steps,{data:e.imported,history:e.history.snapshot()},x(r.stepLoaded,{name:t.source.name}))),e.setImported(n),e.announce(x(r.loaded,{name:t.source.name,rows:O(r.rows,t.rows,s),columns:O(r.columns,t.columns.length,s)}),{action:{label:e.labels.undo,run:e.undo}}),!0}function jt(e){if(!e.imported)return;let t=T(e.labels),n=Ft(e.steps);e.setSteps(rt(e.steps,{data:e.imported,history:e.history.snapshot()},t.backToOriginal)),e.setImported(null),n&&e.history.replace({...n,past:[],future:[]}),Q(e,q(e,null,"original")),e.announce(t.originalShown,{action:{label:e.labels.undo,run:e.undo}})}function bn(e,t){let n=(t?zt:Ut)(e.steps,{data:e.imported,history:e.history.snapshot()});return n?(e.setSteps(n.steps),e.setImported(n.step.data),e.history.replace(n.step.history),Q(e,q(e,n.step.data,t?"undo":"redo")),n.step.note):null}function xn(e){e.imported&&Q(e,q(e,e.imported,"restore"))}var ot=0,X=new WeakMap;function K(e,t){let n=e.announce(t,{tone:"error"});typeof n=="number"&&typeof e.dismiss=="function"&&X.set(e.dismiss,[...X.get(e.dismiss)??[],n])}function Vt(e,t){at(e),t.length===1?e.setJob({file:t[0],n:++ot}):t.length>1&&K(e,T(e.labels).dropOne)}function Zt(e,t,n){let r=e.imported?.blob;if(!r){n(!1);return}at(e),e.setJob({file:r,n:++ot,sheet:t,auto:!0,done:n})}function Sn(e,t,n,r){let o=e.imported,s=Ze(t,{id:o?.source.id,sheet:o?.sheet??null,sheets:o?.sheets??[]}),l=T(e.labels);return s.kind==="switch"?(e.afterData(null),Zt(e,s.sheet,(c,m)=>{e.afterData(c?r:null),m&&K(e,x(l.sheetRefused,{name:n,sheet:s.sheet}))})):s.kind==="missing"&&K(e,x(l.sheetMissing,{name:n,sheet:s.sheet,file:o?.file.name??""})),s.kind}function at(e){let t=e.dismiss;typeof t=="function"&&((X.get(t)??[]).forEach(n=>t(n)),X.delete(t))}function Nn(e){e&&(e.value="",e.click())}function Dn({api:e,input:t}){let n=le(),r=e.job;return C.default.createElement(C.default.Fragment,null,C.default.createElement("input",{ref:t,type:"file",name:n,hidden:!0,tabIndex:-1,"aria-hidden":"true",accept:Nt(e.plugins),onChange:o=>Vt(e,[...o.target.files??[]]),"data-testid":"file-input"}),e.dragging?C.default.createElement(_t,{labels:e.labels,locale:e.locale,plugins:e.plugins,box:e.box}):null,r?C.default.createElement(Pt,{key:r.n,job:r,labels:e.labels,locale:e.locale,plugins:e.plugins,worker:e.worker,limits:e.limits,timeZone:e.timeZone,announce:(o,s)=>s?.tone==="error"?K(e,o):e.announce(o,s),onClose:()=>{e.setJob(o=>o===r?null:o),r.done?.(!1)},onApply:o=>{let s=Wt(e,o);e.setJob(l=>l===r?null:l),r.done?.(s,!s)}}):null)}function On({api:e,close:t}){let n={name:e.sourceName??null,rows:e.encoded.length,columns:e.encoded.schema.fields.length,imported:!!e.imported};return C.default.createElement(Lt,{labels:e.labels,locale:e.locale,source:n,plugins:e.plugins,close:t,onPick:e.pick,onBack:()=>jt(e)})}function Tn({api:e}){return e.imported?C.default.createElement(Mt,{labels:e.labels,source:{name:e.imported.source.name,sheet:e.imported.sheet}}):null}export{On as DataMenuPanel,Dn as ImportLayer,Tn as SourceLine,Zt as loadSheet,bn as moveData,Sn as openOnSheet,Nn as pickFile,xn as restoreData,Vt as startFiles};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as S,b as j,c as x,d as E}from"./chunk-UTPKLCNX.js";import{a as _,b as g,c as U,h as v,i as y}from"./chunk-
|
|
1
|
+
import{a as S,b as j,c as x,d as E}from"./chunk-UTPKLCNX.js";import{a as _,b as g,c as U,h as v,i as y}from"./chunk-CHSIHYYE.js";import"./chunk-KO3EKDH5.js";import{a as k,b as L,i as b,n as p}from"./chunk-XR4CMFGN.js";import"./chunk-DCANE7XH.js";var d=1024;function I(r,e){let t=[],n=0,s=!1,o=!1,a=new j((i,f)=>{n+=i.length,n>e?s=!0:t.push(i),o=o||f});for(let i=0;i<r.length&&!s;i+=d)a.push(r.subarray(i,i+d),i+d>=r.length);if(s)return{bytes:null,inflated:n};if(!o)throw new Error("unexpected end of data");let l=new Uint8Array(n),u=0;for(let i of t)l.set(i,u),u+=i.length;return{bytes:l,inflated:n}}var M=Object.freeze(["linkEmpty","linkTooLong","notLink","linkDamaged","linkTooLarge","notView","notJson"]),m="1.",c=Object.freeze({text:32e3,json:1e6}),C=/^[A-Za-z0-9_-]*$/;function T(r){let e="";for(let t=0;t<r.length;t+=32768)e+=String.fromCharCode(...r.subarray(t,t+32768));return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function V(r){let e=atob(r.replace(/-/g,"+").replace(/_/g,"/")+"=".repeat((4-r.length%4)%4)),t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return t}function R(r){L(p(r),"encodeViewLink(view): view must be an object");let e=JSON.stringify(r),t=(s,o,a)=>new k("LIMIT_EXCEEDED",`${s.toLocaleString("en-US")} ${a} exceed the limit of ${o.toLocaleString("en-US")} (LINK_LIMITS)`,{limit:"link",value:s,max:o});if(e.length>c.json)throw t(e.length,c.json,"characters of the view");let n=m+T(S(x(e),{level:9}));if(n.length>c.text)throw t(n.length,c.text,"characters of the link");return n}function $(r){let e=(o,a)=>({view:null,issues:[{path:"",message:o,code:a,severity:"error"}]});if(typeof r!="string"||r.trim()==="")return e("empty link","linkEmpty");let t=r.trim();if(t.length>c.text)return e(`link longer than ${c.text} characters`,"linkTooLong");if(!t.startsWith(m)||!C.test(t.slice(m.length)))return e("not a pivotkit view link","notLink");let n=t.slice(m.length);if(n==="")return e("the link is damaged","linkDamaged");let s;try{let o=I(V(n),c.json);if(o.bytes===null)return e(`view larger than ${c.json} characters`,"linkTooLarge");s=E(o.bytes)}catch{return e("the link is damaged","linkDamaged")}try{let o=JSON.parse(s);return p(o)?{view:o,issues:[]}:e("not a view object","notView")}catch{return e("not valid JSON","notJson")}}function X(r,e,t={}){let n={view:null,src:null,name:"",failed:null,issues:[]},s=b(t),o=g(r,e);if(o===null)return{...n,failed:"none"};let a=$(o);if(!a.view)return{...n,failed:"link",issues:a.issues};let l=v(a.view,{limits:s});if(l.failed||!l.view)return{...n,failed:l.failed??"notView",issues:l.issues};let u=new Set(Array.isArray(t.allowParams)?t.allowParams:[]),i=[...l.issues],f={};for(let[h,O]of Object.entries(y(l.source?.params,s,()=>{})??{}))u.has(h)?Object.defineProperty(f,h,{value:O,enumerable:!0,writable:!0,configurable:!0}):i.push({path:`source.params.${h.slice(0,100)}`,message:"a parameter the host does not allow; left out"});let w=l.source?.id;return{view:l.view,src:w?{id:w,...Object.keys(f).length?{params:f}:{}}:null,name:l.name,failed:null,issues:i}}export{M as LINK_ISSUE_CODES,c as LINK_LIMITS,$ as decodeViewLink,R as encodeViewLink,g as linkFragment,_ as linkParam,X as readViewLink,U as withLinkFragment};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./chunk-DCANE7XH.js";var e={aboutSetting:"\xDCber {setting}",settingInfo:{grandTotalRow:"Eine letzte Zeile mit der Summe jeder Spalte.",grandTotalColumn:"Eine letzte Spalte mit der Summe jeder Zeile.",rowSubtotals:"Mit zwei oder mehr Feldern in Zeilen: eine Zeile mit dem Teilergebnis (\u201ENord gesamt\u201C) unter jeder Gruppe des \xE4u\xDFeren Felds, die mehr als einen Eintrag hat.",colSubtotals:"Mit zwei oder mehr Feldern in Spalten: eine Spalte mit dem Teilergebnis (\u201ENord gesamt\u201C) nach jeder Gruppe des \xE4u\xDFeren Felds, die mehr als einen Eintrag hat.",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:"Die Tabelle wie angezeigt, mit ihren Summen und Prozenten, als reiner Text. Nicht die Zeilen dahinter: Das sind die Quelldaten, unten.",exportHtml:"Eine Seite mit der Tabelle wie angezeigt, dem Diagramm, wenn es angezeigt wird, und den Filtern: \xF6ffnet in jedem Browser, druckt gut.",exportPrint:"Derselbe Bericht im Druckdialog des Browsers: drucken oder dort Als PDF speichern w\xE4hlen.",exportDataCsv:"Alle urspr\xFCnglichen Zeilen hinter dem Bericht, vor Gruppierung, Filtern und Summen, mit jedem Feld. F\xFCr eigene Auswertungen oder um den Bericht mit seiner Ansicht (Ansichten \u2192 Ansicht herunterladen) anderswo neu zu erstellen. In Excel mit Dezimalkomma: \xFCber Daten \u2192 Aus Text/CSV \xF6ffnen.",exportDataJson:"Dieselben Zeilen als JSON, f\xFCr ein Programm: Zahlen als Zahlen, Text als Text, ein leerer Wert als null.",copyTable:"Die Tabelle wie angezeigt, mit \xDCberschriften und Summen: tabulatorgetrennt, wird in Excel oder Google Sheets in Spalten eingef\xFCgt.",copyDataJson:"Die Zahlen der Tabelle mit ihren Beschriftungen als JSON, f\xFCr ein Programm. Nicht die Ansicht selbst: Das ist Ansichten \u2192 Ansicht als JSON kopieren.",drillCopy:"Die Zeilen wie im Bereich angezeigt, mit einer \xDCberschriftenzeile: tabulatorgetrennt, wird in Excel oder Google Sheets in Spalten eingef\xFCgt.",drillJson:"Die Zeilen als JSON-Objekte, mit den Feldnamen und Rohwerten der Daten, f\xFCr ein Programm.",groupLabels:"Mit zwei oder mehr Feldern in Zeilen: die Eintr\xE4ge des \xE4u\xDFeren Felds einmal unter der Achse, unter ihren Kategorien.",labelPosition:"Au\xDFen: Name und Zahl jedes Segments daneben. Innen: die Zahl auf dem Segment, die Namen in der Legende; au\xDFen, wenn der Ring eines Donuts daf\xFCr zu schmal ist.",sharedView:"Nur Admins k\xF6nnen gemeinsame Ansichten \xE4ndern.",valuesFilter:"Werte werden hier nicht gefiltert: Ein Feld in Zeilen oder Spalten \xFCber sein Men\xFC filtern oder ein Feld in Filter ziehen."},back:"Zur\xFCck",backTo:"Zur\xFCck zum Men\xFC von {name}",levelTitle:"{name} \u203A {topic}",searchMenu:"Im Men\xFC von {name} suchen",searchMenuShort:"In diesem Men\xFC suchen (Taste /)",searchResults:"Treffer",searchNothing:"Nichts gefunden. Ein anderes Wort versuchen oder die Suche leeren.",sortByValue:"Nach Wert sortieren",sortOldestShort:"\xC4lteste",sortNewestShort:"Neueste",filterTopic:"Filter",filterAll:"Alle",groupTopic:"Gruppieren",groupNoneShort:"Keine",off:"Aus",moveToTitle:"Verschieben nach",topOwn:"Top N\u2026",binsOff:"Bereiche entfernen",valueConditionTitle:"Bedingung f\xFCr einen Wert",nameHint:"Gilt mit Enter oder beim Verlassen des Felds; Escape gibt den Namen zur\xFCck.",showAsKeywords:"prozent % anteil",nameKeywords:"umbenennen bezeichnung titel",filterKeywords:"werte ausw\xE4hlen regel regeln bedingung zeitraum datum",formatDecimals:{one:"Zahl, {count} Dezimalstelle",other:"Zahl, {count} Dezimalstellen"},listAnd:" und ",summaryAll:"Alle {total} {noun} gezeigt",summarySome:"{shown} der {total} {noun} gezeigt",summaryNone:"Nichts gezeigt",summaryOk:"Alle Eintr\xE4ge ausgew\xE4hlt, keine Regeln.",summaryKept:"Alle Eintr\xE4ge ausgew\xE4hlt; die Regeln behalten sie alle.",summaryQuickOnly:"Alle Eintr\xE4ge ausgew\xE4hlt; {quick}.",summaryPicks:"{count} durch deine Auswahl weggelassen",summaryQuick:"{count} au\xDFerhalb von {quick}",summaryRules:{one:"{items} durch die Regel weggelassen",other:"{items} durch die Regeln weggelassen"},summaryTotals:{one:"{items} durch die Regel zum Gesamtwert weggelassen",other:"{items} durch die Regeln zu den Gesamtwerten weggelassen"},summaryRows:"{rows} von {total} Zeilen",summaryData:"Daten {range}",yearsAll:"{years} zusammengefasst",yearsOne:"nur {year}",emptyPicks:"Nichts ist ausgew\xE4hlt.",emptyRules:"Kein Eintrag ({noun}) erf\xFCllt {rules}.",emptyTotal:"Kein Eintrag ({noun}) hat einen Gesamtwert, {rule} \u2013 {spread}.",totalSpread:"die Gesamtwerte reichen von {low} ({lowItem}) bis {high} ({highItem})",totalWords:"der bei {measure} {op} {number} ist",totalWordsTwo:"der bei {measure} {op} {from} und {to} liegt",resetFilter:"Filter zur\xFCcksetzen",nouns:{item:{one:"Eintrag",other:"Eintr\xE4ge"},value:{one:"Wert",other:"Werte"},date:{one:"Datum",other:"Daten"},year:{one:"Jahr",other:"Jahre"},quarter:{one:"Quartal",other:"Quartale"},month:{one:"Monat",other:"Monate"},week:{one:"Woche",other:"Wochen"},day:{one:"Tag",other:"Tage"},weekday:{one:"Wochentag",other:"Wochentage"},hour:{one:"Stunde",other:"Stunden"},range:{one:"Bereich",other:"Bereiche"}},quickTitle:"Schnellauswahl",quickCount:{year:"Anzahl Jahre",quarter:"Anzahl Quartale",month:"Anzahl Monate",week:"Anzahl Wochen",day:"Anzahl Tage"},quickRows:"{rows} Zeilen",quickHidden:{one:"{choices} wird nicht angeboten: die Daten enden am {latest}.",other:"{choices} werden nicht angeboten: die Daten enden am {latest}."},quickCurrent:{year:"Das laufende Jahr einbeziehen",quarter:"Das laufende Quartal einbeziehen",month:"Den laufenden Monat einbeziehen",week:"Die laufende Woche einbeziehen",day:"Heute einbeziehen"},quickMore:"Weitere Auswahl",quickRolling:"Gleitend statt ganzer Kalenderzeitr\xE4ume",quickUnitOf:"Einheit von \u201E{choice} \u2026\u201C",quickThisUnit:"Laufender Zeitraum",anchorLabel:"Gez\xE4hlt ab",anchorToday:"heute ({date})",anchorLatest:"dem letzten Datensatz ({date})",anchorFirst:"dem ersten Datensatz ({date})",anchorDate:"einem Datum \u2026",anchorDay:"Das Datum, ab dem gez\xE4hlt wird",anchorDayIncomplete:"Bitte ein vollst\xE4ndiges Datum eingeben; bis dahin wird ab dem {date} gez\xE4hlt.",anchorUseLatest:"Stattdessen ab dem letzten Datensatz ({date}) z\xE4hlen",quickLine:"Schnellauswahl: {text}",changeAbove:"oben \xE4ndern",yearsCombined:"Jahre zusammengefasst",yearsCombinedHint:"ein Eintrag ({noun}) \xFCber die markierten Jahre",yearsCombinedOne:"Die Tabelle zeigt nur {year}.",pickItems:"Eintr\xE4ge ausw\xE4hlen",picksState:"{picked} von {total} ausgew\xE4hlt",picksAll:"alle {total} ausgew\xE4hlt",clear:"Zur\xFCcksetzen",clearPicks:"Auswahl zur\xFCcksetzen",rulesState:{one:"{count} Regel",other:"{count} Regeln"},rulesNoneState:"Keine Regeln",removeAll:"Entfernen",removeRules:"Regeln entfernen",tailOut:{one:"Durch die Regeln weggelassen ({count}) \u2013 das H\xE4kchen gilt wieder, sobald sie weg sind",other:"Durch die Regeln weggelassen ({count}) \u2013 die H\xE4kchen gelten wieder, sobald sie weg sind"},rulesKeep:"{noun} behalten, f\xFCr die alles zutrifft:",rulesNone:"{noun} behalten, f\xFCr die alles zutrifft. Unten eine Regel hinzuf\xFCgen.",ruleKeeps:"Beh\xE4lt {kept} der {total} {noun}",ruleKeepsNone:"Beh\xE4lt 0 der {total} {noun} \u2013 {spread}.",ruleIncomplete:"Gilt, sobald sie vollst\xE4ndig ist.",explainRule:"Diese Regel erkl\xE4ren",ruleInfo:{number:"Vergleicht den Wert selbst, nicht seinen Gesamtwert. Beispiel: \u201Ezwischen 20 und 25\u201C beh\xE4lt die Werte von 20 bis 25.",date:"Vergleicht jedes Datum nach seinem Kalendertag. Beispiel: \u201Evor 1. M\xE4rz 2022\u201C beh\xE4lt jeden Tag bis zum 28. Februar 2022.",group:"Vergleicht jeden Eintrag nach seinem Platz auf der Zeitachse. Beispiel: \u201Eab 2022\u201C beh\xE4lt 2022 und alle sp\xE4teren.",cyclic:"Vergleicht jeden Eintrag nach seinem Platz im Jahr, \xFCber alle Jahre zusammen. Beispiel: \u201Eab Juni\u201C beh\xE4lt Juni bis Dezember.",total:"Der Gesamtwert eines Eintrags ist sein Wert in der Zeile Gesamt \u2013 {measure} \xFCber {scope} \u2013 nicht eine einzelne Zelle. Beispiel: \u201Egr\xF6\xDFer als 20\u201C beh\xE4lt die {nouns} mit einem Gesamtwert \xFCber 20.",name:"Vergleicht den Namen jedes Eintrags, wie die Tabelle ihn schreibt. Beispiel: \u201Eenth\xE4lt \xE4r\u201C beh\xE4lt M\xE4rz."},scopeItems:"alle {count} Eintr\xE4ge von {field}",scopeDates:"die Daten {range}",scopeRows:"jede Zeile",pickerSearch:"Eintr\xE4ge suchen",pickerMatch:"{count} von {total} passen",pickerNone:"Kein Treffer",rulesTitle:"Regeln",ruleAnd:"und",addRule:"Regel hinzuf\xFCgen",addRuleItem:"{field} vergleichen",addRuleTotal:"Gesamtwert vergleichen",addRuleName:"Regel zum Namen",removeRule:"Diese Regel entfernen",rulesFull:"H\xF6chstens {max} Regeln je Feld.",ruleName:"Name",ruleValue:"Wert",ruleDate:"Datum",dateOps:{"=":"gleich","!=":"ungleich",">":"nach",">=":"ab","<":"vor","<=":"bis",between:"zwischen",notBetween:"nicht zwischen"},lastOp:{one:"im letzten",other:"in den letzten"},ruleUnits:{year:{one:"Jahr",other:"Jahren"},month:{one:"Monat",other:"Monaten"},day:{one:"Tag",other:"Tagen"}},ruleWhose:"Eintr\xE4ge von {field} mit Gesamtwert",ruleFixed:"So behalten, wie die Ansicht ihn hat; die Regeln hier k\xF6nnen ihn noch nicht \xE4ndern.",blanksOut:"Leere Eintr\xE4ge werden nicht behalten.",rulesBlanks:{one:"Auch Eintr\xE4ge ohne Wert behalten ({rows} Zeile)",other:"Auch Eintr\xE4ge ohne Wert behalten ({rows} Zeilen)"},ruleUnit:"Einheit",moveLeft:"Nach links",moveRight:"Nach rechts",remove:"Feld entfernen",chartAutoNow:"Jetzt: {type}",sharedViews:"Gemeinsame Ansichten",myViews:"Meine Ansichten",noViews:"Noch keine gespeicherten Ansichten.",noViewsStore:"Noch keine. Gespeicherte Ansichten bleiben nur in diesem Browser.",publishView:"{name} als gemeinsame Ansicht ver\xF6ffentlichen",publishConfirm:"\u201E{name}\u201C als gemeinsame Ansicht ver\xF6ffentlichen? Alle, die diesen Bericht nutzen, sehen sie.",publishAction:"Ver\xF6ffentlichen",storeNote:"Nur in diesem Browser gespeichert: nicht auf anderen Ger\xE4ten, und weg, wenn die Websitedaten gel\xF6scht werden.",storeFull:"dieser Browser beh\xE4lt h\xF6chstens {max} Ansichten",storeTooLarge:"die Ansichten br\xE4uchten mehr als {max} Zeichen",storeRefused:"dieser Browser hat sie nicht behalten (Speicher gesperrt oder voll)",storeChanged:"die Ansichten wurden in einem anderen Tab ge\xE4ndert; das Men\xFC neu \xF6ffnen",viewSheet:"Blatt \u201E{sheet}\u201C",toastSaved:"Ansicht \u201E{name}\u201C gespeichert",toastDeleted:"Ansicht \u201E{name}\u201C gel\xF6scht",toastPublished:"Ansicht \u201E{name}\u201C ver\xF6ffentlicht",toastSaveFailed:"Die Ansicht konnte nicht gespeichert werden: {message}",toastDeleteFailed:"Die Ansicht konnte nicht gel\xF6scht werden: {message}",toastPublishFailed:"Die Ansicht konnte nicht ver\xF6ffentlicht werden: {message}",toastSaveRejected:"Der Server konnte die Ansicht nicht speichern.",toastDeleteRejected:"Der Server konnte die Ansicht nicht l\xF6schen.",toastPublishRejected:"Der Server konnte die Ansicht nicht ver\xF6ffentlichen.",deleteView:"{name} l\xF6schen",deleteConfirm:"\u201E{name}\u201C l\xF6schen?",deleteAction:"L\xF6schen",saveView:"Aktuelle Ansicht speichern",viewName:"Name der Ansicht",thisView:"Diese Ansicht",saveNamed:"\u201E{name}\u201C speichern",saveAs:"Speichern unter\u2026",saveSharedLocked:"Gemeinsame Ansicht: nicht \xE4nderbar. \u201ESpeichern unter\u201C nutzen.",saveNotInViews:"Noch nicht gespeichert. \u201ESpeichern unter\u201C nutzen.",replaceConfirm:"\u201E{name}\u201C gibt es schon. Ersetzen?",replaceAction:"Ersetzen",replaceSharedConfirm:"Die gemeinsame Ansicht \u201E{name}\u201C f\xFCr alle ersetzen?",save:"Speichern",cancel:"Abbrechen",expandAll:"Alle aufklappen",collapseAll:"Alle zuklappen",aggregation:"Zusammenfassen mit",moreStatistics:"Weitere Statistiken",showAsNone:"Der Wert selbst",moreCalculations:"Weitere Berechnungen",showAsNames:{percentOfGrandTotal:"% des Gesamtergebnisses",percentOfRowTotal:"% der Zeilensumme",percentOfColumnTotal:"% der Spaltensumme",percentOfParentRow:"% der \xFCbergeordneten Zeile",percentOfParentColumn:"% der \xFCbergeordneten Spalte",differenceFromPrevious:"Differenz zum vorherigen",percentDifferenceFromPrevious:"% Differenz zum vorherigen",runningTotal:"Laufende Summe",percentRunningTotal:"% laufende Summe",rankAscending:"Rang, kleinster zuerst",rankDescending:"Rang, gr\xF6\xDFter zuerst"},along:"Entlang",format:"Zahlenformat",formatAuto:"Automatisch",formats:{number:"Zahl","number:0":"Zahl ohne Nachkommastellen","number:2":"Zahl mit 2 Nachkommastellen",integer:"Ganze Zahl",currency:"W\xE4hrung",percent:"Prozent",compact:"Kompakt (1,2 Tsd.)",bytes:"Bytes (KB, MB)","duration:h":"Dauer aus Stunden","duration:s":"Dauer aus Sekunden"},conditional:"Hervorheben",conditionalNone:"Keine",colorScale:"Farbskala",dataBar:"Datenbalken",rename:"Name",sortOldest:"\xC4lteste zuerst",sortNewest:"Neueste zuerst",groupNone:"Keine Gruppierung (jedes Datum mit Uhrzeit)",groupTimeline:"Entlang der Zeitachse",groupCyclic:"Gleicher Zeitraum in jedem Jahr",unitHints:{year:"2025",yearQuarter:"Q1 2025",yearMonth:"Jan. 2025",yearWeek:"2025-W03",day:"15.01.2025",quarter:"Q1 jedes Jahres",month:"Jan. jedes Jahres",week:"W03 jedes Jahres",weekday:"Mo. bis So.",hour:"00:00 bis 23:00",bin:""},bins:"Zahlenbereiche",binsState:"Bereiche zu {size} ab {start}",binSize:"Bereichsgr\xF6\xDFe",binStart:"Beginnt bei",binStartFar:"Bereiche ab {start} k\xF6nnen die Werte dieses Felds ({min} bis {max}) nicht fassen: Jede Zeile w\xE4re leer. Einen Beginn n\xE4her an den Werten w\xE4hlen.",apply:"Anwenden",topN:"Oberste Eintr\xE4ge",topCount:"Anzahl",bottom:"Unterste",topBy:"nach",topTies:"Auch Eintr\xE4ge mit demselben Wert wie der letzte zeigen",topShown:{one:"{count} Eintrag angezeigt",other:"{count} Eintr\xE4ge angezeigt"},topTiesGroups:"Eine Gruppe kann mehr als {count} Eintr\xE4ge zeigen.",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:"Tabelle als CSV (.csv)",exportPng:"Diagramm als Bild (.png)",exportSvg:"Diagramm als Bild (.svg)",exportHtml:"HTML-Bericht (.html)",exportPrintGroup:"Drucken",exportPrint:"Drucken oder als PDF speichern\u2026",exportPngNeedsChart:"Zuerst zum Diagramm wechseln.",exportNeedsField:"Zuerst ein Feld hinzuf\xFCgen.",exportDataGroup:"Quelldaten",exportDataCsv:"Alle Zeilen als CSV (.csv)",exportDataJson:"Alle Zeilen als JSON (.json)",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.",toastPrintBlocked:"Diese Seite erlaubt das Drucken des Berichts nicht. Stattdessen den HTML-Bericht herunterladen.",drillTitle:"Zeilen hinter diesem Wert",drillCount:{one:"{count} Zeile",other:"{count} Zeilen"},drillShown:"Die ersten {shown} von {count} Zeilen",drillCopy:"Kopieren",drillJson:"Als JSON kopieren",drillCsv:"CSV herunterladen",drillXlsx:"Excel herunterladen",drillPart:"{shown} von {count} Zeilen",drillCopied:"{rows} kopiert: tabulatorgetrennt, wird in Excel oder Google Sheets in Spalten eingef\xFCgt",drillCopiedJson:"{rows} als JSON kopiert",drillExported:"{file} exportiert ({rows})",drillExportNote:"Enth\xE4lt die ersten {shown} von {count} Zeilen, wie hier gezeigt.",showTips:"Tipps zeigen",showSettingInfo:"Erkl\xE4rungen zeigen",resetTips:"Ausgeblendete Tipps wieder zeigen",sectionChanged:", ge\xE4ndert",help:"Hilfe",shortcutsTitle:"Tastenk\xFCrzel",keys:{Mod:"Strg",Shift:"Umschalt","Arrow keys":"Pfeiltasten",Enter:"Eingabe",Space:"Leertaste",Escape:"Esc",F10:"F10"},shortcuts:{undo:"R\xFCckg\xE4ngig",redo:"Wiederholen",move:"Zwischen den Werten der Tabelle wechseln",open:"Die Zeilen hinter einem Wert \xF6ffnen; nach einer \xDCberschrift sortieren; ein Men\xFC \xF6ffnen",drag:"Ein Feld oder einen Chip aufnehmen und ablegen",close:"Ein Men\xFC, ein Fenster oder einen Tipp schlie\xDFen",fields:"In der Feldliste: auf und ab zwischen den Feldern, links und rechts zum Griff eines Felds, seinem \u201Ei\u201C und seinem Men\xFC",fieldMenu:"Das Men\xFC des Felds im Fokus \xF6ffnen"},valueLabels:"Wertbeschriftung",valueLabelNames:{auto:"Automatisch",off:"Aus",value:"Wert",percent:"Prozent",both:"Wert und Prozent"},legend:"Legende",legendNames:{auto:"Automatisch",bottom:"Unten",right:"Rechts",off:"Aus"},chartTitle:"Titel",chartTitleNone:"Kein Titel",smoothLines:"Gegl\xE4ttete Linien",labelPosition:"Beschriftung",labelPositionNames:{outside:"Au\xDFen",inside:"Innen"},axisLabels:"Achsenbeschriftung",axisLabelNames:{auto:"Automatisch",all:"Alle (schr\xE4g)",nth:"Jede n-te"},groupLabels:"Gruppen unter der Achse",groupLabelNames:{auto:"Automatisch",on:"Ein",off:"Aus"},defaultName:"Standardnamen verwenden",shareThisView:"Diese Ansicht teilen",copyLink:"Link kopieren",copyJson:"Ansicht als JSON kopieren",downloadView:"Ansicht herunterladen (.pivotkit.json)",sharePrivacy:"Eine Ansicht enth\xE4lt die Namen der Felder und in ihren Filtern die dort gew\xE4hlten Werte: Nur dort teilen, wo diese gesehen werden d\xFCrfen.",loadView:"Ansichtsdatei \xF6ffnen\u2026",loadViewHint:"Eine Ansichtsdatei, eine Ansicht als JSON oder einen Link einf\xFCgen oder eine .pivotkit.json-Datei w\xE4hlen.",loadViewText:"Ansicht als JSON oder Link",chooseFile:"Datei w\xE4hlen\u2026",load:"Laden",loadCheckTitle:"Diese Ansicht passt vielleicht nicht zu diesen Daten",loadAnyway:"Trotzdem laden",switchAndLoad:"Zu \u201E{source}\u201C wechseln und laden",switchStartsFresh:"Der Wechsel zeigt die anderen Daten mit dieser Ansicht; R\xFCckg\xE4ngig beginnt dort.",numberInvalid:"Eine Zahl eingeben, etwa {example}.",countInvalid:"Eine ganze Zahl ab 1 eingeben.",countMax:"Eine ganze Zahl bis {max} eingeben.",sizeInvalid:"Eine Zahl \xFCber 0 eingeben, etwa {example}.",valueFilterBy:"Wert",valueFilterOp:"Bedingung",valueFilterNumber:"Zahl",valueFilterTo:"und",valueOps:{"=":"gleich","!=":"ungleich",">":"gr\xF6\xDFer als",">=":"mindestens","<":"kleiner als","<=":"h\xF6chstens",between:"zwischen",notBetween:"nicht zwischen"},moreFormats:"Weitere Formate",totals:"Summen",grandTotalRow:"Gesamtzeile",grandTotalColumn:"Gesamtspalte",rowSubtotals:"Teilergebnisse der Zeilen",colSubtotals:"Teilergebnisse der Spalten",needsRowField:"Braucht ein Feld in Zeilen.",needsColField:"Braucht ein Feld in Spalten.",needsRowFields:"Braucht zwei oder mehr Felder in Zeilen.",needsColFields:"Braucht zwei oder mehr Felder in Spalten.",needsValue:"Braucht ein Feld in Werten.",expandNothing:"Nichts ist zugeklappt.",collapseNeedsRows:"Braucht zwei oder mehr Felder in Zeilen.",collapseAllDone:"Alle Gruppen sind schon zugeklappt.",groupsCollapsed:{one:"{count} Gruppe zugeklappt",other:"{count} Gruppen zugeklappt"},groupsExpanded:{one:"{count} Gruppe aufgeklappt",other:"{count} Gruppen aufgeklappt"},chartDisplay:"Darstellung",toastExported:"{file} exportiert",toastLinkCopied:"Link kopiert",toastJsonCopied:"Ansicht als JSON kopiert",toastCopyFailed:"Diese Seite erlaubt kein Kopieren. Stattdessen \u201EAnsicht herunterladen\u201C verwenden.",toastLinkTooLong:"Diese Ansicht ist zu gro\xDF f\xFCr einen Link. Stattdessen \u201EAnsicht herunterladen\u201C verwenden."};export{e as de};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{$ as Fe,A as bn,B as Wt,C as Ke,D as So,F as xo,G as Co,K as ke,Ka as Vo,L as Nn,M as Sn,N as Et,W as Rt,X as bt,Xa as jo,Y as To,Z as Oo,_ as ve,a as hn,aa as Lo,b as vo,ba as Ao,c as yo,ca as Nt,d as gn,da as Io,ea as xn,fa as Cn,g as wo,ga as Ro,h as yt,ha as Tn,i as wt,j as lt,k as Eo,l as Ht,la as $o,m as bo,n as kn,na as De,oa as On,p as xe,pa as $t,q as vn,qa as Ln,r as Gt,ra as An,s as yn,sa as In,ta as Fo,ua as Do,w as No,x as wn,xa as Po,ya as Mo,z as En,za as Bo}from"./chunk-7V4PAOK7.js";import{a as _t,b as ko}from"./chunk-R6GXMVRO.js";import{A as ho,B as go,a as Ve,d as ie,e as eo,f as gt,h as to,i as no,j as Z,o as Jt,r as dn,s as oo,t as Kt,u as Je,v as fn,x as fo,y as x,z as H}from"./chunk-YMLEL3SK.js";import{a as st,f as co,g as ue,i as pn}from"./chunk-HFUBAP3D.js";import{d as lo,f as zt,m as io}from"./chunk-OHKPNELV.js";import{d as kt,e as vt,f as uo,g as mo,h as po}from"./chunk-CHSIHYYE.js";import{F as so,P as at,R as rt,c as ao,n as ee,r as ro}from"./chunk-KO3EKDH5.js";import{d as It}from"./chunk-XR4CMFGN.js";import"./chunk-5QXN3X2Q.js";import{c as Be}from"./chunk-DCANE7XH.js";var Uo={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 subtotal row (\u201CNorth Total\u201D) under each group of the outer field that has more than one item.",colSubtotals:"With two or more fields in Columns: a subtotal column (\u201CNorth Total\u201D) after each group of the outer field that has more than one item.",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:"The table as it is shown, with its totals and its percentages, as plain text. Not the rows behind it: that is Source data, below.",exportHtml:"A page with the table as it is shown, the chart when the chart is shown, and the filters: opens in any browser, prints well.",exportPrint:"The same report in the browser's print dialog: print it, or pick Save as PDF there.",exportDataCsv:"All the original rows behind the report, before grouping, filters and totals, with every field. For your own analysis, or to build this report again elsewhere with its view (Views \u2192 Download view). Excel set to a comma decimal: open it with Data \u2192 From Text/CSV.",exportDataJson:"The same rows as JSON, for a program: numbers as numbers, text as text, a blank as null.",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; outside when a donut's ring is too thin for it.",sharedView:"Only admins can change shared views.",valuesFilter:"Values are not filtered here: filter a field on Rows or Columns through its menu, or move a field to Filters."},back:"Back",backTo:"Back to the menu of {name}",levelTitle:"{name} \u203A {topic}",searchMenu:"Search in the menu of {name}",searchMenuShort:"Search in this menu (key /)",searchResults:"Results",searchNothing:"Nothing found. Try another word, or clear the search.",sortByValue:"Sort by value",sortOldestShort:"Oldest",sortNewestShort:"Newest",filterTopic:"Filter",filterAll:"All",groupTopic:"Group",groupNoneShort:"None",off:"Off",moveToTitle:"Move to",topOwn:"Top N\u2026",binsOff:"Remove ranges",valueConditionTitle:"Condition on a value",nameHint:"Applies with Enter or when you leave the field; Escape gives the name back.",showAsKeywords:"percent % share",nameKeywords:"rename label title",filterKeywords:"values pick choose rule rules condition range dates",formatDecimals:{one:"Number, {count} decimal",other:"Number, {count} decimals"},listAnd:" and ",summaryAll:"All {total} {noun} shown",summarySome:"{shown} of {total} {noun} shown",summaryNone:"Nothing shown",summaryOk:"Every item is picked, no rules.",summaryKept:"Every item is picked; the rules keep them all.",summaryQuickOnly:"Every item is picked; {quick}.",summaryPicks:"{count} left out by your picks",summaryQuick:"{count} outside {quick}",summaryRules:{one:"{items} left out by the rule",other:"{items} left out by the rules"},summaryTotals:{one:"{items} left out by the rule on the total",other:"{items} left out by the rules on the totals"},summaryRows:"{rows} of {total} rows",summaryData:"data {range}",yearsAll:"{years} combined",yearsOne:"{year} only",emptyPicks:"Nothing is picked.",emptyRules:"No {noun} meets {rules}.",emptyTotal:"No {noun} has a total {rule} \u2013 {spread}.",totalSpread:"the totals go from {low} ({lowItem}) to {high} ({highItem})",totalWords:"{measure} that {op} {number}",totalWordsTwo:"{measure} that {op} {from} and {to}",resetFilter:"Reset filter",nouns:{item:{one:"item",other:"items"},value:{one:"value",other:"values"},date:{one:"date",other:"dates"},year:{one:"year",other:"years"},quarter:{one:"quarter",other:"quarters"},month:{one:"month",other:"months"},week:{one:"week",other:"weeks"},day:{one:"day",other:"days"},weekday:{one:"weekday",other:"weekdays"},hour:{one:"hour",other:"hours"},range:{one:"range",other:"ranges"}},quickTitle:"Quick choices",quickCount:{year:"Number of years",quarter:"Number of quarters",month:"Number of months",week:"Number of weeks",day:"Number of days"},quickRows:"{rows} rows",quickHidden:{one:"{choices} is not offered: the data end {latest}.",other:"{choices} are not offered: the data end {latest}."},quickCurrent:{year:"Include the current year",quarter:"Include the current quarter",month:"Include the current month",week:"Include the current week",day:"Include today"},quickMore:"More choices",quickRolling:"Rolling instead of whole calendar periods",quickUnitOf:"Unit of \u201C{choice} \u2026\u201D",quickThisUnit:"Current period",anchorLabel:"Counted back from",anchorToday:"today ({date})",anchorLatest:"the latest record ({date})",anchorFirst:"the first record ({date})",anchorDate:"a date\u2026",anchorDay:"The date counted from",anchorDayIncomplete:"Enter a whole date; the ranges still count from {date}.",anchorUseLatest:"Count back from the latest record ({date}) instead",quickLine:"Quick choice: {text}",changeAbove:"change it above",yearsCombined:"Years combined",yearsCombinedHint:"one {noun} over the years ticked",yearsCombinedOne:"The table shows {year} only.",pickItems:"Pick items",picksState:"{picked} of {total} picked",picksAll:"all {total} picked",clear:"Clear",clearPicks:"Clear picks",rulesState:{one:"{count} rule",other:"{count} rules"},rulesNoneState:"No rules",removeAll:"Remove",removeRules:"Remove the rules",tailOut:{one:"Left out by the rules ({count}) \u2013 its tick applies again once they go",other:"Left out by the rules ({count}) \u2013 their ticks apply again once they go"},rulesKeep:"Keep the {noun} for which all of these are true:",rulesNone:"Keep the {noun} for which all of these are true. Add one below.",ruleKeeps:"Keeps {kept} of {total} {noun}",ruleKeepsNone:"Keeps 0 of {total} {noun} \u2013 {spread}.",ruleIncomplete:"Applies once it is complete.",explainRule:"Explain this rule",ruleInfo:{number:"Compares the value itself, not its total. Example: \u201Cis between 20 and 25\u201D keeps the values from 20 to 25.",date:"Compares each date by its calendar day. Example: \u201Cis before Mar 1, 2022\u201D keeps every day up to Feb 28, 2022.",group:"Compares each {noun} by its place on the time line. Example: \u201Cis from 2022\u201D keeps 2022 and every later one.",cyclic:"Compares each {noun} by its place in the year, over all the years combined. Example: \u201Cis from Jun\u201D keeps Jun to Dec.",total:"The total is the {noun}\u2019s Grand Total \u2013 the {measure} over {scope}, as the Grand Total row shows it \u2013 not a single cell. Example: \u201Cis greater than 20\u201D keeps the {nouns} whose total is above 20.",name:"Compares the name of each {noun} as the table writes it. Example: \u201Ccontains ar\u201D keeps Mar and March."},scopeItems:"all {count} {field} items",scopeDates:"the dates {range}",scopeRows:"every row",pickerSearch:"Search items",pickerMatch:"{count} of {total} match",pickerNone:"No match",rulesTitle:"Rules",ruleAnd:"and",addRule:"Add a rule",addRuleItem:"Compare {field}",addRuleTotal:"Compare its total",addRuleName:"Rule on the name",removeRule:"Remove this rule",rulesFull:"At most {max} rules per field.",ruleName:"The name",ruleValue:"Value",ruleDate:"Date",dateOps:{"=":"is","!=":"is not",">":"is after",">=":"is from","<":"is before","<=":"is up to",between:"is between",notBetween:"is not between"},lastOp:{one:"is in the last",other:"is in the last"},ruleUnits:{year:{one:"year",other:"years"},month:{one:"month",other:"months"},day:{one:"day",other:"days"}},ruleWhose:"{field} items whose total",ruleFixed:"Kept as the view has it; the rules here cannot change it yet.",blanksOut:"Blank items are not kept.",rulesBlanks:{one:"Also keep items without a value ({rows} row)",other:"Also keep items without a value ({rows} rows)"},ruleUnit:"Unit",moveLeft:"Move left",moveRight:"Move right",remove:"Remove field",chartAutoNow:"Now: {type}",sharedViews:"Shared views",myViews:"My views",noViews:"No saved views yet.",noViewsStore:"None yet. Saved views stay in this browser only.",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",viewSheet:"Sheet \u201C{sheet}\u201D",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",thisView:"This view",saveNamed:"Save \u201C{name}\u201D",saveAs:"Save as\u2026",saveSharedLocked:"Shared view: you cannot change it. Use Save as.",saveNotInViews:"Not saved yet. Use Save as.",replaceConfirm:"\u201C{name}\u201D exists. Replace it?",replaceAction:"Replace",replaceSharedConfirm:"Replace the shared view \u201C{name}\u201D for everyone?",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",groupNone:"No grouping (every date and time)",groupTimeline:"Along the time line",groupCyclic:"Same period every year",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:"Number ranges",binsState:"Ranges of {size} from {start}",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",topN:"Top items",topCount:"Count",bottom:"Bottom",topBy:"by",topTies:"Also show items with the same value as the last one",topShown:{one:"{count} item shown",other:"{count} items shown"},topTiesGroups:"A group can show more than {count} items.",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:"Table as CSV (.csv)",exportPng:"Chart image (.png)",exportSvg:"Chart image (.svg)",exportHtml:"HTML report (.html)",exportPrintGroup:"Print",exportPrint:"Print or save as PDF\u2026",exportPngNeedsChart:"Switch to Chart first.",exportNeedsField:"Add a field first.",exportDataGroup:"Source data",exportDataCsv:"All rows as CSV (.csv)",exportDataJson:"All rows as JSON (.json)",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.",toastPrintBlocked:"This page does not allow printing the report. Download the HTML report 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",sectionChanged:", changed",help:"Help",shortcutsTitle:"Keyboard shortcuts",keys:{Mod:"Ctrl",Shift:"Shift","Arrow keys":"Arrow keys",Enter:"Enter",Space:"Space",Escape:"Escape",F10:"F10"},shortcuts:{undo:"Undo",redo:"Redo",move:"Move between values in the table",open:"Open the rows behind a value; sort by a header; open a menu",drag:"Pick up a field or chip, and drop it",close:"Close a menu, a panel or a tip",fields:"In the field list: up and down between fields, left and right to a field's grip, its \u201Ci\u201D and its menu",fieldMenu:"Open the menu of the field in focus"},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",shareThisView:"Share this view",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:"Open view file\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.",countMax:"Enter a whole number up to {max}.",sizeInvalid:"Enter a number above 0, such as {example}.",valueFilterBy:"Value",valueFilterOp:"Condition",valueFilterNumber:"Number",valueFilterTo:"and",valueOps:{"=":"is","!=":"is not",">":"is greater than",">=":"is at least","<":"is less than","<=":"is at most",between:"is between",notBetween:"is not between"},moreFormats:"More formats",totals:"Totals",grandTotalRow:"Grand total row",grandTotalColumn:"Grand total column",rowSubtotals:"Row subtotals",colSubtotals:"Column subtotals",needsRowField:"Needs a field in Rows.",needsColField:"Needs a field in Columns.",needsRowFields:"Needs two or more fields in Rows.",needsColFields:"Needs two or more fields in Columns.",needsValue:"Needs a field in Values.",expandNothing:"Nothing is collapsed.",collapseNeedsRows:"Needs two or more fields in Rows.",collapseAllDone:"Every group is collapsed already.",groupsCollapsed:{one:"{count} group collapsed",other:"{count} groups collapsed"},groupsExpanded:{one:"{count} group expanded",other:"{count} groups expanded"},chartDisplay:"Display",toastExported:"Exported {file}",toastLinkCopied:"Link copied",toastJsonCopied:"View copied as JSON",toastCopyFailed:"This page does not allow copying. Use \u201CDownload view\u201D instead.",toastLinkTooLong:"This view is too large for a link. Use \u201CDownload view\u201D instead."},Rn=new Map([["en",Uo]]);function ja(e,t){Rn.set(e,t)}var qa=e=>Rn.has(e),qo=new WeakMap;function Jo(e){let t=Rn.get(e.lang)??Uo,n=qo.get(e);if(n&&n.base===t)return n.out;let o={...e,...go(t,e[ho])};return qo.set(e,{base:t,out:o}),o}var F=Be(Ve(),1);var u=Be(Ve(),1);var q=Be(Ve(),1);var S=Be(Ve(),1),Ct=Be(Ve(),1);var ce=Be(Ve(),1),k=Be(Ve(),1);var ze=Object.freeze({count:500,text:5e6});function Ua(e){try{return JSON.stringify(e)?.length??0}catch{return-1}}function Ko(e){let t={templates:[],issues:[]},n=(a,l)=>t.issues.push({path:a,message:l}),o=e;if(typeof e=="string"){if(e.length>ze.text)return n("",`longer than ${ze.text} characters; not read`),t;try{o=JSON.parse(e)}catch{return n("","not valid JSON"),t}}if(!Array.isArray(o))return n("","not a list of templates"),t;o.length>ze.count&&n("",`${o.length} templates, more than ${ze.count}: the first ${ze.count} are read`);let r=typeof e=="string"?-1/0:0;for(let a=0;a<Math.min(o.length,ze.count);a++){let l=o[a];if(r!==-1/0){let y=Ua(l);if(y<0){n(`[${a}]`,"not JSON; left out");continue}if(r+=y,r>ze.text){n(`[${a}]`,`the templates are longer than ${ze.text} characters as JSON; this one and the rest are left out`);break}}let s=po(l);if(s.failed||!s.view){n(`[${a}]`,`${s.issues.at(-1)?.message??"no view"}; left out`);continue}let i=s.view===l,p=pn(i?Object.hasOwn(s.view,"name")?s.view.name:void 0:s.name,kt.name);if(!p){n(`[${a}]`,"no name; left out");continue}let d={...s.view};i&&delete d.name;let c={name:p,view:d},m=pn(s.description,kt.description);m&&(c.description=m),s.source&&Object.keys(s.source).length>0&&(c.source=s.source),t.templates.push(c),s.issues.forEach(y=>n(`[${a}]${y.path?`.${y.path}`:""}`,y.message))}return t}var j=Be(Ve(),1);var re=Be(Ve(),1),Ja=new Set(["count","countUnique","listUnique"]),Qt=e=>Ja.has(e)?"count":"field";function Mn(e,t,n,o={}){let r=yt(e);if(!r.values[t])return e;let a=e.values[t],l={...r.values[t],...n};if(n.agg&&n.agg!==a.agg){l.showAs=n.showAs??null;let s=o.defaults??{},i=typeof s.format=="string"&&at(s.format)?s.format:null,p=a.format&&a.format!==i?a.format:null;n.format!==void 0?l.format=n.format:p?l.format=Qt(a.agg)===Qt(n.agg)?p:null:l.format=i&&Qt(typeof s.agg=="string"?s.agg:"sum")===Qt(n.agg)?i:null}return r.values[t]=l,r}function Ka(e,t,n){if(!n)return null;for(let o of[n.min,n.max]){let r=Math.floor((o-t)/e),a=t+r*e,l=e*1e-9;if(!Number.isSafeInteger(r)||a+e===a||a>o+l||o>=a+e+l)return"far"}return null}function Pt(e,t,n,o){let r=yt(e),a=r.filters.findIndex(i=>xe(i.field,t)),l=r.filters.filter(i=>!(xe(i.field,t)&&n.includes(i.type))),s=a===-1?l.length:Math.min(a,l.length);return l.splice(s,0,...o),r.filters=l,!yn(r,t)&&Gt(e).some(i=>xe(i,t))&&!l.some(i=>xe(i.field,t))&&r.filters.splice(s,0,kn(t)),r}function zn(e,t,n,o,r=null){let a=yt(e),l=i=>i?a.filters.findIndex(p=>xe(p.field,t)&&JSON.stringify(p)===JSON.stringify(i)):-1,s=l(n);if(s===-1){if(!o)return a;let i=l(r),p=a.filters.map(d=>xe(d.field,t)).lastIndexOf(!0);return a.filters.splice(i===-1?p+1:i,0,o),a}return o?a.filters[s]=o:(a.filters.splice(s,1),!yn(a,t)&&Gt(e).some(i=>xe(i,t))&&!a.filters.some(i=>xe(i.field,t))&&a.filters.splice(s,0,kn(t))),a}function Bn(e,t,n,o){let r=new Set(n.map(l=>JSON.stringify(l))),a=o.filter(l=>!r.has(JSON.stringify(l)));return Pt(e,t,["in"],a.length?[bo(t,a)]:[])}function zo(e,t,n){return Pt(e,t,["text"],n&&n.value!==""?[da(t,n)]:[])}var da=(e,{op:t,value:n,on:o})=>({field:e,type:"text",...Ht(t),value:n,on:o,match:{...ro},blanks:"exclude"}),pa=(e,t)=>e.column(t)?.type==="string"?"value":"label";function fa(e,t,n,o){let r=n?.ties??o?.ties,a=n?{field:t,type:"top",count:n.count,bottom:!!n.bottom,...n.by?{by:n.by}:{},...r==="all"?{ties:"all"}:{}}:null;return o?zn(e,t,o,a):Pt(e,t,["top"],a?[a]:[])}var an=Object.freeze(["relative","compare","value","text"]),_o=10,ct=(e,t,n,o,r=null)=>zn(e,t,n,o,r),za=Object.freeze(["year","yearQuarter"]),Ho=Object.freeze(["day","week","month","quarter","year"]),Go=Object.freeze({day:"day",yearWeek:"week",yearMonth:"month",yearQuarter:"quarter",year:"year"});function ha(e,t,n){let o=Wt(t,n),r=e.column(Ke(t,n))?.type??"string",a=r==="date",l=o?o.by==="day"?"date":"group":r==="number"||r==="date"?r:null,s=a&&!!o&&ue.cyclicUnits.includes(o.by),i=a&&!s,p=o&&Object.hasOwn(Go,o.by)?Go[o.by]:"day",d=i?Ho.slice(Ho.indexOf(p)):[];return{item:l,dates:a,cyclic:s,quick:i,months:i&&!za.includes(o?.by),days:i&&l==="date",unit:o?.by??null,units:d}}function ga(e,t,{labels:n,locale:o,timeZone:r,date:a,labelOf:l,span:s}){return t.type==="value"?Oo(e,t,n,o):Ro(t,n,o,{timeZone:r,date:a,labelOf:l,span:s,weekStart:e.formatting?.weekStart})}function ka(e,t,n,o=[]){let r=ke(e,t,["relative"]),a=ke(e,t,["compare"]);if(n.cyclic){let p=a.filter(va),d=p.length?_a(p,o):null;return d?{id:"yearsCombined",years:d,filters:p}:{id:"all",filters:[]}}let l=n.units??[],s=r.find(p=>l.includes(p.unit)&&!p.not&&p.blanks!=="only");return s?{id:s.direction??"last",unit:s.unit,count:s.count??1,anchor:s.anchor??"today",calendar:s.calendar!==!1,includeCurrent:s.includeCurrent!==!1,filters:[s]}:{id:"all",filters:[]}}function _a(e,t){let n=new Set(t);for(let o of e){let[r,a]=Cn(o.value,o.value2).map(Number);n=new Set([...n].filter(l=>(r<=l&&l<=a)!==o.not))}return n.size?[...n].sort((o,r)=>o-r):null}var va=e=>e.type==="compare"&&e.op==="between"&&e.blanks!=="only"&&Cn(e.value,e.value2)!==null;function Ha(e,t,n,o="exclude"){if(!t.length||t.length===n.length)return[];let r=(s,i)=>`${String(s).padStart(4,"0")}-${i?"12-31":"01-01"}`,a=(s,i,p)=>({field:e,type:"compare",op:"between",value:r(i,!1),value2:r(p,!0),not:s,blanks:o}),l=[a(!1,t[0],t[t.length-1])];for(let s=1;s<t.length;s++)n.some(i=>t[s-1]<i&&i<t[s])&&l.push(a(!0,t[s-1]+1,t[s]-1));return l}function Ga(e,t,n,o){let r=_n(e,t)?"include":"exclude",a=ke(e,t,["compare"]).filter(va).reduce((l,s)=>ct(l,t,s,null),e);return Ha(t,n,o,r).reduce((l,s)=>ct(l,t,null,s),a)}function ya(e,t,n,o){let r=n?wa(t,n):null;return o!==void 0?zn(e,t,o,r):Pt(e,t,["relative"],r?[r]:[])}var wa=(e,{direction:t="last",unit:n,count:o,anchor:r,calendar:a=!0,includeCurrent:l=!0,blanks:s="exclude"})=>({field:e,type:"relative",...t==="last"?{}:{direction:t},unit:n,...t==="this"?{}:{count:o},...a?{}:{calendar:!1},...l||!a||t==="this"?{}:{includeCurrent:!1},...r&&r!=="today"?{anchor:r}:{},not:!1,blanks:s});function Wa(e,t,n){let o=yt(e);for(let r of o.filters)xe(r.field,t)&&r.type==="relative"&&(delete r.anchor,n!=="today"&&(r.anchor=n));return o}var Yt=Object.freeze(["relative","compare","text"]);function _n(e,t){let n=ke(e,t,Yt);return n.length>0&&n.every(o=>o.blanks==="include")}function Qa(e,t,n){let o=yt(e);for(let r of o.filters)xe(r.field,t)&&Yt.includes(r.type)&&(r.blanks=n?"include":"exclude");return o}var Xa=(e,t)=>Pt(e,t,["in","blank",...an],[]);function $n(e,t,n,o,r){let a=zt(e,{...t,rows:[n],cols:[],values:[{...o.field?{field:o.field}:{},agg:o.agg}],filters:r,sort:[]}),l=new Map;if(!a.values.length)return{totals:l,rows:a.rows.length};for(let s of a.rowRoot.children){let i=a.value(s,a.colRoot,0);l.set(JSON.stringify(s.key),typeof i=="number"&&Number.isFinite(i)?i:null)}return{totals:l,rows:a.rows.length}}function Ea(e,t){return t&&!e.some(n=>Et(n,t))?[...e,{field:t.field??null,agg:t.agg}]:e}function Vn(e,t){let n=[];for(let o of e.values){let r={field:o.field??null,agg:o.agg};Sn(o,o.field?t(o.field)??"string":"number")&&!n.some(a=>Et(a,r))&&n.push(r)}return n.length?n:[{field:null,agg:"count"}]}function Ya(e,t,n=[]){let o=new Set(n.map(r=>JSON.stringify(r)));return ke(e,t,an).filter(r=>!o.has(JSON.stringify(r))).reduce((r,a)=>ct(r,t,a,null),e)}var Za=Object.freeze(["grandTotalRow","grandTotalColumn","rowSubtotals","colSubtotals"]),er=Object.freeze({grandTotalRow:{zone:"rows",fields:1,why:"needsRowField"},grandTotalColumn:{zone:"cols",fields:1,why:"needsColField"},rowSubtotals:{zone:"rows",fields:2,why:"needsRowFields"},colSubtotals:{zone:"cols",fields:2,why:"needsColFields"}});function tr(e,t){let n=er[t];return e[n.zone].length<n.fields?n.why:e.values.length>0?null:"needsValue"}function ba(e,t,n){let o=e.column(Ke(t,n))?.type??"string";return o==="date"||o==="boolean"?null:o==="number"?"number":"text"}function nr(e,t,n,o,r){let a=s=>typeof s.field=="string"&&s.field.toLowerCase()===t.toLowerCase(),l=[];n&&n.summary&&l.push(x(o.filterSummary,{shown:n.summary.shown.toLocaleString(r),total:n.summary.total.toLocaleString(r)})),l.push(...n?.rules??[]);for(let s of e.filters.filter(a))(s.type==="value"||s.type==="text"&&!n?.rules)&&l.push(ga(e,s,{labels:o,locale:r,timeZone:"UTC",date:!1}));return l.length?l.join(", "):null}var Wo=e=>Date.parse(e.length>10?`${e}Z`:`${e}T00:00Z`);function or(e,t,n){let o=e.from===null?-1/0:Wo(e.from),r=Wo(e.to)+(e.to.length>10?6e4:864e5),a=0;for(let l=0;l<t.length;l++){let s=t[l];typeof s=="number"&&s>=o&&s<r&&(a+=n[l])}return a}var Hn=300,me=e=>JSON.stringify(e);function Na({items:e,selected:t,onChange:n,labels:o,locale:r,autoFocus:a=!1,tail:l,children:s}){let[i,p]=(0,q.useState)(""),d=ie(),c=vn(e,i),m=l?c.filter(v=>!l.isOut(v)):c,y=l?c.filter(v=>l.isOut(v)):[],g=m.slice(0,Hn),h=v=>{let T=new Set(t);for(let C of c)v?T.add(me(C.value)):T.delete(me(C.value));n(T)},b=v=>{let T=new Set(t),C=me(v);T.has(C)?T.delete(C):T.add(C),n(T)},w=(v,T)=>{let C=me(v.value);return q.default.createElement("li",{key:C,className:`pk-value${T?" pk-value-out":""}`},q.default.createElement("label",null,q.default.createElement("input",{type:"checkbox",name:d,checked:t.has(C),onChange:()=>b(v.value)}),q.default.createElement("span",{className:"pk-value-label"},v.label),q.default.createElement("span",{className:"pk-count"},v.count.toLocaleString(r))),q.default.createElement("button",{type:"button",className:"pk-link pk-only",onClick:()=>n(new Set([C])),"aria-label":`${o.onlyThis}: ${v.label}`},o.onlyThis))};return q.default.createElement(q.default.Fragment,null,q.default.createElement("label",{className:"pk-search"},q.default.createElement(Z,{name:"search"}),q.default.createElement("span",{className:"pk-sr"},o.searchValues),q.default.createElement(De,{type:"search",value:i,placeholder:o.searchValues,onChange:p,clearLabel:o.clearText,"data-autofocus":a?"":void 0,"data-testid":"filter-search"})),q.default.createElement("div",{className:"pk-filter-actions"},q.default.createElement("button",{type:"button",className:"pk-action",onClick:()=>h(!0),"data-testid":"select-all"},o.selectAll),q.default.createElement("button",{type:"button",className:"pk-action",onClick:()=>h(!1),"data-testid":"select-none"},o.selectNone)),q.default.createElement("div",{className:"pk-filter-body"},q.default.createElement("ul",{className:"pk-values",role:"list"},g.map(v=>w(v,!1)),m.length>g.length?q.default.createElement("li",{className:"pk-hint pk-values-more"},x(o.valuesShown,{shown:g.length,total:m.length.toLocaleString(r)})):null,y.length&&l?l.render(y,v=>w(v,!0),c!==e):null),s))}function ar({view:e,base:t,field:n,encoded:o,locale:r,labels:a,commit:l,close:s}){let i=t??e,p=ie(),d=(0,q.useMemo)(()=>st(o,n,{view:i,locale:r,labels:a.core}),[o,n,i,r,a]),c=(0,q.useMemo)(()=>d?d.items.map(O=>O.value):[],[d]),[m,y]=(0,q.useState)(()=>new Set(Nn(i,n,c).map(me))),g=ke(i,n,["text"])[0],[h,b]=(0,q.useState)(g?lt(g):""),[w,v]=(0,q.useState)(g?.value??"");if(!d)return null;let T=ee(n,a.core),C=()=>{let O=Bn(i,n,c.filter(R=>m.has(me(R))),c);O=zo(O,n,h?{op:h,value:w,on:pa(o,n)}:null),s(),l(O,{step:"filter",field:T})},A=ba(o,i,n)??(g?"text":null);return q.default.createElement("form",{className:"pk-filter",onSubmit:O=>{O.preventDefault(),C()}},q.default.createElement("div",{className:"pk-popover-head"},q.default.createElement("h3",null,x(a.filterTitle,{field:T})),q.default.createElement("span",{className:"pk-muted"},x(a.selected,{count:m.size.toLocaleString(r)}))),q.default.createElement(Na,{items:d.items,selected:m,onChange:y,labels:a,locale:r,autoFocus:!0},A?q.default.createElement("fieldset",{className:"pk-condition"},q.default.createElement("legend",null,A==="number"?a.conditionNumber:a.condition),q.default.createElement("select",{name:`${p}-op`,value:h,onChange:O=>b(O.target.value),"aria-label":A==="number"?a.conditionNumber:a.condition},q.default.createElement("option",{value:""},a.conditionNone),wt.text.map(O=>q.default.createElement("option",{key:O,value:O},a.labelOps[O]??O))),h?q.default.createElement(De,{type:"text",value:w,onChange:v,onClear:()=>{!t&&ke(i,n,["text"]).length&&l(zo(i,n,null),{step:"filter",field:T})},clearLabel:a.clearText,"aria-label":a.conditionValue,placeholder:a.conditionValue,maxLength:It.textValue,"data-testid":"filter-condition-text"}):null):null),q.default.createElement("div",{className:"pk-popover-foot"},q.default.createElement("button",{type:"button",className:"pk-btn",onClick:s},a.cancel),q.default.createElement("button",{type:"submit",className:"pk-btn pk-primary","data-testid":"filter-apply"},a.apply)))}function al({target:e,onClose:t,view:n,encoded:o,locale:r,labels:a,commit:l}){let s=(0,q.useMemo)(()=>({current:e?e.anchor:null}),[e]);return q.default.createElement(dn,{open:!!e,anchor:s,onClose:t,label:e?x(a.filterTitle,{field:ee(e.field,a.core)}):"",className:"pk-filter-popover",fill:!0},e?q.default.createElement(ar,{key:e.field,view:n,base:e.base,field:e.field,encoded:o,locale:r,labels:a,commit:l,close:t}):null)}function Mt({id:e,name:t,tabIndex:n}){let{explain:o,labels:r}=(0,Ct.useContext)($t),a=r&&r.settingInfo&&Object.hasOwn(r.settingInfo,e)?r.settingInfo[e]:null;return!o||!r||!a?null:Ct.default.createElement(On,{info:{description:a},name:t,label:x(r.aboutSetting,{setting:t}),labels:r,className:"pk-setting-info",testId:`setting-info-${e}`,tabIndex:n})}function _e({title:e,children:t,info:n}){let o=typeof e=="string"?e:"";return Ct.default.createElement(Kt,{title:e,head:n?Ct.default.createElement(Mt,{id:n,name:o}):null},t)}var Qo=Object.freeze(["number","number:0","number:2","currency","percent"].filter(at)),Xo=Object.freeze(["integer","compact","bytes","duration:h","duration:s"].filter(at)),Yo=ue.showAs.filter(e=>["percentOfGrandTotal","percentOfRowTotal","percentOfColumnTotal"].includes(e)),Zo=Object.freeze({percent:.256,bytes:1536e3,"duration:h":1.5,"duration:s":3725}),jn=Object.freeze([3,5,10]);function Gn(e,t,n,o,r,a,l,s){let i=d=>({step:"moved",field:a,zone:d}),p=wo.filter(d=>d!==t).map(d=>({id:`move-${d}`,text:x(r.moveTo,{zone:r.zones[d]}),icon:"chevronRight",closes:!0,change:()=>({view:No(e,t,n,d,void 0,{type:l,defaults:d==="values"?s:void 0}),note:i(d)})}));return t!=="filters"&&n>0&&p.push({id:"move-left",text:r.moveLeft,icon:"chevronRight",closes:!0,change:()=>({view:wn(e,t,n,n-1),note:{step:"reordered",zone:t}})}),t!=="filters"&&n<o-1&&p.push({id:"move-right",text:r.moveRight,icon:"chevronRight",closes:!0,change:()=>({view:wn(e,t,n,n+1),note:{step:"reordered",zone:t}})}),{id:"move",title:r.moveToTitle,kind:"menu",icon:"swap",groups:[{choices:p}]}}function rr({view:e,zone:t,index:n,field:o,types:r,labels:a,locale:l,state:s,defaultsOf:i,encoded:p}){let d=Ke(e,o),c=ee(o,a.core),m=r.get(d.toLowerCase()),y=m==="date",g=Wt(e,o),h=xo(e,o),b=D=>D.toLocaleString(l,{maximumFractionDigits:6}),w=Ea(Vn(e,D=>r.get(D.toLowerCase())),h?.by==="value"?h.value:null),v=d===o?i?.(d)?.order:void 0,T=Array.isArray(v)&&v.length>0,C=h?.by==="custom"?h.items:T?v:null,A=(D,E,I)=>h?h.by===D&&h.order===E&&(D!=="value"||Et(h.value,I)):D==="label"&&E==="asc",O=(D,E,I,V,U,X)=>({id:`sort-${D}`,text:E,icon:X,checked:A(I,V,U),change:()=>{let J=I==="value"?{by:I,order:V,value:U}:I==="custom"?{by:I,order:V,items:[...C]}:{by:I,order:V};return{view:So(e,o,Co(J,T)),note:{step:"sort",field:c}}}}),R=w.flatMap((D,E)=>{let I=bt(e,D,a);return[O(`value-desc-${E}`,x(a.sortValueDesc,{value:I}),"value","desc",D,"sortDesc"),O(`value-asc-${E}`,x(a.sortValueAsc,{value:I}),"value","asc",D,"sortAsc")]});C&&R.push(O("custom",a.sortCustom,"custom","asc",null,"sortAsc"),O("custom-desc",a.sortCustomDesc,"custom","desc",null,"sortDesc"));let f=h&&h.by!=="label"?To(e,h,a):null,$=[{id:"sort",title:a.sort,kind:"segmented",icon:"sortAsc",state:f,changed:!!f,groups:[{choices:[O("label-asc",y?a.sortOldestShort:a.sortLabelAsc,"label","asc",null),O("label-desc",y?a.sortNewestShort:a.sortLabelDesc,"label","desc",null)]}]},{id:"sortValue",title:a.sortByValue,kind:R.length<=2?"inline":"menu",icon:"sortDesc",state:f,changed:!!f,groups:[{choices:R}]},Sa({view:e,field:o,labels:a,locale:l,state:s,encoded:p})];if(y){let D=I=>()=>{let V=ee(d,a.core),U=I?Tn(V,I,a):null;return{view:bn(e,o,I,{name:U??void 0}).view,note:{step:"group",field:V}}},E=I=>({id:`group-${I}`,text:a.units[I]??I,hint:a.unitHints[I]||void 0,checked:g?.by===I,closes:!0,change:D(I)});$.push({id:"group",title:a.groupTopic,kind:"menu",icon:"date",state:g?a.units[g.by]??g.by:a.groupNoneShort,changed:!!g,groups:[{title:a.groupTimeline,choices:ue.timelineUnits.map(E)},{title:a.groupCyclic,choices:ue.cyclicUnits.map(E)},{choices:[{id:"group-none",text:a.groupNone,checked:!g,closes:!0,change:D(null)}]}]})}else if(m==="number"){let D=g?.by==="bin"?g:null;$.push({id:"bins",title:a.bins,kind:"panel",icon:"number",state:D?x(a.binsState,{size:b(D.size),start:b(D.origin??0)}):a.off,changed:!!D})}let P=ke(e,o,["top"])[0],K=P?.by??Vn(e,D=>r.get(D.toLowerCase()))[0];return $.push({id:"top",title:a.topN,kind:"panel",icon:"top",state:P?ir(e,P,a,l):a.off,changed:!!P,searchExtra:jn.map(D=>({id:`top-${D}`,text:x(a.topBadge,{count:D.toLocaleString(l)}),choice:{id:`top-${D}`,text:x(a.topBadge,{count:D.toLocaleString(l)}),checked:!!(P&&!P.bottom&&P.count===D),change:()=>({view:fa(e,o,{count:D,bottom:!1,by:K},P),note:{step:"top",field:c}})}}))}),$.push(Gn(e,t,n,e[t].length,a,c,m,i?.(o))),$}var sr=/\d+/;function Sa({view:e,field:t,labels:n,locale:o,state:r,encoded:a}){let s={step:"filter",field:ee(t,n.core)},i=nr(e,t,r,n,o),p=a?ha(a,e,t):null,d=a?.timeZone??"UTC",c=y=>y.charAt(0).toLocaleUpperCase(o)+y.slice(1),m=p?.quick?y=>{let g=Number(sr.exec(y)?.[0]);if(!Number.isSafeInteger(g)||g<1)return[];let h=g>ue.relativeMaxCount?[]:p.months?["year","month"]:["year"],b=ke(e,t,["relative"])[0]?.anchor,w=ka(e,t,p).filters[0]??null,v=_n(e,t)?"include":"exclude",T=En(a,Ke(e,t)),C=h.map(R=>{let f=c(xn({unit:R,count:g,anchor:b},n,o,d,void 0,T));return{id:`quick-${R}-${g}`,text:f,choice:{id:`quick-${R}-${g}`,text:f,change:()=>({view:ya(e,t,{unit:R,count:g,anchor:b,blanks:v},w),note:s})}}});return p.item==="group"&&g>=1e3&&g<=9999&&e.derived.some(R=>R.name.toLowerCase()===t.toLowerCase()&&R.by==="year")?[...[">=","<=","<",">"].map(R=>{let f={field:t,type:"compare",op:R,value:g,not:!1,blanks:"exclude"},$=c(x(n.compareShort[R],{value:String(g)}));return{id:`compare-${R}-${g}`,text:$,choice:{id:`compare-${R}-${g}`,text:$,change:()=>({view:ct(e,t,null,f),note:s})}}}),...C]:C}:void 0;return{id:"filter",title:n.filterTopic,kind:"panel",icon:"filter",state:i??n.filterAll,changed:i!==null,keywords:n.filterKeywords,searchExtra:[{id:"open-filter-rules",text:n.rulesTitle,focus:"conditions"},{id:"open-filter-text",text:n.addRuleName,focus:"conditions",keywords:Object.values(n.labelOps).join(" ")},{id:"open-filter-value",text:n.addRuleTotal,focus:"conditions"}],searchFor:m}}function lr({view:e,index:t,field:n,types:o,labels:r,locale:a,state:l,encoded:s}){let i=o.get(Ke(e,n).toLowerCase());return[Sa({view:e,field:n,labels:r,locale:a,state:l,encoded:s}),Gn(e,"filters",t,Gt(e).length,r,ee(n,r.core),i)]}function ir(e,t,n,o){let r=t.by??(e.values?.[0]?{field:e.values[0].field??null,agg:e.values[0].agg}:null);return`${x(t.bottom?n.bottomBadge:n.topBadge,{count:t.count.toLocaleString(o)})} ${x(n.by,{value:bt(e,r,n)})}`}function cr(e,t,n){if(Object.hasOwn(t.formats,e))return t.formats[e];let o=/^number:(\d+)$/.exec(e);if(o)return H(t.formatDecimals,Number(o[1]),{lang:t.lang,locale:n});let r=e.split(":")[0];return Object.hasOwn(t.formats,r)?t.formats[r]:e}function ur({view:e,index:t,types:n,labels:o,locale:r,defaultsOf:a,earlier:l}){let s=e.values[t],i=s.field?n.get(s.field.toLowerCase())??"string":"number",p=s.field?a?.(s.field):void 0,d=Rt(s,o),c=b=>()=>({view:Mn(e,t,b,{defaults:p}),note:{step:"value",field:d}}),m=s.field?ao(i):["count"],y=b=>({id:`agg-${b}`,text:o.core.aggregators[b]??b,checked:s.agg===b,closes:!0,change:c({agg:b})}),g=m.filter(b=>!ue.commonAggregators.includes(b)),h=[{id:"summarize",title:o.aggregation,kind:"menu",icon:"sigma",state:o.core.aggregators[s.agg]??s.agg,groups:[{choices:ue.commonAggregators.filter(b=>m.includes(b)).map(y)},...g.length?[{title:o.moreStatistics,choices:g.map(y)}]:[]]}];if(Sn(s,i)){let b=f=>{let $=o.showAsNames[f]??f;return{id:`showas-${f}`,text:$,keywords:$.includes("%")?o.showAsKeywords:void 0,checked:s.showAs?.type===f,change:c({showAs:{type:f,axis:s.showAs?.axis??"rows"}})}},w=s.showAs&&ue.showAsAlongAxis.includes(s.showAs.type)?s.showAs:null;h.push({id:"showAs",title:o.showAs,kind:"menu",info:"showAs",icon:"table",state:s.showAs?o.showAsNames[s.showAs.type]??s.showAs.type:o.showAsNone,changed:!!s.showAs,groups:[{choices:[{id:"showas-none",text:o.showAsNone,checked:!s.showAs,change:c({showAs:null})},...Yo.map(b)]},{title:o.moreCalculations,choices:ue.showAs.filter(f=>!Yo.includes(f)).map(b)},...w?[{title:o.along,choices:["rows","cols"].map(f=>({id:`along-${f}`,text:o.zones[f],checked:w.axis===f,change:c({showAs:{...w,axis:f}})}))}]:[]]});let v=f=>rt(f,{locale:r})(Object.hasOwn(Zo,f)?Zo[f]:1234.5),T=f=>({id:`format-${f}`,text:o.formats[f]??f,hint:v(f),checked:s.format===f,change:c({format:f})}),C=s.format?cr(s.format,o,r):o.formatAuto,A=!s.format||Qo.includes(s.format)||Xo.includes(s.format);h.push({id:"format",title:o.format,kind:"menu",icon:"number",state:C,changed:!!s.format&&s.format!==p?.format,groups:[{choices:[...A?[]:[{id:"format-current",text:C,checked:!0,change:c({format:s.format})}],{id:"format-auto",text:o.formatAuto,checked:!s.format,change:c({format:null})},...Qo.map(T)]},{title:o.moreFormats,choices:Xo.map(T)}]});let O=f=>{let $=P=>P.agg===s.agg&&(P.field??null)===(s.field??null);for(let P of[e,...[...l?.()??[]].reverse()]){let K=(P.values??[]).find($)?.conditional;if(K?.type===f)return K}return f==="colorScale"?{type:f}:{type:f,color:null}},R=(f,$,P)=>{let K=(s.conditional?.type??null)===P;return{id:f,text:$,checked:K,change:K?()=>null:c({conditional:P?O(P):null})}};h.push({id:"highlight",title:o.conditional,kind:"segmented",icon:"sparkle",changed:!!s.conditional,groups:[{choices:[R("cond-none",o.conditionalNone,null),R("cond-colorScale",o.colorScale,"colorScale"),R("cond-dataBar",o.dataBar,"dataBar")]}]})}return h.push({id:"name",title:o.rename,kind:"panel",icon:"text",state:d,changed:!!s.label,keywords:o.nameKeywords}),h.push(Gn(e,"values",t,e.values.length,o,d,i)),h}function mr({view:e,labels:t,folding:n,tips:o,explanations:r,act:a}){let l=[];return o.controls&&l.push({id:"show-tips",text:t.showTips,checkbox:!0,checked:o.on,run:()=>a.tipsOn(!o.on)}),r&&l.push({id:"show-explanations",text:t.showSettingInfo,checkbox:!0,checked:r.on,run:()=>a.explain(!r.on)}),o.controls&&l.push({id:"reset-tips",text:t.resetTips,icon:"reset",disabled:!o.canReset,run:a.resetTips}),[{id:"totals",title:t.totals,kind:"inline",titled:!0,groups:[{choices:Za.map(s=>{let i=tr(e,s);return{id:`total-${s}`,text:t[s],checkbox:!0,checked:i===null&&e.totals[s],disabled:i!==null,reason:i?t[i]:void 0,info:s,run:()=>a.total(s,!e.totals[s])}})}]},{id:"rows",title:t.zones.rows,kind:"inline",titled:!0,groups:[{choices:[{id:"expand-all",text:t.expandAll,icon:"plus",closes:!0,disabled:!n.canExpand,reason:n.why.expand?t[n.why.expand]:void 0,run:a.expand},{id:"collapse-all",text:t.collapseAll,icon:"chevronRight",closes:!0,disabled:!n.canCollapse,reason:n.why.collapse?t[n.why.collapse]:void 0,run:a.collapse}]}]},{id:"help",title:t.help,kind:"inline",titled:!0,groups:[{choices:l}]},{id:"shortcuts",title:t.shortcutsTitle,kind:"panel",icon:"info"}]}function dr(e){let t=new Map;return e.map(n=>{let o=`${n.scope}:${n.name}`;return t.set(o,(t.get(o)??0)+1),`entry:${o}:${t.get(o)}`})}var pr=(e,t)=>e[t+1]??e[t-1];function fr(e,t=""){return e.flatMap(n=>{if(n.hidden)return[];let r=[...t&&n.searchFor?n.searchFor(t):[],...n.searchExtra??[]].map(a=>({id:a.id,text:a.text,path:n.title,topic:n,choice:a.choice,focus:a.focus,keywords:a.keywords}));return n.kind==="panel"?[{id:`open-${n.id}`,text:n.title,path:"",topic:n},...r]:(n.groups??[]).flatMap(a=>a.choices.map(l=>({id:l.id,text:l.text,path:[n.title,a.title].filter(Boolean).join(" \u203A "),topic:n,choice:l})))})}var hr=8;function gr(e,t,n){let o=i=>i.toLocaleLowerCase(n),r=o(t).split(/\s+/).filter(Boolean);if(!r.length)return[];let a=e.filter(i=>{let p=o(`${i.text} ${i.path} ${i.topic.keywords??""} ${i.choice?.keywords??i.keywords??""}`);return r.every(d=>p.includes(d))}),l=i=>o(i.choice?.keywords??"").split(/\s+/).includes(r[0]),s=i=>l(i)?0:o(i.text).startsWith(r[0])?1:2;return[0,1,2].flatMap(i=>a.filter(p=>s(p)===i)).slice(0,hr)}var xa=(e,t,n,o)=>`${e}${t?`, ${t}`:""}${n?o:""}`;function kr(e,t,n){if(n===0)return null;switch(e){case"ArrowDown":return(t+1)%n;case"ArrowUp":return t<=0?n-1:t-1;case"Home":return 0;case"End":return n-1;default:return null}}function vr(e,t,n,o){let r=n.toLocaleLowerCase(o),a=n.length>1?t:t+1;for(let l=0;l<e.length;l++){let s=(Math.max(0,a)+l)%e.length;if(e[s].trim().toLocaleLowerCase(o).startsWith(r))return s}return null}var Zt='[role="menuitem"], [role="menuitemradio"], [role="menuitemcheckbox"]';function Xt(e){return[...e.querySelectorAll(Zt)].filter(t=>t.closest('[role="menu"]')===e&&t.getClientRects().length>0)}function yr(e){let t=e.closest(".pk-popover")?.id;return t?eo(e)?.querySelector(`[aria-controls="${CSS.escape(t)}"]`)??null:null}function wr(e,t){if(e.key!=="Tab"||e.shiftKey)return!1;let n=yr(e.target),o=n?to(n):null;return e.preventDefault(),o?.focus(),n&&(!o||gt(o)!==o)&&n.focus({preventScroll:!0}),t(),!0}function qn({label:e,labelledBy:t,className:n,close:o,children:r,testId:a}){let l=(0,S.useRef)(null),s=(0,S.useRef)(null),i=(0,S.useRef)({text:"",at:0});(0,S.useLayoutEffect)(()=>{let c=l.current;if(!c)return;let m=Xt(c),y=m.find(g=>g.dataset.pkItem===s.current)??m.find(g=>g.hasAttribute("data-pk-start"))??m[0];for(let g of m)g.tabIndex=g===y?0:-1});let p=c=>{let m=c.target.closest?.(Zt);if(m&&l.current&&m.closest('[role="menu"]')===l.current){s.current=m.dataset.pkItem??null;for(let y of Xt(l.current))y.tabIndex=y===m?0:-1}},d=c=>{let m=l.current;if(!m||c.target.closest('[role="menu"]')!==m||c.altKey||c.ctrlKey||c.metaKey||wr(c,o))return;let y=Xt(m),g=y.indexOf(gt(m)),h=T=>{T!==null&&y[T]&&(c.preventDefault(),c.stopPropagation(),y[T].focus())},b=c.target.closest("[data-pk-seg]");if(b&&(c.key==="ArrowLeft"||c.key==="ArrowRight")){let T=Xt(m).filter(A=>b.contains(A)),C=T.indexOf(c.target)+(c.key==="ArrowRight"?1:-1);C>=0&&C<T.length?(c.preventDefault(),c.stopPropagation(),T[C].focus()):c.key==="ArrowRight"&&(c.preventDefault(),c.stopPropagation());return}let w=c.target.closest("[data-pk-level]");if(w&&(c.key==="ArrowRight"||c.key==="Enter"||c.key===" ")){c.preventDefault(),c.stopPropagation(),w.click();return}let v=kr(c.key,g,y.length);if(v!==null){h(v);return}if(c.key.length===1&&c.key!==" "){let T=Date.now();i.current={text:T-i.current.at<600?i.current.text+c.key:c.key,at:T},h(vr(y.map(C=>C.dataset.pkText??C.textContent??""),g,i.current.text))}};return S.default.createElement("div",{ref:l,role:"menu","aria-label":e,"aria-labelledby":t,className:`pk-level-menu${n?` ${n}`:""}`,onKeyDown:d,onFocus:p,"data-testid":a},r)}function rn({id:e,text:t,onSelect:n,checked:o,checkbox:r,hint:a,icon:l,danger:s,testId:i,start:p,plain:d,label:c,className:m,disabled:y,reason:g,haspopup:h,level:b,description:w,current:v,children:T}){let C=o===void 0?"menuitem":r?"menuitemcheckbox":"menuitemradio",A=(0,S.useId)(),O=[y&&g?A:null,w?`${A}-d`:null].filter(Boolean).join(" ")||void 0;return S.default.createElement("button",{type:"button",role:C,"aria-checked":o===void 0?void 0:o,"aria-label":c,"aria-haspopup":h,"aria-disabled":y||void 0,"aria-describedby":O,"aria-current":v?"true":void 0,tabIndex:-1,className:`pk-option${o?" pk-checked":""}${s?" pk-danger":""}${y?" pk-disabled":""}${m?` ${m}`:""}`,"data-pk-option":"","data-pk-item":e,"data-pk-text":d??(typeof t=="string"?t:void 0),"data-pk-start":p?"":void 0,"data-pk-level":b,"data-testid":i??e,onClick:y?void 0:n},S.default.createElement("span",{className:"pk-option-icon"},o||v?S.default.createElement(Z,{name:"check"}):l?S.default.createElement(Z,{name:l}):null),S.default.createElement("span",{className:"pk-option-text"},t,y&&g?S.default.createElement("span",{id:A,className:"pk-option-hint","data-testid":`${i??e}-reason`},g):null),a?S.default.createElement("span",{className:"pk-item-hint"},a):null,w?S.default.createElement("span",{id:`${A}-d`,hidden:!0},w):null,T)}function Ca({choice:e,onPick:t,start:n}){let{explain:o,labels:r}=(0,S.useContext)($t),a=e.info&&o&&r?.settingInfo&&Object.hasOwn(r.settingInfo,e.info)?r.settingInfo[e.info]:null,l=S.default.createElement(rn,{id:e.id,testId:e.testId,text:e.text,hint:e.hint,icon:e.icon,checked:e.checked,checkbox:e.checkbox,current:e.current,disabled:e.disabled,reason:e.reason,description:a,start:n,haspopup:e.open?"dialog":void 0,className:e.open?"pk-topic-row":void 0,onSelect:()=>t(e)},e.open?S.default.createElement(Z,{name:"chevronRight",size:16,className:"pk-topic-chevron"}):null);return!a&&!e.actions?.length?l:S.default.createElement("div",{role:"none",className:"pk-setting-row"},l,(e.actions??[]).map(s=>S.default.createElement("button",{key:s.id,type:"button",role:"menuitem",tabIndex:-1,className:"pk-icon-btn","aria-label":s.label,title:s.label,"aria-haspopup":s.open?"dialog":void 0,"data-pk-item":s.id,"data-pk-text":s.label,"data-testid":s.testId??s.id,onClick:()=>t(s)},S.default.createElement(Z,{name:s.icon}))),a?S.default.createElement("span",{"aria-hidden":"true"},S.default.createElement(Mt,{id:e.info,name:e.text,tabIndex:-1})):null)}function Er({topic:e,labels:t,onOpen:n}){return S.default.createElement(rn,{id:`topic-${e.id}`,level:e.id,text:e.title,plain:e.title,icon:e.icon,label:xa(e.title,e.state,e.changed,t.sectionChanged),haspopup:e.kind==="menu"?"menu":"dialog",className:"pk-topic-row",onSelect:n},e.state?S.default.createElement("span",{className:"pk-topic-state","data-testid":`topic-state-${e.id}`},e.changed?S.default.createElement("span",{className:"pk-section-mark","aria-hidden":"true"},"\u25CF "):null,S.default.createElement("span",{className:"pk-badge-cut"},e.state)):null,S.default.createElement(Z,{name:"chevronRight",size:16,className:"pk-topic-chevron"}))}function br({topic:e,onPick:t}){return S.default.createElement(S.default.Fragment,null,(e.groups??[]).map((n,o)=>S.default.createElement(Kt,{key:o,menu:!0,title:n.title,label:n.title?void 0:e.title},n.choices.map(r=>S.default.createElement(Ca,{key:r.id,choice:r,start:r.checked,onPick:t})))),S.default.createElement(Un,{topic:e}))}function Un({topic:e}){return e.note?S.default.createElement("p",{className:"pk-hint pk-menu-hint",role:"none","data-testid":e.noteId},e.note):null}function Nr({topic:e,labels:t,onPick:n,onOpen:o}){if(e.hidden)return null;if(e.kind==="menu"||e.kind==="panel")return S.default.createElement(Er,{topic:e,labels:t,onOpen:o});let r=e.groups?.[0]?.choices??[];if(e.kind==="segmented")return S.default.createElement("div",{role:"group","aria-label":xa(e.title,e.state,e.changed,t.sectionChanged),className:"pk-topic-seg","data-pk-seg":"","data-testid":`topic-${e.id}`},S.default.createElement("span",{className:"pk-topic-seg-title","aria-hidden":"true"},S.default.createElement("span",{className:"pk-option-icon"},e.icon?S.default.createElement(Z,{name:e.icon}):null),e.title,e.changed&&!e.state?S.default.createElement("span",{className:"pk-section-mark"}," \u25CF"):null),e.state?S.default.createElement("span",{className:"pk-topic-state pk-topic-seg-state","data-testid":`topic-state-${e.id}`},e.changed?S.default.createElement("span",{className:"pk-section-mark","aria-hidden":"true"},"\u25CF "):null,S.default.createElement("span",{className:"pk-badge-cut"},e.state)):null,S.default.createElement("span",{className:"pk-segmented pk-small"},r.map(l=>S.default.createElement("button",{key:l.id,type:"button",role:"menuitemradio","aria-checked":!!l.checked,tabIndex:-1,"data-pk-option":"","data-pk-item":l.id,"data-pk-text":l.text,"data-testid":l.id,onClick:()=>n(l)},l.text))));let a=r.map(l=>S.default.createElement(Ca,{key:l.id,choice:l,onPick:n}));return e.titled?S.default.createElement(Kt,{menu:!0,title:e.title,testId:`topic-${e.id}`,titleTestId:`topic-title-${e.id}`,after:S.default.createElement(Un,{topic:e})},a):S.default.createElement(S.default.Fragment,null,S.default.createElement("div",{role:"group","aria-label":e.title,"data-testid":`topic-${e.id}`},a),S.default.createElement(Un,{topic:e}))}function Sr({hits:e,labels:t,onPick:n,onOpen:o,close:r}){return e.length?S.default.createElement(qn,{label:t.searchResults,close:r,testId:"menu-search-hits"},e.map(a=>S.default.createElement(rn,{key:a.id,id:`hit-${a.id}`,text:a.choice?a.text:`${a.text}\u2026`,plain:a.text,checked:a.choice?.checked,icon:a.choice?a.topic.icon:"chevronRight",hint:a.path||void 0,haspopup:a.choice?void 0:"dialog",onSelect:()=>a.choice?n(a.choice):o(a.topic.id,void 0,a.focus)}))):S.default.createElement("p",{className:"pk-hint pk-level-nothing",role:"status","data-testid":"menu-search-nothing"},t.searchNothing)}function Bt({name:e,labels:t,topics:n,close:o,onPick:r,panel:a,head:l,foot:s,search:i=!1,locale:p,focusAgain:d}){let[c,m]=(0,S.useState)({stack:[],focus:null}),y=c.stack.length?c.stack[c.stack.length-1].level:null,[g,h]=(0,S.useState)(""),b=(0,S.useRef)(null),w=(0,S.useId)(),v=y?n.find(f=>f.id===y)??null:null;(0,S.useLayoutEffect)(()=>{let f=b.current,$=c.focus;if(!f||!$)return;let P=$.indexOf(":"),[K,D]=[$.slice(0,P),$.slice(P+1)],E=$==="level"?f.querySelector(".pk-level-body [data-autofocus]")??f.querySelector('.pk-level-body [role="menuitemradio"][aria-checked="true"]')??f.querySelector(".pk-level-body :is(button, input, select):not([disabled])")??f.querySelector(".pk-level-back"):$==="search"?f.querySelector(".pk-level-search input"):f.querySelector(K==="row"?`[data-pk-level="${CSS.escape(D)}"]`:`[data-pk-item="${CSS.escape(D)}"]`)??f.querySelector(Zt);E?.focus({preventScroll:!0}),E?.scrollIntoView?.({block:"nearest"})},[c,d]);let T=(f,$=`row:${f}`,P=void 0)=>{h(""),m({stack:[...c.stack,{level:f,from:$,hint:P}],focus:"level"})},C=(f=void 0)=>{let $=c.stack[c.stack.length-1];m({stack:c.stack.slice(0,-1),focus:f??$?.from??null})},A=f=>{if(f.open){f.run?.(),T(f.open,f.backTo??`item:${f.id}`);return}f.closes||(m({stack:[],focus:g?"search":c.stack.length?c.stack[0].from:`item:${f.id}`}),h("")),r(f)},O=f=>{if(f.defaultPrevented)return;let $=f.target,P=$.matches("input:not([type=checkbox], [type=radio]), textarea, select");if(f.key==="/"&&i&&!y&&!P){f.preventDefault(),b.current?.querySelector(".pk-level-search input")?.focus();return}y&&(f.key==="Escape"||f.key==="ArrowLeft"&&!P&&!$.closest("[data-pk-seg], .pk-segmented"))&&(f.preventDefault(),f.stopPropagation(),C())},R=()=>{let f=i&&g.trim()?gr(fr(n,g),g,p):null;return S.default.createElement(S.default.Fragment,null,l,i?S.default.createElement("label",{className:"pk-search pk-level-search"},S.default.createElement(Z,{name:"search"}),S.default.createElement("span",{className:"pk-sr"},x(t.searchMenu,{name:e})),S.default.createElement(De,{type:"search",value:g,placeholder:t.searchMenuShort,onChange:h,clearLabel:t.clearText,"aria-label":x(t.searchMenu,{name:e}),autoComplete:"off","data-testid":"menu-search",onKeyDown:$=>{$.key==="ArrowDown"?($.preventDefault(),b.current?.querySelector(`.pk-level-first ${Zt}`)?.focus()):$.key==="Enter"&&$.preventDefault()}})):null,S.default.createElement("div",{className:"pk-level-first"},f?S.default.createElement(Sr,{hits:f,labels:t,onPick:A,onOpen:T,close:o}):S.default.createElement(qn,{label:e,close:o,testId:"level-first"},n.map($=>S.default.createElement(Nr,{key:$.id,topic:$,labels:t,onPick:A,onOpen:()=>T($.id)})),s?S.default.createElement(S.default.Fragment,null,S.default.createElement("div",{role:"separator",className:"pk-level-sep"}),s):null)))};return S.default.createElement("div",{ref:b,className:"pk-levels",onKeyDown:O,"data-level":y??""},v?S.default.createElement(S.default.Fragment,null,S.default.createElement("div",{className:"pk-level-head"},S.default.createElement("button",{type:"button",className:"pk-link pk-level-back",onClick:()=>C(),"aria-label":x(t.backTo,{name:e}),"data-testid":"level-back"},S.default.createElement(Z,{name:"chevronRight",size:16,className:"pk-flip"}),t.back),S.default.createElement("h3",{id:w,className:"pk-level-title","data-testid":"level-title"},x(t.levelTitle,{name:e,topic:v.levelTitle??v.title})),v.info?S.default.createElement(Mt,{id:v.info,name:v.title}):null),S.default.createElement("div",{className:"pk-level-body","data-testid":`level-${v.id}`},v.kind==="menu"?S.default.createElement(qn,{labelledBy:w,close:o},S.default.createElement(br,{topic:v,onPick:A})):S.default.createElement("div",{role:"group","aria-labelledby":w,className:"pk-level-panel"},a(v.id,C,c.stack[c.stack.length-1]?.hint)))):R())}function Vt(e=450){let t=(0,S.useRef)(null),n=(0,S.useRef)(null),o=()=>{t.current&&clearTimeout(t.current),t.current=null,n.current=null},r=()=>{let l=n.current;o(),l?.()},a=(0,S.useRef)(r);return(0,S.useEffect)(()=>{a.current=r}),(0,S.useEffect)(()=>()=>a.current(),[]),{later:l=>{o(),n.current=l,t.current=setTimeout(r,e)},now:r,cancel:o}}function Ta(e,t,n=450){let[o,r]=(0,S.useState)(e),[a,l]=(0,S.useState)(e);e!==a&&(l(e),o===a&&r(e));let s=(0,S.useRef)({text:o,seen:a,apply:t});(0,S.useEffect)(()=>{s.current={...s.current,seen:a,apply:t}});let i=Vt(n),p=()=>{i.cancel(),s.current.text!==s.current.seen&&(s.current.seen=s.current.text,s.current.apply(s.current.text))},d=(0,S.useRef)(p);return(0,S.useEffect)(()=>{d.current=p}),(0,S.useEffect)(()=>()=>d.current(),[]),{text:o,set:c=>{s.current.text=c,r(c),n>0&&i.later(p)},flush:p,restore:()=>(i.cancel(),s.current.text===s.current.seen?!1:(s.current.text=s.current.seen,r(s.current.seen),!0))}}var ea=new Map;function xr(e){let t=ea.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(o=>o.type==="decimal")?.value??".",group:n.find(o=>o.type==="group")?.value??","},ea.set(e,t)}return t}var ta=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),Cr=/^[+-]?(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?$/i;function en(e,t){let n=String(e??"").replace(/[\s\u00a0\u202f]/g,"").replace(/\u2212/g,"-");if(n==="")return null;let{decimal:o,group:r}=xr(t),a=/[\s\u00a0\u202f]/.test(r)?"":ta(r),l=ta(o),s=a?`\\d{1,3}(?:${a}\\d{3})+`:"(?!)",p=new RegExp(`^([+-]?)(${s}|\\d+)?(?:${l}(\\d+))?$`).exec(n);if(p&&(p[2]!==void 0||p[3]!==void 0)){let d=(p[2]??"0").split(r).join(""),c=+`${p[1]}${d}${p[3]!==void 0?`.${p[3]}`:""}`;return Number.isFinite(c)?c:null}if(Cr.test(n)){let d=Number(n);return Number.isFinite(d)?d:null}return null}function de(e,t){if(typeof e!="number"||!Number.isFinite(e))return"";try{return e.toLocaleString(t,{useGrouping:!1,maximumFractionDigits:20})}catch{return String(e)}}function je(e,{kind:t="number",required:n=!0,tried:o=!1,max:r,labels:a,locale:l}){let s=en(e,l);if(r!==void 0&&s!==null&&Number.isInteger(s)&&s>r)return{value:null,problem:x(a.countMax,{max:r.toLocaleString(l)})};let i=s!==null&&(t==="number"||(t==="size"?s>0:Number.isInteger(s)&&s>=1)),p=()=>t==="count"?a.countInvalid:x(t==="size"?a.sizeInvalid:a.numberInvalid,{example:(t==="size"?.5:1234.5).toLocaleString(l)});return e.trim()===""?{value:null,problem:n&&o?p():null}:i?{value:s,problem:null}:{value:null,problem:p()}}function Tt({value:e,onChange:t,problem:n,label:o,testId:r,className:a="pk-field-label",shown:l,shownClass:s,onKeyDown:i,onBlur:p,onFocus:d,autoFocus:c}){let m=(0,ce.useId)(),y=ie();return ce.default.createElement(ce.default.Fragment,null,ce.default.createElement("label",{className:a},l?ce.default.createElement("span",{className:s},l):ce.default.createElement("span",{className:"pk-sr"},o),ce.default.createElement("input",{type:"text",name:y,inputMode:"decimal",autoComplete:"off",spellCheck:!1,value:e,onChange:g=>t(g.target.value),onKeyDown:i,onBlur:p,onFocus:d,"aria-label":o,"aria-invalid":n?!0:void 0,"aria-describedby":n?m:void 0,"data-autofocus":c?"":void 0,"data-testid":r})),n?ce.default.createElement("p",{id:m,className:"pk-form-problem","data-testid":`${r}-problem`},n):null)}var Ot=({now:e,restore:t,back:n})=>o=>{o.key==="Enter"?(o.preventDefault(),e()):o.key==="Escape"&&(o.preventDefault(),o.stopPropagation(),t()||n())};function Oa({choices:e,names:t,index:n,onChange:o,label:r,prefix:a,testId:l}){let s=ie();return e.length<2?ce.default.createElement("span",{className:"pk-by","data-testid":l},a?`${a} ${t[0]}`:t[0]):ce.default.createElement("label",{className:"pk-field-label pk-by-pick"},a?ce.default.createElement("span",null,a):ce.default.createElement("span",{className:"pk-sr"},r),ce.default.createElement("select",{name:s,value:n,onChange:i=>o(Number(i.target.value)),"aria-label":r,"data-testid":l},e.map((i,p)=>ce.default.createElement("option",{key:`${i.field}:${i.agg}`,value:p},t[p]))))}var La=(e,t)=>Math.max(0,e.findIndex(n=>Et(n,t)));function sn(e,t,n,o){let r=Ea(Vn(e,a=>t.get(a.toLowerCase())),o);return{choices:r,names:r.map(a=>bt(e,a,n))}}var ut=e=>e==="between"||e==="notBetween",St=(e,t)=>e.charAt(0).toLocaleUpperCase(t)+e.slice(1),na=e=>JSON.stringify(e,(t,n)=>n&&typeof n=="object"&&!Array.isArray(n)?Object.fromEntries(Object.entries(n).sort(([o],[r])=>o<r?-1:1)):n),Tr=e=>Lr(e)?e.type==="value"?"total":e.type==="text"?"name":"item":"fixed",Aa=Object.freeze(["year","month","day"]),Or=e=>Ao(e)&&(e.direction??"last")==="last"&&e.includeCurrent!==!1&&Aa.includes(e.unit),Lr=e=>!Eo(e)&&(e.type!=="relative"||Or(e))&&(e.type!=="compare"||(e.precision??"day")==="day"),oa=Object.freeze({year:10,quarter:12,month:24,week:104,day:90}),Ar=13;function Ir(e,t){let n=e.unit,o=n===null?e.item==="number"?"value":e.item==="date"?"date":"item":n==="bin"?"range":n==="day"?"day":n.replace(/^year(.)/,(r,a)=>a.toLowerCase());return Object.hasOwn(t.nouns,o)?t.nouns[o]:t.nouns.item}function Rr(e){let t=new Float64Array(e.dict.length);for(let n=0;n<e.codes.length;n++)e.codes[n]>=0&&t[e.codes[n]]++;return t}function $r(e,t){let n=new Map;return e.dict.forEach((o,r)=>{if(typeof o=="number"){let a=new Date(o).getUTCFullYear();n.set(a,(n.get(a)??0)+t[r])}}),[...n.entries()].sort((o,r)=>o[0]-r[0]).map(([o,r])=>({year:o,rows:r}))}function Fr({out:e,row:t,searching:n,labels:o,locale:r}){let[a,l]=(0,u.useState)(!1),s=(0,u.useId)(),i=a||n,p=(0,u.useRef)(null);return(0,u.useEffect)(()=>{a&&p.current?.firstElementChild?.scrollIntoView?.({block:"nearest"})},[a]),u.default.createElement("li",{className:"pk-values-tail"},u.default.createElement("button",{type:"button",className:"pk-tail-toggle","aria-expanded":i,"aria-controls":s,onClick:()=>l(!i),"data-testid":"tail-toggle"},u.default.createElement(Z,{name:i?"chevronDown":"chevronRight",size:14}),u.default.createElement("span",null,x(H(o.tailOut,e.length,{lang:o.lang,locale:r}),{count:e.length.toLocaleString(r)}))),i?u.default.createElement("ul",{ref:p,id:s,role:"list",className:"pk-tail-list","data-testid":"tail-list"},e.slice(0,Hn).map(t)):null)}function Fn({id:e,title:t,state:n,open:o,onToggle:r,action:a,children:l}){let s=(0,u.useId)();return u.default.createElement("section",{className:"pk-fsection","data-testid":`fsection-${e}`},u.default.createElement("div",{className:"pk-fsection-head"},u.default.createElement("button",{type:"button",className:"pk-fsection-toggle","aria-expanded":o,"aria-controls":s,onClick:r,"data-testid":`section-${e}`},u.default.createElement(Z,{name:o?"chevronDown":"chevronRight",size:16}),u.default.createElement("span",{className:"pk-fsection-title"},t),n?u.default.createElement("span",{className:"pk-fsection-state"},n):null),a),o?u.default.createElement("div",{className:"pk-fsection-body",id:s,"data-testid":`${e}-body`},l):null)}function Dr({ctx:e,state:t}){let{labels:n,locale:o,view:r,field:a}=e,{shown:l,total:s,noun:i,unpicked:p,byQuick:d,byRules:c,byTotals:m,rows:y,rowsAll:g,span:h,yearsText:b,empty:w,quickWords:v}=t,T=f=>f.toLocaleString(o),C={lang:n.lang,locale:o},A=l===0?n.summaryNone:l===s?x(n.summaryAll,{total:T(s),noun:H(i,s,C)}):x(n.summarySome,{shown:T(l),total:T(s),noun:H(i,s,C)}),O=[];l===0&&w?O.push(w):(p&&O.push(x(n.summaryPicks,{count:T(p)})),d&&O.push(x(n.summaryQuick,{count:T(d),quick:v})),c&&O.push(x(H(n.summaryRules,t.itemRules,C),{items:T(c)})),m&&O.push(x(H(n.summaryTotals,t.totalRules,C),{items:T(m)})));let R=[x(n.summaryRows,{rows:T(y),total:T(g)})];return h&&R.push(x(n.summaryData,{range:`${ve(Fe(h.min),o)} \u2013 ${ve(Fe(h.max),o)}`})),b&&R.push(b),u.default.createElement("div",{className:"pk-filter-summary"},u.default.createElement("div",{className:`pk-summary-card${l===0?" pk-summary-empty":""}`,role:"status","data-testid":"filter-summary"},u.default.createElement("p",{className:"pk-summary-head","data-testid":"filter-summary-head"},A),u.default.createElement("p",{className:"pk-summary-why","data-testid":"filter-summary-why"},O.length?O.join(" \xB7 "):t.rules?n.summaryKept:v?x(n.summaryQuickOnly,{quick:v}):n.summaryOk),u.default.createElement("p",{className:"pk-summary-meta","data-testid":"filter-summary-meta"},R.join(" \xB7 ")),u.default.createElement("button",{type:"button",className:"pk-action pk-summary-reset",disabled:!t.canReset,onClick:()=>e.act(Xa(r,a),"section-picks"),"data-testid":"filter-reset"},n.resetFilter)))}var Ft=Object.freeze(["last","next","before"]),Pr=Object.freeze(["next","before"]),aa=e=>Pr.includes(e.id)||Ft.includes(e.id)&&e.calendar===!1;function Mr({ctx:e,quick:t,anchor:n,setAnchorLocal:o,span:r,column:a,counts:l,moreOpen:s,setMoreOpen:i}){let{view:p,field:d,labels:c,locale:m,fk:y,timeZone:g,commit:h,note:b,back:w}=e,v={lang:c.lang,locale:m},T=c.relativeMore,C=y.units,A=p.formatting?.weekStart,O=Fe(r.max),[R]=(0,u.useState)(()=>Date.now()),f=(N,B=n)=>{try{return so(N.unit,N.count??1,{...N,anchor:B,timeZone:g,now:R,latest:r.max,first:r.min,weekStart:A})}catch{return null}},$=N=>N?or(N,a.dict,l):0,P=N=>N!==null&&N.from!==null&&N.from.slice(0,10)<=O,K=N=>{for(let B=1;B<=oa[N];B++)if(P(f({unit:N,count:B})))return B;return oa[N]},D=N=>Math.max(2,K(N)),E=C.includes("month")?"month":C[0],I=N=>je(N,{kind:"count",max:ue.relativeMaxCount,labels:c,locale:m}),V=N=>t.id===N?{text:de(t.count,m),unit:t.unit,current:t.includeCurrent}:{text:de(N==="next"?1:D(E),m),unit:E,current:!0},[U,X]=(0,u.useState)(()=>Object.fromEntries(Ft.map(N=>[N,V(N)]))),[J,Ce]=(0,u.useState)(t.id==="this"?t.unit:"year"),[he,Pe]=(0,u.useState)(()=>Ft.includes(t.id)&&t.calendar===!1),[He,Ge]=(0,u.useState)(null),Ee=JSON.stringify([t.id,t.unit,t.count,t.calendar,t.includeCurrent]),[M,G]=(0,u.useState)(Ee);if(Ee!==M)if(G(Ee),Ft.includes(t.id)){let N=t.id,B=V(N);X({...U,[N]:He===N?{...B,text:U[N].text}:B}),Pe(t.calendar===!1)}else t.id==="this"&&Ce(t.unit);let _=Vt(),ye=(0,u.useId)(),Te=ie(),Oe=ie(),mt=(0,u.useId)(),qe=(0,u.useId)(),W=N=>h(ya(p,d,N?{...N,anchor:n,blanks:e.keepBlanks?"include":"exclude"}:null,t.filters[0]??null),b),we=(N,B=U[N],te=he)=>{let ne=I(B.text).value;return ne===null?null:{direction:N,unit:B.unit,count:ne,calendar:!te,includeCurrent:B.current}},be=N=>`${ye}-${N}`,pe=(N,B,te)=>{if(!N)return null;let ne=N.from===null||N.from.length>10||N.to.length>10?"day":B,le,ae=null;if(N.from===null)le=x(T.until,{to:Nt({from:N.to,to:N.to},ne,m)});else{let Re=Io(N,ne,r,m);Re?.none?(le="",ae=x(H(c.noData,1,v),{range:Nt(N,ne,m)})):(le=Re?`${Re.data} `:Nt(N,ne,m),ae=Re?x(H(c.noData,Re.count,v),{range:Re.missing.join(", ")}):null)}return u.default.createElement("span",{className:"pk-quick-sub",id:be(te)},u.default.createElement("span",null,le,ae?u.default.createElement("span",{className:"pk-quick-missing"},le?`(${ae})`:ae):null),u.default.createElement("span",{className:"pk-quick-rows"},x(c.quickRows,{rows:$(N).toLocaleString(m)})))},Ne=(N,B,te,ne,le,ae=!0)=>u.default.createElement("label",{className:"pk-radio pk-quick"},u.default.createElement("input",{type:"radio",name:Te,checked:B,onChange:te,"aria-label":ne,"aria-describedby":ae?be(N):void 0,"data-autofocus":B&&e.hint!=="conditions"?"":void 0,"data-testid":`quick-${N}`}),le),We=(N,B,te,ne,le)=>B.length>1?u.default.createElement("select",{name:`${Oe}-${ne}`,value:N,onChange:ae=>te(ae.target.value),"aria-label":le,"data-testid":ne},B.map(ae=>u.default.createElement("option",{key:ae.value,value:ae.value},ae.text))):u.default.createElement("span",{"aria-hidden":"true"},B[0]?.text),se=[],Y=[u.default.createElement("div",{className:"pk-quick-row",key:"all"},Ne("all",t.id==="all",()=>W(null),c.filterAll,u.default.createElement("span",null,c.filterAll)),u.default.createElement("span",{className:"pk-quick-sub",id:be("all")},u.default.createElement("span",null,`${ve(Fe(r.min),m)}\u2013${ve(O,m)}`),u.default.createElement("span",{className:"pk-quick-rows"},x(c.quickRows,{rows:a.codes.length.toLocaleString(m)}))))],Le=C.filter(N=>$(f({direction:"this",unit:N}))>0||t.id==="this"&&t.unit===N);if(Le.length){let N=Le.includes(J)?J:Le[Le.length-1],B=St(T.this[N],m);Y.push(u.default.createElement("div",{className:"pk-quick-row",key:"this"},Ne("this",t.id==="this",()=>W({direction:"this",unit:N}),B,Le.length>1?null:u.default.createElement("span",{"aria-hidden":"true"},B)),Le.length>1&&We(N,Le.map(te=>({value:te,text:St(T.this[te],m)})),te=>{Ce(te),W({direction:"this",unit:te})},"quick-this-unit",c.quickThisUnit),pe(f({direction:"this",unit:N}),N,"this")))}else{let N=f({direction:"this",unit:"year"});N?.from&&se.push(`${St(T.this.year,m)} (${Nt({from:N.from,to:N.to},"year",m)})`)}let Ae=N=>{let B=U[N],te=I(B.text),ne=te.value??2,le=oe=>H(Object.fromEntries(Object.entries(T[N][oe]).map(([nt,Ue])=>[nt,String(Ue).replace("{count}","{n}")])),ne,v),[ae]=le(B.unit).split("{n}"),Re=St(x(le(B.unit),{n:ne.toLocaleString(m)}),m),et=f({direction:N,unit:B.unit,count:ne,calendar:!he,includeCurrent:B.current}),tt=(oe,nt=!1)=>{let Ue={...B,...oe};X({...U,[N]:Ue});let qt=()=>{let ot=we(N,Ue);ot&&W(ot)};nt?_.later(qt):(_.cancel(),qt())},un=oe=>{let nt=N==="last"&&te.value!==null?f({unit:oe,count:te.value,calendar:!he,includeCurrent:B.current}):null,Ue=N!=="last"||P(nt);tt({unit:oe,...Ue?{}:{text:de(D(oe),m)}})},Me=f({direction:"this",unit:B.unit}),ht=Me?.from?$(Me)===0:!1;return u.default.createElement("div",{className:"pk-quick-row",key:N},Ne(N,t.id===N,()=>tt({}),Re,u.default.createElement("span",{"aria-hidden":"true"},St(ae.trimEnd(),m)),et!==null),u.default.createElement(Tt,{value:B.text,onChange:oe=>tt({text:oe},!0),onKeyDown:Ot({now:_.now,restore:()=>{if(_.cancel(),t.id!==N)return!1;let oe=de(t.count,m);return B.text===oe?!1:(X({...U,[N]:{...B,text:oe}}),!0)},back:w}),onBlur:()=>{Ge(null),_.now()},onFocus:()=>Ge(N),problem:te.problem,label:c.quickCount[B.unit]??c.quickCount.year,testId:`quick-${N}-count`,className:"pk-field-label pk-count-input"}),We(B.unit,C.map(oe=>({value:oe,text:le(oe).split("{n}")[1]?.trim()??oe})),un,`quick-${N}-unit`,x(c.quickUnitOf,{choice:St(ae.trimEnd(),m)})),pe(et,B.unit,N),t.id===N&&!he?u.default.createElement("label",{className:"pk-check pk-quick-current"},u.default.createElement("input",{type:"checkbox",name:`${Oe}-${N}-current`,checked:B.current,onChange:oe=>tt({current:oe.target.checked}),"data-testid":`quick-${N}-current`}),u.default.createElement("span",null,c.quickCurrent[B.unit],ht?u.default.createElement("span",{className:"pk-quick-missing"},` (${x(H(c.noData,1,v),{range:Me?.from?Nt({from:Me.from,to:Me.to},B.unit,m):""})})`):null)):null,t.id===N&&N!=="next"&&ht&&n==="today"?u.default.createElement("div",{className:"pk-quick-fix"},u.default.createElement("button",{type:"button",className:"pk-btn pk-small-btn",onClick:()=>Ze("latest"),"data-testid":`quick-${N}-from-latest`},u.default.createElement(Z,{name:"date",size:14}),u.default.createElement("span",{className:"pk-btn-text"},x(c.anchorUseLatest,{date:ve(O,m)})))):null)};Y.push(Ae("last"));let dt=new Date(Lo({unit:"day",count:1},g,R)?.from??Fe(R)),Lt=y.months?Date.UTC(dt.getUTCFullYear(),dt.getUTCMonth(),1):Date.UTC(dt.getUTCFullYear(),0,1),[pt]=(0,u.useState)(()=>r.max<Lt||n!=="today"),Ie=["today","latest","first"].includes(n)?n:"date",[Qe,ft]=(0,u.useState)(Ie==="date"?n.slice(0,10):O),Xe=/^\d{4}-\d{2}-\d{2}$/.test(Qe),[jt,ln]=(0,u.useState)(n);n!==jt&&(ln(n),Ie==="date"&&ft(n.slice(0,10)));let Ye=`${mt}-hint`,Ze=N=>{o(N),t.filters.length&&h(Wa(p,d,N),b)},cn=u.default.createElement("div",{className:"pk-quick-anchor"},u.default.createElement("label",{htmlFor:mt},c.anchorLabel),u.default.createElement("select",{id:mt,name:`${Oe}-anchor`,value:Ie,onChange:N=>Ze(N.target.value==="date"?Xe?Qe:O:N.target.value),"data-testid":"quick-anchor"},u.default.createElement("option",{value:"today"},x(c.anchorToday,{date:ve(Fe(dt.getTime()),m)})),u.default.createElement("option",{value:"latest"},x(c.anchorLatest,{date:ve(O,m)})),u.default.createElement("option",{value:"first"},x(c.anchorFirst,{date:ve(Fe(r.min),m)})),u.default.createElement("option",{value:"date"},c.anchorDate)),Ie==="date"?u.default.createElement("input",{type:"date",name:`${Oe}-day`,value:Qe,onChange:N=>{ft(N.target.value),/^\d{4}-\d{2}-\d{2}$/.test(N.target.value)&&Ze(N.target.value)},onBlur:()=>{Xe||ft(n.slice(0,10))},"aria-label":c.anchorDay,"aria-invalid":Xe?void 0:!0,"aria-describedby":Xe?void 0:Ye,"data-testid":"quick-anchor-date"}):null,Ie==="date"&&!Xe?u.default.createElement("p",{className:"pk-hint pk-quick-missing",id:Ye,"data-testid":"quick-anchor-date-hint"},x(c.anchorDayIncomplete,{date:ve(n.slice(0,10),m)})):null);return u.default.createElement(u.default.Fragment,null,u.default.createElement("div",{role:"radiogroup","aria-label":c.quickTitle,className:"pk-radios pk-quick-choices","data-testid":"quick-choices"},Y),se.length?u.default.createElement("p",{className:"pk-hint pk-quick-hidden","data-testid":"quick-hidden"},x(H(c.quickHidden,se.length,v),{choices:se.join(", "),latest:ve(O,m)})):null,pt?cn:null,u.default.createElement("button",{type:"button",className:"pk-quick-more-toggle","aria-expanded":s,"aria-controls":qe,onClick:()=>i(!s),"data-testid":"quick-more"},u.default.createElement(Z,{name:s?"chevronDown":"chevronRight",size:14}),u.default.createElement("span",null,c.quickMore)),s?u.default.createElement("div",{id:qe,className:"pk-quick-more","data-testid":"quick-more-body"},u.default.createElement("div",{role:"radiogroup","aria-label":c.quickMore,className:"pk-radios pk-quick-choices"},Ae("next"),Ae("before")),u.default.createElement("label",{className:"pk-check"},u.default.createElement("input",{type:"checkbox",name:`${Oe}-rolling`,checked:he,onChange:N=>{Pe(N.target.checked);let B=Ft.includes(t.id)?we(t.id,U[t.id],N.target.checked):null;B&&W(B)},"data-testid":"quick-rolling"}),u.default.createElement("span",null,c.quickRolling)),pt?null:cn):null)}function Br({ctx:e,years:t,on:n}){let{view:o,field:r,labels:a,locale:l,commit:s,note:i,noun:p}=e,d=t.map(m=>m.year),c=m=>{let y=n.includes(m)?n.filter(g=>g!==m):[...n,m].sort((g,h)=>g-h);s(Ga(o,r,y,d),i)};return u.default.createElement(u.default.Fragment,null,u.default.createElement("p",{className:"pk-hint pk-years-hint"},x(a.yearsCombinedHint,{noun:H(p,1,{lang:a.lang,locale:l})})),u.default.createElement("div",{className:"pk-years",role:"group","aria-label":a.yearsCombined,"data-testid":"years-combined"},t.map(m=>{let y=n.includes(m.year);return u.default.createElement("button",{key:m.year,type:"button",className:"pk-year-chip","aria-pressed":y,disabled:y&&n.length===1,onClick:()=>c(m.year),"data-testid":`year-${m.year}`},y?u.default.createElement(Z,{name:"check",size:12}):null,u.default.createElement("span",null,String(m.year)),u.default.createElement("span",{className:"pk-quick-rows"},x(a.quickRows,{rows:m.rows.toLocaleString(l)})))})),n.length===1?u.default.createElement("p",{className:"pk-hint"},x(a.yearsCombinedOne,{year:String(n[0])})):null)}function Vr({items:e,value:t,onChange:n,label:o,testId:r,labels:a,locale:l}){let[s,i]=(0,u.useState)(!1),[p,d]=(0,u.useState)(""),[c,m]=(0,u.useState)(0),y=(0,u.useRef)(null),g=(0,u.useId)(),h=ie(),b=vn(e,p),w=b.slice(0,Hn),v=e.find(f=>String(f.value)===t),T=()=>{d(""),m(Math.max(0,e.findIndex(f=>String(f.value)===t))),i(!0)},C=()=>i(!1),A=f=>{C(),n(String(f.value))},O=f=>`${g}-${f}`,R=f=>{f.key==="ArrowDown"||f.key==="ArrowUp"?(f.preventDefault(),m($=>Math.min(w.length-1,Math.max(0,$+(f.key==="ArrowDown"?1:-1))))):f.key==="Enter"?(f.preventDefault(),w[c]&&A(w[c])):f.key==="Escape"&&(f.preventDefault(),f.stopPropagation(),C())};return u.default.createElement("span",{className:"pk-picker"},u.default.createElement("button",{ref:y,type:"button",className:"pk-picker-button","aria-haspopup":"listbox","aria-expanded":s,"aria-label":o,onClick:()=>s?C():T(),onKeyDown:f=>{!s&&(f.key==="ArrowDown"||f.key==="ArrowUp")&&(f.preventDefault(),T())},"data-testid":r},v?v.label:t||a.ruleValue),u.default.createElement(dn,{open:s,anchor:y,onClose:C,label:o,className:"pk-picker-pop"},u.default.createElement("input",{type:"search",name:h,role:"combobox",className:"pk-picker-search",value:p,onChange:f=>{d(f.target.value),m(0)},onKeyDown:R,"aria-label":a.pickerSearch,"aria-expanded":"true","aria-controls":g,"aria-activedescendant":w[c]?O(c):void 0,"aria-autocomplete":"list",autoComplete:"off",placeholder:a.pickerSearch,"data-autofocus":"","data-testid":"picker-search"}),u.default.createElement("ul",{role:"listbox",id:g,className:"pk-picker-list","aria-label":o,"data-testid":"picker-list"},w.map((f,$)=>u.default.createElement("li",{key:String(f.value),id:O($),role:"option","aria-selected":String(f.value)===t,className:`pk-picker-option${$===c?" pk-picker-active":""}`,onMouseMove:()=>m($),onClick:()=>A(f),"data-testid":"picker-option"},u.default.createElement("span",null,f.label),u.default.createElement("span",{className:"pk-count"},f.count.toLocaleString(l)))),w.length?null:u.default.createElement("li",{className:"pk-hint pk-picker-none"},a.pickerNone)),u.default.createElement("p",{className:"pk-hint pk-picker-count","aria-live":"polite","data-testid":"picker-count"},x(a.pickerMatch,{count:b.length.toLocaleString(l),total:e.length.toLocaleString(l)}))))}function jr({rule:e,ctx:t,apply:n,first:o}){let{field:r,labels:a,locale:l,fk:s,items:i}=t,p=(0,u.useContext)(Jt).size==="narrow",d=s.dates?a.dateOps:a.valueOps,c=s.dates?[...wt.compare,"last"]:wt.compare,m=E=>E===void 0?"":s.item==="number"?de(E,l):String(E),y=e?.type==="compare"?e:null,g=e?.type==="relative"?e:null,[h,b]=(0,u.useState)(()=>({op:g?"last":y?lt(y):">=",a:m(y?.value),b:m(y?.value2),count:de(g?.count??5,l),unit:g?.unit??"year"})),w=Vt(),v=ie(),T=E=>s.item==="number"?en(E,l):s.item==="date"?/^\d{4,}-\d{2}-\d{2}$/.test(E)?E:null:E===""?null:Number(E),C=E=>{if(E.op==="last"){let U=je(E.count,{kind:"count",max:ue.relativeMaxCount,labels:a,locale:l}).value;return U!==null?{...wa(r,{unit:E.unit,count:U,anchor:g?.anchor}),...g?{not:g.not,blanks:g.blanks}:{}}:null}let[I,V]=[T(E.a),T(E.b)];return I===null||ut(E.op)&&V===null?null:{field:r,type:"compare",...Ht(E.op),value:I,...ut(E.op)?{value2:V}:{},blanks:y?.blanks??"exclude"}},A=(E,I=!1)=>{let V={...h,...E};b(V);let U=()=>{let X=C(V);X&&n(X)};I?w.later(U):(w.cancel(),U())},O=()=>{w.cancel();let E={a:m(y?.value),b:m(y?.value2),count:de(g?.count??5,l)};return h.a===E.a&&h.b===E.b&&h.count===E.count?!1:(b({...h,...E}),!0)},R=Ot({now:w.now,restore:O,back:t.back}),f=(E,I,V)=>{if(s.item==="number"){let J=je(h[E],{required:!1,labels:a,locale:l}).problem;return u.default.createElement(Tt,{value:h[E],onChange:Ce=>A({[E]:Ce},!0),onKeyDown:R,onBlur:w.now,problem:J,label:I,testId:V,className:"pk-field-label pk-narrow-input"})}if(s.item==="date")return u.default.createElement("input",{type:"date",name:`${v}-${E}`,value:h[E],onChange:J=>A({[E]:J.target.value}),"aria-label":I,"data-testid":V});let U=i.filter(J=>typeof J.value=="number"),X=h[E]!==""&&!U.some(J=>String(J.value)===h[E]);return U.length>=Ar&&!p?u.default.createElement(Vr,{items:X?[{value:Number(h[E]),label:h[E],count:0},...U]:U,value:h[E],onChange:J=>A({[E]:J}),label:I,testId:V,labels:a,locale:l}):u.default.createElement("select",{name:`${v}-${E}`,value:h[E],onChange:J=>A({[E]:J.target.value}),"aria-label":I,"data-testid":V},u.default.createElement("option",{value:"",disabled:!0},a.ruleValue),X?u.default.createElement("option",{value:h[E]},h[E]):null,U.map(J=>u.default.createElement("option",{key:String(J.value),value:String(J.value)},J.label)))},$=s.item==="date"?a.ruleDate:a.ruleValue,P={lang:a.lang,locale:l},K=je(h.count,{kind:"count",max:ue.relativeMaxCount,labels:a,locale:l}),D=K.value??2;return u.default.createElement(u.default.Fragment,null,u.default.createElement("span",{className:"pk-rule-subject"},ee(r,a.core)),u.default.createElement("select",{className:"pk-rule-op",name:`${v}-op`,value:h.op,onChange:E=>A({op:E.target.value}),"aria-label":a.valueFilterOp,"data-autofocus":o?"":void 0,"data-testid":"rule-item-op"},c.map(E=>u.default.createElement("option",{key:E,value:E},E==="last"?H(a.lastOp,D,P):d[E]??E))),h.op==="last"?u.default.createElement(u.default.Fragment,null,u.default.createElement(Tt,{value:h.count,onChange:E=>A({count:E},!0),onKeyDown:R,onBlur:w.now,problem:K.problem,label:a.quickCount[h.unit],testId:"rule-last-count",className:"pk-field-label pk-count-input"}),u.default.createElement("select",{name:`${v}-unit`,value:h.unit,onChange:E=>A({unit:E.target.value}),"aria-label":a.ruleUnit,"data-testid":"rule-last-unit"},Aa.map(E=>u.default.createElement("option",{key:E,value:E},H(a.ruleUnits[E],D,P))))):u.default.createElement(u.default.Fragment,null,f("a",$,"rule-item-value"),ut(h.op)?u.default.createElement(u.default.Fragment,null,u.default.createElement("span",null,a.valueFilterTo),f("b",`${a.valueFilterTo} ${$}`,"rule-item-value2")):null,(h.op==="!="||h.op==="notBetween")&&(y?.blanks??(t.keepBlanks?"include":"exclude"))==="exclude"?u.default.createElement("span",{className:"pk-hint pk-rule-note","data-testid":"rule-blanks"},a.blanksOut):null))}function qr({rule:e,ctx:t,apply:n,first:o}){let{view:r,types:a,labels:l,locale:s}=t,{choices:i,names:p}=sn(r,a,l,e?.by),[d,c]=(0,u.useState)(()=>({by:La(i,e?.by),op:e?lt(e):">",a:de(e?.value,s),b:de(e?.value2,s)})),m=Vt(),y=ie(),g=(v,T=!1)=>{let C={...d,...v};c(C);let A=()=>{let[O,R]=[en(C.a,s),en(C.b,s)];if(O!==null&&(!ut(C.op)||R!==null)){let f=i[C.by];n({field:t.field,type:"value",by:{field:f.field,agg:f.agg},...Ht(C.op),value:O,...ut(C.op)?{value2:R}:{}})}};T?m.later(A):(m.cancel(),A())},h=()=>{m.cancel();let v={a:de(e?.value,s),b:de(e?.value2,s)};return d.a===v.a&&d.b===v.b?!1:(c({...d,...v}),!0)},b=Ot({now:m.now,restore:h,back:t.back}),w=(v,T,C,A)=>u.default.createElement(Tt,{value:d[v],onChange:O=>g({[v]:O},!0),onKeyDown:b,onBlur:m.now,problem:je(d[v],{required:!1,labels:l,locale:s}).problem,label:T,shown:A,testId:C,className:"pk-field-label pk-narrow-input"});return u.default.createElement(u.default.Fragment,null,u.default.createElement("span",{className:"pk-rule-subject pk-rule-lead"},x(l.ruleWhose,{field:ee(t.field,l.core)})),u.default.createElement(Oa,{choices:i,names:p,index:d.by,onChange:v=>g({by:v}),label:l.valueFilterBy,testId:"value-filter-by"}),u.default.createElement("select",{className:"pk-rule-op",name:`${y}-op`,value:d.op,onChange:v=>g({op:v.target.value}),"aria-label":l.valueFilterOp,"data-autofocus":o?"":void 0,"data-testid":"value-filter-op"},wt.compare.map(v=>u.default.createElement("option",{key:v,value:v},l.valueOps[v]??v))),w("a",l.valueFilterNumber,"value-filter-number"),ut(d.op)?w("b",`${l.valueFilterTo} ${l.valueFilterNumber}`,"value-filter-number2",l.valueFilterTo):null)}function Ur({rule:e,ctx:t,apply:n,unset:o,first:r}){let{field:a,labels:l}=t,[s,i]=(0,u.useState)(e?lt(e):"contains"),p=(m,y)=>{y.trim()!==""?n({...da(a,{op:m,value:y,on:t.textOn}),...e?{blanks:e.blanks}:{}}):e&&o()},d=Ta(e?.value??"",m=>p(s,m)),c=ie();return u.default.createElement(u.default.Fragment,null,u.default.createElement("span",{className:"pk-rule-subject"},l.ruleName),u.default.createElement("select",{className:"pk-rule-op",name:c,value:s,onChange:m=>{i(m.target.value),p(m.target.value,d.text)},"aria-label":l.condition,"data-autofocus":r?"":void 0,"data-testid":"filter-condition-op"},wt.text.map(m=>u.default.createElement("option",{key:m,value:m},l.labelOps[m]??m))),u.default.createElement(De,{type:"text",value:d.text,onChange:d.set,onBlur:d.flush,onKeyDown:Ot({now:d.flush,restore:d.restore,back:t.back}),onClear:()=>d.set(""),clearLabel:l.clearText,"aria-label":l.conditionValue,placeholder:l.conditionValue,maxLength:It.textValue,"data-testid":"filter-condition-text"}))}function Jr({rule:e,ctx:t}){return u.default.createElement(u.default.Fragment,null,u.default.createElement("span",{className:"pk-rule-subject"},t.say(e)),u.default.createElement("span",{className:"pk-hint pk-rule-note","data-testid":"rule-fixed"},t.labels.ruleFixed))}var Kr={item:jr,total:qr,name:Ur,fixed:Jr};function zr({ctx:e,rules:t,focusFirst:n,quickLine:o,results:r,blanks:a}){let{view:l,field:s,labels:i,locale:p,commit:d,note:c,fk:m,nameKind:y,noun:g}=e,{explain:h}=(0,u.useContext)($t),b={lang:i.lang,locale:p},[w,v]=(0,u.useState)(null),[T,C]=(0,u.useState)([]),A=ie(),[O,R]=(0,u.useState)(null),[f,$]=(0,u.useState)(0),P=na(t),[K,D]=(0,u.useState)(P),[E,I]=(0,u.useState)(null);P!==K&&(D(P),P!==E&&($(f+1),v(null),C([])));let V=(0,u.useRef)(null),U=(0,u.useRef)(!1);(0,u.useEffect)(()=>{U.current&&(U.current=!1,V.current?.querySelector(".pk-rule-adds button:not([disabled])")?.focus())},[f]),(0,u.useEffect)(()=>{if(w){let M=V.current?.querySelector(".pk-rule:last-child");M?.querySelector("[data-autofocus]")?.focus({preventScroll:!0}),M?.scrollIntoView?.({block:"nearest"});let G=M?.closest(".pk-level-body");if(M&&G){let _=M.getBoundingClientRect().bottom-G.getBoundingClientRect().bottom;_>0&&(G.scrollTop+=Math.ceil(_))}}},[w]);let X=["item","total","name"].filter(M=>M==="item"?!!m.item:M==="name"?!!y:!0),J=t.length+(w?1:0)+T.length,Ce=J>=_o||l.filters.length>=It.filters,he={item:x(i.addRuleItem,{field:ee(s,i.core)}),total:i.addRuleTotal,name:i.addRuleName},Pe=(M,G)=>{let _=H(g,1,b);if(G==="total"){let ye=M?.by??sn(l,e.types,i,void 0).choices[0];return x(i.ruleInfo.total,{noun:_,nouns:H(g,2,b),measure:bt(l,ye,i),scope:e.scope})}return G==="name"?x(i.ruleInfo.name,{noun:_}):x(i.ruleInfo[m.item==="group"?m.cyclic?"cyclic":"group":m.item??"group"],{noun:_})},He=M=>{I(na(ke(M,s,an).filter(G=>!e.quickFilters.includes(G)))),d(M,c)},Ge=(M,G,_,ye=!1)=>{let Te=Kr[G],Oe=pe=>{let Ne=ye?T.find(Y=>Y.at===_):void 0,We=Ne?.blanks&&Yt.includes(pe.type)?{...pe,blanks:Ne.blanks}:!M&&e.keepBlanks&&Yt.includes(pe.type)?{...pe,blanks:"include"}:pe;ye?C(T.filter(Y=>Y.at!==_)):M||v(null);let se=ye?Ee.slice(_+1).find(Y=>Y.rule)?.rule??null:null;He(ct(l,s,M,We,se))},mt=()=>{M&&(C([...T,{at:_,kind:G,blanks:M.blanks}].sort((pe,Ne)=>pe.at-Ne.at)),e.keepSections(),He(ct(l,s,M,null)))},qe=()=>{U.current=!0,M?d(ct(l,s,M,null),c):(ye?C(T.filter(pe=>pe.at!==_)):v(null),$(f+1),Ee.length===1&&e.releaseSections())},W=M?r.get(M):null,we=O===_,be=`${f}-${_}`;return u.default.createElement("li",{key:`${f}:${_}`,className:"pk-rule","data-testid":"rule","data-kind":G},_>0||o?u.default.createElement("span",{className:"pk-rule-and"},i.ruleAnd):null,u.default.createElement("span",{className:"pk-rule-body"},u.default.createElement(Te,{rule:M,ctx:e,apply:Oe,unset:mt,first:n&&_===0||!M&&!ye&&w!==null})),u.default.createElement("span",{className:"pk-rule-tools"},h?u.default.createElement("button",{type:"button",className:"pk-icon-btn pk-rule-info","aria-expanded":we,"aria-controls":we?be:void 0,onClick:()=>R(we?null:_),"aria-label":i.explainRule,title:i.explainRule,"data-testid":"rule-info"},u.default.createElement(Z,{name:"info",size:14})):null,u.default.createElement("button",{type:"button",className:"pk-icon-btn pk-rule-remove",onClick:qe,"aria-label":i.removeRule,title:i.removeRule,"data-testid":"rule-remove"},u.default.createElement(Z,{name:"x",size:14}))),u.default.createElement("p",{className:`pk-hint pk-rule-result${W&&W.kept===0?" pk-rule-result-empty":""}`,"data-testid":"rule-result"},W?W.text:i.ruleIncomplete),we?u.default.createElement("p",{className:"pk-rule-info-text",id:be,"data-testid":"rule-info-text"},Pe(M,G)):null)},Ee=t.map(M=>({rule:M,kind:Tr(M),isHeld:!1}));for(let M of T)Ee.splice(M.at,0,{rule:null,kind:M.kind,isHeld:!0});return w&&Ee.push({rule:null,kind:w,isHeld:!1}),u.default.createElement("fieldset",{ref:V,className:"pk-condition pk-rules","data-testid":"rules"},u.default.createElement("legend",{className:"pk-sr"},i.rulesTitle),u.default.createElement("p",{className:"pk-hint"},x(J||o?i.rulesKeep:i.rulesNone,{noun:H(g,2,b)})),J||o?u.default.createElement("ul",{className:"pk-rule-list",role:"list"},o?u.default.createElement("li",{className:"pk-rule pk-rule-quick","data-testid":"rule-quick"},u.default.createElement("span",null,x(i.quickLine,{text:o})),u.default.createElement("button",{type:"button",className:"pk-action",onClick:e.focusQuick,"data-testid":"rule-quick-change"},i.changeAbove)):null,Ee.map((M,G)=>Ge(M.rule,M.kind,G,M.isHeld))):null,a?u.default.createElement("label",{className:"pk-check pk-rules-blanks"},u.default.createElement("input",{type:"checkbox",name:`${A}`,checked:a.on,onChange:M=>d(Qa(l,s,M.target.checked),c),"data-testid":"rules-blanks"}),u.default.createElement("span",null,x(H(i.rulesBlanks,a.rows,b),{rows:a.rows.toLocaleString(p)}))):null,u.default.createElement("div",{className:"pk-rule-adds",role:"group","aria-label":i.addRule},X.map((M,G)=>u.default.createElement("button",{key:M,type:"button",className:"pk-btn pk-small-btn",disabled:Ce,onClick:()=>v(M),"data-autofocus":n&&!J&&G===0?"":void 0,"data-testid":`rule-add-${M}`},u.default.createElement(Z,{name:"plus",size:14}),u.default.createElement("span",{className:"pk-btn-text"},he[M])))),Ce?u.default.createElement("p",{className:"pk-hint"},x(i.rulesFull,{max:_o})):null)}var _r=(e,t,n)=>e.filters.filter(o=>!(typeof o.field=="string"&&o.field.toLowerCase()===t.toLowerCase()&&n.includes(o.type)));function Ia({view:e,field:t,encoded:n,types:o,labels:r,locale:a,commit:l,back:s,hint:i}){let p=(0,u.useMemo)(()=>st(n,t,{view:e,locale:a,labels:r.core}),[n,t,e,a,r]),d=(0,u.useContext)(Jt).size==="narrow",c=(0,u.useMemo)(()=>ha(n,e,t),[n,e,t]),m=Ke(e,t),y=c.dates?n.column(m):null,g=(0,u.useMemo)(()=>c.dates?En(n,m):null,[n,c.dates,m]),h=(0,u.useMemo)(()=>y?Rr(y):null,[y]),b=(0,u.useMemo)(()=>c.cyclic&&y&&h?$r(y,h):[],[c.cyclic,y,h]),w=ka(e,t,c,b.map(L=>L.year)),[v,T]=(0,u.useState)(null),C=w.anchor??v??"today",[A,O]=(0,u.useState)(()=>aa(w)),[R,f]=(0,u.useState)(!0),[$,P]=(0,u.useState)(null),[K,D]=(0,u.useState)(i==="conditions"?!0:null),E=(0,u.useRef)(null),V=ke(e,t,an).filter(L=>!w.filters.includes(L)),U=V.filter(L=>L.type!=="value"),X=V.filter(L=>L.type==="value"),J=V.length>0||w.filters.length>0,Ce=(0,u.useRef)(J),he=(0,u.useRef)(!1),Pe=(0,u.useRef)(!1),He=()=>{if(!Pe.current)return;let L=E.current?gt(E.current):null;(!L||!L.isConnected||!E.current?.contains(L)||L instanceof HTMLButtonElement&&L.disabled)&&E.current?.querySelector('[data-testid="section-rules"]')?.focus(),Pe.current=!1};(0,u.useEffect)(He),(0,u.useEffect)(()=>{Ce.current!==J&&(Ce.current=J,he.current?he.current=!1:(D(J),P(!J)),Pe.current=!0,setTimeout(He,100))},[J]);let[Ge,Ee]=(0,u.useState)(0);(0,u.useEffect)(()=>{if(Ge){let L=E.current?.querySelector('[data-testid="quick-choices"] input:checked, [data-testid="quick-more-body"] input[type="radio"]:checked, [data-testid="years-combined"] [aria-pressed="true"]:not(:disabled)')??E.current?.querySelector('[data-testid="years-combined"] button:not(:disabled)');L?.scrollIntoView?.({block:"center"}),L?.focus({preventScroll:!0})}},[Ge]);let M=n.timeZone,G=Ir(c,r),_={lang:r.lang,locale:a},ye=JSON.stringify(e),Te=(0,u.useMemo)(()=>{if(!p)return null;let L=_r(e,t,["value","top"]),z=X[0]?.by??sn(e,o,r,void 0).choices[0],Q=$n(n,e,t,z,[...L,...X]),Se=new Map;for(let $e of X){let mn=$n(n,e,t,$e.by,L),Ut=$n(n,e,t,$e.by,[...L,$e]);Se.set($e,{totals:mn.totals,kept:Ut.totals.size})}return{shown:Q.totals,rows:Q.rows,perRule:Se,by:z}},[n,ye,t,p]),Oe=(0,u.useMemo)(()=>{let L=new Map;for(let z of U){let Q=st(n,t,{view:{...e,filters:[z]},locale:a,labels:r.core});L.set(z,Q?Q.items.filter(Se=>Se.kept).length:0)}if(w.filters.length&&U.length){let z=st(n,t,{view:{...e,filters:w.filters},locale:a,labels:r.core});L.set("quick",new Set(z?z.items.filter(Q=>!Q.kept).map(Q=>me(Q.value)):[]))}return L},[n,ye,t,a,r]);if(!p||!Te)return null;let qe={step:"filter",field:ee(t,r.core)},W=p.items.map(L=>L.value),we=Nn(e,t,W),be=new Set(we.map(me)),pe=ba(n,e,t)??(V.some(L=>L.type==="text")?"text":null),Ne=L=>p.items.find(z=>z.value===L)?.label,We=L=>ga(e,L,{labels:r,locale:a,timeZone:M,date:c.dates,labelOf:Ne,span:g}),se=L=>L.toLocaleString(a),Y=w.id==="yearsCombined"&&w.years?w.years:b.map(L=>L.year),Le=c.cyclic&&b.length>1?Y.length===1?x(r.yearsOne,{year:String(Y[0])}):x(r.yearsAll,{years:Y.length===b.length||Y[Y.length-1]-Y[0]===Y.length-1?`${Y[0]}\u2013${Y[Y.length-1]}`:Y.join(", ")}):null,Ae=w.id==="yearsCombined"?Le:w.filters.length?xn(w.filters[0],r,a,M,void 0,g,e.formatting?.weekStart):null,dt=Oe.get("quick")??(w.filters.length?new Set(p.items.filter(L=>!L.kept).map(L=>me(L.value))):new Set),Lt=p.items.filter(L=>L.kept&&be.has(me(L.value))),pt=X.length?Lt.filter(L=>Te.shown.has(me(L.value))).length:Lt.length,Ie=W.length-we.length,Qe=p.items.filter(L=>be.has(me(L.value))&&dt.has(me(L.value))).length,ft=p.items.filter(L=>be.has(me(L.value))&&!L.kept).length-Qe,Xe=Lt.length-pt,jt=(L,z)=>{let Q=[...L.entries()].filter(([,ge])=>ge!==null);if(!Q.length)return null;let[Se,$e]=[Q.reduce((ge,At)=>At[1]<ge[1]?At:ge),Q.reduce((ge,At)=>At[1]>ge[1]?At:ge)],mn=e.values.find(ge=>Et({field:ge.field??null,agg:ge.agg},z)),Ut=rt(mn?.format??(z.agg==="count"||z.agg==="countUnique"?"integer":"number"),{locale:a}),Zn=ge=>Ne(JSON.parse(ge))??ge;return x(r.totalSpread,{low:Ut(Se[1]),lowItem:Zn(Se[0]),high:Ut($e[1]),highItem:Zn($e[0])})},ln=L=>{let z=bt(e,L.by,r),Q=r.valueOps[lt(L)]??lt(L),Se=$e=>typeof $e=="number"?$e.toLocaleString(a,{maximumFractionDigits:6}):"";return ut(L.op)?x(r.totalWordsTwo,{measure:z,op:Q,from:Se(Math.min(L.value,L.value2)),to:Se(Math.max(L.value,L.value2))}):x(r.totalWords,{measure:z,op:Q,number:Se(L.value)})},Ye=null;if(pt===0){let L=X.find(z=>Te.perRule.get(z)?.kept===0);L?Ye=x(r.emptyTotal,{noun:H(G,1,_),rule:ln(L),spread:jt(Te.perRule.get(L).totals,L.by)??""}):we.length===0?Ye=r.emptyPicks:Qe+ft>0&&(Ye=x(r.emptyRules,{noun:H(G,1,_),rules:[...Ae?[Ae]:[],...U.map(We)].join(r.listAnd)}))}let Ze=new Map;for(let L of V)if(L.type==="value"){let z=Te.perRule.get(L),Q=z.kept===0?x(r.ruleKeepsNone,{total:se(W.length),noun:H(G,W.length,_),spread:jt(z.totals,L.by)??""}):x(r.ruleKeeps,{kept:se(z.kept),total:se(W.length),noun:H(G,W.length,_)});Ze.set(L,{kept:z.kept,text:Q})}else{let z=Oe.get(L)??0;Ze.set(L,{kept:z,text:x(r.ruleKeeps,{kept:se(z),total:se(W.length),noun:H(G,W.length,_)})})}let N=[...e.rows,...e.cols].filter(L=>L.toLowerCase()!==t.toLowerCase()).map(L=>x(r.scopeItems,{count:se(st(n,L,{view:e,locale:a,labels:r.core})?.items.length??0),field:ee(L,r.core)}));g&&N.push(x(r.scopeDates,{range:`${ve(Fe(g.min),a)} \u2013 ${ve(Fe(g.max),a)}`}));let B=N.length?N.join(r.listAnd):r.scopeRows,te=()=>{f(!0),aa(w)&&O(!0),Ee(L=>L+1)},ne=(L,z)=>{l(L,qe),requestAnimationFrame(()=>{let Q=E.current?gt(E.current):null;(!Q||!Q.isConnected||!E.current?.contains(Q)||Q instanceof HTMLButtonElement&&Q.disabled)&&E.current?.querySelector(`[data-testid="${z}"]`)?.focus()})},le=_n(e,t),ae=()=>{V.length===1&&!w.filters.length&&(he.current=!0,P($??!J),D(K??J))},Re=()=>{P(null),D(null),Pe.current=!0},et={view:e,field:t,types:o,labels:r,locale:a,commit:l,note:qe,back:s,fk:c,nameKind:pe,say:We,textOn:pa(n,t),timeZone:M,hint:i,items:p.items,noun:G,scope:B,quickFilters:w.filters,focusQuick:te,act:ne,keepBlanks:le,keepSections:ae,releaseSections:Re},tt=p.items.find(L=>L.value===null)?.count??0,un=tt>0&&(U.length>0||w.filters.length>0)?{rows:tt,on:le}:null,Me=$??!J,ht=K??J,oe=()=>{he.current=!0,P(!Me),d&&!Me&&D(!1)},nt=()=>{he.current=!0,D(!ht),d&&!ht&&P(!1)},Ue={shown:pt,total:W.length,noun:G,unpicked:Ie,byQuick:Qe,byRules:ft,byTotals:Xe,itemRules:U.length,totalRules:X.length,rows:Te.rows,rowsAll:n.length,span:g,yearsText:Le,empty:Ye,quickWords:Ae,rules:V.length,canReset:Ie>0||J},qt=L=>L.kept===!1,ot=c.quick&&g&&y&&h?{id:"quick",title:r.quickTitle,body:u.default.createElement(Mr,{ctx:et,quick:w,anchor:C,setAnchorLocal:T,span:g,column:y,counts:h,moreOpen:A,setMoreOpen:O})}:c.cyclic&&b.length>1&&b.length<=12?{id:"years",title:r.yearsCombined,body:u.default.createElement(Br,{ctx:et,years:b,on:Y})}:null;return u.default.createElement("div",{ref:E,className:"pk-filter pk-filter-level"},u.default.createElement(Dr,{ctx:et,state:Ue}),ot?u.default.createElement(Fn,{id:ot.id,title:ot.title,state:Ae&&!R?Ae:null,open:R,onToggle:()=>f(!R)},ot.body):null,u.default.createElement(Fn,{id:"picks",title:r.pickItems,state:Ie?x(r.picksState,{picked:se(we.length),total:se(W.length)}):x(r.picksAll,{total:se(W.length)}),open:Me,onToggle:oe,action:u.default.createElement("button",{type:"button",className:"pk-action",disabled:!Ie,"aria-label":r.clearPicks,onClick:()=>ne(Bn(e,t,W,W),"section-picks"),"data-testid":"filter-clear-picks"},r.clear)},u.default.createElement(Na,{items:p.items,selected:be,onChange:L=>l(Bn(e,t,W.filter(z=>L.has(me(z))),W),qe),labels:r,locale:a,autoFocus:!J&&!c.quick&&i!=="conditions",tail:J?{isOut:qt,render:(L,z,Q)=>u.default.createElement(Fr,{out:L,row:z,searching:Q,labels:r,locale:a})}:void 0})),u.default.createElement(Fn,{id:"rules",title:r.rulesTitle,state:V.length?u.default.createElement(u.default.Fragment,null,u.default.createElement("span",{className:"pk-section-mark"},"\u25CF")," ",x(H(r.rulesState,V.length,_),{count:se(V.length)})):r.rulesNoneState,open:ht,onToggle:nt,action:u.default.createElement("button",{type:"button",className:"pk-action",disabled:!V.length,"aria-label":r.removeRules,onClick:()=>ne(Ya(e,t,w.filters),"section-rules"),"data-testid":"filter-remove-rules"},r.removeAll)},u.default.createElement(zr,{ctx:et,rules:V,focusFirst:i==="conditions",quickLine:Ae,results:Ze,blanks:un})))}function Hr({view:e,field:t,types:n,labels:o,locale:r,commit:a,back:l,encoded:s}){let i=ke(e,t,["top"])[0],p=e.rows[0]?.toLowerCase()===t.toLowerCase()?"rowRoot":e.cols[0]?.toLowerCase()===t.toLowerCase()?"colRoot":null,d=(0,F.useMemo)(()=>i&&p&&s?zt(s,e)[p].children.length:null,[i,p,s,e]),{choices:c,names:m}=sn(e,n,o,i?.by),[y,g]=(0,F.useState)(()=>La(c,i?.by)),h=i&&!i.bottom&&jn.includes(i.count)?i.count:null,[b,w]=(0,F.useState)(!!i&&h===null),[v,T]=(0,F.useState)(!!i?.bottom),[C,A]=(0,F.useState)(de(i?.count??10,r)),O=Vt(),R=je(C,{kind:"count",labels:o,locale:r}),f=ee(t,o.core),$=I=>a(fa(e,t,I,i),{step:"top",field:f}),P=I=>{let V={bottom:v,count:C,by:y,...I},U=je(V.count,{kind:"count",labels:o,locale:r}).value;U!==null&&$({count:U,bottom:V.bottom,by:c[V.by]})},K=ie(),D=ie(),E=(I,V,U,X)=>F.default.createElement("label",{className:"pk-radio"},F.default.createElement("input",{type:"radio",name:K,checked:U,onClick:J=>J.currentTarget.focus(),onChange:X,"data-autofocus":U?"":void 0,"data-testid":`top-${I}`}),F.default.createElement("span",null,V));return F.default.createElement("div",{className:"pk-level-form"},F.default.createElement("div",{role:"radiogroup","aria-label":o.topN,className:"pk-radios"},E("off",o.off,!i&&!b,()=>{w(!1),$(null)}),jn.map(I=>F.default.createElement(F.default.Fragment,{key:I},E(String(I),x(o.topBadge,{count:I.toLocaleString(r)}),!b&&h===I,()=>{w(!1),$({count:I,bottom:!1,by:c[y]})}))),E("own",o.topOwn,b,()=>{w(!0),P({})})),b?F.default.createElement("div",{className:"pk-inline-form"},F.default.createElement("div",{className:"pk-segmented pk-small",role:"group","aria-label":o.topN},[!1,!0].map(I=>F.default.createElement("button",{key:String(I),type:"button","aria-pressed":v===I,onClick:()=>{T(I),P({bottom:I})},"data-testid":I?"top-bottom":"top-top"},I?o.bottom:o.top))),F.default.createElement(Tt,{value:C,onChange:I=>{A(I),O.later(()=>P({count:I}))},onKeyDown:Ot({now:O.now,restore:()=>{O.cancel();let I=de(i?.count??10,r);return C===I?!1:(A(I),!0)},back:l}),onBlur:O.now,problem:R.problem,label:o.topCount,testId:"top-count",className:"pk-field-label pk-narrow-input"})):null,F.default.createElement("div",{className:"pk-inline-form"},F.default.createElement(Oa,{choices:c,names:m,index:y,onChange:I=>{g(I),i&&$({count:i.count,bottom:!!i.bottom,by:c[I]})},label:o.topBy,prefix:o.topBy,testId:"top-by"})),i?F.default.createElement("label",{className:"pk-check"},F.default.createElement("input",{type:"checkbox",name:D,checked:i.ties==="all",onChange:I=>$({count:i.count,bottom:!!i.bottom,by:i.by??c[y],ties:I.target.checked?"all":"first"}),"data-testid":"top-ties"}),F.default.createElement("span",null,o.topTies)):null,i&&(d!==null||i.ties==="all")?F.default.createElement("p",{className:"pk-hint pk-top-shown","data-testid":"top-shown"},d!==null?x(H(o.topShown,d,{lang:o.lang,locale:r}),{count:d.toLocaleString(r)}):x(o.topTiesGroups,{count:i.count.toLocaleString(r)})):null)}function Gr({view:e,field:t,labels:n,locale:o,range:r,regroup:a,back:l}){let s=Wt(e,t),i=s?.by==="bin"?s:null,[p,d]=(0,F.useState)(de(i?.size,o)),[c,m]=(0,F.useState)(de(i?.origin,o)),[y,g]=(0,F.useState)(!1),h=(0,F.useId)(),b=je(p,{kind:"size",tried:y,labels:n,locale:o}),w=je(c,{required:!1,labels:n,locale:o}),v=b.value,T=c.trim()===""?0:w.value,C=v!==null&&T!==null&&Ka(v,T,r)==="far",A=O=>O.toLocaleString(o,{maximumFractionDigits:6});return F.default.createElement("form",{className:"pk-inline-form pk-bin-form",onSubmit:O=>{if(O.preventDefault(),i&&p.trim()===""){a(null);return}g(!0),v!==null&&T!==null&&!C&&a("bin",v,T)},onKeyDown:O=>{O.key==="Escape"&&(O.preventDefault(),O.stopPropagation(),l())}},F.default.createElement(Tt,{value:p,onChange:d,problem:b.problem,label:n.binSize,shown:n.binSize,testId:"bin-size",autoFocus:!0}),F.default.createElement("label",{className:"pk-field-label"},F.default.createElement("span",null,n.binStart),F.default.createElement(De,{type:"text",inputMode:"decimal",autoComplete:"off",spellCheck:!1,value:c,placeholder:"0",onChange:m,clearLabel:n.clearText,"data-testid":"bin-start","aria-invalid":C||w.problem?!0:void 0,"aria-describedby":C||w.problem?h:void 0})),w.problem?F.default.createElement("p",{id:h,className:"pk-form-problem","data-testid":"bin-start-problem"},w.problem):C&&r&&T!==null&&v!==null?F.default.createElement("p",{id:h,className:"pk-form-problem","data-testid":"bin-problem"},x(n.binStartFar,{start:A(T),min:A(r.min),max:A(r.max)})):null,F.default.createElement("button",{type:"submit",className:"pk-btn pk-primary",disabled:C,"data-testid":"bin-apply"},n.apply),i?F.default.createElement("button",{type:"button",className:"pk-btn",onClick:()=>a(null),"data-testid":"bin-off"},n.binsOff):null)}function Wr({view:e,index:t,labels:n,commit:o,back:r}){let a=e.values[t],s={step:"value",field:Rt(a,n)},i=Ta(a.label??"",p=>o(Mn(e,t,{label:p.trim()||null}),s),0);return F.default.createElement("div",{className:"pk-inline-form pk-level-form"},F.default.createElement(De,{type:"text",value:i.text,placeholder:Rt({...a,label:null},n),onChange:i.set,onBlur:i.flush,onKeyDown:Ot({now:()=>{i.flush(),r()},restore:i.restore,back:r}),onClear:()=>a.label?o(Mn(e,t,{label:null}),s):void 0,clearLabel:n.defaultName,"aria-label":n.rename,maxLength:200,"data-autofocus":"","data-testid":"value-name"}),F.default.createElement("p",{className:"pk-hint"},n.nameHint))}function Wn({name:e,info:t,extra:n,labels:o}){let r=F.default.createElement(F.default.Fragment,null,t?.description,t?.href?F.default.createElement(F.default.Fragment,null," ",F.default.createElement("a",{href:t.href,target:"_blank",rel:"noopener noreferrer",className:"pk-learn-more"},o.learnMore)):null,t?.description&&n?F.default.createElement(F.default.Fragment,null,F.default.createElement("br",null),F.default.createElement("br",null)):null,n);return F.default.createElement("div",{className:"pk-level-name"},F.default.createElement("span",{className:"pk-level-name-text","data-testid":"menu-head"},e),t?.description||n?F.default.createElement(On,{info:{description:r},name:e,labels:o,className:"pk-menu-info",testId:"menu-info"}):null)}function Qn({labels:e,onRemove:t,close:n}){return F.default.createElement(rn,{id:"menu-remove",text:e.remove,icon:"trash",danger:!0,onSelect:()=>{n(),t()}})}var Xn=(e,t)=>n=>{let o=n.change?.();n.closes&&t(),o&&e(o.view,o.note)};function sl({view:e,zone:t,index:n,field:o,types:r,labels:a,commit:l,close:s,onRemove:i,defaultsOf:p,rangeOf:d,locale:c,info:m,state:y,encoded:g}){let h=Ke(e,o),b=rr({view:e,zone:t,index:n,field:o,types:r,labels:a,locale:c,state:y,defaultsOf:p,encoded:g}),w=(C,A,O)=>{s();let R=ee(h,a.core),f=C?Tn(R,C,a,A):null;l(bn(e,o,C,{size:A,origin:O,name:f??void 0}).view,{step:"group",field:R})},v=(C,A,O)=>C==="filter"?F.default.createElement(Ia,{view:e,field:o,encoded:g,types:r,labels:a,locale:c,commit:l,back:A,hint:O}):C==="top"?F.default.createElement(Hr,{view:e,field:o,types:r,labels:a,locale:c,commit:l,back:A,encoded:g}):C==="bins"?F.default.createElement(Gr,{view:e,field:o,labels:a,locale:c,range:d?.(h)??null,regroup:w,back:A}):null,T=ee(o,a.core);return F.default.createElement(Bt,{name:T,labels:a,locale:c,topics:b,close:s,onPick:Xn(l,s),panel:v,search:!0,head:F.default.createElement(Wn,{name:T,info:m,labels:a}),foot:F.default.createElement(Qn,{labels:a,onRemove:i,close:s})})}function ll({view:e,index:t,field:n,types:o,labels:r,commit:a,close:l,onRemove:s,locale:i,info:p,state:d,encoded:c}){let m=ee(n,r.core);return F.default.createElement(Bt,{name:m,labels:r,locale:i,topics:lr({view:e,index:t,field:n,types:o,labels:r,locale:i,state:d,encoded:c}),close:l,onPick:Xn(a,l),panel:(y,g,h)=>y==="filter"?F.default.createElement(Ia,{view:e,field:n,encoded:c,types:o,labels:r,locale:i,commit:a,back:g,hint:h}):null,search:!0,head:F.default.createElement(Wn,{name:m,info:p,labels:r}),foot:F.default.createElement(Qn,{labels:r,onRemove:s,close:l})})}function il({view:e,index:t,types:n,labels:o,commit:r,close:a,onRemove:l,defaultsOf:s,info:i,earlier:p,locale:d="en-US"}){let{explain:c}=F.default.useContext($t),m=Rt(e.values[t],o),y=ur({view:e,index:t,types:n,labels:o,locale:d,defaultsOf:s,earlier:p});return F.default.createElement(Bt,{name:m,labels:o,locale:d,topics:y,close:a,onPick:Xn(r,a),panel:(g,h)=>g==="name"?F.default.createElement(Wr,{view:e,index:t,labels:o,commit:r,back:h}):null,search:!0,head:F.default.createElement(Wn,{name:m,info:i,extra:c?o.settingInfo.valuesFilter:null,labels:o}),foot:F.default.createElement(Qn,{labels:o,onRemove:l,close:a})})}var Qr=/[<>:"/\\|?*\u0000-\u001F\u007F]+/g,Xr=/^(con|prn|aux|nul|com\d|lpt\d)$/i;function Yn(e){let n=Yr((typeof e=="string"?e:"").replace(Qr,"-").replace(/^[\s.-]+/,"").slice(0,120));return n&&!Xr.test(n)?n:"pivot"}function Yr(e){let t=e.length;for(;t>0&&(e[t-1]==="."||/\s/.test(e[t-1]));)t--;return e.slice(0,t)}function Zr(e){let t=/^data:([^,;]*)((?:;[^,;]*)*?)(;base64)?,(.*)$/s.exec(e);if(!t)throw new TypeError("not a data: URL");let n=t[1]||"application/octet-stream";if(t[3]){let o=atob(t[4]),r=new Uint8Array(o.length);for(let a=0;a<o.length;a++)r[a]=o.charCodeAt(a);return new Blob([r],{type:n})}return new Blob([decodeURIComponent(t[4])],{type:n})}function Ra(e,t,n=document){let o=URL.createObjectURL(e),r=n.createElement("a");r.href=o,r.download=t,r.rel="noopener",n.body.appendChild(r),r.click(),r.remove(),setTimeout(()=>URL.revokeObjectURL(o),1e4)}async function Jn(e,t){try{if(typeof navigator<"u"&&navigator.clipboard&&typeof navigator.clipboard.writeText=="function")return await navigator.clipboard.writeText(e),!0}catch{}if(!t)return!1;let n=t.ownerDocument,o=n.createElement("textarea");o.value=e,o.readOnly=!0,o.className="pk-sr";let r=t.getRootNode()instanceof ShadowRoot?t.getRootNode().activeElement:n.activeElement;t.appendChild(o);let a;try{o.select(),a=typeof n.execCommand=="function"&&n.execCommand("copy")}catch{a=!1}return o.remove(),r?.focus?.({preventScroll:!0}),a}var es="0.6.0",ts=()=>typeof location<"u"?location.href:void 0;function ns(e,t){let{view:n,viewName:o,sourceId:r,sourceName:a,sourceParams:l,schemaUrl:s,encoded:i,announce:p,limits:d,linkKey:c}=e,m=l?{params:l}:{},y=()=>uo(vt(n,{name:o??"",createdAt:new Date,generator:{name:"pivotkit-react",version:es},source:{id:r,name:a,...m},data:i,...s!==void 0?{schemaUrl:s}:{}}));return{copyLink:async()=>{let g=Do(e.shareLink,ts());if(g===null)return;let h;try{h=(An()??await Ln()).encodeViewLink(vt(n,{name:o??void 0,source:{id:r,...m}},{link:!0}))}catch(w){p(w&&w.code==="LIMIT_EXCEEDED"?t.toastLinkTooLong:x(t.error,{message:String(w)}),{tone:"error"});return}let b=await Jn(Fo(g,c,h),e.root.current);p(b?t.toastLinkCopied:t.toastCopyFailed,b?void 0:{tone:"error"})},copyJson:async()=>{let g=await Jn(y(),e.root.current);p(g?t.toastJsonCopied:t.toastCopyFailed,g?void 0:{tone:"error"})},download:()=>{let g=mo(o||a||Yn(e.fileName)),h=new Blob([y()],{type:"application/json"});e.onExport?.({kind:"json",fileName:g,blob:h})!==!1&&(Ra(h,g,e.root.current?.ownerDocument??document),p(x(t.toastExported,{file:g})))},loadText:async g=>{let h=Po(g,i,{limits:d,sourceId:r});if(h.failed==="notJson"){let A=g.trim(),R=(A.includes("#")?In(A.slice(A.indexOf("#")),c)??In(A.slice(A.indexOf("#")),void 0):null)??(A.startsWith("1.")?A:null);if(!R)return t.viewFailed.notJson;try{let f=(An()??await Ln()).decodeViewLink(R);h=f.view?Mo(f.view,i,{limits:d,sourceId:r}):{view:null,issues:[],failed:"badLink",file:null}}catch{return t.viewFailed.badLink}}if(!h.view)return t.viewFailed[h.failed??"notView"]??t.viewFailed.notView;let b=h,w=b.file?.source;if(w&&b.file?.view&&e.viaSheet?.({id:w.id,sheet:_t(w)},b.file.name||o||"",vt(b.file.view,{name:b.file.name,source:w}))==="switch")return null;let v=Bo(b,t,Array.isArray(e.sources)?e.sources:[]);if(!v)return e.applyLoaded(b),null;let T=v.switchTo,C=e.onSourceSwitch;return{lines:v.lines,load:()=>e.applyLoaded(b),switchTo:T&&typeof C=="function"?{name:T.name,run:()=>C({source:{id:T.id,name:T.name},view:b.file?.view??b.view,name:b.file?.name||void 0})}:void 0}}}}var tn=e=>e.host||e.store,os=(e,t)=>!!t&&e.name===t.name&&(e.scope==="user"?"user":"shared")===t.scope&&e.at!==void 0===t.store&&(!t.store||(e.sourceId??null)===(t.storeSource??null)&&(e.sheet??null)===(t.storeSheet??null)),Kn=(e,t,n,o)=>{let r=a=>e.find(l=>l.at!==void 0&&l.name===t&&(l.sourceId??null)===(n??null)&&(l.sheet??null)===a);return r(n?o??null:null)??(n&&o?r(null):void 0)};function as(e,t,n,o=!1){if(!e)return null;let r;if(e.scope==="shared")r=n.publish?{kind:"publish"}:tn(n)?{kind:null,why:"saveSharedLocked"}:null;else if(e.scope==="user"&&e.store){let a=Kn(t,e.name,e.storeSource,e.storeSheet);r=n.store?a?{kind:"store",at:a.at,storeSource:e.storeSource??null,storeSheet:e.storeSheet??null}:{kind:"store",storeSource:n.sourceId??null,storeSheet:n.sheet??null}:null}else e.scope==="user"?r=n.host?{kind:"host"}:null:r=tn(n)?{kind:null,why:"saveNotInViews"}:null;return r&&r.kind&&o?{kind:null,why:"exportNeedsField"}:r}function rs(e,t,n){if(n.host)return{kind:"host",replaces:t.find(r=>r.scope==="user"&&r.at===void 0&&r.name===e)??null};let o=Kn(t,e,n.sourceId,n.sheet)??Kn(t,e,null,null);return o?{kind:"store",at:o.at,storeSource:o.sourceId??null,storeSheet:o.sheet??null,replaces:o}:{kind:"store",storeSource:n.sourceId??null,storeSheet:n.sheet??null,replaces:null}}var xt=Object.freeze({count:100,text:5e5}),ra=!1;function $a(e){return e?e.length>xt.text?(ra||(ra=!0,console.warn(`pivotkit: the browser store of views holds more than ${xt.text} characters; it is not read, and the next save replaces it`)),[]):Ko(e).templates:[]}function pl(e,t,n={sheet:null,sheets:[]}){return $a(e).map((o,r)=>{let a=_t(o.source);return{name:o.name,view:o.view,at:r,...o.source?.id?{sourceId:o.source.id}:{},...a?{sheet:a}:{}}}).filter(o=>ko(o,{id:t,...n}))}var sa=(e,t)=>e?{id:e,...t?{params:{sheet:t}}:{}}:void 0;function ss(e,t,n){let o=$a(e),r=o;if(t.remove!==void 0){if(o[t.remove]?.name!==t.removeName)throw new Error(n("changed",0));r=o.filter((s,i)=>i!==t.remove)}let a=!!(t.name&&t.view);if(a&&t.replace!==void 0){let s=o[t.replace];if(s?.name!==t.name)throw new Error(n("changed",0));let i=s.source?.id&&s.source.id===t.sourceId?sa(t.sourceId,t.sheet):s.source;r=o.map((p,d)=>d===t.replace?{name:s.name,view:t.view,...i?{source:i}:{}}:p)}else if(a){let s=t.sourceId,i=s?t.sheet??null:null;r=r.filter(d=>d.name!==t.name||(d.source?.id??void 0)!==s||_t(d.source)!==i);let p=sa(s,i);if(r.push({name:t.name,view:t.view,...p?{source:p}:{}}),r.length>xt.count)throw new Error(n("count",xt.count))}let l=r.length?JSON.stringify(r.map(s=>vt(s.view,{name:s.name,source:s.source},{link:!0}))):null;if(a&&l&&l.length>xt.text)throw new Error(n("text",xt.text));return l}function ls(e,t,n,o,r){let a={count:n.storeFull,text:n.storeTooLarge,changed:n.storeChanged},l=ss(e,t,(s,i)=>x(a[s],{max:i.toLocaleString(o)}));if(!r(l))throw new Error(n.storeRefused)}function is({view:e,plan:t,labels:n,onChart:o,close:r}){let a=gn(e.chart);return yo.map(l=>k.default.createElement(Je,{key:l,icon:hn[l].icon,checked:e.display==="chart"&&a===l,hint:l==="auto"&&t?x(n.chartAutoNow,{type:n.chartTypes[t.name]}):void 0,onSelect:()=>{r(),o(l)},testId:`chart-${l}`},n.chartTypes[l]))}var la={slices:["auto","off","value","percent","both"],other:["auto","off","value"]},cs=["outside","inside"],us=["auto","bottom","right","off"],ms=["auto","all","nth"],ds=["auto","on","off"];function ps({title:e,labels:t,onDisplay:n}){let[o,r]=(0,k.useState)(e??""),[a,l]=(0,k.useState)(e);return e!==a&&(l(e),r(e??"")),k.default.createElement("form",{className:"pk-inline-form",onSubmit:s=>{s.preventDefault(),n({title:o.trim()||null})}},k.default.createElement(De,{type:"text",value:o,onChange:r,onClear:()=>e?n({title:null}):void 0,clearLabel:t.clearText,placeholder:t.chartTitleNone,"aria-label":t.chartTitle,maxLength:200,"data-testid":"chart-title"}),k.default.createElement("button",{type:"submit",className:"pk-btn pk-primary",disabled:(o.trim()||null)===(e??null)},t.apply))}function it({title:e,info:t,children:n}){let o=(0,k.useId)();return k.default.createElement("div",{className:"pk-subsection",role:e?"group":void 0,"aria-labelledby":e?o:void 0},e?k.default.createElement("div",{className:`pk-subtitle${t?" pk-setting-row":""}`},k.default.createElement("span",{id:o},e),t?k.default.createElement(Mt,{id:t,name:e}):null):null,n)}function fs({view:e,plan:t,labels:n,onDisplay:o}){let r=e.chart,a=t?t.name:gn(r),l=vo.includes(a),s=hn[a].axis,i=l?la.slices:la.other,p=!l&&(r.valueLabels==="percent"||r.valueLabels==="both")?"value":r.valueLabels;return k.default.createElement(_e,{title:n.chartDisplay},k.default.createElement(it,{title:n.valueLabels},k.default.createElement("div",{className:"pk-choice-grid"},i.map(d=>k.default.createElement(Je,{key:d,checked:p===d,onSelect:()=>o({valueLabels:d}),testId:`labels-${d}`},n.valueLabelNames[d])))),l?k.default.createElement(it,{title:n.labelPosition,info:"labelPosition"},k.default.createElement("div",{className:"pk-choice-grid"},cs.map(d=>k.default.createElement(Je,{key:d,checked:(r.labelPosition??"outside")===d,disabled:r.valueLabels==="off",onSelect:()=>o({labelPosition:d}),testId:`label-position-${d}`},n.labelPositionNames[d])))):null,k.default.createElement(it,{title:n.legend},k.default.createElement("div",{className:"pk-choice-grid"},us.map(d=>k.default.createElement(Je,{key:d,checked:r.legend===d,onSelect:()=>o({legend:d}),testId:`legend-${d}`},n.legendNames[d])))),k.default.createElement(it,{title:n.chartTitle},k.default.createElement(ps,{title:r.title,labels:n,onDisplay:o})),s?k.default.createElement(it,{title:n.axisLabels},k.default.createElement("div",{className:"pk-choice-grid"},ms.map(d=>k.default.createElement(Je,{key:d,checked:r.axisLabels===d,onSelect:()=>o({axisLabels:d}),testId:`axis-${d}`},n.axisLabelNames[d])))):null,s&&e.rows.length>=2?k.default.createElement(it,{title:n.groupLabels,info:"groupLabels"},k.default.createElement("div",{className:"pk-choice-grid"},ds.map(d=>k.default.createElement(Je,{key:d,checked:r.groupLabels===d,onSelect:()=>o({groupLabels:d}),testId:`groups-${d}`},n.groupLabelNames[d])))):null,a==="line"||a==="area"?k.default.createElement(it,null,k.default.createElement(gs,{checked:r.smooth,onChange:d=>o({smooth:d}),testId:"chart-smooth"},n.smoothLines)):null)}function fl({view:e,plan:t,labels:n,onChart:o,onDisplay:r,close:a}){return k.default.createElement(k.default.Fragment,null,k.default.createElement(_e,{title:n.chartType},k.default.createElement("div",{className:"pk-choice-grid"},k.default.createElement(is,{view:e,plan:t,labels:n,onChart:o,close:a}))),k.default.createElement(fs,{view:e,plan:t,labels:n,onDisplay:r}))}function hs({labels:e,mod:t}){let n=o=>o==="Mod"?t==="\u2318"?"\u2318":e.keys.Mod:Object.hasOwn(e.keys,o)?e.keys[o]:o;return k.default.createElement("dl",{className:"pk-shortcuts","data-testid":"shortcuts"},Vo.map(o=>k.default.createElement("div",{key:o.text,className:"pk-shortcut"},k.default.createElement("dt",null,o.keys.map((r,a)=>k.default.createElement(k.default.Fragment,{key:r},a?" + ":null,k.default.createElement("kbd",null,n(r))))),k.default.createElement("dd",null,e.shortcuts[o.text]))))}function gs({checked:e,onChange:t,testId:n,children:o}){let r=ie();return k.default.createElement("label",{className:"pk-switch"},k.default.createElement("input",{type:"checkbox",name:r,checked:e,onChange:a=>t(a.target.checked),"data-testid":n}),k.default.createElement("span",{className:"pk-switch-track","aria-hidden":"true"}),k.default.createElement("span",{className:"pk-switch-text"},o))}function hl({view:e,labels:t,onTotal:n,onExpand:o,onCollapse:r,close:a,tips:l,mod:s,folding:i,help:p}){let d=mr({view:e,labels:t,folding:i,tips:l,explanations:p?.explanations??null,act:{total:n,expand:()=>o(t),collapse:()=>r(t),tipsOn:c=>l.onOn(c),resetTips:()=>l.onReset(),explain:c=>p?.explanations?.set(c)}});return k.default.createElement(Bt,{name:t.options,labels:t,topics:d,close:a,onPick:Fa(a),panel:c=>c==="shortcuts"?k.default.createElement(hs,{labels:t,mod:s}):null})}var Fa=e=>t=>{t.closes&&e(),t.run?.()};function Da({question:e,action:t,cancel:n,onYes:o,onNo:r,testId:a,yesId:l,noId:s,danger:i=!1,busy:p=!1,focusYes:d=!1}){let c=(0,k.useRef)(null),m=(0,k.useRef)(null);return(0,k.useEffect)(()=>{(d?m:c).current?.focus({preventScroll:!0})},[d]),k.default.createElement("div",{className:"pk-confirm pk-save-confirm",role:"group","aria-label":e,"data-testid":a},k.default.createElement("span",{className:"pk-confirm-text"},e),k.default.createElement("button",{ref:m,type:"button",className:i?"pk-btn pk-danger-btn":"pk-btn pk-primary",disabled:p,"data-autofocus":d?"":void 0,"data-testid":l,onClick:o},t),k.default.createElement("button",{ref:c,type:"button",className:"pk-btn",disabled:p,"data-autofocus":d?void 0:"","data-testid":s,onClick:r},n))}function ks({labels:e,button:t,onSave:n,resolve:o,close:r}){let[a,l]=(0,k.useState)(""),[s,i]=(0,k.useState)(null),p=(0,k.useRef)(null),d=(0,k.useRef)(!1);return(0,k.useEffect)(()=>{s?d.current=!0:d.current&&p.current?.focus({preventScroll:!0})},[s]),s?k.default.createElement(Da,{question:x(e.replaceConfirm,{name:s.name}),action:e.replaceAction,cancel:e.cancel,testId:"replace-confirm",yesId:"confirm-replace",noId:"cancel-replace",onYes:()=>{r(),n(s.name,s.target)},onNo:()=>i(null)}):k.default.createElement("form",{className:"pk-inline-form",onSubmit:c=>{c.preventDefault();let m=a.trim(),y=m?o(m):null;y?.replaces?i({name:m,target:y}):y&&(r(),n(m,y))}},k.default.createElement(De,{type:"text",value:a,onChange:l,clearLabel:e.clearText,placeholder:e.viewName,"aria-label":e.viewName,maxLength:120,"data-testid":"saved-view-name",inputRef:p}),k.default.createElement("button",{type:"submit",className:"pk-btn pk-primary",disabled:!a.trim()},t))}function vs({check:e,labels:t,onCancel:n,close:o,title:r,quiet:a=!1}){let l=(0,k.useId)(),s=(0,k.useRef)(null);return(0,k.useEffect)(()=>{a||s.current?.focus({preventScroll:!0})},[a]),k.default.createElement("div",{className:"pk-load-check",role:"group","aria-labelledby":l,"data-testid":"load-check"},k.default.createElement("p",{id:l,className:"pk-load-check-title"},k.default.createElement(Z,{name:"info",size:16}),k.default.createElement("span",null,r??t.loadCheckTitle)),k.default.createElement("ul",{className:"pk-load-check-lines"},e.lines.map((i,p)=>k.default.createElement("li",{key:p},i))),k.default.createElement("div",{className:"pk-load-check-actions"},e.switchTo?k.default.createElement("button",{ref:s,type:"button",className:"pk-btn pk-primary","data-autofocus":"","data-testid":"load-switch",onClick:()=>{o(),e.switchTo?.run()}},x(t.switchAndLoad,{source:e.switchTo.name})):null,k.default.createElement("button",{ref:e.switchTo?void 0:s,type:"button",className:e.switchTo?"pk-btn":"pk-btn pk-primary","data-autofocus":e.switchTo?void 0:"","data-testid":"load-anyway",onClick:()=>{o(),e.load()}},t.loadAnyway),k.default.createElement("button",{type:"button",className:"pk-btn","data-testid":"load-cancel",onClick:n},t.cancel)),e.switchTo?k.default.createElement("p",{className:"pk-hint"},t.switchStartsFresh):null)}function ys({labels:e,onLoadText:t,close:n}){let[o,r]=(0,k.useState)(""),[a,l]=(0,k.useState)(null),[s,i]=(0,k.useState)(null),[p,d]=(0,k.useState)(!1),c=(0,k.useRef)(null),m=(0,k.useRef)(null),y=(0,k.useId)(),g=ie();(0,k.useEffect)(()=>{s||m.current?.focus({preventScroll:!0})},[s]);let h=async b=>{d(!0);let w=await t(b);d(!1),typeof w=="string"?l(w):w?i(w):n()};return s?k.default.createElement(vs,{check:s,labels:e,onCancel:()=>i(null),close:n}):k.default.createElement("form",{className:"pk-inline-form pk-load-view",onSubmit:b=>{b.preventDefault(),h(o)}},k.default.createElement("p",{className:"pk-hint"},e.loadViewHint),k.default.createElement(De,{multiline:!0,value:o,onChange:b=>{r(b),l(null)},clearLabel:e.clearText,"aria-label":e.loadViewText,placeholder:e.loadViewText,rows:4,spellCheck:!1,"aria-invalid":a?!0:void 0,"aria-describedby":a?y:void 0,"data-testid":"load-view-text",inputRef:m}),a?k.default.createElement("p",{id:y,className:"pk-form-problem",role:"alert","data-testid":"load-view-problem"},a):null,k.default.createElement("input",{ref:c,type:"file",name:`${g}-file`,accept:"application/json,.json",className:"pk-sr",tabIndex:-1,"aria-hidden":"true","aria-label":e.chooseFile,"data-testid":"load-view-file",onChange:async b=>{let w=b.target.files?.[0];if(b.target.value="",w){let v;try{v=w.size>kt.text?null:await w.text()}catch{v=null}v===null?l(w.size>kt.text?e.viewFailed.tooLarge:e.viewFailed.file):h(v)}}}),k.default.createElement("button",{type:"button",className:"pk-btn",onClick:()=>c.current?.click(),disabled:p,"data-testid":"load-view-choose"},k.default.createElement(Z,{name:"file"}),k.default.createElement("span",{className:"pk-btn-text"},e.chooseFile)),k.default.createElement("button",{type:"submit",className:"pk-btn pk-primary",disabled:p||!o.trim(),"data-testid":"load-view-apply"},e.load))}function ws(e,t){let n=(a,l,s,i,p)=>Promise.resolve().then(a).then(()=>(e.announce(x(l,{name:p})),!0),d=>(e.announce(fo(s,i,d),{tone:"error"}),!1)),o=a=>ls(e.viewsText,a,t,e.locale,e.keep);return{save:(a,l)=>{let s=e.viewKey;return n(()=>a.kind==="publish"?e.onPublish(l,e.view,{source:e.source}):a.kind==="host"?e.onSave(l,e.view,{scope:"user",source:e.source}):o({name:l,view:e.view,sourceId:e.sourceId,sheet:e.sheet,replace:a.at}),t.toastSaved,t.toastSaveFailed,t.toastSaveRejected,l).then(i=>i&&e.onSaved({name:l,scope:a.kind==="publish"?"shared":"user",store:a.kind==="store",storeSource:a.kind==="store"?a.storeSource:null,storeSheet:a.kind==="store"?bs(a,e):null},s))},remove:e.onDelete||e.store?a=>n(()=>a.at!==void 0?o({remove:a.at,removeName:a.name}):e.onDelete(a.name,{scope:a.scope}),t.toastDeleted,t.toastDeleteFailed,t.toastDeleteRejected,a.name):null,publish:e.onPublish?a=>n(()=>e.onPublish(a.name,e.normalized(a.view),{source:Es(a,e.source)}),t.toastPublished,t.toastPublishFailed,t.toastPublishRejected,a.name):null}}var Es=(e,t)=>{let n=e.sourceId??e.sheetOf??e.fileSource;return n?{id:n,...t?.id===n&&t.name?{name:t.name}:{},...e.sheet?{params:{sheet:e.sheet}}:{}}:t??null},bs=(e,t)=>e.storeSource&&e.storeSource===t.sourceId?t.sheet??null:e.storeSheet??null;function gl({templates:e,labels:t,onLoad:n,actions:o,close:r,share:a}){let{save:l,remove:s,publish:i}=ws(o,t),p={host:!!o.onSave,store:!!o.store,publish:!!i,sourceId:o.sourceId,sheet:o.sheet??null},d=as(o.loaded,e,p,o.empty),c=o.store&&!o.onSave,[m,y]=(0,k.useState)(null),[g,h]=(0,k.useState)(!1);(0,k.useEffect)(()=>{a?.prepare?.()},[a]);let b=!!i||e.some(K=>K.scope==="shared"&&K.deletable),w=dr(e),v=K=>e.flatMap((D,E)=>D.scope===K?[E]:[]),T=(K,D)=>{let E=e[K],I=w[K],V=pr(D,D.indexOf(K)),U=(X,J)=>()=>y({kind:X,t:E,focus:J});return{id:I,testId:`saved-view-${E.name}`,text:E.name,hint:E.sheet&&o.sheet?x(t.viewSheet,{sheet:E.sheet}):void 0,icon:"bookmark",current:os(E,o.loaded),closes:!0,run:()=>n(E),info:E.scope==="shared"&&b&&!(s&&E.deletable)?"sharedView":void 0,actions:[...i&&E.scope==="user"?[{id:`publish:${I}`,testId:`publish-view-${E.name}`,text:E.name,label:x(t.publishView,{name:E.name}),icon:"upload",open:"confirm",backTo:`item:${I}`,run:U("publish",`item:${I}`)}]:[],...s&&E.deletable?[{id:`delete:${I}`,testId:`delete-view-${E.name}`,text:E.name,label:x(t.deleteView,{name:E.name}),icon:"trash",open:"confirm",backTo:`item:${I}`,run:U("delete",V===void 0?void 0:`item:${w[V]}`)}]:[]]}},C=v("shared"),A=v("user"),O=[];d&&O.push({id:"save-loaded",text:x(t.saveNamed,{name:o.loaded.name}),icon:"save",disabled:d.kind===null,reason:d.kind===null?t[d.why]:void 0,...d.kind==="publish"?{open:"confirm",run:()=>y({kind:"replaceShared"})}:{closes:!0,run:()=>l(d,o.loaded.name)}}),tn(p)&&O.push({id:"save-as",text:o.loaded?t.saveAs:`${t.saveView}\u2026`,icon:"save",open:"saveAs"});let R=a?ns(a,t):null,f=m?.kind==="replaceShared"?{text:x(t.replaceSharedConfirm,{name:o.loaded?.name}),action:t.replaceAction,testId:"replace-shared-confirm",yesId:"confirm-replace-shared",noId:"cancel-replace-shared"}:m?{text:x(m.kind==="publish"?t.publishConfirm:t.deleteConfirm,{name:m.t.name}),action:m.kind==="publish"?t.publishAction:t.deleteAction,testId:`${m.kind}-confirm`,yesId:`confirm-${m.kind}`,noId:`cancel-${m.kind}`}:null,$=[...O.length?[{id:"thisView",title:t.thisView,kind:"inline",titled:!0,groups:[{choices:O}]}]:[],...C.length?[{id:"sharedViews",title:t.sharedViews,kind:"inline",titled:!0,groups:[{choices:C.map(K=>T(K,C))}]}]:[],...A.length||tn(p)||!C.length?[{id:"myViews",title:t.myViews,kind:"inline",titled:!0,groups:[{choices:A.map(K=>T(K,A))}],note:A.length?c?t.storeNote:null:c?t.noViewsStore:t.noViews,noteId:c?"store-note":void 0}]:[],...R?[{id:"share",title:t.shareThisView,kind:"inline",titled:!0,groups:[{choices:[...a.canLink?[{id:"copy-link",text:t.copyLink,icon:"link",closes:!0,run:R.copyLink}]:[],{id:"copy-json",text:t.copyJson,icon:"copy",closes:!0,run:R.copyJson},{id:"download-view",text:t.downloadView,icon:"download",closes:!0,run:R.download},{id:"load-view",text:t.loadView,icon:"upload",open:"load"}]}],note:t.sharePrivacy,noteId:"share-privacy"}]:[],{id:"saveAs",title:t.saveAs,levelTitle:(o.loaded?t.saveAs:t.saveView).replace(/…$/,""),kind:"panel",hidden:!0},{id:"load",title:t.loadView,levelTitle:t.loadView.replace(/…$/,""),kind:"panel",hidden:!0},{id:"confirm",title:f?.action??"",kind:"panel",hidden:!0}],P=(K,D)=>K==="saveAs"?k.default.createElement(ks,{labels:t,button:o.loaded?t.saveAs.replace(/…$/,""):t.save,onSave:(E,I)=>l(I,E),resolve:E=>rs(E,e,p),close:r}):K==="load"&&R?k.default.createElement(ys,{labels:t,onLoadText:R.loadText,close:r}):K==="confirm"&&f&&m?k.default.createElement(Da,{question:f.text,action:f.action,cancel:t.cancel,danger:m.kind==="delete",focusYes:m.kind!=="replaceShared",busy:g,testId:f.testId,yesId:f.yesId,noId:f.noId,onNo:()=>D(),onYes:async()=>{if(m.kind==="replaceShared"){r(),l(d,o.loaded.name);return}h(!0);let E=await(m.kind==="publish"?i:s)?.(m.t);h(!1),E&&D(m.focus)}}):null;return k.default.createElement(Bt,{name:t.views,labels:t,topics:$,close:r,onPick:Fa(r),panel:P,focusAgain:e.length})}function fe({icon:e,text:t,info:n,onSelect:o,testId:r,disabled:a,reason:l}){let s=k.default.createElement(Je,{icon:e,onSelect:o,disabled:a,reason:l,testId:r},t);return n?k.default.createElement("div",{className:"pk-setting-row"},s,k.default.createElement(Mt,{id:n,name:t})):s}function kl({labels:e,onExport:t,chartReady:n,display:o,empty:r=!1,dataExport:a=!1,prepare:l,close:s}){(0,k.useEffect)(()=>{l()},[l]);let i=d=>()=>{s(),t(d)},p=r?{disabled:!0,reason:e.exportNeedsField}:{};return k.default.createElement(k.default.Fragment,null,k.default.createElement(_e,{title:e.exportDownload},k.default.createElement(fe,{icon:"file",text:e.exportXlsx,info:"exportXlsx",onSelect:i("xlsx"),...p,testId:"export-xlsx"}),k.default.createElement(fe,{icon:"file",text:e.exportCsv,info:"exportCsv",onSelect:i("csv"),...p,testId:"export-csv"}),k.default.createElement(fe,{icon:"file",text:e.exportHtml,info:"exportHtml",onSelect:i("html"),...p,testId:"export-html"}),k.default.createElement(fe,{icon:"image",text:e.exportPng,disabled:r||!n,reason:r?p.reason:o!=="chart"?e.exportPngNeedsChart:void 0,onSelect:i("png"),testId:"export-png"}),k.default.createElement(fe,{icon:"image",text:e.exportSvg,disabled:r||o!=="chart",reason:r?p.reason:o!=="chart"?e.exportPngNeedsChart:void 0,onSelect:i("svg"),testId:"export-svg"})),k.default.createElement(_e,{title:e.exportPrintGroup},k.default.createElement(fe,{icon:"print",text:e.exportPrint,info:"exportPrint",onSelect:i("print"),...p,testId:"export-print"})),k.default.createElement(_e,{title:e.exportCopy},k.default.createElement(fe,{icon:"copy",text:e.copyTable,info:"copyTable",onSelect:i("copy-table"),...p,testId:"export-copy-table"}),k.default.createElement(fe,{icon:"copy",text:e.copyDataJson,info:"copyDataJson",onSelect:i("copy-json"),...p,testId:"export-copy-json"})),a?k.default.createElement(_e,{title:e.exportDataGroup},k.default.createElement(fe,{icon:"file",text:e.exportDataCsv,info:"exportDataCsv",onSelect:i("data-csv"),testId:"export-data-csv"}),k.default.createElement(fe,{icon:"file",text:e.exportDataJson,info:"exportDataJson",onSelect:i("data-json"),testId:"export-data-json"})):null)}var ia="pk-print-frame",Pa=new WeakMap;function ca(e){Pa.get(e)?.abort(),e.remove()}var Ns=5e3;function Ss(e,t){let n=[],o=e.replace(/<style>([\s\S]*?)<\/style>/g,(a,l)=>(n.push(l),"")),r=t.parseFromString(o,"text/html");for(let a of r.querySelectorAll("style, script, meta, link, base"))a.remove();return{css:n.join(`
|
|
2
|
+
`),lang:r.documentElement.getAttribute("lang")??"",dir:r.documentElement.getAttribute("dir")??"",title:r.title,body:r.body}}async function xs(e,t){let n=t.ownerDocument,o=n.defaultView;if(!o)return!1;for(let m of t.querySelectorAll(`iframe.${ia}`))ca(m);let r=Ss(e,new o.DOMParser),a=n.createElement("iframe");a.className=ia,a.setAttribute("sandbox","allow-same-origin allow-modals"),a.setAttribute("aria-hidden","true"),a.setAttribute("tabindex","-1"),a.title=r.title,a.hidden=!0;let l=new Promise(m=>{let y=setTimeout(()=>m(!1),Ns),g=()=>{a.contentDocument?.URL==="about:srcdoc"&&a.contentDocument.readyState==="complete"&&(clearTimeout(y),a.removeEventListener("load",g),m(!0))};a.addEventListener("load",g)});a.srcdoc='<!doctype html><html><head><meta charset="utf-8"><title></title></head><body></body></html>',t.append(a);let s=await l?a.contentWindow:null,i=a.contentDocument;if(!s||!i||!i.body)return a.remove(),!1;i.documentElement.lang=r.lang,i.documentElement.dir=r.dir,i.title=r.title;let p=s.CSSStyleSheet;if(typeof p=="function"&&"adoptedStyleSheets"in i){let m=new p;m.replaceSync(r.css),i.adoptedStyleSheets=[m]}else{let m=i.createElement("style");m.textContent=r.css,i.head.append(m)}if(i.body.replaceChildren(...[...r.body.childNodes].map(m=>i.importNode(m,!0))),a.hidden=!1,await new Promise(m=>o.requestAnimationFrame(()=>setTimeout(m,0))),!a.isConnected)return!0;let d=new AbortController;Pa.set(a,d);let c=()=>setTimeout(()=>ca(a),0);return s.addEventListener("afterprint",c,{once:!0,signal:d.signal}),o.addEventListener("afterprint",c,{once:!0,signal:d.signal}),s.print(),!0}function Ma(e,t,n=()=>({})){let o=e.getRootNode().host,r=[e,...o?[o]:[]].filter(s=>s.getAttribute("data-pk-theme")==="dark"),a=()=>{let s=getComputedStyle(e);return{...Object.fromEntries(t.map(i=>[i,s.getPropertyValue(i).trim()]).filter(([,i])=>i)),...n()}};if(!r.length)return a();let l=[e.style.getPropertyValue("--pk-duration"),e.style.getPropertyPriority("--pk-duration")];e.style.setProperty("--pk-duration","0ms","important");try{for(let s of r)s.setAttribute("data-pk-theme","light");try{return a()}finally{for(let s of r)s.setAttribute("data-pk-theme","dark");getComputedStyle(e).getPropertyValue("--pk-duration")}}finally{l[0]?e.style.setProperty("--pk-duration",l[0],l[1]):e.style.removeProperty("--pk-duration")}}var Ba="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",nn=null,Dn=null;function on(){return Dn??=import("./export-O6XO33DV.js").then(e=>(nn=e,e),e=>{throw Dn=null,e}),Dn}var Pn=null;function Cs(e){return Pn??=Promise.all([import("./report-run-BZBFOMPF-T26ENZEM.js"),e()]).catch(t=>{throw Pn=null,t}),Pn}var Ts=()=>nn,Os=()=>{on().catch(()=>{})};function Dt(e,{doc:t,onExport:n,...o}){return n?.({...o,blob:e})===!1?!1:(Ra(e,o.fileName,t),!0)}async function Va(e,{type:t,container:n,onExport:o,...r}){return o?.({...r,blob:new Blob([e],{type:t}),text:e})===!1?"kept":await Jn(e,n)?"copied":"blocked"}var Ls=e=>typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("color",e);function As(e,t,n=Ls){if(!e||!t||!n(e))return null;t.fillStyle=e;let o=String(t.fillStyle).toLowerCase();return/^#[0-9a-f]{6}$/.test(o)?o:null}var Is=Object.freeze(["--pk-scale-low","--pk-scale-mid","--pk-scale-high","--pk-chart-1"]);function Rs(e,t){let{colorScale:n=[],dataBar:o=""}=co(e),r=n.map(t),[a,l,s]=[r[0],r.at(-1),r.length===3?r[1]:null],i=t(o);return{...a&&l?{colorScale:s?[a,s,l]:[a,l]}:{},...i?{dataBar:i}:{}}}function $s(e){if(!e)return;let t=Ma(e,Is),n=e.ownerDocument.createElement("canvas").getContext("2d");return Rs({getPropertyValue:o=>t[o]??""},o=>As(o,n))}function Fs(e,t,n){if(!e)return;let o=Ma(e,t.REPORT_TOKENS,()=>n.tokenLengths(e,[...n.LENGTH_TOKENS,...t.REPORT_LENGTHS]));return Object.keys(o).length?o:void 0}async function yl(e,{fileName:t,result:n,encoded:o,exportData:r,locale:a,labels:l,limits:s,root:i,chartRef:p,announce:d,onExport:c,title:m,source:y,loadECharts:g}){l=Jo(l);let h=Yn(t),b=i.current?.ownerDocument;try{if(e==="png"){let A=i.current?getComputedStyle(i.current).getPropertyValue("--pk-surface").trim():"",O=p.current?.getDataURL({type:"png",pixelRatio:2,backgroundColor:A||void 0}),R=`${h}.png`;O&&Dt(Zr(O),{kind:e,fileName:R,doc:b,onExport:c})&&d(x(l.toastExported,{file:R}));return}if(e==="data-csv"||e==="data-json"){let A=o??n?.encoded;if(!r||!A)return;let O=nn??await on(),R=e==="data-csv",f=`${h}-data.${R?"csv":"json"}`,$=R?new Blob([O.dataToCsvBytes(A,s?{limits:s}:{})],{type:"text/csv;charset=utf-8"}):new Blob([O.dataToJson(A,s?{limits:s}:{})],{type:"application/json"});Dt($,{kind:e,fileName:f,doc:b,onExport:c})&&d(x(l.toastExported,{file:f}));return}if(!n)return;if(e==="html"||e==="svg"||e==="print"){let[A,O]=await Cs(g),R=p.current,f=R?{width:ua(R.getWidth()),height:ua(R.getHeight())}:void 0,$=await A.render(n.view,n.encoded,{format:e==="svg"?"svg":"html",echarts:O,locale:a,trusted:!0,labels:l.core,...s?{limits:s}:{},timeZone:n.timeZone,...m?{title:m}:{},...y?{source:y}:{},...f?{size:f}:{},tokens:Fs(i.current,A,O),chartEmbed:e==="print"?"inline":"image"}),P=`${h}.${e==="svg"?"svg":"html"}`,K=new Blob([$.body],{type:$.mediaType});if(e!=="print"){Dt(K,{kind:e,fileName:P,doc:b,onExport:c})&&d(x(l.toastExported,{file:P}));return}if(c?.({kind:e,fileName:P,blob:K})===!1)return;(!i.current||!await xs($.text,i.current))&&d(l.toastPrintBlocked,{tone:"error"});return}let w=nn??await on(),v=io(n,{locale:a,labels:l.core,limits:s});if(e==="copy-table"||e==="copy-json"){let A=e==="copy-json",O=await Va(A?w.toJson(v):w.toTsv(v),{kind:e,fileName:`${h}.${A?"json":"tsv"}`,type:A?"application/json":"text/tab-separated-values",container:i.current,onExport:c});O!=="kept"&&d(O==="copied"?A?l.toastDataCopied:l.toastTableCopied:l.toastCopyBlocked,O==="copied"?void 0:{tone:"error"});return}let T=`${h}.${e}`,C=e==="xlsx"?w.toXlsx(v,{sheetName:h,theme:$s(i.current)}):w.toCsvBytes(v,{bom:!0});Dt(new Blob([C],{type:e==="xlsx"?Ba:"text/csv;charset=utf-8"}),{kind:e,fileName:T,doc:b,onExport:c})&&d(x(l.toastExported,{file:T}))}catch(w){d(x(l.toastExportFailed,{message:fn(w)}),{tone:"error"})}}var ua=e=>Math.max(100,Math.min(8e3,Math.round(Number(e)||0)));function Ds({shown:e,count:t},n,o){return e<t?x(n.drillPart,{shown:e.toLocaleString(o),count:t.toLocaleString(o)}):H(n.drillCount,t,{lang:n.lang,locale:o})}async function Ps(e,{drill:t,encoded:n,labels:o,onExport:r,announce:a,root:l}){let{locale:s}=t,i={shown:t.rows.length,count:t.count},p=Ds(i,o,s),d=Yn(t.name);try{let c=Ts()??await on();if(e==="drill-copy"||e==="drill-json"){let v=e==="drill-json",T=v?JSON.stringify(Array.from(t.indices,A=>$o(n,A)),null,2):c.toTsv([t.columns.map(A=>A.label??A.name),...t.rows]),C=await Va(T,{kind:e,fileName:`${d}.${v?"json":"tsv"}`,type:v?"application/json":"text/tab-separated-values",container:l,onExport:r,rows:i});C!=="kept"&&a(C==="copied"?x(v?o.drillCopiedJson:o.drillCopied,{rows:p}):o.toastCopyBlocked,C==="copied"?void 0:{tone:"error"});return}let m=e==="drill-xlsx",y=Object.fromEntries(t.columns.map(v=>[v.name,v.label??v.name])),g={locale:s,formats:t.formats,labels:{fields:y,true:o.core.true,false:o.core.false}},h=`${d}.${m?"xlsx":"csv"}`,b=m?c.rowsToXlsx(n,t.indices,{...g,sheetName:t.name}):c.rowsToCsvBytes(n,t.indices,g),w=new Blob([b],{type:m?Ba:"text/csv;charset=utf-8"});Dt(w,{kind:e,fileName:h,doc:l?.ownerDocument,onExport:r,rows:i})&&a(x(o.drillExported,{file:h,rows:p}))}catch(c){a(x(o.toastExportFailed,{message:fn(c)}),{tone:"error"})}}var ma=new Set(["date","datetime","time"]);function Ms(e,{locale:t,labels:n,format:o}){let r=typeof o=="string"&&at(o)?o.trim().toLowerCase():null;if(e.type==="date")return{text:rt(r&&ma.has(r.split(":")[0])?r:e.dateOnly?"date":"datetime",{locale:t}),numeric:!1};if(e.type==="number"){let a=new Intl.NumberFormat(t,{maximumFractionDigits:6});return{text:r&&!ma.has(r.split(":")[0])?rt(r,{locale:t}):s=>a.format(s),numeric:r!=="text"}}return e.type==="boolean"?{text:a=>a?n.true:n.false,numeric:!1}:{text:a=>String(a),numeric:!1}}function Bs(e,t,{locale:n,labels:o,formatOf:r=()=>{}}){let a=e.columns.map(s=>({column:s,...Ms(s,{locale:n,labels:o,format:r(s.name)})})),l=Array.from(t,s=>a.map(({column:i,text:p})=>{let d=i.codes[s],c=d<0?null:i.dict[d];return c==null?"":p(c)}));return{columns:a.map(s=>({name:s.column.name,numeric:s.numeric})),rows:l}}function Vs(e,t,n,o){let r=[],a=[],l=(s,i,p)=>{let d=lo(e,s,p);for(let c=d;c&&c.parent;c=c.parent){let m=e.label(s,c,o.core);r.unshift(`${ee(i[c.depth-1],o.core)}: ${m}`),a.unshift(m)}};return l("cols",e.colFields,n),l("rows",e.rowFields,t),{title:r.length?r.join(" \xB7 "):o.core.grandTotal,name:a.length?a.join(" \u2013 "):o.core.grandTotal}}function js({result:e,rowPath:t,colPath:n,count:o,indices:r,formatOf:a,nameOf:l,infoOf:s},i){let p=Bs(e.encoded,r,{locale:e.locale,labels:i.core,formatOf:a}),d=p.columns.map(m=>({...m,label:l(m.name),description:s(m.name)?.description})),c=Object.fromEntries(p.columns.map(m=>[m.name,a(m.name)]).filter(([,m])=>typeof m=="string"));return{...Vs(e,t,n,i),count:o,rows:p.rows,columns:d,indices:r,formats:c,locale:e.locale}}function El({drill:e,onClose:t,labels:n,locale:o,exportContext:r}){let a=(0,j.useId)(),l=(0,j.useMemo)(()=>e?js(e,n):null,[e,n]),s=(0,j.useRef)(null),[i,p]=(0,j.useState)(!1),d=(0,j.useContext)(Jt).size==="narrow",{onKeyDown:c}=no(s,!!l,i?()=>p(!1):t);if((0,j.useEffect)(()=>{l&&r&&Os()},[l,r]),!l)return null;let m=l.count.toLocaleString(o),y=l.rows.length<l.count,g=(h,b)=>()=>{b(),r&&Ps(h,{drill:l,labels:n,...r,root:r.root.current})};return j.default.createElement(j.default.Fragment,null,j.default.createElement("div",{className:"pk-scrim pk-drill-scrim",onClick:t,"aria-hidden":"true"}),j.default.createElement("div",{className:`pk-drill${i&&!d?" pk-drill-big":""}`,role:"dialog","aria-modal":"true","aria-labelledby":a,"data-testid":"drill-panel","data-pk-enlarged":i&&!d?"":void 0,ref:s,tabIndex:-1,onKeyDown:h=>{h.target instanceof Node&&s.current?.contains(h.target)&&c(h)}},j.default.createElement("div",{className:"pk-drill-head"},j.default.createElement("div",{className:"pk-drill-heading"},j.default.createElement("h2",{id:a},n.drillTitle),j.default.createElement("p",{className:"pk-drill-path"},l.title),j.default.createElement("p",{className:"pk-muted","data-testid":"drill-count"},y?x(n.drillShown,{shown:l.rows.length.toLocaleString(o),count:m}):H(n.drillCount,l.count,{lang:n.lang,locale:o}))),j.default.createElement("div",{className:"pk-drill-actions"},r?j.default.createElement(oo,{label:n.exportLabel,icon:"download",text:n.exportLabel,role:"dialog",align:"end",testId:"drill-export",className:"pk-btn pk-small-btn"},h=>j.default.createElement(j.default.Fragment,null,y?j.default.createElement("p",{className:"pk-hint pk-menu-hint","data-testid":"drill-export-note"},x(n.drillExportNote,{shown:l.rows.length.toLocaleString(o),count:m})):null,j.default.createElement(_e,{title:n.exportDownload},j.default.createElement(fe,{icon:"file",text:n.drillCsv,onSelect:g("drill-csv",h),testId:"drill-csv"}),j.default.createElement(fe,{icon:"file",text:n.drillXlsx,onSelect:g("drill-xlsx",h),testId:"drill-xlsx"})),j.default.createElement(_e,{title:n.exportCopy},j.default.createElement(fe,{icon:"copy",text:n.drillCopy,info:"drillCopy",onSelect:g("drill-copy",h),testId:"drill-copy"}),j.default.createElement(fe,{icon:"copy",text:n.drillJson,info:"drillJson",onSelect:g("drill-json",h),testId:"drill-json"})))):null,d?null:j.default.createElement("button",{type:"button",className:"pk-btn pk-pressable pk-small-btn","data-pk-on":i?"":void 0,onClick:()=>p(h=>!h),"data-testid":"drill-enlarge"},j.default.createElement(Z,{name:"enlarge",size:14}),j.default.createElement("span",{className:"pk-btn-text"},i?n.reduce:n.enlarge)),j.default.createElement("button",{type:"button",className:"pk-icon-btn",onClick:t,"data-autofocus":"","aria-label":n.close,title:n.close},j.default.createElement(Z,{name:"x"})))),j.default.createElement("div",{className:"pk-drill-body",tabIndex:0,"aria-label":l.title},j.default.createElement("table",{className:"pk-drill-table"},j.default.createElement("thead",null,j.default.createElement("tr",null,l.columns.map(h=>j.default.createElement("th",{key:h.name,scope:"col",className:h.numeric?"pk-num":void 0,title:h.description,"aria-description":h.description},h.label??h.name)))),j.default.createElement("tbody",null,l.rows.map((h,b)=>j.default.createElement("tr",{key:b},l.columns.map((w,v)=>j.default.createElement("td",{key:w.name,className:w.numeric?"pk-num":void 0},w.numeric||h[v].length<24?h[v]:j.default.createElement("div",{className:"pk-drill-text"},h[v]))))))))))}function bl({api:e,close:t,labels:n}){let o=jo(),[r,a]=(0,re.useState)(!1),[l,s]=(0,re.useState)(0),i=(0,re.useRef)(null),[p]=(0,re.useState)(()=>!o),d=(0,re.useRef)(e.load);return(0,re.useEffect)(()=>{d.current=e.load}),(0,re.useEffect)(()=>{if(o)return;let c=!0;return d.current().catch(()=>c&&a(!0)),()=>{c=!1}},[o,l]),(0,re.useEffect)(()=>{let c=i.current?.closest(".pk-popover"),m=gt(c);p&&c&&(m===c||!m||!c.contains(m))&&c.querySelector("[data-pk-option], [data-autofocus]")?.focus({preventScroll:!0})},[p,o,r]),re.default.createElement("div",{ref:i},o?re.default.createElement(o.DataMenuPanel,{api:e,close:t}):r?re.default.createElement("div",{className:"pk-menu-failed",role:"alert","data-testid":"menu-failed"},re.default.createElement("p",null,n.menuFailed),re.default.createElement("button",{type:"button",className:"pk-btn pk-small-btn","data-autofocus":"",onClick:()=>{a(!1),s(c=>c+1)}},n.tryAgain)):re.default.createElement("p",{className:"pk-hint pk-menu-loading",role:"status"},n.loadingMenu))}export{sl as AxisMenu,fl as ChartTypePanel,bl as DataMenu,El as DrillPanel,kl as ExportPanel,ll as FilterMenu,al as FilterPopover,vs as LoadCheck,hl as OptionsPanel,il as ValueMenu,gl as ViewsPanel,ja as addMenuTexts,qa as hasMenuTexts,Jo as menuLabels,Os as prepareExporters,yl as runExport,pl as storedViews};
|