@kanunilabs/datagrid 1.9.8 → 1.9.10
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/dist/datagrid.umd.js +10 -10
- package/dist/index.cjs +2 -2
- package/dist/index.js +2 -2
- package/dist/styles.css +145 -1
- package/package.json +3 -3
package/dist/datagrid.umd.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
"use strict";var KanuniLabsDataGrid=(()=>{var $c=Object.create;var En=Object.defineProperty;var Wc=Object.getOwnPropertyDescriptor;var _c=Object.getOwnPropertyNames;var Uc=Object.getPrototypeOf,qc=Object.prototype.hasOwnProperty;var Ja=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,u)=>(typeof require<"u"?require:t)[u]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var jc=(e,t)=>{for(var u in t)En(e,u,{get:t[u],enumerable:!0})},Ql=(e,t,u,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of _c(t))!qc.call(e,n)&&n!==u&&En(e,n,{get:()=>t[n],enumerable:!(r=Wc(t,n))||r.enumerable});return e};var eo=(e,t,u)=>(u=e!=null?$c(Uc(e)):{},Ql(t||!e||!e.__esModule?En(u,"default",{value:e,enumerable:!0}):u,e)),Yc=e=>Ql(En({},"__esModule",{value:!0}),e);var Cg={};jc(Cg,{CHECKBOX_COLUMN_WIDTH:()=>Vr,DENSITY_ROW_HEIGHT:()=>pi,DETAIL_COLUMN_WIDTH:()=>or,GRID_COLOR_SCHEMES:()=>md,PRINT_MAX_ROWS:()=>Ai,ROW_DRAG_MIME:()=>zr,ROW_NUMBER_COLUMN_WIDTH:()=>ar,THEME_ROW_HEIGHT:()=>gi,attachCellEditing:()=>la,buildCellEditor:()=>aa,buildDateEditor:()=>fu,buildEditForm:()=>ia,buildHeaderMenu:()=>ra,createGrid:()=>Hd,isPackagedTheme:()=>fi,measureBestFitWidth:()=>na,openConfirmDialog:()=>oa,presetRowHeight:()=>ua,toolbarButton:()=>Vd});function Qc(e){return e.kind==="group"}function Bt(e){return e.kind==="data"}function Xc(e){return e.kind==="treePath"}function Zc(e){return!Array.isArray(e)&&typeof e.load=="function"}function Ln(e){return typeof e=="string"||typeof e=="number"}function a0(e){if(!e)return{show:!1,search:null,columns:void 0,export:!1,chart:!1};let t=e===!0?{}:e,u=t.search??!0;return{show:!0,search:u===!1?null:u===!0?{}:u,columns:t.columns,export:t.export??!0,chart:t.chart??!0}}var o0="\u2063tree:";function Jc(e){return o0+JSON.stringify(e)}function bn(e){return typeof e=="string"&&e.startsWith(o0)}function e4(e,t,u){let r=new Map,n=new Map,a=new Map,o=new Map,l=new Map,i=new Array(e.length);for(let m=0;m<e.length;m++){let c=t(e[m]);a.set(c,m);let f=u(e[m]),C=Array.isArray(f)?f.map(S=>String(S)):[];i[m]=C;let A=JSON.stringify(C);C.length>0&&!l.has(A)&&l.set(A,c)}let s=(m,c)=>{n.set(c,m);let f=r.get(m);f?f.push(c):r.set(m,[c])},h=m=>{if(m.length===0)return null;let c=l.get(JSON.stringify(m));if(c!==void 0)return c;let f=Jc(m);return o.has(f)||(o.set(f,{label:m[m.length-1],path:m}),s(h(m.slice(0,-1)),f)),f};for(let m=0;m<e.length;m++){let c=t(e[m]),f=i[m];s(f.length>1?h(f.slice(0,-1)):null,c)}return{childrenOf:r,parentOf:n,sourceIndexOf:a,pathRows:o}}function to(e,t,u=new WeakMap){let r=[],n=[];for(let a=e.length-1;a>=0;a--)n.push({row:e[a],parent:null});for(;n.length>0;){let{row:a,parent:o}=n.pop();r.push(a),o!==null&&typeof a=="object"&&a!==null&&u.set(a,o);let l=a&&typeof a=="object"?a[t]:void 0;if(Array.isArray(l))for(let i=l.length-1;i>=0;i--)n.push({row:l[i],parent:a})}return{rows:r,parentOf:u}}function t4(e){let{getParentKey:t,parentField:u}=e;if(t)return n=>t(n)??null;let r=u??"parentId";return n=>n[r]??null}function u4(e,t,u){let r=new Map,n=new Map,a=new Map;for(let i=0;i<e.length;i++)a.set(t(e[i]),i);for(let i=0;i<e.length;i++){let s=t(e[i]),h=u(e[i]);h!==null&&(h===s||!a.has(h))&&(h=null),n.set(s,h);let m=r.get(h);m?m.push(s):r.set(h,[s])}let o=new Set;for(let i of n.keys()){if(o.has(i))continue;let s=new Set,h=i;for(;h!==null&&!o.has(h);){if(s.has(h)){let m=n.get(h)??null;n.set(h,null);let c=r.get(m);if(c){let C=c.indexOf(h);C>=0&&c.splice(C,1)}let f=r.get(null);f?f.push(h):r.set(null,[h]);break}s.add(h),h=n.get(h)??null}for(let m of s)o.add(m)}let l=r.get(null);return l&&l.sort((i,s)=>(a.get(i)??0)-(a.get(s)??0)),{childrenOf:r,parentOf:n,sourceIndexOf:a}}var r4=Object.freeze({});function n4(e,t){let{index:u,sourceRows:r,isExpanded:n}=t,a=new Map,o=new Map;for(let A=0;A<e.length;A++)a.set(e[A].key,e[A]),o.set(e[A].key,A);let l=e.length!==u.sourceIndexOf.size,i=u.pathRows,s=new Set(a.keys()),h=new Map;if(l||i&&i.size>0)for(let A of a.keys()){let S=o.get(A),F=u.parentOf.get(A)??null;for(;F!==null&&!s.has(F);)s.add(F),i?.has(F)&&h.set(F,S),F=u.parentOf.get(F)??null}let m=A=>{let S=A.filter(F=>s.has(F));return S.sort((F,x)=>{let k=o.get(F)??h.get(F),M=o.get(x)??h.get(x);return k!==void 0&&M!==void 0?k-M:k!==void 0?-1:M!==void 0?1:(u.sourceIndexOf.get(F)??0)-(u.sourceIndexOf.get(x)??0)}),S},c=[],f=[],C=m(u.childrenOf.get(null)??[]);for(let A=C.length-1;A>=0;A--)f.push({key:C[A],depth:0});for(;f.length>0;){let{key:A,depth:S}=f.pop(),F=m(u.childrenOf.get(A)??[]),x=F.length>0,k=x&&(l||n(A)),M=a.get(A),K=i?.get(A);if(K)c.push({kind:"treePath",key:A,label:K.label,path:K.path,data:r4,tree:{depth:S,hasChildren:x,expanded:k,ancestorOnly:!1}});else{let O=u.sourceIndexOf.get(A)??-1,G={depth:S,hasChildren:x,expanded:k,ancestorOnly:M===void 0};c.push(M?{...M,tree:G}:{kind:"data",key:A,sourceIndex:O,data:r[O],tree:G})}if(k)for(let O=F.length-1;O>=0;O--)f.push({key:F[O],depth:S+1})}return{nodes:c}}var Xl=new WeakMap;function a4(e){if(typeof e.items=="function"||!Array.isArray(e.items))return null;let t=Xl.get(e);if(t)return t;let u=new Map;for(let r of e.items)u.set(r.value,r.label);return Xl.set(e,u),u}function Ut(e,t){if(!e?.lookup)return null;let u=a4(e.lookup);if(!u)return null;let r=u.get(t);return r===void 0?null:r}function jo(e){return e?.lookup?typeof e.lookup.items=="function"?null:e.lookup.items:null}function _t(e){let t=e?.band;return t==null?[]:typeof t=="string"?t===""?[]:[t]:t.filter(u=>typeof u=="string"&&u!=="")}function Ju(e){return e.join("\0")}function o4(e,t){let u=e?.bandShow;if(u===void 0)return!1;let r=_t(e);if(r.length===0)return!1;let n=!1;for(let a=0;a<r.length;a++)if(t.has(Ju(r.slice(0,a+1)))){n=!0;break}return u==="open"?n:!n}function i0(e){let t=0;for(let u of e){let r=_t(u.def).length;r>t&&(t=r)}return t}function l0(e,t){if(t<=0)return[];let u=[];for(let r=0;r<t;r++){let n=[];for(let a of e){let o=_t(a.def),l=r<o.length?o[r]:"",i=l==="",s=n[n.length-1];s!==void 0&&s.spacer===i&&s.label===l&&(i||i4(e,s.columnIds[0],a.state.id,r))?(s.columnIds.push(a.state.id),s.width+=a.state.width):n.push({label:l,columnIds:[a.state.id],width:a.state.width,level:r,spacer:i})}u.push(n)}return u}function i4(e,t,u,r){if(r===0)return!0;let n=e.find(i=>i.state.id===t),a=e.find(i=>i.state.id===u),o=_t(n?.def),l=_t(a?.def);for(let i=0;i<r;i++)if(o[i]!==l[i])return!1;return!0}var l4=/^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}|$)/;function s4(e){return e==null||e===""?null:typeof e=="boolean"?"boolean":typeof e=="number"?Number.isFinite(e)?"number":null:typeof e=="bigint"?"bigint":e instanceof Date||typeof e=="string"&&l4.test(e)?"date":"string"}function d4(e){if(/^[A-Z0-9_]+$/.test(e))return e.replace(/_/g," ");let t=e.replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").trim().split(/\s+/);if(t.length===0)return e;let u=t.map((r,n)=>r.toLowerCase()==="id"?"ID":n===0||/^[A-Z0-9]+$/.test(r)?r:r.toLowerCase());return u[0]=u[0].charAt(0).toUpperCase()+u[0].slice(1),u.join(" ")}function s0(e,t={}){let{sampleSize:u=50,exclude:r,include:n,humanizeHeaders:a=!0,defaults:o}=t;if(!e||e.length===0)return[];let l=new Set(r??[]),i=Math.min(e.length,Math.max(1,u)),s=new Map;for(let h=0;h<i;h++){let m=e[h];if(!(!m||typeof m!="object"))for(let[c,f]of Object.entries(m)){if(l.has(c))continue;s.get(c)==null&&s.set(c,s4(f))}}return(n?n.filter(h=>s.has(h)&&!l.has(h)):[...s.keys()]).map(h=>({...o,field:h,headerName:a?d4(h):h,...s.get(h)?{dataType:s.get(h)}:{}}))}var hu=(e,t)=>`${e}:${t}`;function c4(e){if(typeof e=="number")return e;if(typeof e=="boolean")return e?1:0;if(e instanceof Date)return e.getTime();let t=Number(e);return Number.isNaN(t)?Number.NaN:t}function h4(e,t){return t==="date"&&!(e instanceof Date)&&typeof e!="number"?Date.parse(String(e)):c4(e)}function Yo(e,t,u,r=hu(e,t)){return{key:r,columnId:e,type:t,dataType:u,count:0,numericCount:0,sum:0,min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY,distinct:t==="countDistinct"?new Set:null,first:Number.NaN,firstAt:Number.POSITIVE_INFINITY,last:Number.NaN,lastAt:Number.NEGATIVE_INFINITY}}function m4(e,t){if(e.count+=t.count,e.numericCount+=t.numericCount,e.sum+=t.sum,t.min<e.min&&(e.min=t.min),t.max>e.max&&(e.max=t.max),e.distinct&&t.distinct)for(let u of t.distinct)e.distinct.add(u);t.firstAt<e.firstAt&&(e.first=t.first,e.firstAt=t.firstAt),t.lastAt>e.lastAt&&(e.last=t.last,e.lastAt=t.lastAt)}function On(e,t,u=0){let r=t==null;if(e.type==="count"){r||e.count++;return}if(e.distinct){r||e.distinct.add(String(t));return}if(r||e.dataType==="bigint")return;let n=h4(t,e.dataType);Number.isNaN(n)||(e.numericCount++,e.sum+=n,n<e.min&&(e.min=n),n>e.max&&(e.max=n),u<e.firstAt&&(e.first=n,e.firstAt=u),u>=e.lastAt&&(e.last=n,e.lastAt=u))}function Hn(e){switch(e.type){case"count":return e.count;case"countDistinct":return e.distinct?e.distinct.size:0;case"sum":return e.numericCount>0?e.sum:null;case"avg":return e.numericCount>0?e.sum/e.numericCount:null;case"min":return e.numericCount>0?e.min:null;case"max":return e.numericCount>0?e.max:null;case"first":return e.numericCount>0?e.first:null;case"last":return e.numericCount>0?e.last:null;default:return null}}function Qo(e,t,u,r,n,a){let o={};if(n.length===0)return o;let l=a?.effectiveValue,i=a?.effectiveRow,s=[];for(let h of n){let m=hu(h.columnId,h.type);if(h.type==="custom"){if(!h.calculate){o[m]=null;continue}let c=[];for(let f=t;f<u;f++){let C=e[f];if(!C||!Bt(C))continue;let A=r.getCellValue(C.data,h.columnId);c.push({row:i?i(C.key,C.data):C.data,value:l?l(C.key,h.columnId,A):A})}o[m]=h.calculate(c);continue}s.push(Yo(h.columnId,h.type,r.getDataType(h.columnId),m))}if(s.length>0){let h=s.length===1?s[0]:null;for(let m=t;m<u;m++){let c=e[m];if(!c||!Bt(c))continue;let f=c.data;if(h){let C=r.getCellValue(f,h.columnId);On(h,l?l(c.key,h.columnId,C):C);continue}for(let C of s){let A=r.getCellValue(f,C.columnId);On(C,l?l(c.key,C.columnId,A):A)}}for(let m of s)o[m.key]=Hn(m)}return o}function p4(e,t,u,r){return Qo(e,0,e.length,t,u,r)}function f4(e,t,u){let r=u?.effectiveValue,n=u?.effectiveRow,a=[],o=[],l=[];for(let i of t){if(i.type==="custom"){i.calculate?o.push({def:i,cells:[]}):l.push(hu(i.columnId,i.type));continue}a.push(Yo(i.columnId,i.type,e.getDataType(i.columnId)))}return{add(i,s,h){for(let m=s;m<h;m++){let c=i[m];if(!c||!Bt(c))continue;let f=c.data;for(let C of a){let A=e.getCellValue(f,C.columnId);On(C,r?r(c.key,C.columnId,A):A)}for(let{def:C,cells:A}of o){let S=e.getCellValue(f,C.columnId);A.push({row:n?n(c.key,f):f,value:r?r(c.key,C.columnId,S):S})}}},finish(){let i={};for(let s of l)i[s]=null;for(let s of a)i[s.key]=Hn(s);for(let{def:s,cells:h}of o)i[hu(s.columnId,s.type)]=s.calculate(h);return i}}}var An=(e,t=2)=>String(e).padStart(t,"0");function g4(e){if(e instanceof Date)return Number.isNaN(e.getTime())?null:e;if(typeof e=="number"&&Number.isFinite(e))return new Date(e);if(typeof e=="string"&&e.trim()!==""){let t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e.trim());if(t)return new Date(Number(t[1]),Number(t[2])-1,Number(t[3]));let u=Date.parse(e);return Number.isNaN(u)?null:new Date(u)}return null}function C4(e){let t=new Date(e.getFullYear(),e.getMonth(),e.getDate()),u=(t.getDay()+6)%7;t.setDate(t.getDate()-u+3);let r=t.getFullYear(),n=new Date(r,0,4),a=(n.getDay()+6)%7;n.setDate(n.getDate()-a+3);let o=1+Math.round((t.getTime()-n.getTime())/(7*864e5));return{year:r,week:o}}function Zl(e,t){let u=g4(e);if(!u)return null;let r=u.getFullYear(),n=u.getMonth();switch(t){case"day":return{key:`${r}-${An(n+1)}-${An(u.getDate())}`,start:new Date(r,n,u.getDate())};case"week":{let{year:a,week:o}=C4(u),l=(u.getDay()+6)%7;return{key:`${a}-W${An(o)}`,start:new Date(r,n,u.getDate()-l)}}case"month":return{key:`${r}-${An(n+1)}`,start:new Date(r,n,1)};case"quarter":{let a=Math.floor(n/3);return{key:`${r}-Q${a+1}`,start:new Date(r,a*3,1)}}case"year":return{key:String(r),start:new Date(r,0,1)};default:return null}}function y4(e,t,u){let{start:r,key:n}=e;try{switch(t){case"day":return new Intl.DateTimeFormat(u,{dateStyle:"medium"}).format(r);case"month":return new Intl.DateTimeFormat(u,{month:"long",year:"numeric"}).format(r);case"year":return new Intl.DateTimeFormat(u,{year:"numeric"}).format(r);case"quarter":return`Q${Math.floor(r.getMonth()/3)+1} ${new Intl.DateTimeFormat(u,{year:"numeric"}).format(r)}`;case"week":return`${n} \xB7 ${new Intl.DateTimeFormat(u,{day:"numeric",month:"short"}).format(r)}`}}catch{}return n}var Jl=(e,t)=>`${e}::${t}`;function es(e,t,u){let r=u.columnIds,n=u.summaries,a=0,o=r.map(h=>{let m=t.getDef(h);return m?.groupInterval&&t.getDataType(h)==="date"?m.groupInterval:void 0}),l=(h,m)=>{let c=t.getCellValue(e[h].data,r[m]),f=o[m];return f?Zl(c,f)?.key??"":c==null?"":String(c)},i=(h,m,c,f)=>{let C=r[c],A=o[c],S=[],F=h;for(;F<m;){let x=t.getCellValue(e[F].data,C),k=A?Zl(x,A):null,M=k?k.start:A?null:x,K=l(F,c),O=F+1;for(;O<m&&l(O,c)===K;)O++;let G=f?`${f}|${Jl(C,K)}`:Jl(C,K),W={columnId:C,value:M,label:K,key:G,level:c,from:F,to:O,count:O-F,children:null};k&&A&&(W.display=y4(k,A,u.locale??"en")),n&&n.length>0&&(W.aggregates=Qo(e,F,O,t,n)),a++,c+1<r.length&&(W.children=i(F,O,c+1,G)),S.push(W),F=O}return S},s=r.length===0?[]:i(0,e.length,0,"");return{levels:r,roots:s,totalGroupCount:a,nodes:e}}function w4(e,t){let{collapsedKeys:u,collapsedByDefault:r=!1}=t,n=[],a=0,o=l=>{for(let i of l){let s=r?!u.has(i.key):u.has(i.key),h={kind:"group",key:i.key,columnId:i.columnId,value:i.value,label:i.label,...i.display!==void 0?{display:i.display}:{},count:i.count,level:i.level,expanded:!s};if(i.aggregates&&(h.aggregates=i.aggregates),n.push(h),a++,!s)if(i.children)o(i.children);else for(let m=i.from;m<i.to;m++)n.push(e.nodes[m])}};return o(e.roots),{nodes:n,groupCount:a}}function E4(e){let t=[],u=r=>{for(let n of r)t.push(n.key),n.children&&u(n.children)};return u(e.roots),t}function xn(e,t){let u=t==null?[]:Array.isArray(t)?[...t]:[t];if(u.length===0)return[...e];let r=u.map(a=>({columnId:a,direction:e.find(o=>o.columnId===a)?.direction??"asc"})),n=e.filter(a=>!u.includes(a.columnId));return[...r,...n]}function b4(e,t){let u=new Map,r=new Map,n=new Set,a,o,l=!1;for(let s of e){let h=new Set;if(s.remove)for(let m of s.remove){let c=Ln(m)?m:t(m);if(h.add(c),r.delete(c),u.has(c)){u.delete(c);continue}n.add(c)}if(s.update)for(let m of s.update){let c=t(m);if(!h.has(c)){if(u.has(c)){u.set(c,m);continue}n.has(c)||r.set(c,m)}}if(s.add){for(let m of s.add){let c=t(m);u.delete(c),u.set(c,m),r.delete(c)}l||(l=!0,a=s.addPosition,o=s.addBeforeKey)}}let i={};return u.size>0&&(i.add=[...u.values()],a!==void 0&&(i.addPosition=a),o!==void 0&&(i.addBeforeKey=o)),r.size>0&&(i.update=[...r.values()]),n.size>0&&(i.remove=[...n]),i}function A4(e){return!e.add?.length&&!e.update?.length&&!e.remove?.length}var x4=["=","<>",">",">=","<","<=","contains","notcontains","startswith","endswith","isnull","isnotnull","in","notin","between","period"],d0=new Set(x4);function Ir(e){return d0.has(e)}function Do(e){return e?Je(e)?e.nodes.some(Do):!d0.has(e.operator):!1}function Je(e){return e.nodes!==void 0}function uo(...e){let t=e.filter(u=>u!=null);return t.length===0?null:t.length===1?t[0]:{logic:"and",nodes:t}}var rr="row",Pu="set",cu="__default";function So(e){if(e===null)return e;if(Je(e)){let u=!1,r=e.nodes.map(n=>{let a=So(n);return a!==n&&(u=!0),a});return u?{...e,nodes:r}:e}let t=e.value;return typeof t=="bigint"?{...e,value:String(t)}:Array.isArray(t)&&t.some(u=>typeof u=="bigint")?{...e,value:t.map(u=>typeof u=="bigint"?String(u):u)}:e}var v4=/[\u0130\u0131]/,F4=/[\u0130\u0131]/g;function Le(e){return v4.test(e)?e.replace(F4,"i").toLowerCase():e.toLowerCase()}var c0="yyyy-MM-dd",D4=[{token:"yyyy",kind:"year"},{token:"yy",kind:"year"},{token:"MM",kind:"month"},{token:"dd",kind:"day"}];function jn(e){let t=[],u="",r=0;for(;r<e.length;){let n=D4.find(a=>e.startsWith(a.token,r));if(!n){u+=e[r],r+=1;continue}u&&(t.push({kind:"literal",text:u}),u=""),t.push({kind:n.kind,length:n.token.length}),r+=n.token.length}return u&&t.push({kind:"literal",text:u}),t}function Yn(e){return jn(e).reduce((t,u)=>u.kind==="literal"?t:t+u.length,0)}function Qn(e,t){return e.replace(/\D+/g,"").slice(0,Yn(t))}function Lr(e,t){let u=jn(t),r="",n=0,a=0;for(let o of u){if(o.kind==="literal"){n>0&&n>=a&&(r+=o.text);continue}a+=o.length;let l=e.slice(n,n+o.length);if(l.length===0||(r+=l,n+=l.length,l.length<o.length))break}return r}function Xo(e,t){return new Date(e,t,0).getDate()}function S4(e,t){return t>2?e:e<=68?2e3+e:1900+e}function h0(e,t){let u=Qn(e,t);if(u.length!==Yn(t))return null;let r=jn(t),n=0,a=1,o=1,l=1970,i=!1;for(let s of r){if(s.kind==="literal")continue;let h=Number(u.slice(n,n+s.length));n+=s.length,s.kind==="day"?a=h:s.kind==="month"?o=h:(l=S4(h,s.length),i=!0)}return!i||l<1||o<1||o>12||a<1||a>Xo(l,o)?null:new Date(l,o-1,a)}function Xn(e){if(e==null||e==="")return null;if(e instanceof Date)return Number.isNaN(e.getTime())?null:e;if(typeof e=="number"){let n=new Date(e);return Number.isNaN(n.getTime())?null:n}let t=String(e),u=/^(\d{4})-(\d{2})-(\d{2})$/.exec(t);if(u)return new Date(Number(u[1]),Number(u[2])-1,Number(u[3]));let r=new Date(t);return Number.isNaN(r.getTime())?null:r}var vn=new Map;function k4(e){let t=vn.get(e);return t||(vn.size>=64&&vn.clear(),t=jn(e),vn.set(e,t)),t}function Tt(e,t){let u=Xn(e);if(!u)return"";let r=(n,a)=>String(n).padStart(a,"0");return k4(t).map(n=>{if(n.kind==="literal")return n.text;if(n.kind==="day")return r(u.getDate(),n.length);if(n.kind==="month")return r(u.getMonth()+1,n.length);let a=u.getFullYear();return n.length>2?r(a,n.length):r(a%100,2)}).join("")}function Zn(e){return`${String(e.getFullYear()).padStart(4,"0")}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`}function du(e,t,u){let r=Ut(e,t);if(r!==null)return r;if(e?.valueFormatter&&u!==void 0){let n=e.valueFormatter(t,u);return n==null?"":String(n)}return e?.dataType==="date"&&e.dateFormat&&t!=null?Tt(t,e.dateFormat):t==null?"":String(t)}function Zo(e){return e?typeof e.valueFormatter=="function"||!!e.dateFormat&&e.dataType==="date":!1}function m0(e,t,u){if(!e||Ut(e,t)!==null)return null;let r;try{if(typeof e.valueFormatter=="function")r=e.valueFormatter(t,u);else if(e.dateFormat&&e.dataType==="date"&&t!=null)r=Tt(t,e.dateFormat);else return null}catch{return null}return typeof r=="number"?String(r):typeof r=="string"&&r!==""?r:null}var ts=-1,ko="\0display:";function B4(e){return ko+e}function Jo(e){return e.startsWith(ko)?e.slice(ko.length):null}function p0(e,t,u){return m0(e.getDef(t),e.getCellValue(u,t),u)}function Vn(e){return e==null||typeof e=="number"&&Number.isNaN(e)}function f0(e){if(typeof e=="number")return e;if(typeof e=="boolean")return e?1:0;if(e instanceof Date)return e.getTime();let t=Number(e);return Number.isNaN(t)?Number.NaN:t}function g0(e){if(e instanceof Date)return e.getTime();if(typeof e=="number")return e;let t=Date.parse(String(e));return Number.isNaN(t)?Number.NaN:t}function C0(e,t,u,r=!1){let n=e.length,a=0,o=Jo(u),l=o===null?t.getDataType(u):"string",i=o!==null?c=>p0(t,o,c):r?c=>t.getSortValue(c,u):c=>t.getCellValue(c,u);if(l==="number"||l==="boolean"||l==="date"){let c=new Float64Array(n),f=l==="date"?g0:f0,C=[],A=new Map,S=new Int32Array(n),F=!0;return{total:n,get done(){return a},step(x){let k=Math.min(n,a+x);for(;a<k;a++){let M=i(e[a]);if(Vn(M)){c[a]=Number.NaN,S[a]=ts;continue}c[a]=f(M),typeof M!="number"&&(F=!1);let K=String(M),O=A.get(K);O===void 0&&(O=C.length,C.push(K),A.set(K,O)),S[a]=O}return a<n},finish(){return F?{kind:"numeric",values:c}:{kind:"numeric",values:c,searchCodes:S,searchDictionary:C}}}}let s=new Int32Array(n),h=[],m=new Map;return{total:n,get done(){return a},step(c){let f=Math.min(n,a+c);for(;a<f;a++){let C=i(e[a]);if(Vn(C)){s[a]=ts;continue}let A=String(C),S=m.get(A);S===void 0&&(S=h.length,h.push(A),m.set(A,S)),s[a]=S}return a<n},finish(){return l==="bigint"?{kind:"text",codes:s,dictionary:h,integer:!0}:{kind:"text",codes:s,dictionary:h}}}}function T4(e,t,u,r=!1){let n=C0(e,t,u,r);return n.step(n.total),n.finish()}var us=new WeakMap;function R4(e){let t=us.get(e);if(t!==void 0)return t;let u=N4(e);return us.set(e,u),u}function N4(e){let t=e.resolvedOptions();if(t.sensitivity!=="base"||t.numeric!==!0||t.ignorePunctuation||t.usage!=="sort"||t.collation!=="default")return!1;let u=[];for(let r=32;r<=126;r++)u.push(String.fromCharCode(r));u.sort(e.compare);for(let r=1;r<u.length;r++)if(e.compare(u[r-1],u[r])===0&&u[r-1].toLowerCase()!==u[r].toLowerCase())return!1;for(let r of u)if(e.compare(r,"")===0)return!1;return!(e.compare("01","1")!==0||e.compare("0","00")!==0||e.compare("a09z","a9z")!==0||e.compare("9","10")>=0)}function rs(e){for(let t=0;t<e.length;t++){let u=e.charCodeAt(t);if(u<32||u>126)return!1}return!0}function M4(e,t){let u=0,r=0,n=e.length,a=t.length;for(;u<n&&r<a;){let o=e.charCodeAt(u),l=t.charCodeAt(r),i=o>=48&&o<=57,s=l>=48&&l<=57;if(i!==s)return!0;if(i){for(;u<n&&e.charCodeAt(u)===48;)u++;for(;r<a&&t.charCodeAt(r)===48;)r++;let h=u,m=r;for(;u<n;){let f=e.charCodeAt(u);if(f<48||f>57)break;u++}for(;r<a;){let f=t.charCodeAt(r);if(f<48||f>57)break;r++}let c=u-h;if(c!==r-m)return!0;for(let f=0;f<c;f++)if(e.charCodeAt(h+f)!==t.charCodeAt(m+f))return!0}else{if(o>=65&&o<=90&&(o+=32),l>=65&&l<=90&&(l+=32),o!==l)return!0;u++,r++}}return u!==n||r!==a}function I4(e,t){let u=e.length,r=new Array(u);for(let s=0;s<u;s++)r[s]=s;r.sort((s,h)=>t.compare(e[s],e[h]));let n=new Int32Array(u);if(u===0)return n;let a=R4(t)?new Uint8Array(u):null,o=r[0],l=a?rs(e[o])?1:2:0;a&&(a[o]=l);let i=0;n[o]=0;for(let s=1;s<u;s++){let h=r[s],m=e[o],c=e[h],f=0;a&&(f=a[h],f===0&&(f=rs(c)?1:2,a[h]=f)),(l===1&&f===1&&M4(m,c)||t.compare(m,c)!==0)&&i++,n[h]=i,o=h,l=f}return n}var Pr=["today","yesterday","tomorrow","thisWeek","lastWeek","nextWeek","thisMonth","lastMonth","nextMonth","thisQuarter","lastQuarter","nextQuarter","thisYear","lastYear","nextYear","yearToDate","lastDays","nextDays"],ce=(e,t,u)=>new Date(e,t,u).getTime();function L4(e,t=new Date){if(!e||typeof e!="object")return null;let u=t.getFullYear(),r=t.getMonth(),n=t.getDate(),a=(t.getDay()+6)%7,o=Math.floor(r/3)*3,l,i;switch(e.period){case"today":[l,i]=[ce(u,r,n),ce(u,r,n+1)];break;case"yesterday":[l,i]=[ce(u,r,n-1),ce(u,r,n)];break;case"tomorrow":[l,i]=[ce(u,r,n+1),ce(u,r,n+2)];break;case"thisWeek":[l,i]=[ce(u,r,n-a),ce(u,r,n-a+7)];break;case"lastWeek":[l,i]=[ce(u,r,n-a-7),ce(u,r,n-a)];break;case"nextWeek":[l,i]=[ce(u,r,n-a+7),ce(u,r,n-a+14)];break;case"thisMonth":[l,i]=[ce(u,r,1),ce(u,r+1,1)];break;case"lastMonth":[l,i]=[ce(u,r-1,1),ce(u,r,1)];break;case"nextMonth":[l,i]=[ce(u,r+1,1),ce(u,r+2,1)];break;case"thisQuarter":[l,i]=[ce(u,o,1),ce(u,o+3,1)];break;case"lastQuarter":[l,i]=[ce(u,o-3,1),ce(u,o,1)];break;case"nextQuarter":[l,i]=[ce(u,o+3,1),ce(u,o+6,1)];break;case"thisYear":[l,i]=[ce(u,0,1),ce(u+1,0,1)];break;case"lastYear":[l,i]=[ce(u-1,0,1),ce(u,0,1)];break;case"nextYear":[l,i]=[ce(u+1,0,1),ce(u+2,0,1)];break;case"yearToDate":[l,i]=[ce(u,0,1),ce(u,r,n+1)];break;case"lastDays":case"nextDays":{let s=e.days;if(typeof s!="number"||!Number.isInteger(s)||s<1)return null;[l,i]=e.period==="lastDays"?[ce(u,r,n-s+1),ce(u,r,n+1)]:[ce(u,r,n),ce(u,r,n+s)];break}default:return null}return[l,i-1]}function zn(e,t=new Date){if(!e)return null;if(Je(e)){let r=!1,n=e.nodes.map(a=>{let o=zn(a,t);return o!==a&&(r=!0),o});return r?{...e,nodes:n}:e}if(e.operator!=="period")return e;let u=L4(e.value,t);return{columnId:e.columnId,operator:"between",value:u??[]}}var Bo=BigInt(Number.MAX_SAFE_INTEGER),ns=-Bo,y0=/^[+-]?\d+$/;function P4(e){if(typeof e=="bigint")return e>Bo||e<ns?e:null;if(typeof e!="string"||e.length<16)return null;let t=e.trim();if(!y0.test(t))return null;let u=BigInt(t);return u>Bo||u<ns?u:null}function G4(e,t){return typeof e=="number"&&typeof t=="number"?e-t:typeof e=="number"&&Number.isNaN(e)||typeof t=="number"&&Number.isNaN(t)?Number.NaN:e<t?-1:e>t?1:0}function O4(e){if(typeof e=="bigint")return e;if(typeof e=="number")return Number.isSafeInteger(e)?BigInt(e):null;if(typeof e!="string")return null;let t=e.trim();return y0.test(t)?BigInt(t):null}function H4(e){let t=e.map(a=>O4(a)),u=e.map((a,o)=>o);u.sort((a,o)=>{let l=t[a],i=t[o];return l!==null&&i!==null?l<i?-1:l>i?1:0:l!==null?-1:i!==null?1:e[a]<e[o]?-1:e[a]>e[o]?1:0});let r=new Int32Array(e.length),n=0;return u.forEach((a,o)=>{if(o>0){let l=u[o-1];(t[a]!==null?t[a]===t[l]:t[l]===null&&e[a]===e[l])||(n=o)}r[a]=n}),r}function Jn(e){let t=e?.filterOperators;return!t||t.length===0?[]:t.filter(u=>u!=null&&typeof u.id=="string"&&u.id!==""&&typeof u.test=="function"&&!Ir(u.id))}function mu(e,t){return Ir(t)?null:Jn(e).find(u=>u.id===t)??null}function V4(e){return(e?.filterOperators??[]).filter(t=>t!=null&&typeof t.id=="string"&&Ir(t.id)).map(t=>t.id)}function z4(e,t){let u=[],r=n=>{if(Je(n)){n.nodes.forEach(r);return}Ir(n.operator)||mu(t.getDef(n.columnId),n.operator)||u.push(`${n.columnId}: ${n.operator}`)};return e&&r(e),u}function K4(e,t){let u=e.operandType??"text";if(u==="none")return;let r=t.trim();if(u==="number"){let n=Number(r);return r===""||Number.isNaN(n)?r:n}return r}function Oe(e){return e==null}function zt(e){return e==null?"":String(e)}function Wt(e){let t=P4(e);if(t!==null)return t;if(e instanceof Date)return e.getTime();if(typeof e=="number")return e;if(typeof e=="boolean")return e?1:0;let u=Number(e);return Number.isNaN(u)?String(e).toLowerCase():u}function Ru(e){return String(e).toLowerCase()}function Uu(e,t){let u=Wt(e),r=Wt(t);if(typeof u!="string"&&typeof r!="string")return G4(u,r);if(typeof u=="number"&&typeof r=="string"){let o=Date.parse(r);if(!Number.isNaN(o))return u-o}else if(typeof u=="string"&&typeof r=="number"){let o=Date.parse(u);if(!Number.isNaN(o))return o-r}let n=String(u),a=String(r);return n<a?-1:n>a?1:0}var as=new WeakMap;function os(e){let t=as.get(e);if(!t){t=new Set;let u=Array.isArray(e.value)?e.value:[];for(let r of u){if(Oe(r))continue;let n=Wt(r);typeof n=="number"&&Number.isNaN(n)||t.add(n)}as.set(e,t)}return t}var is=new WeakMap;function ls(e){let t=is.get(e);if(!t){t=new Set;for(let u of Array.isArray(e.value)?e.value:[])Oe(u)||t.add(Ru(u));is.set(e,t)}return t}function $4(e,t,u,r){if(!r)return!1;let n=mu(r.getDef(t.columnId),t.operator);if(!n)return!1;try{return n.test(e,t.value,u)===!0}catch{return!1}}function w0(e,t,u,r,n=r!==void 0&&r.getDataType(t.columnId)==="string"){switch(t.operator){case"isnull":return Oe(e);case"isnotnull":return!Oe(e);case"=":return Oe(e)||Oe(t.value)?Oe(e)&&Oe(t.value):n?Ru(e)===Ru(t.value):Wt(e)===Wt(t.value);case"<>":return Oe(e)||Oe(t.value)?!(Oe(e)&&Oe(t.value)):n?Ru(e)!==Ru(t.value):Wt(e)!==Wt(t.value);case">":return!Oe(e)&&Uu(e,t.value)>0;case">=":return!Oe(e)&&Uu(e,t.value)>=0;case"<":return!Oe(e)&&Uu(e,t.value)<0;case"<=":return!Oe(e)&&Uu(e,t.value)<=0;case"contains":return Le(zt(e)).includes(Le(zt(t.value)));case"notcontains":return!Le(zt(e)).includes(Le(zt(t.value)));case"startswith":return Le(zt(e)).startsWith(Le(zt(t.value)));case"endswith":return Le(zt(e)).endsWith(Le(zt(t.value)));case"in":{if(Oe(e))return!1;if(n)return ls(t).has(Ru(e));let a=Wt(e);return typeof a=="number"&&Number.isNaN(a)?!1:os(t).has(a)}case"notin":{if(Oe(e))return!0;if(n)return!ls(t).has(Ru(e));let a=Wt(e);return typeof a=="number"&&Number.isNaN(a)?!0:!os(t).has(a)}case"between":{if(!Array.isArray(t.value)||t.value.length<2||Oe(e))return!1;let[a,o]=t.value;return Uu(e,a)>=0&&Uu(e,o)<=0}case"period":return!0;default:return $4(e,t,u,r)}}function To(e,t,u){if(Je(t))return t.nodes.length===0?!0:t.logic==="or"?t.nodes.some(n=>To(e,n,u)):t.nodes.every(n=>To(e,n,u));let r=u.getCellValue(e,t.columnId);return w0(r,t,e,u)}function Mr(e){return Le((e??"").trim())}function Ro(e,t,u){if(u==="")return null;let r=null;for(let n of t){let a=e.getDef(n)?.lookup?.items;if(!Array.isArray(a))continue;let o=null;for(let l of a)Le(String(l.label)).includes(u)&&(o??=new Set).add(String(l.value));o&&(r??=new Map).set(n,o)}return r}function No(e){let t=e.getOrder().filter(r=>e.getState(r)?.visible),u=t.filter(r=>Zo(e.getDef(r))).map(B4);return u.length===0?t:[...t,...u]}function ss(e){if(!e||e.size===0)return;let t={};for(let[u,r]of e)t[u]=[...r];return t}function E0(e,t,u,r,n,a){r=zn(r);let o=Mr(n),l=!!r,i=o.length>0,s=typeof a=="function";if(!l&&!i&&!s)return e.slice();let h=i?u.getOrder().filter(x=>u.getState(x)?.visible):[],m=i?Ro(u,h,o):null,c=m!==null,f=c?h.map(x=>m.get(x)??null):[],C=i?h.map(x=>{let k=u.getDef(x);return Zo(k)?k:void 0}):[],A=C.some(x=>x!==void 0),S=new Uint32Array(e.length),F=0;for(let x=0;x<e.length;x++){let k=e[x],M=t[k];if(!(l&&!To(M,r,u))&&!(s&&!a(M))){if(i){let K=!1;for(let O=0;O<h.length;O++){let G=u.getCellValue(M,h[O]);if(!Oe(G)){let W=zt(G);if(Le(W).includes(o)){K=!0;break}if(c){let Y=f[O];if(Y!==null&&Y.has(W)){K=!0;break}}}if(A){let W=C[O];if(W!==void 0){let Y=m0(W,G,M);if(Y!==null&&Le(Y).includes(o)){K=!0;break}}}}if(!K)continue}S[F++]=k}}return F===S.length?S:S.slice(0,F)}var W4=w0;var _4=class{base;overrides=new Map;idx=[];size=[];top=[];cum=[];dirty=!1;constructor(e=28){this.base=Math.max(1,e)}isUniform(){return this.overrides.size===0}getBase(){return this.base}setBase(e){let t=Math.max(1,e);return t===this.base?!1:(this.base=t,this.dirty=!0,!0)}setOverrides(e){let t=new Map;if(e)for(let[u,r]of e){if(!Number.isInteger(u)||u<0)continue;let n=Math.max(0,r);n!==this.base&&t.set(u,n)}if(t.size===this.overrides.size){let u=!0;for(let[r,n]of t)if(this.overrides.get(r)!==n){u=!1;break}if(u)return!1}return this.overrides=t,this.dirty=!0,!0}clearOverrides(){return this.setOverrides(null)}getOverrides(){return this.overrides}heightOf(e){return this.overrides.get(e)??this.base}offsetOf(e){let t=Math.max(0,e);if(this.overrides.size===0)return t*this.base;this.rebuild();let u=ds(this.idx,t);return t*this.base+(u===0?0:this.cum[u-1])}totalHeight(e){let t=Math.max(0,e);if(this.overrides.size===0)return t*this.base;this.rebuild();let u=ds(this.idx,t);return t*this.base+(u===0?0:this.cum[u-1])}indexAt(e){let t=Math.max(0,e);if(this.overrides.size===0)return Math.floor(t/this.base);this.rebuild();let u=U4(this.top,t);if(u<0)return Math.floor(t/this.base);let r=this.top[u]+this.size[u];return t<r?this.idx[u]:this.idx[u]+1+Math.floor((t-r)/this.base)}rebuild(){if(!this.dirty)return;this.dirty=!1;let e=this.overrides.size;if(this.idx=new Array(e),this.size=new Array(e),this.top=new Array(e),this.cum=new Array(e),e===0)return;let t=0;for(let r of this.overrides.keys())this.idx[t++]=r;this.idx.sort((r,n)=>r-n);let u=0;for(let r=0;r<e;r++){let n=this.idx[r],a=this.overrides.get(n);this.size[r]=a,this.top[r]=n*this.base+u,u+=a-this.base,this.cum[r]=u}}};function ds(e,t){let u=0,r=e.length;for(;u<r;){let n=u+r>>>1;e[n]<t?u=n+1:r=n}return u}function U4(e,t){let u=0,r=e.length-1,n=-1;for(;u<=r;){let a=u+r>>>1;e[a]<=t?(n=a,u=a+1):r=a-1}return n}var q4=5,j4=35e5,Y4=16e6,Q4=4,X4=3;function cs(e){let t=[],u=[],r=[];for(let f of e)f.state.pinned==="left"?t.push(f):f.state.pinned==="right"?r.push(f):u.push(f);let n=[],a=0;for(let f of t)n.push(a),a+=f.state.width;let o=[0],l=0;for(let f of u)l+=f.state.width,o.push(l);let i=new Array(u.length).fill(null),s=[],h=a;for(let f=0;f<u.length;f++)u[f].state.pinned==="sticky"&&(i[f]=h,h+=u[f].state.width,s.push(f));let m=new Array(r.length),c=0;for(let f=r.length-1;f>=0;f--)m[f]=c,c+=r[f].state.width;return{left:t,center:u,right:r,leftWidth:a,centerWidth:l,rightWidth:c,totalWidth:a+l+c,centerOffsets:o,leftOffsets:n,rightOffsets:m,centerStickyOffsets:i,stickyIndices:s}}var Z4={left:[],center:[],right:[],leftWidth:0,centerWidth:0,rightWidth:0,totalWidth:0,centerOffsets:[0],leftOffsets:[],rightOffsets:[],centerStickyOffsets:[],stickyIndices:[]};function hs(e,t,u){let r=0,n=u-1,a=0;for(;r<=n;){let o=r+n>>1;e[o]<=t?(a=o,r=o+1):n=o-1}return a}function ro(e,t,u){return e<t?t:e>u?u:e}var b0=class{rowCount=0;heights;overscanY;overscanX;viewportWidth=0;viewportHeight=0;scrollTop=0;scrollLeft=0;maxScrollOffset=j4;leadWidth=0;headerOffset=0;footerOffset=0;maxCanvasHeight=Y4;layout=Z4;window;constructor(e={}){this.heights=new _4(e.rowHeight??28),this.overscanY=Math.max(0,e.overscanY??q4),this.overscanX=Math.max(0,e.overscanX??X4),this.window=this.compute()}setRowCount(e){let t=Math.max(0,e|0);return t===this.rowCount?!1:(this.rowCount=t,this.commit())}setRowHeight(e){return this.heights.setBase(e)?this.commit():!1}setRowHeights(e){return this.heights.setOverrides(e)?this.commit():!1}getRowHeightAt(e){return this.heights.heightOf(e)}getRowOffset(e){return this.heights.offsetOf(e)}getViewTop(){return this.virtualTop()}indexAtOffset(e){return this.rowCount===0?-1:Math.min(this.rowCount-1,Math.max(0,this.heights.indexAt(e)))}hasUniformRows(){return this.heights.isUniform()}setMaxScrollOffset(e){if(!Number.isFinite(e)||e<=0)return!1;let t=Math.floor(e);return t===this.maxScrollOffset?!1:(this.maxScrollOffset=t,this.commit())}setLeadWidth(e){return this.leadWidth=Math.max(0,e),!1}setChromeOffsets(e,t){let u=Number.isFinite(e)&&e>0?Math.round(e):0,r=Number.isFinite(t)&&t>0?Math.round(t):0;return this.headerOffset=u,this.footerOffset=r,!1}setMaxCanvasHeight(e){if(!Number.isFinite(e)||e<=0)return!1;let t=Math.floor(e);return t===this.maxCanvasHeight?!1:(this.maxCanvasHeight=t,this.commit())}setViewportSize(e,t){let u=Math.max(0,e),r=Math.max(0,t);return u===this.viewportWidth&&r===this.viewportHeight?!1:(this.viewportWidth=u,this.viewportHeight=r,this.commit())}setScroll(e,t){let u=Math.max(0,e),r=Math.max(0,t);return u===this.scrollTop&&r===this.scrollLeft?!1:(this.scrollTop=u,this.scrollLeft=r,this.commit())}setColumnLayout(e){return this.layout=e,this.commit()}getWindow(){return this.window}getColumnLayout(){return this.layout}getRowHeight(){return this.heights.getBase()}getScroll(){return{scrollTop:this.scrollTop,scrollLeft:this.scrollLeft}}getVisibleCenterColumns(){return this.layout.center.slice(this.window.columns.start,this.window.columns.end)}ensureVisible(e,t,u=0){let r={};if(e>=0&&e<this.rowCount){let s=this.heights.offsetOf(e),h=s+this.heights.heightOf(e),m=this.virtualTop();s-u<m?r.scrollTop=this.physicalTop(Math.max(0,s-u),Math.floor):h>m+this.viewportHeight&&(r.scrollTop=this.physicalTop(h-this.viewportHeight,Math.ceil)+this.headerOffset+this.footerOffset)}let{center:n,centerOffsets:a,leftWidth:o,rightWidth:l,stickyIndices:i}=this.layout;if(t!=null&&t>=0&&t<n.length){let s=Math.max(0,this.viewportWidth-this.leadWidth-o-l),h=0;for(let f of i)f<t&&(h+=n[f].state.width);let m=a[t],c=a[t+1];i.includes(t)&&m<this.scrollLeft||(m<this.scrollLeft+h?r.scrollLeft=Math.max(0,m-h):c>this.scrollLeft+s&&(r.scrollLeft=c-s))}return r.scrollTop===void 0&&r.scrollLeft===void 0?null:r}commit(){let e=this.compute(),t=this.window,u=e.rows.start!==t.rows.start||e.rows.end!==t.rows.end||e.rows.offsetY!==t.rows.offsetY||e.rows.totalHeight!==t.rows.totalHeight||e.rows.contentHeight!==t.rows.contentHeight||e.columns.start!==t.columns.start||e.columns.end!==t.columns.end||e.columns.offsetX!==t.columns.offsetX;return u&&(this.window=e),u}compute(){return{rows:this.computeRowWindow(),columns:this.computeColumnWindow()}}scrollGeometry(){let e=this.heights.totalHeight(this.rowCount),t=Math.min(e,this.maxCanvasHeight,this.maxScrollOffset+this.viewportHeight);return{canvas:t,physicalRange:t-this.viewportHeight,virtualRange:e-this.viewportHeight}}virtualTop(){let{physicalRange:e,virtualRange:t}=this.scrollGeometry();return e<=0||t<=e?this.scrollTop:this.scrollTop>=e-Q4?t+this.footerOffset:this.scrollTop*t/e}physicalTop(e,t=Math.round){let{physicalRange:u,virtualRange:r}=this.scrollGeometry();return u<=0||r<=u?e:ro(t(e*u/r),0,u)}computeRowWindow(){let e=this.heights.totalHeight(this.rowCount),{canvas:t}=this.scrollGeometry(),u=t<e;if(this.rowCount===0||this.viewportHeight===0)return{start:0,end:0,offsetY:0,totalHeight:t,contentHeight:e,compressed:u};let r=this.virtualTop(),n=this.rowCount-1,a=ro(this.heights.indexAt(r),0,n),o=ro(this.heights.indexAt(r+this.viewportHeight-1),0,n),l=Math.max(0,a-this.overscanY),i=Math.min(this.rowCount,o+1+this.overscanY),s=this.heights.offsetOf(l)-(r-this.scrollTop);if(u){let h=s+this.heights.offsetOf(i)-this.heights.offsetOf(l);h>t&&(s-=h-t)}return{start:l,end:i,offsetY:s,totalHeight:t,contentHeight:e,compressed:u}}computeColumnWindow(){let{center:e,centerOffsets:t,leftWidth:u,rightWidth:r}=this.layout,n=e.length;if(n===0||this.viewportWidth===0)return{start:0,end:n===0?0:n,offsetX:0};let a=Math.max(0,this.viewportWidth-u-r);if(a===0)return{start:0,end:0,offsetX:0};let o=this.scrollLeft,l=this.scrollLeft+a,i=hs(t,o,n),s=hs(t,l-1,n),h=Math.max(0,i-this.overscanX),m=Math.min(n,s+1+this.overscanX);return{start:h,end:m,offsetX:t[h]}}},J4=200,eh=1e3,th=60,ft="\0blank",ea="\0nonblank";function Rt(e){return e.value===null||e.value===void 0?ft:e.label}function Gr(e,t){let u=!1,r=!1;for(let n of e){let a=t.has(Rt(n));if(n.value===null||n.value===void 0){if(u=!0,a)return!1}else if(r=!0,!a)return!1}return u&&r}function ei(e,t){if(e.value===null||e.value===void 0)return t.filterBlank;if(e.label.trim()!=="")return e.label;if(e.label==="")return t.filterEmptyText;let u=Array.from(e.label).length;return u===1?t.filterSpace:t.filterSpaces.replace("{n}",String(u))}function A0(e){return e==null?ft:e instanceof Date?String(e.getTime()):typeof e=="object"?JSON.stringify(e):String(e)}function uh(e){let t={mode:"all",marked:new Map};if(!e)return t;let u=[],r=null;if(Je(e)){r=e.logic;for(let l of e.nodes){if(Je(l))return t;u.push(l)}}else u.push(e);let n=new Map,a=l=>{for(let i of Array.isArray(l)?l:[])n.set(A0(i),i)},o=(...l)=>u.every(i=>!Je(i)&&l.includes(i.operator));if(u.length===0)return t;if((r===null||r==="or")&&o("in","isnull")){for(let l of u)Je(l)||(l.operator==="in"?a(l.value):n.set(ft,null));return{mode:"some",marked:n}}if((r===null||r==="and")&&o("notin","isnotnull")){for(let l of u)Je(l)||(l.operator==="notin"?a(l.value):n.set(ft,null));return{mode:"all",marked:n}}return t}var rh=class{o;chunkSize;store;engine;listeners=new Set;search="";state;inFlight=new Set;generation=0;disposed=!1;failed=!1;started=!1;paged=!1;wanted=null;timer=null;mode;marked;constructor(e){this.o=e,this.chunkSize=Math.max(1,e.chunkSize??J4),this.store=e.store??new Map,this.engine=new b0({rowHeight:e.rowHeight,overscanY:8}),this.state=this.stateFor("");let t=uh(e.initialFilter);this.mode=t.mode,this.marked=t.marked}async start(){if(this.started)return{kind:"paged"};if(this.started=!0,this.state.totalCount!==null)return this.paged=!0,this.syncEngine(),{kind:"paged"};try{let e=await this.o.load(this.request(0,""));return this.disposed?{kind:"paged"}:Array.isArray(e)?{kind:"legacy",values:e}:(this.paged=!0,this.take("",0,e),{kind:"paged"})}catch(e){return this.o.onError?.(e),this.failed=!0,this.paged=!0,this.state.totalCount=0,this.syncEngine(),{kind:"paged"}}}context(){let e=this.o.followContext?.();return e?{filter:e.filter,searchText:e.searchText}:{}}request(e,t){return{limit:eh,skip:e*this.chunkSize,take:this.chunkSize,search:t,...this.context()}}stateFor(e){let t=this.store.get(e);return t||(t={totalCount:null,hasBlanks:!1,chunks:new Map},this.store.set(e,t)),t}rowsOf(e){return e.map(t=>{let u=t.value===null||t.value===void 0,r=u?"":t.label??this.o.formatLabel?.(t.value)??String(t.value);return{key:A0(t.value),value:t.value,label:r,blank:u}})}take(e,t,u){let r=this.stateFor(e),n=Number.isFinite(u.totalCount)?Math.max(0,u.totalCount):0;r.totalCount!==null&&r.totalCount!==n&&r.chunks.clear(),r.totalCount=n,e===""&&(r.hasBlanks=u.hasBlanks===!0),r.chunks.set(t,this.rowsOf(u.values??[])),e===this.search&&this.syncEngine(),this.emit()}syncEngine(){this.engine.setRowCount(this.getRowCount())}blankShown(){return this.search===""&&this.state.hasBlanks}lead(){return this.blankShown()?2:0}getRowCount(){return(this.state.totalCount??0)+this.lead()}isLoading(){return this.state.totalCount===null&&!this.failed}getRow(e){if(!(e<0||e>=this.getRowCount())){if(this.blankShown()){if(e===0)return{key:ft,value:null,label:"",blank:!0};if(e===1)return{key:ea,value:void 0,label:"",blank:!1,nonBlank:!0};e-=2}return this.state.chunks.get(Math.floor(e/this.chunkSize))?.[e%this.chunkSize]}}ensure(e,t){this.disposed||!this.paged||(this.wanted={start:e,end:t},this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.timer=null,this.fetchWanted()},th))}fetchWanted(){if(!this.wanted||this.disposed)return;let e=this.lead(),t=this.state.totalCount??0,u=Math.max(0,this.wanted.start-e),r=Math.min(t-1,this.wanted.end-1-e);if(!(r<u))for(let n=Math.floor(u/this.chunkSize);n<=Math.floor(r/this.chunkSize);n++)this.state.chunks.has(n)||this.fetchChunk(this.search,n)}async fetchChunk(e,t){let u=`${e} ${t}`;if(this.inFlight.has(u))return;this.inFlight.add(u);let r=this.generation;try{let n=await this.o.load(this.request(t,e));if(this.disposed||r!==this.generation||Array.isArray(n))return;this.take(e,t,n)}catch(n){this.disposed||this.o.onError?.(n)}finally{this.inFlight.delete(u)}}setSearch(e){let t=e.trim();t!==this.search&&(this.search=t,this.generation++,this.inFlight.clear(),this.failed=!1,this.state=this.stateFor(t),this.syncEngine(),this.engine.setScroll(0,0),this.emit(),this.state.totalCount===null&&this.fetchChunk(t,0))}getSearch(){return this.search}getWindow(e,t){return this.engine.setViewportSize(1,Math.max(1,t)),this.engine.setScroll(e,0),this.engine.getWindow().rows}isNonBlankSelection(){return this.mode==="all"&&this.marked.size===1&&this.marked.has(ft)}isChecked(e){if(e.nonBlank)return this.isNonBlankSelection();let t=this.marked.has(e.key);return this.mode==="all"?!t:t}toggle(e){if(e.nonBlank){this.isNonBlankSelection()?(this.mode="all",this.marked=new Map):(this.mode="all",this.marked=new Map([[ft,null]])),this.emit();return}this.marked.has(e.key)?this.marked.delete(e.key):this.marked.set(e.key,e.value),this.emit()}selectAll(){this.mode="all",this.marked=new Map,this.emit()}clear(){this.mode="some",this.marked=new Map,this.emit()}buildFilter(e){let t=[...this.marked.entries()].filter(([n])=>n!==ft).map(([,n])=>n),u=this.marked.has(ft);if(this.mode==="all"){let n=[];return t.length>0&&n.push({columnId:e,operator:"notin",value:t}),u&&n.push({columnId:e,operator:"isnotnull"}),n.length===0?null:n.length===1?n[0]:{logic:"and",nodes:n}}if(t.length===0)return{columnId:e,operator:"isnull"};let r={columnId:e,operator:"in",value:t};return u?{logic:"or",nodes:[r,{columnId:e,operator:"isnull"}]}:r}getSelectedCount(){let e=this.state.totalCount;if(this.search!==""||e===null)return null;let t=e+(this.state.hasBlanks?1:0);return this.mode==="all"?t-this.marked.size:this.marked.size}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}emit(){if(!this.disposed)for(let e of[...this.listeners])e()}dispose(){this.disposed=!0,this.timer&&clearTimeout(this.timer),this.listeners.clear()}};function nh(e){return e==="in"||e==="isnull"||e==="isnotnull"}function x0(e){if(!Je(e))return nh(e.operator)?[e]:null;if(e.logic!=="or")return null;let t=[];for(let u of e.nodes){let r=x0(u);if(!r)return null;t.push(...r)}return t.length>0?t:null}function v0(e,t,u={}){if(!e)return null;let r=x0(e);if(!r)return null;let n=[];for(let a of t)r.some(o=>W4(a.value,o,void 0,void 0,u.text===!0))&&n.push(Rt(a));return n.length===t.length?null:n}function ah(e){return e==null||e===""}function oh(e,t,u){let r=[],n=-1,a,o,l=i=>{n>=0&&i-n>1&&r.push({start:n,end:i-1,length:i-n}),n=-1,o=void 0};for(let i=0;i<e.length;i++){let s=e[i];if(!s||s.kind!=="data"){l(i);continue}let h=s.data,m=t(h);if(ah(m)){l(i);continue}n>=0&&o!==void 0&&(u?u({value:m,row:h},{value:a,row:o}):Object.is(m,a))||(l(i),n=i,a=m,o=h)}return l(e.length),r}function ih(e,t){let u=0,r=e.length-1;for(;u<=r;){let n=u+r>>1,a=e[n];if(t<a.start)r=n-1;else if(t>a.end)u=n+1;else return a}return null}function F0(e,t,u,r=Number.POSITIVE_INFINITY){let n=ih(e,t);if(!n)return null;let a=Math.max(n.start,u);if(t!==a)return{role:"covered"};let o=Math.min(n.end,r);return{role:"draw",span:n,drawStart:a,drawEnd:o,clippedAbove:n.start<a,clippedBelow:n.end>o}}var ms=new WeakMap;function ps(e){let t=ms.get(e);return t===void 0&&(t=[...e.left,...e.center,...e.right].some(u=>typeof u.def.colSpan=="function"),ms.set(e,t)),t}function lh(e,t,u){let r=new Map,n=new Map,a=new Map,o=x=>{if(typeof x.def.colSpan!="function")return 1;let k=Math.floor(u(x));return Number.isFinite(k)&&k>1?k:1},l=(x,k,M)=>{let K=x[k].state.id,O=0;for(let G=k;G<k+M;G++)O+=x[G].state.width;r.set(K,O),n.set(K,M);for(let G=k+1;G<k+M;G++)a.set(x[G].state.id,K)};for(let x of[e.left,e.right])for(let k=0;k<x.length;){let M=Math.min(o(x[k]),x.length-k);M>1&&l(x,k,M),k+=M}let i=e.center,s=new Set(e.stickyIndices),h=x=>{if(s.has(x))return 1;let k=x+1;for(;k<i.length&&!s.has(k);)k++;return k-x},m=x=>Math.min(o(i[x]),h(x)),c=t?Math.max(0,Math.min(t.start,i.length)):0,f=t?Math.max(c,Math.min(t.end,i.length)):i.length,C=null,A=0,S=0,F=0;for(;F<c;){let x=m(F);if(F+x>c){l(i,F,x),C={column:i[F],width:r.get(i[F].state.id)};for(let k=F;k<c;k++)A+=i[k].state.width;for(let k=f;k<F+x;k++)S+=i[k].state.width;F+=x;break}F+=x}for(F=Math.max(F,c);F<f;){let x=m(F);if(x>1){l(i,F,x);for(let k=f;k<F+x;k++)S+=i[k].state.width}F+=x}return r.size===0?null:{widths:r,spans:n,covered:a,lead:C,leadingDelta:A,trailingDelta:S}}function fs(e){return Array.from(e.querySelectorAll(":scope > [data-row-key]"))}function gs(e){return e.map(t=>t.getAttribute("data-row-key")).join("\0")}function sh(){return typeof matchMedia=="function"&&matchMedia("(prefers-reduced-motion: reduce)").matches}var D0=class{snapshot=null;cleanup=null;capture(e,t=Date.now()){if(!e||sh()||this.snapshot&&t-this.snapshot.at<2e3)return;let u=fs(e),r=new Map;for(let n of u)r.set(n.getAttribute("data-row-key"),n.getBoundingClientRect().top);this.snapshot={tops:r,order:gs(u),at:t}}play(e,t=250,u=Date.now()){let r=this.snapshot;if(!e||!r)return!1;if(u-r.at>=2e3)return this.snapshot=null,!1;let n=fs(e);if(gs(n)===r.order)return!1;this.snapshot=null;let a=[];for(let o of n){let l=r.tops.get(o.getAttribute("data-row-key"));if(o.style.transition="none",l===void 0){o.style.opacity="0",a.push(o);continue}let i=l-o.getBoundingClientRect().top;if(Math.abs(i)<.5){o.style.transition="";continue}o.style.transform=`translateY(${i}px)`,a.push(o)}if(a.length===0)return!1;e.offsetHeight;for(let o of a)o.style.transition=`transform ${t}ms ease, opacity ${t}ms ease`,o.style.transform="",o.style.opacity="";return this.cleanup&&clearTimeout(this.cleanup),this.cleanup=setTimeout(()=>{this.cleanup=null;for(let o of a)o.style.transition=""},t+50),!0}dispose(){this.snapshot=null,this.cleanup&&clearTimeout(this.cleanup),this.cleanup=null}},dh={columns:"M2.5 3h11v10h-11zM6.2 3v10M9.8 3v10",chart:"M2 13.5h12M4.5 11V8M8 11V4.5M11.5 11V6.5",format:"M2 4.5h6M11 4.5h3M2 11.5h2M7 11.5h7M9.5 2.5v4M5.5 9.5v4",download:"M8 2v8m0 0L5 7m3 3 3-3M2.5 11.5v1.5a1 1 0 0 0 1 1h9a1 1 0 0 0 1-1v-1.5",newWindow:"M9.5 2.5h4v4M13.5 2.5 8 8M12 9.5v3a1 1 0 0 1-1 1H3.5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h3",popOut:"M2.5 5.5h7v7h-7zM6.5 5.5v-3h7v7h-4",dock:"M2.5 2.5h11v11h-11zM2.5 9.5h11",fullscreen:"M2.5 6V2.5H6M10 2.5h3.5V6M13.5 10v3.5H10M6 13.5H2.5V10",exitFullscreen:"M6 2.5V6H2.5M13.5 6H10V2.5M10 13.5V10h3.5M2.5 10H6v3.5",close:"M4 4l8 8M12 4l-8 8"},Cs="http://www.w3.org/2000/svg";function ch(e,t=14){let u=document.createElementNS(Cs,"svg");u.setAttribute("width",String(t)),u.setAttribute("height",String(t)),u.setAttribute("viewBox","0 0 16 16"),u.setAttribute("aria-hidden","true"),u.setAttribute("focusable","false"),u.setAttribute("class","kanuni-datagrid-icon");let r=document.createElementNS(Cs,"path");return r.setAttribute("d",dh[e]),r.setAttribute("fill","none"),r.setAttribute("stroke","currentColor"),r.setAttribute("stroke-width","1.5"),r.setAttribute("stroke-linecap","round"),r.setAttribute("stroke-linejoin","round"),u.appendChild(r),u}function S0(e,t,u){let r=document.createElement("span");r.textContent=u,e.replaceChildren(ch(t),r)}function hh(e,t,u,r){let n=[];if(r==="")return n;for(let a of e)for(let o of t){let l=du(o.def,u(a.data,o.id),a.data);l!==""&&Le(l).includes(r)&&n.push({rowKey:a.key,columnId:o.id})}return n}function ta(e,t=globalThis){let u=new Map,r=!1,n=a=>{let o=u.get(a);o!==void 0&&(t.clearTimeout(o),u.delete(a))};return{schedule(a,o){if(!r){if(n(a),e<=0){o();return}u.set(a,t.setTimeout(()=>{u.delete(a),r||o()},e))}},cancel:n,cancelAll(){for(let a of u.values())t.clearTimeout(a);u.clear()},dispose(){r=!0;for(let a of u.values())t.clearTimeout(a);u.clear()},isPending(a){return u.has(a)},get pendingCount(){return u.size}}}var mh=class{handlers={};on(e,t){let u=this.handlers[e]??new Set;return u.add(t),this.handlers[e]=u,()=>this.off(e,t)}off(e,t){this.handlers[e]?.delete(t)}emit(e,t){let u=this.handlers[e];u&&u.forEach(r=>r(t))}clear(){this.handlers={}}};function no(e,t){let u=(e.length-1)*t,r=Math.floor(u),n=Math.ceil(u);return e[r]+(e[n]-e[r])*(u-r)}function ph(e,t=50){let u=0,r=new Float64Array(e.length);for(let C=0;C<e.length;C++){let A=e[C];Number.isFinite(A)&&(r[u++]=A)}if(u===0)return null;let n=r.subarray(0,u).sort(),a=no(n,.25),o=no(n,.5),l=no(n,.75),i=1.5*(l-a),s=n[0],h=n[u-1],m=[],c=[];for(let C=0;C<u;C++){let A=n[C];if(A<a-i)m.push(A);else{s=A;break}}for(let C=u-1;C>=0;C--){let A=n[C];if(A>l+i)c.push(A);else{h=A;break}}let f=[];for(let C=0;f.length<t&&(C<m.length||C<c.length);C++)C<m.length&&f.push(m[C]),C<c.length&&f.length<t&&f.push(c[C]);return{count:u,q1:a,median:o,q3:l,low:s,high:h,outliers:f,outliersTruncated:m.length+c.length>f.length,min:n[0],max:n[u-1]}}var ao=["tr","en","de","fr","es","it","pt","ru","ar","zh-CN","ja","ko"],fh=new Set(["ar"]);function k0(e){return e!==void 0&&fh.has(e)}function gh(e){if(!e)return;if(ao.includes(e))return e;let t=e.toLowerCase(),u=ao.find(n=>n.toLowerCase()===t);if(u)return u;if(t.startsWith("zh"))return"zh-CN";let r=t.split("-")[0];return ao.find(n=>n.toLowerCase()===r)}function Ch(e,t,u,r){let n=gh(u),a=n?e[n]:void 0;return!a&&!r?t:{...t,...a,...r}}function oo(e){let t=e?.series;return Array.isArray(t)&&t.some(u=>u.aggregate==="first"||u.aggregate==="last")}var B0=30,ys="Other",yh=1e4;function T0(e){return!e.series.some(t=>t.aggregate==="custom")}function R0(e){return e==null?"":String(e)}var su=864e5,wh=60,Eh=20,Fn=2e3,io=["day","week","month","quarter","year"],ws={day:su,week:7*su,month:30.44*su,quarter:91.31*su,year:365.25*su};function Es(e,t){let u=new Date(e),r=u.getUTCFullYear(),n=u.getUTCMonth();switch(t){case"day":return Date.UTC(r,n,u.getUTCDate());case"week":{let a=Date.UTC(r,n,u.getUTCDate()),o=(new Date(a).getUTCDay()+6)%7;return a-o*su}case"month":return Date.UTC(r,n,1);case"quarter":return Date.UTC(r,Math.floor(n/3)*3,1);default:return Date.UTC(r,0,1)}}function bs(e,t){let u=new Date(e),r=u.getUTCFullYear(),n=u.getUTCMonth();switch(t){case"day":return e+su;case"week":return e+7*su;case"month":return Date.UTC(r,n+1,1);case"quarter":return Date.UTC(r,n+3,1);default:return Date.UTC(r+1,0,1)}}var lo=e=>e<10?`0${e}`:String(e);function bh(e,t){let u=new Date(e),r=u.getUTCFullYear();switch(t){case"year":return String(r);case"quarter":return`${r}-Q${Math.floor(u.getUTCMonth()/3)+1}`;case"month":return`${r}-${lo(u.getUTCMonth()+1)}`;default:return`${r}-${lo(u.getUTCMonth()+1)}-${lo(u.getUTCDate())}`}}function Ah(e){if(!(e>0)||!Number.isFinite(e))return 1;let t=10**Math.floor(Math.log10(e)),u=e/t;return(u<=1?1:u<=2?2:u<=5?5:10)*t}function N0(e,t,u){let r=Number.isFinite(t)&&Number.isFinite(u)?Math.max(0,u-t):0;if(e.kind==="date"){let l=e.unit??"auto",i,s=!1;if(l==="auto")i=io.find(h=>r/ws[h]+1<=wh)??"year";else for(i=l;r/ws[i]+1>Fn;){let h=io[io.indexOf(i)+1];if(!h)break;i=h,s=!0}return{info:{kind:"date",unit:i,adjusted:s},keyOf:h=>Number.isFinite(h)?Es(h,i):Number.NaN,endOf:h=>bs(h,i),labelOf:h=>bh(h,i),keys:(h,m)=>{let c=[];if(!Number.isFinite(h)||!Number.isFinite(m))return c;for(let f=Es(h,i);f<=m&&c.length<Fn;f=bs(f,i))c.push(f);return c}}}let n=e.size&&e.size>0?e.size:Ah(r/Math.max(1,e.bins??Eh));(!(n>0)||!Number.isFinite(n))&&(n=1);let a=!1;for(;r/n+1>Fn;)n*=2,a=!0;let o=n;return{info:{kind:"number",size:o,adjusted:a},keyOf:l=>Number.isFinite(l)?Math.floor(l/o)*o:Number.NaN,endOf:l=>l+o,labelOf:l=>{let i=s=>String(Number(s.toPrecision(12)));return`${i(l)} \u2013 ${i(l+o)}`},keys:(l,i)=>{let s=[];if(!Number.isFinite(l)||!Number.isFinite(i))return s;let h=Math.floor(l/o)*o;for(let m=h;m<=i&&s.length<Fn;m+=o)s.push(m);return s}}}function Kn(e,t){if(e==null)return Number.NaN;if(e instanceof Date)return e.getTime();if(typeof e=="number")return e;if(t==="number")return Number(e);let u=Number(e);return Number.isNaN(u)?Date.parse(String(e)):u}function br(e,t,u,r={}){let n=Math.max(1,u.maxCategories??B0),a=u.otherBucket!==!1,o=r.effectiveValue,l=u.series.map(J=>t.getDataType(J.columnId)),i=u.series.some(J=>J.aggregate==="custom"),s=new Map,h=null,m=0,c=0,f=!1,C=(J,ee=Number.NaN)=>({label:J,accs:u.series.map((re,B)=>Yo(re.columnId,re.aggregate,l[B],`${B}`)),seq:c++,start:ee}),A=u.categoryBucket,S=null,F=Number.POSITIVE_INFINITY,x=Number.NEGATIVE_INFINITY;if(A){for(let J=0;J<e.length;J++){let ee=e[J];if(!ee||!Bt(ee))continue;let re=t.getCellValue(ee.data,u.categoryColumnId),B=Kn(o?o(ee.key,u.categoryColumnId,re):re,A.kind);Number.isFinite(B)&&(B<F&&(F=B),B>x&&(x=B))}S=N0(A,F,x)}let k=i?new Map:null;for(let J=0;J<e.length;J++){let ee=e[J];if(!ee||!Bt(ee))continue;m++;let re=t.getCellValue(ee.data,u.categoryColumnId),B=o?o(ee.key,u.categoryColumnId,re):re,U,q,Ce=Number.NaN;S&&A?(Ce=S.keyOf(Kn(B,A.kind)),U=Number.isNaN(Ce)?"":Ce,q=Number.isNaN(Ce)?"":S.labelOf(Ce)):U=q=R0(B);let me=s.get(U);me||(s.size>=yh?(f=!0,h??=C(u.otherLabel??ys),me=h):(me=C(q,Ce),s.set(U,me)));for(let oe=0;oe<u.series.length;oe++){let de=u.series[oe];if(de.aggregate==="custom")continue;let we=t.getCellValue(ee.data,de.columnId);On(me.accs[oe],o?o(ee.key,de.columnId,we):we,J)}if(k){let oe=k.get(me.label);oe||(oe=u.series.map(()=>[]),k.set(me.label,oe));for(let de=0;de<u.series.length;de++){let we=u.series[de];if(we.aggregate!=="custom")continue;let Fe=t.getCellValue(ee.data,we.columnId);oe[de].push({row:r.effectiveRow?r.effectiveRow(ee.key,ee.data):ee.data,value:o?o(ee.key,we.columnId,Fe):Fe})}}}let M=[...s.values()],K=M.length+(h?1:0),O=J=>(u.series.length>0?Hn(J.accs[0]):null)??Number.NEGATIVE_INFINITY,G,W;if(S){G=S.keys(F,x).map(ee=>s.get(ee)??C(S.labelOf(ee),ee));let J=s.get("");J&&G.push(J),W=null}else{let J=M;if(M.length>n){let ee=[...M].sort((re,B)=>O(B)-O(re));if(J=ee.slice(0,n),a){h??=C(u.otherLabel??ys);for(let re of ee.slice(n))for(let B=0;B<u.series.length;B++)m4(h.accs[B],re.accs[B])}}switch(u.categoryOrder??"value-desc"){case"category-asc":J=[...J].sort((ee,re)=>ee.label.localeCompare(re.label));break;case"first-seen":J=[...J].sort((ee,re)=>ee.seq-re.seq);break;default:J=[...J].sort((ee,re)=>O(re)-O(ee))}G=h?[...J,h]:J,W=h?G.length-1:null}let Y=G.map(J=>J.label),j=u.series.map((J,ee)=>{let re=new Float64Array(G.length);for(let B=0;B<G.length;B++){let U;if(J.aggregate==="custom"){let q=k?.get(G[B].label)?.[ee]??[];U=J.calculate?J.calculate(q):null}else U=Hn(G[B].accs[ee]);re[B]=U??Number.NaN}return{label:J.label??t.getDef(J.columnId)?.headerName??J.columnId,columnId:J.columnId,aggregate:J.aggregate,values:re}});return{categories:Y,series:j,truncated:S?!1:M.length>n||f,otherIndex:W,rowCount:m,categoryCount:S?G.length:K,rankingExact:!f,...xh(S,G)}}function xh(e,t){if(!e)return{};let u=new Float64Array(t.length),r=new Float64Array(t.length);for(let n=0;n<t.length;n++){let a=t[n].start;u[n]=a,r[n]=Number.isNaN(a)?Number.NaN:e.endOf(a)}return{bucket:e.info,bucketStarts:u,bucketEnds:r}}var vh=2e3;function so(e){if(typeof e=="number")return e;if(e instanceof Date)return e.getTime();if(typeof e=="string"&&e.trim()!==""){let t=Number(e);if(Number.isFinite(t))return t;let u=Date.parse(e);return Number.isNaN(u)?Number.NaN:u}return Number.NaN}function Dn(e,t,u){let r=Math.max(1,u.maxPoints??vh),n=e.filter(Bt),a=n.length>r?Math.ceil(n.length/r):1,o=a===1?n:n.filter((s,h)=>h%a===0),l=s=>t.getDef(s)?.headerName??s,i=u.series.map(s=>{let h=[],m=[],c=[],f=[];for(let C of o){let A=so(t.getCellValue(C.data,u.xColumnId)),S=so(t.getCellValue(C.data,s.columnId));if(!Number.isFinite(A)||!Number.isFinite(S))continue;let F=Number.NaN;u.sizeColumnId&&(F=so(t.getCellValue(C.data,u.sizeColumnId)),!Number.isFinite(F))||(h.push(A),m.push(S),u.sizeColumnId&&c.push(F),f.push(C.key))}return{label:s.label??l(s.columnId),columnId:s.columnId,x:Float64Array.from(h),y:Float64Array.from(m),size:u.sizeColumnId?Float64Array.from(c):null,keys:f}});return{xColumnId:u.xColumnId,xLabel:l(u.xColumnId),xTemporal:t.getDataType(u.xColumnId)==="date",sizeColumnId:u.sizeColumnId,sizeLabel:u.sizeColumnId?l(u.sizeColumnId):void 0,series:i,rowCount:n.length,sampled:a>1}}function Fh(e){return typeof e=="number"?e:typeof e=="string"&&e.trim()!==""?Number(e):Number.NaN}function Dh(e,t,u){let r=Math.max(1,u.maxCategories??B0),n=u.categoryBucket,a=null;if(n){let c=Number.POSITIVE_INFINITY,f=Number.NEGATIVE_INFINITY;for(let C of e){if(!C||!Bt(C))continue;let A=Kn(t.getCellValue(C.data,u.categoryColumnId),n.kind);Number.isFinite(A)&&(A<c&&(c=A),A>f&&(f=A))}a=N0(n,c,f)}let o=new Map,l=0;for(let c of e){if(!c||!Bt(c))continue;l++;let f=t.getCellValue(c.data,u.categoryColumnId),C,A,S=Number.NaN;a&&n?(S=a.keyOf(Kn(f,n.kind)),C=Number.isNaN(S)?"":S,A=Number.isNaN(S)?"":a.labelOf(S)):C=A=R0(f);let F=o.get(C);F||(F={label:A,start:S,values:[]},o.set(C,F));let x=Fh(t.getCellValue(c.data,u.valueColumnId));Number.isFinite(x)&&F.values.push(x)}let i=[...o.values()],s=i.length>r;s&&(i=i.sort((c,f)=>f.values.length-c.values.length).slice(0,r));let h=c=>a?Number.isNaN(c.start):c.label==="";i.sort((c,f)=>h(c)||h(f)?Number(h(c))-Number(h(f)):a?c.start-f.start:c.label.localeCompare(f.label));let m={categories:i.map(c=>c.label),stats:i.map(c=>ph(c.values)),valueColumnId:u.valueColumnId,rowCount:l,truncated:s};return a&&(m.bucketStarts=Float64Array.from(i,c=>c.start),m.bucketEnds=Float64Array.from(i,c=>Number.isNaN(c.start)?Number.NaN:a.endOf(c.start))),m}var Sh=["filter","sort","grouping","columnVisibility","columnSizing","columnPinning","search"],M0=["=","<>","contains","notcontains","startswith","endswith"],ur=["=","<>",">",">=","<","<="],I0=["isnull","isnotnull"],kh=["lastDays","nextDays"],Bh=e=>e==="string"?"text":e==="lookup"?"coded value":e==="bigint"?"large integer":e,As={type:"string",pattern:"^-?[0-9]+$",description:"An integer written as digits; it can be too large for a JSON number."},Nu=(e,t)=>({type:"object",...t?{description:t}:{},properties:e,required:Object.keys(e),additionalProperties:!1}),ht=(e,t)=>({enum:[...e]}),co="A date as YYYY-MM-DD.";function Th(e){return e.map(t=>{let u=`- ${t.id}: "${t.header}" (${Bh(t.dataType)})`;if(t.description&&(u+=` \u2014 ${t.description}`),t.values&&t.values.length>0){let r=t.values.map(n=>String(n.value)===n.label?n.label:`${String(n.value)} = ${n.label}`);u+=`. Values: ${r.join(", ")}`}return u}).join(`
|
|
2
|
-
`)}function
|
|
1
|
+
"use strict";var KanuniLabsDataGrid=(()=>{var jc=Object.create;var En=Object.defineProperty;var Yc=Object.getOwnPropertyDescriptor;var Qc=Object.getOwnPropertyNames;var Xc=Object.getPrototypeOf,Zc=Object.prototype.hasOwnProperty;var eo=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,u)=>(typeof require<"u"?require:t)[u]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var Jc=(e,t)=>{for(var u in t)En(e,u,{get:t[u],enumerable:!0})},Zl=(e,t,u,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Qc(t))!Zc.call(e,n)&&n!==u&&En(e,n,{get:()=>t[n],enumerable:!(r=Yc(t,n))||r.enumerable});return e};var to=(e,t,u)=>(u=e!=null?jc(Xc(e)):{},Zl(t||!e||!e.__esModule?En(u,"default",{value:e,enumerable:!0}):u,e)),e4=e=>Zl(En({},"__esModule",{value:!0}),e);var Mg={};Jc(Mg,{CHECKBOX_COLUMN_WIDTH:()=>Kr,DENSITY_ROW_HEIGHT:()=>gi,DETAIL_COLUMN_WIDTH:()=>or,GRID_COLOR_SCHEMES:()=>wd,PRINT_MAX_ROWS:()=>vi,ROW_DRAG_MIME:()=>zr,ROW_NUMBER_COLUMN_WIDTH:()=>ar,THEME_ROW_HEIGHT:()=>wi,attachCellEditing:()=>sa,buildCellEditor:()=>oa,buildDateEditor:()=>gu,buildEditForm:()=>la,buildHeaderMenu:()=>na,createGrid:()=>Wd,isPackagedTheme:()=>Ci,measureBestFitWidth:()=>aa,openConfirmDialog:()=>ia,presetRowHeight:()=>ra,toolbarButton:()=>_d});function t4(e){return e.kind==="group"}function Bt(e){return e.kind==="data"}function u4(e){return e.kind==="treePath"}function r4(e){return!Array.isArray(e)&&typeof e.load=="function"}function Ln(e){return typeof e=="string"||typeof e=="number"}function s0(e){if(!e)return{show:!1,search:null,columns:void 0,export:!1,chart:!1};let t=e===!0?{}:e,u=t.search??!0;return{show:!0,search:u===!1?null:u===!0?{}:u,columns:t.columns,export:t.export??!0,chart:t.chart??!0}}var d0="\u2063tree:";function n4(e){return d0+JSON.stringify(e)}function bn(e){return typeof e=="string"&&e.startsWith(d0)}function a4(e,t,u){let r=new Map,n=new Map,a=new Map,o=new Map,l=new Map,i=new Array(e.length);for(let m=0;m<e.length;m++){let c=t(e[m]);a.set(c,m);let p=u(e[m]),C=Array.isArray(p)?p.map(D=>String(D)):[];i[m]=C;let E=JSON.stringify(C);C.length>0&&!l.has(E)&&l.set(E,c)}let s=(m,c)=>{n.set(c,m);let p=r.get(m);p?p.push(c):r.set(m,[c])},h=m=>{if(m.length===0)return null;let c=l.get(JSON.stringify(m));if(c!==void 0)return c;let p=n4(m);return o.has(p)||(o.set(p,{label:m[m.length-1],path:m}),s(h(m.slice(0,-1)),p)),p};for(let m=0;m<e.length;m++){let c=t(e[m]),p=i[m];s(p.length>1?h(p.slice(0,-1)):null,c)}return{childrenOf:r,parentOf:n,sourceIndexOf:a,pathRows:o}}function uo(e,t,u=new WeakMap){let r=[],n=[];for(let a=e.length-1;a>=0;a--)n.push({row:e[a],parent:null});for(;n.length>0;){let{row:a,parent:o}=n.pop();r.push(a),o!==null&&typeof a=="object"&&a!==null&&u.set(a,o);let l=a&&typeof a=="object"?a[t]:void 0;if(Array.isArray(l))for(let i=l.length-1;i>=0;i--)n.push({row:l[i],parent:a})}return{rows:r,parentOf:u}}function o4(e){let{getParentKey:t,parentField:u}=e;if(t)return n=>t(n)??null;let r=u??"parentId";return n=>n[r]??null}function i4(e,t,u){let r=new Map,n=new Map,a=new Map;for(let i=0;i<e.length;i++)a.set(t(e[i]),i);for(let i=0;i<e.length;i++){let s=t(e[i]),h=u(e[i]);h!==null&&(h===s||!a.has(h))&&(h=null),n.set(s,h);let m=r.get(h);m?m.push(s):r.set(h,[s])}let o=new Set;for(let i of n.keys()){if(o.has(i))continue;let s=new Set,h=i;for(;h!==null&&!o.has(h);){if(s.has(h)){let m=n.get(h)??null;n.set(h,null);let c=r.get(m);if(c){let C=c.indexOf(h);C>=0&&c.splice(C,1)}let p=r.get(null);p?p.push(h):r.set(null,[h]);break}s.add(h),h=n.get(h)??null}for(let m of s)o.add(m)}let l=r.get(null);return l&&l.sort((i,s)=>(a.get(i)??0)-(a.get(s)??0)),{childrenOf:r,parentOf:n,sourceIndexOf:a}}var l4=Object.freeze({});function s4(e,t){let{index:u,sourceRows:r,isExpanded:n}=t,a=new Map,o=new Map;for(let E=0;E<e.length;E++)a.set(e[E].key,e[E]),o.set(e[E].key,E);let l=e.length!==u.sourceIndexOf.size,i=u.pathRows,s=new Set(a.keys()),h=new Map;if(l||i&&i.size>0)for(let E of a.keys()){let D=o.get(E),F=u.parentOf.get(E)??null;for(;F!==null&&!s.has(F);)s.add(F),i?.has(F)&&h.set(F,D),F=u.parentOf.get(F)??null}let m=E=>{let D=E.filter(F=>s.has(F));return D.sort((F,x)=>{let k=o.get(F)??h.get(F),M=o.get(x)??h.get(x);return k!==void 0&&M!==void 0?k-M:k!==void 0?-1:M!==void 0?1:(u.sourceIndexOf.get(F)??0)-(u.sourceIndexOf.get(x)??0)}),D},c=[],p=[],C=m(u.childrenOf.get(null)??[]);for(let E=C.length-1;E>=0;E--)p.push({key:C[E],depth:0});for(;p.length>0;){let{key:E,depth:D}=p.pop(),F=m(u.childrenOf.get(E)??[]),x=F.length>0,k=x&&(l||n(E)),M=a.get(E),z=i?.get(E);if(z)c.push({kind:"treePath",key:E,label:z.label,path:z.path,data:l4,tree:{depth:D,hasChildren:x,expanded:k,ancestorOnly:!1}});else{let O=u.sourceIndexOf.get(E)??-1,G={depth:D,hasChildren:x,expanded:k,ancestorOnly:M===void 0};c.push(M?{...M,tree:G}:{kind:"data",key:E,sourceIndex:O,data:r[O],tree:G})}if(k)for(let O=F.length-1;O>=0;O--)p.push({key:F[O],depth:D+1})}return{nodes:c}}var Jl=new WeakMap;function d4(e){if(e.linkedColumns||typeof e.items=="function"||!Array.isArray(e.items))return null;let t=Jl.get(e);if(t)return t;let u=new Map;for(let r of e.items)u.set(r.value,r.label);return Jl.set(e,u),u}function Ut(e,t){if(!e?.lookup)return null;let u=d4(e.lookup);if(!u)return null;let r=u.get(t);return r===void 0?null:r}function Qo(e){return e?.lookup?typeof e.lookup.items=="function"?null:e.lookup.items:null}function _t(e){let t=e?.band;return t==null?[]:typeof t=="string"?t===""?[]:[t]:t.filter(u=>typeof u=="string"&&u!=="")}function er(e){return e.join("\0")}function c4(e,t){let u=e?.bandShow;if(u===void 0)return!1;let r=_t(e);if(r.length===0)return!1;let n=!1;for(let a=0;a<r.length;a++)if(t.has(er(r.slice(0,a+1)))){n=!0;break}return u==="open"?n:!n}function c0(e){let t=0;for(let u of e){let r=_t(u.def).length;r>t&&(t=r)}return t}function h0(e,t){if(t<=0)return[];let u=[];for(let r=0;r<t;r++){let n=[];for(let a of e){let o=_t(a.def),l=r<o.length?o[r]:"",i=l==="",s=n[n.length-1];s!==void 0&&s.spacer===i&&s.label===l&&(i||h4(e,s.columnIds[0],a.state.id,r))?(s.columnIds.push(a.state.id),s.width+=a.state.width):n.push({label:l,columnIds:[a.state.id],width:a.state.width,level:r,spacer:i})}u.push(n)}return u}function h4(e,t,u,r){if(r===0)return!0;let n=e.find(i=>i.state.id===t),a=e.find(i=>i.state.id===u),o=_t(n?.def),l=_t(a?.def);for(let i=0;i<r;i++)if(o[i]!==l[i])return!1;return!0}var m4=/^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}|$)/;function f4(e){return e==null||e===""?null:typeof e=="boolean"?"boolean":typeof e=="number"?Number.isFinite(e)?"number":null:typeof e=="bigint"?"bigint":e instanceof Date||typeof e=="string"&&m4.test(e)?"date":"string"}function p4(e){if(/^[A-Z0-9_]+$/.test(e))return e.replace(/_/g," ");let t=e.replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").trim().split(/\s+/);if(t.length===0)return e;let u=t.map((r,n)=>r.toLowerCase()==="id"?"ID":n===0||/^[A-Z0-9]+$/.test(r)?r:r.toLowerCase());return u[0]=u[0].charAt(0).toUpperCase()+u[0].slice(1),u.join(" ")}function m0(e,t={}){let{sampleSize:u=50,exclude:r,include:n,humanizeHeaders:a=!0,defaults:o}=t;if(!e||e.length===0)return[];let l=new Set(r??[]),i=Math.min(e.length,Math.max(1,u)),s=new Map;for(let h=0;h<i;h++){let m=e[h];if(!(!m||typeof m!="object"))for(let[c,p]of Object.entries(m)){if(l.has(c))continue;s.get(c)==null&&s.set(c,f4(p))}}return(n?n.filter(h=>s.has(h)&&!l.has(h)):[...s.keys()]).map(h=>({...o,field:h,headerName:a?p4(h):h,...s.get(h)?{dataType:s.get(h)}:{}}))}var mu=(e,t)=>`${e}:${t}`;function g4(e){if(typeof e=="number")return e;if(typeof e=="boolean")return e?1:0;if(e instanceof Date)return e.getTime();let t=Number(e);return Number.isNaN(t)?Number.NaN:t}function C4(e,t){return t==="date"&&!(e instanceof Date)&&typeof e!="number"?Date.parse(String(e)):g4(e)}function Xo(e,t,u,r=mu(e,t)){return{key:r,columnId:e,type:t,dataType:u,count:0,numericCount:0,sum:0,min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY,distinct:t==="countDistinct"?new Set:null,first:Number.NaN,firstAt:Number.POSITIVE_INFINITY,last:Number.NaN,lastAt:Number.NEGATIVE_INFINITY}}function w4(e,t){if(e.count+=t.count,e.numericCount+=t.numericCount,e.sum+=t.sum,t.min<e.min&&(e.min=t.min),t.max>e.max&&(e.max=t.max),e.distinct&&t.distinct)for(let u of t.distinct)e.distinct.add(u);t.firstAt<e.firstAt&&(e.first=t.first,e.firstAt=t.firstAt),t.lastAt>e.lastAt&&(e.last=t.last,e.lastAt=t.lastAt)}function On(e,t,u=0){let r=t==null;if(e.type==="count"){r||e.count++;return}if(e.distinct){r||e.distinct.add(String(t));return}if(r||e.dataType==="bigint")return;let n=C4(t,e.dataType);Number.isNaN(n)||(e.numericCount++,e.sum+=n,n<e.min&&(e.min=n),n>e.max&&(e.max=n),u<e.firstAt&&(e.first=n,e.firstAt=u),u>=e.lastAt&&(e.last=n,e.lastAt=u))}function Vn(e){switch(e.type){case"count":return e.count;case"countDistinct":return e.distinct?e.distinct.size:0;case"sum":return e.numericCount>0?e.sum:null;case"avg":return e.numericCount>0?e.sum/e.numericCount:null;case"min":return e.numericCount>0?e.min:null;case"max":return e.numericCount>0?e.max:null;case"first":return e.numericCount>0?e.first:null;case"last":return e.numericCount>0?e.last:null;default:return null}}function Zo(e,t,u,r,n,a){let o={};if(n.length===0)return o;let l=a?.effectiveValue,i=a?.effectiveRow,s=[];for(let h of n){let m=mu(h.columnId,h.type);if(h.type==="custom"){if(!h.calculate){o[m]=null;continue}let c=[];for(let p=t;p<u;p++){let C=e[p];if(!C||!Bt(C))continue;let E=r.getCellValue(C.data,h.columnId);c.push({row:i?i(C.key,C.data):C.data,value:l?l(C.key,h.columnId,E):E})}o[m]=h.calculate(c);continue}s.push(Xo(h.columnId,h.type,r.getDataType(h.columnId),m))}if(s.length>0){let h=s.length===1?s[0]:null;for(let m=t;m<u;m++){let c=e[m];if(!c||!Bt(c))continue;let p=c.data;if(h){let C=r.getCellValue(p,h.columnId);On(h,l?l(c.key,h.columnId,C):C);continue}for(let C of s){let E=r.getCellValue(p,C.columnId);On(C,l?l(c.key,C.columnId,E):E)}}for(let m of s)o[m.key]=Vn(m)}return o}function y4(e,t,u,r){return Zo(e,0,e.length,t,u,r)}function E4(e,t,u){let r=u?.effectiveValue,n=u?.effectiveRow,a=[],o=[],l=[];for(let i of t){if(i.type==="custom"){i.calculate?o.push({def:i,cells:[]}):l.push(mu(i.columnId,i.type));continue}a.push(Xo(i.columnId,i.type,e.getDataType(i.columnId)))}return{add(i,s,h){for(let m=s;m<h;m++){let c=i[m];if(!c||!Bt(c))continue;let p=c.data;for(let C of a){let E=e.getCellValue(p,C.columnId);On(C,r?r(c.key,C.columnId,E):E)}for(let{def:C,cells:E}of o){let D=e.getCellValue(p,C.columnId);E.push({row:n?n(c.key,p):p,value:r?r(c.key,C.columnId,D):D})}}},finish(){let i={};for(let s of l)i[s]=null;for(let s of a)i[s.key]=Vn(s);for(let{def:s,cells:h}of o)i[mu(s.columnId,s.type)]=s.calculate(h);return i}}}var An=(e,t=2)=>String(e).padStart(t,"0");function b4(e){if(e instanceof Date)return Number.isNaN(e.getTime())?null:e;if(typeof e=="number"&&Number.isFinite(e))return new Date(e);if(typeof e=="string"&&e.trim()!==""){let t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e.trim());if(t)return new Date(Number(t[1]),Number(t[2])-1,Number(t[3]));let u=Date.parse(e);return Number.isNaN(u)?null:new Date(u)}return null}function A4(e){let t=new Date(e.getFullYear(),e.getMonth(),e.getDate()),u=(t.getDay()+6)%7;t.setDate(t.getDate()-u+3);let r=t.getFullYear(),n=new Date(r,0,4),a=(n.getDay()+6)%7;n.setDate(n.getDate()-a+3);let o=1+Math.round((t.getTime()-n.getTime())/(7*864e5));return{year:r,week:o}}function es(e,t){let u=b4(e);if(!u)return null;let r=u.getFullYear(),n=u.getMonth();switch(t){case"day":return{key:`${r}-${An(n+1)}-${An(u.getDate())}`,start:new Date(r,n,u.getDate())};case"week":{let{year:a,week:o}=A4(u),l=(u.getDay()+6)%7;return{key:`${a}-W${An(o)}`,start:new Date(r,n,u.getDate()-l)}}case"month":return{key:`${r}-${An(n+1)}`,start:new Date(r,n,1)};case"quarter":{let a=Math.floor(n/3);return{key:`${r}-Q${a+1}`,start:new Date(r,a*3,1)}}case"year":return{key:String(r),start:new Date(r,0,1)};default:return null}}function x4(e,t,u){let{start:r,key:n}=e;try{switch(t){case"day":return new Intl.DateTimeFormat(u,{dateStyle:"medium"}).format(r);case"month":return new Intl.DateTimeFormat(u,{month:"long",year:"numeric"}).format(r);case"year":return new Intl.DateTimeFormat(u,{year:"numeric"}).format(r);case"quarter":return`Q${Math.floor(r.getMonth()/3)+1} ${new Intl.DateTimeFormat(u,{year:"numeric"}).format(r)}`;case"week":return`${n} \xB7 ${new Intl.DateTimeFormat(u,{day:"numeric",month:"short"}).format(r)}`}}catch{}return n}var ts=(e,t)=>`${e}::${t}`;function us(e,t,u){let r=u.columnIds,n=u.summaries,a=0,o=r.map(h=>{let m=t.getDef(h);return m?.groupInterval&&t.getDataType(h)==="date"?m.groupInterval:void 0}),l=(h,m)=>{let c=t.getCellValue(e[h].data,r[m]),p=o[m];return p?es(c,p)?.key??"":c==null?"":String(c)},i=(h,m,c,p)=>{let C=r[c],E=o[c],D=[],F=h;for(;F<m;){let x=t.getCellValue(e[F].data,C),k=E?es(x,E):null,M=k?k.start:E?null:x,z=l(F,c),O=F+1;for(;O<m&&l(O,c)===z;)O++;let G=p?`${p}|${ts(C,z)}`:ts(C,z),W={columnId:C,value:M,label:z,key:G,level:c,from:F,to:O,count:O-F,children:null};k&&E&&(W.display=x4(k,E,u.locale??"en")),n&&n.length>0&&(W.aggregates=Zo(e,F,O,t,n)),a++,c+1<r.length&&(W.children=i(F,O,c+1,G)),D.push(W),F=O}return D},s=r.length===0?[]:i(0,e.length,0,"");return{levels:r,roots:s,totalGroupCount:a,nodes:e}}function v4(e,t){let{collapsedKeys:u,collapsedByDefault:r=!1}=t,n=[],a=0,o=l=>{for(let i of l){let s=r?!u.has(i.key):u.has(i.key),h={kind:"group",key:i.key,columnId:i.columnId,value:i.value,label:i.label,...i.display!==void 0?{display:i.display}:{},count:i.count,level:i.level,expanded:!s};if(i.aggregates&&(h.aggregates=i.aggregates),n.push(h),a++,!s)if(i.children)o(i.children);else for(let m=i.from;m<i.to;m++)n.push(e.nodes[m])}};return o(e.roots),{nodes:n,groupCount:a}}function F4(e){let t=[],u=r=>{for(let n of r)t.push(n.key),n.children&&u(n.children)};return u(e.roots),t}function xn(e,t){let u=t==null?[]:Array.isArray(t)?[...t]:[t];if(u.length===0)return[...e];let r=u.map(a=>({columnId:a,direction:e.find(o=>o.columnId===a)?.direction??"asc"})),n=e.filter(a=>!u.includes(a.columnId));return[...r,...n]}function D4(e,t){let u=new Map,r=new Map,n=new Set,a,o,l=!1;for(let s of e){let h=new Set;if(s.remove)for(let m of s.remove){let c=Ln(m)?m:t(m);if(h.add(c),r.delete(c),u.has(c)){u.delete(c);continue}n.add(c)}if(s.update)for(let m of s.update){let c=t(m);if(!h.has(c)){if(u.has(c)){u.set(c,m);continue}n.has(c)||r.set(c,m)}}if(s.add){for(let m of s.add){let c=t(m);u.delete(c),u.set(c,m),r.delete(c)}l||(l=!0,a=s.addPosition,o=s.addBeforeKey)}}let i={};return u.size>0&&(i.add=[...u.values()],a!==void 0&&(i.addPosition=a),o!==void 0&&(i.addBeforeKey=o)),r.size>0&&(i.update=[...r.values()]),n.size>0&&(i.remove=[...n]),i}function S4(e){return!e.add?.length&&!e.update?.length&&!e.remove?.length}var k4=["=","<>",">",">=","<","<=","contains","notcontains","startswith","endswith","isnull","isnotnull","in","notin","between","period"],f0=new Set(k4);function Lr(e){return f0.has(e)}function ko(e){return e?Je(e)?e.nodes.some(ko):!f0.has(e.operator):!1}function Je(e){return e.nodes!==void 0}function ro(...e){let t=e.filter(u=>u!=null);return t.length===0?null:t.length===1?t[0]:{logic:"and",nodes:t}}var rr="row",Ou="set",hu="__default";function Bo(e){if(e===null)return e;if(Je(e)){let u=!1,r=e.nodes.map(n=>{let a=Bo(n);return a!==n&&(u=!0),a});return u?{...e,nodes:r}:e}let t=e.value;return typeof t=="bigint"?{...e,value:String(t)}:Array.isArray(t)&&t.some(u=>typeof u=="bigint")?{...e,value:t.map(u=>typeof u=="bigint"?String(u):u)}:e}var B4=/[\u0130\u0131]/,T4=/[\u0130\u0131]/g;function Le(e){return B4.test(e)?e.replace(T4,"i").toLowerCase():e.toLowerCase()}var p0="yyyy-MM-dd",R4=[{token:"yyyy",kind:"year"},{token:"yy",kind:"year"},{token:"MM",kind:"month"},{token:"dd",kind:"day"}];function jn(e){let t=[],u="",r=0;for(;r<e.length;){let n=R4.find(a=>e.startsWith(a.token,r));if(!n){u+=e[r],r+=1;continue}u&&(t.push({kind:"literal",text:u}),u=""),t.push({kind:n.kind,length:n.token.length}),r+=n.token.length}return u&&t.push({kind:"literal",text:u}),t}function Yn(e){return jn(e).reduce((t,u)=>u.kind==="literal"?t:t+u.length,0)}function Qn(e,t){return e.replace(/\D+/g,"").slice(0,Yn(t))}function Pr(e,t){let u=jn(t),r="",n=0,a=0;for(let o of u){if(o.kind==="literal"){n>0&&n>=a&&(r+=o.text);continue}a+=o.length;let l=e.slice(n,n+o.length);if(l.length===0||(r+=l,n+=l.length,l.length<o.length))break}return r}function Jo(e,t){return new Date(e,t,0).getDate()}function N4(e,t){return t>2?e:e<=68?2e3+e:1900+e}function g0(e,t){let u=Qn(e,t);if(u.length!==Yn(t))return null;let r=jn(t),n=0,a=1,o=1,l=1970,i=!1;for(let s of r){if(s.kind==="literal")continue;let h=Number(u.slice(n,n+s.length));n+=s.length,s.kind==="day"?a=h:s.kind==="month"?o=h:(l=N4(h,s.length),i=!0)}return!i||l<1||o<1||o>12||a<1||a>Jo(l,o)?null:new Date(l,o-1,a)}function Xn(e){if(e==null||e==="")return null;if(e instanceof Date)return Number.isNaN(e.getTime())?null:e;if(typeof e=="number"){let n=new Date(e);return Number.isNaN(n.getTime())?null:n}let t=String(e),u=/^(\d{4})-(\d{2})-(\d{2})$/.exec(t);if(u)return new Date(Number(u[1]),Number(u[2])-1,Number(u[3]));let r=new Date(t);return Number.isNaN(r.getTime())?null:r}var vn=new Map;function M4(e){let t=vn.get(e);return t||(vn.size>=64&&vn.clear(),t=jn(e),vn.set(e,t)),t}function Tt(e,t){let u=Xn(e);if(!u)return"";let r=(n,a)=>String(n).padStart(a,"0");return M4(t).map(n=>{if(n.kind==="literal")return n.text;if(n.kind==="day")return r(u.getDate(),n.length);if(n.kind==="month")return r(u.getMonth()+1,n.length);let a=u.getFullYear();return n.length>2?r(a,n.length):r(a%100,2)}).join("")}function Zn(e){return`${String(e.getFullYear()).padStart(4,"0")}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`}var I4={en:"en-US",tr:"tr-TR",de:"de-DE",fr:"fr-FR",es:"es-ES",it:"it-IT",pt:"pt-PT",ru:"ru-RU",ja:"ja-JP",ko:"ko-KR",ar:"ar-SA",zh:"zh-CN"};function C0(e){let t=(e??"en").trim()||"en";return t.includes("-")?t:I4[t.toLowerCase()]??t}function w0(e){return e.includes("-u-")?e:`${e}-u-nu-latn`}var rs=new Map;function L4(e){let t=rs.get(e);if(t)return t;let u=".",r=",";try{let a=new Intl.NumberFormat(w0(e)).formatToParts(12345675e-1);u=a.find(o=>o.type==="decimal")?.value??".",r=a.find(o=>o.type==="group")?.value??(u===","?".":",")}catch{}let n={decimal:u,group:r};return rs.set(e,n),n}var ns=new Set([" ","\xA0","\u202F","\u2009"]);function P4(e,t){let u=e.trim();if(u==="")return{ok:!0,value:null,negative:!1,int:"",frac:""};let{decimal:r,group:n}=L4(t),a=u,o=!1;(a[0]==="-"||a[0]==="\u2212")&&(o=!0,a=a.slice(1));let l=C=>C===n||ns.has(n)&&ns.has(C),i=a.indexOf(r);if(i!==-1&&a.indexOf(r,i+1)!==-1)return{ok:!1};let s=i===-1?a:a.slice(0,i),h=i===-1?"":a.slice(i+1);if(!/^\d*$/.test(h))return{ok:!1};let m="",c=!1;for(let C of s)if(C>="0"&&C<="9")m+=C;else if(l(C))c=!0,m+="|";else return{ok:!1};if(c){if(!/^\d{1,3}(\|\d{3})+$/.test(m))return{ok:!1};m=m.replace(/\|/g,"")}if(m===""&&h==="")return{ok:!1};let p=+`${o?"-":""}${m||"0"}.${h||"0"}`;return Number.isFinite(p)?{ok:!0,value:p===0?0:p,negative:o,int:m||"0",frac:h}:{ok:!1}}function G4(e,t){if(e.value===null)return null;if(t===void 0||t<0||e.frac.length<=t)return e.value;let u=Math.floor(t),r=(e.int+e.frac.slice(0,u)).split("").map(Number);if(Number(e.frac[u])>=5){let i=r.length-1;for(;i>=0;){if(r[i]<9){r[i]=r[i]+1;break}r[i]=0,i--}i<0&&r.unshift(1)}let n=r.join(""),a=n.slice(0,n.length-u)||"0",o=n.slice(n.length-u),l=+`${e.negative?"-":""}${a}${u>0?`.${o}`:""}`;return l===0?0:l}function O4(e,t){let u=P4(e,t.locale);return u.ok?G4(u,t.decimals):void 0}var as=new Map;function V4(e,t){if(!Number.isFinite(e))return String(e);let u=t.decimals!==void 0&&t.decimals>=0?Math.min(20,Math.floor(t.decimals)):void 0,r=`${t.locale}|${u??""}|${t.thousands===!1?0:1}`,n=as.get(r);if(!n){try{n=new Intl.NumberFormat(w0(t.locale),{useGrouping:t.thousands!==!1,minimumFractionDigits:u??0,maximumFractionDigits:u??20})}catch{n=new Intl.NumberFormat("en-US",{maximumFractionDigits:u??20})}as.set(r,n)}return n.format(e)}function H4(e,t){if(e)return{...e,locale:e.locale??C0(t)}}function cu(e,t,u){let r=Ut(e,t);if(r!==null)return r;if(e?.valueFormatter&&u!==void 0){let a=e.valueFormatter(t,u);return a==null?"":String(a)}if(e?.dataType==="date"&&e.dateFormat&&t!=null)return Tt(t,e.dateFormat);let n=Jn(e,t);return n!==null?n:t==null?"":String(t)}function Jn(e,t){let u=e?.numberFormat;return!u?.locale||typeof t!="number"?null:V4(t,u)}function ei(e){return e?typeof e.valueFormatter=="function"||!!e.dateFormat&&e.dataType==="date"||!!e.numberFormat:!1}function y0(e,t,u){if(!e||Ut(e,t)!==null)return null;let r;try{if(typeof e.valueFormatter=="function")r=e.valueFormatter(t,u);else if(e.dateFormat&&e.dataType==="date"&&t!=null)r=Tt(t,e.dateFormat);else if(e.numberFormat)r=Jn(e,t);else return null}catch{return null}return typeof r=="number"?String(r):typeof r=="string"&&r!==""?r:null}var os=-1,To="\0display:";function K4(e){return To+e}function ti(e){return e.startsWith(To)?e.slice(To.length):null}function E0(e,t,u){return y0(e.getDef(t),e.getCellValue(u,t),u)}function Hn(e){return e==null||typeof e=="number"&&Number.isNaN(e)}function b0(e){if(typeof e=="number")return e;if(typeof e=="boolean")return e?1:0;if(e instanceof Date)return e.getTime();let t=Number(e);return Number.isNaN(t)?Number.NaN:t}function A0(e){if(e instanceof Date)return e.getTime();if(typeof e=="number")return e;let t=Date.parse(String(e));return Number.isNaN(t)?Number.NaN:t}function x0(e,t,u,r=!1){let n=e.length,a=0,o=ti(u),l=o===null?t.getDataType(u):"string",i=o!==null?c=>E0(t,o,c):r?c=>t.getSortValue(c,u):c=>t.getCellValue(c,u);if(l==="number"||l==="boolean"||l==="date"){let c=new Float64Array(n),p=l==="date"?A0:b0,C=[],E=new Map,D=new Int32Array(n),F=!0;return{total:n,get done(){return a},step(x){let k=Math.min(n,a+x);for(;a<k;a++){let M=i(e[a]);if(Hn(M)){c[a]=Number.NaN,D[a]=os;continue}c[a]=p(M),typeof M!="number"&&(F=!1);let z=String(M),O=E.get(z);O===void 0&&(O=C.length,C.push(z),E.set(z,O)),D[a]=O}return a<n},finish(){return F?{kind:"numeric",values:c}:{kind:"numeric",values:c,searchCodes:D,searchDictionary:C}}}}let s=new Int32Array(n),h=[],m=new Map;return{total:n,get done(){return a},step(c){let p=Math.min(n,a+c);for(;a<p;a++){let C=i(e[a]);if(Hn(C)){s[a]=os;continue}let E=String(C),D=m.get(E);D===void 0&&(D=h.length,h.push(E),m.set(E,D)),s[a]=D}return a<n},finish(){return l==="bigint"?{kind:"text",codes:s,dictionary:h,integer:!0}:{kind:"text",codes:s,dictionary:h}}}}function z4(e,t,u,r=!1){let n=x0(e,t,u,r);return n.step(n.total),n.finish()}var is=new WeakMap;function $4(e){let t=is.get(e);if(t!==void 0)return t;let u=W4(e);return is.set(e,u),u}function W4(e){let t=e.resolvedOptions();if(t.sensitivity!=="base"||t.numeric!==!0||t.ignorePunctuation||t.usage!=="sort"||t.collation!=="default")return!1;let u=[];for(let r=32;r<=126;r++)u.push(String.fromCharCode(r));u.sort(e.compare);for(let r=1;r<u.length;r++)if(e.compare(u[r-1],u[r])===0&&u[r-1].toLowerCase()!==u[r].toLowerCase())return!1;for(let r of u)if(e.compare(r,"")===0)return!1;return!(e.compare("01","1")!==0||e.compare("0","00")!==0||e.compare("a09z","a9z")!==0||e.compare("9","10")>=0)}function ls(e){for(let t=0;t<e.length;t++){let u=e.charCodeAt(t);if(u<32||u>126)return!1}return!0}function _4(e,t){let u=0,r=0,n=e.length,a=t.length;for(;u<n&&r<a;){let o=e.charCodeAt(u),l=t.charCodeAt(r),i=o>=48&&o<=57,s=l>=48&&l<=57;if(i!==s)return!0;if(i){for(;u<n&&e.charCodeAt(u)===48;)u++;for(;r<a&&t.charCodeAt(r)===48;)r++;let h=u,m=r;for(;u<n;){let p=e.charCodeAt(u);if(p<48||p>57)break;u++}for(;r<a;){let p=t.charCodeAt(r);if(p<48||p>57)break;r++}let c=u-h;if(c!==r-m)return!0;for(let p=0;p<c;p++)if(e.charCodeAt(h+p)!==t.charCodeAt(m+p))return!0}else{if(o>=65&&o<=90&&(o+=32),l>=65&&l<=90&&(l+=32),o!==l)return!0;u++,r++}}return u!==n||r!==a}function U4(e,t){let u=e.length,r=new Array(u);for(let s=0;s<u;s++)r[s]=s;r.sort((s,h)=>t.compare(e[s],e[h]));let n=new Int32Array(u);if(u===0)return n;let a=$4(t)?new Uint8Array(u):null,o=r[0],l=a?ls(e[o])?1:2:0;a&&(a[o]=l);let i=0;n[o]=0;for(let s=1;s<u;s++){let h=r[s],m=e[o],c=e[h],p=0;a&&(p=a[h],p===0&&(p=ls(c)?1:2,a[h]=p)),(l===1&&p===1&&_4(m,c)||t.compare(m,c)!==0)&&i++,n[h]=i,o=h,l=p}return n}var Gr=["today","yesterday","tomorrow","thisWeek","lastWeek","nextWeek","thisMonth","lastMonth","nextMonth","thisQuarter","lastQuarter","nextQuarter","thisYear","lastYear","nextYear","yearToDate","lastDays","nextDays"],ce=(e,t,u)=>new Date(e,t,u).getTime();function q4(e,t=new Date){if(!e||typeof e!="object")return null;let u=t.getFullYear(),r=t.getMonth(),n=t.getDate(),a=(t.getDay()+6)%7,o=Math.floor(r/3)*3,l,i;switch(e.period){case"today":[l,i]=[ce(u,r,n),ce(u,r,n+1)];break;case"yesterday":[l,i]=[ce(u,r,n-1),ce(u,r,n)];break;case"tomorrow":[l,i]=[ce(u,r,n+1),ce(u,r,n+2)];break;case"thisWeek":[l,i]=[ce(u,r,n-a),ce(u,r,n-a+7)];break;case"lastWeek":[l,i]=[ce(u,r,n-a-7),ce(u,r,n-a)];break;case"nextWeek":[l,i]=[ce(u,r,n-a+7),ce(u,r,n-a+14)];break;case"thisMonth":[l,i]=[ce(u,r,1),ce(u,r+1,1)];break;case"lastMonth":[l,i]=[ce(u,r-1,1),ce(u,r,1)];break;case"nextMonth":[l,i]=[ce(u,r+1,1),ce(u,r+2,1)];break;case"thisQuarter":[l,i]=[ce(u,o,1),ce(u,o+3,1)];break;case"lastQuarter":[l,i]=[ce(u,o-3,1),ce(u,o,1)];break;case"nextQuarter":[l,i]=[ce(u,o+3,1),ce(u,o+6,1)];break;case"thisYear":[l,i]=[ce(u,0,1),ce(u+1,0,1)];break;case"lastYear":[l,i]=[ce(u-1,0,1),ce(u,0,1)];break;case"nextYear":[l,i]=[ce(u+1,0,1),ce(u+2,0,1)];break;case"yearToDate":[l,i]=[ce(u,0,1),ce(u,r,n+1)];break;case"lastDays":case"nextDays":{let s=e.days;if(typeof s!="number"||!Number.isInteger(s)||s<1)return null;[l,i]=e.period==="lastDays"?[ce(u,r,n-s+1),ce(u,r,n+1)]:[ce(u,r,n),ce(u,r,n+s)];break}default:return null}return[l,i-1]}function Kn(e,t=new Date){if(!e)return null;if(Je(e)){let r=!1,n=e.nodes.map(a=>{let o=Kn(a,t);return o!==a&&(r=!0),o});return r?{...e,nodes:n}:e}if(e.operator!=="period")return e;let u=q4(e.value,t);return{columnId:e.columnId,operator:"between",value:u??[]}}var Ro=BigInt(Number.MAX_SAFE_INTEGER),ss=-Ro,v0=/^[+-]?\d+$/;function j4(e){if(typeof e=="bigint")return e>Ro||e<ss?e:null;if(typeof e!="string"||e.length<16)return null;let t=e.trim();if(!v0.test(t))return null;let u=BigInt(t);return u>Ro||u<ss?u:null}function Y4(e,t){return typeof e=="number"&&typeof t=="number"?e-t:typeof e=="number"&&Number.isNaN(e)||typeof t=="number"&&Number.isNaN(t)?Number.NaN:e<t?-1:e>t?1:0}function Q4(e){if(typeof e=="bigint")return e;if(typeof e=="number")return Number.isSafeInteger(e)?BigInt(e):null;if(typeof e!="string")return null;let t=e.trim();return v0.test(t)?BigInt(t):null}function X4(e){let t=e.map(a=>Q4(a)),u=e.map((a,o)=>o);u.sort((a,o)=>{let l=t[a],i=t[o];return l!==null&&i!==null?l<i?-1:l>i?1:0:l!==null?-1:i!==null?1:e[a]<e[o]?-1:e[a]>e[o]?1:0});let r=new Int32Array(e.length),n=0;return u.forEach((a,o)=>{if(o>0){let l=u[o-1];(t[a]!==null?t[a]===t[l]:t[l]===null&&e[a]===e[l])||(n=o)}r[a]=n}),r}function ea(e){let t=e?.filterOperators;return!t||t.length===0?[]:t.filter(u=>u!=null&&typeof u.id=="string"&&u.id!==""&&typeof u.test=="function"&&!Lr(u.id))}function fu(e,t){return Lr(t)?null:ea(e).find(u=>u.id===t)??null}function Z4(e){return(e?.filterOperators??[]).filter(t=>t!=null&&typeof t.id=="string"&&Lr(t.id)).map(t=>t.id)}function J4(e,t){let u=[],r=n=>{if(Je(n)){n.nodes.forEach(r);return}Lr(n.operator)||fu(t.getDef(n.columnId),n.operator)||u.push(`${n.columnId}: ${n.operator}`)};return e&&r(e),u}function eh(e,t){let u=e.operandType??"text";if(u==="none")return;let r=t.trim();if(u==="number"){let n=Number(r);return r===""||Number.isNaN(n)?r:n}return r}function Oe(e){return e==null}function Kt(e){return e==null?"":String(e)}function Wt(e){let t=j4(e);if(t!==null)return t;if(e instanceof Date)return e.getTime();if(typeof e=="number")return e;if(typeof e=="boolean")return e?1:0;let u=Number(e);return Number.isNaN(u)?String(e).toLowerCase():u}function Nu(e){return String(e).toLowerCase()}function ju(e,t){let u=Wt(e),r=Wt(t);if(typeof u!="string"&&typeof r!="string")return Y4(u,r);if(typeof u=="number"&&typeof r=="string"){let o=Date.parse(r);if(!Number.isNaN(o))return u-o}else if(typeof u=="string"&&typeof r=="number"){let o=Date.parse(u);if(!Number.isNaN(o))return o-r}let n=String(u),a=String(r);return n<a?-1:n>a?1:0}var ds=new WeakMap;function cs(e){let t=ds.get(e);if(!t){t=new Set;let u=Array.isArray(e.value)?e.value:[];for(let r of u){if(Oe(r))continue;let n=Wt(r);typeof n=="number"&&Number.isNaN(n)||t.add(n)}ds.set(e,t)}return t}var hs=new WeakMap;function ms(e){let t=hs.get(e);if(!t){t=new Set;for(let u of Array.isArray(e.value)?e.value:[])Oe(u)||t.add(Nu(u));hs.set(e,t)}return t}function th(e,t,u,r){if(!r)return!1;let n=fu(r.getDef(t.columnId),t.operator);if(!n)return!1;try{return n.test(e,t.value,u)===!0}catch{return!1}}function F0(e,t,u,r,n=r!==void 0&&r.getDataType(t.columnId)==="string"){switch(t.operator){case"isnull":return Oe(e);case"isnotnull":return!Oe(e);case"=":return Oe(e)||Oe(t.value)?Oe(e)&&Oe(t.value):n?Nu(e)===Nu(t.value):Wt(e)===Wt(t.value);case"<>":return Oe(e)||Oe(t.value)?!(Oe(e)&&Oe(t.value)):n?Nu(e)!==Nu(t.value):Wt(e)!==Wt(t.value);case">":return!Oe(e)&&ju(e,t.value)>0;case">=":return!Oe(e)&&ju(e,t.value)>=0;case"<":return!Oe(e)&&ju(e,t.value)<0;case"<=":return!Oe(e)&&ju(e,t.value)<=0;case"contains":return Le(Kt(e)).includes(Le(Kt(t.value)));case"notcontains":return!Le(Kt(e)).includes(Le(Kt(t.value)));case"startswith":return Le(Kt(e)).startsWith(Le(Kt(t.value)));case"endswith":return Le(Kt(e)).endsWith(Le(Kt(t.value)));case"in":{if(Oe(e))return!1;if(n)return ms(t).has(Nu(e));let a=Wt(e);return typeof a=="number"&&Number.isNaN(a)?!1:cs(t).has(a)}case"notin":{if(Oe(e))return!0;if(n)return!ms(t).has(Nu(e));let a=Wt(e);return typeof a=="number"&&Number.isNaN(a)?!0:!cs(t).has(a)}case"between":{if(!Array.isArray(t.value)||t.value.length<2||Oe(e))return!1;let[a,o]=t.value;return ju(e,a)>=0&&ju(e,o)<=0}case"period":return!0;default:return th(e,t,u,r)}}function No(e,t,u){if(Je(t))return t.nodes.length===0?!0:t.logic==="or"?t.nodes.some(n=>No(e,n,u)):t.nodes.every(n=>No(e,n,u));let r=u.getCellValue(e,t.columnId);return F0(r,t,e,u)}function Ir(e){return Le((e??"").trim())}function Mo(e,t,u){if(u==="")return null;let r=null;for(let n of t){let a=e.getDef(n)?.lookup?.items;if(!Array.isArray(a))continue;let o=null;for(let l of a)Le(String(l.label)).includes(u)&&(o??=new Set).add(String(l.value));o&&(r??=new Map).set(n,o)}return r}function Io(e){let t=e.getOrder().filter(r=>e.getState(r)?.visible),u=t.filter(r=>ei(e.getDef(r))).map(K4);return u.length===0?t:[...t,...u]}function fs(e){if(!e||e.size===0)return;let t={};for(let[u,r]of e)t[u]=[...r];return t}function D0(e,t,u,r,n,a){r=Kn(r);let o=Ir(n),l=!!r,i=o.length>0,s=typeof a=="function";if(!l&&!i&&!s)return e.slice();let h=i?u.getOrder().filter(x=>u.getState(x)?.visible):[],m=i?Mo(u,h,o):null,c=m!==null,p=c?h.map(x=>m.get(x)??null):[],C=i?h.map(x=>{let k=u.getDef(x);return ei(k)?k:void 0}):[],E=C.some(x=>x!==void 0),D=new Uint32Array(e.length),F=0;for(let x=0;x<e.length;x++){let k=e[x],M=t[k];if(!(l&&!No(M,r,u))&&!(s&&!a(M))){if(i){let z=!1;for(let O=0;O<h.length;O++){let G=u.getCellValue(M,h[O]);if(!Oe(G)){let W=Kt(G);if(Le(W).includes(o)){z=!0;break}if(c){let Y=p[O];if(Y!==null&&Y.has(W)){z=!0;break}}}if(E){let W=C[O];if(W!==void 0){let Y=y0(W,G,M);if(Y!==null&&Le(Y).includes(o)){z=!0;break}}}}if(!z)continue}D[F++]=k}}return F===D.length?D:D.slice(0,F)}var uh=F0;var rh=class{base;overrides=new Map;idx=[];size=[];top=[];cum=[];dirty=!1;constructor(e=28){this.base=Math.max(1,e)}isUniform(){return this.overrides.size===0}getBase(){return this.base}setBase(e){let t=Math.max(1,e);return t===this.base?!1:(this.base=t,this.dirty=!0,!0)}setOverrides(e){let t=new Map;if(e)for(let[u,r]of e){if(!Number.isInteger(u)||u<0)continue;let n=Math.max(0,r);n!==this.base&&t.set(u,n)}if(t.size===this.overrides.size){let u=!0;for(let[r,n]of t)if(this.overrides.get(r)!==n){u=!1;break}if(u)return!1}return this.overrides=t,this.dirty=!0,!0}clearOverrides(){return this.setOverrides(null)}getOverrides(){return this.overrides}heightOf(e){return this.overrides.get(e)??this.base}offsetOf(e){let t=Math.max(0,e);if(this.overrides.size===0)return t*this.base;this.rebuild();let u=ps(this.idx,t);return t*this.base+(u===0?0:this.cum[u-1])}totalHeight(e){let t=Math.max(0,e);if(this.overrides.size===0)return t*this.base;this.rebuild();let u=ps(this.idx,t);return t*this.base+(u===0?0:this.cum[u-1])}indexAt(e){let t=Math.max(0,e);if(this.overrides.size===0)return Math.floor(t/this.base);this.rebuild();let u=nh(this.top,t);if(u<0)return Math.floor(t/this.base);let r=this.top[u]+this.size[u];return t<r?this.idx[u]:this.idx[u]+1+Math.floor((t-r)/this.base)}rebuild(){if(!this.dirty)return;this.dirty=!1;let e=this.overrides.size;if(this.idx=new Array(e),this.size=new Array(e),this.top=new Array(e),this.cum=new Array(e),e===0)return;let t=0;for(let r of this.overrides.keys())this.idx[t++]=r;this.idx.sort((r,n)=>r-n);let u=0;for(let r=0;r<e;r++){let n=this.idx[r],a=this.overrides.get(n);this.size[r]=a,this.top[r]=n*this.base+u,u+=a-this.base,this.cum[r]=u}}};function ps(e,t){let u=0,r=e.length;for(;u<r;){let n=u+r>>>1;e[n]<t?u=n+1:r=n}return u}function nh(e,t){let u=0,r=e.length-1,n=-1;for(;u<=r;){let a=u+r>>>1;e[a]<=t?(n=a,u=a+1):r=a-1}return n}var ah=5,oh=35e5,ih=16e6,lh=4,sh=3;function gs(e){let t=[],u=[],r=[];for(let p of e)p.state.pinned==="left"?t.push(p):p.state.pinned==="right"?r.push(p):u.push(p);let n=[],a=0;for(let p of t)n.push(a),a+=p.state.width;let o=[0],l=0;for(let p of u)l+=p.state.width,o.push(l);let i=new Array(u.length).fill(null),s=[],h=a;for(let p=0;p<u.length;p++)u[p].state.pinned==="sticky"&&(i[p]=h,h+=u[p].state.width,s.push(p));let m=new Array(r.length),c=0;for(let p=r.length-1;p>=0;p--)m[p]=c,c+=r[p].state.width;return{left:t,center:u,right:r,leftWidth:a,centerWidth:l,rightWidth:c,totalWidth:a+l+c,centerOffsets:o,leftOffsets:n,rightOffsets:m,centerStickyOffsets:i,stickyIndices:s}}var dh={left:[],center:[],right:[],leftWidth:0,centerWidth:0,rightWidth:0,totalWidth:0,centerOffsets:[0],leftOffsets:[],rightOffsets:[],centerStickyOffsets:[],stickyIndices:[]};function Cs(e,t,u){let r=0,n=u-1,a=0;for(;r<=n;){let o=r+n>>1;e[o]<=t?(a=o,r=o+1):n=o-1}return a}function no(e,t,u){return e<t?t:e>u?u:e}var S0=class{rowCount=0;heights;overscanY;overscanX;viewportWidth=0;viewportHeight=0;scrollTop=0;scrollLeft=0;maxScrollOffset=oh;leadWidth=0;headerOffset=0;footerOffset=0;maxCanvasHeight=ih;layout=dh;window;constructor(e={}){this.heights=new rh(e.rowHeight??28),this.overscanY=Math.max(0,e.overscanY??ah),this.overscanX=Math.max(0,e.overscanX??sh),this.window=this.compute()}setRowCount(e){let t=Math.max(0,e|0);return t===this.rowCount?!1:(this.rowCount=t,this.commit())}setRowHeight(e){return this.heights.setBase(e)?this.commit():!1}setRowHeights(e){return this.heights.setOverrides(e)?this.commit():!1}getRowHeightAt(e){return this.heights.heightOf(e)}getRowOffset(e){return this.heights.offsetOf(e)}getViewTop(){return this.virtualTop()}indexAtOffset(e){return this.rowCount===0?-1:Math.min(this.rowCount-1,Math.max(0,this.heights.indexAt(e)))}hasUniformRows(){return this.heights.isUniform()}setMaxScrollOffset(e){if(!Number.isFinite(e)||e<=0)return!1;let t=Math.floor(e);return t===this.maxScrollOffset?!1:(this.maxScrollOffset=t,this.commit())}setLeadWidth(e){return this.leadWidth=Math.max(0,e),!1}setChromeOffsets(e,t){let u=Number.isFinite(e)&&e>0?Math.round(e):0,r=Number.isFinite(t)&&t>0?Math.round(t):0;return this.headerOffset=u,this.footerOffset=r,!1}setMaxCanvasHeight(e){if(!Number.isFinite(e)||e<=0)return!1;let t=Math.floor(e);return t===this.maxCanvasHeight?!1:(this.maxCanvasHeight=t,this.commit())}setViewportSize(e,t){let u=Math.max(0,e),r=Math.max(0,t);return u===this.viewportWidth&&r===this.viewportHeight?!1:(this.viewportWidth=u,this.viewportHeight=r,this.commit())}setScroll(e,t){let u=Math.max(0,e),r=Math.max(0,t);return u===this.scrollTop&&r===this.scrollLeft?!1:(this.scrollTop=u,this.scrollLeft=r,this.commit())}setColumnLayout(e){return this.layout=e,this.commit()}getWindow(){return this.window}getColumnLayout(){return this.layout}getRowHeight(){return this.heights.getBase()}getScroll(){return{scrollTop:this.scrollTop,scrollLeft:this.scrollLeft}}getVisibleCenterColumns(){return this.layout.center.slice(this.window.columns.start,this.window.columns.end)}ensureVisible(e,t,u=0){let r={};if(e>=0&&e<this.rowCount){let s=this.heights.offsetOf(e),h=s+this.heights.heightOf(e),m=this.virtualTop();s-u<m?r.scrollTop=this.physicalTop(Math.max(0,s-u),Math.floor):h>m+this.viewportHeight&&(r.scrollTop=this.physicalTop(h-this.viewportHeight,Math.ceil)+this.headerOffset+this.footerOffset)}let{center:n,centerOffsets:a,leftWidth:o,rightWidth:l,stickyIndices:i}=this.layout;if(t!=null&&t>=0&&t<n.length){let s=Math.max(0,this.viewportWidth-this.leadWidth-o-l),h=0;for(let p of i)p<t&&(h+=n[p].state.width);let m=a[t],c=a[t+1];i.includes(t)&&m<this.scrollLeft||(m<this.scrollLeft+h?r.scrollLeft=Math.max(0,m-h):c>this.scrollLeft+s&&(r.scrollLeft=c-s))}return r.scrollTop===void 0&&r.scrollLeft===void 0?null:r}commit(){let e=this.compute(),t=this.window,u=e.rows.start!==t.rows.start||e.rows.end!==t.rows.end||e.rows.offsetY!==t.rows.offsetY||e.rows.totalHeight!==t.rows.totalHeight||e.rows.contentHeight!==t.rows.contentHeight||e.columns.start!==t.columns.start||e.columns.end!==t.columns.end||e.columns.offsetX!==t.columns.offsetX;return u&&(this.window=e),u}compute(){return{rows:this.computeRowWindow(),columns:this.computeColumnWindow()}}scrollGeometry(){let e=this.heights.totalHeight(this.rowCount),t=Math.min(e,this.maxCanvasHeight,this.maxScrollOffset+this.viewportHeight);return{canvas:t,physicalRange:t-this.viewportHeight,virtualRange:e-this.viewportHeight}}virtualTop(){let{physicalRange:e,virtualRange:t}=this.scrollGeometry();return e<=0||t<=e?this.scrollTop:this.scrollTop>=e-lh?t+this.footerOffset:this.scrollTop*t/e}physicalTop(e,t=Math.round){let{physicalRange:u,virtualRange:r}=this.scrollGeometry();return u<=0||r<=u?e:no(t(e*u/r),0,u)}computeRowWindow(){let e=this.heights.totalHeight(this.rowCount),{canvas:t}=this.scrollGeometry(),u=t<e;if(this.rowCount===0||this.viewportHeight===0)return{start:0,end:0,offsetY:0,totalHeight:t,contentHeight:e,compressed:u};let r=this.virtualTop(),n=this.rowCount-1,a=no(this.heights.indexAt(r),0,n),o=no(this.heights.indexAt(r+this.viewportHeight-1),0,n),l=Math.max(0,a-this.overscanY),i=Math.min(this.rowCount,o+1+this.overscanY),s=this.heights.offsetOf(l)-(r-this.scrollTop);if(u){let h=s+this.heights.offsetOf(i)-this.heights.offsetOf(l);h>t&&(s-=h-t)}return{start:l,end:i,offsetY:s,totalHeight:t,contentHeight:e,compressed:u}}computeColumnWindow(){let{center:e,centerOffsets:t,leftWidth:u,rightWidth:r}=this.layout,n=e.length;if(n===0||this.viewportWidth===0)return{start:0,end:n===0?0:n,offsetX:0};let a=Math.max(0,this.viewportWidth-u-r);if(a===0)return{start:0,end:0,offsetX:0};let o=this.scrollLeft,l=this.scrollLeft+a,i=Cs(t,o,n),s=Cs(t,l-1,n),h=Math.max(0,i-this.overscanX),m=Math.min(n,s+1+this.overscanX);return{start:h,end:m,offsetX:t[h]}}},ch=200,hh=1e3,mh=60,pt="\0blank",ta="\0nonblank";function Rt(e){return e.value===null||e.value===void 0?pt:e.label}function Or(e,t){let u=!1,r=!1;for(let n of e){let a=t.has(Rt(n));if(n.value===null||n.value===void 0){if(u=!0,a)return!1}else if(r=!0,!a)return!1}return u&&r}function ui(e,t){if(e.value===null||e.value===void 0)return t.filterBlank;if(e.label.trim()!=="")return e.label;if(e.label==="")return t.filterEmptyText;let u=Array.from(e.label).length;return u===1?t.filterSpace:t.filterSpaces.replace("{n}",String(u))}function k0(e){return e==null?pt:e instanceof Date?String(e.getTime()):typeof e=="object"?JSON.stringify(e):String(e)}function fh(e){let t={mode:"all",marked:new Map};if(!e)return t;let u=[],r=null;if(Je(e)){r=e.logic;for(let l of e.nodes){if(Je(l))return t;u.push(l)}}else u.push(e);let n=new Map,a=l=>{for(let i of Array.isArray(l)?l:[])n.set(k0(i),i)},o=(...l)=>u.every(i=>!Je(i)&&l.includes(i.operator));if(u.length===0)return t;if((r===null||r==="or")&&o("in","isnull")){for(let l of u)Je(l)||(l.operator==="in"?a(l.value):n.set(pt,null));return{mode:"some",marked:n}}if((r===null||r==="and")&&o("notin","isnotnull")){for(let l of u)Je(l)||(l.operator==="notin"?a(l.value):n.set(pt,null));return{mode:"all",marked:n}}return t}var ph=class{o;chunkSize;store;engine;listeners=new Set;search="";state;inFlight=new Set;generation=0;disposed=!1;failed=!1;started=!1;paged=!1;wanted=null;timer=null;mode;marked;constructor(e){this.o=e,this.chunkSize=Math.max(1,e.chunkSize??ch),this.store=e.store??new Map,this.engine=new S0({rowHeight:e.rowHeight,overscanY:8}),this.state=this.stateFor("");let t=fh(e.initialFilter);this.mode=t.mode,this.marked=t.marked}async start(){if(this.started)return{kind:"paged"};if(this.started=!0,this.state.totalCount!==null)return this.paged=!0,this.syncEngine(),{kind:"paged"};try{let e=await this.o.load(this.request(0,""));return this.disposed?{kind:"paged"}:Array.isArray(e)?{kind:"legacy",values:e}:(this.paged=!0,this.take("",0,e),{kind:"paged"})}catch(e){return this.o.onError?.(e),this.failed=!0,this.paged=!0,this.state.totalCount=0,this.syncEngine(),{kind:"paged"}}}context(){let e=this.o.followContext?.();return e?{filter:e.filter,searchText:e.searchText}:{}}request(e,t){return{limit:hh,skip:e*this.chunkSize,take:this.chunkSize,search:t,...this.context()}}stateFor(e){let t=this.store.get(e);return t||(t={totalCount:null,hasBlanks:!1,chunks:new Map},this.store.set(e,t)),t}rowsOf(e){return e.map(t=>{let u=t.value===null||t.value===void 0,r=u?"":t.label??this.o.formatLabel?.(t.value)??String(t.value);return{key:k0(t.value),value:t.value,label:r,blank:u}})}take(e,t,u){let r=this.stateFor(e),n=Number.isFinite(u.totalCount)?Math.max(0,u.totalCount):0;r.totalCount!==null&&r.totalCount!==n&&r.chunks.clear(),r.totalCount=n,e===""&&(r.hasBlanks=u.hasBlanks===!0),r.chunks.set(t,this.rowsOf(u.values??[])),e===this.search&&this.syncEngine(),this.emit()}syncEngine(){this.engine.setRowCount(this.getRowCount())}blankShown(){return this.search===""&&this.state.hasBlanks}lead(){return this.blankShown()?2:0}getRowCount(){return(this.state.totalCount??0)+this.lead()}isLoading(){return this.state.totalCount===null&&!this.failed}getRow(e){if(!(e<0||e>=this.getRowCount())){if(this.blankShown()){if(e===0)return{key:pt,value:null,label:"",blank:!0};if(e===1)return{key:ta,value:void 0,label:"",blank:!1,nonBlank:!0};e-=2}return this.state.chunks.get(Math.floor(e/this.chunkSize))?.[e%this.chunkSize]}}ensure(e,t){this.disposed||!this.paged||(this.wanted={start:e,end:t},this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.timer=null,this.fetchWanted()},mh))}fetchWanted(){if(!this.wanted||this.disposed)return;let e=this.lead(),t=this.state.totalCount??0,u=Math.max(0,this.wanted.start-e),r=Math.min(t-1,this.wanted.end-1-e);if(!(r<u))for(let n=Math.floor(u/this.chunkSize);n<=Math.floor(r/this.chunkSize);n++)this.state.chunks.has(n)||this.fetchChunk(this.search,n)}async fetchChunk(e,t){let u=`${e} ${t}`;if(this.inFlight.has(u))return;this.inFlight.add(u);let r=this.generation;try{let n=await this.o.load(this.request(t,e));if(this.disposed||r!==this.generation||Array.isArray(n))return;this.take(e,t,n)}catch(n){this.disposed||this.o.onError?.(n)}finally{this.inFlight.delete(u)}}setSearch(e){let t=e.trim();t!==this.search&&(this.search=t,this.generation++,this.inFlight.clear(),this.failed=!1,this.state=this.stateFor(t),this.syncEngine(),this.engine.setScroll(0,0),this.emit(),this.state.totalCount===null&&this.fetchChunk(t,0))}getSearch(){return this.search}getWindow(e,t){return this.engine.setViewportSize(1,Math.max(1,t)),this.engine.setScroll(e,0),this.engine.getWindow().rows}isNonBlankSelection(){return this.mode==="all"&&this.marked.size===1&&this.marked.has(pt)}isChecked(e){if(e.nonBlank)return this.isNonBlankSelection();let t=this.marked.has(e.key);return this.mode==="all"?!t:t}toggle(e){if(e.nonBlank){this.isNonBlankSelection()?(this.mode="all",this.marked=new Map):(this.mode="all",this.marked=new Map([[pt,null]])),this.emit();return}this.marked.has(e.key)?this.marked.delete(e.key):this.marked.set(e.key,e.value),this.emit()}selectAll(){this.mode="all",this.marked=new Map,this.emit()}clear(){this.mode="some",this.marked=new Map,this.emit()}buildFilter(e){let t=[...this.marked.entries()].filter(([n])=>n!==pt).map(([,n])=>n),u=this.marked.has(pt);if(this.mode==="all"){let n=[];return t.length>0&&n.push({columnId:e,operator:"notin",value:t}),u&&n.push({columnId:e,operator:"isnotnull"}),n.length===0?null:n.length===1?n[0]:{logic:"and",nodes:n}}if(t.length===0)return{columnId:e,operator:"isnull"};let r={columnId:e,operator:"in",value:t};return u?{logic:"or",nodes:[r,{columnId:e,operator:"isnull"}]}:r}getSelectedCount(){let e=this.state.totalCount;if(this.search!==""||e===null)return null;let t=e+(this.state.hasBlanks?1:0);return this.mode==="all"?t-this.marked.size:this.marked.size}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}emit(){if(!this.disposed)for(let e of[...this.listeners])e()}dispose(){this.disposed=!0,this.timer&&clearTimeout(this.timer),this.listeners.clear()}};function gh(e){return e==="in"||e==="isnull"||e==="isnotnull"}function B0(e){if(!Je(e))return gh(e.operator)?[e]:null;if(e.logic!=="or")return null;let t=[];for(let u of e.nodes){let r=B0(u);if(!r)return null;t.push(...r)}return t.length>0?t:null}function T0(e,t,u={}){if(!e)return null;let r=B0(e);if(!r)return null;let n=[];for(let a of t)r.some(o=>uh(a.value,o,void 0,void 0,u.text===!0))&&n.push(Rt(a));return n.length===t.length?null:n}function Ch(e){return e==null||e===""}function wh(e,t,u){let r=[],n=-1,a,o,l=i=>{n>=0&&i-n>1&&r.push({start:n,end:i-1,length:i-n}),n=-1,o=void 0};for(let i=0;i<e.length;i++){let s=e[i];if(!s||s.kind!=="data"){l(i);continue}let h=s.data,m=t(h);if(Ch(m)){l(i);continue}n>=0&&o!==void 0&&(u?u({value:m,row:h},{value:a,row:o}):Object.is(m,a))||(l(i),n=i,a=m,o=h)}return l(e.length),r}function yh(e,t){let u=0,r=e.length-1;for(;u<=r;){let n=u+r>>1,a=e[n];if(t<a.start)r=n-1;else if(t>a.end)u=n+1;else return a}return null}function R0(e,t,u,r=Number.POSITIVE_INFINITY){let n=yh(e,t);if(!n)return null;let a=Math.max(n.start,u);if(t!==a)return{role:"covered"};let o=Math.min(n.end,r);return{role:"draw",span:n,drawStart:a,drawEnd:o,clippedAbove:n.start<a,clippedBelow:n.end>o}}var ws=new WeakMap;function ys(e){let t=ws.get(e);return t===void 0&&(t=[...e.left,...e.center,...e.right].some(u=>typeof u.def.colSpan=="function"),ws.set(e,t)),t}function Eh(e,t,u){let r=new Map,n=new Map,a=new Map,o=x=>{if(typeof x.def.colSpan!="function")return 1;let k=Math.floor(u(x));return Number.isFinite(k)&&k>1?k:1},l=(x,k,M)=>{let z=x[k].state.id,O=0;for(let G=k;G<k+M;G++)O+=x[G].state.width;r.set(z,O),n.set(z,M);for(let G=k+1;G<k+M;G++)a.set(x[G].state.id,z)};for(let x of[e.left,e.right])for(let k=0;k<x.length;){let M=Math.min(o(x[k]),x.length-k);M>1&&l(x,k,M),k+=M}let i=e.center,s=new Set(e.stickyIndices),h=x=>{if(s.has(x))return 1;let k=x+1;for(;k<i.length&&!s.has(k);)k++;return k-x},m=x=>Math.min(o(i[x]),h(x)),c=t?Math.max(0,Math.min(t.start,i.length)):0,p=t?Math.max(c,Math.min(t.end,i.length)):i.length,C=null,E=0,D=0,F=0;for(;F<c;){let x=m(F);if(F+x>c){l(i,F,x),C={column:i[F],width:r.get(i[F].state.id)};for(let k=F;k<c;k++)E+=i[k].state.width;for(let k=p;k<F+x;k++)D+=i[k].state.width;F+=x;break}F+=x}for(F=Math.max(F,c);F<p;){let x=m(F);if(x>1){l(i,F,x);for(let k=p;k<F+x;k++)D+=i[k].state.width}F+=x}return r.size===0?null:{widths:r,spans:n,covered:a,lead:C,leadingDelta:E,trailingDelta:D}}function Es(e){return Array.from(e.querySelectorAll(":scope > [data-row-key]"))}function bs(e){return e.map(t=>t.getAttribute("data-row-key")).join("\0")}function bh(){return typeof matchMedia=="function"&&matchMedia("(prefers-reduced-motion: reduce)").matches}var N0=class{snapshot=null;cleanup=null;capture(e,t=Date.now()){if(!e||bh()||this.snapshot&&t-this.snapshot.at<2e3)return;let u=Es(e),r=new Map;for(let n of u)r.set(n.getAttribute("data-row-key"),n.getBoundingClientRect().top);this.snapshot={tops:r,order:bs(u),at:t}}play(e,t=250,u=Date.now()){let r=this.snapshot;if(!e||!r)return!1;if(u-r.at>=2e3)return this.snapshot=null,!1;let n=Es(e);if(bs(n)===r.order)return!1;this.snapshot=null;let a=[];for(let o of n){let l=r.tops.get(o.getAttribute("data-row-key"));if(o.style.transition="none",l===void 0){o.style.opacity="0",a.push(o);continue}let i=l-o.getBoundingClientRect().top;if(Math.abs(i)<.5){o.style.transition="";continue}o.style.transform=`translateY(${i}px)`,a.push(o)}if(a.length===0)return!1;e.offsetHeight;for(let o of a)o.style.transition=`transform ${t}ms ease, opacity ${t}ms ease`,o.style.transform="",o.style.opacity="";return this.cleanup&&clearTimeout(this.cleanup),this.cleanup=setTimeout(()=>{this.cleanup=null;for(let o of a)o.style.transition=""},t+50),!0}dispose(){this.snapshot=null,this.cleanup&&clearTimeout(this.cleanup),this.cleanup=null}},Ah={columns:"M2.5 3h11v10h-11zM6.2 3v10M9.8 3v10",chart:"M2 13.5h12M4.5 11V8M8 11V4.5M11.5 11V6.5",format:"M2 4.5h6M11 4.5h3M2 11.5h2M7 11.5h7M9.5 2.5v4M5.5 9.5v4",download:"M8 2v8m0 0L5 7m3 3 3-3M2.5 11.5v1.5a1 1 0 0 0 1 1h9a1 1 0 0 0 1-1v-1.5",newWindow:"M9.5 2.5h4v4M13.5 2.5 8 8M12 9.5v3a1 1 0 0 1-1 1H3.5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h3",popOut:"M2.5 5.5h7v7h-7zM6.5 5.5v-3h7v7h-4",dock:"M2.5 2.5h11v11h-11zM2.5 9.5h11",fullscreen:"M2.5 6V2.5H6M10 2.5h3.5V6M13.5 10v3.5H10M6 13.5H2.5V10",exitFullscreen:"M6 2.5V6H2.5M13.5 6H10V2.5M10 13.5V10h3.5M2.5 10H6v3.5",close:"M4 4l8 8M12 4l-8 8"},As="http://www.w3.org/2000/svg";function xh(e,t=14){let u=document.createElementNS(As,"svg");u.setAttribute("width",String(t)),u.setAttribute("height",String(t)),u.setAttribute("viewBox","0 0 16 16"),u.setAttribute("aria-hidden","true"),u.setAttribute("focusable","false"),u.setAttribute("class","kanuni-datagrid-icon");let r=document.createElementNS(As,"path");return r.setAttribute("d",Ah[e]),r.setAttribute("fill","none"),r.setAttribute("stroke","currentColor"),r.setAttribute("stroke-width","1.5"),r.setAttribute("stroke-linecap","round"),r.setAttribute("stroke-linejoin","round"),u.appendChild(r),u}function M0(e,t,u){let r=document.createElement("span");r.textContent=u,e.replaceChildren(xh(t),r)}function vh(e,t,u,r){let n=[];if(r==="")return n;for(let a of e)for(let o of t){let l=cu(o.def,u(a.data,o.id),a.data);l!==""&&Le(l).includes(r)&&n.push({rowKey:a.key,columnId:o.id})}return n}function ua(e,t=globalThis){let u=new Map,r=!1,n=a=>{let o=u.get(a);o!==void 0&&(t.clearTimeout(o),u.delete(a))};return{schedule(a,o){if(!r){if(n(a),e<=0){o();return}u.set(a,t.setTimeout(()=>{u.delete(a),r||o()},e))}},cancel:n,cancelAll(){for(let a of u.values())t.clearTimeout(a);u.clear()},dispose(){r=!0;for(let a of u.values())t.clearTimeout(a);u.clear()},isPending(a){return u.has(a)},get pendingCount(){return u.size}}}var Fh=class{handlers={};on(e,t){let u=this.handlers[e]??new Set;return u.add(t),this.handlers[e]=u,()=>this.off(e,t)}off(e,t){this.handlers[e]?.delete(t)}emit(e,t){let u=this.handlers[e];u&&u.forEach(r=>r(t))}clear(){this.handlers={}}};function ao(e,t){let u=(e.length-1)*t,r=Math.floor(u),n=Math.ceil(u);return e[r]+(e[n]-e[r])*(u-r)}function Dh(e,t=50){let u=0,r=new Float64Array(e.length);for(let C=0;C<e.length;C++){let E=e[C];Number.isFinite(E)&&(r[u++]=E)}if(u===0)return null;let n=r.subarray(0,u).sort(),a=ao(n,.25),o=ao(n,.5),l=ao(n,.75),i=1.5*(l-a),s=n[0],h=n[u-1],m=[],c=[];for(let C=0;C<u;C++){let E=n[C];if(E<a-i)m.push(E);else{s=E;break}}for(let C=u-1;C>=0;C--){let E=n[C];if(E>l+i)c.push(E);else{h=E;break}}let p=[];for(let C=0;p.length<t&&(C<m.length||C<c.length);C++)C<m.length&&p.push(m[C]),C<c.length&&p.length<t&&p.push(c[C]);return{count:u,q1:a,median:o,q3:l,low:s,high:h,outliers:p,outliersTruncated:m.length+c.length>p.length,min:n[0],max:n[u-1]}}var oo=["tr","en","de","fr","es","it","pt","ru","ar","zh-CN","ja","ko"],Sh=new Set(["ar"]);function I0(e){return e!==void 0&&Sh.has(e)}function kh(e){if(!e)return;if(oo.includes(e))return e;let t=e.toLowerCase(),u=oo.find(n=>n.toLowerCase()===t);if(u)return u;if(t.startsWith("zh"))return"zh-CN";let r=t.split("-")[0];return oo.find(n=>n.toLowerCase()===r)}function Bh(e,t,u,r){let n=kh(u),a=n?e[n]:void 0;return!a&&!r?t:{...t,...a,...r}}function io(e){let t=e?.series;return Array.isArray(t)&&t.some(u=>u.aggregate==="first"||u.aggregate==="last")}var L0=30,xs="Other",Th=1e4;function P0(e){return!e.series.some(t=>t.aggregate==="custom")}function G0(e){return e==null?"":String(e)}var du=864e5,Rh=60,Nh=20,Fn=2e3,lo=["day","week","month","quarter","year"],vs={day:du,week:7*du,month:30.44*du,quarter:91.31*du,year:365.25*du};function Fs(e,t){let u=new Date(e),r=u.getUTCFullYear(),n=u.getUTCMonth();switch(t){case"day":return Date.UTC(r,n,u.getUTCDate());case"week":{let a=Date.UTC(r,n,u.getUTCDate()),o=(new Date(a).getUTCDay()+6)%7;return a-o*du}case"month":return Date.UTC(r,n,1);case"quarter":return Date.UTC(r,Math.floor(n/3)*3,1);default:return Date.UTC(r,0,1)}}function Ds(e,t){let u=new Date(e),r=u.getUTCFullYear(),n=u.getUTCMonth();switch(t){case"day":return e+du;case"week":return e+7*du;case"month":return Date.UTC(r,n+1,1);case"quarter":return Date.UTC(r,n+3,1);default:return Date.UTC(r+1,0,1)}}var so=e=>e<10?`0${e}`:String(e);function Mh(e,t){let u=new Date(e),r=u.getUTCFullYear();switch(t){case"year":return String(r);case"quarter":return`${r}-Q${Math.floor(u.getUTCMonth()/3)+1}`;case"month":return`${r}-${so(u.getUTCMonth()+1)}`;default:return`${r}-${so(u.getUTCMonth()+1)}-${so(u.getUTCDate())}`}}function Ih(e){if(!(e>0)||!Number.isFinite(e))return 1;let t=10**Math.floor(Math.log10(e)),u=e/t;return(u<=1?1:u<=2?2:u<=5?5:10)*t}function O0(e,t,u){let r=Number.isFinite(t)&&Number.isFinite(u)?Math.max(0,u-t):0;if(e.kind==="date"){let l=e.unit??"auto",i,s=!1;if(l==="auto")i=lo.find(h=>r/vs[h]+1<=Rh)??"year";else for(i=l;r/vs[i]+1>Fn;){let h=lo[lo.indexOf(i)+1];if(!h)break;i=h,s=!0}return{info:{kind:"date",unit:i,adjusted:s},keyOf:h=>Number.isFinite(h)?Fs(h,i):Number.NaN,endOf:h=>Ds(h,i),labelOf:h=>Mh(h,i),keys:(h,m)=>{let c=[];if(!Number.isFinite(h)||!Number.isFinite(m))return c;for(let p=Fs(h,i);p<=m&&c.length<Fn;p=Ds(p,i))c.push(p);return c}}}let n=e.size&&e.size>0?e.size:Ih(r/Math.max(1,e.bins??Nh));(!(n>0)||!Number.isFinite(n))&&(n=1);let a=!1;for(;r/n+1>Fn;)n*=2,a=!0;let o=n;return{info:{kind:"number",size:o,adjusted:a},keyOf:l=>Number.isFinite(l)?Math.floor(l/o)*o:Number.NaN,endOf:l=>l+o,labelOf:l=>{let i=s=>String(Number(s.toPrecision(12)));return`${i(l)} \u2013 ${i(l+o)}`},keys:(l,i)=>{let s=[];if(!Number.isFinite(l)||!Number.isFinite(i))return s;let h=Math.floor(l/o)*o;for(let m=h;m<=i&&s.length<Fn;m+=o)s.push(m);return s}}}function zn(e,t){if(e==null)return Number.NaN;if(e instanceof Date)return e.getTime();if(typeof e=="number")return e;if(t==="number")return Number(e);let u=Number(e);return Number.isNaN(u)?Date.parse(String(e)):u}function Ar(e,t,u,r={}){let n=Math.max(1,u.maxCategories??L0),a=u.otherBucket!==!1,o=r.effectiveValue,l=u.series.map(J=>t.getDataType(J.columnId)),i=u.series.some(J=>J.aggregate==="custom"),s=new Map,h=null,m=0,c=0,p=!1,C=(J,ee=Number.NaN)=>({label:J,accs:u.series.map((re,B)=>Xo(re.columnId,re.aggregate,l[B],`${B}`)),seq:c++,start:ee}),E=u.categoryBucket,D=null,F=Number.POSITIVE_INFINITY,x=Number.NEGATIVE_INFINITY;if(E){for(let J=0;J<e.length;J++){let ee=e[J];if(!ee||!Bt(ee))continue;let re=t.getCellValue(ee.data,u.categoryColumnId),B=zn(o?o(ee.key,u.categoryColumnId,re):re,E.kind);Number.isFinite(B)&&(B<F&&(F=B),B>x&&(x=B))}D=O0(E,F,x)}let k=i?new Map:null;for(let J=0;J<e.length;J++){let ee=e[J];if(!ee||!Bt(ee))continue;m++;let re=t.getCellValue(ee.data,u.categoryColumnId),B=o?o(ee.key,u.categoryColumnId,re):re,U,q,Ce=Number.NaN;D&&E?(Ce=D.keyOf(zn(B,E.kind)),U=Number.isNaN(Ce)?"":Ce,q=Number.isNaN(Ce)?"":D.labelOf(Ce)):U=q=G0(B);let me=s.get(U);me||(s.size>=Th?(p=!0,h??=C(u.otherLabel??xs),me=h):(me=C(q,Ce),s.set(U,me)));for(let oe=0;oe<u.series.length;oe++){let de=u.series[oe];if(de.aggregate==="custom")continue;let ye=t.getCellValue(ee.data,de.columnId);On(me.accs[oe],o?o(ee.key,de.columnId,ye):ye,J)}if(k){let oe=k.get(me.label);oe||(oe=u.series.map(()=>[]),k.set(me.label,oe));for(let de=0;de<u.series.length;de++){let ye=u.series[de];if(ye.aggregate!=="custom")continue;let Fe=t.getCellValue(ee.data,ye.columnId);oe[de].push({row:r.effectiveRow?r.effectiveRow(ee.key,ee.data):ee.data,value:o?o(ee.key,ye.columnId,Fe):Fe})}}}let M=[...s.values()],z=M.length+(h?1:0),O=J=>(u.series.length>0?Vn(J.accs[0]):null)??Number.NEGATIVE_INFINITY,G,W;if(D){G=D.keys(F,x).map(ee=>s.get(ee)??C(D.labelOf(ee),ee));let J=s.get("");J&&G.push(J),W=null}else{let J=M;if(M.length>n){let ee=[...M].sort((re,B)=>O(B)-O(re));if(J=ee.slice(0,n),a){h??=C(u.otherLabel??xs);for(let re of ee.slice(n))for(let B=0;B<u.series.length;B++)w4(h.accs[B],re.accs[B])}}switch(u.categoryOrder??"value-desc"){case"category-asc":J=[...J].sort((ee,re)=>ee.label.localeCompare(re.label));break;case"first-seen":J=[...J].sort((ee,re)=>ee.seq-re.seq);break;default:J=[...J].sort((ee,re)=>O(re)-O(ee))}G=h?[...J,h]:J,W=h?G.length-1:null}let Y=G.map(J=>J.label),j=u.series.map((J,ee)=>{let re=new Float64Array(G.length);for(let B=0;B<G.length;B++){let U;if(J.aggregate==="custom"){let q=k?.get(G[B].label)?.[ee]??[];U=J.calculate?J.calculate(q):null}else U=Vn(G[B].accs[ee]);re[B]=U??Number.NaN}return{label:J.label??t.getDef(J.columnId)?.headerName??J.columnId,columnId:J.columnId,aggregate:J.aggregate,values:re}});return{categories:Y,series:j,truncated:D?!1:M.length>n||p,otherIndex:W,rowCount:m,categoryCount:D?G.length:z,rankingExact:!p,...Lh(D,G)}}function Lh(e,t){if(!e)return{};let u=new Float64Array(t.length),r=new Float64Array(t.length);for(let n=0;n<t.length;n++){let a=t[n].start;u[n]=a,r[n]=Number.isNaN(a)?Number.NaN:e.endOf(a)}return{bucket:e.info,bucketStarts:u,bucketEnds:r}}var Ph=2e3;function co(e){if(typeof e=="number")return e;if(e instanceof Date)return e.getTime();if(typeof e=="string"&&e.trim()!==""){let t=Number(e);if(Number.isFinite(t))return t;let u=Date.parse(e);return Number.isNaN(u)?Number.NaN:u}return Number.NaN}function Dn(e,t,u){let r=Math.max(1,u.maxPoints??Ph),n=e.filter(Bt),a=n.length>r?Math.ceil(n.length/r):1,o=a===1?n:n.filter((s,h)=>h%a===0),l=s=>t.getDef(s)?.headerName??s,i=u.series.map(s=>{let h=[],m=[],c=[],p=[];for(let C of o){let E=co(t.getCellValue(C.data,u.xColumnId)),D=co(t.getCellValue(C.data,s.columnId));if(!Number.isFinite(E)||!Number.isFinite(D))continue;let F=Number.NaN;u.sizeColumnId&&(F=co(t.getCellValue(C.data,u.sizeColumnId)),!Number.isFinite(F))||(h.push(E),m.push(D),u.sizeColumnId&&c.push(F),p.push(C.key))}return{label:s.label??l(s.columnId),columnId:s.columnId,x:Float64Array.from(h),y:Float64Array.from(m),size:u.sizeColumnId?Float64Array.from(c):null,keys:p}});return{xColumnId:u.xColumnId,xLabel:l(u.xColumnId),xTemporal:t.getDataType(u.xColumnId)==="date",sizeColumnId:u.sizeColumnId,sizeLabel:u.sizeColumnId?l(u.sizeColumnId):void 0,series:i,rowCount:n.length,sampled:a>1}}function Gh(e){return typeof e=="number"?e:typeof e=="string"&&e.trim()!==""?Number(e):Number.NaN}function Oh(e,t,u){let r=Math.max(1,u.maxCategories??L0),n=u.categoryBucket,a=null;if(n){let c=Number.POSITIVE_INFINITY,p=Number.NEGATIVE_INFINITY;for(let C of e){if(!C||!Bt(C))continue;let E=zn(t.getCellValue(C.data,u.categoryColumnId),n.kind);Number.isFinite(E)&&(E<c&&(c=E),E>p&&(p=E))}a=O0(n,c,p)}let o=new Map,l=0;for(let c of e){if(!c||!Bt(c))continue;l++;let p=t.getCellValue(c.data,u.categoryColumnId),C,E,D=Number.NaN;a&&n?(D=a.keyOf(zn(p,n.kind)),C=Number.isNaN(D)?"":D,E=Number.isNaN(D)?"":a.labelOf(D)):C=E=G0(p);let F=o.get(C);F||(F={label:E,start:D,values:[]},o.set(C,F));let x=Gh(t.getCellValue(c.data,u.valueColumnId));Number.isFinite(x)&&F.values.push(x)}let i=[...o.values()],s=i.length>r;s&&(i=i.sort((c,p)=>p.values.length-c.values.length).slice(0,r));let h=c=>a?Number.isNaN(c.start):c.label==="";i.sort((c,p)=>h(c)||h(p)?Number(h(c))-Number(h(p)):a?c.start-p.start:c.label.localeCompare(p.label));let m={categories:i.map(c=>c.label),stats:i.map(c=>Dh(c.values)),valueColumnId:u.valueColumnId,rowCount:l,truncated:s};return a&&(m.bucketStarts=Float64Array.from(i,c=>c.start),m.bucketEnds=Float64Array.from(i,c=>Number.isNaN(c.start)?Number.NaN:a.endOf(c.start))),m}var Vh=["filter","sort","grouping","columnVisibility","columnSizing","columnPinning","search"],V0=["=","<>","contains","notcontains","startswith","endswith"],ur=["=","<>",">",">=","<","<="],H0=["isnull","isnotnull"],Hh=["lastDays","nextDays"],Kh=e=>e==="string"?"text":e==="lookup"?"coded value":e==="bigint"?"large integer":e,Ss={type:"string",pattern:"^-?[0-9]+$",description:"An integer written as digits; it can be too large for a JSON number."},Iu=(e,t)=>({type:"object",...t?{description:t}:{},properties:e,required:Object.keys(e),additionalProperties:!1}),ht=(e,t)=>({enum:[...e]}),ho="A date as YYYY-MM-DD.";function zh(e){return e.map(t=>{let u=`- ${t.id}: "${t.header}" (${Kh(t.dataType)})`;if(t.description&&(u+=` \u2014 ${t.description}`),t.values&&t.values.length>0){let r=t.values.map(n=>String(n.value)===n.label?n.label:`${String(n.value)} = ${n.label}`);u+=`. Values: ${r.join(", ")}`}return u}).join(`
|
|
2
|
+
`)}function $h(e){let t=e.filter(s=>s.filterable),u=s=>t.filter(s).map(h=>h.id),r=[],n=(s,h,m,c)=>{s.length!==0&&r.push(Iu({columnId:ht(s),operator:ht(h),value:m},c))},a=u(s=>s.dataType==="string"||s.dataType==="lookup");n(a,V0,{type:"string"},"A text comparison; case is ignored.");let o=u(s=>s.dataType==="number");n(o,ur,{type:"number"}),n(o,["between"],{type:"array",items:{type:"number"},minItems:2,maxItems:2},"Inclusive range: [min, max].");let l=u(s=>s.dataType==="bigint");n(l,ur,Ss),n(l,["between"],{type:"array",items:Ss,minItems:2,maxItems:2},"Inclusive range: [min, max].");let i=u(s=>s.dataType==="date");n(i,ur,{type:"string",description:ho}),n(i,["between"],{type:"array",items:{type:"string",description:ho},minItems:2,maxItems:2},"Inclusive date range: [from, to]."),n(i,["period"],Iu({period:ht(Gr),days:{type:["integer","null"],description:"For lastDays / nextDays: how many days, today included. null otherwise."}}),'A period relative to today, which keeps its meaning tomorrow: prefer it for "this month", "last week", "the last 30 days".'),n(u(s=>s.dataType==="boolean"),["="],{type:"boolean"});for(let s of t){if(!s.values||s.values.length===0)continue;let h=s.values.map(m=>m.value);n([s.id],["=","<>"],ht(h)),n([s.id],["in"],{type:"array",items:ht(h),minItems:1},"Any of these values.")}for(let s of t)if(!(!s.operators||s.operators.length===0))for(let h of["text","number","date","none"]){let m=s.operators.filter(p=>p.operandType===h);if(m.length===0)continue;let c=h==="none"?{type:"null"}:h==="number"?{type:"number"}:h==="date"?{type:"string",description:ho}:{type:"string"};r.push(Iu({columnId:ht([s.id]),operator:ht(m.map(p=>p.id)),value:c},`This column's own operators: ${m.map(p=>`${p.id} = "${p.label}"`).join(", ")}`+(h==="none"?"; value is always null.":".")))}return n(t.map(s=>s.id),H0,{type:"null"},"Whether the cell is empty; value is always null."),r}function Wh(e){let{columns:t,features:u}=e,r={},n={};if(u.has("filter")){let s=$h(t);if(s.length>0){let h=[{$ref:"#/$defs/filterGroup"}];s.forEach((m,c)=>{n[`condition${c}`]=m,h.push({$ref:`#/$defs/condition${c}`})}),n.filterNode={anyOf:h},n.filterGroup=Iu({logic:ht(["and","or"]),nodes:{type:"array",items:{$ref:"#/$defs/filterNode"}}},"Conditions or nested groups, combined with and / or."),r.filter={description:"The WHOLE filter the grid should apply \u2014 it replaces the current one. null shows every row.",anyOf:[{$ref:"#/$defs/filterNode"},{type:"null"}]}}}let a=t.filter(s=>s.sortable).map(s=>s.id);u.has("sort")&&a.length>0&&(r.sort={type:"array",description:"The whole sort, outermost first. [] leaves the rows in data order.",items:Iu({columnId:ht(a),direction:ht(["asc","desc"])})});let o=t.filter(s=>s.groupable).map(s=>s.id);u.has("grouping")&&o.length>0&&(r.groupBy={type:"array",description:"Columns to group the rows by, outermost first. [] for no grouping.",items:ht(o)});let l={};u.has("columnVisibility")&&(l.visible={type:"boolean",description:"false hides the column."}),u.has("columnSizing")&&(l.width={type:["number","null"],description:"Width in pixels; null leaves it as it is."}),u.has("columnPinning")&&(l.pinned={description:"Keep the column against the left or right edge; null lets it scroll.",anyOf:[ht(["left","right"]),{type:"null"}]});let i=u.has("columnSizing")&&!u.has("columnVisibility")&&!u.has("columnPinning")?t.filter(s=>s.resizable):t;return Object.keys(l).length>0&&i.length>0&&(r.columns={type:"array",description:"Only the columns to change; a column not listed stays as it is.",items:Iu({columnId:ht(i.map(s=>s.id)),...l})}),u.has("search")&&(r.searchText={type:"string",description:'Free-text search across the visible columns. "" for none.'}),{$schema:"https://json-schema.org/draft/2020-12/schema",title:"Grid state",description:`The state of a data grid. Return every property; each one REPLACES that part of the grid state, so carry over whatever the user did not ask to change.
|
|
3
3
|
Columns:
|
|
4
|
-
`+Th(t),...Nu(r),...Object.keys(n).length>0?{$defs:n}:{}}}var Kt=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),ho=e=>typeof e=="string"&&!Number.isNaN(Date.parse(e)),kr=e=>{let t=typeof e=="number"?e:typeof e=="string"&&e.trim()!==""?Number(e):Number.NaN;return Number.isFinite(t)?t:null};function Mh(e,t,u){let r=e.columnId,n=e.operator,a=typeof r=="string"?t.get(r):void 0,o=c=>(u.push(`filter on ${String(r)} (${String(n)}): ${c}`),null);if(!a)return o("no such column");if(!a.filterable)return o("the column cannot be filtered");let l=a.id,i=a.dataType,s=e.value,h=typeof n=="string"?a.operators?.find(c=>c.id===n):void 0;if(h){if(h.operandType==="none")return{columnId:l,operator:h.id};if(h.operandType==="number"){let c=kr(s);return c===null?o("expected a number"):{columnId:l,operator:h.id,value:c}}return h.operandType==="date"&&!ho(s)?o("expected a YYYY-MM-DD date"):s==null||typeof s=="object"?o("expected a value"):{columnId:l,operator:h.id,value:String(s)}}if(I0.includes(n))return{columnId:l,operator:n};if(n==="in")return!Array.isArray(s)||s.length===0?o('"in" needs a non-empty list'):{columnId:l,operator:n,value:[...s]};if(i==="boolean"){if(n!=="=")return o('a yes/no column only takes "="');let c=s===!0||s==="true"?!0:s===!1||s==="false"?!1:null;return c===null?o("expected true or false"):{columnId:l,operator:n,value:c}}if(i==="number"){if(n==="between"){let f=Array.isArray(s)&&s.length===2?s.map(kr):null;return!f||f[0]===null||f[1]===null?o("expected [min, max] numbers"):{columnId:l,operator:n,value:f}}if(!ur.includes(n))return o("not an operator for numbers");let c=kr(s);return c===null?o("expected a number"):{columnId:l,operator:n,value:c}}if(i==="bigint"){let c=C=>{let A=typeof C=="number"&&Number.isSafeInteger(C)?String(C):typeof C=="string"?C.trim():null;return A!==null&&/^[+-]?\d+$/.test(A)?A:null};if(n==="between"){let C=Array.isArray(s)&&s.length===2?s.map(c):null;return!C||C[0]===null||C[1]===null?o("expected [min, max] integers"):{columnId:l,operator:n,value:C}}if(!ur.includes(n))return o("not an operator for integers");let f=c(s);return f===null?o("expected an integer written as digits"):{columnId:l,operator:n,value:f}}if(i==="date"){if(n==="period"){let c=Kt(s)?s:null,f=c?.period;if(!f||!Pr.includes(f))return o("unknown period");if(kh.includes(f)){let C=kr(c.days);return C===null||C<1||!Number.isInteger(C)?o(`${f} needs a whole number of days`):{columnId:l,operator:n,value:{period:f,days:C}}}return{columnId:l,operator:n,value:{period:f}}}return n==="between"?!Array.isArray(s)||s.length!==2||!s.every(ho)?o("expected [from, to] dates"):{columnId:l,operator:n,value:[s[0],s[1]]}:ur.includes(n)?ho(s)?{columnId:l,operator:n,value:s}:o("expected a YYYY-MM-DD date"):o("not an operator for dates")}if(!M0.includes(n))return o("not an operator for text");if(s==null||typeof s=="object")return o("expected a value");let m=a.values?.find(c=>String(c.value)===String(s));return{columnId:l,operator:n,value:m&&(n==="="||n==="<>")?m.value:String(s)}}function L0(e,t,u,r){if(!Kt(e))return u.push("filter: a condition that is not an object"),null;if(Array.isArray(e.nodes)){if(r>8)return u.push("filter: groups nested more than 8 deep"),null;let n=e.logic==="or"?"or":"and";e.logic!=="and"&&e.logic!=="or"&&u.push('filter: a group without and/or, read as "and"');let a=e.nodes.map(o=>L0(o,t,u,r+1)).filter(o=>o!==null);return a.length===0?null:a.length===1?a[0]:{logic:n,nodes:a}}return Mh(e,t,u)}function Ih(e,t){let u=[],r=e;if(typeof r=="string")try{r=JSON.parse(r)}catch{return{state:{},dropped:["the answer is not valid JSON"]}}if(!Kt(r))return{state:{},dropped:["the answer is not an object"]};let{features:n}=t,a=new Map(t.columns.map(l=>[l.id,l])),o={};if(n.has("filter")&&"filter"in r&&(o.filter=r.filter===null?null:L0(r.filter,a,u,0)),n.has("sort")&&"sort"in r)if(!Array.isArray(r.sort))u.push("sort: not a list");else{let l=new Set;o.sort=[];for(let i of r.sort){let s=Kt(i)&&typeof i.columnId=="string"?a.get(i.columnId):void 0,h=Kt(i)?i.direction:void 0;!s||!s.sortable?u.push(`sort by ${Kt(i)?String(i.columnId):"?"}: not a sortable column`):h!=="asc"&&h!=="desc"?u.push(`sort by ${s.id}: direction must be asc or desc`):l.has(s.id)||(l.add(s.id),o.sort.push({columnId:s.id,direction:h}))}}if(n.has("grouping")&&"groupBy"in r)if(!Array.isArray(r.groupBy))u.push("groupBy: not a list");else{let l=[];for(let i of r.groupBy){let s=typeof i=="string"?a.get(i):void 0;!s||!s.groupable?u.push(`group by ${String(i)}: not a groupable column`):l.includes(s.id)||l.push(s.id)}o.groupBy=l}if((n.has("columnVisibility")||n.has("columnSizing")||n.has("columnPinning"))&&"columns"in r)if(!Array.isArray(r.columns))u.push("columns: not a list");else{let l=new Map;for(let i of r.columns){let s=Kt(i)&&typeof i.columnId=="string"?a.get(i.columnId):void 0;if(!s||!Kt(i)){u.push(`column ${Kt(i)?String(i.columnId):"?"}: no such column`);continue}let h={columnId:s.id};if(n.has("columnVisibility")&&"visible"in i&&(typeof i.visible=="boolean"?h.visible=i.visible:u.push(`column ${s.id}: visible must be true or false`)),n.has("columnSizing")&&i.width!==null&&i.width!==void 0){let m=kr(i.width);m===null||m<=0?u.push(`column ${s.id}: width must be a positive number`):s.resizable?h.width=m:u.push(`column ${s.id}: cannot be resized`)}n.has("columnPinning")&&"pinned"in i&&(i.pinned==="left"||i.pinned==="right"||i.pinned===null?h.pinned=i.pinned:u.push(`column ${s.id}: pinned must be left, right or null`)),l.set(s.id,{...l.get(s.id),...h})}o.columns=[...l.values()]}return n.has("search")&&"searchText"in r&&(typeof r.searchText=="string"?o.searchText=r.searchText:r.searchText===null?o.searchText="":u.push("searchText: not text")),{state:o,dropped:u}}function P0(e,t=new Set){if(Je(e))for(let u of e.nodes)P0(u,t);else t.add(e.columnId);return t}function Lh(e){if(typeof e=="function")return e;let t=e;return u=>u[t]}function Xe(e,t,u){return{kind:"data",key:t,sourceIndex:u,data:e}}var G0=class{nodes=[];rows=null;invalidate(){this.nodes=[],this.rows=null}invalidateSourceIndex(e){e>=0&&e<this.nodes.length&&(this.nodes[e]=void 0)}rebase(e,t){if(this.rows===null||this.nodes.length!==e.length){this.rows=e,this.nodes=new Array(e.length);return}this.rows=e;for(let u of t)this.invalidateSourceIndex(u)}project(e,t,u){this.rows!==t&&(this.nodes=new Array(t.length),this.rows=t);let r=this.nodes,n=new Array(e.length);for(let a=0;a<e.length;a++){let o=e[a],l=r[o];if(l===void 0){let i=t[o];l=Xe(i,u(i),o),r[o]=l}n[a]=l}return n}},Ph="\0nil";function Gh(e){return e.map(t=>t==null?Ph:String(t)).join("")}function xs(){return{key:"",path:[],level:-1,label:"",value:null,count:0,expanded:!0,childCount:0,childCountKnown:!1,blocks:new Map}}function Oh(e,t,u){return e.blocks.get(Math.floor(t/u))?.[t%u]}function $n(e,t,u){let r=u?.get(e);if(r!==void 0)return r;let n=e.childCountKnown?e.childCount:1;for(let a of e.blocks.values())for(let o of a)o&&$t(o)&&o.expanded&&(n+=$n(o,t,u));return u?.set(e,n),n}function $t(e){return e.kind!=="data"}function vs(e,t){let{blockSize:u,columnIds:r}=t,n=new Map,a=$n(e,u,n),o=t.range?Math.max(0,t.range.start):0,l=t.range?Math.min(a,t.range.end):a,i=new Array(a),s=[],h=[],m=t.failedSlots,c=t.staleSlots,f=new Set,C=0,A=S=>{if(!S.childCountKnown){C>=o&&C<l&&(m?.has(`${S.key}@0`)?h.push(C):f.has(`${S.key}@0`)||(f.add(`${S.key}@0`),s.push({nodeKey:S.key,path:S.path,childIndex:0}))),C++;return}for(let F=0;F<S.childCount;F++){if(C>=l)return;let x=Oh(S,F,u);if(x!==void 0&&c&&C>=o){let k=`${S.key}@${Math.floor(F/u)}`;c.has(k)&&!m?.has(k)&&!f.has(k)&&(f.add(k),s.push({nodeKey:S.key,path:S.path,childIndex:F}))}if(x===void 0){if(C>=o){let k=`${S.key}@${Math.floor(F/u)}`;m?.has(k)?h.push(C):f.has(k)||(f.add(k),s.push({nodeKey:S.key,path:S.path,childIndex:F}))}C++;continue}if(!$t(x)){C>=o&&(i[C]=x),C++;continue}if(C>=o&&x.record)i[C]={kind:"data",key:x.record.key,sourceIndex:x.record.sourceIndex,data:x.record.data,tree:{depth:x.level,hasChildren:!0,expanded:x.expanded,ancestorOnly:!1}};else if(C>=o){let k={kind:"group",key:x.key,columnId:r[x.level]??"",value:x.value,label:x.label,count:x.count,level:x.level,expanded:x.expanded,...x.aggregates?{aggregates:x.aggregates}:{}};i[C]=k}if(C++,x.expanded){let k=$n(x,u,n);C+k<=o?C+=k:A(x)}}};return A(e),{nodes:i,pending:s,failed:h}}var mo=class extends Error{constructor(){super("[datagrid] export cancelled"),this.name="ExportCancelled"}},Hh=100,Vh=100;function zh(e,t){return JSON.stringify({sort:e.sort,filter:e.filter,searchText:e.searchText,group:t,summaries:e.summaries})}var Fs=class{mode="remote";source;keyGetter;blockSize;maxBlocks;group;groupColumnIds;root=xs();expandedByDefault=!1;toggled=new Set;onError;debugMode;tree;blocks=new Map;inFlight=new Map;failedBlocks=new Set;failedSlots=new Set;failedRows=new Set;staleBlocks=new Set;staleSlots=new Set;countStale=!1;treeInFlight=new Map;currentKey="";generation=0;clock=0;distinctCache=new Map;distinctStores=new Map;distinctInFlight=new Map;summaries={};visibleCount=0;totalCount=0;countKnown=!1;disposed=!1;constructor(e,t){this.source=e,this.keyGetter=t.keyGetter,this.blockSize=Math.max(1,t.blockSize??Hh),this.maxBlocks=Math.max(1,t.maxBlocks??Vh),this.group=t.group,this.groupColumnIds=t.groupColumnIds??[],this.onError=t.onError,this.debugMode=t.debugMode??!1,this.tree=t.tree}isTree(){return this.tree!==void 0}syncTreeExpansion(e){for(let t of e.blocks.values())for(let u of t)u&&$t(u)&&u.record&&(u.expanded=this.tree.isExpanded(u.record.key),this.syncTreeExpansion(u))}getTotalCount(){return this.totalCount}invalidate(){this.forgetFailures(),this.inFlight.clear(),this.treeInFlight.clear(),this.staleBlocks=new Set(this.blocks.keys()),this.countStale=this.countKnown,this.staleSlots=new Set,this.collectTreeSlots(this.root,this.staleSlots),this.distinctCache.clear(),this.distinctStores.clear(),this.generation++}collectTreeSlots(e,t){for(let[u,r]of e.blocks){t.add(`${e.key}@${u}`);for(let n of r)n&&$t(n)&&this.collectTreeSlots(n,t)}}dispose(){this.disposed=!0,this.blocks.clear(),this.staleBlocks.clear(),this.inFlight.clear(),this.treeInFlight.clear(),this.distinctCache.clear(),this.distinctStores.clear(),this.distinctInFlight.clear(),this.resetTree()}setGrouping(e,t){this.group=e&&e.length>0?e:void 0,this.groupColumnIds=t,this.resetTree(),this.expandedByDefault=!1,this.toggled.clear(),this.treeInFlight.clear(),this.inFlight.clear(),this.generation++}isGrouped(){return(this.group?.length??0)>0}toggleGroupPath(e){let t=this.findNode(e);return t?(t.expanded=!t.expanded,t.expanded===this.expandedByDefault?this.toggled.delete(e):this.toggled.add(e),!0):!1}setExpandedPaths(e){this.expandedByDefault=!1,this.toggled=new Set(e),this.applyExpansion(this.root)}expandAllPaths(){this.expandedByDefault=!0,this.toggled.clear(),this.applyExpansion(this.root)}getExpansion(){return{expandedByDefault:this.expandedByDefault,toggled:[...this.toggled]}}setExpansion(e,t){this.expandedByDefault=e,this.toggled=new Set(t),this.applyExpansion(this.root)}isPathExpanded(e){return this.expandedByDefault!==this.toggled.has(e)}applyExpansion(e){for(let t of e.blocks.values())for(let u of t)u&&$t(u)&&(u.expanded=this.isPathExpanded(u.key),this.applyExpansion(u))}findNode(e,t=this.root){if(t.key===e)return t;for(let u of t.blocks.values())for(let r of u)if(r&&$t(r)){let n=this.findNode(e,r);if(n)return n}return null}resetTree(){this.root=xs(),this.failedSlots.clear(),this.failedRows.clear(),this.staleSlots.clear()}forgetFailures(){this.failedBlocks.clear(),this.failedSlots.clear(),this.failedRows.clear()}isLoadFailed(e){if(e<0)return!1;if(this.isGrouped()||this.isTree())return this.failedRows.has(e);if(!this.countKnown)return this.failedBlocks.has(0)&&e<Math.max(1,this.visibleCount);let t=Math.floor(e/this.blockSize);return this.failedBlocks.has(t)&&!this.blocks.has(t)}retryFailed(){return this.failedBlocks.size===0&&this.failedSlots.size===0?!1:(this.forgetFailures(),!0)}async loadAllRows(e,t){if(this.isGrouped()||this.isTree())throw new Error("[datagrid] cannot export a server-grouped grid: the rows live in a tree the server expands on demand. Clear the grouping and export the flat result, or produce the file on the server.");let u=[],r=Math.max(1,t.pageSize),n=Number.POSITIVE_INFINITY;for(;u.length<n;){if(t.isCancelled?.()||this.disposed)throw new mo;let a=await this.source.load({skip:u.length,take:r,sort:e.sort,filter:e.filter,searchText:e.searchText});if(n=a.totalCount,n>t.maxRows)throw new Error(`[datagrid] the export would cover ${n.toLocaleString("en-US")} rows, above the ${t.maxRows.toLocaleString("en-US")} limit. Raise \`remote.exportMaxRows\` if the machine can hold that much, narrow the filter, or build the file on the server.`);if(a.rows.length===0)break;for(let o of a.rows)u.push(Xe(o,this.keyGetter(o),u.length));t.onProgress?.(u.length,n)}return u}async*streamRows(e,t){if(this.isGrouped()||this.isTree())throw new Error("[datagrid] cannot export a server-grouped grid: the rows live in a tree the server expands on demand. Clear the grouping and export the flat result, or produce the file on the server.");let u=l=>new Error(`[datagrid] the export would cover more than ${t.maxRows.toLocaleString("en-US")} rows (\`remote.exportMaxRows\`). Raise it \u2014 \`Infinity\` removes the cap \u2014 narrow the filter, or build the file on the server. Rows counted: ${l.toLocaleString("en-US")}.`),r=0,n=l=>l.map(i=>Xe(i,this.keyGetter(i),r++));if(this.source.exportRows){let l=this.source.exportRows({sort:e.sort,filter:e.filter,searchText:e.searchText,columnIds:t.columnIds},t.signal);for await(let i of l){if(t.signal.aborted||this.disposed)throw new mo;if(r+i.length>t.maxRows)throw u(r+i.length);let s=n(i);t.onProgress?.(r,null),yield s}return}let a=Math.max(1,t.pageSize),o=Number.POSITIVE_INFINITY;for(;r<o;){if(t.signal.aborted||this.disposed)throw new mo;let l=await this.source.load({skip:r,take:a,sort:e.sort,filter:e.filter,searchText:e.searchText});if(o=l.totalCount,o>t.maxRows)throw u(o);if(l.rows.length===0)break;let i=n(l.rows);t.onProgress?.(r,o),yield i}}patchRows(e){if(e.length===0)return 0;let t=new Map;for(let a of e)t.set(this.keyGetter(a),a);let u=0,r=a=>{for(let o=0;o<a.length;o++){let l=a[o];if(!l)continue;let i=t.get(l.key);i!==void 0&&(a[o]=Xe(i,l.key,l.sourceIndex),u++)}};for(let a of this.blocks.values())r(a.nodes);let n=a=>{for(let o of a.blocks.values())for(let l=0;l<o.length;l++){let i=o[l];if(!i)continue;if($t(i)){n(i);continue}let s=t.get(i.key);s!==void 0&&(o[l]=Xe(s,i.key,i.sourceIndex),u++)}};return n(this.root),u}getSummaries(){return this.summaries}supportsDistinctValues(){return typeof this.source.loadDistinctValues=="function"}loadDistinctPage(e){let t=this.source.loadDistinctValues;return t?t.call(this.source,e):Promise.resolve([])}distinctStore(e,t){let u=`${e}\0${t}`,r=this.distinctStores.get(u);return r||(r=new Map,this.distinctStores.set(u,r)),r}async loadDistinctValues(e,t){let u=this.source.loadDistinctValues;if(!u)return[];let r=`${e}@${t}`,n=this.distinctCache.get(r);if(n)return n;let a=this.distinctInFlight.get(r);if(a)return a;let o=this.generation,l=u.call(this.source,{columnId:e,limit:t}).then(i=>{let s=Array.isArray(i)?i:i.values??[];return!this.disposed&&o===this.generation&&this.distinctCache.set(r,s),s}).catch(i=>(this.onError?.(i),this.debugMode&&console.error("[datagrid] loadDistinctValues failed",i),[])).finally(()=>{this.distinctInFlight.delete(r)});return this.distinctInFlight.set(r,l),l}async getRows(e,t){let u=zh(t,this.group);if(u!==this.currentKey&&(this.currentKey=u,this.forgetFailures(),this.blocks.clear(),this.staleBlocks.clear(),this.countStale=!1,this.inFlight.clear(),this.treeInFlight.clear(),this.resetTree(),this.countKnown=!1,this.summaries={},this.generation++),this.isGrouped()||this.isTree())return this.getGroupedRows(t);(!this.countKnown||this.countStale)&&await this.fetchBlock(0,t);let r=t.range??{start:0,end:this.blockSize},n=Math.max(0,Math.floor(r.start/this.blockSize)),a=Math.max(n,Math.floor(Math.max(0,r.end-1)/this.blockSize)),o=[];for(let l=n;l<=a;l++)this.blocks.has(l)&&(this.blocks.get(l).touched=++this.clock),(!this.blocks.has(l)||this.staleBlocks.has(l))&&o.push(l);return o.length>0&&await Promise.all(o.map(l=>this.fetchBlock(l,t))),this.snapshot()}async getGroupedRows(e){let t=e.range,u=this.tree?64:(this.group?.length??0)+2,r=this.generation;for(let l=0;l<u&&!(this.disposed||r!==this.generation);l++){if(this.tree&&this.syncTreeExpansion(this.root),!this.root.childCountKnown){if(await this.loadChildren(this.root,0,e),!this.root.childCountKnown)break;continue}let{pending:i}=vs(this.root,{blockSize:this.blockSize,columnIds:this.groupColumnIds,range:t,failedSlots:this.failedSlots,staleSlots:this.staleSlots});if(i.length===0)break;await Promise.all(i.map(s=>{let h=this.findNode(s.nodeKey);return h?this.loadChildren(h,s.childIndex,e):Promise.resolve()}))}this.tree&&this.syncTreeExpansion(this.root);let{nodes:n,failed:a}=vs(this.root,{blockSize:this.blockSize,columnIds:this.groupColumnIds,range:t,failedSlots:this.failedSlots});this.failedRows=new Set(a);let o=$n(this.root,this.blockSize);return this.visibleCount=o,{nodes:n,visibleCount:o,totalCount:this.totalCount}}loadChildren(e,t,u){let r=Math.floor(t/this.blockSize),n=`${e.key}@${r}`;if(e.blocks.has(r)&&!this.staleSlots.has(n)||this.failedSlots.has(n))return Promise.resolve();let a=this.treeInFlight.get(n);if(a)return a;let o=this.loadChildrenBlock(e,r,u).finally(()=>{this.treeInFlight.get(n)===o&&this.treeInFlight.delete(n)});return this.treeInFlight.set(n,o),o}async loadChildrenBlock(e,t,u){let r=this.generation,n=this.group?.length??0,a=e.path.length>=n,o=this.tree?{skip:t*this.blockSize,take:this.blockSize,sort:u.sort,filter:u.filter,searchText:u.searchText,parentKey:e.record?e.record.key:null,...e===this.root?{summaries:u.summaries}:{}}:{skip:t*this.blockSize,take:this.blockSize,sort:u.sort,filter:u.filter,searchText:u.searchText,group:this.group,groupKeys:[...e.path],...e.path.length===0||!a?{summaries:u.summaries}:{}};try{let l=await this.source.load(o);if(this.disposed||r!==this.generation)return;l.summaries&&e===this.root&&(this.summaries=l.summaries);let i=t*this.blockSize,s=new Map;for(let m of e.blocks.values())for(let c of m)c&&$t(c)&&s.set(c.key,c);let h=this.tree?l.rows.map((m,c)=>this.reuse(s,this.treeChild(e,m,i+c))):a?l.rows.map((m,c)=>Xe(m,this.keyGetter(m),i+c)):(l.groups??[]).map(m=>{let c=[...e.path,m.value],f=Gh(c);return this.reuse(s,{key:f,path:c,level:e.level+1,label:m.label??(m.value==null?"":String(m.value)),value:m.value,count:m.count,...m.aggregates?{aggregates:m.aggregates}:{},expanded:this.isPathExpanded(f),childCount:0,childCountKnown:!1,blocks:new Map})});e.blocks.set(t,h),this.staleSlots.delete(`${e.key}@${t}`),e.childCount=l.totalCount,e.childCountKnown=!0,e===this.root&&(this.totalCount=l.totalCount,this.countKnown=!0)}catch(l){this.debugMode&&console.error("[datagrid] remote group load failed",e.key,l),!this.disposed&&r===this.generation&&this.failedSlots.add(`${e.key}@${t}`),this.onError?.(l)}}treeChild(e,t,u){let r=this.keyGetter(t),n=e.level+1;return this.tree.hasChildren(t)?{key:String(r),path:[...e.path,r],level:n,label:"",value:r,count:0,expanded:this.tree.isExpanded(r),childCount:0,childCountKnown:!1,blocks:new Map,record:{key:r,data:t,sourceIndex:u}}:{...Xe(t,r,u),tree:{depth:n,hasChildren:!1,expanded:!1,ancestorOnly:!1}}}reuse(e,t){if(!$t(t))return t;let u=e.get(t.key);return u?(u.label=t.label,u.value=t.value,u.count=t.count,u.aggregates=t.aggregates,u.record=t.record,u.expanded=t.expanded,u):t}snapshot(){if(!this.countKnown&&this.failedBlocks.has(0)&&this.visibleCount===0)return{nodes:new Array(1),visibleCount:1,totalCount:0};let e=new Array(this.visibleCount);for(let[t,u]of this.blocks){let r=t*this.blockSize;for(let n=0;n<u.nodes.length;n++){let a=r+n;a<this.visibleCount&&(e[a]=u.nodes[n])}}return{nodes:e,visibleCount:this.visibleCount,totalCount:this.totalCount}}fetchBlock(e,t){if(this.disposed||this.failedBlocks.has(e)||this.blocks.has(e)&&!this.staleBlocks.has(e))return Promise.resolve();let u=this.inFlight.get(e);if(u)return u;let r=this.loadBlock(e,t).finally(()=>{this.inFlight.get(e)===r&&this.inFlight.delete(e)});return this.inFlight.set(e,r),r}async loadBlock(e,t){let u=this.generation,r={skip:e*this.blockSize,take:this.blockSize,sort:t.sort,filter:t.filter,searchText:t.searchText,group:this.group,summaries:t.summaries};try{let n=await this.source.load(r);if(this.disposed||u!==this.generation)return;n.summaries&&(this.summaries=n.summaries);let a=e*this.blockSize,o=n.rows.map((l,i)=>Xe(l,this.keyGetter(l),a+i));this.blocks.set(e,{nodes:o,touched:++this.clock}),this.staleBlocks.delete(e),this.countStale=!1,this.evict(),this.visibleCount=n.totalCount,this.totalCount=n.totalCount,this.countKnown=!0}catch(n){this.debugMode&&console.error("[datagrid] remote block load failed",e,n),!this.disposed&&u===this.generation&&this.failedBlocks.add(e),this.onError?.(n)}}evict(){if(this.blocks.size<=this.maxBlocks)return;let e=[...this.blocks.entries()].sort((u,r)=>u[1].touched-r[1].touched),t=this.blocks.size-this.maxBlocks;for(let u=0;u<t;u++)this.blocks.delete(e[u][0]),this.staleBlocks.delete(e[u][0])}};var Kh=e=>`__detail__${String(e)}`;function $h(e,t){let{expandedKeys:u,expandedByDefault:r=!1}=t,n=Math.max(1,t.height);if(!r&&u.size===0)return e;let a=r?e.length:u.size,o=new Array(e.length+a),l=0;for(let i of e)o[l++]=i,!(i.kind!=="data"||!(r?!u.has(i.key):u.has(i.key)))&&(o[l++]={kind:"detail",key:Kh(i.key),parentKey:i.key,data:i.data,height:n});return o.length=l,o}var O0=260,Ds=e=>e===null?"__editform__new":`__editform__${String(e)}`;function Wh(e,t){let{rowKey:u,atTop:r=!1}=t;if(u===null)return e;let n=Math.max(1,t.height),a=e.findIndex(i=>i.kind==="data"&&i.key===u);if(r)return[{kind:"editform",key:Ds(u),parentKey:u,data:a<0?void 0:e[a].data,height:n},...e];if(a<0)return e;let o={kind:"editform",key:Ds(u),parentKey:u,data:e[a].data,height:n},l=new Array(e.length+1);for(let i=0;i<=a;i++)l[i]=e[i];l[a+1]=o;for(let i=a+1;i<e.length;i++)l[i+1]=e[i];return l}var _h=e=>`__message__${String(e)}`;function Uh(e,t){if(t.rowKeys.size===0)return e;let u=Math.max(1,t.height),r=[];for(let n of e){if(r.push(n),n.kind!=="data"||!t.rowKeys.has(String(n.key)))continue;let a={kind:"message",key:_h(n.key),parentKey:n.key,data:n.data,height:u};r.push(a)}return r}var qu=(e,t)=>`${String(e)}\0${t}`,qh=class{cells=new Map;byRow=new Map;removed=new Set;inserted=new Map;writeCell(e,t){this.cells.set(e,t);let u=this.byRow.get(t.rowKey);u||(u=new Map,this.byRow.set(t.rowKey,u)),u.set(t.columnId,t)}dropCell(e){let t=this.cells.get(e);if(!t)return!1;this.cells.delete(e);let u=this.byRow.get(t.rowKey);return u&&(u.delete(t.columnId),u.size===0&&this.byRow.delete(t.rowKey)),!0}clearCells(){this.cells.clear(),this.byRow.clear()}set(e,t,u,r){let n=qu(e,t),a=this.cells.get(n);if(a){if(Object.is(a.oldValue,u)){this.dropCell(n);return}a.newValue=u;return}Object.is(r,u)||this.writeCell(n,{rowKey:e,columnId:t,oldValue:r,newValue:u})}get(e,t){return this.cells.get(qu(e,t))}isDirty(e,t){return t!==void 0?this.cells.has(qu(e,t)):this.removed.has(e)||this.inserted.has(e)?!0:this.byRow.has(e)}effectiveValue(e,t,u){if(this.cells.size===0)return u;let r=this.cells.get(qu(e,t));return r?r.newValue:u}revertCell(e,t){return this.dropCell(qu(e,t))}revertRow(e){let t=this.removed.delete(e)||this.inserted.delete(e),u=this.byRow.get(e);if(u)for(let r of[...u.keys()])this.dropCell(qu(e,r)),t=!0;return t}markRemoved(e){this.inserted.delete(e),this.removed.add(e)}markInserted(e,t){this.inserted.set(e,t)}isRemoved(e){return this.removed.has(e)}hasChanges(){return this.cells.size>0||this.removed.size>0||this.inserted.size>0}getChangeCount(){return this.cells.size+this.removed.size+this.inserted.size}getCellChanges(){return[...this.cells.values()]}applyPendingTo(e,t){if(this.cells.size===0)return t;let u=this.byRow.get(e);if(!u)return t;let r={...t};for(let n of u.values())r[n.columnId]=n.newValue;return r}getChanges(e){let t=new Map;for(let u of this.cells.values()){let r=t.get(u.rowKey);r||(r={rowKey:u.rowKey,type:"update",values:{},oldValues:{},row:e?.(u.rowKey)},t.set(u.rowKey,r)),r.values[u.columnId]=u.newValue,r.oldValues[u.columnId]=u.oldValue}for(let[u,r]of this.inserted){let n=t.get(u)?.values;t.set(u,{rowKey:u,type:"insert",values:n?{...r,...n}:{...r},oldValues:{}})}for(let u of this.removed)t.set(u,{rowKey:u,type:"remove",values:{},oldValues:{},row:e?.(u)});return[...t.values()]}clear(){this.clearCells(),this.removed.clear(),this.inserted.clear()}retainKeys(e){let t=!1;for(let u of[...this.cells.keys()]){let r=this.cells.get(u);r&&!e.has(r.rowKey)&&(this.dropCell(u),t=!0)}for(let u of this.removed)e.has(u)||(this.removed.delete(u),t=!0);return t}},jh=class{undoStack=[];redoStack=[];limit;applying=!1;constructor(e={}){this.limit=Math.max(1,e.limit??100)}push(e){this.applying||(this.undoStack.push(e),this.undoStack.length>this.limit&&this.undoStack.shift(),this.redoStack=[])}canUndo(){return this.undoStack.length>0}canRedo(){return this.redoStack.length>0}undo(){let e=this.undoStack.pop();if(!e)return null;this.applying=!0;try{e.undo()}finally{this.applying=!1}return this.redoStack.push(e),e}redo(){let e=this.redoStack.pop();if(!e)return null;this.applying=!0;try{e.redo()}finally{this.applying=!1}return this.undoStack.push(e),e}peekUndo(){return this.undoStack[this.undoStack.length-1]}peekRedo(){return this.redoStack[this.redoStack.length-1]}getDepth(){return{undo:this.undoStack.length,redo:this.redoStack.length}}clear(){this.undoStack=[],this.redoStack=[]}},ti={ok:"OK",cancel:"Cancel",apply:"Apply",close:"Close",clear:"Clear",save:"Save",search:"Search\u2026",selectAll:"Select all",showAll:"Show all",remove:"Remove",none:"None",toolbarSearch:"Search\u2026",exportMenu:"Export",exportCsv:"Export to CSV",exportExcel:"Export all data to Excel",exportExcelSelected:"Export selected rows to Excel",exportPdf:"Export to PDF",exporting:"Exporting\u2026",columns:"Columns",hiddenColumns:"Hidden columns",noHiddenColumns:"No hidden columns.",sortAsc:"Sort A \u2192 Z",sortDesc:"Sort Z \u2192 A",clearSort:"Clear sorting",cardSortBy:"Sort by",groupByColumn:"Group by this column",ungroupColumn:"Remove from grouping",showGroupPanel:"Show group panel",hideGroupPanel:"Hide group panel",showFooter:"Show footer",hideFooter:"Hide footer",showGroupFooters:"Show group footers",hideGroupFooters:"Hide group footers",hideColumn:"Hide this column",fieldChooser:"Field chooser\u2026",bestFit:"Best fit",bestFitAll:"Best fit (all columns)",pinRowTop:"Pin row to top",pinRowBottom:"Pin row to bottom",unpinRow:"Unpin row",findLabel:"Find in grid",findPrevious:"Previous match",findNext:"Next match",findClose:"Close find",findCount:"{n} of {count}",findNone:"No matches",renameColumn:"Rename column",fixedPosition:"Set fixed position",pinLeft:"Left",pinRight:"Right",pinSticky:"Sticky",unpin:"Unfix",moveLeft:"Move to the left",moveRight:"Move to the right",filterPlaceholder:"Filter\u2026",filterColumnAria:"Filter {column}",filterOperatorDefault:"Default",filterOperatorAria:"Filter operator for {column}",filterSelectAll:"Select all",filterBlank:"(Blanks)",filterNonBlank:"(Non-blanks)",filterEmptyText:"(empty text)",filterSpace:"(1 space)",filterSpaces:"({n} spaces)",filterNoMatch:"No matching values",filterLoading:"Loading values\u2026",filterTruncated:"Showing the first values only \u2014 search to find the rest.",filterRemove:"Remove the filter",filterToggle:"Apply the filter",filterEditBuilder:"Edit the filter",filterNone:"No filter",filterActive:"Filter active",opEquals:"is",opNotEquals:"is not",opGreater:">",opGreaterOrEqual:"\u2265",opLess:"<",opLessOrEqual:"\u2264",opContains:"contains",opNotContains:"does not contain",opStartsWith:"starts with",opEndsWith:"ends with",opIsBlank:"is blank",opIsNotBlank:"is not blank",opIsOneOf:"is one of",opIsBetween:"is between",opValuesCount:"{n} values",opInPeriod:"is in",periodToday:"today",periodYesterday:"yesterday",periodTomorrow:"tomorrow",periodThisWeek:"this week",periodLastWeek:"last week",periodNextWeek:"next week",periodThisMonth:"this month",periodLastMonth:"last month",periodNextMonth:"next month",periodThisQuarter:"this quarter",periodLastQuarter:"last quarter",periodNextQuarter:"next quarter",periodThisYear:"this year",periodLastYear:"last year",periodNextYear:"next year",periodYearToDate:"year to date",periodLastDays:"the last {n} days",periodNextDays:"the next {n} days",filterAnd:"AND",filterOr:"OR",builderTitle:"Filter builder",builderCombine:"Combine conditions with",builderAddCondition:"Add condition",builderAddGroup:"Add group",builderRemoveGroup:"Remove group",builderRemoveCondition:"Remove condition",builderEmpty:"No conditions yet.",builderColumn:"Column",builderOperator:"Operator",builderValue:"Value",builderValueFrom:"From",builderValueTo:"To",builderValuePlaceholder:"Enter a value",builderOpen:"Filter builder\u2026",builderClearAll:"Clear all",builderConditionButton:"+ Condition",builderGroupButton:"+ Group",builderTrue:"true",builderFalse:"false",builderPeriod:"Period",builderDays:"Days",filterCustom:"(Custom\u2026)",filterPopupAria:"{column} filter",importOpen:"Import\u2026",groupPanelHint:"Drag a column here to group by it",groupAddLevel:"Add grouping level",groupAddLevelButton:"+ Add level\u2026",groupNoGrouping:"(no grouping)",groupLevelAria:"Grouping level {n}",groupRemoveAria:"Remove {column}",groupExpandAll:"Expand all",groupCollapseAll:"Collapse all",pagerFirst:"First page",pagerPrevious:"Previous page",pagerNext:"Next page",pagerLast:"Last page",pagerPage:"Page",pagerOf:"of",pagerRowsPerPage:"Rows per page",pagerAria:"Pagination",pagerPageButton:"Page {n}",selectAllRows:"Select all rows",selectRowAria:"Select row {row}",selectGroupAria:"Select the {count} rows of {group}",summaryAria:"Summary",columnTotalsAria:"Column totals",rowActions:"Row actions",detailsAria:"Details",rowNumberAria:"Row number",noteEditorAria:"Cell note",notePlaceholder:"Write a note about this cell\u2026",addNote:"Add note\u2026",editNote:"Edit note\u2026",deleteNote:"Delete note",expandDetails:"Expand details",collapseDetails:"Collapse details",expandTreeRow:"Expand row",collapseTreeRow:"Collapse row",expandColumnGroup:"Expand column group",collapseColumnGroup:"Collapse column group",dragToReorder:"Drag to reorder",menuCopy:"Copy",menuCopyWithHeaders:"Copy with headers",menuCopyWithGroupHeaders:"Copy with group headers",menuCut:"Cut",menuPaste:"Paste",menuExport:"Export",menuChartRange:"Chart selected cells",statsSum:"Sum",statsCount:"Count",statsAvg:"Average",statsMin:"Min",statsMax:"Max",statsCells:"Cells",statsTooLarge:"Selection too large to total",statusRows:"Rows",statusFiltered:"Filtered",statusSelected:"Selected",summaryRows:"rows",announceRows:"{n} rows",announceSortedBy:"sorted by {columns}",announceSelected:"{n} selected",announceAscending:"ascending",announceDescending:"descending",sideFilters:"Filters",sideBarAria:"Tool panels",sideClearFilters:"Clear all filters",summarySum:"Sum",summaryAvg:"Avg",summaryMin:"Min",summaryMax:"Max",summaryCount:"Count",summaryDistinct:"Distinct",summaryCustom:"Custom",noTotal:"No total",busy:"Working\u2026",busyLoading:"Loading rows\u2026",rowsLoadFailed:"Couldn't load these rows.",retryLoad:"Retry",busyEncoding:"Preparing data\u2026",busyFiltering:"Filtering rows\u2026",busySorting:"Sorting rows\u2026",busyComputing:"Filtering and sorting\u2026",busyGrouping:"Building groups\u2026",busyAggregating:"Calculating totals\u2026",busyProjecting:"Updating the view\u2026",busyExporting:"Building the file\u2026",noData:"No data",editNewRow:"New row",editSaveChanges:"Save changes",editDiscardChanges:"Discard changes",editRow:"Edit row",editRowMenu:"Edit row\u2026",editDeleteRow:"Delete row",editUndoDelete:"Undo delete",editActions:"Actions",editSaveRow:"Save row",editSaving:"Saving\u2026",editEditingRow:"Editing row {row}",editSaveCount:"Save {n} row(s)",editCannotSave:"Cannot save",editSaveFailed:"Could not save the changes.",rowStatusChanged:"Unsaved changes",rowStatusSaving:"Saving\u2026",rowStatusSaved:"Saved",rowStatusError:"Save failed",rowStatusRetry:"Retry",rowStatusDelete:"Delete row",editDeleteConfirm:"Delete this row?",editAddRowUndo:"Add row",editDeleteRowUndo:"Delete row",editCellUndo:"Edit {column}",editFillUndo:"Fill {count} cells",editPasteUndo:"Paste {count} cells",editCutUndo:"Cut {count} cells",editGroupTotal:"Group total",editGroupTotalUndo:"Change {column} total ({count} rows)",editNoMatch:"No match",formEditTitle:"Edit row",formAddTitle:"New row",formShortcut:"{key}+Enter to save \xB7 Esc to cancel",validationRequired:"This field is required",validationNumber:"Must be a number",validationFormat:"Invalid format",validationEmail:"Invalid email address",validationInvalid:"Invalid value",dateCalendar:"Calendar",dateOpenCalendar:"Open calendar",datePreviousMonth:"Previous month",dateNextMonth:"Next month",monthJanuary:"January",monthFebruary:"February",monthMarch:"March",monthApril:"April",monthMay:"May",monthJune:"June",monthJuly:"July",monthAugust:"August",monthSeptember:"September",monthOctober:"October",monthNovember:"November",monthDecember:"December",weekStartsOn:"0",weekdaySu:"Su",weekdayMo:"Mo",weekdayTu:"Tu",weekdayWe:"We",weekdayTh:"Th",weekdayFr:"Fr",weekdaySa:"Sa",importTitle:"Import data",importStepSource:"1. Source",importStepMap:"2. Map columns",importFile:"CSV file",importPaste:"\u2026or paste rows",importSeparator:"Separator",importSeparatorAuto:"Detect automatically",importSeparatorComma:"Comma ,",importSeparatorSemicolon:"Semicolon ;",importSeparatorTab:"Tab",importSeparatorPipe:"Pipe |",importFileColumn:"File column",importDetected:"Detected",importGridColumn:"Grid column",importSample:"Sample",importSkip:"\u2014 skip \u2014",importPreview:"Preview",importNoSource:"Choose a file or paste some rows first.",importNoRows:"No data rows were found.",importAction:"Import",exportAborted:"Export aborted",exportSheetName:"Data",chart:"Chart",chartCategory:"Category",chartSeries:"Series",chartAddSeries:"Add series",chartRemoveSeries:"Remove",chartSource:"Data",chartSourceView:"Filtered rows",chartSourceSelection:"Selected rows",chartSourceAll:"All rows",chartSourceRange:"Selected range (rows {from}\u2013{to})",chartClose:"Close chart",chartFullscreen:"Fullscreen",chartExitFullscreen:"Exit fullscreen",chartFloat:"Pop out",chartDock:"Dock",chartNewWindow:"New window",chartMoveWindow:"Move chart window",chartResizeWindow:"Resize chart window",chartResizeDock:"Drag to change the chart height",chartSwitch:"Swap category and series",chartUnlink:"Unlink",chartLink:"Link",chartUnlinked:"Unlinked: the chart keeps its data and no longer follows the grid.",chartExportPng:"PNG",chartExportSvg:"SVG",chartExportFailed:"The chart could not be exported.",chartCrossFiltered:"The grid is filtered to {value}.",chartBlankCategory:"(blank)",chartTruncated:'Showing the top {n} categories; the rest are grouped as "Other".',chartOther:"Other",chartEmpty:"Nothing to chart yet.",chartNoVisibleSeries:"No visible series.",chartNeedsMoreSeries:"This chart type needs at least two value columns (for example a low and a high) \u2014 add a second series.",chartLoading:"Loading\u2026",chartNeedsRecharts:"Charts need the optional peer `recharts`. Install it to draw them.",chartOnlyOneSeries:"This chart type shows one series.",chartByColumn:"Chart by this column",chartGroupBy:"By",chartGroupNone:"Each value",chartGroupAuto:"Auto",chartGroupDay:"Day",chartGroupWeek:"Week",chartGroupMonth:"Month",chartGroupQuarter:"Quarter",chartGroupYear:"Year",chartGroupBins:"{n} bins",chartBucketAdjusted:"Too many intervals for one axis \u2014 grouped more coarsely.",chartWindowed:"Showing {shown} of {total}.",chartShowAll:"Show all",chartCanvasHint:"Chart. Scroll to zoom, drag to pan, arrow keys to move, 0 to show all.",chartCanvasHintPick:"Chart. Arrow keys choose a category, Enter or Space filters the grid by it (Ctrl adds one), + and \u2212 zoom, 0 shows all.",chartCategoryFocus:"{category}: {values} \u2014 {position} of {count}",chartCategoryFiltered:"filtering the grid",chartAggSum:"Sum",chartAggAvg:"Average",chartAggMin:"Min",chartAggMax:"Max",chartAggCount:"Count",chartAggDistinct:"Distinct",chartAggFirst:"First",chartAggLast:"Last",chartTypeColumn:"Column",chartTypeBar:"Bar",chartTypeLine:"Line",chartTypeArea:"Area",chartTypePie:"Pie",chartTypeDonut:"Donut",chartStacking:"Series layout",chartStackGrouped:"Grouped",chartStackStacked:"Stacked",chartStackNormalized:"100% stacked",chartFormat:"Format",chartFormatTitle:"Title",chartFormatCategoryAxis:"Category axis title",chartFormatValueAxis:"Value axis title",chartFormatLegend:"Legend",chartLegendTop:"Top",chartLegendBottom:"Bottom",chartLegendLeft:"Left",chartLegendRight:"Right",chartLegendNone:"Hidden",chartFormatDataLabels:"Data labels",chartFormatScale:"Value scale",chartScaleLinear:"Linear",chartScaleLog:"Logarithmic",chartFormatTextSize:"Text size",chartFormatTextColor:"Text colour",chartFormatDefault:"Default",chartFormatLabelAngle:"Category labels",chartAngleAuto:"Auto",chartAngleFlat:"Flat",chartFormatGridLines:"Grid lines",chartGridValue:"Value axis",chartGridBoth:"Both axes",chartGridNone:"None",chartFormatGridDashed:"Dashed grid",chartFormatLineWidth:"Line width",chartFormatLineDashed:"Dashed lines",chartFormatFillOpacity:"Fill opacity",chartFormatDateFormat:"Date format",chartFormatPalette:"Colours",chartPaletteTheme:"Theme",chartPaletteClassic:"Classic",chartPaletteColorblind:"Colour-blind safe",chartPaletteVivid:"Vivid",chartPaletteMonochrome:"One colour",sparklineSummary:"{count} values from {min} to {max}, ending at {last}",chartTypeWaterfall:"Waterfall",chartTypeFunnel:"Funnel",chartTypeTreemap:"Treemap",chartTypeHeatmap:"Heatmap",chartTypeBox:"Box plot",chartTypeRadar:"Radar",chartTypeRangeBar:"Range",chartBoxQ1:"Q1",chartBoxMedian:"Median",chartBoxQ3:"Q3",chartBoxOutlier:"Outlier",chartTotal:"Total",chartTypeScatter:"Scatter",chartTypeBubble:"Bubble",chartXAxis:"X axis",chartBubbleSize:"Size",chartXYSampled:"{shown} of {total} points, sampled evenly",licenseMissing:"Unlicensed",licenseExpired:"License expired",licenseReleaseNotCovered:"This version is not covered by the license",licenseDomainMismatch:"License not valid for this domain",licenseRevoked:"License revoked",licenseInvalidFormat:"Malformed license key",licenseInvalidSignature:"Invalid license signature",licenseEngineUnavailable:"Browser cannot verify the license (HTTPS required)",calcAdd:"Add calculated column\u2026",calcEdit:"Edit calculated column\u2026",calcRemove:"Remove calculated column",calcTitleAdd:"Add calculated column",calcTitleEdit:"Edit calculated column",calcName:"Name",calcFormula:"Formula",calcFormulaHint:"Write a column as [Name]. Example: [Price] * [Qty]",calcColumns:"Columns",calcFunctions:"Functions",calcPreview:"Preview",calcPreviewEmpty:"No rows to preview",calcErrorAt:"{message} (character {position})",calcAddButton:"Add",calcArgsAtLeast:"{min} or more",formulaError_empty:"Write a formula",formulaError_unclosedText:'Text is not closed: a " is missing',formulaError_unclosedColumn:"Column name is not closed: a ] is missing",formulaError_emptyColumn:"Empty column name []",formulaError_unexpectedChar:"Unexpected character {text}",formulaError_expected:"{text} is missing",formulaError_cellAfterColon:'A cell is missing after ":"',formulaError_unknownName:"Unknown name {name} \u2014 write a column as [{name}]",formulaError_unexpected:"Unexpected {text}",formulaError_endsEarly:"The formula ends too early",formulaError_trailing:"Unexpected text at the end",formulaError_unknownColumn:"There is no column [{name}]",formulaError_unknownFunction:"Unknown function {name}",formulaError_argCount:"{name} takes {range} argument(s)",formulaError_cellsNotAllowed:"Cell references such as A1 are not used here \u2014 write a column as [Name]"},Yh={ok:"Tamam",cancel:"\u0130ptal",apply:"Uygula",close:"Kapat",clear:"Temizle",save:"Kaydet",search:"Ara...",selectAll:"T\xFCm\xFCn\xFC Se\xE7",showAll:"T\xFCm\xFCn\xFC g\xF6ster",remove:"Kald\u0131r",none:"Yok",toolbarSearch:"Ara...",exportMenu:"D\u0131\u015Fa Aktar",exportCsv:"CSV'ye aktar",exportExcel:"T\xFCm veriyi Excel'e aktar",exportExcelSelected:"Se\xE7ili sat\u0131rlar\u0131 Excel'e aktar",exportPdf:"PDF'e aktar",exporting:"D\u0131\u015Fa aktar\u0131l\u0131yor\u2026",columns:"S\xFCtunlar",hiddenColumns:"Gizli s\xFCtunlar",noHiddenColumns:"Gizli s\xFCtun yok.",sortAsc:"A'dan Z'ye S\u0131rala",sortDesc:"Z'den A'ya S\u0131rala",clearSort:"S\u0131ralamay\u0131 Temizle",cardSortBy:"S\u0131rala",groupByColumn:"Bu s\xFCtuna g\xF6re grupla",ungroupColumn:"Gruplamadan \xE7\u0131kar",showGroupPanel:"Gruplama panelini g\xF6ster",hideGroupPanel:"Gruplama panelini gizle",showFooter:"Alt bilgiyi g\xF6ster",hideFooter:"Alt bilgiyi gizle",showGroupFooters:"Grup alt bilgilerini g\xF6ster",hideGroupFooters:"Grup alt bilgilerini gizle",hideColumn:"Bu s\xFCtunu gizle",fieldChooser:"Alan se\xE7ici\u2026",bestFit:"En uygun geni\u015Flik",bestFitAll:"En uygun geni\u015Flik (t\xFCm s\xFCtunlar)",pinRowTop:"Sat\u0131r\u0131 \xFCste sabitle",pinRowBottom:"Sat\u0131r\u0131 alta sabitle",unpinRow:"Sat\u0131r\u0131n sabitlemesini kald\u0131r",findLabel:"Tabloda bul",findPrevious:"\xD6nceki e\u015Fle\u015Fme",findNext:"Sonraki e\u015Fle\u015Fme",findClose:"Bulmay\u0131 kapat",findCount:"{n} / {count}",findNone:"E\u015Fle\u015Fme yok",renameColumn:"S\xFCtunu yeniden adland\u0131r",fixedPosition:"Sabit konum ayarla",pinLeft:"Sol",pinRight:"Sa\u011F",pinSticky:"Yap\u0131\u015Fkan",unpin:"Sabitlemeyi kald\u0131r",moveLeft:"Sola ta\u015F\u0131",moveRight:"Sa\u011Fa ta\u015F\u0131",filterPlaceholder:"Filtrele\u2026",filterColumnAria:"{column} filtrele",filterOperatorDefault:"Varsay\u0131lan",filterOperatorAria:"{column} filtre i\u015Fleci",filterSelectAll:"T\xFCm\xFCn\xFC se\xE7",filterBlank:"(Bo\u015F Olanlar)",filterNonBlank:"(Bo\u015F Olmayanlar)",filterEmptyText:"(bo\u015F metin)",filterSpace:"(1 bo\u015Fluk)",filterSpaces:"({n} bo\u015Fluk)",filterNoMatch:"E\u015Fle\u015Fen de\u011Fer yok",filterLoading:"De\u011Ferler y\xFCkleniyor\u2026",filterTruncated:"Yaln\u0131zca ilk de\u011Ferler g\xF6steriliyor \u2014 kalan\u0131n\u0131 bulmak i\xE7in aray\u0131n.",filterRemove:"Filtreyi kald\u0131r",filterToggle:"Filtreyi uygula",filterEditBuilder:"Filtreyi d\xFCzenle",filterNone:"Filtre yok",filterActive:"Filtre etkin",opEquals:"e\u015Fittir",opNotEquals:"e\u015Fit de\u011Fildir",opGreater:">",opGreaterOrEqual:"\u2265",opLess:"<",opLessOrEqual:"\u2264",opContains:"i\xE7erir",opNotContains:"i\xE7ermez",opStartsWith:"ile ba\u015Flar",opEndsWith:"ile biter",opIsBlank:"bo\u015Ftur",opIsNotBlank:"bo\u015F de\u011Fildir",opIsOneOf:"\u015Funlardan biridir",opIsBetween:"aras\u0131ndad\u0131r",opValuesCount:"{n} de\u011Fer",opInPeriod:"d\xF6nem i\xE7inde",periodToday:"bug\xFCn",periodYesterday:"d\xFCn",periodTomorrow:"yar\u0131n",periodThisWeek:"bu hafta",periodLastWeek:"ge\xE7en hafta",periodNextWeek:"gelecek hafta",periodThisMonth:"bu ay",periodLastMonth:"ge\xE7en ay",periodNextMonth:"gelecek ay",periodThisQuarter:"bu \xE7eyrek",periodLastQuarter:"ge\xE7en \xE7eyrek",periodNextQuarter:"gelecek \xE7eyrek",periodThisYear:"bu y\u0131l",periodLastYear:"ge\xE7en y\u0131l",periodNextYear:"gelecek y\u0131l",periodYearToDate:"y\u0131lba\u015F\u0131ndan bug\xFCne",periodLastDays:"son {n} g\xFCn",periodNextDays:"\xF6n\xFCm\xFCzdeki {n} g\xFCn",filterAnd:"VE",filterOr:"VEYA",builderTitle:"Filtre olu\u015Fturucu",builderCombine:"Ko\u015Fullar\u0131 \u015Fununla birle\u015Ftir",builderAddCondition:"Ko\u015Ful ekle",builderAddGroup:"Grup ekle",builderRemoveGroup:"Grubu kald\u0131r",builderRemoveCondition:"Ko\u015Fulu kald\u0131r",builderEmpty:"Hen\xFCz ko\u015Ful yok.",builderColumn:"S\xFCtun",builderOperator:"Operat\xF6r",builderValue:"De\u011Fer",builderValueFrom:"Ba\u015Flang\u0131\xE7",builderValueTo:"Biti\u015F",builderValuePlaceholder:"Bir de\u011Fer girin",builderOpen:"Filtre olu\u015Fturucu\u2026",builderClearAll:"T\xFCm\xFCn\xFC temizle",builderConditionButton:"+ Ko\u015Ful",builderGroupButton:"+ Grup",builderTrue:"do\u011Fru",builderFalse:"yanl\u0131\u015F",builderPeriod:"D\xF6nem",builderDays:"G\xFCn",filterCustom:"(\xD6zel\u2026)",filterPopupAria:"{column} filtresi",importOpen:"\u0130\xE7e aktar\u2026",groupPanelHint:"Gruplamak i\xE7in buraya bir s\xFCtun s\xFCr\xFCkleyin",groupAddLevel:"Gruplama d\xFCzeyi ekle",groupAddLevelButton:"+ D\xFCzey ekle\u2026",groupNoGrouping:"(gruplama yok)",groupLevelAria:"{n}. gruplama d\xFCzeyi",groupRemoveAria:"{column} kald\u0131r",groupExpandAll:"T\xFCm\xFCn\xFC geni\u015Flet",groupCollapseAll:"T\xFCm\xFCn\xFC daralt",pagerFirst:"\u0130lk sayfa",pagerPrevious:"\xD6nceki sayfa",pagerNext:"Sonraki sayfa",pagerLast:"Son sayfa",pagerPage:"Sayfa",pagerOf:"/",pagerRowsPerPage:"Sayfa ba\u015F\u0131na sat\u0131r",pagerAria:"Sayfalama",pagerPageButton:"Sayfa {n}",selectAllRows:"T\xFCm sat\u0131rlar\u0131 se\xE7",selectRowAria:"{row} numaral\u0131 sat\u0131r\u0131 se\xE7",selectGroupAria:"{group} grubundaki {count} sat\u0131r\u0131 se\xE7",summaryAria:"\xD6zet",columnTotalsAria:"S\xFCtun toplamlar\u0131",rowActions:"Sat\u0131r i\u015Flemleri",detailsAria:"Ayr\u0131nt\u0131lar",rowNumberAria:"Sat\u0131r numaras\u0131",noteEditorAria:"H\xFCcre notu",notePlaceholder:"Bu h\xFCcre hakk\u0131nda bir not yaz\u0131n\u2026",addNote:"Not ekle\u2026",editNote:"Notu d\xFCzenle\u2026",deleteNote:"Notu sil",expandDetails:"Ayr\u0131nt\u0131lar\u0131 geni\u015Flet",collapseDetails:"Ayr\u0131nt\u0131lar\u0131 daralt",expandTreeRow:"Sat\u0131r\u0131 a\xE7",collapseTreeRow:"Sat\u0131r\u0131 kapat",expandColumnGroup:"S\xFCtun grubunu geni\u015Flet",collapseColumnGroup:"S\xFCtun grubunu daralt",dragToReorder:"S\u0131ralamak i\xE7in s\xFCr\xFCkleyin",menuCopy:"Kopyala",menuCopyWithHeaders:"Ba\u015Fl\u0131klarla kopyala",menuCopyWithGroupHeaders:"Grup ba\u015Fl\u0131klar\u0131yla kopyala",menuCut:"Kes",menuPaste:"Yap\u0131\u015Ft\u0131r",menuExport:"D\u0131\u015Fa aktar",menuChartRange:"Se\xE7ili h\xFCcreleri grafi\u011Fe d\xF6k",statsSum:"Toplam",statsCount:"Say",statsAvg:"Ortalama",statsMin:"Min",statsMax:"Max",statsCells:"H\xFCcre",statsTooLarge:"Se\xE7im toplanamayacak kadar b\xFCy\xFCk",statusRows:"Sat\u0131r",statusFiltered:"Filtreli",statusSelected:"Se\xE7ili",summaryRows:"sat\u0131r",announceRows:"{n} sat\u0131r",announceSortedBy:"{columns} ile s\u0131ral\u0131",announceSelected:"{n} se\xE7ili",announceAscending:"artan",announceDescending:"azalan",sideFilters:"Filtreler",sideBarAria:"Ara\xE7 panelleri",sideClearFilters:"T\xFCm filtreleri temizle",summarySum:"Toplam",summaryAvg:"Ortalama",summaryMin:"Min",summaryMax:"Max",summaryCount:"Say",summaryDistinct:"Benzersiz",summaryCustom:"\xD6zel",noTotal:"Toplam yok",busy:"\xC7al\u0131\u015F\u0131yor\u2026",busyLoading:"Sat\u0131rlar y\xFCkleniyor\u2026",rowsLoadFailed:"Bu sat\u0131rlar y\xFCklenemedi.",retryLoad:"Tekrar dene",busyEncoding:"Veri haz\u0131rlan\u0131yor\u2026",busyFiltering:"Sat\u0131rlar filtreleniyor\u2026",busySorting:"Sat\u0131rlar s\u0131ralan\u0131yor\u2026",busyComputing:"Filtreleniyor ve s\u0131ralan\u0131yor\u2026",busyGrouping:"Gruplar olu\u015Fturuluyor\u2026",busyAggregating:"Toplamlar hesaplan\u0131yor\u2026",busyProjecting:"G\xF6r\xFCn\xFCm g\xFCncelleniyor\u2026",busyExporting:"Dosya olu\u015Fturuluyor\u2026",noData:"Veri Bulunamad\u0131",editNewRow:"Yeni sat\u0131r",editSaveChanges:"De\u011Fi\u015Fiklikleri kaydet",editDiscardChanges:"De\u011Fi\u015Fiklikleri iptal et",editRow:"Sat\u0131r\u0131 d\xFCzenle",editRowMenu:"Sat\u0131r\u0131 d\xFCzenle\u2026",editDeleteRow:"Sat\u0131r\u0131 sil",editUndoDelete:"Silmeyi geri al",editActions:"Aksiyonlar",editSaveRow:"Sat\u0131r\u0131 kaydet",editSaving:"Kaydediliyor\u2026",editEditingRow:"{row} numaral\u0131 sat\u0131r d\xFCzenleniyor",editSaveCount:"{n} sat\u0131r\u0131 kaydet",editCannotSave:"Kaydedilemiyor",editSaveFailed:"De\u011Fi\u015Fiklikler kaydedilemedi.",rowStatusChanged:"Kaydedilmemi\u015F de\u011Fi\u015Fiklikler",rowStatusSaving:"Kaydediliyor\u2026",rowStatusSaved:"Kaydedildi",rowStatusError:"Kaydedilemedi",rowStatusRetry:"Tekrar dene",rowStatusDelete:"Sat\u0131r\u0131 sil",editDeleteConfirm:"Bu sat\u0131r silinsin mi?",editAddRowUndo:"Sat\u0131r ekle",editDeleteRowUndo:"Sat\u0131r sil",editCellUndo:"{column} d\xFCzenle",editFillUndo:"{count} h\xFCcre doldur",editPasteUndo:"{count} h\xFCcre yap\u0131\u015Ft\u0131r",editCutUndo:"{count} h\xFCcre kes",editGroupTotal:"Grup toplam\u0131",editGroupTotalUndo:"{column} toplam\u0131n\u0131 de\u011Fi\u015Ftir ({count} sat\u0131r)",editNoMatch:"E\u015Fle\u015Fme yok",formEditTitle:"Sat\u0131r\u0131 d\xFCzenle",formAddTitle:"Yeni sat\u0131r",formShortcut:"Kaydetmek i\xE7in {key}+Enter \xB7 \u0130ptal i\xE7in Esc",validationRequired:"Bu alan zorunludur",validationNumber:"Say\u0131 olmal\u0131d\u0131r",validationFormat:"Ge\xE7ersiz bi\xE7im",validationEmail:"Ge\xE7ersiz e-posta adresi",validationInvalid:"Ge\xE7ersiz de\u011Fer",dateCalendar:"Takvim",dateOpenCalendar:"Takvimi a\xE7",datePreviousMonth:"\xD6nceki ay",dateNextMonth:"Sonraki ay",monthJanuary:"Ocak",monthFebruary:"\u015Eubat",monthMarch:"Mart",monthApril:"Nisan",monthMay:"May\u0131s",monthJune:"Haziran",monthJuly:"Temmuz",monthAugust:"A\u011Fustos",monthSeptember:"Eyl\xFCl",monthOctober:"Ekim",monthNovember:"Kas\u0131m",monthDecember:"Aral\u0131k",weekStartsOn:"1",weekdaySu:"Pz",weekdayMo:"Pt",weekdayTu:"Sa",weekdayWe:"\xC7a",weekdayTh:"Pe",weekdayFr:"Cu",weekdaySa:"Ct",importTitle:"Veri i\xE7e aktar",importStepSource:"1. Kaynak",importStepMap:"2. S\xFCtun e\u015Fleme",importFile:"CSV dosyas\u0131",importPaste:"\u2026veya sat\u0131rlar\u0131 yap\u0131\u015Ft\u0131r\u0131n",importSeparator:"Ay\u0131r\u0131c\u0131",importSeparatorAuto:"Otomatik alg\u0131la",importSeparatorComma:"Virg\xFCl ,",importSeparatorSemicolon:"Noktal\u0131 virg\xFCl ;",importSeparatorTab:"Sekme",importSeparatorPipe:"Dikey \xE7izgi |",importFileColumn:"Dosya s\xFCtunu",importDetected:"Alg\u0131lanan",importGridColumn:"Tablo s\xFCtunu",importSample:"\xD6rnek",importSkip:"\u2014 atla \u2014",importPreview:"\xD6nizleme",importNoSource:"\xD6nce bir dosya se\xE7in veya sat\u0131r yap\u0131\u015Ft\u0131r\u0131n.",importNoRows:"Veri sat\u0131r\u0131 bulunamad\u0131.",importAction:"\u0130\xE7e aktar",exportAborted:"D\u0131\u015Fa aktarma iptal edildi",exportSheetName:"Veri",chart:"Grafik",chartCategory:"Kategori",chartSeries:"Seri",chartAddSeries:"Seri ekle",chartRemoveSeries:"Kald\u0131r",chartSource:"Veri",chartSourceView:"Filtrelenmi\u015F sat\u0131rlar",chartSourceSelection:"Se\xE7ili sat\u0131rlar",chartSourceAll:"T\xFCm sat\u0131rlar",chartSourceRange:"Se\xE7ili aral\u0131k ({from}\u2013{to}. sat\u0131rlar)",chartClose:"Grafi\u011Fi kapat",chartFullscreen:"Tam ekran",chartExitFullscreen:"Tam ekrandan \xE7\u0131k",chartFloat:"Pencereye al",chartDock:"Yerine yerle\u015Ftir",chartNewWindow:"Yeni pencere",chartMoveWindow:"Grafik penceresini ta\u015F\u0131",chartResizeWindow:"Grafik penceresini boyutland\u0131r",chartResizeDock:"Grafi\u011Fin y\xFCksekli\u011Fini de\u011Fi\u015Ftirmek i\xE7in s\xFCr\xFCkleyin",chartSwitch:"Kategori ile seriyi de\u011Fi\u015Ftir",chartUnlink:"Gridden kopar",chartLink:"Gride ba\u011Fla",chartUnlinked:"Kopar\u0131ld\u0131: grafik verisini koruyor, grid de\u011Fi\u015Fse de de\u011Fi\u015Fmiyor.",chartExportPng:"PNG",chartExportSvg:"SVG",chartExportFailed:"Grafik d\u0131\u015Fa aktar\u0131lamad\u0131.",chartCrossFiltered:"Tablo {value} de\u011Ferine filtrelendi.",chartBlankCategory:"(bo\u015F)",chartTruncated:'En y\xFCksek {n} kategori g\xF6steriliyor; kalanlar "Di\u011Fer" alt\u0131nda topland\u0131.',chartOther:"Di\u011Fer",chartEmpty:"Hen\xFCz grafi\u011Fe d\xF6k\xFClecek bir \u015Fey yok.",chartNoVisibleSeries:"G\xF6r\xFCn\xFCr seri yok.",chartNeedsMoreSeries:"Bu grafik t\xFCr\xFC en az iki de\u011Fer s\xFCtunu ister (\xF6rne\u011Fin en d\xFC\u015F\xFCk ve en y\xFCksek) \u2014 ikinci bir seri ekleyin.",chartLoading:"Y\xFCkleniyor\u2026",chartNeedsRecharts:"Grafikler iste\u011Fe ba\u011Fl\u0131 `recharts` paketini gerektirir. \xC7izmek i\xE7in kurun.",chartOnlyOneSeries:"Bu grafik t\xFCr\xFC tek seri g\xF6sterir.",chartByColumn:"Bu s\xFCtuna g\xF6re grafik",chartGroupBy:"\u015Euna g\xF6re",chartGroupNone:"Her de\u011Fer",chartGroupAuto:"Otomatik",chartGroupDay:"G\xFCn",chartGroupWeek:"Hafta",chartGroupMonth:"Ay",chartGroupQuarter:"\xC7eyrek",chartGroupYear:"Y\u0131l",chartGroupBins:"{n} aral\u0131k",chartBucketAdjusted:"Bir eksen i\xE7in fazla aral\u0131k \u2014 daha kaba grupland\u0131.",chartWindowed:"{total} i\xE7inden {shown} g\xF6steriliyor.",chartShowAll:"T\xFCm\xFCn\xFC g\xF6ster",chartCanvasHint:"Grafik. Yak\u0131nla\u015Ft\u0131rmak i\xE7in kayd\u0131r\u0131n, kayd\u0131rmak i\xE7in s\xFCr\xFCkleyin, ok tu\u015Flar\u0131yla gezinin, t\xFCm\xFC i\xE7in 0.",chartCanvasHintPick:"Grafik. Ok tu\u015Flar\u0131yla bir kategori se\xE7in, Enter ya da Bo\u015Fluk tabloyu ona g\xF6re s\xFCzer (Ctrl ile eklenir), + ve \u2212 yak\u0131nla\u015Ft\u0131r\u0131r, 0 t\xFCm\xFCn\xFC g\xF6sterir.",chartCategoryFocus:"{category}: {values} \u2014 {position}/{count}",chartCategoryFiltered:"tabloyu s\xFCz\xFCyor",chartAggSum:"Toplam",chartAggAvg:"Ortalama",chartAggMin:"Min",chartAggMax:"Max",chartAggCount:"Say",chartAggDistinct:"Benzersiz",chartAggFirst:"\u0130lk",chartAggLast:"Son",chartTypeColumn:"S\xFCtun",chartTypeBar:"\xC7ubuk",chartTypeLine:"\xC7izgi",chartTypeArea:"Alan",chartTypePie:"Pasta",chartTypeDonut:"Halka",chartStacking:"Seri yerle\u015Fimi",chartStackGrouped:"Yan yana",chartStackStacked:"Y\u0131\u011F\u0131lm\u0131\u015F",chartStackNormalized:"%100 y\u0131\u011F\u0131lm\u0131\u015F",chartFormat:"Bi\xE7im",chartFormatTitle:"Ba\u015Fl\u0131k",chartFormatCategoryAxis:"Kategori ekseni ba\u015Fl\u0131\u011F\u0131",chartFormatValueAxis:"De\u011Fer ekseni ba\u015Fl\u0131\u011F\u0131",chartFormatLegend:"Lejant",chartLegendTop:"\xDCstte",chartLegendBottom:"Altta",chartLegendLeft:"Solda",chartLegendRight:"Sa\u011Fda",chartLegendNone:"Gizli",chartFormatDataLabels:"Veri etiketleri",chartFormatScale:"De\u011Fer \xF6l\xE7e\u011Fi",chartScaleLinear:"Do\u011Frusal",chartScaleLog:"Logaritmik",chartFormatTextSize:"Yaz\u0131 boyutu",chartFormatTextColor:"Yaz\u0131 rengi",chartFormatDefault:"Varsay\u0131lan",chartFormatLabelAngle:"Kategori etiketleri",chartAngleAuto:"Otomatik",chartAngleFlat:"D\xFCz",chartFormatGridLines:"Izgara \xE7izgileri",chartGridValue:"De\u011Fer ekseni",chartGridBoth:"\u0130ki eksen",chartGridNone:"Yok",chartFormatGridDashed:"Kesik \u0131zgara",chartFormatLineWidth:"\xC7izgi kal\u0131nl\u0131\u011F\u0131",chartFormatLineDashed:"Kesik \xE7izgiler",chartFormatFillOpacity:"Dolgu opakl\u0131\u011F\u0131",chartFormatDateFormat:"Tarih bi\xE7imi",chartFormatPalette:"Renkler",chartPaletteTheme:"Tema",chartPaletteClassic:"Klasik",chartPaletteColorblind:"Renk k\xF6rl\xFC\u011F\xFCne uygun",chartPaletteVivid:"Canl\u0131",chartPaletteMonochrome:"Tek renk",sparklineSummary:"{count} de\u011Fer, {min} ile {max} aras\u0131, son de\u011Fer {last}",chartTypeWaterfall:"\u015Eelale",chartTypeFunnel:"Huni",chartTypeTreemap:"A\u011Fa\xE7 haritas\u0131",chartTypeHeatmap:"Is\u0131 haritas\u0131",chartTypeBox:"Kutu grafi\u011Fi",chartTypeRadar:"Radar",chartTypeRangeBar:"Aral\u0131k",chartBoxQ1:"\xC71",chartBoxMedian:"Ortanca",chartBoxQ3:"\xC73",chartBoxOutlier:"Ayk\u0131r\u0131 de\u011Fer",chartTotal:"Toplam",chartTypeScatter:"Da\u011F\u0131l\u0131m",chartTypeBubble:"Kabarc\u0131k",chartXAxis:"X ekseni",chartBubbleSize:"Boyut",chartXYSampled:"{total} noktan\u0131n {shown} tanesi, e\u015Fit aral\u0131kla \xF6rneklendi",licenseMissing:"Lisanss\u0131z",licenseExpired:"Lisans\u0131n s\xFCresi dolmu\u015F",licenseReleaseNotCovered:"Bu s\xFCr\xFCm lisans kapsam\u0131nda de\u011Fil",licenseDomainMismatch:"Lisans bu alan ad\u0131 i\xE7in ge\xE7erli de\u011Fil",licenseRevoked:"Lisans iptal edilmi\u015F",licenseInvalidFormat:"Lisans anahtar\u0131 hatal\u0131",licenseInvalidSignature:"Lisans imzas\u0131 ge\xE7ersiz",licenseEngineUnavailable:"Taray\u0131c\u0131 lisans\u0131 do\u011Frulayam\u0131yor (HTTPS gerekli)",calcAdd:"Hesaplanm\u0131\u015F s\xFCtun ekle\u2026",calcEdit:"Hesaplanm\u0131\u015F s\xFCtunu d\xFCzenle\u2026",calcRemove:"Hesaplanm\u0131\u015F s\xFCtunu kald\u0131r",calcTitleAdd:"Hesaplanm\u0131\u015F s\xFCtun ekle",calcTitleEdit:"Hesaplanm\u0131\u015F s\xFCtunu d\xFCzenle",calcName:"Ad",calcFormula:"Form\xFCl",calcFormulaHint:"S\xFCtunu [Ad] diye yaz\u0131n. \xD6rnek: [Fiyat] * [Adet]",calcColumns:"S\xFCtunlar",calcFunctions:"\u0130\u015Flevler",calcPreview:"\xD6nizleme",calcPreviewEmpty:"\xD6nizlenecek sat\u0131r yok",calcErrorAt:"{message} ({position}. karakter)",calcAddButton:"Ekle",calcArgsAtLeast:"{min} veya daha fazla",formulaError_empty:"Bir form\xFCl yaz\u0131n",formulaError_unclosedText:'Metin kapanmam\u0131\u015F: bir " eksik',formulaError_unclosedColumn:"S\xFCtun ad\u0131 kapanmam\u0131\u015F: bir ] eksik",formulaError_emptyColumn:"Bo\u015F s\xFCtun ad\u0131 []",formulaError_unexpectedChar:"Beklenmeyen karakter {text}",formulaError_expected:"{text} eksik",formulaError_cellAfterColon:'":" i\u015Faretinden sonra bir h\xFCcre eksik',formulaError_unknownName:"Bilinmeyen ad {name} \u2014 s\xFCtunu [{name}] diye yaz\u0131n",formulaError_unexpected:"Beklenmeyen {text}",formulaError_endsEarly:"Form\xFCl erken bitiyor",formulaError_trailing:"Sonda beklenmeyen metin",formulaError_unknownColumn:"[{name}] ad\u0131nda bir s\xFCtun yok",formulaError_unknownFunction:"Bilinmeyen i\u015Flev {name}",formulaError_argCount:"{name} {range} ba\u011F\u0131ms\u0131z de\u011Fi\u015Fken al\u0131r",formulaError_cellsNotAllowed:"A1 gibi h\xFCcre ba\u015Fvurular\u0131 burada kullan\u0131lmaz \u2014 s\xFCtunu [Ad] diye yaz\u0131n"},Qh={ok:"OK",cancel:"Abbrechen",apply:"Anwenden",close:"Schlie\xDFen",clear:"L\xF6schen",save:"Speichern",search:"Suchen...",selectAll:"Alles ausw\xE4hlen",showAll:"Alle anzeigen",remove:"Entfernen",none:"Keine",toolbarSearch:"Suchen...",exportMenu:"Exportieren",exportCsv:"Als CSV exportieren",exportExcel:"Alle Daten nach Excel exportieren",exportExcelSelected:"Ausgew\xE4hlte Zeilen nach Excel exportieren",exportPdf:"Als PDF exportieren",exporting:"Wird exportiert\u2026",columns:"Spalten",hiddenColumns:"Ausgeblendete Spalten",noHiddenColumns:"Keine ausgeblendeten Spalten.",sortAsc:"Sortieren A \u2192 Z",sortDesc:"Sortieren Z \u2192 A",clearSort:"Sortierung l\xF6schen",cardSortBy:"Sortieren nach",groupByColumn:"Nach dieser Spalte gruppieren",ungroupColumn:"Aus Gruppierung entfernen",showGroupPanel:"Gruppierungsbereich anzeigen",hideGroupPanel:"Gruppierungsbereich ausblenden",showFooter:"Fu\xDFzeile anzeigen",hideFooter:"Fu\xDFzeile ausblenden",showGroupFooters:"Gruppenfu\xDFzeilen anzeigen",hideGroupFooters:"Gruppenfu\xDFzeilen ausblenden",hideColumn:"Diese Spalte ausblenden",fieldChooser:"Feldauswahl\u2026",bestFit:"Optimale Breite",bestFitAll:"Optimale Breite (alle Spalten)",pinRowTop:"Zeile oben fixieren",pinRowBottom:"Zeile unten fixieren",unpinRow:"Zeilenfixierung aufheben",findLabel:"In der Tabelle suchen",findPrevious:"Vorheriger Treffer",findNext:"N\xE4chster Treffer",findClose:"Suche schlie\xDFen",findCount:"{n} von {count}",findNone:"Keine Treffer",renameColumn:"Spalte umbenennen",fixedPosition:"Feste Position festlegen",pinLeft:"Links",pinRight:"Rechts",pinSticky:"Fixiert",unpin:"Fixierung aufheben",moveLeft:"Nach links verschieben",moveRight:"Nach rechts verschieben",filterPlaceholder:"Filtern\u2026",filterColumnAria:"{column} filtern",filterOperatorDefault:"Standard",filterOperatorAria:"Filteroperator f\xFCr {column}",filterSelectAll:"Alles ausw\xE4hlen",filterBlank:"(Leer)",filterNonBlank:"(Nicht leer)",filterEmptyText:"(leerer Text)",filterSpace:"(1 Leerzeichen)",filterSpaces:"({n} Leerzeichen)",filterNoMatch:"Keine passenden Werte",filterLoading:"Werte werden geladen\u2026",filterTruncated:"Es werden nur die ersten Werte angezeigt \u2014 suchen Sie nach den \xFCbrigen.",filterRemove:"Filter entfernen",filterToggle:"Filter anwenden",filterEditBuilder:"Filter bearbeiten",filterNone:"Kein Filter",filterActive:"Filter aktiv",opEquals:"ist",opNotEquals:"ist nicht",opGreater:">",opGreaterOrEqual:"\u2265",opLess:"<",opLessOrEqual:"\u2264",opContains:"enth\xE4lt",opNotContains:"enth\xE4lt nicht",opStartsWith:"beginnt mit",opEndsWith:"endet mit",opIsBlank:"ist leer",opIsNotBlank:"ist nicht leer",opIsOneOf:"ist eines von",opIsBetween:"liegt zwischen",opValuesCount:"{n} Werte",opInPeriod:"liegt in",periodToday:"heute",periodYesterday:"gestern",periodTomorrow:"morgen",periodThisWeek:"diese Woche",periodLastWeek:"letzte Woche",periodNextWeek:"n\xE4chste Woche",periodThisMonth:"diesen Monat",periodLastMonth:"letzten Monat",periodNextMonth:"n\xE4chsten Monat",periodThisQuarter:"dieses Quartal",periodLastQuarter:"letztes Quartal",periodNextQuarter:"n\xE4chstes Quartal",periodThisYear:"dieses Jahr",periodLastYear:"letztes Jahr",periodNextYear:"n\xE4chstes Jahr",periodYearToDate:"seit Jahresbeginn",periodLastDays:"die letzten {n} Tage",periodNextDays:"die n\xE4chsten {n} Tage",filterAnd:"UND",filterOr:"ODER",builderTitle:"Filter-Editor",builderCombine:"Bedingungen verkn\xFCpfen mit",builderAddCondition:"Bedingung hinzuf\xFCgen",builderAddGroup:"Gruppe hinzuf\xFCgen",builderRemoveGroup:"Gruppe entfernen",builderRemoveCondition:"Bedingung entfernen",builderEmpty:"Noch keine Bedingungen.",builderColumn:"Spalte",builderOperator:"Operator",builderValue:"Wert",builderValueFrom:"Von",builderValueTo:"Bis",builderValuePlaceholder:"Wert eingeben",builderOpen:"Filter-Editor\u2026",builderClearAll:"Alle l\xF6schen",builderConditionButton:"+ Bedingung",builderGroupButton:"+ Gruppe",builderTrue:"wahr",builderFalse:"falsch",builderPeriod:"Zeitraum",builderDays:"Tage",filterCustom:"(Benutzerdefiniert\u2026)",filterPopupAria:"Filter {column}",importOpen:"Importieren\u2026",groupPanelHint:"Ziehen Sie eine Spalte hierher, um danach zu gruppieren",groupAddLevel:"Gruppierungsebene hinzuf\xFCgen",groupAddLevelButton:"+ Ebene hinzuf\xFCgen\u2026",groupNoGrouping:"(keine Gruppierung)",groupLevelAria:"Gruppierungsebene {n}",groupRemoveAria:"{column} entfernen",groupExpandAll:"Alle erweitern",groupCollapseAll:"Alle reduzieren",pagerFirst:"Erste Seite",pagerPrevious:"Vorherige Seite",pagerNext:"N\xE4chste Seite",pagerLast:"Letzte Seite",pagerPage:"Seite",pagerOf:"von",pagerRowsPerPage:"Zeilen pro Seite",pagerAria:"Seitennavigation",pagerPageButton:"Seite {n}",selectAllRows:"Alle Zeilen ausw\xE4hlen",selectRowAria:"Zeile {row} ausw\xE4hlen",selectGroupAria:"Die {count} Zeilen von {group} ausw\xE4hlen",summaryAria:"Zusammenfassung",columnTotalsAria:"Spaltensummen",rowActions:"Zeilenaktionen",detailsAria:"Details",rowNumberAria:"Zeilennummer",noteEditorAria:"Zellennotiz",notePlaceholder:"Notiz zu dieser Zelle schreiben\u2026",addNote:"Notiz hinzuf\xFCgen\u2026",editNote:"Notiz bearbeiten\u2026",deleteNote:"Notiz l\xF6schen",expandDetails:"Details erweitern",collapseDetails:"Details reduzieren",expandTreeRow:"Zeile aufklappen",collapseTreeRow:"Zeile zuklappen",expandColumnGroup:"Spaltengruppe aufklappen",collapseColumnGroup:"Spaltengruppe zuklappen",dragToReorder:"Zum Umsortieren ziehen",menuCopy:"Kopieren",menuCopyWithHeaders:"Mit Spaltenk\xF6pfen kopieren",menuCopyWithGroupHeaders:"Mit Gruppenk\xF6pfen kopieren",menuCut:"Ausschneiden",menuPaste:"Einf\xFCgen",menuExport:"Exportieren",menuChartRange:"Ausgew\xE4hlte Zellen als Diagramm",statsSum:"Summe",statsCount:"Anzahl",statsAvg:"Durchschnitt",statsMin:"Min",statsMax:"Max",statsCells:"Zellen",statsTooLarge:"Auswahl zu gro\xDF f\xFCr eine Summe",statusRows:"Zeilen",statusFiltered:"Gefiltert",statusSelected:"Ausgew\xE4hlt",summaryRows:"Zeilen",announceRows:"{n} Zeilen",announceSortedBy:"sortiert nach {columns}",announceSelected:"{n} ausgew\xE4hlt",announceAscending:"aufsteigend",announceDescending:"absteigend",sideFilters:"Filter",sideBarAria:"Werkzeugbereiche",sideClearFilters:"Alle Filter l\xF6schen",summarySum:"Summe",summaryAvg:"Durchschnitt",summaryMin:"Min",summaryMax:"Max",summaryCount:"Anzahl",summaryDistinct:"Eindeutig",summaryCustom:"Benutzerdefiniert",noTotal:"Keine Summe",busy:"Wird bearbeitet\u2026",busyLoading:"Zeilen werden geladen\u2026",rowsLoadFailed:"Diese Zeilen konnten nicht geladen werden.",retryLoad:"Erneut versuchen",busyEncoding:"Daten werden vorbereitet\u2026",busyFiltering:"Zeilen werden gefiltert\u2026",busySorting:"Zeilen werden sortiert\u2026",busyComputing:"Filtern und Sortieren\u2026",busyGrouping:"Gruppen werden erstellt\u2026",busyAggregating:"Summen werden berechnet\u2026",busyProjecting:"Ansicht wird aktualisiert\u2026",busyExporting:"Datei wird erstellt\u2026",noData:"Keine Daten gefunden",editNewRow:"Neue Zeile",editSaveChanges:"\xC4nderungen speichern",editDiscardChanges:"\xC4nderungen verwerfen",editRow:"Zeile bearbeiten",editRowMenu:"Zeile bearbeiten\u2026",editDeleteRow:"Zeile l\xF6schen",editUndoDelete:"L\xF6schen r\xFCckg\xE4ngig",editActions:"Aktionen",editSaveRow:"Zeile speichern",editSaving:"Wird gespeichert\u2026",editEditingRow:"Zeile {row} wird bearbeitet",editSaveCount:"{n} Zeile(n) speichern",editCannotSave:"Speichern nicht m\xF6glich",editSaveFailed:"Die \xC4nderungen konnten nicht gespeichert werden.",rowStatusChanged:"Ungespeicherte \xC4nderungen",rowStatusSaving:"Wird gespeichert\u2026",rowStatusSaved:"Gespeichert",rowStatusError:"Speichern fehlgeschlagen",rowStatusRetry:"Erneut versuchen",rowStatusDelete:"Zeile l\xF6schen",editDeleteConfirm:"Diese Zeile l\xF6schen?",editAddRowUndo:"Zeile hinzuf\xFCgen",editDeleteRowUndo:"Zeile l\xF6schen",editCellUndo:"{column} bearbeiten",editFillUndo:"{count} Zellen f\xFCllen",editPasteUndo:"{count} Zellen einf\xFCgen",editCutUndo:"{count} Zellen ausschneiden",editGroupTotal:"Gruppensumme",editGroupTotalUndo:"Summe von {column} \xE4ndern ({count} Zeilen)",editNoMatch:"Keine \xDCbereinstimmung",formEditTitle:"Zeile bearbeiten",formAddTitle:"Neue Zeile",formShortcut:"{key}+Enter zum Speichern \xB7 Esc zum Abbrechen",validationRequired:"Dieses Feld ist erforderlich",validationNumber:"Muss eine Zahl sein",validationFormat:"Ung\xFCltiges Format",validationEmail:"Ung\xFCltige E-Mail-Adresse",validationInvalid:"Ung\xFCltiger Wert",dateCalendar:"Kalender",dateOpenCalendar:"Kalender \xF6ffnen",datePreviousMonth:"Vorheriger Monat",dateNextMonth:"N\xE4chster Monat",monthJanuary:"Januar",monthFebruary:"Februar",monthMarch:"M\xE4rz",monthApril:"April",monthMay:"Mai",monthJune:"Juni",monthJuly:"Juli",monthAugust:"August",monthSeptember:"September",monthOctober:"Oktober",monthNovember:"November",monthDecember:"Dezember",weekStartsOn:"1",weekdaySu:"So",weekdayMo:"Mo",weekdayTu:"Di",weekdayWe:"Mi",weekdayTh:"Do",weekdayFr:"Fr",weekdaySa:"Sa",importTitle:"Daten importieren",importStepSource:"1. Quelle",importStepMap:"2. Spalten zuordnen",importFile:"CSV-Datei",importPaste:"\u2026oder Zeilen einf\xFCgen",importSeparator:"Trennzeichen",importSeparatorAuto:"Automatisch erkennen",importSeparatorComma:"Komma ,",importSeparatorSemicolon:"Semikolon ;",importSeparatorTab:"Tabulator",importSeparatorPipe:"Pipe |",importFileColumn:"Dateispalte",importDetected:"Erkannt",importGridColumn:"Tabellenspalte",importSample:"Beispiel",importSkip:"\u2014 \xFCberspringen \u2014",importPreview:"Vorschau",importNoSource:"W\xE4hlen Sie zuerst eine Datei oder f\xFCgen Sie Zeilen ein.",importNoRows:"Es wurden keine Datenzeilen gefunden.",importAction:"Importieren",exportAborted:"Export abgebrochen",exportSheetName:"Daten",chart:"Diagramm",chartCategory:"Kategorie",chartSeries:"Reihe",chartAddSeries:"Reihe hinzuf\xFCgen",chartRemoveSeries:"Entfernen",chartSource:"Daten",chartSourceView:"Gefilterte Zeilen",chartSourceSelection:"Ausgew\xE4hlte Zeilen",chartSourceAll:"Alle Zeilen",chartSourceRange:"Ausgew\xE4hlter Bereich (Zeilen {from}\u2013{to})",chartClose:"Diagramm schlie\xDFen",chartFullscreen:"Vollbild",chartExitFullscreen:"Vollbild beenden",chartFloat:"Abdocken",chartDock:"Andocken",chartNewWindow:"Neues Fenster",chartMoveWindow:"Diagrammfenster verschieben",chartResizeWindow:"Gr\xF6\xDFe des Diagrammfensters \xE4ndern",chartResizeDock:"Ziehen, um die Diagrammh\xF6he zu \xE4ndern",chartSwitch:"Kategorie und Reihen tauschen",chartUnlink:"Entkoppeln",chartLink:"Verkn\xFCpfen",chartUnlinked:"Entkoppelt: Das Diagramm beh\xE4lt seine Daten und folgt dem Raster nicht mehr.",chartExportPng:"PNG",chartExportSvg:"SVG",chartExportFailed:"Das Diagramm konnte nicht exportiert werden.",chartCrossFiltered:"Die Tabelle ist auf {value} gefiltert.",chartBlankCategory:"(leer)",chartTruncated:"Es werden die obersten {n} Kategorien angezeigt; die \xFCbrigen sind als \u201ESonstige\u201C zusammengefasst.",chartOther:"Sonstige",chartEmpty:"Noch nichts darzustellen.",chartNoVisibleSeries:"Keine sichtbaren Reihen.",chartNeedsMoreSeries:"Dieser Diagrammtyp braucht mindestens zwei Wertspalten (zum Beispiel Tief und Hoch) \u2014 f\xFCgen Sie eine zweite Reihe hinzu.",chartLoading:"Wird geladen\u2026",chartNeedsRecharts:"Diagramme ben\xF6tigen das optionale Paket `recharts`. Installieren Sie es, um sie zu zeichnen.",chartOnlyOneSeries:"Dieser Diagrammtyp zeigt eine Reihe.",chartByColumn:"Diagramm nach dieser Spalte",chartGroupBy:"Nach",chartGroupNone:"Jeder Wert",chartGroupAuto:"Automatisch",chartGroupDay:"Tag",chartGroupWeek:"Woche",chartGroupMonth:"Monat",chartGroupQuarter:"Quartal",chartGroupYear:"Jahr",chartGroupBins:"{n} Klassen",chartBucketAdjusted:"Zu viele Intervalle f\xFCr eine Achse \u2014 gr\xF6ber gruppiert.",chartWindowed:"{shown} von {total} werden angezeigt.",chartShowAll:"Alle anzeigen",chartCanvasHint:"Diagramm. Scrollen zum Zoomen, Ziehen zum Verschieben, Pfeiltasten zum Bewegen, 0 f\xFCr alle.",chartCanvasHintPick:"Diagramm. Pfeiltasten w\xE4hlen eine Kategorie, Enter oder Leertaste filtert das Raster danach (Strg f\xFCgt hinzu), + und \u2212 zoomen, 0 zeigt alles.",chartCategoryFocus:"{category}: {values} \u2014 {position} von {count}",chartCategoryFiltered:"filtert das Raster",chartAggSum:"Summe",chartAggAvg:"Durchschnitt",chartAggMin:"Min",chartAggMax:"Max",chartAggCount:"Anzahl",chartAggDistinct:"Eindeutig",chartAggFirst:"Erster",chartAggLast:"Letzter",chartTypeColumn:"S\xE4ule",chartTypeBar:"Balken",chartTypeLine:"Linie",chartTypeArea:"Fl\xE4che",chartTypePie:"Kreis",chartTypeDonut:"Ring",chartStacking:"Reihenanordnung",chartStackGrouped:"Gruppiert",chartStackStacked:"Gestapelt",chartStackNormalized:"Gestapelt 100 %",chartFormat:"Format",chartFormatTitle:"Titel",chartFormatCategoryAxis:"Titel der Kategorieachse",chartFormatValueAxis:"Titel der Werteachse",chartFormatLegend:"Legende",chartLegendTop:"Oben",chartLegendBottom:"Unten",chartLegendLeft:"Links",chartLegendRight:"Rechts",chartLegendNone:"Ausgeblendet",chartFormatDataLabels:"Datenbeschriftungen",chartFormatScale:"Werteskala",chartScaleLinear:"Linear",chartScaleLog:"Logarithmisch",chartFormatTextSize:"Textgr\xF6\xDFe",chartFormatTextColor:"Textfarbe",chartFormatDefault:"Standard",chartFormatLabelAngle:"Kategoriebeschriftungen",chartAngleAuto:"Automatisch",chartAngleFlat:"Waagerecht",chartFormatGridLines:"Gitternetzlinien",chartGridValue:"Werteachse",chartGridBoth:"Beide Achsen",chartGridNone:"Keine",chartFormatGridDashed:"Gestricheltes Gitter",chartFormatLineWidth:"Linienst\xE4rke",chartFormatLineDashed:"Gestrichelte Linien",chartFormatFillOpacity:"Deckkraft der F\xFCllung",chartFormatDateFormat:"Datumsformat",chartFormatPalette:"Farben",chartPaletteTheme:"Design",chartPaletteClassic:"Klassisch",chartPaletteColorblind:"Farbenblind-sicher",chartPaletteVivid:"Kr\xE4ftig",chartPaletteMonochrome:"Eine Farbe",sparklineSummary:"{count} Werte von {min} bis {max}, zuletzt {last}",chartTypeWaterfall:"Wasserfall",chartTypeFunnel:"Trichter",chartTypeTreemap:"Treemap",chartTypeHeatmap:"Heatmap",chartTypeBox:"Boxplot",chartTypeRadar:"Netz",chartTypeRangeBar:"Spanne",chartBoxQ1:"Q1",chartBoxMedian:"Median",chartBoxQ3:"Q3",chartBoxOutlier:"Ausrei\xDFer",chartTotal:"Gesamt",chartTypeScatter:"Punkt (XY)",chartTypeBubble:"Blase",chartXAxis:"X-Achse",chartBubbleSize:"Gr\xF6\xDFe",chartXYSampled:"{shown} von {total} Punkten, gleichm\xE4\xDFig ausgew\xE4hlt",licenseMissing:"Nicht lizenziert",licenseExpired:"Lizenz abgelaufen",licenseReleaseNotCovered:"Diese Version ist nicht durch die Lizenz abgedeckt",licenseDomainMismatch:"Lizenz gilt nicht f\xFCr diese Domain",licenseRevoked:"Lizenz widerrufen",licenseInvalidFormat:"Lizenzschl\xFCssel fehlerhaft",licenseInvalidSignature:"Ung\xFCltige Lizenzsignatur",licenseEngineUnavailable:"Browser kann die Lizenz nicht pr\xFCfen (HTTPS erforderlich)",calcAdd:"Berechnete Spalte hinzuf\xFCgen\u2026",calcEdit:"Berechnete Spalte bearbeiten\u2026",calcRemove:"Berechnete Spalte entfernen",calcTitleAdd:"Berechnete Spalte hinzuf\xFCgen",calcTitleEdit:"Berechnete Spalte bearbeiten",calcName:"Name",calcFormula:"Formel",calcFormulaHint:"Spalten als [Name] schreiben. Beispiel: [Preis] * [Menge]",calcColumns:"Spalten",calcFunctions:"Funktionen",calcPreview:"Vorschau",calcPreviewEmpty:"Keine Zeilen f\xFCr die Vorschau",calcErrorAt:"{message} (Zeichen {position})",calcAddButton:"Hinzuf\xFCgen",calcArgsAtLeast:"{min} oder mehr",formulaError_empty:"Formel eingeben",formulaError_unclosedText:'Text nicht geschlossen: ein " fehlt',formulaError_unclosedColumn:"Spaltenname nicht geschlossen: ein ] fehlt",formulaError_emptyColumn:"Leerer Spaltenname []",formulaError_unexpectedChar:"Unerwartetes Zeichen {text}",formulaError_expected:"{text} fehlt",formulaError_cellAfterColon:'Nach ":" fehlt eine Zelle',formulaError_unknownName:"Unbekannter Name {name} \u2014 Spalten als [{name}] schreiben",formulaError_unexpected:"Unerwartetes {text}",formulaError_endsEarly:"Die Formel endet zu fr\xFCh",formulaError_trailing:"Unerwarteter Text am Ende",formulaError_unknownColumn:"Es gibt keine Spalte [{name}]",formulaError_unknownFunction:"Unbekannte Funktion {name}",formulaError_argCount:"{name} erwartet {range} Argument(e)",formulaError_cellsNotAllowed:"Zellbez\xFCge wie A1 gibt es hier nicht \u2014 Spalten als [Name] schreiben"},Xh={ok:"OK",cancel:"Annuler",apply:"Appliquer",close:"Fermer",clear:"Effacer",save:"Enregistrer",search:"Rechercher...",selectAll:"Tout s\xE9lectionner",showAll:"Tout afficher",remove:"Supprimer",none:"Aucun",toolbarSearch:"Rechercher...",exportMenu:"Exporter",exportCsv:"Exporter en CSV",exportExcel:"Exporter toutes les donn\xE9es vers Excel",exportExcelSelected:"Exporter les lignes s\xE9lectionn\xE9es vers Excel",exportPdf:"Exporter en PDF",exporting:"Exportation\u2026",columns:"Colonnes",hiddenColumns:"Colonnes masqu\xE9es",noHiddenColumns:"Aucune colonne masqu\xE9e.",sortAsc:"Trier de A \xE0 Z",sortDesc:"Trier de Z \xE0 A",clearSort:"Effacer le tri",cardSortBy:"Trier par",groupByColumn:"Grouper par cette colonne",ungroupColumn:"Retirer du groupement",showGroupPanel:"Afficher le panneau de groupement",hideGroupPanel:"Masquer le panneau de groupement",showFooter:"Afficher le pied de tableau",hideFooter:"Masquer le pied de tableau",showGroupFooters:"Afficher les pieds de groupe",hideGroupFooters:"Masquer les pieds de groupe",hideColumn:"Masquer cette colonne",fieldChooser:"S\xE9lecteur de champs\u2026",bestFit:"Ajuster la largeur",bestFitAll:"Ajuster la largeur (toutes les colonnes)",pinRowTop:"\xC9pingler la ligne en haut",pinRowBottom:"\xC9pingler la ligne en bas",unpinRow:"D\xE9s\xE9pingler la ligne",findLabel:"Rechercher dans la grille",findPrevious:"R\xE9sultat pr\xE9c\xE9dent",findNext:"R\xE9sultat suivant",findClose:"Fermer la recherche",findCount:"{n} sur {count}",findNone:"Aucun r\xE9sultat",renameColumn:"Renommer la colonne",fixedPosition:"D\xE9finir une position fixe",pinLeft:"Gauche",pinRight:"Droite",pinSticky:"Fixe",unpin:"Lib\xE9rer",moveLeft:"D\xE9placer vers la gauche",moveRight:"D\xE9placer vers la droite",filterPlaceholder:"Filtrer\u2026",filterColumnAria:"Filtrer {column}",filterOperatorDefault:"Par d\xE9faut",filterOperatorAria:"Op\xE9rateur de filtre pour {column}",filterSelectAll:"Tout s\xE9lectionner",filterBlank:"(Vides)",filterNonBlank:"(Non vides)",filterEmptyText:"(texte vide)",filterSpace:"(1 espace)",filterSpaces:"({n} espaces)",filterNoMatch:"Aucune valeur correspondante",filterLoading:"Chargement des valeurs\u2026",filterTruncated:"Seules les premi\xE8res valeurs sont affich\xE9es \u2014 recherchez pour trouver les autres.",filterRemove:"Supprimer le filtre",filterToggle:"Appliquer le filtre",filterEditBuilder:"Modifier le filtre",filterNone:"Aucun filtre",filterActive:"Filtre actif",opEquals:"est",opNotEquals:"n'est pas",opGreater:">",opGreaterOrEqual:"\u2265",opLess:"<",opLessOrEqual:"\u2264",opContains:"contient",opNotContains:"ne contient pas",opStartsWith:"commence par",opEndsWith:"se termine par",opIsBlank:"est vide",opIsNotBlank:"n'est pas vide",opIsOneOf:"fait partie de",opIsBetween:"est entre",opValuesCount:"{n} valeurs",opInPeriod:"est dans",periodToday:"aujourd'hui",periodYesterday:"hier",periodTomorrow:"demain",periodThisWeek:"cette semaine",periodLastWeek:"la semaine derni\xE8re",periodNextWeek:"la semaine prochaine",periodThisMonth:"ce mois-ci",periodLastMonth:"le mois dernier",periodNextMonth:"le mois prochain",periodThisQuarter:"ce trimestre",periodLastQuarter:"le trimestre dernier",periodNextQuarter:"le trimestre prochain",periodThisYear:"cette ann\xE9e",periodLastYear:"l'ann\xE9e derni\xE8re",periodNextYear:"l'ann\xE9e prochaine",periodYearToDate:"depuis le d\xE9but de l'ann\xE9e",periodLastDays:"les {n} derniers jours",periodNextDays:"les {n} prochains jours",filterAnd:"ET",filterOr:"OU",builderTitle:"G\xE9n\xE9rateur de filtre",builderCombine:"Combiner les conditions avec",builderAddCondition:"Ajouter une condition",builderAddGroup:"Ajouter un groupe",builderRemoveGroup:"Supprimer le groupe",builderRemoveCondition:"Supprimer la condition",builderEmpty:"Aucune condition pour le moment.",builderColumn:"Colonne",builderOperator:"Op\xE9rateur",builderValue:"Valeur",builderValueFrom:"De",builderValueTo:"\xC0",builderValuePlaceholder:"Saisissez une valeur",builderOpen:"G\xE9n\xE9rateur de filtre\u2026",builderClearAll:"Tout effacer",builderConditionButton:"+ Condition",builderGroupButton:"+ Groupe",builderTrue:"vrai",builderFalse:"faux",builderPeriod:"P\xE9riode",builderDays:"Jours",filterCustom:"(Personnalis\xE9\u2026)",filterPopupAria:"Filtre {column}",importOpen:"Importer\u2026",groupPanelHint:"Faites glisser une colonne ici pour grouper",groupAddLevel:"Ajouter un niveau de groupement",groupAddLevelButton:"+ Ajouter un niveau\u2026",groupNoGrouping:"(aucun groupement)",groupLevelAria:"Niveau de groupement {n}",groupRemoveAria:"Supprimer {column}",groupExpandAll:"D\xE9velopper tout",groupCollapseAll:"R\xE9duire tout",pagerFirst:"Premi\xE8re page",pagerPrevious:"Page pr\xE9c\xE9dente",pagerNext:"Page suivante",pagerLast:"Derni\xE8re page",pagerPage:"Page",pagerOf:"sur",pagerRowsPerPage:"Lignes par page",pagerAria:"Pagination",pagerPageButton:"Page {n}",selectAllRows:"S\xE9lectionner toutes les lignes",selectRowAria:"S\xE9lectionner la ligne {row}",selectGroupAria:"S\xE9lectionner les {count} lignes de {group}",summaryAria:"Synth\xE8se",columnTotalsAria:"Totaux des colonnes",rowActions:"Actions de ligne",detailsAria:"D\xE9tails",rowNumberAria:"Num\xE9ro de ligne",noteEditorAria:"Note de cellule",notePlaceholder:"\xC9crivez une note sur cette cellule\u2026",addNote:"Ajouter une note\u2026",editNote:"Modifier la note\u2026",deleteNote:"Supprimer la note",expandDetails:"D\xE9velopper les d\xE9tails",collapseDetails:"R\xE9duire les d\xE9tails",expandTreeRow:"D\xE9velopper la ligne",collapseTreeRow:"R\xE9duire la ligne",expandColumnGroup:"D\xE9velopper le groupe de colonnes",collapseColumnGroup:"R\xE9duire le groupe de colonnes",dragToReorder:"Faire glisser pour r\xE9ordonner",menuCopy:"Copier",menuCopyWithHeaders:"Copier avec les en-t\xEAtes",menuCopyWithGroupHeaders:"Copier avec les en-t\xEAtes de groupe",menuCut:"Couper",menuPaste:"Coller",menuExport:"Exporter",menuChartRange:"Graphique des cellules s\xE9lectionn\xE9es",statsSum:"Somme",statsCount:"Nombre",statsAvg:"Moyenne",statsMin:"Min",statsMax:"Max",statsCells:"Cellules",statsTooLarge:"S\xE9lection trop grande pour \xEAtre totalis\xE9e",statusRows:"Lignes",statusFiltered:"Filtr\xE9es",statusSelected:"S\xE9lectionn\xE9es",summaryRows:"lignes",announceRows:"{n} lignes",announceSortedBy:"tri\xE9 par {columns}",announceSelected:"{n} s\xE9lectionn\xE9es",announceAscending:"croissant",announceDescending:"d\xE9croissant",sideFilters:"Filtres",sideBarAria:"Panneaux d'outils",sideClearFilters:"Effacer tous les filtres",summarySum:"Somme",summaryAvg:"Moyenne",summaryMin:"Min",summaryMax:"Max",summaryCount:"Nombre",summaryDistinct:"Distinct",summaryCustom:"Personnalis\xE9",noTotal:"Aucun total",busy:"En cours\u2026",busyLoading:"Chargement des lignes\u2026",rowsLoadFailed:"Impossible de charger ces lignes.",retryLoad:"R\xE9essayer",busyEncoding:"Pr\xE9paration des donn\xE9es\u2026",busyFiltering:"Filtrage des lignes\u2026",busySorting:"Tri des lignes\u2026",busyComputing:"Filtrage et tri\u2026",busyGrouping:"Construction des groupes\u2026",busyAggregating:"Calcul des totaux\u2026",busyProjecting:"Mise \xE0 jour de la vue\u2026",busyExporting:"Cr\xE9ation du fichier\u2026",noData:"Aucune donn\xE9e trouv\xE9e",editNewRow:"Nouvelle ligne",editSaveChanges:"Enregistrer les modifications",editDiscardChanges:"Annuler les modifications",editRow:"Modifier la ligne",editRowMenu:"Modifier la ligne\u2026",editDeleteRow:"Supprimer la ligne",editUndoDelete:"Annuler la suppression",editActions:"Actions",editSaveRow:"Enregistrer la ligne",editSaving:"Enregistrement\u2026",editEditingRow:"Modification de la ligne {row}",editSaveCount:"Enregistrer {n} ligne(s)",editCannotSave:"Enregistrement impossible",editSaveFailed:"Les modifications n'ont pas pu \xEAtre enregistr\xE9es.",rowStatusChanged:"Modifications non enregistr\xE9es",rowStatusSaving:"Enregistrement\u2026",rowStatusSaved:"Enregistr\xE9",rowStatusError:"\xC9chec de l'enregistrement",rowStatusRetry:"R\xE9essayer",rowStatusDelete:"Supprimer la ligne",editDeleteConfirm:"Supprimer cette ligne ?",editAddRowUndo:"Ajouter une ligne",editDeleteRowUndo:"Supprimer la ligne",editCellUndo:"Modifier {column}",editFillUndo:"Remplir {count} cellules",editPasteUndo:"Coller {count} cellules",editCutUndo:"Couper {count} cellules",editGroupTotal:"Total du groupe",editGroupTotalUndo:"Modifier le total de {column} ({count} lignes)",editNoMatch:"Aucune correspondance",formEditTitle:"Modifier la ligne",formAddTitle:"Nouvelle ligne",formShortcut:"{key}+Entr\xE9e pour enregistrer \xB7 \xC9chap pour annuler",validationRequired:"Ce champ est obligatoire",validationNumber:"Doit \xEAtre un nombre",validationFormat:"Format invalide",validationEmail:"Adresse e-mail invalide",validationInvalid:"Valeur invalide",dateCalendar:"Calendrier",dateOpenCalendar:"Ouvrir le calendrier",datePreviousMonth:"Mois pr\xE9c\xE9dent",dateNextMonth:"Mois suivant",monthJanuary:"Janvier",monthFebruary:"F\xE9vrier",monthMarch:"Mars",monthApril:"Avril",monthMay:"Mai",monthJune:"Juin",monthJuly:"Juillet",monthAugust:"Ao\xFBt",monthSeptember:"Septembre",monthOctober:"Octobre",monthNovember:"Novembre",monthDecember:"D\xE9cembre",weekStartsOn:"1",weekdaySu:"Di",weekdayMo:"Lu",weekdayTu:"Ma",weekdayWe:"Me",weekdayTh:"Je",weekdayFr:"Ve",weekdaySa:"Sa",importTitle:"Importer des donn\xE9es",importStepSource:"1. Source",importStepMap:"2. Associer les colonnes",importFile:"Fichier CSV",importPaste:"\u2026ou collez des lignes",importSeparator:"S\xE9parateur",importSeparatorAuto:"D\xE9tecter automatiquement",importSeparatorComma:"Virgule ,",importSeparatorSemicolon:"Point-virgule ;",importSeparatorTab:"Tabulation",importSeparatorPipe:"Barre verticale |",importFileColumn:"Colonne du fichier",importDetected:"D\xE9tect\xE9",importGridColumn:"Colonne du tableau",importSample:"Exemple",importSkip:"\u2014 ignorer \u2014",importPreview:"Aper\xE7u",importNoSource:"Choisissez d'abord un fichier ou collez des lignes.",importNoRows:"Aucune ligne de donn\xE9es trouv\xE9e.",importAction:"Importer",exportAborted:"Exportation interrompue",exportSheetName:"Donn\xE9es",chart:"Graphique",chartCategory:"Cat\xE9gorie",chartSeries:"S\xE9rie",chartAddSeries:"Ajouter une s\xE9rie",chartRemoveSeries:"Supprimer",chartSource:"Donn\xE9es",chartSourceView:"Lignes filtr\xE9es",chartSourceSelection:"Lignes s\xE9lectionn\xE9es",chartSourceAll:"Toutes les lignes",chartSourceRange:"Plage s\xE9lectionn\xE9e (lignes {from}\u2013{to})",chartClose:"Fermer le graphique",chartFullscreen:"Plein \xE9cran",chartExitFullscreen:"Quitter le plein \xE9cran",chartFloat:"D\xE9tacher",chartDock:"Ancrer",chartNewWindow:"Nouvelle fen\xEAtre",chartMoveWindow:"D\xE9placer la fen\xEAtre du graphique",chartResizeWindow:"Redimensionner la fen\xEAtre du graphique",chartResizeDock:"Faites glisser pour changer la hauteur du graphique",chartSwitch:"Permuter cat\xE9gories et s\xE9ries",chartUnlink:"Dissocier",chartLink:"Lier",chartUnlinked:"Dissoci\xE9 : le graphique garde ses donn\xE9es et ne suit plus la grille.",chartExportPng:"PNG",chartExportSvg:"SVG",chartExportFailed:"Le graphique n'a pas pu \xEAtre export\xE9.",chartCrossFiltered:"Le tableau est filtr\xE9 sur {value}.",chartBlankCategory:"(vide)",chartTruncated:"Affichage des {n} premi\xE8res cat\xE9gories ; les autres sont regroup\xE9es sous \xAB Autres \xBB.",chartOther:"Autres",chartEmpty:"Rien \xE0 repr\xE9senter pour le moment.",chartNoVisibleSeries:"Aucune s\xE9rie visible.",chartNeedsMoreSeries:"Ce type de graphique demande au moins deux colonnes de valeurs (par exemple un minimum et un maximum) \u2014 ajoutez une deuxi\xE8me s\xE9rie.",chartLoading:"Chargement\u2026",chartNeedsRecharts:"Les graphiques n\xE9cessitent le paquet optionnel `recharts`. Installez-le pour les dessiner.",chartOnlyOneSeries:"Ce type de graphique affiche une seule s\xE9rie.",chartByColumn:"Graphique par cette colonne",chartGroupBy:"Par",chartGroupNone:"Chaque valeur",chartGroupAuto:"Automatique",chartGroupDay:"Jour",chartGroupWeek:"Semaine",chartGroupMonth:"Mois",chartGroupQuarter:"Trimestre",chartGroupYear:"Ann\xE9e",chartGroupBins:"{n} classes",chartBucketAdjusted:"Trop d\u2019intervalles pour un axe \u2014 regroupement plus large.",chartWindowed:"Affichage de {shown} sur {total}.",chartShowAll:"Tout afficher",chartCanvasHint:"Graphique. Faites d\xE9filer pour zoomer, glissez pour d\xE9placer, fl\xE8ches pour parcourir, 0 pour tout afficher.",chartCanvasHintPick:"Graphique. Les fl\xE8ches choisissent une cat\xE9gorie, Entr\xE9e ou Espace filtre la grille sur elle (Ctrl en ajoute une), + et \u2212 zooment, 0 affiche tout.",chartCategoryFocus:"{category} : {values} \u2014 {position} sur {count}",chartCategoryFiltered:"filtre la grille",chartAggSum:"Somme",chartAggAvg:"Moyenne",chartAggMin:"Min",chartAggMax:"Max",chartAggCount:"Nombre",chartAggDistinct:"Distinct",chartAggFirst:"Premier",chartAggLast:"Dernier",chartTypeColumn:"Colonnes",chartTypeBar:"Barres",chartTypeLine:"Courbe",chartTypeArea:"Aires",chartTypePie:"Secteurs",chartTypeDonut:"Anneau",chartStacking:"Disposition des s\xE9ries",chartStackGrouped:"Group\xE9",chartStackStacked:"Empil\xE9",chartStackNormalized:"Empil\xE9 100 %",chartFormat:"Format",chartFormatTitle:"Titre",chartFormatCategoryAxis:"Titre de l\u2019axe des cat\xE9gories",chartFormatValueAxis:"Titre de l\u2019axe des valeurs",chartFormatLegend:"L\xE9gende",chartLegendTop:"En haut",chartLegendBottom:"En bas",chartLegendLeft:"\xC0 gauche",chartLegendRight:"\xC0 droite",chartLegendNone:"Masqu\xE9e",chartFormatDataLabels:"\xC9tiquettes de donn\xE9es",chartFormatScale:"\xC9chelle des valeurs",chartScaleLinear:"Lin\xE9aire",chartScaleLog:"Logarithmique",chartFormatTextSize:"Taille du texte",chartFormatTextColor:"Couleur du texte",chartFormatDefault:"Par d\xE9faut",chartFormatLabelAngle:"\xC9tiquettes de cat\xE9gorie",chartAngleAuto:"Automatique",chartAngleFlat:"Horizontales",chartFormatGridLines:"Quadrillage",chartGridValue:"Axe des valeurs",chartGridBoth:"Les deux axes",chartGridNone:"Aucun",chartFormatGridDashed:"Quadrillage en pointill\xE9s",chartFormatLineWidth:"\xC9paisseur du trait",chartFormatLineDashed:"Traits en pointill\xE9s",chartFormatFillOpacity:"Opacit\xE9 du remplissage",chartFormatDateFormat:"Format de date",chartFormatPalette:"Couleurs",chartPaletteTheme:"Th\xE8me",chartPaletteClassic:"Classique",chartPaletteColorblind:"Adapt\xE9e au daltonisme",chartPaletteVivid:"Vives",chartPaletteMonochrome:"Une couleur",sparklineSummary:"{count} valeurs de {min} \xE0 {max}, derni\xE8re {last}",chartTypeWaterfall:"Cascade",chartTypeFunnel:"Entonnoir",chartTypeTreemap:"Compartimentage",chartTypeHeatmap:"Carte thermique",chartTypeBox:"Bo\xEEte \xE0 moustaches",chartTypeRadar:"Radar",chartTypeRangeBar:"Plage",chartBoxQ1:"Q1",chartBoxMedian:"M\xE9diane",chartBoxQ3:"Q3",chartBoxOutlier:"Valeur aberrante",chartTotal:"Total",chartTypeScatter:"Nuage de points",chartTypeBubble:"Bulles",chartXAxis:"Axe X",chartBubbleSize:"Taille",chartXYSampled:"{shown} points sur {total}, \xE9chantillonn\xE9s r\xE9guli\xE8rement",licenseMissing:"Sans licence",licenseExpired:"Licence expir\xE9e",licenseReleaseNotCovered:"Cette version n\u2019est pas couverte par la licence",licenseDomainMismatch:"Licence non valide pour ce domaine",licenseRevoked:"Licence r\xE9voqu\xE9e",licenseInvalidFormat:"Cl\xE9 de licence mal form\xE9e",licenseInvalidSignature:"Signature de licence invalide",licenseEngineUnavailable:"Le navigateur ne peut pas v\xE9rifier la licence (HTTPS requis)",calcAdd:"Ajouter une colonne calcul\xE9e\u2026",calcEdit:"Modifier la colonne calcul\xE9e\u2026",calcRemove:"Supprimer la colonne calcul\xE9e",calcTitleAdd:"Ajouter une colonne calcul\xE9e",calcTitleEdit:"Modifier la colonne calcul\xE9e",calcName:"Nom",calcFormula:"Formule",calcFormulaHint:"\xC9crivez une colonne [Nom]. Exemple : [Prix] * [Qt\xE9]",calcColumns:"Colonnes",calcFunctions:"Fonctions",calcPreview:"Aper\xE7u",calcPreviewEmpty:"Aucune ligne \xE0 pr\xE9visualiser",calcErrorAt:"{message} (caract\xE8re {position})",calcAddButton:"Ajouter",calcArgsAtLeast:"{min} ou plus",formulaError_empty:"Saisissez une formule",formulaError_unclosedText:'Texte non ferm\xE9 : il manque un "',formulaError_unclosedColumn:"Nom de colonne non ferm\xE9 : il manque un ]",formulaError_emptyColumn:"Nom de colonne vide []",formulaError_unexpectedChar:"Caract\xE8re inattendu {text}",formulaError_expected:"{text} manquant",formulaError_cellAfterColon:"Une cellule manque apr\xE8s \xAB : \xBB",formulaError_unknownName:"Nom inconnu {name} \u2014 \xE9crivez la colonne [{name}]",formulaError_unexpected:"{text} inattendu",formulaError_endsEarly:"La formule se termine trop t\xF4t",formulaError_trailing:"Texte inattendu \xE0 la fin",formulaError_unknownColumn:"Il n'y a pas de colonne [{name}]",formulaError_unknownFunction:"Fonction inconnue {name}",formulaError_argCount:"{name} attend {range} argument(s)",formulaError_cellsNotAllowed:"Les r\xE9f\xE9rences de cellule comme A1 ne servent pas ici \u2014 \xE9crivez une colonne [Nom]"},Zh={ok:"Aceptar",cancel:"Cancelar",apply:"Aplicar",close:"Cerrar",clear:"Borrar",save:"Guardar",search:"Buscar...",selectAll:"Seleccionar todo",showAll:"Mostrar todo",remove:"Quitar",none:"Ninguno",toolbarSearch:"Buscar...",exportMenu:"Exportar",exportCsv:"Exportar a CSV",exportExcel:"Exportar todos los datos a Excel",exportExcelSelected:"Exportar las filas seleccionadas a Excel",exportPdf:"Exportar a PDF",exporting:"Exportando\u2026",columns:"Columnas",hiddenColumns:"Columnas ocultas",noHiddenColumns:"No hay columnas ocultas.",sortAsc:"Ordenar de la A a la Z",sortDesc:"Ordenar de la Z a la A",clearSort:"Borrar ordenaci\xF3n",cardSortBy:"Ordenar por",groupByColumn:"Agrupar por esta columna",ungroupColumn:"Quitar de la agrupaci\xF3n",showGroupPanel:"Mostrar panel de agrupaci\xF3n",hideGroupPanel:"Ocultar panel de agrupaci\xF3n",showFooter:"Mostrar pie de tabla",hideFooter:"Ocultar pie de tabla",showGroupFooters:"Mostrar pies de grupo",hideGroupFooters:"Ocultar pies de grupo",hideColumn:"Ocultar esta columna",fieldChooser:"Selector de campos\u2026",bestFit:"Ajustar ancho",bestFitAll:"Ajustar ancho (todas las columnas)",pinRowTop:"Fijar fila arriba",pinRowBottom:"Fijar fila abajo",unpinRow:"Desfijar fila",findLabel:"Buscar en la tabla",findPrevious:"Coincidencia anterior",findNext:"Coincidencia siguiente",findClose:"Cerrar b\xFAsqueda",findCount:"{n} de {count}",findNone:"Sin coincidencias",renameColumn:"Cambiar nombre de columna",fixedPosition:"Establecer posici\xF3n fija",pinLeft:"Izquierda",pinRight:"Derecha",pinSticky:"Fija",unpin:"Liberar",moveLeft:"Mover a la izquierda",moveRight:"Mover a la derecha",filterPlaceholder:"Filtrar\u2026",filterColumnAria:"Filtrar {column}",filterOperatorDefault:"Predeterminado",filterOperatorAria:"Operador de filtro para {column}",filterSelectAll:"Seleccionar todo",filterBlank:"(En blanco)",filterNonBlank:"(No en blanco)",filterEmptyText:"(texto vac\xEDo)",filterSpace:"(1 espacio)",filterSpaces:"({n} espacios)",filterNoMatch:"No hay valores coincidentes",filterLoading:"Cargando valores\u2026",filterTruncated:"Solo se muestran los primeros valores \u2014 busque para encontrar el resto.",filterRemove:"Quitar el filtro",filterToggle:"Aplicar el filtro",filterEditBuilder:"Editar el filtro",filterNone:"Sin filtro",filterActive:"Filtro activo",opEquals:"es",opNotEquals:"no es",opGreater:">",opGreaterOrEqual:"\u2265",opLess:"<",opLessOrEqual:"\u2264",opContains:"contiene",opNotContains:"no contiene",opStartsWith:"empieza por",opEndsWith:"termina en",opIsBlank:"est\xE1 en blanco",opIsNotBlank:"no est\xE1 en blanco",opIsOneOf:"es uno de",opIsBetween:"est\xE1 entre",opValuesCount:"{n} valores",opInPeriod:"est\xE1 en",periodToday:"hoy",periodYesterday:"ayer",periodTomorrow:"ma\xF1ana",periodThisWeek:"esta semana",periodLastWeek:"la semana pasada",periodNextWeek:"la pr\xF3xima semana",periodThisMonth:"este mes",periodLastMonth:"el mes pasado",periodNextMonth:"el pr\xF3ximo mes",periodThisQuarter:"este trimestre",periodLastQuarter:"el trimestre pasado",periodNextQuarter:"el pr\xF3ximo trimestre",periodThisYear:"este a\xF1o",periodLastYear:"el a\xF1o pasado",periodNextYear:"el pr\xF3ximo a\xF1o",periodYearToDate:"en lo que va de a\xF1o",periodLastDays:"los \xFAltimos {n} d\xEDas",periodNextDays:"los pr\xF3ximos {n} d\xEDas",filterAnd:"Y",filterOr:"O",builderTitle:"Generador de filtros",builderCombine:"Combinar condiciones con",builderAddCondition:"A\xF1adir condici\xF3n",builderAddGroup:"A\xF1adir grupo",builderRemoveGroup:"Quitar grupo",builderRemoveCondition:"Quitar condici\xF3n",builderEmpty:"Todav\xEDa no hay condiciones.",builderColumn:"Columna",builderOperator:"Operador",builderValue:"Valor",builderValueFrom:"Desde",builderValueTo:"Hasta",builderValuePlaceholder:"Introduzca un valor",builderOpen:"Generador de filtros\u2026",builderClearAll:"Borrar todo",builderConditionButton:"+ Condici\xF3n",builderGroupButton:"+ Grupo",builderTrue:"verdadero",builderFalse:"falso",builderPeriod:"Per\xEDodo",builderDays:"D\xEDas",filterCustom:"(Personalizado\u2026)",filterPopupAria:"Filtro {column}",importOpen:"Importar\u2026",groupPanelHint:"Arrastre una columna aqu\xED para agrupar por ella",groupAddLevel:"A\xF1adir nivel de agrupaci\xF3n",groupAddLevelButton:"+ A\xF1adir nivel\u2026",groupNoGrouping:"(sin agrupaci\xF3n)",groupLevelAria:"Nivel de agrupaci\xF3n {n}",groupRemoveAria:"Quitar {column}",groupExpandAll:"Expandir todo",groupCollapseAll:"Contraer todo",pagerFirst:"Primera p\xE1gina",pagerPrevious:"P\xE1gina anterior",pagerNext:"P\xE1gina siguiente",pagerLast:"\xDAltima p\xE1gina",pagerPage:"P\xE1gina",pagerOf:"de",pagerRowsPerPage:"Filas por p\xE1gina",pagerAria:"Paginaci\xF3n",pagerPageButton:"P\xE1gina {n}",selectAllRows:"Seleccionar todas las filas",selectRowAria:"Seleccionar la fila {row}",selectGroupAria:"Seleccionar las {count} filas de {group}",summaryAria:"Resumen",columnTotalsAria:"Totales de columna",rowActions:"Acciones de fila",detailsAria:"Detalles",rowNumberAria:"N\xFAmero de fila",noteEditorAria:"Nota de celda",notePlaceholder:"Escriba una nota sobre esta celda\u2026",addNote:"A\xF1adir nota\u2026",editNote:"Editar nota\u2026",deleteNote:"Eliminar nota",expandDetails:"Expandir detalles",collapseDetails:"Contraer detalles",expandTreeRow:"Expandir fila",collapseTreeRow:"Contraer fila",expandColumnGroup:"Expandir grupo de columnas",collapseColumnGroup:"Contraer grupo de columnas",dragToReorder:"Arrastre para reordenar",menuCopy:"Copiar",menuCopyWithHeaders:"Copiar con encabezados",menuCopyWithGroupHeaders:"Copiar con encabezados de grupo",menuCut:"Cortar",menuPaste:"Pegar",menuExport:"Exportar",menuChartRange:"Graficar celdas seleccionadas",statsSum:"Suma",statsCount:"Recuento",statsAvg:"Promedio",statsMin:"M\xEDnimo",statsMax:"M\xE1ximo",statsCells:"Celdas",statsTooLarge:"Selecci\xF3n demasiado grande para sumarla",statusRows:"Filas",statusFiltered:"Filtradas",statusSelected:"Seleccionadas",summaryRows:"filas",announceRows:"{n} filas",announceSortedBy:"ordenado por {columns}",announceSelected:"{n} seleccionadas",announceAscending:"ascendente",announceDescending:"descendente",sideFilters:"Filtros",sideBarAria:"Paneles de herramientas",sideClearFilters:"Borrar todos los filtros",summarySum:"Suma",summaryAvg:"Promedio",summaryMin:"M\xEDnimo",summaryMax:"M\xE1ximo",summaryCount:"Recuento",summaryDistinct:"Distintos",summaryCustom:"Personalizado",noTotal:"Sin total",busy:"Trabajando\u2026",busyLoading:"Cargando filas\u2026",rowsLoadFailed:"No se pudieron cargar estas filas.",retryLoad:"Reintentar",busyEncoding:"Preparando datos\u2026",busyFiltering:"Filtrando filas\u2026",busySorting:"Ordenando filas\u2026",busyComputing:"Filtrando y ordenando\u2026",busyGrouping:"Creando grupos\u2026",busyAggregating:"Calculando totales\u2026",busyProjecting:"Actualizando la vista\u2026",busyExporting:"Creando el archivo\u2026",noData:"No se encontraron datos",editNewRow:"Nueva fila",editSaveChanges:"Guardar cambios",editDiscardChanges:"Descartar cambios",editRow:"Editar fila",editRowMenu:"Editar fila\u2026",editDeleteRow:"Eliminar fila",editUndoDelete:"Deshacer eliminaci\xF3n",editActions:"Acciones",editSaveRow:"Guardar fila",editSaving:"Guardando\u2026",editEditingRow:"Editando la fila {row}",editSaveCount:"Guardar {n} fila(s)",editCannotSave:"No se puede guardar",editSaveFailed:"No se pudieron guardar los cambios.",rowStatusChanged:"Cambios sin guardar",rowStatusSaving:"Guardando\u2026",rowStatusSaved:"Guardado",rowStatusError:"Error al guardar",rowStatusRetry:"Reintentar",rowStatusDelete:"Eliminar fila",editDeleteConfirm:"\xBFEliminar esta fila?",editAddRowUndo:"A\xF1adir fila",editDeleteRowUndo:"Eliminar fila",editCellUndo:"Editar {column}",editFillUndo:"Rellenar {count} celdas",editPasteUndo:"Pegar {count} celdas",editCutUndo:"Cortar {count} celdas",editGroupTotal:"Total del grupo",editGroupTotalUndo:"Cambiar total de {column} ({count} filas)",editNoMatch:"Sin coincidencias",formEditTitle:"Editar fila",formAddTitle:"Nueva fila",formShortcut:"{key}+Intro para guardar \xB7 Esc para cancelar",validationRequired:"Este campo es obligatorio",validationNumber:"Debe ser un n\xFAmero",validationFormat:"Formato no v\xE1lido",validationEmail:"Direcci\xF3n de correo no v\xE1lida",validationInvalid:"Valor no v\xE1lido",dateCalendar:"Calendario",dateOpenCalendar:"Abrir calendario",datePreviousMonth:"Mes anterior",dateNextMonth:"Mes siguiente",monthJanuary:"Enero",monthFebruary:"Febrero",monthMarch:"Marzo",monthApril:"Abril",monthMay:"Mayo",monthJune:"Junio",monthJuly:"Julio",monthAugust:"Agosto",monthSeptember:"Septiembre",monthOctober:"Octubre",monthNovember:"Noviembre",monthDecember:"Diciembre",weekStartsOn:"1",weekdaySu:"Do",weekdayMo:"Lu",weekdayTu:"Ma",weekdayWe:"Mi",weekdayTh:"Ju",weekdayFr:"Vi",weekdaySa:"S\xE1",importTitle:"Importar datos",importStepSource:"1. Origen",importStepMap:"2. Asignar columnas",importFile:"Archivo CSV",importPaste:"\u2026o pegue filas",importSeparator:"Separador",importSeparatorAuto:"Detectar autom\xE1ticamente",importSeparatorComma:"Coma ,",importSeparatorSemicolon:"Punto y coma ;",importSeparatorTab:"Tabulador",importSeparatorPipe:"Barra vertical |",importFileColumn:"Columna del archivo",importDetected:"Detectado",importGridColumn:"Columna de la tabla",importSample:"Muestra",importSkip:"\u2014 omitir \u2014",importPreview:"Vista previa",importNoSource:"Elija primero un archivo o pegue algunas filas.",importNoRows:"No se encontraron filas de datos.",importAction:"Importar",exportAborted:"Exportaci\xF3n cancelada",exportSheetName:"Datos",chart:"Gr\xE1fico",chartCategory:"Categor\xEDa",chartSeries:"Serie",chartAddSeries:"A\xF1adir serie",chartRemoveSeries:"Quitar",chartSource:"Datos",chartSourceView:"Filas filtradas",chartSourceSelection:"Filas seleccionadas",chartSourceAll:"Todas las filas",chartSourceRange:"Rango seleccionado (filas {from}\u2013{to})",chartClose:"Cerrar el gr\xE1fico",chartFullscreen:"Pantalla completa",chartExitFullscreen:"Salir de pantalla completa",chartFloat:"Desacoplar",chartDock:"Acoplar",chartNewWindow:"Nueva ventana",chartMoveWindow:"Mover la ventana del gr\xE1fico",chartResizeWindow:"Cambiar el tama\xF1o de la ventana del gr\xE1fico",chartResizeDock:"Arrastre para cambiar la altura del gr\xE1fico",chartSwitch:"Intercambiar categor\xEDas y series",chartUnlink:"Desvincular",chartLink:"Vincular",chartUnlinked:"Desvinculado: el gr\xE1fico conserva sus datos y ya no sigue a la cuadr\xEDcula.",chartExportPng:"PNG",chartExportSvg:"SVG",chartExportFailed:"No se pudo exportar el gr\xE1fico.",chartCrossFiltered:"La tabla est\xE1 filtrada por {value}.",chartBlankCategory:"(en blanco)",chartTruncated:"Se muestran las {n} categor\xEDas principales; el resto se agrupa como \xABOtros\xBB.",chartOther:"Otros",chartEmpty:"Todav\xEDa no hay nada que representar.",chartNoVisibleSeries:"No hay series visibles.",chartNeedsMoreSeries:"Este tipo de gr\xE1fico necesita al menos dos columnas de valores (por ejemplo, m\xEDnimo y m\xE1ximo): a\xF1ada una segunda serie.",chartLoading:"Cargando\u2026",chartNeedsRecharts:"Los gr\xE1ficos necesitan el paquete opcional `recharts`. Inst\xE1lelo para dibujarlos.",chartOnlyOneSeries:"Este tipo de gr\xE1fico muestra una serie.",chartByColumn:"Gr\xE1fico por esta columna",chartGroupBy:"Por",chartGroupNone:"Cada valor",chartGroupAuto:"Autom\xE1tico",chartGroupDay:"D\xEDa",chartGroupWeek:"Semana",chartGroupMonth:"Mes",chartGroupQuarter:"Trimestre",chartGroupYear:"A\xF1o",chartGroupBins:"{n} intervalos",chartBucketAdjusted:"Demasiados intervalos para un eje \u2014 se agrup\xF3 de forma m\xE1s amplia.",chartWindowed:"Mostrando {shown} de {total}.",chartShowAll:"Mostrar todo",chartCanvasHint:"Gr\xE1fico. Desplace para acercar, arrastre para mover, flechas para navegar, 0 para verlo todo.",chartCanvasHintPick:"Gr\xE1fico. Las flechas eligen una categor\xEDa, Intro o Espacio filtra la cuadr\xEDcula por ella (Ctrl a\xF1ade otra), + y \u2212 hacen zoom, 0 muestra todo.",chartCategoryFocus:"{category}: {values} \u2014 {position} de {count}",chartCategoryFiltered:"filtrando la cuadr\xEDcula",chartAggSum:"Suma",chartAggAvg:"Promedio",chartAggMin:"M\xEDnimo",chartAggMax:"M\xE1ximo",chartAggCount:"Recuento",chartAggDistinct:"Distintos",chartAggFirst:"Primero",chartAggLast:"\xDAltimo",chartTypeColumn:"Columnas",chartTypeBar:"Barras",chartTypeLine:"L\xEDneas",chartTypeArea:"\xC1reas",chartTypePie:"Circular",chartTypeDonut:"Anillo",chartStacking:"Disposici\xF3n de series",chartStackGrouped:"Agrupado",chartStackStacked:"Apilado",chartStackNormalized:"Apilado 100 %",chartFormat:"Formato",chartFormatTitle:"T\xEDtulo",chartFormatCategoryAxis:"T\xEDtulo del eje de categor\xEDas",chartFormatValueAxis:"T\xEDtulo del eje de valores",chartFormatLegend:"Leyenda",chartLegendTop:"Arriba",chartLegendBottom:"Abajo",chartLegendLeft:"Izquierda",chartLegendRight:"Derecha",chartLegendNone:"Oculta",chartFormatDataLabels:"Etiquetas de datos",chartFormatScale:"Escala de valores",chartScaleLinear:"Lineal",chartScaleLog:"Logar\xEDtmica",chartFormatTextSize:"Tama\xF1o del texto",chartFormatTextColor:"Color del texto",chartFormatDefault:"Predeterminado",chartFormatLabelAngle:"Etiquetas de categor\xEDa",chartAngleAuto:"Autom\xE1tico",chartAngleFlat:"Horizontales",chartFormatGridLines:"L\xEDneas de cuadr\xEDcula",chartGridValue:"Eje de valores",chartGridBoth:"Ambos ejes",chartGridNone:"Ninguna",chartFormatGridDashed:"Cuadr\xEDcula discontinua",chartFormatLineWidth:"Grosor de l\xEDnea",chartFormatLineDashed:"L\xEDneas discontinuas",chartFormatFillOpacity:"Opacidad del relleno",chartFormatDateFormat:"Formato de fecha",chartFormatPalette:"Colores",chartPaletteTheme:"Tema",chartPaletteClassic:"Cl\xE1sica",chartPaletteColorblind:"Apta para daltonismo",chartPaletteVivid:"Vivos",chartPaletteMonochrome:"Un solo color",sparklineSummary:"{count} valores de {min} a {max}, \xFAltimo {last}",chartTypeWaterfall:"Cascada",chartTypeFunnel:"Embudo",chartTypeTreemap:"Mapa de \xE1rbol",chartTypeHeatmap:"Mapa de calor",chartTypeBox:"Diagrama de caja",chartTypeRadar:"Radar",chartTypeRangeBar:"Rango",chartBoxQ1:"Q1",chartBoxMedian:"Mediana",chartBoxQ3:"Q3",chartBoxOutlier:"Valor at\xEDpico",chartTotal:"Total",chartTypeScatter:"Dispersi\xF3n",chartTypeBubble:"Burbujas",chartXAxis:"Eje X",chartBubbleSize:"Tama\xF1o",chartXYSampled:"{shown} de {total} puntos, muestreados de forma uniforme",licenseMissing:"Sin licencia",licenseExpired:"Licencia caducada",licenseReleaseNotCovered:"Esta versi\xF3n no est\xE1 cubierta por la licencia",licenseDomainMismatch:"Licencia no v\xE1lida para este dominio",licenseRevoked:"Licencia revocada",licenseInvalidFormat:"Clave de licencia mal formada",licenseInvalidSignature:"Firma de licencia no v\xE1lida",licenseEngineUnavailable:"El navegador no puede verificar la licencia (se requiere HTTPS)",calcAdd:"A\xF1adir columna calculada\u2026",calcEdit:"Editar columna calculada\u2026",calcRemove:"Quitar columna calculada",calcTitleAdd:"A\xF1adir columna calculada",calcTitleEdit:"Editar columna calculada",calcName:"Nombre",calcFormula:"F\xF3rmula",calcFormulaHint:"Escriba una columna como [Nombre]. Ejemplo: [Precio] * [Cant]",calcColumns:"Columnas",calcFunctions:"Funciones",calcPreview:"Vista previa",calcPreviewEmpty:"No hay filas para la vista previa",calcErrorAt:"{message} (car\xE1cter {position})",calcAddButton:"A\xF1adir",calcArgsAtLeast:"{min} o m\xE1s",formulaError_empty:"Escriba una f\xF3rmula",formulaError_unclosedText:'Texto sin cerrar: falta un "',formulaError_unclosedColumn:"Nombre de columna sin cerrar: falta un ]",formulaError_emptyColumn:"Nombre de columna vac\xEDo []",formulaError_unexpectedChar:"Car\xE1cter inesperado {text}",formulaError_expected:"Falta {text}",formulaError_cellAfterColon:'Falta una celda despu\xE9s de ":"',formulaError_unknownName:"Nombre desconocido {name}: escriba la columna como [{name}]",formulaError_unexpected:"{text} inesperado",formulaError_endsEarly:"La f\xF3rmula termina antes de tiempo",formulaError_trailing:"Texto inesperado al final",formulaError_unknownColumn:"No hay ninguna columna [{name}]",formulaError_unknownFunction:"Funci\xF3n desconocida {name}",formulaError_argCount:"{name} admite {range} argumento(s)",formulaError_cellsNotAllowed:"Aqu\xED no se usan referencias de celda como A1: escriba la columna como [Nombre]"},Jh={ok:"OK",cancel:"Annulla",apply:"Applica",close:"Chiudi",clear:"Cancella",save:"Salva",search:"Cerca...",selectAll:"Seleziona tutto",showAll:"Mostra tutto",remove:"Rimuovi",none:"Nessuno",toolbarSearch:"Cerca...",exportMenu:"Esporta",exportCsv:"Esporta in CSV",exportExcel:"Esporta tutti i dati in Excel",exportExcelSelected:"Esporta le righe selezionate in Excel",exportPdf:"Esporta in PDF",exporting:"Esportazione\u2026",columns:"Colonne",hiddenColumns:"Colonne nascoste",noHiddenColumns:"Nessuna colonna nascosta.",sortAsc:"Ordina dalla A alla Z",sortDesc:"Ordina dalla Z alla A",clearSort:"Cancella ordinamento",cardSortBy:"Ordina per",groupByColumn:"Raggruppa per questa colonna",ungroupColumn:"Rimuovi dal raggruppamento",showGroupPanel:"Mostra pannello di raggruppamento",hideGroupPanel:"Nascondi pannello di raggruppamento",showFooter:"Mostra pi\xE8 di tabella",hideFooter:"Nascondi pi\xE8 di tabella",showGroupFooters:"Mostra pi\xE8 di gruppo",hideGroupFooters:"Nascondi pi\xE8 di gruppo",hideColumn:"Nascondi questa colonna",fieldChooser:"Selettore campi\u2026",bestFit:"Adatta larghezza",bestFitAll:"Adatta larghezza (tutte le colonne)",pinRowTop:"Blocca riga in alto",pinRowBottom:"Blocca riga in basso",unpinRow:"Sblocca riga",findLabel:"Trova nella griglia",findPrevious:"Risultato precedente",findNext:"Risultato successivo",findClose:"Chiudi ricerca",findCount:"{n} di {count}",findNone:"Nessun risultato",renameColumn:"Rinomina colonna",fixedPosition:"Imposta posizione fissa",pinLeft:"Sinistra",pinRight:"Destra",pinSticky:"Fissa",unpin:"Sblocca",moveLeft:"Sposta a sinistra",moveRight:"Sposta a destra",filterPlaceholder:"Filtra\u2026",filterColumnAria:"Filtra {column}",filterOperatorDefault:"Predefinito",filterOperatorAria:"Operatore di filtro per {column}",filterSelectAll:"Seleziona tutto",filterBlank:"(Vuoti)",filterNonBlank:"(Non vuoti)",filterEmptyText:"(testo vuoto)",filterSpace:"(1 spazio)",filterSpaces:"({n} spazi)",filterNoMatch:"Nessun valore corrispondente",filterLoading:"Caricamento valori\u2026",filterTruncated:"Vengono mostrati solo i primi valori \u2014 cerca per trovare gli altri.",filterRemove:"Rimuovi il filtro",filterToggle:"Applica il filtro",filterEditBuilder:"Modifica il filtro",filterNone:"Nessun filtro",filterActive:"Filtro attivo",opEquals:"\xE8",opNotEquals:"non \xE8",opGreater:">",opGreaterOrEqual:"\u2265",opLess:"<",opLessOrEqual:"\u2264",opContains:"contiene",opNotContains:"non contiene",opStartsWith:"inizia con",opEndsWith:"finisce con",opIsBlank:"\xE8 vuoto",opIsNotBlank:"non \xE8 vuoto",opIsOneOf:"\xE8 uno di",opIsBetween:"\xE8 compreso tra",opValuesCount:"{n} valori",opInPeriod:"\xE8 in",periodToday:"oggi",periodYesterday:"ieri",periodTomorrow:"domani",periodThisWeek:"questa settimana",periodLastWeek:"la settimana scorsa",periodNextWeek:"la prossima settimana",periodThisMonth:"questo mese",periodLastMonth:"il mese scorso",periodNextMonth:"il prossimo mese",periodThisQuarter:"questo trimestre",periodLastQuarter:"il trimestre scorso",periodNextQuarter:"il prossimo trimestre",periodThisYear:"quest'anno",periodLastYear:"l'anno scorso",periodNextYear:"l'anno prossimo",periodYearToDate:"da inizio anno",periodLastDays:"gli ultimi {n} giorni",periodNextDays:"i prossimi {n} giorni",filterAnd:"E",filterOr:"O",builderTitle:"Generatore di filtri",builderCombine:"Combina le condizioni con",builderAddCondition:"Aggiungi condizione",builderAddGroup:"Aggiungi gruppo",builderRemoveGroup:"Rimuovi gruppo",builderRemoveCondition:"Rimuovi condizione",builderEmpty:"Ancora nessuna condizione.",builderColumn:"Colonna",builderOperator:"Operatore",builderValue:"Valore",builderValueFrom:"Da",builderValueTo:"A",builderValuePlaceholder:"Inserisci un valore",builderOpen:"Generatore di filtri\u2026",builderClearAll:"Cancella tutto",builderConditionButton:"+ Condizione",builderGroupButton:"+ Gruppo",builderTrue:"vero",builderFalse:"falso",builderPeriod:"Periodo",builderDays:"Giorni",filterCustom:"(Personalizzato\u2026)",filterPopupAria:"Filtro {column}",importOpen:"Importa\u2026",groupPanelHint:"Trascina qui una colonna per raggrupparla",groupAddLevel:"Aggiungi livello di raggruppamento",groupAddLevelButton:"+ Aggiungi livello\u2026",groupNoGrouping:"(nessun raggruppamento)",groupLevelAria:"Livello di raggruppamento {n}",groupRemoveAria:"Rimuovi {column}",groupExpandAll:"Espandi tutto",groupCollapseAll:"Comprimi tutto",pagerFirst:"Prima pagina",pagerPrevious:"Pagina precedente",pagerNext:"Pagina successiva",pagerLast:"Ultima pagina",pagerPage:"Pagina",pagerOf:"di",pagerRowsPerPage:"Righe per pagina",pagerAria:"Paginazione",pagerPageButton:"Pagina {n}",selectAllRows:"Seleziona tutte le righe",selectRowAria:"Seleziona la riga {row}",selectGroupAria:"Seleziona le {count} righe di {group}",summaryAria:"Riepilogo",columnTotalsAria:"Totali di colonna",rowActions:"Azioni riga",detailsAria:"Dettagli",rowNumberAria:"Numero di riga",noteEditorAria:"Nota della cella",notePlaceholder:"Scrivi una nota su questa cella\u2026",addNote:"Aggiungi nota\u2026",editNote:"Modifica nota\u2026",deleteNote:"Elimina nota",expandDetails:"Espandi i dettagli",collapseDetails:"Comprimi i dettagli",expandTreeRow:"Espandi riga",collapseTreeRow:"Comprimi riga",expandColumnGroup:"Espandi gruppo di colonne",collapseColumnGroup:"Comprimi gruppo di colonne",dragToReorder:"Trascina per riordinare",menuCopy:"Copia",menuCopyWithHeaders:"Copia con intestazioni",menuCopyWithGroupHeaders:"Copia con intestazioni di gruppo",menuCut:"Taglia",menuPaste:"Incolla",menuExport:"Esporta",menuChartRange:"Grafico delle celle selezionate",statsSum:"Somma",statsCount:"Conteggio",statsAvg:"Media",statsMin:"Min",statsMax:"Max",statsCells:"Celle",statsTooLarge:"Selezione troppo grande per essere totalizzata",statusRows:"Righe",statusFiltered:"Filtrate",statusSelected:"Selezionate",summaryRows:"righe",announceRows:"{n} righe",announceSortedBy:"ordinato per {columns}",announceSelected:"{n} selezionate",announceAscending:"crescente",announceDescending:"decrescente",sideFilters:"Filtri",sideBarAria:"Pannelli degli strumenti",sideClearFilters:"Cancella tutti i filtri",summarySum:"Somma",summaryAvg:"Media",summaryMin:"Min",summaryMax:"Max",summaryCount:"Conteggio",summaryDistinct:"Distinti",summaryCustom:"Personalizzato",noTotal:"Nessun totale",busy:"Elaborazione\u2026",busyLoading:"Caricamento righe\u2026",rowsLoadFailed:"Impossibile caricare queste righe.",retryLoad:"Riprova",busyEncoding:"Preparazione dei dati\u2026",busyFiltering:"Filtraggio righe\u2026",busySorting:"Ordinamento righe\u2026",busyComputing:"Filtraggio e ordinamento\u2026",busyGrouping:"Creazione dei gruppi\u2026",busyAggregating:"Calcolo dei totali\u2026",busyProjecting:"Aggiornamento della vista\u2026",busyExporting:"Creazione del file\u2026",noData:"Nessun dato trovato",editNewRow:"Nuova riga",editSaveChanges:"Salva le modifiche",editDiscardChanges:"Annulla le modifiche",editRow:"Modifica riga",editRowMenu:"Modifica riga\u2026",editDeleteRow:"Elimina riga",editUndoDelete:"Annulla eliminazione",editActions:"Azioni",editSaveRow:"Salva riga",editSaving:"Salvataggio\u2026",editEditingRow:"Modifica della riga {row}",editSaveCount:"Salva {n} riga/righe",editCannotSave:"Impossibile salvare",editSaveFailed:"Non \xE8 stato possibile salvare le modifiche.",rowStatusChanged:"Modifiche non salvate",rowStatusSaving:"Salvataggio\u2026",rowStatusSaved:"Salvato",rowStatusError:"Salvataggio non riuscito",rowStatusRetry:"Riprova",rowStatusDelete:"Elimina riga",editDeleteConfirm:"Eliminare questa riga?",editAddRowUndo:"Aggiungi riga",editDeleteRowUndo:"Elimina riga",editCellUndo:"Modifica {column}",editFillUndo:"Riempi {count} celle",editPasteUndo:"Incolla {count} celle",editCutUndo:"Taglia {count} celle",editGroupTotal:"Totale del gruppo",editGroupTotalUndo:"Modifica totale di {column} ({count} righe)",editNoMatch:"Nessuna corrispondenza",formEditTitle:"Modifica riga",formAddTitle:"Nuova riga",formShortcut:"{key}+Invio per salvare \xB7 Esc per annullare",validationRequired:"Questo campo \xE8 obbligatorio",validationNumber:"Deve essere un numero",validationFormat:"Formato non valido",validationEmail:"Indirizzo e-mail non valido",validationInvalid:"Valore non valido",dateCalendar:"Calendario",dateOpenCalendar:"Apri il calendario",datePreviousMonth:"Mese precedente",dateNextMonth:"Mese successivo",monthJanuary:"Gennaio",monthFebruary:"Febbraio",monthMarch:"Marzo",monthApril:"Aprile",monthMay:"Maggio",monthJune:"Giugno",monthJuly:"Luglio",monthAugust:"Agosto",monthSeptember:"Settembre",monthOctober:"Ottobre",monthNovember:"Novembre",monthDecember:"Dicembre",weekStartsOn:"1",weekdaySu:"Do",weekdayMo:"Lu",weekdayTu:"Ma",weekdayWe:"Me",weekdayTh:"Gi",weekdayFr:"Ve",weekdaySa:"Sa",importTitle:"Importa dati",importStepSource:"1. Origine",importStepMap:"2. Associa colonne",importFile:"File CSV",importPaste:"\u2026oppure incolla delle righe",importSeparator:"Separatore",importSeparatorAuto:"Rileva automaticamente",importSeparatorComma:"Virgola ,",importSeparatorSemicolon:"Punto e virgola ;",importSeparatorTab:"Tabulazione",importSeparatorPipe:"Barra verticale |",importFileColumn:"Colonna del file",importDetected:"Rilevato",importGridColumn:"Colonna della tabella",importSample:"Esempio",importSkip:"\u2014 salta \u2014",importPreview:"Anteprima",importNoSource:"Scegli prima un file oppure incolla delle righe.",importNoRows:"Non \xE8 stata trovata alcuna riga di dati.",importAction:"Importa",exportAborted:"Esportazione interrotta",exportSheetName:"Dati",chart:"Grafico",chartCategory:"Categoria",chartSeries:"Serie",chartAddSeries:"Aggiungi serie",chartRemoveSeries:"Rimuovi",chartSource:"Dati",chartSourceView:"Righe filtrate",chartSourceSelection:"Righe selezionate",chartSourceAll:"Tutte le righe",chartSourceRange:"Intervallo selezionato (righe {from}\u2013{to})",chartClose:"Chiudi il grafico",chartFullscreen:"Schermo intero",chartExitFullscreen:"Esci da schermo intero",chartFloat:"Sgancia",chartDock:"Aggancia",chartNewWindow:"Nuova finestra",chartMoveWindow:"Sposta la finestra del grafico",chartResizeWindow:"Ridimensiona la finestra del grafico",chartResizeDock:"Trascina per cambiare l\u2019altezza del grafico",chartSwitch:"Scambia categorie e serie",chartUnlink:"Scollega",chartLink:"Collega",chartUnlinked:"Scollegato: il grafico mantiene i suoi dati e non segue pi\xF9 la griglia.",chartExportPng:"PNG",chartExportSvg:"SVG",chartExportFailed:"Non \xE8 stato possibile esportare il grafico.",chartCrossFiltered:"La tabella \xE8 filtrata su {value}.",chartBlankCategory:"(vuoto)",chartTruncated:"Vengono mostrate le prime {n} categorie; le altre sono raggruppate come \xABAltro\xBB.",chartOther:"Altro",chartEmpty:"Non c\u2019\xE8 ancora nulla da rappresentare.",chartNoVisibleSeries:"Nessuna serie visibile.",chartNeedsMoreSeries:"Questo tipo di grafico richiede almeno due colonne di valori (ad esempio minimo e massimo): aggiungi una seconda serie.",chartLoading:"Caricamento\u2026",chartNeedsRecharts:"I grafici richiedono il pacchetto opzionale `recharts`. Installalo per disegnarli.",chartOnlyOneSeries:"Questo tipo di grafico mostra una sola serie.",chartByColumn:"Grafico per questa colonna",chartGroupBy:"Per",chartGroupNone:"Ogni valore",chartGroupAuto:"Automatico",chartGroupDay:"Giorno",chartGroupWeek:"Settimana",chartGroupMonth:"Mese",chartGroupQuarter:"Trimestre",chartGroupYear:"Anno",chartGroupBins:"{n} intervalli",chartBucketAdjusted:"Troppi intervalli per un asse \u2014 raggruppati in modo pi\xF9 ampio.",chartWindowed:"Vengono mostrati {shown} di {total}.",chartShowAll:"Mostra tutto",chartCanvasHint:"Grafico. Scorri per ingrandire, trascina per spostare, frecce per navigare, 0 per mostrare tutto.",chartCanvasHintPick:"Grafico. Le frecce scelgono una categoria, Invio o Spazio filtra la griglia su di essa (Ctrl ne aggiunge una), + e \u2212 ingrandiscono, 0 mostra tutto.",chartCategoryFocus:"{category}: {values} \u2014 {position} di {count}",chartCategoryFiltered:"filtra la griglia",chartAggSum:"Somma",chartAggAvg:"Media",chartAggMin:"Min",chartAggMax:"Max",chartAggCount:"Conteggio",chartAggDistinct:"Distinti",chartAggFirst:"Primo",chartAggLast:"Ultimo",chartTypeColumn:"Colonne",chartTypeBar:"Barre",chartTypeLine:"Linee",chartTypeArea:"Aree",chartTypePie:"Torta",chartTypeDonut:"Ciambella",chartStacking:"Disposizione serie",chartStackGrouped:"Raggruppato",chartStackStacked:"In pila",chartStackNormalized:"In pila 100%",chartFormat:"Formato",chartFormatTitle:"Titolo",chartFormatCategoryAxis:"Titolo asse categorie",chartFormatValueAxis:"Titolo asse valori",chartFormatLegend:"Legenda",chartLegendTop:"In alto",chartLegendBottom:"In basso",chartLegendLeft:"A sinistra",chartLegendRight:"A destra",chartLegendNone:"Nascosta",chartFormatDataLabels:"Etichette dati",chartFormatScale:"Scala dei valori",chartScaleLinear:"Lineare",chartScaleLog:"Logaritmica",chartFormatTextSize:"Dimensione testo",chartFormatTextColor:"Colore testo",chartFormatDefault:"Predefinito",chartFormatLabelAngle:"Etichette di categoria",chartAngleAuto:"Automatico",chartAngleFlat:"Orizzontali",chartFormatGridLines:"Griglia",chartGridValue:"Asse dei valori",chartGridBoth:"Entrambi gli assi",chartGridNone:"Nessuna",chartFormatGridDashed:"Griglia tratteggiata",chartFormatLineWidth:"Spessore linea",chartFormatLineDashed:"Linee tratteggiate",chartFormatFillOpacity:"Opacit\xE0 riempimento",chartFormatDateFormat:"Formato data",chartFormatPalette:"Colori",chartPaletteTheme:"Tema",chartPaletteClassic:"Classica",chartPaletteColorblind:"Adatta al daltonismo",chartPaletteVivid:"Vivaci",chartPaletteMonochrome:"Un colore",sparklineSummary:"{count} valori da {min} a {max}, ultimo {last}",chartTypeWaterfall:"Cascata",chartTypeFunnel:"Imbuto",chartTypeTreemap:"Treemap",chartTypeHeatmap:"Mappa di calore",chartTypeBox:"Box plot",chartTypeRadar:"Radar",chartTypeRangeBar:"Intervallo",chartBoxQ1:"Q1",chartBoxMedian:"Mediana",chartBoxQ3:"Q3",chartBoxOutlier:"Valore anomalo",chartTotal:"Totale",chartTypeScatter:"Dispersione",chartTypeBubble:"Bolle",chartXAxis:"Asse X",chartBubbleSize:"Dimensione",chartXYSampled:"{shown} di {total} punti, campionati in modo uniforme",licenseMissing:"Senza licenza",licenseExpired:"Licenza scaduta",licenseReleaseNotCovered:"Questa versione non \xE8 coperta dalla licenza",licenseDomainMismatch:"Licenza non valida per questo dominio",licenseRevoked:"Licenza revocata",licenseInvalidFormat:"Chiave di licenza malformata",licenseInvalidSignature:"Firma della licenza non valida",licenseEngineUnavailable:"Il browser non pu\xF2 verificare la licenza (HTTPS richiesto)",calcAdd:"Aggiungi colonna calcolata\u2026",calcEdit:"Modifica colonna calcolata\u2026",calcRemove:"Rimuovi colonna calcolata",calcTitleAdd:"Aggiungi colonna calcolata",calcTitleEdit:"Modifica colonna calcolata",calcName:"Nome",calcFormula:"Formula",calcFormulaHint:"Scrivi una colonna come [Nome]. Esempio: [Prezzo] * [Qt\xE0]",calcColumns:"Colonne",calcFunctions:"Funzioni",calcPreview:"Anteprima",calcPreviewEmpty:"Nessuna riga da mostrare",calcErrorAt:"{message} (carattere {position})",calcAddButton:"Aggiungi",calcArgsAtLeast:"{min} o pi\xF9",formulaError_empty:"Scrivi una formula",formulaError_unclosedText:'Testo non chiuso: manca un "',formulaError_unclosedColumn:"Nome di colonna non chiuso: manca una ]",formulaError_emptyColumn:"Nome di colonna vuoto []",formulaError_unexpectedChar:"Carattere inatteso {text}",formulaError_expected:"Manca {text}",formulaError_cellAfterColon:'Manca una cella dopo ":"',formulaError_unknownName:"Nome sconosciuto {name}: scrivi la colonna come [{name}]",formulaError_unexpected:"{text} inatteso",formulaError_endsEarly:"La formula finisce troppo presto",formulaError_trailing:"Testo inatteso alla fine",formulaError_unknownColumn:"Non esiste la colonna [{name}]",formulaError_unknownFunction:"Funzione sconosciuta {name}",formulaError_argCount:"{name} accetta {range} argomenti",formulaError_cellsNotAllowed:"I riferimenti di cella come A1 non si usano qui: scrivi la colonna come [Nome]"},em={ok:"OK",cancel:"Cancelar",apply:"Aplicar",close:"Fechar",clear:"Limpar",save:"Guardar",search:"Pesquisar...",selectAll:"Selecionar tudo",showAll:"Mostrar tudo",remove:"Remover",none:"Nenhum",toolbarSearch:"Pesquisar...",exportMenu:"Exportar",exportCsv:"Exportar para CSV",exportExcel:"Exportar todos os dados para Excel",exportExcelSelected:"Exportar as linhas selecionadas para Excel",exportPdf:"Exportar para PDF",exporting:"A exportar\u2026",columns:"Colunas",hiddenColumns:"Colunas ocultas",noHiddenColumns:"Nenhuma coluna oculta.",sortAsc:"Classificar de A a Z",sortDesc:"Classificar de Z a A",clearSort:"Limpar classifica\xE7\xE3o",cardSortBy:"Ordenar por",groupByColumn:"Agrupar por esta coluna",ungroupColumn:"Remover do agrupamento",showGroupPanel:"Mostrar painel de agrupamento",hideGroupPanel:"Ocultar painel de agrupamento",showFooter:"Mostrar rodap\xE9",hideFooter:"Ocultar rodap\xE9",showGroupFooters:"Mostrar rodap\xE9s de grupo",hideGroupFooters:"Ocultar rodap\xE9s de grupo",hideColumn:"Ocultar esta coluna",fieldChooser:"Seletor de campos\u2026",bestFit:"Ajustar largura",bestFitAll:"Ajustar largura (todas as colunas)",pinRowTop:"Fixar linha no topo",pinRowBottom:"Fixar linha em baixo",unpinRow:"Desafixar linha",findLabel:"Localizar na tabela",findPrevious:"Ocorr\xEAncia anterior",findNext:"Pr\xF3xima ocorr\xEAncia",findClose:"Fechar localizar",findCount:"{n} de {count}",findNone:"Nenhuma ocorr\xEAncia",renameColumn:"Renomear coluna",fixedPosition:"Definir posi\xE7\xE3o fixa",pinLeft:"Esquerda",pinRight:"Direita",pinSticky:"Fixa",unpin:"Libertar",moveLeft:"Mover para a esquerda",moveRight:"Mover para a direita",filterPlaceholder:"Filtrar\u2026",filterColumnAria:"Filtrar {column}",filterOperatorDefault:"Padr\xE3o",filterOperatorAria:"Operador de filtro para {column}",filterSelectAll:"Selecionar tudo",filterBlank:"(Em branco)",filterNonBlank:"(N\xE3o vazios)",filterEmptyText:"(texto vazio)",filterSpace:"(1 espa\xE7o)",filterSpaces:"({n} espa\xE7os)",filterNoMatch:"Nenhum valor correspondente",filterLoading:"A carregar valores\u2026",filterTruncated:"S\xE3o mostrados apenas os primeiros valores \u2014 pesquise para encontrar os restantes.",filterRemove:"Remover o filtro",filterToggle:"Aplicar o filtro",filterEditBuilder:"Editar o filtro",filterNone:"Sem filtro",filterActive:"Filtro ativo",opEquals:"\xE9",opNotEquals:"n\xE3o \xE9",opGreater:">",opGreaterOrEqual:"\u2265",opLess:"<",opLessOrEqual:"\u2264",opContains:"cont\xE9m",opNotContains:"n\xE3o cont\xE9m",opStartsWith:"come\xE7a por",opEndsWith:"termina em",opIsBlank:"est\xE1 em branco",opIsNotBlank:"n\xE3o est\xE1 em branco",opIsOneOf:"\xE9 um de",opIsBetween:"est\xE1 entre",opValuesCount:"{n} valores",opInPeriod:"est\xE1 em",periodToday:"hoje",periodYesterday:"ontem",periodTomorrow:"amanh\xE3",periodThisWeek:"esta semana",periodLastWeek:"a semana passada",periodNextWeek:"a pr\xF3xima semana",periodThisMonth:"este m\xEAs",periodLastMonth:"o m\xEAs passado",periodNextMonth:"o pr\xF3ximo m\xEAs",periodThisQuarter:"este trimestre",periodLastQuarter:"o trimestre passado",periodNextQuarter:"o pr\xF3ximo trimestre",periodThisYear:"este ano",periodLastYear:"o ano passado",periodNextYear:"o pr\xF3ximo ano",periodYearToDate:"no acumulado do ano",periodLastDays:"os \xFAltimos {n} dias",periodNextDays:"os pr\xF3ximos {n} dias",filterAnd:"E",filterOr:"OU",builderTitle:"Construtor de filtros",builderCombine:"Combinar condi\xE7\xF5es com",builderAddCondition:"Adicionar condi\xE7\xE3o",builderAddGroup:"Adicionar grupo",builderRemoveGroup:"Remover grupo",builderRemoveCondition:"Remover condi\xE7\xE3o",builderEmpty:"Ainda n\xE3o h\xE1 condi\xE7\xF5es.",builderColumn:"Coluna",builderOperator:"Operador",builderValue:"Valor",builderValueFrom:"De",builderValueTo:"At\xE9",builderValuePlaceholder:"Introduza um valor",builderOpen:"Construtor de filtros\u2026",builderClearAll:"Limpar tudo",builderConditionButton:"+ Condi\xE7\xE3o",builderGroupButton:"+ Grupo",builderTrue:"verdadeiro",builderFalse:"falso",builderPeriod:"Per\xEDodo",builderDays:"Dias",filterCustom:"(Personalizado\u2026)",filterPopupAria:"Filtro {column}",importOpen:"Importar\u2026",groupPanelHint:"Arraste uma coluna para aqui para agrupar por ela",groupAddLevel:"Adicionar n\xEDvel de agrupamento",groupAddLevelButton:"+ Adicionar n\xEDvel\u2026",groupNoGrouping:"(sem agrupamento)",groupLevelAria:"N\xEDvel de agrupamento {n}",groupRemoveAria:"Remover {column}",groupExpandAll:"Expandir tudo",groupCollapseAll:"Recolher tudo",pagerFirst:"Primeira p\xE1gina",pagerPrevious:"P\xE1gina anterior",pagerNext:"P\xE1gina seguinte",pagerLast:"\xDAltima p\xE1gina",pagerPage:"P\xE1gina",pagerOf:"de",pagerRowsPerPage:"Linhas por p\xE1gina",pagerAria:"Pagina\xE7\xE3o",pagerPageButton:"P\xE1gina {n}",selectAllRows:"Selecionar todas as linhas",selectRowAria:"Selecionar a linha {row}",selectGroupAria:"Selecionar as {count} linhas de {group}",summaryAria:"Resumo",columnTotalsAria:"Totais das colunas",rowActions:"A\xE7\xF5es da linha",detailsAria:"Detalhes",rowNumberAria:"N\xFAmero da linha",noteEditorAria:"Nota da c\xE9lula",notePlaceholder:"Escreva uma nota sobre esta c\xE9lula\u2026",addNote:"Adicionar nota\u2026",editNote:"Editar nota\u2026",deleteNote:"Excluir nota",expandDetails:"Expandir detalhes",collapseDetails:"Recolher detalhes",expandTreeRow:"Expandir linha",collapseTreeRow:"Recolher linha",expandColumnGroup:"Expandir grupo de colunas",collapseColumnGroup:"Recolher grupo de colunas",dragToReorder:"Arraste para reordenar",menuCopy:"Copiar",menuCopyWithHeaders:"Copiar com cabe\xE7alhos",menuCopyWithGroupHeaders:"Copiar com cabe\xE7alhos de grupo",menuCut:"Recortar",menuPaste:"Colar",menuExport:"Exportar",menuChartRange:"Gr\xE1fico das c\xE9lulas selecionadas",statsSum:"Soma",statsCount:"Contagem",statsAvg:"M\xE9dia",statsMin:"M\xEDn",statsMax:"M\xE1x",statsCells:"C\xE9lulas",statsTooLarge:"Sele\xE7\xE3o demasiado grande para totalizar",statusRows:"Linhas",statusFiltered:"Filtradas",statusSelected:"Selecionadas",summaryRows:"linhas",announceRows:"{n} linhas",announceSortedBy:"ordenado por {columns}",announceSelected:"{n} selecionadas",announceAscending:"crescente",announceDescending:"decrescente",sideFilters:"Filtros",sideBarAria:"Pain\xE9is de ferramentas",sideClearFilters:"Limpar todos os filtros",summarySum:"Soma",summaryAvg:"M\xE9dia",summaryMin:"M\xEDn",summaryMax:"M\xE1x",summaryCount:"Contagem",summaryDistinct:"Distintos",summaryCustom:"Personalizado",noTotal:"Sem total",busy:"A processar\u2026",busyLoading:"A carregar linhas\u2026",rowsLoadFailed:"N\xE3o foi poss\xEDvel carregar estas linhas.",retryLoad:"Tentar novamente",busyEncoding:"A preparar os dados\u2026",busyFiltering:"A filtrar linhas\u2026",busySorting:"A classificar linhas\u2026",busyComputing:"A filtrar e classificar\u2026",busyGrouping:"A criar grupos\u2026",busyAggregating:"A calcular totais\u2026",busyProjecting:"A atualizar a vista\u2026",busyExporting:"A criar o ficheiro\u2026",noData:"Nenhum dado encontrado",editNewRow:"Nova linha",editSaveChanges:"Guardar altera\xE7\xF5es",editDiscardChanges:"Descartar altera\xE7\xF5es",editRow:"Editar linha",editRowMenu:"Editar linha\u2026",editDeleteRow:"Eliminar linha",editUndoDelete:"Anular elimina\xE7\xE3o",editActions:"A\xE7\xF5es",editSaveRow:"Guardar linha",editSaving:"A guardar\u2026",editEditingRow:"A editar a linha {row}",editSaveCount:"Guardar {n} linha(s)",editCannotSave:"N\xE3o \xE9 poss\xEDvel guardar",editSaveFailed:"N\xE3o foi poss\xEDvel guardar as altera\xE7\xF5es.",rowStatusChanged:"Altera\xE7\xF5es n\xE3o guardadas",rowStatusSaving:"A guardar\u2026",rowStatusSaved:"Guardado",rowStatusError:"Falha ao guardar",rowStatusRetry:"Tentar novamente",rowStatusDelete:"Eliminar linha",editDeleteConfirm:"Eliminar esta linha?",editAddRowUndo:"Adicionar linha",editDeleteRowUndo:"Eliminar linha",editCellUndo:"Editar {column}",editFillUndo:"Preencher {count} c\xE9lulas",editPasteUndo:"Colar {count} c\xE9lulas",editCutUndo:"Recortar {count} c\xE9lulas",editGroupTotal:"Total do grupo",editGroupTotalUndo:"Alterar total de {column} ({count} linhas)",editNoMatch:"Sem correspond\xEAncia",formEditTitle:"Editar linha",formAddTitle:"Nova linha",formShortcut:"{key}+Enter para guardar \xB7 Esc para cancelar",validationRequired:"Este campo \xE9 obrigat\xF3rio",validationNumber:"Tem de ser um n\xFAmero",validationFormat:"Formato inv\xE1lido",validationEmail:"Endere\xE7o de e-mail inv\xE1lido",validationInvalid:"Valor inv\xE1lido",dateCalendar:"Calend\xE1rio",dateOpenCalendar:"Abrir calend\xE1rio",datePreviousMonth:"M\xEAs anterior",dateNextMonth:"M\xEAs seguinte",monthJanuary:"Janeiro",monthFebruary:"Fevereiro",monthMarch:"Mar\xE7o",monthApril:"Abril",monthMay:"Maio",monthJune:"Junho",monthJuly:"Julho",monthAugust:"Agosto",monthSeptember:"Setembro",monthOctober:"Outubro",monthNovember:"Novembro",monthDecember:"Dezembro",weekStartsOn:"1",weekdaySu:"Do",weekdayMo:"Se",weekdayTu:"Te",weekdayWe:"Qa",weekdayTh:"Qi",weekdayFr:"Sx",weekdaySa:"S\xE1",importTitle:"Importar dados",importStepSource:"1. Origem",importStepMap:"2. Mapear colunas",importFile:"Ficheiro CSV",importPaste:"\u2026ou cole linhas",importSeparator:"Separador",importSeparatorAuto:"Detetar automaticamente",importSeparatorComma:"V\xEDrgula ,",importSeparatorSemicolon:"Ponto e v\xEDrgula ;",importSeparatorTab:"Tabula\xE7\xE3o",importSeparatorPipe:"Barra vertical |",importFileColumn:"Coluna do ficheiro",importDetected:"Detetado",importGridColumn:"Coluna da tabela",importSample:"Amostra",importSkip:"\u2014 ignorar \u2014",importPreview:"Pr\xE9-visualiza\xE7\xE3o",importNoSource:"Escolha primeiro um ficheiro ou cole algumas linhas.",importNoRows:"N\xE3o foram encontradas linhas de dados.",importAction:"Importar",exportAborted:"Exporta\xE7\xE3o cancelada",exportSheetName:"Dados",chart:"Gr\xE1fico",chartCategory:"Categoria",chartSeries:"S\xE9rie",chartAddSeries:"Adicionar s\xE9rie",chartRemoveSeries:"Remover",chartSource:"Dados",chartSourceView:"Linhas filtradas",chartSourceSelection:"Linhas selecionadas",chartSourceAll:"Todas as linhas",chartSourceRange:"Intervalo selecionado (linhas {from}\u2013{to})",chartClose:"Fechar o gr\xE1fico",chartFullscreen:"Ecr\xE3 inteiro",chartExitFullscreen:"Sair do ecr\xE3 inteiro",chartFloat:"Destacar",chartDock:"Ancorar",chartNewWindow:"Nova janela",chartMoveWindow:"Mover a janela do gr\xE1fico",chartResizeWindow:"Redimensionar a janela do gr\xE1fico",chartResizeDock:"Arraste para alterar a altura do gr\xE1fico",chartSwitch:"Trocar categorias e s\xE9ries",chartUnlink:"Desligar",chartLink:"Ligar",chartUnlinked:"Desligado: o gr\xE1fico mant\xE9m os dados e j\xE1 n\xE3o acompanha a grelha.",chartExportPng:"PNG",chartExportSvg:"SVG",chartExportFailed:"N\xE3o foi poss\xEDvel exportar o gr\xE1fico.",chartCrossFiltered:"A tabela est\xE1 filtrada por {value}.",chartBlankCategory:"(em branco)",chartTruncated:"A mostrar as {n} principais categorias; as restantes est\xE3o agrupadas como \xABOutros\xBB.",chartOther:"Outros",chartEmpty:"Ainda n\xE3o h\xE1 nada para representar.",chartNoVisibleSeries:"Nenhuma s\xE9rie vis\xEDvel.",chartNeedsMoreSeries:"Este tipo de gr\xE1fico precisa de pelo menos duas colunas de valores (por exemplo, m\xEDnimo e m\xE1ximo) \u2014 adicione uma segunda s\xE9rie.",chartLoading:"A carregar\u2026",chartNeedsRecharts:"Os gr\xE1ficos precisam do pacote opcional `recharts`. Instale-o para os desenhar.",chartOnlyOneSeries:"Este tipo de gr\xE1fico mostra uma s\xE9rie.",chartByColumn:"Gr\xE1fico por esta coluna",chartGroupBy:"Por",chartGroupNone:"Cada valor",chartGroupAuto:"Autom\xE1tico",chartGroupDay:"Dia",chartGroupWeek:"Semana",chartGroupMonth:"M\xEAs",chartGroupQuarter:"Trimestre",chartGroupYear:"Ano",chartGroupBins:"{n} intervalos",chartBucketAdjusted:"Demasiados intervalos para um eixo \u2014 agrupados de forma mais ampla.",chartWindowed:"A mostrar {shown} de {total}.",chartShowAll:"Mostrar tudo",chartCanvasHint:"Gr\xE1fico. Desloque para ampliar, arraste para mover, setas para navegar, 0 para mostrar tudo.",chartCanvasHintPick:"Gr\xE1fico. As setas escolhem uma categoria, Enter ou Espa\xE7o filtra a grade por ela (Ctrl adiciona), + e \u2212 aproximam, 0 mostra tudo.",chartCategoryFocus:"{category}: {values} \u2014 {position} de {count}",chartCategoryFiltered:"filtrando a grade",chartAggSum:"Soma",chartAggAvg:"M\xE9dia",chartAggMin:"M\xEDn",chartAggMax:"M\xE1x",chartAggCount:"Contagem",chartAggDistinct:"Distintos",chartAggFirst:"Primeiro",chartAggLast:"\xDAltimo",chartTypeColumn:"Colunas",chartTypeBar:"Barras",chartTypeLine:"Linhas",chartTypeArea:"\xC1reas",chartTypePie:"Circular",chartTypeDonut:"Anel",chartStacking:"Disposi\xE7\xE3o das s\xE9ries",chartStackGrouped:"Agrupado",chartStackStacked:"Empilhado",chartStackNormalized:"Empilhado 100%",chartFormat:"Formato",chartFormatTitle:"T\xEDtulo",chartFormatCategoryAxis:"T\xEDtulo do eixo de categorias",chartFormatValueAxis:"T\xEDtulo do eixo de valores",chartFormatLegend:"Legenda",chartLegendTop:"Em cima",chartLegendBottom:"Em baixo",chartLegendLeft:"\xC0 esquerda",chartLegendRight:"\xC0 direita",chartLegendNone:"Oculta",chartFormatDataLabels:"R\xF3tulos de dados",chartFormatScale:"Escala de valores",chartScaleLinear:"Linear",chartScaleLog:"Logar\xEDtmica",chartFormatTextSize:"Tamanho do texto",chartFormatTextColor:"Cor do texto",chartFormatDefault:"Padr\xE3o",chartFormatLabelAngle:"R\xF3tulos de categoria",chartAngleAuto:"Autom\xE1tico",chartAngleFlat:"Horizontais",chartFormatGridLines:"Linhas de grade",chartGridValue:"Eixo de valores",chartGridBoth:"Ambos os eixos",chartGridNone:"Nenhuma",chartFormatGridDashed:"Grade tracejada",chartFormatLineWidth:"Espessura da linha",chartFormatLineDashed:"Linhas tracejadas",chartFormatFillOpacity:"Opacidade do preenchimento",chartFormatDateFormat:"Formato de data",chartFormatPalette:"Cores",chartPaletteTheme:"Tema",chartPaletteClassic:"Cl\xE1ssica",chartPaletteColorblind:"Segura para daltonismo",chartPaletteVivid:"Vivas",chartPaletteMonochrome:"Uma cor",sparklineSummary:"{count} valores de {min} a {max}, \xFAltimo {last}",chartTypeWaterfall:"Cascata",chartTypeFunnel:"Funil",chartTypeTreemap:"Mapa de \xE1rvore",chartTypeHeatmap:"Mapa de calor",chartTypeBox:"Diagrama de caixa",chartTypeRadar:"Radar",chartTypeRangeBar:"Intervalo",chartBoxQ1:"Q1",chartBoxMedian:"Mediana",chartBoxQ3:"Q3",chartBoxOutlier:"Valor at\xEDpico",chartTotal:"Total",chartTypeScatter:"Dispers\xE3o",chartTypeBubble:"Bolhas",chartXAxis:"Eixo X",chartBubbleSize:"Tamanho",chartXYSampled:"{shown} de {total} pontos, amostrados de forma uniforme",licenseMissing:"Sem licen\xE7a",licenseExpired:"Licen\xE7a expirada",licenseReleaseNotCovered:"Esta vers\xE3o n\xE3o \xE9 coberta pela licen\xE7a",licenseDomainMismatch:"Licen\xE7a n\xE3o v\xE1lida para este dom\xEDnio",licenseRevoked:"Licen\xE7a revogada",licenseInvalidFormat:"Chave de licen\xE7a malformada",licenseInvalidSignature:"Assinatura da licen\xE7a inv\xE1lida",licenseEngineUnavailable:"O navegador n\xE3o consegue verificar a licen\xE7a (HTTPS necess\xE1rio)",calcAdd:"Adicionar coluna calculada\u2026",calcEdit:"Editar coluna calculada\u2026",calcRemove:"Remover coluna calculada",calcTitleAdd:"Adicionar coluna calculada",calcTitleEdit:"Editar coluna calculada",calcName:"Nome",calcFormula:"F\xF3rmula",calcFormulaHint:"Escreva uma coluna como [Nome]. Exemplo: [Pre\xE7o] * [Qtd]",calcColumns:"Colunas",calcFunctions:"Fun\xE7\xF5es",calcPreview:"Pr\xE9-visualiza\xE7\xE3o",calcPreviewEmpty:"N\xE3o h\xE1 linhas para pr\xE9-visualizar",calcErrorAt:"{message} (caractere {position})",calcAddButton:"Adicionar",calcArgsAtLeast:"{min} ou mais",formulaError_empty:"Escreva uma f\xF3rmula",formulaError_unclosedText:'Texto n\xE3o fechado: falta um "',formulaError_unclosedColumn:"Nome de coluna n\xE3o fechado: falta um ]",formulaError_emptyColumn:"Nome de coluna vazio []",formulaError_unexpectedChar:"Caractere inesperado {text}",formulaError_expected:"Falta {text}",formulaError_cellAfterColon:'Falta uma c\xE9lula depois de ":"',formulaError_unknownName:"Nome desconhecido {name}: escreva a coluna como [{name}]",formulaError_unexpected:"{text} inesperado",formulaError_endsEarly:"A f\xF3rmula termina cedo demais",formulaError_trailing:"Texto inesperado no fim",formulaError_unknownColumn:"N\xE3o existe a coluna [{name}]",formulaError_unknownFunction:"Fun\xE7\xE3o desconhecida {name}",formulaError_argCount:"{name} aceita {range} argumento(s)",formulaError_cellsNotAllowed:"Refer\xEAncias de c\xE9lula como A1 n\xE3o s\xE3o usadas aqui: escreva a coluna como [Nome]"},tm={ok:"\u041E\u041A",cancel:"\u041E\u0442\u043C\u0435\u043D\u0430",apply:"\u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C",close:"\u0417\u0430\u043A\u0440\u044B\u0442\u044C",clear:"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C",save:"\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C",search:"\u041F\u043E\u0438\u0441\u043A...",selectAll:"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0441\u0435",showAll:"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432\u0441\u0435",remove:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C",none:"\u041D\u0435\u0442",toolbarSearch:"\u041F\u043E\u0438\u0441\u043A...",exportMenu:"\u042D\u043A\u0441\u043F\u043E\u0440\u0442",exportCsv:"\u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u0432 CSV",exportExcel:"\u042D\u043A\u0441\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432\u0441\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 \u0432 Excel",exportExcelSelected:"\u042D\u043A\u0441\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0435 \u0441\u0442\u0440\u043E\u043A\u0438 \u0432 Excel",exportPdf:"\u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u0432 PDF",exporting:"\u042D\u043A\u0441\u043F\u043E\u0440\u0442\u2026",columns:"\u0421\u0442\u043E\u043B\u0431\u0446\u044B",hiddenColumns:"\u0421\u043A\u0440\u044B\u0442\u044B\u0435 \u0441\u0442\u043E\u043B\u0431\u0446\u044B",noHiddenColumns:"\u0421\u043A\u0440\u044B\u0442\u044B\u0445 \u0441\u0442\u043E\u043B\u0431\u0446\u043E\u0432 \u043D\u0435\u0442.",sortAsc:"\u0421\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043E\u0442 \u0410 \u0434\u043E \u042F",sortDesc:"\u0421\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043E\u0442 \u042F \u0434\u043E \u0410",clearSort:"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0443",cardSortBy:"\u0421\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E",groupByColumn:"\u0413\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E \u044D\u0442\u043E\u043C\u0443 \u0441\u0442\u043E\u043B\u0431\u0446\u0443",ungroupColumn:"\u0423\u0431\u0440\u0430\u0442\u044C \u0438\u0437 \u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0438",showGroupPanel:"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u0430\u043D\u0435\u043B\u044C \u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0438",hideGroupPanel:"\u0421\u043A\u0440\u044B\u0442\u044C \u043F\u0430\u043D\u0435\u043B\u044C \u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0438",showFooter:"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0438\u0442\u043E\u0433\u0438",hideFooter:"\u0421\u043A\u0440\u044B\u0442\u044C \u0438\u0442\u043E\u0433\u0438",showGroupFooters:"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0438\u0442\u043E\u0433\u0438 \u043F\u043E \u0433\u0440\u0443\u043F\u043F\u0430\u043C",hideGroupFooters:"\u0421\u043A\u0440\u044B\u0442\u044C \u0438\u0442\u043E\u0433\u0438 \u043F\u043E \u0433\u0440\u0443\u043F\u043F\u0430\u043C",hideColumn:"\u0421\u043A\u0440\u044B\u0442\u044C \u044D\u0442\u043E\u0442 \u0441\u0442\u043E\u043B\u0431\u0435\u0446",fieldChooser:"\u0412\u044B\u0431\u043E\u0440 \u043F\u043E\u043B\u0435\u0439\u2026",bestFit:"\u041F\u043E\u0434\u043E\u0431\u0440\u0430\u0442\u044C \u0448\u0438\u0440\u0438\u043D\u0443",bestFitAll:"\u041F\u043E\u0434\u043E\u0431\u0440\u0430\u0442\u044C \u0448\u0438\u0440\u0438\u043D\u0443 (\u0432\u0441\u0435 \u0441\u0442\u043E\u043B\u0431\u0446\u044B)",pinRowTop:"\u0417\u0430\u043A\u0440\u0435\u043F\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443 \u0441\u0432\u0435\u0440\u0445\u0443",pinRowBottom:"\u0417\u0430\u043A\u0440\u0435\u043F\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443 \u0441\u043D\u0438\u0437\u0443",unpinRow:"\u041E\u0442\u043A\u0440\u0435\u043F\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443",findLabel:"\u041D\u0430\u0439\u0442\u0438 \u0432 \u0442\u0430\u0431\u043B\u0438\u0446\u0435",findPrevious:"\u041F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0435\u0435 \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435",findNext:"\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0435 \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435",findClose:"\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u043F\u043E\u0438\u0441\u043A",findCount:"{n} \u0438\u0437 {count}",findNone:"\u041D\u0435\u0442 \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439",renameColumn:"\u041F\u0435\u0440\u0435\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u0442\u044C \u0441\u0442\u043E\u043B\u0431\u0435\u0446",fixedPosition:"\u0417\u0430\u0434\u0430\u0442\u044C \u0444\u0438\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u0443\u044E \u043F\u043E\u0437\u0438\u0446\u0438\u044E",pinLeft:"\u0421\u043B\u0435\u0432\u0430",pinRight:"\u0421\u043F\u0440\u0430\u0432\u0430",pinSticky:"\u0417\u0430\u043A\u0440\u0435\u043F\u043B\u0451\u043D",unpin:"\u041E\u0442\u043A\u0440\u0435\u043F\u0438\u0442\u044C",moveLeft:"\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0432\u043B\u0435\u0432\u043E",moveRight:"\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0432\u043F\u0440\u0430\u0432\u043E",filterPlaceholder:"\u0424\u0438\u043B\u044C\u0442\u0440\u2026",filterColumnAria:"\u0424\u0438\u043B\u044C\u0442\u0440 \xAB{column}\xBB",filterOperatorDefault:"\u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E",filterOperatorAria:"\u041E\u043F\u0435\u0440\u0430\u0442\u043E\u0440 \u0444\u0438\u043B\u044C\u0442\u0440\u0430 \u0434\u043B\u044F \xAB{column}\xBB",filterSelectAll:"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0441\u0435",filterBlank:"(\u041F\u0443\u0441\u0442\u043E)",filterNonBlank:"(\u041D\u0435 \u043F\u0443\u0441\u0442\u044B\u0435)",filterEmptyText:"(\u043F\u0443\u0441\u0442\u043E\u0439 \u0442\u0435\u043A\u0441\u0442)",filterSpace:"(1 \u043F\u0440\u043E\u0431\u0435\u043B)",filterSpaces:"(\u043F\u0440\u043E\u0431\u0435\u043B\u043E\u0432: {n})",filterNoMatch:"\u0421\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439 \u043D\u0435\u0442",filterLoading:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0439\u2026",filterTruncated:"\u041F\u043E\u043A\u0430\u0437\u0430\u043D\u044B \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0435\u0440\u0432\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u2014 \u0432\u043E\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435\u0441\u044C \u043F\u043E\u0438\u0441\u043A\u043E\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0430\u0439\u0442\u0438 \u043E\u0441\u0442\u0430\u043B\u044C\u043D\u044B\u0435.",filterRemove:"\u0423\u0431\u0440\u0430\u0442\u044C \u0444\u0438\u043B\u044C\u0442\u0440",filterToggle:"\u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C \u0444\u0438\u043B\u044C\u0442\u0440",filterEditBuilder:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0444\u0438\u043B\u044C\u0442\u0440",filterNone:"\u0424\u0438\u043B\u044C\u0442\u0440\u0430 \u043D\u0435\u0442",filterActive:"\u0424\u0438\u043B\u044C\u0442\u0440 \u0430\u043A\u0442\u0438\u0432\u0435\u043D",opEquals:"\u0440\u0430\u0432\u043D\u043E",opNotEquals:"\u043D\u0435 \u0440\u0430\u0432\u043D\u043E",opGreater:">",opGreaterOrEqual:"\u2265",opLess:"<",opLessOrEqual:"\u2264",opContains:"\u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442",opNotContains:"\u043D\u0435 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442",opStartsWith:"\u043D\u0430\u0447\u0438\u043D\u0430\u0435\u0442\u0441\u044F \u0441",opEndsWith:"\u0437\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u043D\u0430",opIsBlank:"\u043F\u0443\u0441\u0442\u043E",opIsNotBlank:"\u043D\u0435 \u043F\u0443\u0441\u0442\u043E",opIsOneOf:"\u043E\u0434\u043D\u043E \u0438\u0437",opIsBetween:"\u043C\u0435\u0436\u0434\u0443",opValuesCount:"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0439: {n}",opInPeriod:"\u0432 \u043F\u0435\u0440\u0438\u043E\u0434\u0435",periodToday:"\u0441\u0435\u0433\u043E\u0434\u043D\u044F",periodYesterday:"\u0432\u0447\u0435\u0440\u0430",periodTomorrow:"\u0437\u0430\u0432\u0442\u0440\u0430",periodThisWeek:"\u044D\u0442\u0430 \u043D\u0435\u0434\u0435\u043B\u044F",periodLastWeek:"\u043F\u0440\u043E\u0448\u043B\u0430\u044F \u043D\u0435\u0434\u0435\u043B\u044F",periodNextWeek:"\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0430\u044F \u043D\u0435\u0434\u0435\u043B\u044F",periodThisMonth:"\u044D\u0442\u043E\u0442 \u043C\u0435\u0441\u044F\u0446",periodLastMonth:"\u043F\u0440\u043E\u0448\u043B\u044B\u0439 \u043C\u0435\u0441\u044F\u0446",periodNextMonth:"\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u043C\u0435\u0441\u044F\u0446",periodThisQuarter:"\u044D\u0442\u043E\u0442 \u043A\u0432\u0430\u0440\u0442\u0430\u043B",periodLastQuarter:"\u043F\u0440\u043E\u0448\u043B\u044B\u0439 \u043A\u0432\u0430\u0440\u0442\u0430\u043B",periodNextQuarter:"\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u043A\u0432\u0430\u0440\u0442\u0430\u043B",periodThisYear:"\u044D\u0442\u043E\u0442 \u0433\u043E\u0434",periodLastYear:"\u043F\u0440\u043E\u0448\u043B\u044B\u0439 \u0433\u043E\u0434",periodNextYear:"\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u0433\u043E\u0434",periodYearToDate:"\u0441 \u043D\u0430\u0447\u0430\u043B\u0430 \u0433\u043E\u0434\u0430",periodLastDays:"\u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0435 {n} \u0434\u043D.",periodNextDays:"\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0435 {n} \u0434\u043D.",filterAnd:"\u0418",filterOr:"\u0418\u041B\u0418",builderTitle:"\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440 \u0444\u0438\u043B\u044C\u0442\u0440\u0430",builderCombine:"\u041E\u0431\u044A\u0435\u0434\u0438\u043D\u0438\u0442\u044C \u0443\u0441\u043B\u043E\u0432\u0438\u044F \u043E\u043F\u0435\u0440\u0430\u0442\u043E\u0440\u043E\u043C",builderAddCondition:"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0443\u0441\u043B\u043E\u0432\u0438\u0435",builderAddGroup:"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0433\u0440\u0443\u043F\u043F\u0443",builderRemoveGroup:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0433\u0440\u0443\u043F\u043F\u0443",builderRemoveCondition:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0443\u0441\u043B\u043E\u0432\u0438\u0435",builderEmpty:"\u0423\u0441\u043B\u043E\u0432\u0438\u0439 \u043F\u043E\u043A\u0430 \u043D\u0435\u0442.",builderColumn:"\u0421\u0442\u043E\u043B\u0431\u0435\u0446",builderOperator:"\u041E\u043F\u0435\u0440\u0430\u0442\u043E\u0440",builderValue:"\u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435",builderValueFrom:"\u041E\u0442",builderValueTo:"\u0414\u043E",builderValuePlaceholder:"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435",builderOpen:"\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440 \u0444\u0438\u043B\u044C\u0442\u0440\u0430\u2026",builderClearAll:"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0432\u0441\u0451",builderConditionButton:"+ \u0423\u0441\u043B\u043E\u0432\u0438\u0435",builderGroupButton:"+ \u0413\u0440\u0443\u043F\u043F\u0430",builderTrue:"\u0438\u0441\u0442\u0438\u043D\u0430",builderFalse:"\u043B\u043E\u0436\u044C",builderPeriod:"\u041F\u0435\u0440\u0438\u043E\u0434",builderDays:"\u0414\u043D\u0438",filterCustom:"(\u041E\u0441\u043E\u0431\u043E\u0435\u2026)",filterPopupAria:"\u0424\u0438\u043B\u044C\u0442\u0440 {column}",importOpen:"\u0418\u043C\u043F\u043E\u0440\u0442\u2026",groupPanelHint:"\u041F\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u0435 \u0441\u044E\u0434\u0430 \u0441\u0442\u043E\u043B\u0431\u0435\u0446, \u0447\u0442\u043E\u0431\u044B \u0441\u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E \u043D\u0435\u043C\u0443",groupAddLevel:"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0443\u0440\u043E\u0432\u0435\u043D\u044C \u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0438",groupAddLevelButton:"+ \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0443\u0440\u043E\u0432\u0435\u043D\u044C\u2026",groupNoGrouping:"(\u0431\u0435\u0437 \u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0438)",groupLevelAria:"\u0423\u0440\u043E\u0432\u0435\u043D\u044C \u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0438 {n}",groupRemoveAria:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C {column}",groupExpandAll:"\u0420\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0432\u0441\u0435",groupCollapseAll:"\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0432\u0441\u0435",pagerFirst:"\u041F\u0435\u0440\u0432\u0430\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430",pagerPrevious:"\u041F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0430\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430",pagerNext:"\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0430\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430",pagerLast:"\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u044F\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430",pagerPage:"\u0421\u0442\u0440\u0430\u043D\u0438\u0446\u0430",pagerOf:"\u0438\u0437",pagerRowsPerPage:"\u0421\u0442\u0440\u043E\u043A \u043D\u0430 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0435",pagerAria:"\u041F\u043E\u0441\u0442\u0440\u0430\u043D\u0438\u0447\u043D\u0430\u044F \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044F",pagerPageButton:"\u0421\u0442\u0440\u0430\u043D\u0438\u0446\u0430 {n}",selectAllRows:"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0441\u0435 \u0441\u0442\u0440\u043E\u043A\u0438",selectRowAria:"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443 {row}",selectGroupAria:"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0438 \u0433\u0440\u0443\u043F\u043F\u044B {group} ({count})",summaryAria:"\u0421\u0432\u043E\u0434\u043A\u0430",columnTotalsAria:"\u0418\u0442\u043E\u0433\u0438 \u043F\u043E \u0441\u0442\u043E\u043B\u0431\u0446\u0430\u043C",rowActions:"\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u0441\u043E \u0441\u0442\u0440\u043E\u043A\u043E\u0439",detailsAria:"\u041F\u043E\u0434\u0440\u043E\u0431\u043D\u043E\u0441\u0442\u0438",rowNumberAria:"\u041D\u043E\u043C\u0435\u0440 \u0441\u0442\u0440\u043E\u043A\u0438",noteEditorAria:"\u041F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u0435 \u043A \u044F\u0447\u0435\u0439\u043A\u0435",notePlaceholder:"\u041D\u0430\u043F\u0438\u0448\u0438\u0442\u0435 \u043F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u0435 \u043A \u044D\u0442\u043E\u0439 \u044F\u0447\u0435\u0439\u043A\u0435\u2026",addNote:"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u0435\u2026",editNote:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u0435\u2026",deleteNote:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u043F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u0435",expandDetails:"\u0420\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u043F\u043E\u0434\u0440\u043E\u0431\u043D\u043E\u0441\u0442\u0438",collapseDetails:"\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u043F\u043E\u0434\u0440\u043E\u0431\u043D\u043E\u0441\u0442\u0438",expandTreeRow:"\u0420\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443",collapseTreeRow:"\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443",expandColumnGroup:"\u0420\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0433\u0440\u0443\u043F\u043F\u0443 \u0441\u0442\u043E\u043B\u0431\u0446\u043E\u0432",collapseColumnGroup:"\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0433\u0440\u0443\u043F\u043F\u0443 \u0441\u0442\u043E\u043B\u0431\u0446\u043E\u0432",dragToReorder:"\u041F\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u043E\u0440\u044F\u0434\u043E\u043A",menuCopy:"\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C",menuCopyWithHeaders:"\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430\u043C\u0438",menuCopyWithGroupHeaders:"\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430\u043C\u0438 \u0433\u0440\u0443\u043F\u043F",menuCut:"\u0412\u044B\u0440\u0435\u0437\u0430\u0442\u044C",menuPaste:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C",menuExport:"\u042D\u043A\u0441\u043F\u043E\u0440\u0442",menuChartRange:"\u0414\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u0430 \u043F\u043E \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u043C \u044F\u0447\u0435\u0439\u043A\u0430\u043C",statsSum:"\u0421\u0443\u043C\u043C\u0430",statsCount:"\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E",statsAvg:"\u0421\u0440\u0435\u0434\u043D\u0435\u0435",statsMin:"\u041C\u0438\u043D",statsMax:"\u041C\u0430\u043A\u0441",statsCells:"\u042F\u0447\u0435\u0439\u043A\u0438",statsTooLarge:"\u0412\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u0432\u0435\u043B\u0438\u043A\u043E \u0434\u043B\u044F \u043F\u043E\u0434\u0441\u0447\u0451\u0442\u0430",statusRows:"\u0421\u0442\u0440\u043E\u043A\u0438",statusFiltered:"\u041E\u0442\u0444\u0438\u043B\u044C\u0442\u0440\u043E\u0432\u0430\u043D\u043E",statusSelected:"\u0412\u044B\u0431\u0440\u0430\u043D\u043E",summaryRows:"\u0441\u0442\u0440\u043E\u043A",announceRows:"\u0421\u0442\u0440\u043E\u043A: {n}",announceSortedBy:"\u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0430 \u043F\u043E {columns}",announceSelected:"\u0432\u044B\u0431\u0440\u0430\u043D\u043E: {n}",announceAscending:"\u043F\u043E \u0432\u043E\u0437\u0440\u0430\u0441\u0442\u0430\u043D\u0438\u044E",announceDescending:"\u043F\u043E \u0443\u0431\u044B\u0432\u0430\u043D\u0438\u044E",sideFilters:"\u0424\u0438\u043B\u044C\u0442\u0440\u044B",sideBarAria:"\u041F\u0430\u043D\u0435\u043B\u0438 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432",sideClearFilters:"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0432\u0441\u0435 \u0444\u0438\u043B\u044C\u0442\u0440\u044B",summarySum:"\u0421\u0443\u043C\u043C\u0430",summaryAvg:"\u0421\u0440\u0435\u0434\u043D\u0435\u0435",summaryMin:"\u041C\u0438\u043D",summaryMax:"\u041C\u0430\u043A\u0441",summaryCount:"\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E",summaryDistinct:"\u0423\u043D\u0438\u043A\u0430\u043B\u044C\u043D\u044B\u0435",summaryCustom:"\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439",noTotal:"\u041D\u0435\u0442 \u0438\u0442\u043E\u0433\u0430",busy:"\u0412\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F\u2026",busyLoading:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u0441\u0442\u0440\u043E\u043A\u2026",rowsLoadFailed:"\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u044D\u0442\u0438 \u0441\u0442\u0440\u043E\u043A\u0438.",retryLoad:"\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u044C",busyEncoding:"\u041F\u043E\u0434\u0433\u043E\u0442\u043E\u0432\u043A\u0430 \u0434\u0430\u043D\u043D\u044B\u0445\u2026",busyFiltering:"\u0424\u0438\u043B\u044C\u0442\u0440\u0430\u0446\u0438\u044F \u0441\u0442\u0440\u043E\u043A\u2026",busySorting:"\u0421\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0430 \u0441\u0442\u0440\u043E\u043A\u2026",busyComputing:"\u0424\u0438\u043B\u044C\u0442\u0440\u0430\u0446\u0438\u044F \u0438 \u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0430\u2026",busyGrouping:"\u041F\u043E\u0441\u0442\u0440\u043E\u0435\u043D\u0438\u0435 \u0433\u0440\u0443\u043F\u043F\u2026",busyAggregating:"\u0412\u044B\u0447\u0438\u0441\u043B\u0435\u043D\u0438\u0435 \u0438\u0442\u043E\u0433\u043E\u0432\u2026",busyProjecting:"\u041E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0435 \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u044F\u2026",busyExporting:"\u0421\u043E\u0437\u0434\u0430\u043D\u0438\u0435 \u0444\u0430\u0439\u043B\u0430\u2026",noData:"\u0414\u0430\u043D\u043D\u044B\u0435 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u044B",editNewRow:"\u041D\u043E\u0432\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430",editSaveChanges:"\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F",editDiscardChanges:"\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F",editRow:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443",editRowMenu:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443\u2026",editDeleteRow:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443",editUndoDelete:"\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u0435",editActions:"\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044F",editSaveRow:"\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443",editSaving:"\u0421\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0435\u2026",editEditingRow:"\u0418\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0435 \u0441\u0442\u0440\u043E\u043A\u0438 {row}",editSaveCount:"\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A: {n}",editCannotSave:"\u041D\u0435 \u0443\u0434\u0430\u0451\u0442\u0441\u044F \u0441\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C",editSaveFailed:"\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0441\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F.",rowStatusChanged:"\u041D\u0435\u0441\u043E\u0445\u0440\u0430\u043D\u0451\u043D\u043D\u044B\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F",rowStatusSaving:"\u0421\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0435\u2026",rowStatusSaved:"\u0421\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u043E",rowStatusError:"\u041E\u0448\u0438\u0431\u043A\u0430 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u044F",rowStatusRetry:"\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u044C",rowStatusDelete:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443",editDeleteConfirm:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u044D\u0442\u0443 \u0441\u0442\u0440\u043E\u043A\u0443?",editAddRowUndo:"\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0441\u0442\u0440\u043E\u043A\u0438",editDeleteRowUndo:"\u0423\u0434\u0430\u043B\u0435\u043D\u0438\u0435 \u0441\u0442\u0440\u043E\u043A\u0438",editCellUndo:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C {column}",editFillUndo:"\u0417\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u044C {count} \u044F\u0447\u0435\u0435\u043A",editPasteUndo:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C {count} \u044F\u0447\u0435\u0435\u043A",editCutUndo:"\u0412\u044B\u0440\u0435\u0437\u0430\u0442\u044C {count} \u044F\u0447\u0435\u0435\u043A",editGroupTotal:"\u0418\u0442\u043E\u0433 \u0433\u0440\u0443\u043F\u043F\u044B",editGroupTotalUndo:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0438\u0442\u043E\u0433 {column} ({count} \u0441\u0442\u0440\u043E\u043A)",editNoMatch:"\u0421\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439 \u043D\u0435\u0442",formEditTitle:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443",formAddTitle:"\u041D\u043E\u0432\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430",formShortcut:"{key}+Enter \u2014 \u0441\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \xB7 Esc \u2014 \u043E\u0442\u043C\u0435\u043D\u0438\u0442\u044C",validationRequired:"\u042D\u0442\u043E \u043F\u043E\u043B\u0435 \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E",validationNumber:"\u0414\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u0447\u0438\u0441\u043B\u043E\u043C",validationFormat:"\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0444\u043E\u0440\u043C\u0430\u0442",validationEmail:"\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0430\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B",validationInvalid:"\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435",dateCalendar:"\u041A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044C",dateOpenCalendar:"\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044C",datePreviousMonth:"\u041F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0438\u0439 \u043C\u0435\u0441\u044F\u0446",dateNextMonth:"\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u043C\u0435\u0441\u044F\u0446",monthJanuary:"\u042F\u043D\u0432\u0430\u0440\u044C",monthFebruary:"\u0424\u0435\u0432\u0440\u0430\u043B\u044C",monthMarch:"\u041C\u0430\u0440\u0442",monthApril:"\u0410\u043F\u0440\u0435\u043B\u044C",monthMay:"\u041C\u0430\u0439",monthJune:"\u0418\u044E\u043D\u044C",monthJuly:"\u0418\u044E\u043B\u044C",monthAugust:"\u0410\u0432\u0433\u0443\u0441\u0442",monthSeptember:"\u0421\u0435\u043D\u0442\u044F\u0431\u0440\u044C",monthOctober:"\u041E\u043A\u0442\u044F\u0431\u0440\u044C",monthNovember:"\u041D\u043E\u044F\u0431\u0440\u044C",monthDecember:"\u0414\u0435\u043A\u0430\u0431\u0440\u044C",weekStartsOn:"1",weekdaySu:"\u0412\u0441",weekdayMo:"\u041F\u043D",weekdayTu:"\u0412\u0442",weekdayWe:"\u0421\u0440",weekdayTh:"\u0427\u0442",weekdayFr:"\u041F\u0442",weekdaySa:"\u0421\u0431",importTitle:"\u0418\u043C\u043F\u043E\u0440\u0442 \u0434\u0430\u043D\u043D\u044B\u0445",importStepSource:"1. \u0418\u0441\u0442\u043E\u0447\u043D\u0438\u043A",importStepMap:"2. \u0421\u043E\u043F\u043E\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0441\u0442\u043E\u043B\u0431\u0446\u043E\u0432",importFile:"\u0424\u0430\u0439\u043B CSV",importPaste:"\u2026\u0438\u043B\u0438 \u0432\u0441\u0442\u0430\u0432\u044C\u0442\u0435 \u0441\u0442\u0440\u043E\u043A\u0438",importSeparator:"\u0420\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044C",importSeparatorAuto:"\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u0438\u0442\u044C \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438",importSeparatorComma:"\u0417\u0430\u043F\u044F\u0442\u0430\u044F ,",importSeparatorSemicolon:"\u0422\u043E\u0447\u043A\u0430 \u0441 \u0437\u0430\u043F\u044F\u0442\u043E\u0439 ;",importSeparatorTab:"\u0422\u0430\u0431\u0443\u043B\u044F\u0446\u0438\u044F",importSeparatorPipe:"\u0412\u0435\u0440\u0442\u0438\u043A\u0430\u043B\u044C\u043D\u0430\u044F \u0447\u0435\u0440\u0442\u0430 |",importFileColumn:"\u0421\u0442\u043E\u043B\u0431\u0435\u0446 \u0444\u0430\u0439\u043B\u0430",importDetected:"\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043E",importGridColumn:"\u0421\u0442\u043E\u043B\u0431\u0435\u0446 \u0442\u0430\u0431\u043B\u0438\u0446\u044B",importSample:"\u041F\u0440\u0438\u043C\u0435\u0440",importSkip:"\u2014 \u043F\u0440\u043E\u043F\u0443\u0441\u0442\u0438\u0442\u044C \u2014",importPreview:"\u041F\u0440\u0435\u0434\u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440",importNoSource:"\u0421\u043D\u0430\u0447\u0430\u043B\u0430 \u0432\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0444\u0430\u0439\u043B \u0438\u043B\u0438 \u0432\u0441\u0442\u0430\u0432\u044C\u0442\u0435 \u0441\u0442\u0440\u043E\u043A\u0438.",importNoRows:"\u0421\u0442\u0440\u043E\u043A\u0438 \u0434\u0430\u043D\u043D\u044B\u0445 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u044B.",importAction:"\u0418\u043C\u043F\u043E\u0440\u0442",exportAborted:"\u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u043F\u0440\u0435\u0440\u0432\u0430\u043D",exportSheetName:"\u0414\u0430\u043D\u043D\u044B\u0435",chart:"\u0414\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u0430",chartCategory:"\u041A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u044F",chartSeries:"\u0420\u044F\u0434",chartAddSeries:"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0440\u044F\u0434",chartRemoveSeries:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C",chartSource:"\u0414\u0430\u043D\u043D\u044B\u0435",chartSourceView:"\u041E\u0442\u0444\u0438\u043B\u044C\u0442\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u0441\u0442\u0440\u043E\u043A\u0438",chartSourceSelection:"\u0412\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0435 \u0441\u0442\u0440\u043E\u043A\u0438",chartSourceAll:"\u0412\u0441\u0435 \u0441\u0442\u0440\u043E\u043A\u0438",chartSourceRange:"\u0412\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0439 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D (\u0441\u0442\u0440\u043E\u043A\u0438 {from}\u2013{to})",chartClose:"\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u0443",chartFullscreen:"\u0412\u043E \u0432\u0435\u0441\u044C \u044D\u043A\u0440\u0430\u043D",chartExitFullscreen:"\u0412\u044B\u0439\u0442\u0438 \u0438\u0437 \u043F\u043E\u043B\u043D\u043E\u044D\u043A\u0440\u0430\u043D\u043D\u043E\u0433\u043E \u0440\u0435\u0436\u0438\u043C\u0430",chartFloat:"\u041E\u0442\u043A\u0440\u0435\u043F\u0438\u0442\u044C",chartDock:"\u0417\u0430\u043A\u0440\u0435\u043F\u0438\u0442\u044C",chartNewWindow:"\u041D\u043E\u0432\u043E\u0435 \u043E\u043A\u043D\u043E",chartMoveWindow:"\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u043E\u043A\u043D\u043E \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u044B",chartResizeWindow:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0440\u0430\u0437\u043C\u0435\u0440 \u043E\u043A\u043D\u0430 \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u044B",chartResizeDock:"\u041F\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0432\u044B\u0441\u043E\u0442\u0443 \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u044B",chartSwitch:"\u041F\u043E\u043C\u0435\u043D\u044F\u0442\u044C \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0438 \u0438 \u0440\u044F\u0434\u044B",chartUnlink:"\u041E\u0442\u0432\u044F\u0437\u0430\u0442\u044C",chartLink:"\u041F\u0440\u0438\u0432\u044F\u0437\u0430\u0442\u044C",chartUnlinked:"\u041E\u0442\u0432\u044F\u0437\u0430\u043D\u043E: \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u0430 \u0441\u043E\u0445\u0440\u0430\u043D\u044F\u0435\u0442 \u0441\u0432\u043E\u0438 \u0434\u0430\u043D\u043D\u044B\u0435 \u0438 \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0435 \u0441\u043B\u0435\u0434\u0443\u0435\u0442 \u0437\u0430 \u0442\u0430\u0431\u043B\u0438\u0446\u0435\u0439.",chartExportPng:"PNG",chartExportSvg:"SVG",chartExportFailed:"\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u044D\u043A\u0441\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u0443.",chartCrossFiltered:"\u0422\u0430\u0431\u043B\u0438\u0446\u0430 \u043E\u0442\u0444\u0438\u043B\u044C\u0442\u0440\u043E\u0432\u0430\u043D\u0430 \u043F\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044E {value}.",chartBlankCategory:"(\u043F\u0443\u0441\u0442\u043E)",chartTruncated:"\u041F\u043E\u043A\u0430\u0437\u0430\u043D\u044B {n} \u043E\u0441\u043D\u043E\u0432\u043D\u044B\u0445 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0439; \u043E\u0441\u0442\u0430\u043B\u044C\u043D\u044B\u0435 \u043E\u0431\u044A\u0435\u0434\u0438\u043D\u0435\u043D\u044B \u043A\u0430\u043A \xAB\u041F\u0440\u043E\u0447\u0435\u0435\xBB.",chartOther:"\u041F\u0440\u043E\u0447\u0435\u0435",chartEmpty:"\u041F\u043E\u043A\u0430 \u043D\u0435\u0447\u0435\u0433\u043E \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C.",chartNoVisibleSeries:"\u041D\u0435\u0442 \u0432\u0438\u0434\u0438\u043C\u044B\u0445 \u0440\u044F\u0434\u043E\u0432.",chartNeedsMoreSeries:"\u0414\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u0442\u0438\u043F\u0430 \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u044B \u043D\u0443\u0436\u043D\u044B \u043C\u0438\u043D\u0438\u043C\u0443\u043C \u0434\u0432\u0430 \u0441\u0442\u043E\u043B\u0431\u0446\u0430 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0439 (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u043C\u0438\u043D\u0438\u043C\u0443\u043C \u0438 \u043C\u0430\u043A\u0441\u0438\u043C\u0443\u043C) \u2014 \u0434\u043E\u0431\u0430\u0432\u044C\u0442\u0435 \u0432\u0442\u043E\u0440\u043E\u0439 \u0440\u044F\u0434.",chartLoading:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430\u2026",chartNeedsRecharts:"\u0414\u043B\u044F \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C \u043D\u0443\u0436\u0435\u043D \u043D\u0435\u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u044B\u0439 \u043F\u0430\u043A\u0435\u0442 `recharts`. \u0423\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u0435 \u0435\u0433\u043E, \u0447\u0442\u043E\u0431\u044B \u0438\u0445 \u0440\u0438\u0441\u043E\u0432\u0430\u0442\u044C.",chartOnlyOneSeries:"\u042D\u0442\u043E\u0442 \u0442\u0438\u043F \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u044B \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u0442 \u043E\u0434\u0438\u043D \u0440\u044F\u0434.",chartByColumn:"\u0414\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u0430 \u043F\u043E \u044D\u0442\u043E\u043C\u0443 \u0441\u0442\u043E\u043B\u0431\u0446\u0443",chartGroupBy:"\u041F\u043E",chartGroupNone:"\u041A\u0430\u0436\u0434\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435",chartGroupAuto:"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438",chartGroupDay:"\u0414\u0435\u043D\u044C",chartGroupWeek:"\u041D\u0435\u0434\u0435\u043B\u044F",chartGroupMonth:"\u041C\u0435\u0441\u044F\u0446",chartGroupQuarter:"\u041A\u0432\u0430\u0440\u0442\u0430\u043B",chartGroupYear:"\u0413\u043E\u0434",chartGroupBins:"\u0438\u043D\u0442\u0435\u0440\u0432\u0430\u043B\u043E\u0432: {n}",chartBucketAdjusted:"\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u043D\u043E\u0433\u043E \u0438\u043D\u0442\u0435\u0440\u0432\u0430\u043B\u043E\u0432 \u0434\u043B\u044F \u043E\u0434\u043D\u043E\u0439 \u043E\u0441\u0438 \u2014 \u0441\u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u0430\u043D\u043E \u043A\u0440\u0443\u043F\u043D\u0435\u0435.",chartWindowed:"\u041F\u043E\u043A\u0430\u0437\u0430\u043D\u043E {shown} \u0438\u0437 {total}.",chartShowAll:"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432\u0441\u0435",chartCanvasHint:"\u0414\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u0430. \u041F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0430 \u2014 \u043C\u0430\u0441\u0448\u0442\u0430\u0431, \u043F\u0435\u0440\u0435\u0442\u0430\u0441\u043A\u0438\u0432\u0430\u043D\u0438\u0435 \u2014 \u0441\u0434\u0432\u0438\u0433, \u0441\u0442\u0440\u0435\u043B\u043A\u0438 \u2014 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u0435, 0 \u2014 \u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432\u0441\u0435.",chartCanvasHintPick:"\u0414\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u0430. \u0421\u0442\u0440\u0435\u043B\u043A\u0438 \u0432\u044B\u0431\u0438\u0440\u0430\u044E\u0442 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u044E, Enter \u0438\u043B\u0438 \u041F\u0440\u043E\u0431\u0435\u043B \u0444\u0438\u043B\u044C\u0442\u0440\u0443\u0435\u0442 \u043F\u043E \u043D\u0435\u0439 \u0442\u0430\u0431\u043B\u0438\u0446\u0443 (Ctrl \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0435\u0442), + \u0438 \u2212 \u043C\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u044E\u0442, 0 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u0442 \u0432\u0441\u0451.",chartCategoryFocus:"{category}: {values} \u2014 {position} \u0438\u0437 {count}",chartCategoryFiltered:"\u0444\u0438\u043B\u044C\u0442\u0440\u0443\u0435\u0442 \u0442\u0430\u0431\u043B\u0438\u0446\u0443",chartAggSum:"\u0421\u0443\u043C\u043C\u0430",chartAggAvg:"\u0421\u0440\u0435\u0434\u043D\u0435\u0435",chartAggMin:"\u041C\u0438\u043D",chartAggMax:"\u041C\u0430\u043A\u0441",chartAggCount:"\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E",chartAggDistinct:"\u0423\u043D\u0438\u043A\u0430\u043B\u044C\u043D\u044B\u0435",chartAggFirst:"\u041F\u0435\u0440\u0432\u043E\u0435",chartAggLast:"\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0435",chartTypeColumn:"\u0421\u0442\u043E\u043B\u0431\u0446\u044B",chartTypeBar:"\u041F\u043E\u043B\u043E\u0441\u044B",chartTypeLine:"\u041B\u0438\u043D\u0438\u044F",chartTypeArea:"\u041E\u0431\u043B\u0430\u0441\u0442\u044C",chartTypePie:"\u041A\u0440\u0443\u0433\u043E\u0432\u0430\u044F",chartTypeDonut:"\u041A\u043E\u043B\u044C\u0446\u0435\u0432\u0430\u044F",chartStacking:"\u0420\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0440\u044F\u0434\u043E\u0432",chartStackGrouped:"\u0413\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0430",chartStackStacked:"\u0421 \u043D\u0430\u043A\u043E\u043F\u043B\u0435\u043D\u0438\u0435\u043C",chartStackNormalized:"\u041D\u043E\u0440\u043C\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u043E\u0435 100%",chartFormat:"\u0424\u043E\u0440\u043C\u0430\u0442",chartFormatTitle:"\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A",chartFormatCategoryAxis:"\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043E\u0441\u0438 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0439",chartFormatValueAxis:"\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043E\u0441\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0439",chartFormatLegend:"\u041B\u0435\u0433\u0435\u043D\u0434\u0430",chartLegendTop:"\u0421\u0432\u0435\u0440\u0445\u0443",chartLegendBottom:"\u0421\u043D\u0438\u0437\u0443",chartLegendLeft:"\u0421\u043B\u0435\u0432\u0430",chartLegendRight:"\u0421\u043F\u0440\u0430\u0432\u0430",chartLegendNone:"\u0421\u043A\u0440\u044B\u0442\u0430",chartFormatDataLabels:"\u041F\u043E\u0434\u043F\u0438\u0441\u0438 \u0434\u0430\u043D\u043D\u044B\u0445",chartFormatScale:"\u0428\u043A\u0430\u043B\u0430 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0439",chartScaleLinear:"\u041B\u0438\u043D\u0435\u0439\u043D\u0430\u044F",chartScaleLog:"\u041B\u043E\u0433\u0430\u0440\u0438\u0444\u043C\u0438\u0447\u0435\u0441\u043A\u0430\u044F",chartFormatTextSize:"\u0420\u0430\u0437\u043C\u0435\u0440 \u0442\u0435\u043A\u0441\u0442\u0430",chartFormatTextColor:"\u0426\u0432\u0435\u0442 \u0442\u0435\u043A\u0441\u0442\u0430",chartFormatDefault:"\u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E",chartFormatLabelAngle:"\u041F\u043E\u0434\u043F\u0438\u0441\u0438 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0439",chartAngleAuto:"\u0410\u0432\u0442\u043E",chartAngleFlat:"\u0413\u043E\u0440\u0438\u0437\u043E\u043D\u0442\u0430\u043B\u044C\u043D\u043E",chartFormatGridLines:"\u041B\u0438\u043D\u0438\u0438 \u0441\u0435\u0442\u043A\u0438",chartGridValue:"\u041E\u0441\u044C \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0439",chartGridBoth:"\u041E\u0431\u0435 \u043E\u0441\u0438",chartGridNone:"\u041D\u0435\u0442",chartFormatGridDashed:"\u041F\u0443\u043D\u043A\u0442\u0438\u0440\u043D\u0430\u044F \u0441\u0435\u0442\u043A\u0430",chartFormatLineWidth:"\u0422\u043E\u043B\u0449\u0438\u043D\u0430 \u043B\u0438\u043D\u0438\u0438",chartFormatLineDashed:"\u041F\u0443\u043D\u043A\u0442\u0438\u0440\u043D\u044B\u0435 \u043B\u0438\u043D\u0438\u0438",chartFormatFillOpacity:"\u041D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u043E\u0441\u0442\u044C \u0437\u0430\u043B\u0438\u0432\u043A\u0438",chartFormatDateFormat:"\u0424\u043E\u0440\u043C\u0430\u0442 \u0434\u0430\u0442\u044B",chartFormatPalette:"\u0426\u0432\u0435\u0442\u0430",chartPaletteTheme:"\u0422\u0435\u043C\u0430",chartPaletteClassic:"\u041A\u043B\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043A\u0430\u044F",chartPaletteColorblind:"\u0414\u043B\u044F \u0434\u0430\u043B\u044C\u0442\u043E\u043D\u0438\u043A\u043E\u0432",chartPaletteVivid:"\u042F\u0440\u043A\u0430\u044F",chartPaletteMonochrome:"\u041E\u0434\u0438\u043D \u0446\u0432\u0435\u0442",sparklineSummary:"{count} \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0439 \u043E\u0442 {min} \u0434\u043E {max}, \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0435 {last}",chartTypeWaterfall:"\u041A\u0430\u0441\u043A\u0430\u0434\u043D\u0430\u044F",chartTypeFunnel:"\u0412\u043E\u0440\u043E\u043D\u043A\u0430",chartTypeTreemap:"\u041F\u043B\u043E\u0441\u043A\u043E\u0435 \u0434\u0435\u0440\u0435\u0432\u043E",chartTypeHeatmap:"\u0422\u0435\u043F\u043B\u043E\u0432\u0430\u044F \u043A\u0430\u0440\u0442\u0430",chartTypeBox:"\u042F\u0449\u0438\u043A \u0441 \u0443\u0441\u0430\u043C\u0438",chartTypeRadar:"\u041B\u0435\u043F\u0435\u0441\u0442\u043A\u043E\u0432\u0430\u044F",chartTypeRangeBar:"\u0414\u0438\u0430\u043F\u0430\u0437\u043E\u043D",chartBoxQ1:"Q1",chartBoxMedian:"\u041C\u0435\u0434\u0438\u0430\u043D\u0430",chartBoxQ3:"Q3",chartBoxOutlier:"\u0412\u044B\u0431\u0440\u043E\u0441",chartTotal:"\u0418\u0442\u043E\u0433\u043E",chartTypeScatter:"\u0422\u043E\u0447\u0435\u0447\u043D\u0430\u044F",chartTypeBubble:"\u041F\u0443\u0437\u044B\u0440\u044C\u043A\u043E\u0432\u0430\u044F",chartXAxis:"\u041E\u0441\u044C X",chartBubbleSize:"\u0420\u0430\u0437\u043C\u0435\u0440",chartXYSampled:"{shown} \u0438\u0437 {total} \u0442\u043E\u0447\u0435\u043A, \u0440\u0430\u0432\u043D\u043E\u043C\u0435\u0440\u043D\u0430\u044F \u0432\u044B\u0431\u043E\u0440\u043A\u0430",licenseMissing:"\u0411\u0435\u0437 \u043B\u0438\u0446\u0435\u043D\u0437\u0438\u0438",licenseExpired:"\u0421\u0440\u043E\u043A \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u043B\u0438\u0446\u0435\u043D\u0437\u0438\u0438 \u0438\u0441\u0442\u0451\u043A",licenseReleaseNotCovered:"\u042D\u0442\u0430 \u0432\u0435\u0440\u0441\u0438\u044F \u043D\u0435 \u043F\u043E\u043A\u0440\u044B\u0432\u0430\u0435\u0442\u0441\u044F \u043B\u0438\u0446\u0435\u043D\u0437\u0438\u0435\u0439",licenseDomainMismatch:"\u041B\u0438\u0446\u0435\u043D\u0437\u0438\u044F \u043D\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u044C\u043D\u0430 \u0434\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u0434\u043E\u043C\u0435\u043D\u0430",licenseRevoked:"\u041B\u0438\u0446\u0435\u043D\u0437\u0438\u044F \u043E\u0442\u043E\u0437\u0432\u0430\u043D\u0430",licenseInvalidFormat:"\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0444\u043E\u0440\u043C\u0430\u0442 \u043B\u0438\u0446\u0435\u043D\u0437\u0438\u043E\u043D\u043D\u043E\u0433\u043E \u043A\u043B\u044E\u0447\u0430",licenseInvalidSignature:"\u041D\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u044C\u043D\u0430\u044F \u043F\u043E\u0434\u043F\u0438\u0441\u044C \u043B\u0438\u0446\u0435\u043D\u0437\u0438\u0438",licenseEngineUnavailable:"\u0411\u0440\u0430\u0443\u0437\u0435\u0440 \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u043F\u0440\u043E\u0432\u0435\u0440\u0438\u0442\u044C \u043B\u0438\u0446\u0435\u043D\u0437\u0438\u044E (\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F HTTPS)",calcAdd:"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0432\u044B\u0447\u0438\u0441\u043B\u044F\u0435\u043C\u044B\u0439 \u0441\u0442\u043E\u043B\u0431\u0435\u0446\u2026",calcEdit:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0432\u044B\u0447\u0438\u0441\u043B\u044F\u0435\u043C\u044B\u0439 \u0441\u0442\u043E\u043B\u0431\u0435\u0446\u2026",calcRemove:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0432\u044B\u0447\u0438\u0441\u043B\u044F\u0435\u043C\u044B\u0439 \u0441\u0442\u043E\u043B\u0431\u0435\u0446",calcTitleAdd:"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0432\u044B\u0447\u0438\u0441\u043B\u044F\u0435\u043C\u044B\u0439 \u0441\u0442\u043E\u043B\u0431\u0435\u0446",calcTitleEdit:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0432\u044B\u0447\u0438\u0441\u043B\u044F\u0435\u043C\u044B\u0439 \u0441\u0442\u043E\u043B\u0431\u0435\u0446",calcName:"\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435",calcFormula:"\u0424\u043E\u0440\u043C\u0443\u043B\u0430",calcFormulaHint:"\u0421\u0442\u043E\u043B\u0431\u0435\u0446 \u043F\u0438\u0448\u0435\u0442\u0441\u044F \u043A\u0430\u043A [\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435]. \u041F\u0440\u0438\u043C\u0435\u0440: [\u0426\u0435\u043D\u0430] * [\u041A\u043E\u043B-\u0432\u043E]",calcColumns:"\u0421\u0442\u043E\u043B\u0431\u0446\u044B",calcFunctions:"\u0424\u0443\u043D\u043A\u0446\u0438\u0438",calcPreview:"\u041F\u0440\u0435\u0434\u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440",calcPreviewEmpty:"\u041D\u0435\u0442 \u0441\u0442\u0440\u043E\u043A \u0434\u043B\u044F \u043F\u0440\u0435\u0434\u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0430",calcErrorAt:"{message} (\u0441\u0438\u043C\u0432\u043E\u043B {position})",calcAddButton:"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C",calcArgsAtLeast:"{min} \u0438\u043B\u0438 \u0431\u043E\u043B\u044C\u0448\u0435",formulaError_empty:"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0444\u043E\u0440\u043C\u0443\u043B\u0443",formulaError_unclosedText:'\u0422\u0435\u043A\u0441\u0442 \u043D\u0435 \u0437\u0430\u043A\u0440\u044B\u0442: \u043D\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 "',formulaError_unclosedColumn:"\u0418\u043C\u044F \u0441\u0442\u043E\u043B\u0431\u0446\u0430 \u043D\u0435 \u0437\u0430\u043A\u0440\u044B\u0442\u043E: \u043D\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 ]",formulaError_emptyColumn:"\u041F\u0443\u0441\u0442\u043E\u0435 \u0438\u043C\u044F \u0441\u0442\u043E\u043B\u0431\u0446\u0430 []",formulaError_unexpectedChar:"\u041D\u0435\u043E\u0436\u0438\u0434\u0430\u043D\u043D\u044B\u0439 \u0441\u0438\u043C\u0432\u043E\u043B {text}",formulaError_expected:"\u041D\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 {text}",formulaError_cellAfterColon:'\u041F\u043E\u0441\u043B\u0435 ":" \u043D\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u044F\u0447\u0435\u0439\u043A\u0438',formulaError_unknownName:"\u041D\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043D\u043E\u0435 \u0438\u043C\u044F {name} \u2014 \u0441\u0442\u043E\u043B\u0431\u0435\u0446 \u043F\u0438\u0448\u0435\u0442\u0441\u044F \u043A\u0430\u043A [{name}]",formulaError_unexpected:"\u041D\u0435\u043E\u0436\u0438\u0434\u0430\u043D\u043D\u044B\u0439 {text}",formulaError_endsEarly:"\u0424\u043E\u0440\u043C\u0443\u043B\u0430 \u043E\u0431\u0440\u044B\u0432\u0430\u0435\u0442\u0441\u044F",formulaError_trailing:"\u041B\u0438\u0448\u043D\u0438\u0439 \u0442\u0435\u043A\u0441\u0442 \u0432 \u043A\u043E\u043D\u0446\u0435",formulaError_unknownColumn:"\u0421\u0442\u043E\u043B\u0431\u0446\u0430 [{name}] \u043D\u0435\u0442",formulaError_unknownFunction:"\u041D\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043D\u0430\u044F \u0444\u0443\u043D\u043A\u0446\u0438\u044F {name}",formulaError_argCount:"{name}: \u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C {range}",formulaError_cellsNotAllowed:"\u0421\u0441\u044B\u043B\u043A\u0438 \u043D\u0430 \u044F\u0447\u0435\u0439\u043A\u0438 \u0432\u0440\u043E\u0434\u0435 A1 \u0437\u0434\u0435\u0441\u044C \u043D\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E\u0442\u0441\u044F \u2014 \u043F\u0438\u0448\u0438\u0442\u0435 \u0441\u0442\u043E\u043B\u0431\u0435\u0446 \u043A\u0430\u043A [\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435]"},um={ok:"\u0645\u0648\u0627\u0641\u0642",cancel:"\u0625\u0644\u063A\u0627\u0621",apply:"\u062A\u0637\u0628\u064A\u0642",close:"\u0625\u063A\u0644\u0627\u0642",clear:"\u0645\u0633\u062D",save:"\u062D\u0641\u0638",search:"\u0628\u062D\u062B...",selectAll:"\u062A\u062D\u062F\u064A\u062F \u0627\u0644\u0643\u0644",showAll:"\u0639\u0631\u0636 \u0627\u0644\u0643\u0644",remove:"\u0625\u0632\u0627\u0644\u0629",none:"\u0628\u0644\u0627",toolbarSearch:"\u0628\u062D\u062B...",exportMenu:"\u062A\u0635\u062F\u064A\u0631",exportCsv:"\u062A\u0635\u062F\u064A\u0631 \u0625\u0644\u0649 CSV",exportExcel:"\u062A\u0635\u062F\u064A\u0631 \u0643\u0644 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u0625\u0644\u0649 Excel",exportExcelSelected:"\u062A\u0635\u062F\u064A\u0631 \u0627\u0644\u0635\u0641\u0648\u0641 \u0627\u0644\u0645\u062D\u062F\u062F\u0629 \u0625\u0644\u0649 Excel",exportPdf:"\u062A\u0635\u062F\u064A\u0631 \u0625\u0644\u0649 PDF",exporting:"\u062C\u0627\u0631\u064A \u0627\u0644\u062A\u0635\u062F\u064A\u0631\u2026",columns:"\u0627\u0644\u0623\u0639\u0645\u062F\u0629",hiddenColumns:"\u0627\u0644\u0623\u0639\u0645\u062F\u0629 \u0627\u0644\u0645\u062E\u0641\u064A\u0629",noHiddenColumns:"\u0644\u0627 \u062A\u0648\u062C\u062F \u0623\u0639\u0645\u062F\u0629 \u0645\u062E\u0641\u064A\u0629.",sortAsc:"\u0627\u0644\u0641\u0631\u0632 \u0645\u0646 \u0623 \u0625\u0644\u0649 \u064A",sortDesc:"\u0627\u0644\u0641\u0631\u0632 \u0645\u0646 \u064A \u0625\u0644\u0649 \u0623",clearSort:"\u0645\u0633\u062D \u0627\u0644\u0641\u0631\u0632",cardSortBy:"\u062A\u0631\u062A\u064A\u0628 \u062D\u0633\u0628",groupByColumn:"\u062A\u062C\u0645\u064A\u0639 \u062D\u0633\u0628 \u0647\u0630\u0627 \u0627\u0644\u0639\u0645\u0648\u062F",ungroupColumn:"\u0625\u0632\u0627\u0644\u0629 \u0645\u0646 \u0627\u0644\u062A\u062C\u0645\u064A\u0639",showGroupPanel:"\u0639\u0631\u0636 \u0644\u0648\u062D\u0629 \u0627\u0644\u062A\u062C\u0645\u064A\u0639",hideGroupPanel:"\u0625\u062E\u0641\u0627\u0621 \u0644\u0648\u062D\u0629 \u0627\u0644\u062A\u062C\u0645\u064A\u0639",showFooter:"\u0639\u0631\u0636 \u0627\u0644\u062A\u0630\u064A\u064A\u0644",hideFooter:"\u0625\u062E\u0641\u0627\u0621 \u0627\u0644\u062A\u0630\u064A\u064A\u0644",showGroupFooters:"\u0639\u0631\u0636 \u062A\u0630\u064A\u064A\u0644\u0627\u062A \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0627\u062A",hideGroupFooters:"\u0625\u062E\u0641\u0627\u0621 \u062A\u0630\u064A\u064A\u0644\u0627\u062A \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0627\u062A",hideColumn:"\u0625\u062E\u0641\u0627\u0621 \u0647\u0630\u0627 \u0627\u0644\u0639\u0645\u0648\u062F",fieldChooser:"\u0645\u062D\u062F\u062F \u0627\u0644\u062D\u0642\u0648\u0644\u2026",bestFit:"\u0623\u0641\u0636\u0644 \u0639\u0631\u0636",bestFitAll:"\u0623\u0641\u0636\u0644 \u0639\u0631\u0636 (\u0643\u0644 \u0627\u0644\u0623\u0639\u0645\u062F\u0629)",pinRowTop:"\u062A\u062B\u0628\u064A\u062A \u0627\u0644\u0635\u0641 \u0641\u064A \u0627\u0644\u0623\u0639\u0644\u0649",pinRowBottom:"\u062A\u062B\u0628\u064A\u062A \u0627\u0644\u0635\u0641 \u0641\u064A \u0627\u0644\u0623\u0633\u0641\u0644",unpinRow:"\u0625\u0644\u063A\u0627\u0621 \u062A\u062B\u0628\u064A\u062A \u0627\u0644\u0635\u0641",findLabel:"\u0627\u0644\u0628\u062D\u062B \u0641\u064A \u0627\u0644\u062C\u062F\u0648\u0644",findPrevious:"\u0627\u0644\u0645\u0637\u0627\u0628\u0642\u0629 \u0627\u0644\u0633\u0627\u0628\u0642\u0629",findNext:"\u0627\u0644\u0645\u0637\u0627\u0628\u0642\u0629 \u0627\u0644\u062A\u0627\u0644\u064A\u0629",findClose:"\u0625\u063A\u0644\u0627\u0642 \u0627\u0644\u0628\u062D\u062B",findCount:"{n} \u0645\u0646 {count}",findNone:"\u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u0637\u0627\u0628\u0642\u0627\u062A",renameColumn:"\u0625\u0639\u0627\u062F\u0629 \u062A\u0633\u0645\u064A\u0629 \u0627\u0644\u0639\u0645\u0648\u062F",fixedPosition:"\u062A\u0639\u064A\u064A\u0646 \u0645\u0648\u0636\u0639 \u062B\u0627\u0628\u062A",pinLeft:"\u064A\u0633\u0627\u0631",pinRight:"\u064A\u0645\u064A\u0646",pinSticky:"\u0645\u062B\u0628\u0651\u062A",unpin:"\u0625\u0644\u063A\u0627\u0621 \u0627\u0644\u062A\u062B\u0628\u064A\u062A",moveLeft:"\u0627\u0646\u062A\u0642\u0627\u0644 \u0644\u0644\u064A\u0633\u0627\u0631",moveRight:"\u0627\u0646\u062A\u0642\u0627\u0644 \u0644\u0644\u064A\u0645\u064A\u0646",filterPlaceholder:"\u062A\u0635\u0641\u064A\u0629\u2026",filterColumnAria:"\u062A\u0635\u0641\u064A\u0629 {column}",filterOperatorDefault:"\u0627\u0641\u062A\u0631\u0627\u0636\u064A",filterOperatorAria:"\u0639\u0627\u0645\u0644 \u0627\u0644\u062A\u0635\u0641\u064A\u0629 \u0644\u0640 {column}",filterSelectAll:"\u062A\u062D\u062F\u064A\u062F \u0627\u0644\u0643\u0644",filterBlank:"(\u0641\u0627\u0631\u063A)",filterNonBlank:"(\u063A\u064A\u0631 \u0641\u0627\u0631\u063A)",filterEmptyText:"(\u0646\u0635 \u0641\u0627\u0631\u063A)",filterSpace:"(\u0645\u0633\u0627\u0641\u0629 \u0648\u0627\u062D\u062F\u0629)",filterSpaces:"(\u0639\u062F\u062F \u0627\u0644\u0645\u0633\u0627\u0641\u0627\u062A: {n})",filterNoMatch:"\u0644\u0627 \u062A\u0648\u062C\u062F \u0642\u064A\u0645 \u0645\u0637\u0627\u0628\u0642\u0629",filterLoading:"\u062C\u0627\u0631\u064A \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0642\u064A\u0645\u2026",filterTruncated:"\u062A\u064F\u0639\u0631\u0636 \u0627\u0644\u0642\u064A\u0645 \u0627\u0644\u0623\u0648\u0644\u0649 \u0641\u0642\u0637 \u2014 \u0627\u0633\u062A\u062E\u062F\u0645 \u0627\u0644\u0628\u062D\u062B \u0644\u0644\u0639\u062B\u0648\u0631 \u0639\u0644\u0649 \u0627\u0644\u0628\u0642\u064A\u0629.",filterRemove:"\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u062A\u0635\u0641\u064A\u0629",filterToggle:"\u062A\u0637\u0628\u064A\u0642 \u0627\u0644\u062A\u0635\u0641\u064A\u0629",filterEditBuilder:"\u062A\u0639\u062F\u064A\u0644 \u0627\u0644\u062A\u0635\u0641\u064A\u0629",filterNone:"\u0644\u0627 \u062A\u0648\u062C\u062F \u062A\u0635\u0641\u064A\u0629",filterActive:"\u0627\u0644\u062A\u0635\u0641\u064A\u0629 \u0645\u0641\u0639\u0651\u0644\u0629",opEquals:"\u064A\u0633\u0627\u0648\u064A",opNotEquals:"\u0644\u0627 \u064A\u0633\u0627\u0648\u064A",opGreater:">",opGreaterOrEqual:"\u2265",opLess:"<",opLessOrEqual:"\u2264",opContains:"\u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649",opNotContains:"\u0644\u0627 \u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649",opStartsWith:"\u064A\u0628\u062F\u0623 \u0628\u0640",opEndsWith:"\u064A\u0646\u062A\u0647\u064A \u0628\u0640",opIsBlank:"\u0641\u0627\u0631\u063A",opIsNotBlank:"\u063A\u064A\u0631 \u0641\u0627\u0631\u063A",opIsOneOf:"\u0648\u0627\u062D\u062F \u0645\u0646",opIsBetween:"\u0628\u064A\u0646",opValuesCount:"{n} \u0642\u064A\u0645\u0629",opInPeriod:"\u0636\u0645\u0646 \u0627\u0644\u0641\u062A\u0631\u0629",periodToday:"\u0627\u0644\u064A\u0648\u0645",periodYesterday:"\u0623\u0645\u0633",periodTomorrow:"\u063A\u062F\u064B\u0627",periodThisWeek:"\u0647\u0630\u0627 \u0627\u0644\u0623\u0633\u0628\u0648\u0639",periodLastWeek:"\u0627\u0644\u0623\u0633\u0628\u0648\u0639 \u0627\u0644\u0645\u0627\u0636\u064A",periodNextWeek:"\u0627\u0644\u0623\u0633\u0628\u0648\u0639 \u0627\u0644\u0642\u0627\u062F\u0645",periodThisMonth:"\u0647\u0630\u0627 \u0627\u0644\u0634\u0647\u0631",periodLastMonth:"\u0627\u0644\u0634\u0647\u0631 \u0627\u0644\u0645\u0627\u0636\u064A",periodNextMonth:"\u0627\u0644\u0634\u0647\u0631 \u0627\u0644\u0642\u0627\u062F\u0645",periodThisQuarter:"\u0647\u0630\u0627 \u0627\u0644\u0631\u0628\u0639",periodLastQuarter:"\u0627\u0644\u0631\u0628\u0639 \u0627\u0644\u0645\u0627\u0636\u064A",periodNextQuarter:"\u0627\u0644\u0631\u0628\u0639 \u0627\u0644\u0642\u0627\u062F\u0645",periodThisYear:"\u0647\u0630\u0627 \u0627\u0644\u0639\u0627\u0645",periodLastYear:"\u0627\u0644\u0639\u0627\u0645 \u0627\u0644\u0645\u0627\u0636\u064A",periodNextYear:"\u0627\u0644\u0639\u0627\u0645 \u0627\u0644\u0642\u0627\u062F\u0645",periodYearToDate:"\u0645\u0646\u0630 \u0628\u062F\u0627\u064A\u0629 \u0627\u0644\u0639\u0627\u0645",periodLastDays:"\u0622\u062E\u0631 {n} \u064A\u0648\u0645",periodNextDays:"\u0627\u0644\u0640 {n} \u064A\u0648\u0645 \u0627\u0644\u0642\u0627\u062F\u0645\u0629",filterAnd:"\u0648",filterOr:"\u0623\u0648",builderTitle:"\u0645\u0646\u0634\u0626 \u0627\u0644\u062A\u0635\u0641\u064A\u0629",builderCombine:"\u062F\u0645\u062C \u0627\u0644\u0634\u0631\u0648\u0637 \u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645",builderAddCondition:"\u0625\u0636\u0627\u0641\u0629 \u0634\u0631\u0637",builderAddGroup:"\u0625\u0636\u0627\u0641\u0629 \u0645\u062C\u0645\u0648\u0639\u0629",builderRemoveGroup:"\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629",builderRemoveCondition:"\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0634\u0631\u0637",builderEmpty:"\u0644\u0627 \u062A\u0648\u062C\u062F \u0634\u0631\u0648\u0637 \u0628\u0639\u062F.",builderColumn:"\u0627\u0644\u0639\u0645\u0648\u062F",builderOperator:"\u0627\u0644\u0645\u064F\u0639\u0627\u0645\u0644",builderValue:"\u0627\u0644\u0642\u064A\u0645\u0629",builderValueFrom:"\u0645\u0646",builderValueTo:"\u0625\u0644\u0649",builderValuePlaceholder:"\u0623\u062F\u062E\u0644 \u0642\u064A\u0645\u0629",builderOpen:"\u0645\u0646\u0634\u0626 \u0627\u0644\u0645\u0631\u0634\u062D\u0627\u062A\u2026",builderClearAll:"\u0645\u0633\u062D \u0627\u0644\u0643\u0644",builderConditionButton:"+ \u0634\u0631\u0637",builderGroupButton:"+ \u0645\u062C\u0645\u0648\u0639\u0629",builderTrue:"\u0635\u062D\u064A\u062D",builderFalse:"\u062E\u0637\u0623",builderPeriod:"\u0627\u0644\u0641\u062A\u0631\u0629",builderDays:"\u0627\u0644\u0623\u064A\u0627\u0645",filterCustom:"(\u0645\u062E\u0635\u0635\u2026)",filterPopupAria:"\u0645\u0631\u0634\u062D {column}",importOpen:"\u0627\u0633\u062A\u064A\u0631\u0627\u062F\u2026",groupPanelHint:"\u0627\u0633\u062D\u0628 \u0639\u0645\u0648\u062F\u064B\u0627 \u0625\u0644\u0649 \u0647\u0646\u0627 \u0644\u0644\u062A\u062C\u0645\u064A\u0639 \u062D\u0633\u0628\u0647",groupAddLevel:"\u0625\u0636\u0627\u0641\u0629 \u0645\u0633\u062A\u0648\u0649 \u062A\u062C\u0645\u064A\u0639",groupAddLevelButton:"+ \u0625\u0636\u0627\u0641\u0629 \u0645\u0633\u062A\u0648\u0649\u2026",groupNoGrouping:"(\u0628\u062F\u0648\u0646 \u062A\u062C\u0645\u064A\u0639)",groupLevelAria:"\u0645\u0633\u062A\u0648\u0649 \u0627\u0644\u062A\u062C\u0645\u064A\u0639 {n}",groupRemoveAria:"\u0625\u0632\u0627\u0644\u0629 {column}",groupExpandAll:"\u062A\u0648\u0633\u064A\u0639 \u0627\u0644\u0643\u0644",groupCollapseAll:"\u0637\u064A \u0627\u0644\u0643\u0644",pagerFirst:"\u0627\u0644\u0635\u0641\u062D\u0629 \u0627\u0644\u0623\u0648\u0644\u0649",pagerPrevious:"\u0627\u0644\u0635\u0641\u062D\u0629 \u0627\u0644\u0633\u0627\u0628\u0642\u0629",pagerNext:"\u0627\u0644\u0635\u0641\u062D\u0629 \u0627\u0644\u062A\u0627\u0644\u064A\u0629",pagerLast:"\u0627\u0644\u0635\u0641\u062D\u0629 \u0627\u0644\u0623\u062E\u064A\u0631\u0629",pagerPage:"\u0635\u0641\u062D\u0629",pagerOf:"\u0645\u0646",pagerRowsPerPage:"\u0635\u0641\u0648\u0641 \u0644\u0643\u0644 \u0635\u0641\u062D\u0629",pagerAria:"\u062A\u0631\u0642\u064A\u0645 \u0627\u0644\u0635\u0641\u062D\u0627\u062A",pagerPageButton:"\u0627\u0644\u0635\u0641\u062D\u0629 {n}",selectAllRows:"\u062A\u062D\u062F\u064A\u062F \u0643\u0644 \u0627\u0644\u0635\u0641\u0648\u0641",selectRowAria:"\u062A\u062D\u062F\u064A\u062F \u0627\u0644\u0635\u0641 {row}",selectGroupAria:"\u062A\u062D\u062F\u064A\u062F \u0635\u0641\u0648\u0641 {group} \u0648\u0639\u062F\u062F\u0647\u0627 {count}",summaryAria:"\u0645\u0644\u062E\u0635",columnTotalsAria:"\u0625\u062C\u0645\u0627\u0644\u064A\u0627\u062A \u0627\u0644\u0623\u0639\u0645\u062F\u0629",rowActions:"\u0625\u062C\u0631\u0627\u0621\u0627\u062A \u0627\u0644\u0635\u0641",detailsAria:"\u0627\u0644\u062A\u0641\u0627\u0635\u064A\u0644",rowNumberAria:"\u0631\u0642\u0645 \u0627\u0644\u0635\u0641",noteEditorAria:"\u0645\u0644\u0627\u062D\u0638\u0629 \u0627\u0644\u062E\u0644\u064A\u0629",notePlaceholder:"\u0627\u0643\u062A\u0628 \u0645\u0644\u0627\u062D\u0638\u0629 \u062D\u0648\u0644 \u0647\u0630\u0647 \u0627\u0644\u062E\u0644\u064A\u0629\u2026",addNote:"\u0625\u0636\u0627\u0641\u0629 \u0645\u0644\u0627\u062D\u0638\u0629\u2026",editNote:"\u062A\u0639\u062F\u064A\u0644 \u0627\u0644\u0645\u0644\u0627\u062D\u0638\u0629\u2026",deleteNote:"\u062D\u0630\u0641 \u0627\u0644\u0645\u0644\u0627\u062D\u0638\u0629",expandDetails:"\u062A\u0648\u0633\u064A\u0639 \u0627\u0644\u062A\u0641\u0627\u0635\u064A\u0644",collapseDetails:"\u0637\u064A \u0627\u0644\u062A\u0641\u0627\u0635\u064A\u0644",expandTreeRow:"\u062A\u0648\u0633\u064A\u0639 \u0627\u0644\u0635\u0641",collapseTreeRow:"\u0637\u064A \u0627\u0644\u0635\u0641",expandColumnGroup:"\u062A\u0648\u0633\u064A\u0639 \u0645\u062C\u0645\u0648\u0639\u0629 \u0627\u0644\u0623\u0639\u0645\u062F\u0629",collapseColumnGroup:"\u0637\u064A \u0645\u062C\u0645\u0648\u0639\u0629 \u0627\u0644\u0623\u0639\u0645\u062F\u0629",dragToReorder:"\u0627\u0633\u062D\u0628 \u0644\u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u062A\u0631\u062A\u064A\u0628",menuCopy:"\u0646\u0633\u062E",menuCopyWithHeaders:"\u0646\u0633\u062E \u0645\u0639 \u0627\u0644\u0639\u0646\u0627\u0648\u064A\u0646",menuCopyWithGroupHeaders:"\u0646\u0633\u062E \u0645\u0639 \u0639\u0646\u0627\u0648\u064A\u0646 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0627\u062A",menuCut:"\u0642\u0635",menuPaste:"\u0644\u0635\u0642",menuExport:"\u062A\u0635\u062F\u064A\u0631",menuChartRange:"\u0631\u0633\u0645 \u0628\u064A\u0627\u0646\u064A \u0644\u0644\u062E\u0644\u0627\u064A\u0627 \u0627\u0644\u0645\u062D\u062F\u062F\u0629",statsSum:"\u0645\u062C\u0645\u0648\u0639",statsCount:"\u0627\u0644\u0639\u062F\u062F",statsAvg:"\u0645\u062A\u0648\u0633\u0637",statsMin:"\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u062F\u0646\u0649",statsMax:"\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649",statsCells:"\u0627\u0644\u062E\u0644\u0627\u064A\u0627",statsTooLarge:"\u0627\u0644\u062A\u062D\u062F\u064A\u062F \u0623\u0643\u0628\u0631 \u0645\u0646 \u0623\u0646 \u064A\u064F\u062C\u0645\u0639",statusRows:"\u0627\u0644\u0635\u0641\u0648\u0641",statusFiltered:"\u0645\u0635\u0641\u0651\u0649",statusSelected:"\u0645\u062D\u062F\u062F",summaryRows:"\u0635\u0641\u0648\u0641",announceRows:"{n} \u0635\u0641\u0648\u0641",announceSortedBy:"\u0645\u0631\u062A\u0628\u0629 \u062D\u0633\u0628 {columns}",announceSelected:"{n} \u0645\u062D\u062F\u062F\u0629",announceAscending:"\u062A\u0635\u0627\u0639\u062F\u064A",announceDescending:"\u062A\u0646\u0627\u0632\u0644\u064A",sideFilters:"\u0639\u0648\u0627\u0645\u0644 \u0627\u0644\u062A\u0635\u0641\u064A\u0629",sideBarAria:"\u0644\u0648\u062D\u0627\u062A \u0627\u0644\u0623\u062F\u0648\u0627\u062A",sideClearFilters:"\u0645\u0633\u062D \u0643\u0644 \u0639\u0648\u0627\u0645\u0644 \u0627\u0644\u062A\u0635\u0641\u064A\u0629",summarySum:"\u0645\u062C\u0645\u0648\u0639",summaryAvg:"\u0645\u062A\u0648\u0633\u0637",summaryMin:"\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u062F\u0646\u0649",summaryMax:"\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649",summaryCount:"\u0627\u0644\u0639\u062F\u062F",summaryDistinct:"\u0627\u0644\u0642\u064A\u0645 \u0627\u0644\u0641\u0631\u064A\u062F\u0629",summaryCustom:"\u0645\u062E\u0635\u0635",noTotal:"\u0644\u0627 \u064A\u0648\u062C\u062F \u0625\u062C\u0645\u0627\u0644\u064A",busy:"\u062C\u0627\u0631\u064A \u0627\u0644\u0639\u0645\u0644\u2026",busyLoading:"\u062C\u0627\u0631\u064A \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0635\u0641\u0648\u0641\u2026",rowsLoadFailed:"\u062A\u0639\u0630\u0651\u0631 \u062A\u062D\u0645\u064A\u0644 \u0647\u0630\u0647 \u0627\u0644\u0635\u0641\u0648\u0641.",retryLoad:"\u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629",busyEncoding:"\u062C\u0627\u0631\u064A \u062A\u062D\u0636\u064A\u0631 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A\u2026",busyFiltering:"\u062C\u0627\u0631\u064A \u062A\u0635\u0641\u064A\u0629 \u0627\u0644\u0635\u0641\u0648\u0641\u2026",busySorting:"\u062C\u0627\u0631\u064A \u0641\u0631\u0632 \u0627\u0644\u0635\u0641\u0648\u0641\u2026",busyComputing:"\u062C\u0627\u0631\u064A \u0627\u0644\u062A\u0635\u0641\u064A\u0629 \u0648\u0627\u0644\u0641\u0631\u0632\u2026",busyGrouping:"\u062C\u0627\u0631\u064A \u0625\u0646\u0634\u0627\u0621 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0627\u062A\u2026",busyAggregating:"\u062C\u0627\u0631\u064A \u062D\u0633\u0627\u0628 \u0627\u0644\u0625\u062C\u0645\u0627\u0644\u064A\u0627\u062A\u2026",busyProjecting:"\u062C\u0627\u0631\u064A \u062A\u062D\u062F\u064A\u062B \u0627\u0644\u0639\u0631\u0636\u2026",busyExporting:"\u062C\u0627\u0631\u064A \u0625\u0646\u0634\u0627\u0621 \u0627\u0644\u0645\u0644\u0641\u2026",noData:"\u0644\u0645 \u064A\u062A\u0645 \u0627\u0644\u0639\u062B\u0648\u0631 \u0639\u0644\u0649 \u0628\u064A\u0627\u0646\u0627\u062A",editNewRow:"\u0635\u0641 \u062C\u062F\u064A\u062F",editSaveChanges:"\u062D\u0641\u0638 \u0627\u0644\u062A\u063A\u064A\u064A\u0631\u0627\u062A",editDiscardChanges:"\u062A\u062C\u0627\u0647\u0644 \u0627\u0644\u062A\u063A\u064A\u064A\u0631\u0627\u062A",editRow:"\u062A\u0639\u062F\u064A\u0644 \u0627\u0644\u0635\u0641",editRowMenu:"\u062A\u0639\u062F\u064A\u0644 \u0627\u0644\u0635\u0641\u2026",editDeleteRow:"\u062D\u0630\u0641 \u0627\u0644\u0635\u0641",editUndoDelete:"\u062A\u0631\u0627\u062C\u0639 \u0639\u0646 \u0627\u0644\u062D\u0630\u0641",editActions:"\u0627\u0644\u0625\u062C\u0631\u0627\u0621\u0627\u062A",editSaveRow:"\u062D\u0641\u0638 \u0627\u0644\u0635\u0641",editSaving:"\u062C\u0627\u0631\u064A \u0627\u0644\u062D\u0641\u0638\u2026",editEditingRow:"\u062C\u0627\u0631\u064A \u062A\u0639\u062F\u064A\u0644 \u0627\u0644\u0635\u0641 {row}",editSaveCount:"\u062D\u0641\u0638 {n} \u0635\u0641",editCannotSave:"\u062A\u0639\u0630\u0651\u0631 \u0627\u0644\u062D\u0641\u0638",editSaveFailed:"\u062A\u0639\u0630\u0651\u0631 \u062D\u0641\u0638 \u0627\u0644\u062A\u063A\u064A\u064A\u0631\u0627\u062A.",rowStatusChanged:"\u062A\u063A\u064A\u064A\u0631\u0627\u062A \u063A\u064A\u0631 \u0645\u062D\u0641\u0648\u0638\u0629",rowStatusSaving:"\u062C\u0627\u0631\u064D \u0627\u0644\u062D\u0641\u0638\u2026",rowStatusSaved:"\u062A\u0645 \u0627\u0644\u062D\u0641\u0638",rowStatusError:"\u062A\u0639\u0630\u0651\u0631 \u0627\u0644\u062D\u0641\u0638",rowStatusRetry:"\u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629",rowStatusDelete:"\u062D\u0630\u0641 \u0627\u0644\u0635\u0641",editDeleteConfirm:"\u0647\u0644 \u062A\u0631\u064A\u062F \u062D\u0630\u0641 \u0647\u0630\u0627 \u0627\u0644\u0635\u0641\u061F",editAddRowUndo:"\u0625\u0636\u0627\u0641\u0629 \u0635\u0641",editDeleteRowUndo:"\u062D\u0630\u0641 \u0635\u0641",editCellUndo:"\u062A\u062D\u0631\u064A\u0631 {column}",editFillUndo:"\u062A\u0639\u0628\u0626\u0629 {count} \u062E\u0644\u064A\u0629",editPasteUndo:"\u0644\u0635\u0642 {count} \u062E\u0644\u064A\u0629",editCutUndo:"\u0642\u0635 {count} \u062E\u0644\u064A\u0629",editGroupTotal:"\u0625\u062C\u0645\u0627\u0644\u064A \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629",editGroupTotalUndo:"\u062A\u063A\u064A\u064A\u0631 \u0625\u062C\u0645\u0627\u0644\u064A {column} ({count} \u0635\u0641\u0648\u0641)",editNoMatch:"\u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u0637\u0627\u0628\u0642\u0629",formEditTitle:"\u062A\u0639\u062F\u064A\u0644 \u0627\u0644\u0635\u0641",formAddTitle:"\u0635\u0641 \u062C\u062F\u064A\u062F",formShortcut:"{key}+Enter \u0644\u0644\u062D\u0641\u0638 \xB7 Esc \u0644\u0644\u0625\u0644\u063A\u0627\u0621",validationRequired:"\u0647\u0630\u0627 \u0627\u0644\u062D\u0642\u0644 \u0645\u0637\u0644\u0648\u0628",validationNumber:"\u064A\u062C\u0628 \u0623\u0646 \u064A\u0643\u0648\u0646 \u0631\u0642\u0645\u064B\u0627",validationFormat:"\u062A\u0646\u0633\u064A\u0642 \u063A\u064A\u0631 \u0635\u0627\u0644\u062D",validationEmail:"\u0639\u0646\u0648\u0627\u0646 \u0628\u0631\u064A\u062F \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A \u063A\u064A\u0631 \u0635\u0627\u0644\u062D",validationInvalid:"\u0642\u064A\u0645\u0629 \u063A\u064A\u0631 \u0635\u0627\u0644\u062D\u0629",dateCalendar:"\u0627\u0644\u062A\u0642\u0648\u064A\u0645",dateOpenCalendar:"\u0641\u062A\u062D \u0627\u0644\u062A\u0642\u0648\u064A\u0645",datePreviousMonth:"\u0627\u0644\u0634\u0647\u0631 \u0627\u0644\u0633\u0627\u0628\u0642",dateNextMonth:"\u0627\u0644\u0634\u0647\u0631 \u0627\u0644\u062A\u0627\u0644\u064A",monthJanuary:"\u064A\u0646\u0627\u064A\u0631",monthFebruary:"\u0641\u0628\u0631\u0627\u064A\u0631",monthMarch:"\u0645\u0627\u0631\u0633",monthApril:"\u0623\u0628\u0631\u064A\u0644",monthMay:"\u0645\u0627\u064A\u0648",monthJune:"\u064A\u0648\u0646\u064A\u0648",monthJuly:"\u064A\u0648\u0644\u064A\u0648",monthAugust:"\u0623\u063A\u0633\u0637\u0633",monthSeptember:"\u0633\u0628\u062A\u0645\u0628\u0631",monthOctober:"\u0623\u0643\u062A\u0648\u0628\u0631",monthNovember:"\u0646\u0648\u0641\u0645\u0628\u0631",monthDecember:"\u062F\u064A\u0633\u0645\u0628\u0631",weekStartsOn:"6",weekdaySu:"\u0623\u062D\u062F",weekdayMo:"\u0625\u062B\u0646",weekdayTu:"\u062B\u0644\u0627",weekdayWe:"\u0623\u0631\u0628",weekdayTh:"\u062E\u0645\u064A",weekdayFr:"\u062C\u0645\u0639",weekdaySa:"\u0633\u0628\u062A",importTitle:"\u0627\u0633\u062A\u064A\u0631\u0627\u062F \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A",importStepSource:"\u0661. \u0627\u0644\u0645\u0635\u062F\u0631",importStepMap:"\u0662. \u0645\u0637\u0627\u0628\u0642\u0629 \u0627\u0644\u0623\u0639\u0645\u062F\u0629",importFile:"\u0645\u0644\u0641 CSV",importPaste:"\u2026\u0623\u0648 \u0627\u0644\u0635\u0642 \u0627\u0644\u0635\u0641\u0648\u0641",importSeparator:"\u0627\u0644\u0641\u0627\u0635\u0644",importSeparatorAuto:"\u0643\u0634\u0641 \u062A\u0644\u0642\u0627\u0626\u064A",importSeparatorComma:"\u0641\u0627\u0635\u0644\u0629 ,",importSeparatorSemicolon:"\u0641\u0627\u0635\u0644\u0629 \u0645\u0646\u0642\u0648\u0637\u0629 ;",importSeparatorTab:"\u0645\u0633\u0627\u0641\u0629 \u062C\u062F\u0648\u0644\u0629",importSeparatorPipe:"\u0634\u0631\u0637\u0629 \u0639\u0645\u0648\u062F\u064A\u0629 |",importFileColumn:"\u0639\u0645\u0648\u062F \u0627\u0644\u0645\u0644\u0641",importDetected:"\u0627\u0644\u0645\u0643\u062A\u0634\u0641",importGridColumn:"\u0639\u0645\u0648\u062F \u0627\u0644\u062C\u062F\u0648\u0644",importSample:"\u0639\u064A\u0646\u0629",importSkip:"\u2014 \u062A\u062E\u0637\u064D \u2014",importPreview:"\u0645\u0639\u0627\u064A\u0646\u0629",importNoSource:"\u0627\u062E\u062A\u0631 \u0645\u0644\u0641\u064B\u0627 \u0623\u0648\u0644\u064B\u0627 \u0623\u0648 \u0627\u0644\u0635\u0642 \u0628\u0639\u0636 \u0627\u0644\u0635\u0641\u0648\u0641.",importNoRows:"\u0644\u0645 \u064A\u062A\u0645 \u0627\u0644\u0639\u062B\u0648\u0631 \u0639\u0644\u0649 \u0635\u0641\u0648\u0641 \u0628\u064A\u0627\u0646\u0627\u062A.",importAction:"\u0627\u0633\u062A\u064A\u0631\u0627\u062F",exportAborted:"\u062A\u0645 \u0625\u0644\u063A\u0627\u0621 \u0627\u0644\u062A\u0635\u062F\u064A\u0631",exportSheetName:"\u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A",chart:"\u0627\u0644\u0631\u0633\u0645 \u0627\u0644\u0628\u064A\u0627\u0646\u064A",chartCategory:"\u0627\u0644\u0641\u0626\u0629",chartSeries:"\u0627\u0644\u0633\u0644\u0633\u0644\u0629",chartAddSeries:"\u0625\u0636\u0627\u0641\u0629 \u0633\u0644\u0633\u0644\u0629",chartRemoveSeries:"\u0625\u0632\u0627\u0644\u0629",chartSource:"\u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A",chartSourceView:"\u0627\u0644\u0635\u0641\u0648\u0641 \u0627\u0644\u0645\u0635\u0641\u0651\u0627\u0629",chartSourceSelection:"\u0627\u0644\u0635\u0641\u0648\u0641 \u0627\u0644\u0645\u062D\u062F\u062F\u0629",chartSourceAll:"\u0643\u0644 \u0627\u0644\u0635\u0641\u0648\u0641",chartSourceRange:"\u0627\u0644\u0646\u0637\u0627\u0642 \u0627\u0644\u0645\u062D\u062F\u062F (\u0627\u0644\u0635\u0641\u0648\u0641 {from}\u2013{to})",chartClose:"\u0625\u063A\u0644\u0627\u0642 \u0627\u0644\u0631\u0633\u0645 \u0627\u0644\u0628\u064A\u0627\u0646\u064A",chartFullscreen:"\u0645\u0644\u0621 \u0627\u0644\u0634\u0627\u0634\u0629",chartExitFullscreen:"\u0625\u0646\u0647\u0627\u0621 \u0645\u0644\u0621 \u0627\u0644\u0634\u0627\u0634\u0629",chartFloat:"\u0641\u0635\u0644 \u0641\u064A \u0646\u0627\u0641\u0630\u0629",chartDock:"\u0625\u0631\u0633\u0627\u0621",chartNewWindow:"\u0646\u0627\u0641\u0630\u0629 \u062C\u062F\u064A\u062F\u0629",chartMoveWindow:"\u0646\u0642\u0644 \u0646\u0627\u0641\u0630\u0629 \u0627\u0644\u0645\u062E\u0637\u0637",chartResizeWindow:"\u062A\u063A\u064A\u064A\u0631 \u062D\u062C\u0645 \u0646\u0627\u0641\u0630\u0629 \u0627\u0644\u0645\u062E\u0637\u0637",chartResizeDock:"\u0627\u0633\u062D\u0628 \u0644\u062A\u063A\u064A\u064A\u0631 \u0627\u0631\u062A\u0641\u0627\u0639 \u0627\u0644\u0645\u062E\u0637\u0637",chartSwitch:"\u062A\u0628\u062F\u064A\u0644 \u0627\u0644\u0641\u0626\u0627\u062A \u0648\u0627\u0644\u0633\u0644\u0627\u0633\u0644",chartUnlink:"\u0641\u0635\u0644",chartLink:"\u0631\u0628\u0637",chartUnlinked:"\u0645\u0641\u0635\u0648\u0644: \u064A\u062D\u062A\u0641\u0638 \u0627\u0644\u0645\u062E\u0637\u0637 \u0628\u0628\u064A\u0627\u0646\u0627\u062A\u0647 \u0648\u0644\u0645 \u064A\u0639\u062F \u064A\u062A\u0628\u0639 \u0627\u0644\u062C\u062F\u0648\u0644.",chartExportPng:"PNG",chartExportSvg:"SVG",chartExportFailed:"\u062A\u0639\u0630\u0651\u0631 \u062A\u0635\u062F\u064A\u0631 \u0627\u0644\u0631\u0633\u0645 \u0627\u0644\u0628\u064A\u0627\u0646\u064A.",chartCrossFiltered:"\u062A\u0645\u062A \u062A\u0635\u0641\u064A\u0629 \u0627\u0644\u062C\u062F\u0648\u0644 \u0625\u0644\u0649 {value}.",chartBlankCategory:"(\u0641\u0627\u0631\u063A)",chartTruncated:"\u064A\u062A\u0645 \u0639\u0631\u0636 \u0623\u0639\u0644\u0649 {n} \u0641\u0626\u0629\u061B \u0648\u0627\u0644\u0628\u0627\u0642\u064A \u0645\u062C\u0645\u0651\u0639 \u0636\u0645\u0646 \xAB\u0623\u062E\u0631\u0649\xBB.",chartOther:"\u0623\u062E\u0631\u0649",chartEmpty:"\u0644\u0627 \u064A\u0648\u062C\u062F \u0634\u064A\u0621 \u0644\u0639\u0631\u0636\u0647 \u0628\u0639\u062F.",chartNoVisibleSeries:"\u0644\u0627 \u062A\u0648\u062C\u062F \u0633\u0644\u0627\u0633\u0644 \u0645\u0631\u0626\u064A\u0629.",chartNeedsMoreSeries:"\u064A\u062A\u0637\u0644\u0628 \u0647\u0630\u0627 \u0627\u0644\u0646\u0648\u0639 \u0645\u0646 \u0627\u0644\u0645\u062E\u0637\u0637\u0627\u062A \u0639\u0645\u0648\u062F\u064E\u064A \u0642\u064A\u0645 \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644 (\u0645\u062B\u0644 \u0627\u0644\u0623\u062F\u0646\u0649 \u0648\u0627\u0644\u0623\u0639\u0644\u0649) \u2014 \u0623\u0636\u0641 \u0633\u0644\u0633\u0644\u0629 \u062B\u0627\u0646\u064A\u0629.",chartLoading:"\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0645\u064A\u0644\u2026",chartNeedsRecharts:"\u062A\u062D\u062A\u0627\u062C \u0627\u0644\u0631\u0633\u0648\u0645 \u0627\u0644\u0628\u064A\u0627\u0646\u064A\u0629 \u0625\u0644\u0649 \u062D\u0632\u0645\u0629 `recharts` \u0627\u0644\u0627\u062E\u062A\u064A\u0627\u0631\u064A\u0629. \u062B\u0628\u0651\u062A\u0647\u0627 \u0644\u0631\u0633\u0645\u0647\u0627.",chartOnlyOneSeries:"\u0647\u0630\u0627 \u0627\u0644\u0646\u0648\u0639 \u0645\u0646 \u0627\u0644\u0631\u0633\u0648\u0645 \u064A\u0639\u0631\u0636 \u0633\u0644\u0633\u0644\u0629 \u0648\u0627\u062D\u062F\u0629.",chartByColumn:"\u0631\u0633\u0645 \u0628\u064A\u0627\u0646\u064A \u062D\u0633\u0628 \u0647\u0630\u0627 \u0627\u0644\u0639\u0645\u0648\u062F",chartGroupBy:"\u062D\u0633\u0628",chartGroupNone:"\u0643\u0644 \u0642\u064A\u0645\u0629",chartGroupAuto:"\u062A\u0644\u0642\u0627\u0626\u064A",chartGroupDay:"\u064A\u0648\u0645",chartGroupWeek:"\u0623\u0633\u0628\u0648\u0639",chartGroupMonth:"\u0634\u0647\u0631",chartGroupQuarter:"\u0631\u0628\u0639",chartGroupYear:"\u0633\u0646\u0629",chartGroupBins:"{n} \u0641\u0626\u0629",chartBucketAdjusted:"\u0639\u062F\u062F \u0627\u0644\u0641\u0648\u0627\u0635\u0644 \u0623\u0643\u0628\u0631 \u0645\u0646 \u0623\u0646 \u064A\u062A\u0633\u0639 \u0644\u0645\u062D\u0648\u0631 \u0648\u0627\u062D\u062F \u2014 \u062A\u0645 \u0627\u0644\u062A\u062C\u0645\u064A\u0639 \u0628\u0634\u0643\u0644 \u0623\u0648\u0633\u0639.",chartWindowed:"\u064A\u062A\u0645 \u0639\u0631\u0636 {shown} \u0645\u0646 {total}.",chartShowAll:"\u0639\u0631\u0636 \u0627\u0644\u0643\u0644",chartCanvasHint:"\u0631\u0633\u0645 \u0628\u064A\u0627\u0646\u064A. \u0645\u0631\u0651\u0631 \u0644\u0644\u062A\u0643\u0628\u064A\u0631\u060C \u0627\u0633\u062D\u0628 \u0644\u0644\u062A\u062D\u0631\u064A\u0643\u060C \u0627\u0633\u062A\u062E\u062F\u0645 \u0627\u0644\u0623\u0633\u0647\u0645 \u0644\u0644\u062A\u0646\u0642\u0644\u060C \u06480 \u0644\u0639\u0631\u0636 \u0627\u0644\u0643\u0644.",chartCanvasHintPick:"\u0631\u0633\u0645 \u0628\u064A\u0627\u0646\u064A. \u062A\u062E\u062A\u0627\u0631 \u0627\u0644\u0623\u0633\u0647\u0645 \u0641\u0626\u0629\u060C \u0648\u064A\u0635\u0641\u0651\u064A Enter \u0623\u0648 \u0627\u0644\u0645\u0633\u0627\u0641\u0629 \u0627\u0644\u062C\u062F\u0648\u0644 \u0628\u0647\u0627 (Ctrl \u064A\u0636\u064A\u0641 \u0641\u0626\u0629)\u060C \u0648+ \u0648\u2212 \u0644\u0644\u062A\u0643\u0628\u064A\u0631\u060C \u06480 \u0644\u0639\u0631\u0636 \u0627\u0644\u0643\u0644.",chartCategoryFocus:"{category}: {values} \u2014 {position} \u0645\u0646 {count}",chartCategoryFiltered:"\u064A\u0635\u0641\u0651\u064A \u0627\u0644\u062C\u062F\u0648\u0644",chartAggSum:"\u0645\u062C\u0645\u0648\u0639",chartAggAvg:"\u0645\u062A\u0648\u0633\u0637",chartAggMin:"\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u062F\u0646\u0649",chartAggMax:"\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649",chartAggCount:"\u0627\u0644\u0639\u062F\u062F",chartAggDistinct:"\u0627\u0644\u0642\u064A\u0645 \u0627\u0644\u0641\u0631\u064A\u062F\u0629",chartAggFirst:"\u0627\u0644\u0623\u0648\u0644",chartAggLast:"\u0627\u0644\u0623\u062E\u064A\u0631",chartTypeColumn:"\u0623\u0639\u0645\u062F\u0629",chartTypeBar:"\u0623\u0634\u0631\u0637\u0629",chartTypeLine:"\u062E\u0637\u064A",chartTypeArea:"\u0645\u0633\u0627\u062D\u064A",chartTypePie:"\u062F\u0627\u0626\u0631\u064A",chartTypeDonut:"\u062D\u0644\u0642\u064A",chartStacking:"\u062A\u0631\u062A\u064A\u0628 \u0627\u0644\u0633\u0644\u0627\u0633\u0644",chartStackGrouped:"\u0645\u062C\u0645\u0651\u0639",chartStackStacked:"\u0645\u0643\u062F\u0651\u0633",chartStackNormalized:"\u0645\u0643\u062F\u0651\u0633 100%",chartFormat:"\u0627\u0644\u062A\u0646\u0633\u064A\u0642",chartFormatTitle:"\u0627\u0644\u0639\u0646\u0648\u0627\u0646",chartFormatCategoryAxis:"\u0639\u0646\u0648\u0627\u0646 \u0645\u062D\u0648\u0631 \u0627\u0644\u0641\u0626\u0627\u062A",chartFormatValueAxis:"\u0639\u0646\u0648\u0627\u0646 \u0645\u062D\u0648\u0631 \u0627\u0644\u0642\u064A\u0645",chartFormatLegend:"\u0648\u0633\u064A\u0644\u0629 \u0627\u0644\u0625\u064A\u0636\u0627\u062D",chartLegendTop:"\u0623\u0639\u0644\u0649",chartLegendBottom:"\u0623\u0633\u0641\u0644",chartLegendLeft:"\u064A\u0633\u0627\u0631",chartLegendRight:"\u064A\u0645\u064A\u0646",chartLegendNone:"\u0645\u062E\u0641\u064A\u0629",chartFormatDataLabels:"\u062A\u0633\u0645\u064A\u0627\u062A \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A",chartFormatScale:"\u0645\u0642\u064A\u0627\u0633 \u0627\u0644\u0642\u064A\u0645",chartScaleLinear:"\u062E\u0637\u064A",chartScaleLog:"\u0644\u0648\u063A\u0627\u0631\u064A\u062A\u0645\u064A",chartFormatTextSize:"\u062D\u062C\u0645 \u0627\u0644\u0646\u0635",chartFormatTextColor:"\u0644\u0648\u0646 \u0627\u0644\u0646\u0635",chartFormatDefault:"\u0627\u0641\u062A\u0631\u0627\u0636\u064A",chartFormatLabelAngle:"\u062A\u0633\u0645\u064A\u0627\u062A \u0627\u0644\u0641\u0626\u0627\u062A",chartAngleAuto:"\u062A\u0644\u0642\u0627\u0626\u064A",chartAngleFlat:"\u0623\u0641\u0642\u064A\u0629",chartFormatGridLines:"\u062E\u0637\u0648\u0637 \u0627\u0644\u0634\u0628\u0643\u0629",chartGridValue:"\u0645\u062D\u0648\u0631 \u0627\u0644\u0642\u064A\u0645",chartGridBoth:"\u0643\u0644\u0627 \u0627\u0644\u0645\u062D\u0648\u0631\u064A\u0646",chartGridNone:"\u0628\u0644\u0627",chartFormatGridDashed:"\u0634\u0628\u0643\u0629 \u0645\u062A\u0642\u0637\u0639\u0629",chartFormatLineWidth:"\u0633\u064F\u0645\u0643 \u0627\u0644\u062E\u0637",chartFormatLineDashed:"\u062E\u0637\u0648\u0637 \u0645\u062A\u0642\u0637\u0639\u0629",chartFormatFillOpacity:"\u0639\u062A\u0627\u0645\u0629 \u0627\u0644\u062A\u0639\u0628\u0626\u0629",chartFormatDateFormat:"\u062A\u0646\u0633\u064A\u0642 \u0627\u0644\u062A\u0627\u0631\u064A\u062E",chartFormatPalette:"\u0627\u0644\u0623\u0644\u0648\u0627\u0646",chartPaletteTheme:"\u0627\u0644\u0633\u0645\u0629",chartPaletteClassic:"\u0643\u0644\u0627\u0633\u064A\u0643\u064A\u0629",chartPaletteColorblind:"\u0645\u0646\u0627\u0633\u0628\u0629 \u0644\u0639\u0645\u0649 \u0627\u0644\u0623\u0644\u0648\u0627\u0646",chartPaletteVivid:"\u0632\u0627\u0647\u064A\u0629",chartPaletteMonochrome:"\u0644\u0648\u0646 \u0648\u0627\u062D\u062F",sparklineSummary:"{count} \u0642\u064A\u0645\u0629 \u0645\u0646 {min} \u0625\u0644\u0649 {max}\u060C \u0627\u0644\u0623\u062E\u064A\u0631\u0629 {last}",chartTypeWaterfall:"\u0634\u0644\u0627\u0644",chartTypeFunnel:"\u0642\u0645\u0639",chartTypeTreemap:"\u062E\u0631\u064A\u0637\u0629 \u0634\u062C\u0631\u064A\u0629",chartTypeHeatmap:"\u062E\u0631\u064A\u0637\u0629 \u062D\u0631\u0627\u0631\u064A\u0629",chartTypeBox:"\u0645\u062E\u0637\u0637 \u0627\u0644\u0635\u0646\u062F\u0648\u0642",chartTypeRadar:"\u0631\u0627\u062F\u0627\u0631",chartTypeRangeBar:"\u0646\u0637\u0627\u0642",chartBoxQ1:"\u0627\u0644\u0631\u0628\u064A\u0639 \u0627\u0644\u0623\u0648\u0644",chartBoxMedian:"\u0627\u0644\u0648\u0633\u064A\u0637",chartBoxQ3:"\u0627\u0644\u0631\u0628\u064A\u0639 \u0627\u0644\u062B\u0627\u0644\u062B",chartBoxOutlier:"\u0642\u064A\u0645\u0629 \u0634\u0627\u0630\u0629",chartTotal:"\u0627\u0644\u0625\u062C\u0645\u0627\u0644\u064A",chartTypeScatter:"\u0645\u0628\u0639\u062B\u0631",chartTypeBubble:"\u0641\u0642\u0627\u0639\u064A",chartXAxis:"\u0627\u0644\u0645\u062D\u0648\u0631 X",chartBubbleSize:"\u0627\u0644\u062D\u062C\u0645",chartXYSampled:"{shown} \u0645\u0646 {total} \u0646\u0642\u0637\u0629\u060C \u0628\u0639\u064A\u0646\u0629 \u0645\u0646\u062A\u0638\u0645\u0629",licenseMissing:"\u063A\u064A\u0631 \u0645\u0631\u062E\u0651\u0635",licenseExpired:"\u0627\u0646\u062A\u0647\u062A \u0635\u0644\u0627\u062D\u064A\u0629 \u0627\u0644\u062A\u0631\u062E\u064A\u0635",licenseReleaseNotCovered:"\u0647\u0630\u0627 \u0627\u0644\u0625\u0635\u062F\u0627\u0631 \u063A\u064A\u0631 \u0645\u0634\u0645\u0648\u0644 \u0628\u0627\u0644\u062A\u0631\u062E\u064A\u0635",licenseDomainMismatch:"\u0627\u0644\u062A\u0631\u062E\u064A\u0635 \u063A\u064A\u0631 \u0635\u0627\u0644\u062D \u0644\u0647\u0630\u0627 \u0627\u0644\u0646\u0637\u0627\u0642",licenseRevoked:"\u062A\u0645 \u0625\u0644\u063A\u0627\u0621 \u0627\u0644\u062A\u0631\u062E\u064A\u0635",licenseInvalidFormat:"\u0635\u064A\u063A\u0629 \u0645\u0641\u062A\u0627\u062D \u0627\u0644\u062A\u0631\u062E\u064A\u0635 \u063A\u064A\u0631 \u0635\u062D\u064A\u062D\u0629",licenseInvalidSignature:"\u062A\u0648\u0642\u064A\u0639 \u0627\u0644\u062A\u0631\u062E\u064A\u0635 \u063A\u064A\u0631 \u0635\u0627\u0644\u062D",licenseEngineUnavailable:"\u0644\u0627 \u064A\u0633\u062A\u0637\u064A\u0639 \u0627\u0644\u0645\u062A\u0635\u0641\u062D \u0627\u0644\u062A\u062D\u0642\u0642 \u0645\u0646 \u0627\u0644\u062A\u0631\u062E\u064A\u0635 (\u064A\u0644\u0632\u0645 HTTPS)",calcAdd:"\u0625\u0636\u0627\u0641\u0629 \u0639\u0645\u0648\u062F \u0645\u062D\u0633\u0648\u0628\u2026",calcEdit:"\u062A\u0639\u062F\u064A\u0644 \u0627\u0644\u0639\u0645\u0648\u062F \u0627\u0644\u0645\u062D\u0633\u0648\u0628\u2026",calcRemove:"\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0639\u0645\u0648\u062F \u0627\u0644\u0645\u062D\u0633\u0648\u0628",calcTitleAdd:"\u0625\u0636\u0627\u0641\u0629 \u0639\u0645\u0648\u062F \u0645\u062D\u0633\u0648\u0628",calcTitleEdit:"\u062A\u0639\u062F\u064A\u0644 \u0627\u0644\u0639\u0645\u0648\u062F \u0627\u0644\u0645\u062D\u0633\u0648\u0628",calcName:"\u0627\u0644\u0627\u0633\u0645",calcFormula:"\u0627\u0644\u0635\u064A\u063A\u0629",calcFormulaHint:"\u0627\u0643\u062A\u0628 \u0627\u0644\u0639\u0645\u0648\u062F \u0647\u0643\u0630\u0627 [\u0627\u0644\u0627\u0633\u0645]. \u0645\u062B\u0627\u0644: [\u0627\u0644\u0633\u0639\u0631] * [\u0627\u0644\u0643\u0645\u064A\u0629]",calcColumns:"\u0627\u0644\u0623\u0639\u0645\u062F\u0629",calcFunctions:"\u0627\u0644\u062F\u0648\u0627\u0644",calcPreview:"\u0645\u0639\u0627\u064A\u0646\u0629",calcPreviewEmpty:"\u0644\u0627 \u062A\u0648\u062C\u062F \u0635\u0641\u0648\u0641 \u0644\u0644\u0645\u0639\u0627\u064A\u0646\u0629",calcErrorAt:"{message} (\u0627\u0644\u062D\u0631\u0641 {position})",calcAddButton:"\u0625\u0636\u0627\u0641\u0629",calcArgsAtLeast:"{min} \u0623\u0648 \u0623\u0643\u062B\u0631",formulaError_empty:"\u0627\u0643\u062A\u0628 \u0635\u064A\u063A\u0629",formulaError_unclosedText:'\u0627\u0644\u0646\u0635 \u063A\u064A\u0631 \u0645\u063A\u0644\u0642: \u064A\u0646\u0642\u0635 "',formulaError_unclosedColumn:"\u0627\u0633\u0645 \u0627\u0644\u0639\u0645\u0648\u062F \u063A\u064A\u0631 \u0645\u063A\u0644\u0642: \u064A\u0646\u0642\u0635 ]",formulaError_emptyColumn:"\u0627\u0633\u0645 \u0639\u0645\u0648\u062F \u0641\u0627\u0631\u063A []",formulaError_unexpectedChar:"\u062D\u0631\u0641 \u063A\u064A\u0631 \u0645\u062A\u0648\u0642\u0639 {text}",formulaError_expected:"\u064A\u0646\u0642\u0635 {text}",formulaError_cellAfterColon:'\u062A\u0646\u0642\u0635 \u062E\u0644\u064A\u0629 \u0628\u0639\u062F ":"',formulaError_unknownName:"\u0627\u0633\u0645 \u063A\u064A\u0631 \u0645\u0639\u0631\u0648\u0641 {name} \u2014 \u0627\u0643\u062A\u0628 \u0627\u0644\u0639\u0645\u0648\u062F \u0647\u0643\u0630\u0627 [{name}]",formulaError_unexpected:"{text} \u063A\u064A\u0631 \u0645\u062A\u0648\u0642\u0639",formulaError_endsEarly:"\u062A\u0646\u062A\u0647\u064A \u0627\u0644\u0635\u064A\u063A\u0629 \u0645\u0628\u0643\u0631\u064B\u0627",formulaError_trailing:"\u0646\u0635 \u063A\u064A\u0631 \u0645\u062A\u0648\u0642\u0639 \u0641\u064A \u0627\u0644\u0646\u0647\u0627\u064A\u0629",formulaError_unknownColumn:"\u0644\u0627 \u064A\u0648\u062C\u062F \u0639\u0645\u0648\u062F [{name}]",formulaError_unknownFunction:"\u062F\u0627\u0644\u0629 \u063A\u064A\u0631 \u0645\u0639\u0631\u0648\u0641\u0629 {name}",formulaError_argCount:"\u062A\u0623\u062E\u0630 {name} \u0639\u062F\u062F {range} \u0645\u0646 \u0627\u0644\u0648\u0633\u0627\u0626\u0637",formulaError_cellsNotAllowed:"\u0644\u0627 \u062A\u064F\u0633\u062A\u062E\u062F\u0645 \u0645\u0631\u0627\u062C\u0639 \u0627\u0644\u062E\u0644\u0627\u064A\u0627 \u0645\u062B\u0644 A1 \u0647\u0646\u0627 \u2014 \u0627\u0643\u062A\u0628 \u0627\u0644\u0639\u0645\u0648\u062F \u0647\u0643\u0630\u0627 [\u0627\u0644\u0627\u0633\u0645]"},rm={ok:"\u786E\u5B9A",cancel:"\u53D6\u6D88",apply:"\u5E94\u7528",close:"\u5173\u95ED",clear:"\u6E05\u9664",save:"\u4FDD\u5B58",search:"\u641C\u7D22...",selectAll:"\u5168\u9009",showAll:"\u663E\u793A\u5168\u90E8",remove:"\u79FB\u9664",none:"\u65E0",toolbarSearch:"\u641C\u7D22...",exportMenu:"\u5BFC\u51FA",exportCsv:"\u5BFC\u51FA\u4E3A CSV",exportExcel:"\u5C06\u5168\u90E8\u6570\u636E\u5BFC\u51FA\u5230 Excel",exportExcelSelected:"\u5C06\u9009\u4E2D\u884C\u5BFC\u51FA\u5230 Excel",exportPdf:"\u5BFC\u51FA\u4E3A PDF",exporting:"\u6B63\u5728\u5BFC\u51FA\u2026",columns:"\u5217",hiddenColumns:"\u9690\u85CF\u7684\u5217",noHiddenColumns:"\u6CA1\u6709\u9690\u85CF\u7684\u5217\u3002",sortAsc:"\u6309 A \u5230 Z \u6392\u5E8F",sortDesc:"\u6309 Z \u5230 A \u6392\u5E8F",clearSort:"\u6E05\u9664\u6392\u5E8F",cardSortBy:"\u6392\u5E8F\u65B9\u5F0F",groupByColumn:"\u6309\u6B64\u5217\u5206\u7EC4",ungroupColumn:"\u4ECE\u5206\u7EC4\u4E2D\u79FB\u9664",showGroupPanel:"\u663E\u793A\u5206\u7EC4\u9762\u677F",hideGroupPanel:"\u9690\u85CF\u5206\u7EC4\u9762\u677F",showFooter:"\u663E\u793A\u6C47\u603B\u680F",hideFooter:"\u9690\u85CF\u6C47\u603B\u680F",showGroupFooters:"\u663E\u793A\u5206\u7EC4\u6C47\u603B",hideGroupFooters:"\u9690\u85CF\u5206\u7EC4\u6C47\u603B",hideColumn:"\u9690\u85CF\u6B64\u5217",fieldChooser:"\u5B57\u6BB5\u9009\u62E9\u5668\u2026",bestFit:"\u6700\u4F73\u5217\u5BBD",bestFitAll:"\u6700\u4F73\u5217\u5BBD\uFF08\u6240\u6709\u5217\uFF09",pinRowTop:"\u5C06\u884C\u56FA\u5B9A\u5230\u9876\u90E8",pinRowBottom:"\u5C06\u884C\u56FA\u5B9A\u5230\u5E95\u90E8",unpinRow:"\u53D6\u6D88\u56FA\u5B9A\u884C",findLabel:"\u5728\u8868\u683C\u4E2D\u67E5\u627E",findPrevious:"\u4E0A\u4E00\u4E2A\u5339\u914D\u9879",findNext:"\u4E0B\u4E00\u4E2A\u5339\u914D\u9879",findClose:"\u5173\u95ED\u67E5\u627E",findCount:"\u7B2C {n} \u4E2A\uFF0C\u5171 {count} \u4E2A",findNone:"\u65E0\u5339\u914D\u9879",renameColumn:"\u91CD\u547D\u540D\u5217",fixedPosition:"\u8BBE\u7F6E\u56FA\u5B9A\u4F4D\u7F6E",pinLeft:"\u5DE6\u4FA7",pinRight:"\u53F3\u4FA7",pinSticky:"\u5438\u9644",unpin:"\u53D6\u6D88\u56FA\u5B9A",moveLeft:"\u5DE6\u79FB",moveRight:"\u53F3\u79FB",filterPlaceholder:"\u7B5B\u9009\u2026",filterColumnAria:"\u7B5B\u9009{column}",filterOperatorDefault:"\u9ED8\u8BA4",filterOperatorAria:"{column}\u7684\u7B5B\u9009\u8FD0\u7B97\u7B26",filterSelectAll:"\u5168\u9009",filterBlank:"(\u7A7A\u767D)",filterNonBlank:"(\u975E\u7A7A\u767D)",filterEmptyText:"(\u7A7A\u6587\u672C)",filterSpace:"(1 \u4E2A\u7A7A\u683C)",filterSpaces:"({n} \u4E2A\u7A7A\u683C)",filterNoMatch:"\u6CA1\u6709\u5339\u914D\u7684\u503C",filterLoading:"\u6B63\u5728\u52A0\u8F7D\u503C\u2026",filterTruncated:"\u4EC5\u663E\u793A\u524D\u82E5\u5E72\u4E2A\u503C\u2014\u2014\u8BF7\u641C\u7D22\u4EE5\u67E5\u627E\u5176\u4F59\u7684\u503C\u3002",filterRemove:"\u79FB\u9664\u7B5B\u9009",filterToggle:"\u5E94\u7528\u7B5B\u9009",filterEditBuilder:"\u7F16\u8F91\u7B5B\u9009",filterNone:"\u65E0\u7B5B\u9009",filterActive:"\u7B5B\u9009\u5DF2\u542F\u7528",opEquals:"\u7B49\u4E8E",opNotEquals:"\u4E0D\u7B49\u4E8E",opGreater:">",opGreaterOrEqual:"\u2265",opLess:"<",opLessOrEqual:"\u2264",opContains:"\u5305\u542B",opNotContains:"\u4E0D\u5305\u542B",opStartsWith:"\u5F00\u5934\u4E3A",opEndsWith:"\u7ED3\u5C3E\u4E3A",opIsBlank:"\u4E3A\u7A7A",opIsNotBlank:"\u4E0D\u4E3A\u7A7A",opIsOneOf:"\u5C5E\u4E8E",opIsBetween:"\u4ECB\u4E8E",opValuesCount:"{n} \u4E2A\u503C",opInPeriod:"\u5728\u671F\u95F4",periodToday:"\u4ECA\u5929",periodYesterday:"\u6628\u5929",periodTomorrow:"\u660E\u5929",periodThisWeek:"\u672C\u5468",periodLastWeek:"\u4E0A\u5468",periodNextWeek:"\u4E0B\u5468",periodThisMonth:"\u672C\u6708",periodLastMonth:"\u4E0A\u6708",periodNextMonth:"\u4E0B\u6708",periodThisQuarter:"\u672C\u5B63\u5EA6",periodLastQuarter:"\u4E0A\u5B63\u5EA6",periodNextQuarter:"\u4E0B\u5B63\u5EA6",periodThisYear:"\u4ECA\u5E74",periodLastYear:"\u53BB\u5E74",periodNextYear:"\u660E\u5E74",periodYearToDate:"\u5E74\u521D\u81F3\u4ECA",periodLastDays:"\u6700\u8FD1 {n} \u5929",periodNextDays:"\u672A\u6765 {n} \u5929",filterAnd:"\u4E0E",filterOr:"\u6216",builderTitle:"\u7B5B\u9009\u751F\u6210\u5668",builderCombine:"\u6761\u4EF6\u7684\u7EC4\u5408\u65B9\u5F0F",builderAddCondition:"\u6DFB\u52A0\u6761\u4EF6",builderAddGroup:"\u6DFB\u52A0\u5206\u7EC4",builderRemoveGroup:"\u79FB\u9664\u5206\u7EC4",builderRemoveCondition:"\u79FB\u9664\u6761\u4EF6",builderEmpty:"\u5C1A\u65E0\u6761\u4EF6\u3002",builderColumn:"\u5217",builderOperator:"\u8FD0\u7B97\u7B26",builderValue:"\u503C",builderValueFrom:"\u4ECE",builderValueTo:"\u5230",builderValuePlaceholder:"\u8BF7\u8F93\u5165\u503C",builderOpen:"\u7B5B\u9009\u751F\u6210\u5668\u2026",builderClearAll:"\u5168\u90E8\u6E05\u9664",builderConditionButton:"+ \u6761\u4EF6",builderGroupButton:"+ \u5206\u7EC4",builderTrue:"\u771F",builderFalse:"\u5047",builderPeriod:"\u671F\u95F4",builderDays:"\u5929\u6570",filterCustom:"(\u81EA\u5B9A\u4E49\u2026)",filterPopupAria:"{column} \u7B5B\u9009",importOpen:"\u5BFC\u5165\u2026",groupPanelHint:"\u5C06\u5217\u62D6\u5230\u6B64\u5904\u5373\u53EF\u6309\u5176\u5206\u7EC4",groupAddLevel:"\u6DFB\u52A0\u5206\u7EC4\u5C42\u7EA7",groupAddLevelButton:"+ \u6DFB\u52A0\u5C42\u7EA7\u2026",groupNoGrouping:"\uFF08\u65E0\u5206\u7EC4\uFF09",groupLevelAria:"\u7B2C {n} \u7EA7\u5206\u7EC4",groupRemoveAria:"\u79FB\u9664{column}",groupExpandAll:"\u5168\u90E8\u5C55\u5F00",groupCollapseAll:"\u5168\u90E8\u6298\u53E0",pagerFirst:"\u9996\u9875",pagerPrevious:"\u4E0A\u4E00\u9875",pagerNext:"\u4E0B\u4E00\u9875",pagerLast:"\u672B\u9875",pagerPage:"\u7B2C",pagerOf:"/",pagerRowsPerPage:"\u6BCF\u9875\u884C\u6570",pagerAria:"\u5206\u9875",pagerPageButton:"\u7B2C {n} \u9875",selectAllRows:"\u9009\u62E9\u6240\u6709\u884C",selectRowAria:"\u9009\u62E9\u7B2C {row} \u884C",selectGroupAria:"\u9009\u62E9 {group} \u4E2D\u7684 {count} \u884C",summaryAria:"\u6C47\u603B",columnTotalsAria:"\u5217\u5408\u8BA1",rowActions:"\u884C\u64CD\u4F5C",detailsAria:"\u8BE6\u60C5",rowNumberAria:"\u884C\u53F7",noteEditorAria:"\u5355\u5143\u683C\u6279\u6CE8",notePlaceholder:"\u4E3A\u6B64\u5355\u5143\u683C\u5199\u6279\u6CE8\u2026",addNote:"\u6DFB\u52A0\u6279\u6CE8\u2026",editNote:"\u7F16\u8F91\u6279\u6CE8\u2026",deleteNote:"\u5220\u9664\u6279\u6CE8",expandDetails:"\u5C55\u5F00\u8BE6\u60C5",collapseDetails:"\u6298\u53E0\u8BE6\u60C5",expandTreeRow:"\u5C55\u5F00\u884C",collapseTreeRow:"\u6298\u53E0\u884C",expandColumnGroup:"\u5C55\u5F00\u5217\u7EC4",collapseColumnGroup:"\u6298\u53E0\u5217\u7EC4",dragToReorder:"\u62D6\u52A8\u4EE5\u91CD\u65B0\u6392\u5E8F",menuCopy:"\u590D\u5236",menuCopyWithHeaders:"\u590D\u5236\uFF08\u542B\u8868\u5934\uFF09",menuCopyWithGroupHeaders:"\u590D\u5236\uFF08\u542B\u5206\u7EC4\u8868\u5934\uFF09",menuCut:"\u526A\u5207",menuPaste:"\u7C98\u8D34",menuExport:"\u5BFC\u51FA",menuChartRange:"\u5C06\u6240\u9009\u5355\u5143\u683C\u751F\u6210\u56FE\u8868",statsSum:"\u6C42\u548C",statsCount:"\u8BA1\u6570",statsAvg:"\u5E73\u5747\u503C",statsMin:"\u6700\u5C0F\u503C",statsMax:"\u6700\u5927\u503C",statsCells:"\u5355\u5143\u683C",statsTooLarge:"\u6240\u9009\u533A\u57DF\u8FC7\u5927\uFF0C\u65E0\u6CD5\u6C47\u603B",statusRows:"\u884C\u6570",statusFiltered:"\u7B5B\u9009\u540E",statusSelected:"\u5DF2\u9009\u62E9",summaryRows:"\u884C",announceRows:"{n} \u884C",announceSortedBy:"\u6309 {columns} \u6392\u5E8F",announceSelected:"\u5DF2\u9009\u62E9 {n} \u9879",announceAscending:"\u5347\u5E8F",announceDescending:"\u964D\u5E8F",sideFilters:"\u7B5B\u9009\u5668",sideBarAria:"\u5DE5\u5177\u9762\u677F",sideClearFilters:"\u6E05\u9664\u6240\u6709\u7B5B\u9009",summarySum:"\u6C42\u548C",summaryAvg:"\u5E73\u5747\u503C",summaryMin:"\u6700\u5C0F\u503C",summaryMax:"\u6700\u5927\u503C",summaryCount:"\u8BA1\u6570",summaryDistinct:"\u53BB\u91CD\u8BA1\u6570",summaryCustom:"\u81EA\u5B9A\u4E49",noTotal:"\u65E0\u5408\u8BA1",busy:"\u5904\u7406\u4E2D\u2026",busyLoading:"\u6B63\u5728\u52A0\u8F7D\u884C\u2026",rowsLoadFailed:"\u65E0\u6CD5\u52A0\u8F7D\u8FD9\u4E9B\u884C\u3002",retryLoad:"\u91CD\u8BD5",busyEncoding:"\u6B63\u5728\u51C6\u5907\u6570\u636E\u2026",busyFiltering:"\u6B63\u5728\u7B5B\u9009\u884C\u2026",busySorting:"\u6B63\u5728\u6392\u5E8F\u884C\u2026",busyComputing:"\u6B63\u5728\u7B5B\u9009\u548C\u6392\u5E8F\u2026",busyGrouping:"\u6B63\u5728\u6784\u5EFA\u5206\u7EC4\u2026",busyAggregating:"\u6B63\u5728\u8BA1\u7B97\u5408\u8BA1\u2026",busyProjecting:"\u6B63\u5728\u66F4\u65B0\u89C6\u56FE\u2026",busyExporting:"\u6B63\u5728\u751F\u6210\u6587\u4EF6\u2026",noData:"\u672A\u627E\u5230\u6570\u636E",editNewRow:"\u65B0\u5EFA\u884C",editSaveChanges:"\u4FDD\u5B58\u66F4\u6539",editDiscardChanges:"\u653E\u5F03\u66F4\u6539",editRow:"\u7F16\u8F91\u884C",editRowMenu:"\u7F16\u8F91\u884C\u2026",editDeleteRow:"\u5220\u9664\u884C",editUndoDelete:"\u64A4\u9500\u5220\u9664",editActions:"\u64CD\u4F5C",editSaveRow:"\u4FDD\u5B58\u6B64\u884C",editSaving:"\u6B63\u5728\u4FDD\u5B58\u2026",editEditingRow:"\u6B63\u5728\u7F16\u8F91\u7B2C {row} \u884C",editSaveCount:"\u4FDD\u5B58 {n} \u884C",editCannotSave:"\u65E0\u6CD5\u4FDD\u5B58",editSaveFailed:"\u672A\u80FD\u4FDD\u5B58\u66F4\u6539\u3002",rowStatusChanged:"\u672A\u4FDD\u5B58\u7684\u66F4\u6539",rowStatusSaving:"\u6B63\u5728\u4FDD\u5B58\u2026",rowStatusSaved:"\u5DF2\u4FDD\u5B58",rowStatusError:"\u4FDD\u5B58\u5931\u8D25",rowStatusRetry:"\u91CD\u8BD5",rowStatusDelete:"\u5220\u9664\u884C",editDeleteConfirm:"\u8981\u5220\u9664\u6B64\u884C\u5417\uFF1F",editAddRowUndo:"\u6DFB\u52A0\u884C",editDeleteRowUndo:"\u5220\u9664\u884C",editCellUndo:"\u7F16\u8F91 {column}",editFillUndo:"\u586B\u5145 {count} \u4E2A\u5355\u5143\u683C",editPasteUndo:"\u7C98\u8D34 {count} \u4E2A\u5355\u5143\u683C",editCutUndo:"\u526A\u5207 {count} \u4E2A\u5355\u5143\u683C",editGroupTotal:"\u5206\u7EC4\u5408\u8BA1",editGroupTotalUndo:"\u66F4\u6539 {column} \u5408\u8BA1\uFF08{count} \u884C\uFF09",editNoMatch:"\u65E0\u5339\u914D\u9879",formEditTitle:"\u7F16\u8F91\u884C",formAddTitle:"\u65B0\u5EFA\u884C",formShortcut:"{key}+Enter \u4FDD\u5B58 \xB7 Esc \u53D6\u6D88",validationRequired:"\u6B64\u5B57\u6BB5\u4E3A\u5FC5\u586B\u9879",validationNumber:"\u5FC5\u987B\u4E3A\u6570\u5B57",validationFormat:"\u683C\u5F0F\u65E0\u6548",validationEmail:"\u7535\u5B50\u90AE\u4EF6\u5730\u5740\u65E0\u6548",validationInvalid:"\u503C\u65E0\u6548",dateCalendar:"\u65E5\u5386",dateOpenCalendar:"\u6253\u5F00\u65E5\u5386",datePreviousMonth:"\u4E0A\u4E2A\u6708",dateNextMonth:"\u4E0B\u4E2A\u6708",monthJanuary:"\u4E00\u6708",monthFebruary:"\u4E8C\u6708",monthMarch:"\u4E09\u6708",monthApril:"\u56DB\u6708",monthMay:"\u4E94\u6708",monthJune:"\u516D\u6708",monthJuly:"\u4E03\u6708",monthAugust:"\u516B\u6708",monthSeptember:"\u4E5D\u6708",monthOctober:"\u5341\u6708",monthNovember:"\u5341\u4E00\u6708",monthDecember:"\u5341\u4E8C\u6708",weekStartsOn:"1",weekdaySu:"\u65E5",weekdayMo:"\u4E00",weekdayTu:"\u4E8C",weekdayWe:"\u4E09",weekdayTh:"\u56DB",weekdayFr:"\u4E94",weekdaySa:"\u516D",importTitle:"\u5BFC\u5165\u6570\u636E",importStepSource:"1. \u6570\u636E\u6E90",importStepMap:"2. \u6620\u5C04\u5217",importFile:"CSV \u6587\u4EF6",importPaste:"\u2026\u6216\u7C98\u8D34\u884C",importSeparator:"\u5206\u9694\u7B26",importSeparatorAuto:"\u81EA\u52A8\u68C0\u6D4B",importSeparatorComma:"\u9017\u53F7 ,",importSeparatorSemicolon:"\u5206\u53F7 ;",importSeparatorTab:"\u5236\u8868\u7B26",importSeparatorPipe:"\u7AD6\u7EBF |",importFileColumn:"\u6587\u4EF6\u5217",importDetected:"\u68C0\u6D4B\u7ED3\u679C",importGridColumn:"\u8868\u683C\u5217",importSample:"\u793A\u4F8B",importSkip:"\u2014 \u8DF3\u8FC7 \u2014",importPreview:"\u9884\u89C8",importNoSource:"\u8BF7\u5148\u9009\u62E9\u6587\u4EF6\u6216\u7C98\u8D34\u4E00\u4E9B\u884C\u3002",importNoRows:"\u672A\u627E\u5230\u6570\u636E\u884C\u3002",importAction:"\u5BFC\u5165",exportAborted:"\u5BFC\u51FA\u5DF2\u4E2D\u6B62",exportSheetName:"\u6570\u636E",chart:"\u56FE\u8868",chartCategory:"\u7C7B\u522B",chartSeries:"\u7CFB\u5217",chartAddSeries:"\u6DFB\u52A0\u7CFB\u5217",chartRemoveSeries:"\u79FB\u9664",chartSource:"\u6570\u636E",chartSourceView:"\u7B5B\u9009\u540E\u7684\u884C",chartSourceSelection:"\u9009\u4E2D\u7684\u884C",chartSourceAll:"\u5168\u90E8\u884C",chartSourceRange:"\u6240\u9009\u8303\u56F4\uFF08\u7B2C {from}\u2013{to} \u884C\uFF09",chartClose:"\u5173\u95ED\u56FE\u8868",chartFullscreen:"\u5168\u5C4F",chartExitFullscreen:"\u9000\u51FA\u5168\u5C4F",chartFloat:"\u5F39\u51FA",chartDock:"\u505C\u9760",chartNewWindow:"\u65B0\u7A97\u53E3",chartMoveWindow:"\u79FB\u52A8\u56FE\u8868\u7A97\u53E3",chartResizeWindow:"\u8C03\u6574\u56FE\u8868\u7A97\u53E3\u5927\u5C0F",chartResizeDock:"\u62D6\u52A8\u4EE5\u66F4\u6539\u56FE\u8868\u9AD8\u5EA6",chartSwitch:"\u4EA4\u6362\u7C7B\u522B\u548C\u7CFB\u5217",chartUnlink:"\u53D6\u6D88\u5173\u8054",chartLink:"\u5173\u8054",chartUnlinked:"\u5DF2\u53D6\u6D88\u5173\u8054\uFF1A\u56FE\u8868\u4FDD\u7559\u5176\u6570\u636E\uFF0C\u4E0D\u518D\u968F\u8868\u683C\u53D8\u5316\u3002",chartExportPng:"PNG",chartExportSvg:"SVG",chartExportFailed:"\u56FE\u8868\u5BFC\u51FA\u5931\u8D25\u3002",chartCrossFiltered:"\u8868\u683C\u5DF2\u7B5B\u9009\u4E3A {value}\u3002",chartBlankCategory:"(\u7A7A\u767D)",chartTruncated:"\u663E\u793A\u524D {n} \u4E2A\u7C7B\u522B\uFF1B\u5176\u4F59\u5F52\u5165\u201C\u5176\u4ED6\u201D\u3002",chartOther:"\u5176\u4ED6",chartEmpty:"\u6682\u65E0\u53EF\u7ED8\u5236\u7684\u5185\u5BB9\u3002",chartNoVisibleSeries:"\u6CA1\u6709\u53EF\u89C1\u7684\u7CFB\u5217\u3002",chartNeedsMoreSeries:"\u6B64\u56FE\u8868\u7C7B\u578B\u81F3\u5C11\u9700\u8981\u4E24\u4E2A\u6570\u503C\u5217\uFF08\u4F8B\u5982\u6700\u4F4E\u503C\u548C\u6700\u9AD8\u503C\uFF09\uFF0C\u8BF7\u6DFB\u52A0\u7B2C\u4E8C\u4E2A\u7CFB\u5217\u3002",chartLoading:"\u52A0\u8F7D\u4E2D\u2026",chartNeedsRecharts:"\u56FE\u8868\u9700\u8981\u53EF\u9009\u4F9D\u8D56 `recharts`\u3002\u8BF7\u5B89\u88C5\u540E\u518D\u7ED8\u5236\u3002",chartOnlyOneSeries:"\u6B64\u56FE\u8868\u7C7B\u578B\u4EC5\u663E\u793A\u4E00\u4E2A\u7CFB\u5217\u3002",chartByColumn:"\u6309\u6B64\u5217\u7ED8\u5236\u56FE\u8868",chartGroupBy:"\u6309",chartGroupNone:"\u6BCF\u4E2A\u503C",chartGroupAuto:"\u81EA\u52A8",chartGroupDay:"\u65E5",chartGroupWeek:"\u5468",chartGroupMonth:"\u6708",chartGroupQuarter:"\u5B63\u5EA6",chartGroupYear:"\u5E74",chartGroupBins:"{n} \u4E2A\u533A\u95F4",chartBucketAdjusted:"\u5355\u4E2A\u5750\u6807\u8F74\u4E0A\u7684\u533A\u95F4\u8FC7\u591A\u2014\u2014\u5DF2\u6309\u66F4\u7C97\u7684\u7C92\u5EA6\u5206\u7EC4\u3002",chartWindowed:"\u6B63\u5728\u663E\u793A {total} \u4E2A\u4E2D\u7684 {shown} \u4E2A\u3002",chartShowAll:"\u663E\u793A\u5168\u90E8",chartCanvasHint:"\u56FE\u8868\u3002\u6EDA\u52A8\u7F29\u653E\uFF0C\u62D6\u52A8\u5E73\u79FB\uFF0C\u65B9\u5411\u952E\u79FB\u52A8\uFF0C\u6309 0 \u663E\u793A\u5168\u90E8\u3002",chartCanvasHintPick:"\u56FE\u8868\u3002\u65B9\u5411\u952E\u9009\u62E9\u7C7B\u522B\uFF0CEnter \u6216\u7A7A\u683C\u6309\u8BE5\u7C7B\u522B\u7B5B\u9009\u8868\u683C\uFF08Ctrl \u8FFD\u52A0\uFF09\uFF0C+ \u548C \u2212 \u7F29\u653E\uFF0C0 \u663E\u793A\u5168\u90E8\u3002",chartCategoryFocus:"{category}\uFF1A{values} \u2014 \u7B2C {position} \u4E2A\uFF0C\u5171 {count} \u4E2A",chartCategoryFiltered:"\u6B63\u5728\u7B5B\u9009\u8868\u683C",chartAggSum:"\u6C42\u548C",chartAggAvg:"\u5E73\u5747\u503C",chartAggMin:"\u6700\u5C0F\u503C",chartAggMax:"\u6700\u5927\u503C",chartAggCount:"\u8BA1\u6570",chartAggDistinct:"\u53BB\u91CD\u8BA1\u6570",chartAggFirst:"\u7B2C\u4E00\u4E2A",chartAggLast:"\u6700\u540E\u4E00\u4E2A",chartTypeColumn:"\u67F1\u5F62\u56FE",chartTypeBar:"\u6761\u5F62\u56FE",chartTypeLine:"\u6298\u7EBF\u56FE",chartTypeArea:"\u9762\u79EF\u56FE",chartTypePie:"\u997C\u56FE",chartTypeDonut:"\u73AF\u5F62\u56FE",chartStacking:"\u7CFB\u5217\u5E03\u5C40",chartStackGrouped:"\u7C07\u72B6",chartStackStacked:"\u5806\u79EF",chartStackNormalized:"\u767E\u5206\u6BD4\u5806\u79EF",chartFormat:"\u683C\u5F0F",chartFormatTitle:"\u6807\u9898",chartFormatCategoryAxis:"\u5206\u7C7B\u8F74\u6807\u9898",chartFormatValueAxis:"\u6570\u503C\u8F74\u6807\u9898",chartFormatLegend:"\u56FE\u4F8B",chartLegendTop:"\u9876\u90E8",chartLegendBottom:"\u5E95\u90E8",chartLegendLeft:"\u5DE6\u4FA7",chartLegendRight:"\u53F3\u4FA7",chartLegendNone:"\u9690\u85CF",chartFormatDataLabels:"\u6570\u636E\u6807\u7B7E",chartFormatScale:"\u6570\u503C\u523B\u5EA6",chartScaleLinear:"\u7EBF\u6027",chartScaleLog:"\u5BF9\u6570",chartFormatTextSize:"\u6587\u5B57\u5927\u5C0F",chartFormatTextColor:"\u6587\u5B57\u989C\u8272",chartFormatDefault:"\u9ED8\u8BA4",chartFormatLabelAngle:"\u7C7B\u522B\u6807\u7B7E",chartAngleAuto:"\u81EA\u52A8",chartAngleFlat:"\u6C34\u5E73",chartFormatGridLines:"\u7F51\u683C\u7EBF",chartGridValue:"\u6570\u503C\u8F74",chartGridBoth:"\u4E24\u4E2A\u8F74",chartGridNone:"\u65E0",chartFormatGridDashed:"\u865A\u7EBF\u7F51\u683C",chartFormatLineWidth:"\u7EBF\u5BBD",chartFormatLineDashed:"\u865A\u7EBF",chartFormatFillOpacity:"\u586B\u5145\u4E0D\u900F\u660E\u5EA6",chartFormatDateFormat:"\u65E5\u671F\u683C\u5F0F",chartFormatPalette:"\u989C\u8272",chartPaletteTheme:"\u4E3B\u9898",chartPaletteClassic:"\u7ECF\u5178",chartPaletteColorblind:"\u8272\u76F2\u53CB\u597D",chartPaletteVivid:"\u9C9C\u8273",chartPaletteMonochrome:"\u5355\u8272",sparklineSummary:"{count} \u4E2A\u503C\uFF0C\u4ECE {min} \u5230 {max}\uFF0C\u6700\u540E\u4E3A {last}",chartTypeWaterfall:"\u7011\u5E03\u56FE",chartTypeFunnel:"\u6F0F\u6597\u56FE",chartTypeTreemap:"\u77E9\u5F62\u6811\u56FE",chartTypeHeatmap:"\u70ED\u529B\u56FE",chartTypeBox:"\u7BB1\u7EBF\u56FE",chartTypeRadar:"\u96F7\u8FBE\u56FE",chartTypeRangeBar:"\u8303\u56F4\u56FE",chartBoxQ1:"Q1",chartBoxMedian:"\u4E2D\u4F4D\u6570",chartBoxQ3:"Q3",chartBoxOutlier:"\u79BB\u7FA4\u503C",chartTotal:"\u5408\u8BA1",chartTypeScatter:"\u6563\u70B9\u56FE",chartTypeBubble:"\u6C14\u6CE1\u56FE",chartXAxis:"X \u8F74",chartBubbleSize:"\u5927\u5C0F",chartXYSampled:"\u5171 {total} \u4E2A\u70B9\uFF0C\u5747\u5300\u62BD\u6837\u663E\u793A {shown} \u4E2A",licenseMissing:"\u672A\u6388\u6743",licenseExpired:"\u8BB8\u53EF\u8BC1\u5DF2\u8FC7\u671F",licenseReleaseNotCovered:"\u6B64\u7248\u672C\u4E0D\u5728\u8BB8\u53EF\u8BC1\u8986\u76D6\u8303\u56F4\u5185",licenseDomainMismatch:"\u8BB8\u53EF\u8BC1\u5BF9\u6B64\u57DF\u540D\u65E0\u6548",licenseRevoked:"\u8BB8\u53EF\u8BC1\u5DF2\u88AB\u540A\u9500",licenseInvalidFormat:"\u8BB8\u53EF\u8BC1\u5BC6\u94A5\u683C\u5F0F\u9519\u8BEF",licenseInvalidSignature:"\u8BB8\u53EF\u8BC1\u7B7E\u540D\u65E0\u6548",licenseEngineUnavailable:"\u6D4F\u89C8\u5668\u65E0\u6CD5\u9A8C\u8BC1\u8BB8\u53EF\u8BC1\uFF08\u9700\u8981 HTTPS\uFF09",calcAdd:"\u6DFB\u52A0\u8BA1\u7B97\u5217\u2026",calcEdit:"\u7F16\u8F91\u8BA1\u7B97\u5217\u2026",calcRemove:"\u5220\u9664\u8BA1\u7B97\u5217",calcTitleAdd:"\u6DFB\u52A0\u8BA1\u7B97\u5217",calcTitleEdit:"\u7F16\u8F91\u8BA1\u7B97\u5217",calcName:"\u540D\u79F0",calcFormula:"\u516C\u5F0F",calcFormulaHint:"\u5217\u5199\u4F5C [\u540D\u79F0]\u3002\u793A\u4F8B\uFF1A[\u4EF7\u683C] * [\u6570\u91CF]",calcColumns:"\u5217",calcFunctions:"\u51FD\u6570",calcPreview:"\u9884\u89C8",calcPreviewEmpty:"\u6CA1\u6709\u53EF\u9884\u89C8\u7684\u884C",calcErrorAt:"{message}\uFF08\u7B2C {position} \u4E2A\u5B57\u7B26\uFF09",calcAddButton:"\u6DFB\u52A0",calcArgsAtLeast:"{min} \u4E2A\u6216\u66F4\u591A",formulaError_empty:"\u8BF7\u8F93\u5165\u516C\u5F0F",formulaError_unclosedText:'\u6587\u672C\u672A\u95ED\u5408\uFF1A\u7F3A\u5C11 "',formulaError_unclosedColumn:"\u5217\u540D\u672A\u95ED\u5408\uFF1A\u7F3A\u5C11 ]",formulaError_emptyColumn:"\u5217\u540D\u4E3A\u7A7A []",formulaError_unexpectedChar:"\u610F\u5916\u7684\u5B57\u7B26 {text}",formulaError_expected:"\u7F3A\u5C11 {text}",formulaError_cellAfterColon:'":" \u540E\u7F3A\u5C11\u5355\u5143\u683C',formulaError_unknownName:"\u672A\u77E5\u540D\u79F0 {name} \u2014 \u5217\u5E94\u5199\u4F5C [{name}]",formulaError_unexpected:"\u610F\u5916\u7684 {text}",formulaError_endsEarly:"\u516C\u5F0F\u8FC7\u65E9\u7ED3\u675F",formulaError_trailing:"\u672B\u5C3E\u6709\u591A\u4F59\u7684\u6587\u672C",formulaError_unknownColumn:"\u6CA1\u6709\u5217 [{name}]",formulaError_unknownFunction:"\u672A\u77E5\u51FD\u6570 {name}",formulaError_argCount:"{name} \u9700\u8981 {range} \u4E2A\u53C2\u6570",formulaError_cellsNotAllowed:"\u6B64\u5904\u4E0D\u4F7F\u7528 A1 \u8FD9\u6837\u7684\u5355\u5143\u683C\u5F15\u7528 \u2014 \u5217\u5E94\u5199\u4F5C [\u540D\u79F0]"},nm={ok:"OK",cancel:"\u30AD\u30E3\u30F3\u30BB\u30EB",apply:"\u9069\u7528",close:"\u9589\u3058\u308B",clear:"\u30AF\u30EA\u30A2",save:"\u4FDD\u5B58",search:"\u691C\u7D22...",selectAll:"\u3059\u3079\u3066\u9078\u629E",showAll:"\u3059\u3079\u3066\u8868\u793A",remove:"\u524A\u9664",none:"\u306A\u3057",toolbarSearch:"\u691C\u7D22...",exportMenu:"\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8",exportCsv:"CSV \u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8",exportExcel:"\u3059\u3079\u3066\u306E\u30C7\u30FC\u30BF\u3092 Excel \u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8",exportExcelSelected:"\u9078\u629E\u3057\u305F\u884C\u3092 Excel \u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8",exportPdf:"PDF \u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8",exporting:"\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u4E2D\u2026",columns:"\u5217",hiddenColumns:"\u975E\u8868\u793A\u306E\u5217",noHiddenColumns:"\u975E\u8868\u793A\u306E\u5217\u306F\u3042\u308A\u307E\u305B\u3093\u3002",sortAsc:"\u6607\u9806\u3067\u4E26\u3079\u66FF\u3048",sortDesc:"\u964D\u9806\u3067\u4E26\u3079\u66FF\u3048",clearSort:"\u4E26\u3079\u66FF\u3048\u3092\u30AF\u30EA\u30A2",cardSortBy:"\u4E26\u3079\u66FF\u3048",groupByColumn:"\u3053\u306E\u5217\u3067\u30B0\u30EB\u30FC\u30D7\u5316",ungroupColumn:"\u30B0\u30EB\u30FC\u30D7\u5316\u304B\u3089\u5916\u3059",showGroupPanel:"\u30B0\u30EB\u30FC\u30D7\u30D1\u30CD\u30EB\u3092\u8868\u793A",hideGroupPanel:"\u30B0\u30EB\u30FC\u30D7\u30D1\u30CD\u30EB\u3092\u975E\u8868\u793A",showFooter:"\u30D5\u30C3\u30BF\u30FC\u3092\u8868\u793A",hideFooter:"\u30D5\u30C3\u30BF\u30FC\u3092\u975E\u8868\u793A",showGroupFooters:"\u30B0\u30EB\u30FC\u30D7\u30D5\u30C3\u30BF\u30FC\u3092\u8868\u793A",hideGroupFooters:"\u30B0\u30EB\u30FC\u30D7\u30D5\u30C3\u30BF\u30FC\u3092\u975E\u8868\u793A",hideColumn:"\u3053\u306E\u5217\u3092\u975E\u8868\u793A",fieldChooser:"\u30D5\u30A3\u30FC\u30EB\u30C9\u9078\u629E\u2026",bestFit:"\u5E45\u3092\u81EA\u52D5\u8ABF\u6574",bestFitAll:"\u5E45\u3092\u81EA\u52D5\u8ABF\u6574\uFF08\u3059\u3079\u3066\u306E\u5217\uFF09",pinRowTop:"\u884C\u3092\u4E0A\u90E8\u306B\u56FA\u5B9A",pinRowBottom:"\u884C\u3092\u4E0B\u90E8\u306B\u56FA\u5B9A",unpinRow:"\u884C\u306E\u56FA\u5B9A\u3092\u89E3\u9664",findLabel:"\u8868\u5185\u3092\u691C\u7D22",findPrevious:"\u524D\u306E\u4E00\u81F4",findNext:"\u6B21\u306E\u4E00\u81F4",findClose:"\u691C\u7D22\u3092\u9589\u3058\u308B",findCount:"{n} / {count}",findNone:"\u4E00\u81F4\u306A\u3057",renameColumn:"\u5217\u540D\u3092\u5909\u66F4",fixedPosition:"\u56FA\u5B9A\u4F4D\u7F6E\u3092\u8A2D\u5B9A",pinLeft:"\u5DE6",pinRight:"\u53F3",pinSticky:"\u56FA\u5B9A",unpin:"\u56FA\u5B9A\u3092\u89E3\u9664",moveLeft:"\u5DE6\u306B\u79FB\u52D5",moveRight:"\u53F3\u306B\u79FB\u52D5",filterPlaceholder:"\u30D5\u30A3\u30EB\u30BF\u30FC\u2026",filterColumnAria:"{column} \u3092\u30D5\u30A3\u30EB\u30BF\u30FC",filterOperatorDefault:"\u65E2\u5B9A",filterOperatorAria:"{column} \u306E\u30D5\u30A3\u30EB\u30BF\u30FC\u6F14\u7B97\u5B50",filterSelectAll:"\u3059\u3079\u3066\u9078\u629E",filterBlank:"(\u7A7A\u767D)",filterNonBlank:"(\u7A7A\u767D\u4EE5\u5916)",filterEmptyText:"(\u7A7A\u306E\u6587\u5B57\u5217)",filterSpace:"(\u30B9\u30DA\u30FC\u30B9 1 \u500B)",filterSpaces:"(\u30B9\u30DA\u30FC\u30B9 {n} \u500B)",filterNoMatch:"\u4E00\u81F4\u3059\u308B\u5024\u304C\u3042\u308A\u307E\u305B\u3093",filterLoading:"\u5024\u3092\u8AAD\u307F\u8FBC\u307F\u4E2D\u2026",filterTruncated:"\u5148\u982D\u306E\u5024\u306E\u307F\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002\u6B8B\u308A\u306F\u691C\u7D22\u3057\u3066\u304F\u3060\u3055\u3044\u3002",filterRemove:"\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u89E3\u9664",filterToggle:"\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u9069\u7528",filterEditBuilder:"\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u7DE8\u96C6",filterNone:"\u30D5\u30A3\u30EB\u30BF\u30FC\u306A\u3057",filterActive:"\u30D5\u30A3\u30EB\u30BF\u30FC\u9069\u7528\u4E2D",opEquals:"\u304C\u6B21\u3068\u7B49\u3057\u3044",opNotEquals:"\u304C\u6B21\u3068\u7B49\u3057\u304F\u306A\u3044",opGreater:">",opGreaterOrEqual:"\u2265",opLess:"<",opLessOrEqual:"\u2264",opContains:"\u3092\u542B\u3080",opNotContains:"\u3092\u542B\u307E\u306A\u3044",opStartsWith:"\u3067\u59CB\u307E\u308B",opEndsWith:"\u3067\u7D42\u308F\u308B",opIsBlank:"\u304C\u7A7A\u767D",opIsNotBlank:"\u304C\u7A7A\u767D\u3067\u306A\u3044",opIsBetween:"\u304C\u6B21\u306E\u7BC4\u56F2\u5185",opIsOneOf:"\u304C\u6B21\u306E\u3044\u305A\u308C\u304B",opValuesCount:"{n} \u4EF6\u306E\u5024",opInPeriod:"\u671F\u9593\u5185",periodToday:"\u4ECA\u65E5",periodYesterday:"\u6628\u65E5",periodTomorrow:"\u660E\u65E5",periodThisWeek:"\u4ECA\u9031",periodLastWeek:"\u5148\u9031",periodNextWeek:"\u6765\u9031",periodThisMonth:"\u4ECA\u6708",periodLastMonth:"\u5148\u6708",periodNextMonth:"\u6765\u6708",periodThisQuarter:"\u4ECA\u56DB\u534A\u671F",periodLastQuarter:"\u524D\u56DB\u534A\u671F",periodNextQuarter:"\u6B21\u56DB\u534A\u671F",periodThisYear:"\u4ECA\u5E74",periodLastYear:"\u6628\u5E74",periodNextYear:"\u6765\u5E74",periodYearToDate:"\u5E74\u521D\u6765",periodLastDays:"\u904E\u53BB {n} \u65E5\u9593",periodNextDays:"\u4ECA\u5F8C {n} \u65E5\u9593",filterAnd:"\u304B\u3064 (And)",filterOr:"\u307E\u305F\u306F (Or)",builderTitle:"\u30D5\u30A3\u30EB\u30BF\u30FC\u30D3\u30EB\u30C0\u30FC",builderCombine:"\u6761\u4EF6\u306E\u7D50\u5408\u65B9\u6CD5",builderAddCondition:"\u6761\u4EF6\u3092\u8FFD\u52A0",builderAddGroup:"\u30B0\u30EB\u30FC\u30D7\u3092\u8FFD\u52A0",builderRemoveGroup:"\u30B0\u30EB\u30FC\u30D7\u3092\u524A\u9664",builderRemoveCondition:"\u6761\u4EF6\u3092\u524A\u9664",builderEmpty:"\u307E\u3060\u6761\u4EF6\u304C\u3042\u308A\u307E\u305B\u3093\u3002",builderColumn:"\u5217",builderOperator:"\u6F14\u7B97\u5B50",builderValue:"\u5024",builderValueFrom:"\u958B\u59CB",builderValueTo:"\u7D42\u4E86",builderValuePlaceholder:"\u5024\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",builderOpen:"\u30D5\u30A3\u30EB\u30BF\u30FC\u30D3\u30EB\u30C0\u30FC\u2026",builderClearAll:"\u3059\u3079\u3066\u30AF\u30EA\u30A2",builderConditionButton:"+ \u6761\u4EF6",builderGroupButton:"+ \u30B0\u30EB\u30FC\u30D7",builderTrue:"\u771F",builderFalse:"\u507D",builderPeriod:"\u671F\u9593",builderDays:"\u65E5\u6570",filterCustom:"(\u30AB\u30B9\u30BF\u30E0\u2026)",filterPopupAria:"{column} \u306E\u30D5\u30A3\u30EB\u30BF\u30FC",importOpen:"\u30A4\u30F3\u30DD\u30FC\u30C8\u2026",groupPanelHint:"\u30B0\u30EB\u30FC\u30D7\u5316\u3059\u308B\u5217\u3092\u3053\u3053\u306B\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u304F\u3060\u3055\u3044",groupAddLevel:"\u30B0\u30EB\u30FC\u30D7\u5316\u306E\u30EC\u30D9\u30EB\u3092\u8FFD\u52A0",groupAddLevelButton:"+ \u30EC\u30D9\u30EB\u3092\u8FFD\u52A0\u2026",groupNoGrouping:"\uFF08\u30B0\u30EB\u30FC\u30D7\u5316\u306A\u3057\uFF09",groupLevelAria:"\u30B0\u30EB\u30FC\u30D7\u5316\u30EC\u30D9\u30EB {n}",groupRemoveAria:"{column} \u3092\u524A\u9664",groupExpandAll:"\u3059\u3079\u3066\u5C55\u958B",groupCollapseAll:"\u3059\u3079\u3066\u6298\u308A\u305F\u305F\u3080",pagerFirst:"\u6700\u521D\u306E\u30DA\u30FC\u30B8",pagerPrevious:"\u524D\u306E\u30DA\u30FC\u30B8",pagerNext:"\u6B21\u306E\u30DA\u30FC\u30B8",pagerLast:"\u6700\u5F8C\u306E\u30DA\u30FC\u30B8",pagerPage:"\u30DA\u30FC\u30B8",pagerOf:"/",pagerRowsPerPage:"1 \u30DA\u30FC\u30B8\u3042\u305F\u308A\u306E\u884C\u6570",pagerAria:"\u30DA\u30FC\u30B8\u9001\u308A",pagerPageButton:"{n} \u30DA\u30FC\u30B8",selectAllRows:"\u3059\u3079\u3066\u306E\u884C\u3092\u9078\u629E",selectRowAria:"\u884C {row} \u3092\u9078\u629E",selectGroupAria:"{group} \u306E {count} \u884C\u3092\u9078\u629E",summaryAria:"\u96C6\u8A08",columnTotalsAria:"\u5217\u306E\u5408\u8A08",rowActions:"\u884C\u306E\u64CD\u4F5C",detailsAria:"\u8A73\u7D30",rowNumberAria:"\u884C\u756A\u53F7",noteEditorAria:"\u30BB\u30EB\u306E\u30E1\u30E2",notePlaceholder:"\u3053\u306E\u30BB\u30EB\u306B\u3064\u3044\u3066\u30E1\u30E2\u3092\u66F8\u304F\u2026",addNote:"\u30E1\u30E2\u3092\u8FFD\u52A0\u2026",editNote:"\u30E1\u30E2\u3092\u7DE8\u96C6\u2026",deleteNote:"\u30E1\u30E2\u3092\u524A\u9664",expandDetails:"\u8A73\u7D30\u3092\u5C55\u958B",collapseDetails:"\u8A73\u7D30\u3092\u6298\u308A\u305F\u305F\u3080",expandTreeRow:"\u884C\u3092\u5C55\u958B",collapseTreeRow:"\u884C\u3092\u6298\u308A\u305F\u305F\u3080",expandColumnGroup:"\u5217\u30B0\u30EB\u30FC\u30D7\u3092\u5C55\u958B",collapseColumnGroup:"\u5217\u30B0\u30EB\u30FC\u30D7\u3092\u6298\u308A\u305F\u305F\u3080",dragToReorder:"\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u4E26\u3079\u66FF\u3048",menuCopy:"\u30B3\u30D4\u30FC",menuCopyWithHeaders:"\u898B\u51FA\u3057\u4ED8\u304D\u3067\u30B3\u30D4\u30FC",menuCopyWithGroupHeaders:"\u30B0\u30EB\u30FC\u30D7\u898B\u51FA\u3057\u4ED8\u304D\u3067\u30B3\u30D4\u30FC",menuCut:"\u5207\u308A\u53D6\u308A",menuPaste:"\u8CBC\u308A\u4ED8\u3051",menuExport:"\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8",menuChartRange:"\u9078\u629E\u3057\u305F\u30BB\u30EB\u3092\u30B0\u30E9\u30D5\u5316",statsSum:"\u5408\u8A08",statsCount:"\u30AB\u30A6\u30F3\u30C8",statsAvg:"\u5E73\u5747",statsMin:"\u6700\u5C0F",statsMax:"\u6700\u5927",statsCells:"\u30BB\u30EB",statsTooLarge:"\u9078\u629E\u7BC4\u56F2\u304C\u5927\u304D\u3059\u304E\u3066\u96C6\u8A08\u3067\u304D\u307E\u305B\u3093",statusRows:"\u884C\u6570",statusFiltered:"\u30D5\u30A3\u30EB\u30BF\u30FC\u5F8C",statusSelected:"\u9078\u629E\u6E08\u307F",summaryRows:"\u884C",announceRows:"{n} \u884C",announceSortedBy:"{columns} \u3067\u4E26\u3079\u66FF\u3048",announceSelected:"{n} \u4EF6\u9078\u629E",announceAscending:"\u6607\u9806",announceDescending:"\u964D\u9806",sideFilters:"\u30D5\u30A3\u30EB\u30BF\u30FC",sideBarAria:"\u30C4\u30FC\u30EB\u30D1\u30CD\u30EB",sideClearFilters:"\u3059\u3079\u3066\u306E\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u30AF\u30EA\u30A2",summarySum:"\u5408\u8A08",summaryAvg:"\u5E73\u5747",summaryMin:"\u6700\u5C0F",summaryMax:"\u6700\u5927",summaryCount:"\u30AB\u30A6\u30F3\u30C8",summaryDistinct:"\u4E00\u610F\u306E\u6570",summaryCustom:"\u30AB\u30B9\u30BF\u30E0",noTotal:"\u5408\u8A08\u306A\u3057",busy:"\u51E6\u7406\u4E2D\u2026",busyLoading:"\u884C\u3092\u8AAD\u307F\u8FBC\u307F\u4E2D\u2026",rowsLoadFailed:"\u3053\u308C\u3089\u306E\u884C\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093\u3067\u3057\u305F\u3002",retryLoad:"\u518D\u8A66\u884C",busyEncoding:"\u30C7\u30FC\u30BF\u3092\u6E96\u5099\u4E2D\u2026",busyFiltering:"\u884C\u3092\u30D5\u30A3\u30EB\u30BF\u30FC\u4E2D\u2026",busySorting:"\u884C\u3092\u4E26\u3079\u66FF\u3048\u4E2D\u2026",busyComputing:"\u30D5\u30A3\u30EB\u30BF\u30FC\u3068\u4E26\u3079\u66FF\u3048\u3092\u5B9F\u884C\u4E2D\u2026",busyGrouping:"\u30B0\u30EB\u30FC\u30D7\u3092\u4F5C\u6210\u4E2D\u2026",busyAggregating:"\u5408\u8A08\u3092\u8A08\u7B97\u4E2D\u2026",busyProjecting:"\u30D3\u30E5\u30FC\u3092\u66F4\u65B0\u4E2D\u2026",busyExporting:"\u30D5\u30A1\u30A4\u30EB\u3092\u4F5C\u6210\u4E2D\u2026",noData:"\u30C7\u30FC\u30BF\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093",editNewRow:"\u65B0\u3057\u3044\u884C",editSaveChanges:"\u5909\u66F4\u3092\u4FDD\u5B58",editDiscardChanges:"\u5909\u66F4\u3092\u7834\u68C4",editRow:"\u884C\u3092\u7DE8\u96C6",editRowMenu:"\u884C\u3092\u7DE8\u96C6\u2026",editDeleteRow:"\u884C\u3092\u524A\u9664",editUndoDelete:"\u524A\u9664\u3092\u5143\u306B\u623B\u3059",editActions:"\u30A2\u30AF\u30B7\u30E7\u30F3",editSaveRow:"\u884C\u3092\u4FDD\u5B58",editSaving:"\u4FDD\u5B58\u4E2D\u2026",editEditingRow:"\u884C {row} \u3092\u7DE8\u96C6\u4E2D",editSaveCount:"{n} \u884C\u3092\u4FDD\u5B58",editCannotSave:"\u4FDD\u5B58\u3067\u304D\u307E\u305B\u3093",editSaveFailed:"\u5909\u66F4\u3092\u4FDD\u5B58\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002",rowStatusChanged:"\u672A\u4FDD\u5B58\u306E\u5909\u66F4",rowStatusSaving:"\u4FDD\u5B58\u4E2D\u2026",rowStatusSaved:"\u4FDD\u5B58\u6E08\u307F",rowStatusError:"\u4FDD\u5B58\u306B\u5931\u6557\u3057\u307E\u3057\u305F",rowStatusRetry:"\u518D\u8A66\u884C",rowStatusDelete:"\u884C\u3092\u524A\u9664",editDeleteConfirm:"\u3053\u306E\u884C\u3092\u524A\u9664\u3057\u307E\u3059\u304B\uFF1F",editAddRowUndo:"\u884C\u306E\u8FFD\u52A0",editDeleteRowUndo:"\u884C\u306E\u524A\u9664",editCellUndo:"{column} \u3092\u7DE8\u96C6",editFillUndo:"{count} \u30BB\u30EB\u3092\u30D5\u30A3\u30EB",editPasteUndo:"{count} \u30BB\u30EB\u3092\u8CBC\u308A\u4ED8\u3051",editCutUndo:"{count} \u30BB\u30EB\u3092\u5207\u308A\u53D6\u308A",editGroupTotal:"\u30B0\u30EB\u30FC\u30D7\u5408\u8A08",editGroupTotalUndo:"{column} \u306E\u5408\u8A08\u3092\u5909\u66F4\uFF08{count} \u884C\uFF09",editNoMatch:"\u4E00\u81F4\u306A\u3057",formEditTitle:"\u884C\u3092\u7DE8\u96C6",formAddTitle:"\u65B0\u3057\u3044\u884C",formShortcut:"{key}+Enter \u3067\u4FDD\u5B58 \xB7 Esc \u3067\u30AD\u30E3\u30F3\u30BB\u30EB",validationRequired:"\u3053\u306E\u9805\u76EE\u306F\u5FC5\u9808\u3067\u3059",validationNumber:"\u6570\u5024\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",validationFormat:"\u5F62\u5F0F\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093",validationEmail:"\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093",validationInvalid:"\u5024\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093",dateCalendar:"\u30AB\u30EC\u30F3\u30C0\u30FC",dateOpenCalendar:"\u30AB\u30EC\u30F3\u30C0\u30FC\u3092\u958B\u304F",datePreviousMonth:"\u524D\u306E\u6708",dateNextMonth:"\u6B21\u306E\u6708",monthJanuary:"1\u6708",monthFebruary:"2\u6708",monthMarch:"3\u6708",monthApril:"4\u6708",monthMay:"5\u6708",monthJune:"6\u6708",monthJuly:"7\u6708",monthAugust:"8\u6708",monthSeptember:"9\u6708",monthOctober:"10\u6708",monthNovember:"11\u6708",monthDecember:"12\u6708",weekStartsOn:"0",weekdaySu:"\u65E5",weekdayMo:"\u6708",weekdayTu:"\u706B",weekdayWe:"\u6C34",weekdayTh:"\u6728",weekdayFr:"\u91D1",weekdaySa:"\u571F",importTitle:"\u30C7\u30FC\u30BF\u306E\u30A4\u30F3\u30DD\u30FC\u30C8",importStepSource:"1. \u30BD\u30FC\u30B9",importStepMap:"2. \u5217\u306E\u5BFE\u5FDC\u4ED8\u3051",importFile:"CSV \u30D5\u30A1\u30A4\u30EB",importPaste:"\u2026\u307E\u305F\u306F\u884C\u3092\u8CBC\u308A\u4ED8\u3051",importSeparator:"\u533A\u5207\u308A\u6587\u5B57",importSeparatorAuto:"\u81EA\u52D5\u691C\u51FA",importSeparatorComma:"\u30AB\u30F3\u30DE ,",importSeparatorSemicolon:"\u30BB\u30DF\u30B3\u30ED\u30F3 ;",importSeparatorTab:"\u30BF\u30D6",importSeparatorPipe:"\u30D1\u30A4\u30D7 |",importFileColumn:"\u30D5\u30A1\u30A4\u30EB\u306E\u5217",importDetected:"\u691C\u51FA\u7D50\u679C",importGridColumn:"\u30B0\u30EA\u30C3\u30C9\u306E\u5217",importSample:"\u30B5\u30F3\u30D7\u30EB",importSkip:"\u2014 \u30B9\u30AD\u30C3\u30D7 \u2014",importPreview:"\u30D7\u30EC\u30D3\u30E5\u30FC",importNoSource:"\u307E\u305A\u30D5\u30A1\u30A4\u30EB\u3092\u9078\u3076\u304B\u3001\u884C\u3092\u8CBC\u308A\u4ED8\u3051\u3066\u304F\u3060\u3055\u3044\u3002",importNoRows:"\u30C7\u30FC\u30BF\u884C\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002",importAction:"\u30A4\u30F3\u30DD\u30FC\u30C8",exportAborted:"\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3092\u4E2D\u6B62\u3057\u307E\u3057\u305F",exportSheetName:"\u30C7\u30FC\u30BF",chart:"\u30B0\u30E9\u30D5",chartCategory:"\u30AB\u30C6\u30B4\u30EA",chartSeries:"\u7CFB\u5217",chartAddSeries:"\u7CFB\u5217\u3092\u8FFD\u52A0",chartRemoveSeries:"\u524A\u9664",chartSource:"\u30C7\u30FC\u30BF",chartSourceView:"\u30D5\u30A3\u30EB\u30BF\u30FC\u5F8C\u306E\u884C",chartSourceSelection:"\u9078\u629E\u3057\u305F\u884C",chartSourceAll:"\u3059\u3079\u3066\u306E\u884C",chartSourceRange:"\u9078\u629E\u7BC4\u56F2\uFF08{from}\u2013{to} \u884C\u76EE\uFF09",chartClose:"\u30B0\u30E9\u30D5\u3092\u9589\u3058\u308B",chartFullscreen:"\u5168\u753B\u9762\u8868\u793A",chartExitFullscreen:"\u5168\u753B\u9762\u8868\u793A\u3092\u7D42\u4E86",chartFloat:"\u30A6\u30A3\u30F3\u30C9\u30A6\u3067\u8868\u793A",chartDock:"\u30C9\u30C3\u30AD\u30F3\u30B0",chartNewWindow:"\u65B0\u3057\u3044\u30A6\u30A3\u30F3\u30C9\u30A6",chartMoveWindow:"\u30B0\u30E9\u30D5\u30A6\u30A3\u30F3\u30C9\u30A6\u3092\u79FB\u52D5",chartResizeWindow:"\u30B0\u30E9\u30D5\u30A6\u30A3\u30F3\u30C9\u30A6\u306E\u30B5\u30A4\u30BA\u3092\u5909\u66F4",chartResizeDock:"\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u30B0\u30E9\u30D5\u306E\u9AD8\u3055\u3092\u5909\u66F4",chartSwitch:"\u30AB\u30C6\u30B4\u30EA\u3068\u7CFB\u5217\u3092\u5165\u308C\u66FF\u3048",chartUnlink:"\u30EA\u30F3\u30AF\u89E3\u9664",chartLink:"\u30EA\u30F3\u30AF",chartUnlinked:"\u30EA\u30F3\u30AF\u89E3\u9664\u4E2D: \u30B0\u30E9\u30D5\u306F\u30C7\u30FC\u30BF\u3092\u4FDD\u6301\u3057\u3001\u30B0\u30EA\u30C3\u30C9\u306E\u5909\u66F4\u306B\u8FFD\u5F93\u3057\u307E\u305B\u3093\u3002",chartExportPng:"PNG",chartExportSvg:"SVG",chartExportFailed:"\u30B0\u30E9\u30D5\u3092\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002",chartCrossFiltered:"\u30B0\u30EA\u30C3\u30C9\u306F {value} \u3067\u7D5E\u308A\u8FBC\u307E\u308C\u3066\u3044\u307E\u3059\u3002",chartBlankCategory:"(\u7A7A\u767D)",chartTruncated:"\u4E0A\u4F4D {n} \u4EF6\u306E\u30AB\u30C6\u30B4\u30EA\u3092\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002\u6B8B\u308A\u306F\u300C\u305D\u306E\u4ED6\u300D\u306B\u307E\u3068\u3081\u3089\u308C\u3066\u3044\u307E\u3059\u3002",chartOther:"\u305D\u306E\u4ED6",chartEmpty:"\u307E\u3060\u8868\u793A\u3067\u304D\u308B\u3082\u306E\u304C\u3042\u308A\u307E\u305B\u3093\u3002",chartNoVisibleSeries:"\u8868\u793A\u4E2D\u306E\u7CFB\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002",chartNeedsMoreSeries:"\u3053\u306E\u30B0\u30E9\u30D5\u306E\u7A2E\u985E\u306B\u306F\u5024\u306E\u5217\u304C2\u3064\u4EE5\u4E0A\u5FC5\u8981\u3067\u3059\uFF08\u4F8B\uFF1A\u6700\u5C0F\u5024\u3068\u6700\u5927\u5024\uFF09\u30022\u3064\u76EE\u306E\u7CFB\u5217\u3092\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044\u3002",chartLoading:"\u8AAD\u307F\u8FBC\u307F\u4E2D\u2026",chartNeedsRecharts:"\u30B0\u30E9\u30D5\u306B\u306F\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u30D1\u30C3\u30B1\u30FC\u30B8 `recharts` \u304C\u5FC5\u8981\u3067\u3059\u3002\u63CF\u753B\u3059\u308B\u306B\u306F\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u3066\u304F\u3060\u3055\u3044\u3002",chartOnlyOneSeries:"\u3053\u306E\u30B0\u30E9\u30D5\u306E\u7A2E\u985E\u306F 1 \u7CFB\u5217\u306E\u307F\u8868\u793A\u3057\u307E\u3059\u3002",chartByColumn:"\u3053\u306E\u5217\u3067\u30B0\u30E9\u30D5\u3092\u4F5C\u6210",chartGroupBy:"\u5358\u4F4D",chartGroupNone:"\u5404\u5024",chartGroupAuto:"\u81EA\u52D5",chartGroupDay:"\u65E5",chartGroupWeek:"\u9031",chartGroupMonth:"\u6708",chartGroupQuarter:"\u56DB\u534A\u671F",chartGroupYear:"\u5E74",chartGroupBins:"{n} \u533A\u9593",chartBucketAdjusted:"1 \u3064\u306E\u8EF8\u306B\u306F\u533A\u9593\u304C\u591A\u3059\u304E\u308B\u305F\u3081\u3001\u7C97\u304F\u307E\u3068\u3081\u307E\u3057\u305F\u3002",chartWindowed:"{total} \u4EF6\u4E2D {shown} \u4EF6\u3092\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002",chartShowAll:"\u3059\u3079\u3066\u8868\u793A",chartCanvasHint:"\u30B0\u30E9\u30D5\u3002\u30B9\u30AF\u30ED\u30FC\u30EB\u3067\u62E1\u5927\u7E2E\u5C0F\u3001\u30C9\u30E9\u30C3\u30B0\u3067\u79FB\u52D5\u3001\u77E2\u5370\u30AD\u30FC\u3067\u79FB\u52D5\u30010 \u3067\u5168\u4F53\u8868\u793A\u3002",chartCanvasHintPick:"\u30B0\u30E9\u30D5\u3002\u77E2\u5370\u30AD\u30FC\u3067\u30AB\u30C6\u30B4\u30EA\u3092\u9078\u3073\u3001Enter \u307E\u305F\u306F Space \u3067\u305D\u306E\u30AB\u30C6\u30B4\u30EA\u3067\u8868\u3092\u7D5E\u308A\u8FBC\u307F\u307E\u3059\uFF08Ctrl \u3067\u8FFD\u52A0\uFF09\u3002+ \u3068 \u2212 \u3067\u62E1\u5927\u7E2E\u5C0F\u30010 \u3067\u5168\u4F53\u8868\u793A\u3002",chartCategoryFocus:"{category}: {values} \u2014 {count} \u4EF6\u4E2D {position} \u4EF6\u76EE",chartCategoryFiltered:"\u8868\u3092\u7D5E\u308A\u8FBC\u307F\u4E2D",chartAggSum:"\u5408\u8A08",chartAggAvg:"\u5E73\u5747",chartAggMin:"\u6700\u5C0F",chartAggMax:"\u6700\u5927",chartAggCount:"\u30AB\u30A6\u30F3\u30C8",chartAggDistinct:"\u4E00\u610F\u306E\u6570",chartAggFirst:"\u6700\u521D",chartAggLast:"\u6700\u5F8C",chartTypeColumn:"\u7E26\u68D2",chartTypeBar:"\u6A2A\u68D2",chartTypeLine:"\u6298\u308C\u7DDA",chartTypeArea:"\u9762",chartTypePie:"\u5186",chartTypeDonut:"\u30C9\u30FC\u30CA\u30C4",chartStacking:"\u7CFB\u5217\u306E\u914D\u7F6E",chartStackGrouped:"\u96C6\u5408",chartStackStacked:"\u7A4D\u307F\u4E0A\u3052",chartStackNormalized:"100% \u7A4D\u307F\u4E0A\u3052",chartFormat:"\u66F8\u5F0F",chartFormatTitle:"\u30BF\u30A4\u30C8\u30EB",chartFormatCategoryAxis:"\u9805\u76EE\u8EF8\u306E\u30BF\u30A4\u30C8\u30EB",chartFormatValueAxis:"\u5024\u8EF8\u306E\u30BF\u30A4\u30C8\u30EB",chartFormatLegend:"\u51E1\u4F8B",chartLegendTop:"\u4E0A",chartLegendBottom:"\u4E0B",chartLegendLeft:"\u5DE6",chartLegendRight:"\u53F3",chartLegendNone:"\u975E\u8868\u793A",chartFormatDataLabels:"\u30C7\u30FC\u30BF \u30E9\u30D9\u30EB",chartFormatScale:"\u5024\u306E\u76EE\u76DB",chartScaleLinear:"\u7DDA\u5F62",chartScaleLog:"\u5BFE\u6570",chartFormatTextSize:"\u6587\u5B57\u30B5\u30A4\u30BA",chartFormatTextColor:"\u6587\u5B57\u8272",chartFormatDefault:"\u65E2\u5B9A",chartFormatLabelAngle:"\u9805\u76EE\u30E9\u30D9\u30EB",chartAngleAuto:"\u81EA\u52D5",chartAngleFlat:"\u6C34\u5E73",chartFormatGridLines:"\u76EE\u76DB\u7DDA",chartGridValue:"\u5024\u8EF8",chartGridBoth:"\u4E21\u65B9\u306E\u8EF8",chartGridNone:"\u306A\u3057",chartFormatGridDashed:"\u7834\u7DDA\u306E\u76EE\u76DB\u7DDA",chartFormatLineWidth:"\u7DDA\u306E\u592A\u3055",chartFormatLineDashed:"\u7834\u7DDA",chartFormatFillOpacity:"\u5857\u308A\u3064\u3076\u3057\u306E\u4E0D\u900F\u660E\u5EA6",chartFormatDateFormat:"\u65E5\u4ED8\u5F62\u5F0F",chartFormatPalette:"\u914D\u8272",chartPaletteTheme:"\u30C6\u30FC\u30DE",chartPaletteClassic:"\u30AF\u30E9\u30B7\u30C3\u30AF",chartPaletteColorblind:"\u8272\u899A\u591A\u69D8\u6027\u306B\u914D\u616E",chartPaletteVivid:"\u30D3\u30D3\u30C3\u30C9",chartPaletteMonochrome:"\u5358\u8272",sparklineSummary:"{count} \u500B\u306E\u5024 ({min}\u301C{max})\u3001\u6700\u5F8C\u306F {last}",chartTypeWaterfall:"\u30A6\u30A9\u30FC\u30BF\u30FC\u30D5\u30A9\u30FC\u30EB",chartTypeFunnel:"\u3058\u3087\u3046\u3054",chartTypeTreemap:"\u30C4\u30EA\u30FC\u30DE\u30C3\u30D7",chartTypeHeatmap:"\u30D2\u30FC\u30C8\u30DE\u30C3\u30D7",chartTypeBox:"\u7BB1\u3072\u3052\u56F3",chartTypeRadar:"\u30EC\u30FC\u30C0\u30FC",chartTypeRangeBar:"\u7BC4\u56F2",chartBoxQ1:"Q1",chartBoxMedian:"\u4E2D\u592E\u5024",chartBoxQ3:"Q3",chartBoxOutlier:"\u5916\u308C\u5024",chartTotal:"\u5408\u8A08",chartTypeScatter:"\u6563\u5E03\u56F3",chartTypeBubble:"\u30D0\u30D6\u30EB",chartXAxis:"X \u8EF8",chartBubbleSize:"\u30B5\u30A4\u30BA",chartXYSampled:"{total} \u70B9\u4E2D {shown} \u70B9 (\u5747\u7B49\u306B\u62BD\u51FA)",licenseMissing:"\u30E9\u30A4\u30BB\u30F3\u30B9\u306A\u3057",licenseExpired:"\u30E9\u30A4\u30BB\u30F3\u30B9\u306E\u6709\u52B9\u671F\u9650\u304C\u5207\u308C\u3066\u3044\u307E\u3059",licenseReleaseNotCovered:"\u3053\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u30E9\u30A4\u30BB\u30F3\u30B9\u306E\u5BFE\u8C61\u5916\u3067\u3059",licenseDomainMismatch:"\u3053\u306E\u30C9\u30E1\u30A4\u30F3\u3067\u306F\u30E9\u30A4\u30BB\u30F3\u30B9\u304C\u7121\u52B9\u3067\u3059",licenseRevoked:"\u30E9\u30A4\u30BB\u30F3\u30B9\u306F\u53D6\u308A\u6D88\u3055\u308C\u307E\u3057\u305F",licenseInvalidFormat:"\u30E9\u30A4\u30BB\u30F3\u30B9\u30AD\u30FC\u306E\u5F62\u5F0F\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093",licenseInvalidSignature:"\u30E9\u30A4\u30BB\u30F3\u30B9\u306E\u7F72\u540D\u304C\u7121\u52B9\u3067\u3059",licenseEngineUnavailable:"\u30D6\u30E9\u30A6\u30B6\u30FC\u3067\u30E9\u30A4\u30BB\u30F3\u30B9\u3092\u691C\u8A3C\u3067\u304D\u307E\u305B\u3093\uFF08HTTPS \u304C\u5FC5\u8981\u3067\u3059\uFF09",calcAdd:"\u8A08\u7B97\u5217\u3092\u8FFD\u52A0\u2026",calcEdit:"\u8A08\u7B97\u5217\u3092\u7DE8\u96C6\u2026",calcRemove:"\u8A08\u7B97\u5217\u3092\u524A\u9664",calcTitleAdd:"\u8A08\u7B97\u5217\u3092\u8FFD\u52A0",calcTitleEdit:"\u8A08\u7B97\u5217\u3092\u7DE8\u96C6",calcName:"\u540D\u524D",calcFormula:"\u6570\u5F0F",calcFormulaHint:"\u5217\u306F [\u540D\u524D] \u3068\u66F8\u304D\u307E\u3059\u3002\u4F8B: [\u4FA1\u683C] * [\u6570\u91CF]",calcColumns:"\u5217",calcFunctions:"\u95A2\u6570",calcPreview:"\u30D7\u30EC\u30D3\u30E5\u30FC",calcPreviewEmpty:"\u30D7\u30EC\u30D3\u30E5\u30FC\u3059\u308B\u884C\u304C\u3042\u308A\u307E\u305B\u3093",calcErrorAt:"{message}\uFF08{position} \u6587\u5B57\u76EE\uFF09",calcAddButton:"\u8FFD\u52A0",calcArgsAtLeast:"{min} \u500B\u4EE5\u4E0A",formulaError_empty:"\u6570\u5F0F\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",formulaError_unclosedText:'\u6587\u5B57\u5217\u304C\u9589\u3058\u3066\u3044\u307E\u305B\u3093: " \u304C\u3042\u308A\u307E\u305B\u3093',formulaError_unclosedColumn:"\u5217\u540D\u304C\u9589\u3058\u3066\u3044\u307E\u305B\u3093: ] \u304C\u3042\u308A\u307E\u305B\u3093",formulaError_emptyColumn:"\u5217\u540D\u304C\u7A7A\u3067\u3059 []",formulaError_unexpectedChar:"\u4E88\u671F\u3057\u306A\u3044\u6587\u5B57 {text}",formulaError_expected:"{text} \u304C\u3042\u308A\u307E\u305B\u3093",formulaError_cellAfterColon:'":" \u306E\u5F8C\u306B\u30BB\u30EB\u304C\u3042\u308A\u307E\u305B\u3093',formulaError_unknownName:"\u4E0D\u660E\u306A\u540D\u524D {name} \u2014 \u5217\u306F [{name}] \u3068\u66F8\u304D\u307E\u3059",formulaError_unexpected:"\u4E88\u671F\u3057\u306A\u3044 {text}",formulaError_endsEarly:"\u6570\u5F0F\u304C\u9014\u4E2D\u3067\u7D42\u308F\u3063\u3066\u3044\u307E\u3059",formulaError_trailing:"\u672B\u5C3E\u306B\u4E88\u671F\u3057\u306A\u3044\u30C6\u30AD\u30B9\u30C8\u304C\u3042\u308A\u307E\u3059",formulaError_unknownColumn:"\u5217 [{name}] \u306F\u3042\u308A\u307E\u305B\u3093",formulaError_unknownFunction:"\u4E0D\u660E\u306A\u95A2\u6570 {name}",formulaError_argCount:"{name} \u306E\u5F15\u6570\u306F {range} \u500B\u3067\u3059",formulaError_cellsNotAllowed:"A1 \u306E\u3088\u3046\u306A\u30BB\u30EB\u53C2\u7167\u306F\u3053\u3053\u3067\u306F\u4F7F\u3048\u307E\u305B\u3093 \u2014 \u5217\u306F [\u540D\u524D] \u3068\u66F8\u304D\u307E\u3059"},am={ok:"\uD655\uC778",cancel:"\uCDE8\uC18C",apply:"\uC801\uC6A9",close:"\uB2EB\uAE30",clear:"\uC9C0\uC6B0\uAE30",save:"\uC800\uC7A5",search:"\uAC80\uC0C9...",selectAll:"\uBAA8\uB450 \uC120\uD0DD",showAll:"\uBAA8\uB450 \uD45C\uC2DC",remove:"\uC81C\uAC70",none:"\uC5C6\uC74C",toolbarSearch:"\uAC80\uC0C9...",exportMenu:"\uB0B4\uBCF4\uB0B4\uAE30",exportCsv:"CSV\uB85C \uB0B4\uBCF4\uB0B4\uAE30",exportExcel:"\uBAA8\uB4E0 \uB370\uC774\uD130\uB97C Excel\uB85C \uB0B4\uBCF4\uB0B4\uAE30",exportExcelSelected:"\uC120\uD0DD\uD55C \uD589\uC744 Excel\uB85C \uB0B4\uBCF4\uB0B4\uAE30",exportPdf:"PDF\uB85C \uB0B4\uBCF4\uB0B4\uAE30",exporting:"\uB0B4\uBCF4\uB0B4\uB294 \uC911\u2026",columns:"\uC5F4",hiddenColumns:"\uC228\uACA8\uC9C4 \uC5F4",noHiddenColumns:"\uC228\uACA8\uC9C4 \uC5F4\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",sortAsc:"\uC624\uB984\uCC28\uC21C \uC815\uB82C",sortDesc:"\uB0B4\uB9BC\uCC28\uC21C \uC815\uB82C",clearSort:"\uC815\uB82C \uC9C0\uC6B0\uAE30",cardSortBy:"\uC815\uB82C \uAE30\uC900",groupByColumn:"\uC774 \uC5F4\uB85C \uADF8\uB8F9\uD654",ungroupColumn:"\uADF8\uB8F9\uD654\uC5D0\uC11C \uC81C\uC678",showGroupPanel:"\uADF8\uB8F9 \uD328\uB110 \uD45C\uC2DC",hideGroupPanel:"\uADF8\uB8F9 \uD328\uB110 \uC228\uAE30\uAE30",showFooter:"\uBC14\uB2E5\uAE00 \uD45C\uC2DC",hideFooter:"\uBC14\uB2E5\uAE00 \uC228\uAE30\uAE30",showGroupFooters:"\uADF8\uB8F9 \uBC14\uB2E5\uAE00 \uD45C\uC2DC",hideGroupFooters:"\uADF8\uB8F9 \uBC14\uB2E5\uAE00 \uC228\uAE30\uAE30",hideColumn:"\uC774 \uC5F4 \uC228\uAE30\uAE30",fieldChooser:"\uD544\uB4DC \uC120\uD0DD\uAE30\u2026",bestFit:"\uB108\uBE44 \uC790\uB3D9 \uB9DE\uCDA4",bestFitAll:"\uB108\uBE44 \uC790\uB3D9 \uB9DE\uCDA4(\uBAA8\uB4E0 \uC5F4)",pinRowTop:"\uD589\uC744 \uC704\uCABD\uC5D0 \uACE0\uC815",pinRowBottom:"\uD589\uC744 \uC544\uB798\uCABD\uC5D0 \uACE0\uC815",unpinRow:"\uD589 \uACE0\uC815 \uD574\uC81C",findLabel:"\uD45C\uC5D0\uC11C \uCC3E\uAE30",findPrevious:"\uC774\uC804 \uC77C\uCE58 \uD56D\uBAA9",findNext:"\uB2E4\uC74C \uC77C\uCE58 \uD56D\uBAA9",findClose:"\uCC3E\uAE30 \uB2EB\uAE30",findCount:"{n}/{count}",findNone:"\uC77C\uCE58 \uD56D\uBAA9 \uC5C6\uC74C",renameColumn:"\uC5F4 \uC774\uB984 \uBC14\uAFB8\uAE30",fixedPosition:"\uACE0\uC815 \uC704\uCE58 \uC124\uC815",pinLeft:"\uC67C\uCABD",pinRight:"\uC624\uB978\uCABD",pinSticky:"\uACE0\uC815",unpin:"\uACE0\uC815 \uD574\uC81C",moveLeft:"\uC67C\uCABD\uC73C\uB85C \uC774\uB3D9",moveRight:"\uC624\uB978\uCABD\uC73C\uB85C \uC774\uB3D9",filterPlaceholder:"\uD544\uD130\u2026",filterColumnAria:"{column} \uD544\uD130",filterOperatorDefault:"\uAE30\uBCF8\uAC12",filterOperatorAria:"{column} \uD544\uD130 \uC5F0\uC0B0\uC790",filterSelectAll:"\uBAA8\uB450 \uC120\uD0DD",filterBlank:"(\uBE44\uC5B4 \uC788\uC74C)",filterNonBlank:"(\uBE44\uC5B4 \uC788\uC9C0 \uC54A\uC74C)",filterEmptyText:"(\uBE48 \uD14D\uC2A4\uD2B8)",filterSpace:"(\uACF5\uBC31 1\uAC1C)",filterSpaces:"(\uACF5\uBC31 {n}\uAC1C)",filterNoMatch:"\uC77C\uCE58\uD558\uB294 \uAC12\uC774 \uC5C6\uC2B5\uB2C8\uB2E4",filterLoading:"\uAC12\uC744 \uBD88\uB7EC\uC624\uB294 \uC911\u2026",filterTruncated:"\uCC98\uC74C \uAC12\uB9CC \uD45C\uC2DC\uB429\uB2C8\uB2E4 \u2014 \uB098\uBA38\uC9C0\uB294 \uAC80\uC0C9\uD574 \uC8FC\uC138\uC694.",filterRemove:"\uD544\uD130 \uC81C\uAC70",filterToggle:"\uD544\uD130 \uC801\uC6A9",filterEditBuilder:"\uD544\uD130 \uD3B8\uC9D1",filterNone:"\uD544\uD130 \uC5C6\uC74C",filterActive:"\uD544\uD130 \uC801\uC6A9 \uC911",opEquals:"\uAC19\uC74C",opNotEquals:"\uAC19\uC9C0 \uC54A\uC74C",opGreater:">",opGreaterOrEqual:"\u2265",opLess:"<",opLessOrEqual:"\u2264",opContains:"\uD3EC\uD568",opNotContains:"\uD3EC\uD568\uD558\uC9C0 \uC54A\uC74C",opStartsWith:"(\uC73C)\uB85C \uC2DC\uC791",opEndsWith:"(\uC73C)\uB85C \uB05D\uB0A8",opIsBlank:"\uBE44\uC5B4 \uC788\uC74C",opIsNotBlank:"\uBE44\uC5B4 \uC788\uC9C0 \uC54A\uC74C",opIsOneOf:"\uB2E4\uC74C \uC911 \uD558\uB098",opIsBetween:"\uC0AC\uC774",opValuesCount:"\uAC12 {n}\uAC1C",opInPeriod:"\uAE30\uAC04 \uB0B4",periodToday:"\uC624\uB298",periodYesterday:"\uC5B4\uC81C",periodTomorrow:"\uB0B4\uC77C",periodThisWeek:"\uC774\uBC88 \uC8FC",periodLastWeek:"\uC9C0\uB09C\uC8FC",periodNextWeek:"\uB2E4\uC74C \uC8FC",periodThisMonth:"\uC774\uBC88 \uB2EC",periodLastMonth:"\uC9C0\uB09C\uB2EC",periodNextMonth:"\uB2E4\uC74C \uB2EC",periodThisQuarter:"\uC774\uBC88 \uBD84\uAE30",periodLastQuarter:"\uC9C0\uB09C \uBD84\uAE30",periodNextQuarter:"\uB2E4\uC74C \uBD84\uAE30",periodThisYear:"\uC62C\uD574",periodLastYear:"\uC791\uB144",periodNextYear:"\uB0B4\uB144",periodYearToDate:"\uC5F0\uCD08\uBD80\uD130 \uC624\uB298\uAE4C\uC9C0",periodLastDays:"\uCD5C\uADFC {n}\uC77C",periodNextDays:"\uC55E\uC73C\uB85C {n}\uC77C",filterAnd:"\uADF8\uB9AC\uACE0 (And)",filterOr:"\uB610\uB294 (Or)",builderTitle:"\uD544\uD130 \uC791\uC131\uAE30",builderCombine:"\uC870\uAC74 \uACB0\uD569 \uBC29\uC2DD",builderAddCondition:"\uC870\uAC74 \uCD94\uAC00",builderAddGroup:"\uADF8\uB8F9 \uCD94\uAC00",builderRemoveGroup:"\uADF8\uB8F9 \uC81C\uAC70",builderRemoveCondition:"\uC870\uAC74 \uC81C\uAC70",builderEmpty:"\uC544\uC9C1 \uC870\uAC74\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",builderColumn:"\uC5F4",builderOperator:"\uC5F0\uC0B0\uC790",builderValue:"\uAC12",builderValueFrom:"\uC2DC\uC791",builderValueTo:"\uB05D",builderValuePlaceholder:"\uAC12\uC744 \uC785\uB825\uD558\uC138\uC694",builderOpen:"\uD544\uD130 \uBE4C\uB354\u2026",builderClearAll:"\uBAA8\uB450 \uC9C0\uC6B0\uAE30",builderConditionButton:"+ \uC870\uAC74",builderGroupButton:"+ \uADF8\uB8F9",builderTrue:"\uCC38",builderFalse:"\uAC70\uC9D3",builderPeriod:"\uAE30\uAC04",builderDays:"\uC77C\uC218",filterCustom:"(\uC0AC\uC6A9\uC790 \uC9C0\uC815\u2026)",filterPopupAria:"{column} \uD544\uD130",importOpen:"\uAC00\uC838\uC624\uAE30\u2026",groupPanelHint:"\uADF8\uB8F9\uD654\uD560 \uC5F4\uC744 \uC5EC\uAE30\uB85C \uB04C\uC5B4 \uB193\uC73C\uC138\uC694",groupAddLevel:"\uADF8\uB8F9\uD654 \uC218\uC900 \uCD94\uAC00",groupAddLevelButton:"+ \uC218\uC900 \uCD94\uAC00\u2026",groupNoGrouping:"(\uADF8\uB8F9\uD654 \uC5C6\uC74C)",groupLevelAria:"\uADF8\uB8F9\uD654 \uC218\uC900 {n}",groupRemoveAria:"{column} \uC81C\uAC70",groupExpandAll:"\uBAA8\uB450 \uD655\uC7A5",groupCollapseAll:"\uBAA8\uB450 \uCD95\uC18C",pagerFirst:"\uCCAB \uD398\uC774\uC9C0",pagerPrevious:"\uC774\uC804 \uD398\uC774\uC9C0",pagerNext:"\uB2E4\uC74C \uD398\uC774\uC9C0",pagerLast:"\uB9C8\uC9C0\uB9C9 \uD398\uC774\uC9C0",pagerPage:"\uD398\uC774\uC9C0",pagerOf:"/",pagerRowsPerPage:"\uD398\uC774\uC9C0\uB2F9 \uD589 \uC218",pagerAria:"\uD398\uC774\uC9C0 \uB9E4\uAE40",pagerPageButton:"{n}\uD398\uC774\uC9C0",selectAllRows:"\uBAA8\uB4E0 \uD589 \uC120\uD0DD",selectRowAria:"{row}\uD589 \uC120\uD0DD",selectGroupAria:"{group}\uC758 {count}\uAC1C \uD589 \uC120\uD0DD",summaryAria:"\uC694\uC57D",columnTotalsAria:"\uC5F4 \uD569\uACC4",rowActions:"\uD589 \uC791\uC5C5",detailsAria:"\uC138\uBD80 \uC815\uBCF4",rowNumberAria:"\uD589 \uBC88\uD638",noteEditorAria:"\uC140 \uBA54\uBAA8",notePlaceholder:"\uC774 \uC140\uC5D0 \uB300\uD55C \uBA54\uBAA8 \uC791\uC131\u2026",addNote:"\uBA54\uBAA8 \uCD94\uAC00\u2026",editNote:"\uBA54\uBAA8 \uD3B8\uC9D1\u2026",deleteNote:"\uBA54\uBAA8 \uC0AD\uC81C",expandDetails:"\uC138\uBD80 \uC815\uBCF4 \uD655\uC7A5",collapseDetails:"\uC138\uBD80 \uC815\uBCF4 \uCD95\uC18C",expandTreeRow:"\uD589 \uD3BC\uCE58\uAE30",collapseTreeRow:"\uD589 \uC811\uAE30",expandColumnGroup:"\uC5F4 \uADF8\uB8F9 \uD3BC\uCE58\uAE30",collapseColumnGroup:"\uC5F4 \uADF8\uB8F9 \uC811\uAE30",dragToReorder:"\uB04C\uC5B4\uC11C \uC21C\uC11C \uBCC0\uACBD",menuCopy:"\uBCF5\uC0AC",menuCopyWithHeaders:"\uBA38\uB9AC\uAE00 \uD3EC\uD568 \uBCF5\uC0AC",menuCopyWithGroupHeaders:"\uADF8\uB8F9 \uBA38\uB9AC\uAE00 \uD3EC\uD568 \uBCF5\uC0AC",menuCut:"\uC798\uB77C\uB0B4\uAE30",menuPaste:"\uBD99\uC5EC\uB123\uAE30",menuExport:"\uB0B4\uBCF4\uB0B4\uAE30",menuChartRange:"\uC120\uD0DD\uD55C \uC140 \uCC28\uD2B8",statsSum:"\uD569\uACC4",statsCount:"\uAC1C\uC218",statsAvg:"\uD3C9\uADE0",statsMin:"\uCD5C\uC18C",statsMax:"\uCD5C\uB300",statsCells:"\uC140",statsTooLarge:"\uC120\uD0DD \uBC94\uC704\uAC00 \uB108\uBB34 \uCEE4\uC11C \uD569\uACC4\uB97C \uB0BC \uC218 \uC5C6\uC2B5\uB2C8\uB2E4",statusRows:"\uD589",statusFiltered:"\uD544\uD130\uB428",statusSelected:"\uC120\uD0DD\uB428",summaryRows:"\uD589",announceRows:"{n}\uAC1C \uD589",announceSortedBy:"{columns} \uAE30\uC900 \uC815\uB82C",announceSelected:"{n}\uAC1C \uC120\uD0DD\uB428",announceAscending:"\uC624\uB984\uCC28\uC21C",announceDescending:"\uB0B4\uB9BC\uCC28\uC21C",sideFilters:"\uD544\uD130",sideBarAria:"\uB3C4\uAD6C \uD328\uB110",sideClearFilters:"\uBAA8\uB4E0 \uD544\uD130 \uC9C0\uC6B0\uAE30",summarySum:"\uD569\uACC4",summaryAvg:"\uD3C9\uADE0",summaryMin:"\uCD5C\uC18C",summaryMax:"\uCD5C\uB300",summaryCount:"\uAC1C\uC218",summaryDistinct:"\uACE0\uC720 \uAC1C\uC218",summaryCustom:"\uC0AC\uC6A9\uC790 \uC9C0\uC815",noTotal:"\uD569\uACC4 \uC5C6\uC74C",busy:"\uCC98\uB9AC \uC911\u2026",busyLoading:"\uD589\uC744 \uBD88\uB7EC\uC624\uB294 \uC911\u2026",rowsLoadFailed:"\uC774 \uD589\uC744 \uBD88\uB7EC\uC624\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.",retryLoad:"\uB2E4\uC2DC \uC2DC\uB3C4",busyEncoding:"\uB370\uC774\uD130\uB97C \uC900\uBE44\uD558\uB294 \uC911\u2026",busyFiltering:"\uD589\uC744 \uD544\uD130\uB9C1\uD558\uB294 \uC911\u2026",busySorting:"\uD589\uC744 \uC815\uB82C\uD558\uB294 \uC911\u2026",busyComputing:"\uD544\uD130\uB9C1 \uBC0F \uC815\uB82C \uC911\u2026",busyGrouping:"\uADF8\uB8F9\uC744 \uB9CC\uB4DC\uB294 \uC911\u2026",busyAggregating:"\uD569\uACC4\uB97C \uACC4\uC0B0\uD558\uB294 \uC911\u2026",busyProjecting:"\uBCF4\uAE30\uB97C \uC5C5\uB370\uC774\uD2B8\uD558\uB294 \uC911\u2026",busyExporting:"\uD30C\uC77C\uC744 \uB9CC\uB4DC\uB294 \uC911\u2026",noData:"\uB370\uC774\uD130\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4",editNewRow:"\uC0C8 \uD589",editSaveChanges:"\uBCC0\uACBD \uB0B4\uC6A9 \uC800\uC7A5",editDiscardChanges:"\uBCC0\uACBD \uB0B4\uC6A9 \uCDE8\uC18C",editRow:"\uD589 \uD3B8\uC9D1",editRowMenu:"\uD589 \uD3B8\uC9D1\u2026",editDeleteRow:"\uD589 \uC0AD\uC81C",editUndoDelete:"\uC0AD\uC81C \uCDE8\uC18C",editActions:"\uC791\uC5C5",editSaveRow:"\uD589 \uC800\uC7A5",editSaving:"\uC800\uC7A5 \uC911\u2026",editEditingRow:"{row}\uD589 \uD3B8\uC9D1 \uC911",editSaveCount:"{n}\uAC1C \uD589 \uC800\uC7A5",editCannotSave:"\uC800\uC7A5\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4",editSaveFailed:"\uBCC0\uACBD \uB0B4\uC6A9\uC744 \uC800\uC7A5\uD558\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.",rowStatusChanged:"\uC800\uC7A5\uB418\uC9C0 \uC54A\uC740 \uBCC0\uACBD \uB0B4\uC6A9",rowStatusSaving:"\uC800\uC7A5 \uC911\u2026",rowStatusSaved:"\uC800\uC7A5\uB428",rowStatusError:"\uC800\uC7A5 \uC2E4\uD328",rowStatusRetry:"\uB2E4\uC2DC \uC2DC\uB3C4",rowStatusDelete:"\uD589 \uC0AD\uC81C",editDeleteConfirm:"\uC774 \uD589\uC744 \uC0AD\uC81C\uD560\uAE4C\uC694?",editAddRowUndo:"\uD589 \uCD94\uAC00",editDeleteRowUndo:"\uD589 \uC0AD\uC81C",editCellUndo:"{column} \uD3B8\uC9D1",editFillUndo:"{count}\uAC1C \uC140 \uCC44\uC6B0\uAE30",editPasteUndo:"{count}\uAC1C \uC140 \uBD99\uC5EC\uB123\uAE30",editCutUndo:"{count}\uAC1C \uC140 \uC798\uB77C\uB0B4\uAE30",editGroupTotal:"\uADF8\uB8F9 \uD569\uACC4",editGroupTotalUndo:"{column} \uD569\uACC4 \uBCC0\uACBD({count}\uAC1C \uD589)",editNoMatch:"\uC77C\uCE58 \uD56D\uBAA9 \uC5C6\uC74C",formEditTitle:"\uD589 \uD3B8\uC9D1",formAddTitle:"\uC0C8 \uD589",formShortcut:"{key}+Enter\uB85C \uC800\uC7A5 \xB7 Esc\uB85C \uCDE8\uC18C",validationRequired:"\uD544\uC218 \uD56D\uBAA9\uC785\uB2C8\uB2E4",validationNumber:"\uC22B\uC790\uC5EC\uC57C \uD569\uB2C8\uB2E4",validationFormat:"\uD615\uC2DD\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4",validationEmail:"\uC774\uBA54\uC77C \uC8FC\uC18C\uAC00 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4",validationInvalid:"\uAC12\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4",dateCalendar:"\uB2EC\uB825",dateOpenCalendar:"\uB2EC\uB825 \uC5F4\uAE30",datePreviousMonth:"\uC774\uC804 \uB2EC",dateNextMonth:"\uB2E4\uC74C \uB2EC",monthJanuary:"1\uC6D4",monthFebruary:"2\uC6D4",monthMarch:"3\uC6D4",monthApril:"4\uC6D4",monthMay:"5\uC6D4",monthJune:"6\uC6D4",monthJuly:"7\uC6D4",monthAugust:"8\uC6D4",monthSeptember:"9\uC6D4",monthOctober:"10\uC6D4",monthNovember:"11\uC6D4",monthDecember:"12\uC6D4",weekStartsOn:"0",weekdaySu:"\uC77C",weekdayMo:"\uC6D4",weekdayTu:"\uD654",weekdayWe:"\uC218",weekdayTh:"\uBAA9",weekdayFr:"\uAE08",weekdaySa:"\uD1A0",importTitle:"\uB370\uC774\uD130 \uAC00\uC838\uC624\uAE30",importStepSource:"1. \uC6D0\uBCF8",importStepMap:"2. \uC5F4 \uB9E4\uD551",importFile:"CSV \uD30C\uC77C",importPaste:"\u2026\uB610\uB294 \uD589 \uBD99\uC5EC\uB123\uAE30",importSeparator:"\uAD6C\uBD84 \uAE30\uD638",importSeparatorAuto:"\uC790\uB3D9 \uAC10\uC9C0",importSeparatorComma:"\uC27C\uD45C ,",importSeparatorSemicolon:"\uC138\uBBF8\uCF5C\uB860 ;",importSeparatorTab:"\uD0ED",importSeparatorPipe:"\uD30C\uC774\uD504 |",importFileColumn:"\uD30C\uC77C \uC5F4",importDetected:"\uAC10\uC9C0\uB428",importGridColumn:"\uADF8\uB9AC\uB4DC \uC5F4",importSample:"\uC608\uC2DC",importSkip:"\u2014 \uAC74\uB108\uB6F0\uAE30 \u2014",importPreview:"\uBBF8\uB9AC \uBCF4\uAE30",importNoSource:"\uBA3C\uC800 \uD30C\uC77C\uC744 \uC120\uD0DD\uD558\uAC70\uB098 \uD589\uC744 \uBD99\uC5EC\uB123\uC73C\uC138\uC694.",importNoRows:"\uB370\uC774\uD130 \uD589\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.",importAction:"\uAC00\uC838\uC624\uAE30",exportAborted:"\uB0B4\uBCF4\uB0B4\uAE30\uAC00 \uC911\uB2E8\uB418\uC5C8\uC2B5\uB2C8\uB2E4",exportSheetName:"\uB370\uC774\uD130",chart:"\uCC28\uD2B8",chartCategory:"\uBC94\uC8FC",chartSeries:"\uACC4\uC5F4",chartAddSeries:"\uACC4\uC5F4 \uCD94\uAC00",chartRemoveSeries:"\uC81C\uAC70",chartSource:"\uB370\uC774\uD130",chartSourceView:"\uD544\uD130\uB9C1\uB41C \uD589",chartSourceSelection:"\uC120\uD0DD\uD55C \uD589",chartSourceAll:"\uBAA8\uB4E0 \uD589",chartSourceRange:"\uC120\uD0DD\uD55C \uBC94\uC704({from}\u2013{to}\uD589)",chartClose:"\uCC28\uD2B8 \uB2EB\uAE30",chartFullscreen:"\uC804\uCCB4 \uD654\uBA74",chartExitFullscreen:"\uC804\uCCB4 \uD654\uBA74 \uC885\uB8CC",chartFloat:"\uCC3D\uC73C\uB85C \uBD84\uB9AC",chartDock:"\uB3C4\uD0B9",chartNewWindow:"\uC0C8 \uCC3D",chartMoveWindow:"\uCC28\uD2B8 \uCC3D \uC774\uB3D9",chartResizeWindow:"\uCC28\uD2B8 \uCC3D \uD06C\uAE30 \uC870\uC815",chartResizeDock:"\uB4DC\uB798\uADF8\uD558\uC5EC \uCC28\uD2B8 \uB192\uC774 \uBCC0\uACBD",chartSwitch:"\uBC94\uC8FC\uC640 \uACC4\uC5F4 \uBC14\uAFB8\uAE30",chartUnlink:"\uC5F0\uACB0 \uD574\uC81C",chartLink:"\uC5F0\uACB0",chartUnlinked:"\uC5F0\uACB0 \uD574\uC81C\uB428: \uCC28\uD2B8\uB294 \uB370\uC774\uD130\uB97C \uC720\uC9C0\uD558\uBA70 \uB354 \uC774\uC0C1 \uADF8\uB9AC\uB4DC\uB97C \uB530\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.",chartExportPng:"PNG",chartExportSvg:"SVG",chartExportFailed:"\uCC28\uD2B8\uB97C \uB0B4\uBCF4\uB0B4\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.",chartCrossFiltered:"\uADF8\uB9AC\uB4DC\uAC00 {value}(\uC73C)\uB85C \uD544\uD130\uB9C1\uB418\uC5C8\uC2B5\uB2C8\uB2E4.",chartBlankCategory:"(\uBE44\uC5B4 \uC788\uC74C)",chartTruncated:"\uC0C1\uC704 {n}\uAC1C \uBC94\uC8FC\uB97C \uD45C\uC2DC\uD569\uB2C8\uB2E4. \uB098\uBA38\uC9C0\uB294 \u201C\uAE30\uD0C0\u201D\uB85C \uBB36\uC600\uC2B5\uB2C8\uB2E4.",chartOther:"\uAE30\uD0C0",chartEmpty:"\uC544\uC9C1 \uD45C\uC2DC\uD560 \uB0B4\uC6A9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",chartNoVisibleSeries:"\uD45C\uC2DC\uB41C \uACC4\uC5F4\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",chartNeedsMoreSeries:"\uC774 \uCC28\uD2B8 \uC720\uD615\uC5D0\uB294 \uAC12 \uC5F4\uC774 \uB450 \uAC1C \uC774\uC0C1 \uD544\uC694\uD569\uB2C8\uB2E4(\uC608: \uCD5C\uC19F\uAC12\uACFC \uCD5C\uB313\uAC12). \uB450 \uBC88\uC9F8 \uACC4\uC5F4\uC744 \uCD94\uAC00\uD558\uC138\uC694.",chartLoading:"\uBD88\uB7EC\uC624\uB294 \uC911\u2026",chartNeedsRecharts:"\uCC28\uD2B8\uC5D0\uB294 \uC120\uD0DD \uD328\uD0A4\uC9C0 `recharts`\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4. \uC124\uCE58\uD55C \uB4A4 \uC0AC\uC6A9\uD558\uC138\uC694.",chartOnlyOneSeries:"\uC774 \uCC28\uD2B8 \uC720\uD615\uC740 \uACC4\uC5F4 \uD558\uB098\uB9CC \uD45C\uC2DC\uD569\uB2C8\uB2E4.",chartByColumn:"\uC774 \uC5F4\uB85C \uCC28\uD2B8 \uB9CC\uB4E4\uAE30",chartGroupBy:"\uAE30\uC900",chartGroupNone:"\uAC01 \uAC12",chartGroupAuto:"\uC790\uB3D9",chartGroupDay:"\uC77C",chartGroupWeek:"\uC8FC",chartGroupMonth:"\uC6D4",chartGroupQuarter:"\uBD84\uAE30",chartGroupYear:"\uC5F0\uB3C4",chartGroupBins:"\uAD6C\uAC04 {n}\uAC1C",chartBucketAdjusted:"\uCD95 \uD558\uB098\uC5D0 \uD45C\uC2DC\uD558\uAE30\uC5D0 \uAD6C\uAC04\uC774 \uB108\uBB34 \uB9CE\uC544 \uB354 \uD06C\uAC8C \uBB36\uC5C8\uC2B5\uB2C8\uB2E4.",chartWindowed:"{total}\uAC1C \uC911 {shown}\uAC1C\uB97C \uD45C\uC2DC\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4.",chartShowAll:"\uBAA8\uB450 \uD45C\uC2DC",chartCanvasHint:"\uCC28\uD2B8. \uC2A4\uD06C\uB864\uD558\uC5EC \uD655\uB300/\uCD95\uC18C, \uB04C\uC5B4\uC11C \uC774\uB3D9, \uD654\uC0B4\uD45C \uD0A4\uB85C \uC774\uB3D9, 0\uC744 \uB20C\uB7EC \uC804\uCCB4 \uBCF4\uAE30.",chartCanvasHintPick:"\uCC28\uD2B8. \uD654\uC0B4\uD45C \uD0A4\uB85C \uBC94\uC8FC\uB97C \uACE0\uB974\uACE0 Enter \uB610\uB294 Space\uB85C \uADF8 \uBC94\uC8FC\uB85C \uD45C\uB97C \uD544\uD130\uB9C1\uD569\uB2C8\uB2E4(Ctrl\uB85C \uCD94\uAC00). +\uC640 \u2212\uB85C \uD655\uB300\xB7\uCD95\uC18C, 0\uC73C\uB85C \uC804\uCCB4 \uBCF4\uAE30.",chartCategoryFocus:"{category}: {values} \u2014 {count}\uAC1C \uC911 {position}\uBC88\uC9F8",chartCategoryFiltered:"\uD45C\uB97C \uD544\uD130\uB9C1\uD558\uB294 \uC911",chartAggSum:"\uD569\uACC4",chartAggAvg:"\uD3C9\uADE0",chartAggMin:"\uCD5C\uC18C",chartAggMax:"\uCD5C\uB300",chartAggCount:"\uAC1C\uC218",chartAggDistinct:"\uACE0\uC720 \uAC1C\uC218",chartAggFirst:"\uCCAB \uAC12",chartAggLast:"\uB9C8\uC9C0\uB9C9 \uAC12",chartTypeColumn:"\uC138\uB85C \uB9C9\uB300",chartTypeBar:"\uAC00\uB85C \uB9C9\uB300",chartTypeLine:"\uC120",chartTypeArea:"\uC601\uC5ED",chartTypePie:"\uC6D0",chartTypeDonut:"\uB3C4\uB11B",chartStacking:"\uACC4\uC5F4 \uBC30\uCE58",chartStackGrouped:"\uBB36\uC740",chartStackStacked:"\uB204\uC801",chartStackNormalized:"100% \uB204\uC801",chartFormat:"\uC11C\uC2DD",chartFormatTitle:"\uC81C\uBAA9",chartFormatCategoryAxis:"\uBC94\uC8FC \uCD95 \uC81C\uBAA9",chartFormatValueAxis:"\uAC12 \uCD95 \uC81C\uBAA9",chartFormatLegend:"\uBC94\uB840",chartLegendTop:"\uC704\uCABD",chartLegendBottom:"\uC544\uB798\uCABD",chartLegendLeft:"\uC67C\uCABD",chartLegendRight:"\uC624\uB978\uCABD",chartLegendNone:"\uC228\uAE40",chartFormatDataLabels:"\uB370\uC774\uD130 \uB808\uC774\uBE14",chartFormatScale:"\uAC12 \uB208\uAE08",chartScaleLinear:"\uC120\uD615",chartScaleLog:"\uB85C\uADF8",chartFormatTextSize:"\uAE00\uC790 \uD06C\uAE30",chartFormatTextColor:"\uAE00\uC790 \uC0C9",chartFormatDefault:"\uAE30\uBCF8\uAC12",chartFormatLabelAngle:"\uD56D\uBAA9 \uB808\uC774\uBE14",chartAngleAuto:"\uC790\uB3D9",chartAngleFlat:"\uAC00\uB85C",chartFormatGridLines:"\uB208\uAE08\uC120",chartGridValue:"\uAC12 \uCD95",chartGridBoth:"\uB450 \uCD95 \uBAA8\uB450",chartGridNone:"\uC5C6\uC74C",chartFormatGridDashed:"\uC810\uC120 \uB208\uAE08\uC120",chartFormatLineWidth:"\uC120 \uAD75\uAE30",chartFormatLineDashed:"\uC810\uC120",chartFormatFillOpacity:"\uCC44\uC6B0\uAE30 \uBD88\uD22C\uBA85\uB3C4",chartFormatDateFormat:"\uB0A0\uC9DC \uD615\uC2DD",chartFormatPalette:"\uC0C9\uC0C1",chartPaletteTheme:"\uD14C\uB9C8",chartPaletteClassic:"\uD074\uB798\uC2DD",chartPaletteColorblind:"\uC0C9\uAC01 \uC774\uC0C1 \uBC30\uB824",chartPaletteVivid:"\uC120\uBA85\uD558\uAC8C",chartPaletteMonochrome:"\uB2E8\uC0C9",sparklineSummary:"\uAC12 {count}\uAC1C, {min}\uBD80\uD130 {max}\uAE4C\uC9C0, \uB9C8\uC9C0\uB9C9 {last}",chartTypeWaterfall:"\uD3ED\uD3EC",chartTypeFunnel:"\uAE54\uB54C\uAE30\uD615",chartTypeTreemap:"\uD2B8\uB9AC\uB9F5",chartTypeHeatmap:"\uD788\uD2B8\uB9F5",chartTypeBox:"\uC0C1\uC790 \uADF8\uB9BC",chartTypeRadar:"\uBC29\uC0AC\uD615",chartTypeRangeBar:"\uBC94\uC704",chartBoxQ1:"Q1",chartBoxMedian:"\uC911\uC559\uAC12",chartBoxQ3:"Q3",chartBoxOutlier:"\uC774\uC0C1\uAC12",chartTotal:"\uD569\uACC4",chartTypeScatter:"\uBD84\uC0B0\uD615",chartTypeBubble:"\uAC70\uD488\uD615",chartXAxis:"X\uCD95",chartBubbleSize:"\uD06C\uAE30",chartXYSampled:"{total}\uAC1C \uC911 {shown}\uAC1C \uC810, \uADE0\uB4F1 \uD45C\uBCF8",licenseMissing:"\uB77C\uC774\uC120\uC2A4 \uC5C6\uC74C",licenseExpired:"\uB77C\uC774\uC120\uC2A4\uAC00 \uB9CC\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4",licenseReleaseNotCovered:"\uC774 \uBC84\uC804\uC740 \uB77C\uC774\uC120\uC2A4 \uC801\uC6A9 \uB300\uC0C1\uC774 \uC544\uB2D9\uB2C8\uB2E4",licenseDomainMismatch:"\uC774 \uB3C4\uBA54\uC778\uC5D0\uC11C\uB294 \uB77C\uC774\uC120\uC2A4\uAC00 \uC720\uD6A8\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4",licenseRevoked:"\uB77C\uC774\uC120\uC2A4\uAC00 \uCDE8\uC18C\uB418\uC5C8\uC2B5\uB2C8\uB2E4",licenseInvalidFormat:"\uB77C\uC774\uC120\uC2A4 \uD0A4 \uD615\uC2DD\uC774 \uC798\uBABB\uB418\uC5C8\uC2B5\uB2C8\uB2E4",licenseInvalidSignature:"\uB77C\uC774\uC120\uC2A4 \uC11C\uBA85\uC774 \uC720\uD6A8\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4",licenseEngineUnavailable:"\uBE0C\uB77C\uC6B0\uC800\uC5D0\uC11C \uB77C\uC774\uC120\uC2A4\uB97C \uD655\uC778\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4(HTTPS \uD544\uC694)",calcAdd:"\uACC4\uC0B0 \uC5F4 \uCD94\uAC00\u2026",calcEdit:"\uACC4\uC0B0 \uC5F4 \uD3B8\uC9D1\u2026",calcRemove:"\uACC4\uC0B0 \uC5F4 \uC81C\uAC70",calcTitleAdd:"\uACC4\uC0B0 \uC5F4 \uCD94\uAC00",calcTitleEdit:"\uACC4\uC0B0 \uC5F4 \uD3B8\uC9D1",calcName:"\uC774\uB984",calcFormula:"\uC218\uC2DD",calcFormulaHint:"\uC5F4\uC740 [\uC774\uB984]\uC73C\uB85C \uC501\uB2C8\uB2E4. \uC608: [\uAC00\uACA9] * [\uC218\uB7C9]",calcColumns:"\uC5F4",calcFunctions:"\uD568\uC218",calcPreview:"\uBBF8\uB9AC \uBCF4\uAE30",calcPreviewEmpty:"\uBBF8\uB9AC \uBCFC \uD589\uC774 \uC5C6\uC2B5\uB2C8\uB2E4",calcErrorAt:"{message} ({position}\uBC88\uC9F8 \uBB38\uC790)",calcAddButton:"\uCD94\uAC00",calcArgsAtLeast:"{min}\uAC1C \uC774\uC0C1",formulaError_empty:"\uC218\uC2DD\uC744 \uC785\uB825\uD558\uC138\uC694",formulaError_unclosedText:'\uD14D\uC2A4\uD2B8\uAC00 \uB2EB\uD788\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4: " \uAC00 \uC5C6\uC2B5\uB2C8\uB2E4',formulaError_unclosedColumn:"\uC5F4 \uC774\uB984\uC774 \uB2EB\uD788\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4: ] \uAC00 \uC5C6\uC2B5\uB2C8\uB2E4",formulaError_emptyColumn:"\uBE48 \uC5F4 \uC774\uB984 []",formulaError_unexpectedChar:"\uC608\uAE30\uCE58 \uC54A\uC740 \uBB38\uC790 {text}",formulaError_expected:"{text} \uAC00 \uC5C6\uC2B5\uB2C8\uB2E4",formulaError_cellAfterColon:'":" \uB4A4\uC5D0 \uC140\uC774 \uC5C6\uC2B5\uB2C8\uB2E4',formulaError_unknownName:"\uC54C \uC218 \uC5C6\uB294 \uC774\uB984 {name} \u2014 \uC5F4\uC740 [{name}]\uC73C\uB85C \uC501\uB2C8\uB2E4",formulaError_unexpected:"\uC608\uAE30\uCE58 \uC54A\uC740 {text}",formulaError_endsEarly:"\uC218\uC2DD\uC774 \uB108\uBB34 \uC77C\uCC0D \uB05D\uB0A9\uB2C8\uB2E4",formulaError_trailing:"\uB05D\uC5D0 \uC608\uAE30\uCE58 \uC54A\uC740 \uD14D\uC2A4\uD2B8\uAC00 \uC788\uC2B5\uB2C8\uB2E4",formulaError_unknownColumn:"[{name}] \uC5F4\uC774 \uC5C6\uC2B5\uB2C8\uB2E4",formulaError_unknownFunction:"\uC54C \uC218 \uC5C6\uB294 \uD568\uC218 {name}",formulaError_argCount:"{name}\uC758 \uC778\uC218\uB294 {range}\uAC1C\uC785\uB2C8\uB2E4",formulaError_cellsNotAllowed:"A1 \uAC19\uC740 \uC140 \uCC38\uC870\uB294 \uC5EC\uAE30\uC11C \uC4F0\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4 \u2014 \uC5F4\uC740 [\uC774\uB984]\uC73C\uB85C \uC501\uB2C8\uB2E4"};function Et(e,t){let u=e;for(let[r,n]of Object.entries(t))u=u.replace(`{${r}}`,String(n));return u}var om={tr:Yh,en:ti,de:Qh,fr:Xh,es:Zh,it:Jh,pt:em,ru:tm,ar:um,"zh-CN":rm,ja:nm,ko:am};function pu(e,t){return Ch(om,ti,e,t)}var ct={valid:!0,message:null},im=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;function Ar(e){return e==null||e===""}function Dt(e,t){return{valid:!1,message:e.message??t}}function lm(e,t){let{value:u}=t,r=t.messages??pu("en");switch(e.type){case"required":return Ar(u)?Dt(e,r.validationRequired):ct;case"range":{if(Ar(u))return ct;let n=typeof u=="number"?u:Number(u);return Number.isNaN(n)?Dt(e,r.validationNumber):e.min!==void 0&&n<e.min?Dt(e,`Must be at least ${e.min}`):e.max!==void 0&&n>e.max?Dt(e,`Must be at most ${e.max}`):ct}case"stringLength":{if(Ar(u))return ct;let n=String(u).length;return e.min!==void 0&&n<e.min?Dt(e,`Must be at least ${e.min} characters`):e.max!==void 0&&n>e.max?Dt(e,`Must be at most ${e.max} characters`):ct}case"pattern":return Ar(u)||(typeof e.pattern=="string"?new RegExp(e.pattern):e.pattern).test(String(u))?ct:Dt(e,r.validationFormat);case"email":return Ar(u)||im.test(String(u))?ct:Dt(e,r.validationEmail);case"custom":{let n=e.validate(t);return n===!0?ct:typeof n=="string"?{valid:!1,message:n}:Dt(e,r.validationInvalid)}case"asyncCustom":return ct;default:return ct}}function Qu(e,t){if(!t||t.length===0)return ct;for(let u of t){let r=lm(u,e);if(!r.valid)return r}return ct}async function sm(e,t){let u=Qu(e,t);if(!u.valid||!t)return u;let r=e.messages??pu("en");for(let n of t){if(n.type!=="asyncCustom")continue;let a=await n.validate(e);if(a!==!0)return typeof a=="string"?{valid:!1,message:a}:Dt(n,r.validationInvalid)}return ct}var dm={get:()=>{},keys:()=>[]};function cm(e){if(!e)return dm;if(e instanceof Map){let u=e;return{get:r=>{if(u.has(r))return String(u.get(r));let n=Number(r);return r!==""&&Number.isFinite(n)&&u.has(n)?String(u.get(n)):void 0},keys:()=>Array.from(u.keys(),r=>String(r))}}let t=e;return{get:u=>Object.prototype.hasOwnProperty.call(t,u)?String(t[u]):void 0,keys:()=>Object.keys(t)}}function H0(e){if(!e)return null;let t=e===!0?{}:e,u=t.savedDuration;return{tint:t.tint===!0,icons:t.icons===!0,savedDuration:typeof u=="number"&&Number.isFinite(u)&&u>=0?u:1500,get:t.get,messages:t.messages===!0,errors:cm(t.errors),onRetry:t.onRetry,onDelete:t.onDelete}}var hm=new Set(["changed","saving","saved","error"]);function V0(e,t,u,r){if(!e)return null;if(e.get&&t!==void 0){let o=e.get({row:t,rowKey:u});if(o!==void 0)return o==="error"?{status:o,error:e.errors.get(String(u))??null}:o!==null&&hm.has(o)?{status:o,error:null}:null}let n=e.errors.get(String(u));if(n!==void 0)return{status:"error",error:n};let a=r?.getRowStatus(u)??null;return a?{status:a,error:a==="error"?r?.getRowStatusError(u)??null:null}:null}function z0(e,t){if(!e?.messages)return[];let u=new Set,r=[];for(let n of e.errors.keys())u.add(n),r.push(n);for(let n of t?.getErrorRowKeys?.()??[])u.has(String(n))||(u.add(String(n)),r.push(n));return r}function K0(e,t,u,r,n){let a=e.errors.get(String(t)),o=r?.getRowStatus(t)==="error"?r.getRowStatusError(t):null,l=a??o??"",i={rowKey:t,row:u,error:l},s=a===void 0&&o!==null?()=>{r?.saveChanges?.(t)}:e.onRetry?()=>{e.onRetry(i)}:null,h=e.onDelete?()=>{e.onDelete(i)}:null;return{text:l?`${n.rowStatusError}: ${l}`:n.rowStatusError,retry:s,remove:h,context:i}}function $0(e,t){return`kanuni-datagrid-row--status-${e}${t?" kanuni-datagrid-row--status-tint":""}`}function W0(e,t){switch(e.status){case"changed":return t.rowStatusChanged;case"saving":return t.rowStatusSaving;case"saved":return t.rowStatusSaved;default:return e.error?`${t.rowStatusError}: ${e.error}`:t.rowStatusError}}function er(e){return e==="row"||e==="form"||e==="popup"}var _0="__dg_new_",mm=/^[+-]?\d+$/;function Ss(e,t){if(typeof e!="bigint"||typeof t!="string")return t;let u=t.trim();return mm.test(u)?BigInt(u):t}var pm=0;function ks(e){return typeof e=="string"&&e.startsWith(_0)}var U0=class{changes=new qh;undoStack=new jh;session=null;rowSession=null;rowDrafts=null;mode;options;saveToken=0;saving=!1;saveQueue=Promise.resolve();savesInFlight=0;text;rowSaveState=new Map;savedDuration;savedTimers=new Set;insertedKeys=new Map;disposed=!1;constructor(e){this.options=e,this.mode=e.mode??"cell",this.text=e.messages??pu("en"),this.savedDuration=Math.max(0,e.savedDuration??1500)}getMode(){return this.mode}setMode(e){!er(e)&&this.rowSession&&this.cancelRowEdit(),this.mode=e}setMessages(e){this.text=e}isSaving(){return this.saving}getRowStatus(e){let t=this.rowSaveState.get(e);if(t?.status==="saving")return"saving";let u=this.changes.isDirty(e);return t?.status==="error"?u?"error":null:u?"changed":t?.status==="saved"?"saved":null}getErrorRowKeys(){let e=[];for(let t of this.rowSaveState.keys())this.getRowStatus(t)==="error"&&e.push(t);return e}getRowStatusError(e){return this.getRowStatus(e)!=="error"?null:this.rowSaveState.get(e)?.error??null}setSavedDuration(e){this.savedDuration=Number.isFinite(e)&&e>0?e:0,this.savedDuration===0&&this.dropSavedStatuses()&&this.notify()}dispose(){this.disposed=!0,this.dropSavedStatuses()}resume(){this.disposed=!1}dropSavedStatuses(){for(let t of this.savedTimers)clearTimeout(t);this.savedTimers.clear();let e=!1;for(let[t,u]of this.rowSaveState)u.status==="saved"&&(this.rowSaveState.delete(t),e=!0);return e}touchRow(e){let t=this.rowSaveState.get(e);!t||t.status==="saving"||this.rowSaveState.delete(e)}setRowState(e,t,u,r=null){let n={status:t,token:u,error:r};return this.rowSaveState.set(e,n),n}settleRowStatus(e,t,u){let r=[];for(let a of e){let o=this.insertedKeys.get(a.rowKey)??a.rowKey,l=this.rowSaveState.get(o);!l||l.token!==t||l.status!=="saving"||(u.saved?this.savedDuration>0&&!this.disposed&&a.type!=="remove"&&!this.changes.isDirty(o)?r.push([o,this.setRowState(o,"saved",t)]):this.rowSaveState.delete(o):this.setRowState(o,"error",t,u.error??this.text.editSaveFailed))}if(this.insertedKeys.clear(),r.length===0)return;let n=setTimeout(()=>{this.savedTimers.delete(n);let a=!1;for(let[o,l]of r)this.rowSaveState.get(o)===l&&(this.rowSaveState.delete(o),a=!0);a&&this.notify()},this.savedDuration);this.savedTimers.add(n)}getSession(){return this.session}isEditing(e,t){return this.session?e===void 0?!0:this.session.rowKey!==e?!1:t===void 0||this.session.columnId===t:!1}getRowSession(){return this.rowSession}isEditingRow(e){return this.rowSession?e===void 0||this.rowSession.rowKey===e:!1}canEditRow(e){if(!er(this.mode))return!1;if(this.rowSession)return this.rowSession.rowKey===e;if(this.changes.isRemoved(e))return!1;let t=this.options.editableColumns?.(e)??null;return t===null||t.length>0}beginRowEdit(e){if(!this.canEditRow(e))return!1;if(this.rowSession)return!0;let t=this.session;return this.session=null,t&&this.options.onEditingStopped?.({rowKey:t.rowKey,columnId:t.columnId,value:t.value,cancelled:!0}),this.rowDrafts=null,this.rowSession={rowKey:e,isNew:ks(e),errors:{},saving:!1},this.options.onRowEditingStarted?.({rowKey:e,isNew:this.rowSession.isNew}),this.notify(),!0}setRowEditValue(e,t){let u=this.rowSession;if(!u||!this.canUpdate(u.rowKey,e))return;let r=this.options.readValue(u.rowKey,e),n=Ss(r,this.parse(u.rowKey,e,t));this.rowDrafts?.rowKey!==u.rowKey&&(this.rowDrafts={rowKey:u.rowKey,values:new Map}),this.rowDrafts.values.set(e,t);let a=this.effectiveValue(u.rowKey,e);if(Object.is(a,n)){this.notify();return}let o=!0,l=(c,f,C)=>{this.options.onCellValueChanged?.({rowKey:u.rowKey,columnId:e,value:c,previousValue:f,source:C})},i=()=>{o||this.rowDrafts?.values.delete(e),this.touchRow(u.rowKey),this.changes.set(u.rowKey,e,n,r),l(n,a,o?"edit":"redo"),o=!1},s=()=>{this.rowDrafts?.values.delete(e),this.touchRow(u.rowKey),this.changes.set(u.rowKey,e,a,r),l(a,n,"undo")};i(),this.undoStack.push({label:this.text.editCellUndo.replace("{column}",e),undo:s,redo:i});let h=Qu({value:n,columnId:e,row:this.effectiveRow(u.rowKey)},this.options.rules?.[e]),m={...u.errors};h.valid?delete m[e]:m[e]=h.message??this.text.validationInvalid,this.rowSession={...u,errors:m},this.notify()}rowEditValue(e){let t=this.rowSession;if(!t)return;let u=this.rowDrafts;return u?.rowKey===t.rowKey&&u.values.has(e)?u.values.get(e):this.shownValue(t.rowKey,e)}shownValue(e,t){let u=this.effectiveValue(e,t);return this.options.formatForEdit?this.options.formatForEdit(e,t,u):u}parse(e,t,u){return this.options.parseFromEdit?this.options.parseFromEdit(e,t,u):u}validateRowEdit(e){let t=this.rowSession;if(!t)return!1;let u={},r=this.effectiveRow(t.rowKey);for(let n of e){let a=this.options.rules?.[n];if(!a?.length)continue;let o=Qu({value:this.effectiveValue(t.rowKey,n),columnId:n,row:r},a);o.valid||(u[n]=o.message??this.text.validationInvalid)}return this.rowSession={...t,errors:u},this.notify(),Object.keys(u).length===0}async saveRowEdit(e){let t=this.rowSession;if(!t)return{saved:!0,changes:[]};if(e&&!this.validateRowEdit(e)){let r=Object.values(this.rowSession?.errors??{})[0];return{saved:!1,changes:[],error:r??this.text.validationInvalid}}this.rowSession={...this.rowSession??t,saving:!0},this.notify();let u=await this.saveChanges(t.rowKey);return u.saved?(this.rowSession=null,this.rowDrafts=null,this.options.onRowEditingStopped?.({rowKey:t.rowKey,isNew:t.isNew,cancelled:!1})):this.rowSession=this.rowSession?{...this.rowSession,saving:!1}:null,this.notify(),u}cancelRowEdit(){let e=this.rowSession;e&&(this.rowSession=null,this.rowDrafts=null,this.session=null,e.isNew?(this.changes.revertRow(e.rowKey),this.options.dropRow?.(e.rowKey)):this.changes.revertRow(e.rowKey),this.options.onRowEditingStopped?.({rowKey:e.rowKey,isNew:e.isNew,cancelled:!0}),this.notify())}canUpdate(e,t){if(this.options.isColumnEditable?.(t)===!1)return!1;let u=this.options.allowUpdating;return u===void 0?!0:typeof u=="function"?u(this.options.readRow?.(e),t):u}canDelete(e){let t=this.options.allowDeleting;return t===void 0?!1:typeof t=="function"?t(this.options.readRow?.(e)):t}canAdd(){let e=this.options.allowAdding;return e===void 0?!1:typeof e=="function"?e():e}addRow(e={},t){if(!this.canAdd())return null;let u={...e};this.options.onInitNewRow?.(u);let r=`${_0}${++pm}`,n=this.options.newRowPosition??"last",a=()=>{this.changes.markInserted(r,u),this.options.insertRow?.(r,u,n,t)},o=()=>{this.changes.revertRow(r),this.options.dropRow?.(r)};if(a(),this.undoStack.push({label:this.text.editAddRowUndo,undo:o,redo:a}),er(this.mode)){let l=this.rowSession;return this.rowDrafts=null,this.rowSession={rowKey:r,isNew:!0,errors:{},saving:!1},l&&this.options.onRowEditingStopped?.({rowKey:l.rowKey,isNew:l.isNew,cancelled:!0}),this.options.onRowEditingStarted?.({rowKey:r,isNew:!0}),this.notify(),r}return this.notify(),this.mode!=="batch"&&this.autoSave(),r}removeRow(e){if(!this.canDelete(e))return!1;if(ks(e))return this.changes.revertRow(e),this.options.dropRow?.(e),this.notify(),!0;let t=()=>{this.touchRow(e),this.changes.markRemoved(e)},u=()=>{this.touchRow(e),this.changes.revertRow(e)};return t(),this.undoStack.push({label:this.text.editDeleteRowUndo,undo:u,redo:t}),this.notify(),this.mode!=="batch"&&this.autoSave(),!0}restoreRow(e){this.changes.isRemoved(e)&&(this.changes.revertRow(e),this.notify())}isRemoved(e){return this.changes.isRemoved(e)}beginEdit(e,t,u){if(!this.canUpdate(e,t)||this.rowSession||er(this.mode)||this.session&&!this.commitEdit())return!1;let r=this.shownValue(e,t),n=u!==void 0;return this.session={rowKey:e,columnId:t,initialValue:r,value:n?u:r,seeded:n,validation:{valid:!0,message:null}},this.options.onEditingStarted?.({rowKey:e,columnId:t,value:this.session.value}),this.notify(),!0}setEditValue(e){if(!this.session)return;this.session.value=e;let{rowKey:t,columnId:u}=this.session,r=this.options.rules?.[u];this.session.validation=Qu({value:r?.length?this.parse(t,u,e):e,columnId:u,row:this.effectiveRow(t)},r),this.notify()}commitEdit(){let e=this.session;if(!e)return!0;let t=!Object.is(e.value,e.initialValue),u=t?this.parse(e.rowKey,e.columnId,e.value):e.value,r=Qu({value:u,columnId:e.columnId,row:this.effectiveRow(e.rowKey)},this.options.rules?.[e.columnId]);return r.valid?(this.session=null,this.options.onEditingStopped?.({rowKey:e.rowKey,columnId:e.columnId,value:e.value,cancelled:!1}),t&&this.applyEdits([{rowKey:e.rowKey,columnId:e.columnId,value:u}],this.text.editCellUndo.replace("{column}",e.columnId)),this.notify(),!0):(e.validation=r,this.notify(),!1)}cancelEdit(){let e=this.session;this.session=null,e&&this.options.onEditingStopped?.({rowKey:e.rowKey,columnId:e.columnId,value:e.value,cancelled:!0}),this.notify()}applyEdits(e,t,u="edit"){if(e.length===0)return;let r=e.map(c=>{let f=this.options.readValue(c.rowKey,c.columnId);return{...c,value:Ss(f,c.value),previous:this.effectiveValue(c.rowKey,c.columnId),source:f}}).filter(c=>!(typeof c.value=="bigint"&&c.value===c.previous));if(r.length===0)return;let n=this.mode==="cell",a=this.options.storedValue,o=n&&this.options.applyValue?r.filter(c=>this.options.applyValue(c.rowKey,c.columnId,c.value)!==!1).map(c=>a?{...c,value:a(c.rowKey,c.columnId,c.value)}:c):r;if(o.length===0)return;let l=!0,i=(c,f,C,A)=>{this.options.onCellValueChanged?.({rowKey:c.rowKey,columnId:c.columnId,value:f,previousValue:C,source:A})},s=()=>{let c=!l,f=l?u:"redo";l=!1;for(let C of o)this.touchRow(C.rowKey),this.changes.set(C.rowKey,C.columnId,C.value,C.source),n&&c&&this.options.applyValue?.(C.rowKey,C.columnId,C.value),i(C,C.value,C.previous,f)},h=()=>{for(let c of o)this.touchRow(c.rowKey),this.changes.set(c.rowKey,c.columnId,c.previous,c.source),n&&this.options.applyValue?.(c.rowKey,c.columnId,c.previous),i(c,c.previous,c.value,"undo")};s();let m={label:t,undo:h,redo:s};this.undoStack.push(m),this.notify(),this.mode==="cell"&&this.autoSave()}effectiveValue(e,t){return this.changes.effectiveValue(e,t,this.options.readValue(e,t))}effectiveRow(e){let t=this.options.readRow?.(e);if(t)return this.changes.applyPendingTo(e,t)}undo(){this.options.onHistoryStarted?.({kind:"undo",label:this.undoStack.peekUndo()?.label??null});let e=this.undoStack.undo();return e&&this.notify(),this.options.onHistoryEnded?.({kind:"undo",performed:!!e,label:e?.label??null}),!!e}redo(){this.options.onHistoryStarted?.({kind:"redo",label:this.undoStack.peekRedo()?.label??null});let e=this.undoStack.redo();return e&&this.notify(),this.options.onHistoryEnded?.({kind:"redo",performed:!!e,label:e?.label??null}),!!e}canUndo(){return this.undoStack.canUndo()}canRedo(){return this.undoStack.canRedo()}hasChanges(){return this.changes.hasChanges()}getChanges(){return this.changes.getChanges(this.options.readRow)}async saveChanges(e){if(this.session&&!this.commitEdit())return{saved:!1,changes:[],error:this.session?.validation.message??this.text.validationInvalid};let t=this.savesInFlight>0?this.saveQueue:null;this.savesInFlight++;let u;this.saveQueue=new Promise(r=>{u=r});try{return t&&await t,await this.persist(e)}finally{this.savesInFlight--,u()}}autoSave(){this.saveChanges().then(e=>{!e.saved&&!e.superseded&&this.options.onAutoSaveFailed?.(e)})}async persist(e){let t=this.getChanges(),u=e===void 0?t:t.filter(a=>a.rowKey===e);if(u.length===0)return{saved:!0,changes:[]};let r=++this.saveToken;this.saving=!0;for(let a of u)this.setRowState(a.rowKey,"saving",r);this.notify();let n=null;try{return n=await this.send(u,r),n}finally{r===this.saveToken&&(this.saving=!1),this.settleRowStatus(u,r,n??{saved:!1,changes:u,error:this.text.editSaveFailed}),this.notify()}}async send(e,t){try{for(let r of e){if(r.type!=="insert")continue;let n=this.effectiveRow(r.rowKey);for(let[a,o]of Object.entries(this.options.rules??{})){if(!o||o.length===0||a in r.values)continue;let l=n?this.options.readValue?.(r.rowKey,a):void 0,i=Qu({value:l,columnId:a,row:n},o);if(!i.valid)return{saved:!1,changes:e,error:i.message??this.text.validationInvalid,columnId:a,rowKey:r.rowKey}}}for(let r of e)for(let[n,a]of Object.entries(r.values)){let o=await sm({value:a,columnId:n,row:this.effectiveRow(r.rowKey)??r.row},this.options.rules?.[n]);if(!o.valid)return{saved:!1,changes:e,error:o.message??this.text.validationInvalid,columnId:n,rowKey:r.rowKey}}let u=this.options.crud;if(u&&(u.insert||u.update||u.remove)){let r=e.find(n=>!u[n.type]);if(r)return console.error(`[datagrid] editing.crud has no "${r.type}" handler, so a pending ${r.type} cannot be saved. Nothing was sent and the changes stay pending. Add crud.${r.type}, or use onSave instead of crud.`),{saved:!1,changes:e,error:this.text.editSaveFailed,rowKey:r.rowKey};await this.dispatchCrud(e,u)}else await this.options.onSave?.(e);if(t!==this.saveToken)return{saved:!0,changes:e,superseded:!0};for(let r of e)if(r.type==="update")for(let n of Object.keys(r.values)){let a=this.changes.get(r.rowKey,n);a&&Object.is(a.newValue,r.values[n])&&this.changes.revertCell(r.rowKey,n)}else this.changes.revertRow(r.rowKey);return{saved:!0,changes:e}}catch(u){return{saved:!1,changes:e,error:u instanceof Error?u.message:String(u)}}}async dispatchCrud(e,t){let u={insert:0,update:1,remove:2},r=[...e].sort((n,a)=>u[n.type]-u[a.type]);for(let n of r)if(n.type==="insert"){if(!t.insert)continue;let a=await t.insert(n.values),o=a?this.options.replaceRow?.(n.rowKey,a):void 0;if(o!==void 0&&o!==n.rowKey){let l=this.rowSaveState.get(n.rowKey);l&&(this.rowSaveState.delete(n.rowKey),this.rowSaveState.set(o,l)),this.insertedKeys.set(n.rowKey,o)}this.options.onRowInserted?.(n.rowKey,a??void 0)}else if(n.type==="update"){if(!t.update)continue;let a=await t.update(n.rowKey,n.values,n.row);a&&this.options.replaceRow?.(n.rowKey,a),this.options.onRowUpdated?.(n.rowKey,a??n.row,n.values)}else{if(!t.remove)continue;await t.remove(n.rowKey,n.row),this.options.dropRow?.(n.rowKey),this.options.onRowRemoved?.(n.rowKey,n.row)}}cancelChanges(){let e=this.rowSession,t=this.session;this.session=null,this.rowSession=null,this.rowDrafts=null,t&&this.options.onEditingStopped?.({rowKey:t.rowKey,columnId:t.columnId,value:t.value,cancelled:!0}),e&&this.options.onRowEditingStopped?.({rowKey:e.rowKey,isNew:e.isNew,cancelled:!0});for(let u of this.getChanges())u.type==="insert"&&this.options.dropRow?.(u.rowKey);this.changes.clear(),this.undoStack.clear(),this.notify()}retainKeys(e){this.changes.retainKeys(e)&&this.notify()}notify(){this.options.onChange?.()}};function ui(e,t,u,r){let n=e.indexOf(u);if(r===1){for(let a=n+1;a<e.length;a++)if(t(e[a]))return e[a]}else for(let a=(n<0?e.length:n)-1;a>=0;a--)if(t(e[a]))return e[a];return null}function ri(e,t,u){return ui(e,t,"",u)}function Br(e,t,u=!1,r=!1){let n=a=>a.replace(/[\\{}@$]/g,o=>"\\"+o);return`{${u?"$":""}${n(e)}@${r?"$":""}${n(t)}}`}var Ze=class extends Error{constructor(e,t,u,r={}){super(e),this.position=t,this.kind=u,this.params=r,this.name="FormulaSyntaxError"}position;kind;params};function fm(e){let t=0;for(let u of e.toUpperCase())t=t*26+(u.charCodeAt(0)-64);return t-1}function gm(e){let t=e+1,u="";for(;t>0;){let r=(t-1)%26;u=String.fromCharCode(65+r)+u,t=Math.floor((t-1)/26)}return u}var Cm=/^(\$?)([A-Za-z]{1,3})(\$?)(\d{1,7})/,ym=/^[A-Za-z_][A-Za-z0-9_.]*/,wm=/^(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/,Em=["<=",">=","<>","=","<",">","+","-","*","/","^","&","%","(",")",",",";",":"];function bm(e,t){let u=[],r=0;for(;r<e.length;){let n=e[r];if(/\s/.test(n)){r++;continue}let a=r+t,o=e.slice(r);if(n==='"'){let c="",f=r+1;for(;;){if(f>=e.length)throw new Ze('Unclosed text: a " is missing',a,"unclosedText");if(e[f]==='"'){if(e[f+1]==='"'){c+='"',f+=2;continue}break}c+=e[f++]}u.push({t:"str",v:c,pos:a}),r=f+1;continue}if(n==="["){let c="",f=r+1;for(;;){if(f>=e.length)throw new Ze("Unclosed column name: a ] is missing",a,"unclosedColumn");if(e[f]==="]"){if(e[f+1]==="]"){c+="]",f+=2;continue}break}c+=e[f++]}if(c.trim()==="")throw new Ze("Empty column name",a,"emptyColumn");u.push({t:"col",v:c.trim(),pos:a}),r=f+1;continue}if(n==="{"){let c=r+1,f=[""],C=[!1,!1];for(;;){if(c>=e.length)throw new Ze("Unclosed reference: a } is missing",a,"unclosedColumn");let A=e[c];if(A==="}")break;if(A==="\\"&&c+1<e.length){f[f.length-1]+=e[c+1],c+=2;continue}if(A==="@"&&f.length===1){f.push(""),c++;continue}if(A==="$"&&f[f.length-1]===""){C[f.length-1]=!0,c++;continue}f[f.length-1]+=A,c++}if(f.length!==2||f[0]===""||f[1]==="")throw new Ze("A reference is written {column@row}",a,"unexpected",{text:"{"});u.push({t:"ref",columnId:f[0],rowKey:f[1],absCol:C[0],absRow:C[1],pos:a,end:c+1+t}),r=c+1;continue}let l=wm.exec(o);if(l){u.push({t:"num",v:Number(l[0]),pos:a}),r+=l[0].length;continue}let i=Cm.exec(o),s=i?o.slice(i[0].length):"";if(i&&!/^\s*\(/.test(s)&&!/^[A-Za-z0-9_.]/.test(s)){u.push({t:"cell",col:fm(i[2]),row:Number(i[4])-1,absCol:i[1]==="$",absRow:i[3]==="$",pos:a,end:a+i[0].length}),r+=i[0].length;continue}let h=ym.exec(o);if(h){u.push({t:"id",v:h[0],pos:a}),r+=h[0].length;continue}let m=Em.find(c=>o.startsWith(c));if(m){u.push({t:"op",v:m,pos:a}),r+=m.length;continue}throw new Ze(`Unexpected character '${n}'`,a,"unexpectedChar",{text:n})}return u.push({t:"end",pos:e.length+t}),u}var Am=new Set(["=","<>","<","<=",">",">="]);function Bs(e){return e.t==="cell"?{kind:"cell",col:e.col,row:e.row,absCol:e.absCol,absRow:e.absRow,pos:e.pos,end:e.end}:{kind:"ref",columnId:e.columnId,rowKey:e.rowKey,absCol:e.absCol,absRow:e.absRow,pos:e.pos,end:e.end}}function ni(e){let t=e.trimStart().startsWith("=")?e.indexOf("=")+1:0,u=bm(e.slice(t),t),r=0,n=()=>u[r],a=()=>u[r++],o=F=>{let x=n();return x.t==="op"&&x.v===F},l=F=>{let x=a();if(x.t!=="op"||x.v!==F)throw new Ze(`Expected '${F}'`,x.pos,"expected",{text:F})},i=()=>{let F=s();for(;;){let x=n();if(x.t!=="op"||!Am.has(x.v))return F;a(),F={kind:"binary",op:x.v,left:F,right:s()}}},s=()=>{let F=h();for(;o("&");)a(),F={kind:"binary",op:"&",left:F,right:h()};return F},h=()=>{let F=m();for(;o("+")||o("-");)F={kind:"binary",op:a().v,left:F,right:m()};return F},m=()=>{let F=c();for(;o("*")||o("/");)F={kind:"binary",op:a().v,left:F,right:c()};return F},c=()=>{let F=f();for(;o("^");)a(),F={kind:"binary",op:"^",left:F,right:f()};return F},f=()=>{if(o("-")||o("+"))return{kind:"unary",op:a().v,operand:f()};let F=C();for(;o("%");)a(),F={kind:"unary",op:"%",operand:F};return F},C=()=>{let F=a();switch(F.t){case"num":return{kind:"number",value:F.v};case"str":return{kind:"string",value:F.v};case"col":return{kind:"column",name:F.v,pos:F.pos};case"cell":case"ref":{let x=Bs(F);if(!o(":"))return x;a();let k=a();if(k.t!=="cell"&&k.t!=="ref")throw new Ze('Expected a cell after ":"',k.pos,"cellAfterColon");return{kind:"range",from:x,to:Bs(k)}}case"id":{let x=F.v.toUpperCase();if(o("(")){a();let k=[];if(!o(")"))for(;;){if(k.push(i()),o(",")||o(";")){a();continue}break}return l(")"),{kind:"call",name:x,args:k,pos:F.pos}}if(x==="TRUE"||x==="FALSE")return{kind:"boolean",value:x==="TRUE"};throw new Ze(`Unknown name '${F.v}' \u2014 a column is written [${F.v}]`,F.pos,"unknownName",{name:F.v})}case"op":if(F.v==="("){let x=i();return l(")"),x}throw new Ze(`Unexpected '${F.v}'`,F.pos,"unexpected",{text:F.v});case"end":throw new Ze("The formula ends too early",F.pos,"endsEarly")}};if(n().t==="end")throw new Ze("The formula is empty",n().pos,"empty");let A=i(),S=n();if(S.t!=="end")throw new Ze("Unexpected text after the formula",S.pos,"trailing");return A}var ae=class Pn{constructor(t){this.code=t}code;toString(){return this.code}static all=new Map;static of(t){let u=Pn.all.get(t);return u||Pn.all.set(t,u=new Pn(t)),u}};var He=ae.of;function po(e){return e==null?null:typeof e=="number"?Number.isFinite(e)?e:He("#NUM!"):typeof e=="string"||typeof e=="boolean"?e:e instanceof Date?Number.isNaN(e.getTime())?null:e:e instanceof ae?e:typeof e=="bigint"?Number(e):String(e)}function _e(e){if(e===null)return 0;if(typeof e=="number")return e;if(typeof e=="boolean")return e?1:0;if(e instanceof ae)return e;if(typeof e=="string"){let t=e.trim();if(t==="")return 0;let u=Number(t);return Number.isFinite(u)?u:He("#VALUE!")}return He("#VALUE!")}function xm(e){return String(Number(e.toPrecision(15)))}function Ts(e,t=2){return String(e).padStart(t,"0")}function Mu(e){return e===null?"":e instanceof ae?e:typeof e=="number"?xm(e):typeof e=="boolean"?e?"TRUE":"FALSE":e instanceof Date?`${e.getFullYear()}-${Ts(e.getMonth()+1)}-${Ts(e.getDate())}`:e}function Mo(e){if(e===null)return!1;if(typeof e=="boolean")return e;if(typeof e=="number")return e!==0;if(e instanceof ae)return e;if(typeof e=="string"){let t=e.trim().toUpperCase();if(t==="TRUE")return!0;if(t==="FALSE")return!1}return He("#VALUE!")}var q0=/^(\d{4})-(\d{2})-(\d{2})(?:[T ](\d{2}):(\d{2})(?::(\d{2}))?)?/;function j0(e){if(e instanceof Date||e instanceof ae)return e;if(typeof e=="string"){let t=q0.exec(e.trim());if(t)return new Date(+t[1],+t[2]-1,+t[3],+(t[4]??0),+(t[5]??0),+(t[6]??0))}return He("#VALUE!")}var vm=864e5;function Rs(e){if(e instanceof Date)return e;if(typeof e=="string"&&q0.test(e.trim())){let t=j0(e);return t instanceof Date?t:null}return null}function Fm(e,t){let u=new Date(e.getTime());return u.setDate(u.getDate()+Math.trunc(t)),u}function Xu(e){return Number.isFinite(e)?e:He("#NUM!")}function ju(e,t){let u=(i,s)=>i instanceof Date?i.getTime():i===null?typeof s=="string"?"":typeof s=="boolean"?!1:0:i,r=u(e,t),n=u(t,e),a=i=>typeof i=="number"?0:typeof i=="string"?1:2;if(a(r)!==a(n))return a(r)-a(n);if(typeof r=="string"){let i=r.toLowerCase(),s=n.toLowerCase();return i<s?-1:i>s?1:0}let o=Number(r),l=Number(n);return o<l?-1:o>l?1:0}function be(e){return Array.isArray(e)?e[0]??null:e}function xr(e,t){let u=[];for(let r of e){let n=r();if(Array.isArray(n)){for(let o of n){if(o instanceof ae)return o;typeof o=="number"&&u.push(o)}continue}if(!t&&typeof n!="number")continue;let a=_e(n);if(a instanceof ae)return a;u.push(a)}return u}function Dm(e,t,u){let r=10**Math.trunc(t),n=Number((Math.abs(e)*r).toPrecision(15)),a=u==="half"?Math.round(n):u==="up"?Math.ceil(n):Math.floor(n);return Math.sign(e)*a/r}var Ns=e=>([t])=>{let u=_e(be(t()));return u instanceof ae?u:e(u)},Sn=e=>([t],u)=>{let r=Mu(be(t()));return r instanceof ae?r:e(r,u.locale)},fo=e=>([t])=>{let u=j0(be(t()));return u instanceof ae?u:e(u)},go=e=>([t,u])=>{let r=_e(be(t()));if(r instanceof ae)return r;let n=u?_e(be(u())):0;return n instanceof ae?n:Dm(r,n,e)},Ms=e=>t=>{for(let u of t){let r=u();for(let n of Array.isArray(r)?r:[r]){let a=Mo(n);if(a instanceof ae)return a;if(a!==e)return!e}}return e},Sm={IF:{min:2,max:3,call:([e,t,u])=>{let r=Mo(be(e()));return r instanceof ae?r:r?be(t()):u?be(u()):!1}},IFERROR:{min:2,max:2,call:([e,t])=>{let u=be(e());return u instanceof ae?be(t()):u}},AND:{min:1,max:255,call:Ms(!0)},OR:{min:1,max:255,call:Ms(!1)},NOT:{min:1,max:1,call:([e])=>{let t=Mo(be(e()));return t instanceof ae?t:!t}},ISBLANK:{min:1,max:1,call:([e])=>{let t=be(e());return t===null||t===""}},ROUND:{min:1,max:2,call:go("half")},ROUNDUP:{min:1,max:2,call:go("up")},ROUNDDOWN:{min:1,max:2,call:go("down")},ABS:{min:1,max:1,call:Ns(Math.abs)},SQRT:{min:1,max:1,call:Ns(e=>e<0?He("#NUM!"):Math.sqrt(e))},MOD:{min:2,max:2,call:([e,t])=>{let u=_e(be(e())),r=_e(be(t()));return u instanceof ae?u:r instanceof ae?r:r===0?He("#DIV/0!"):u-r*Math.floor(u/r)}},POWER:{min:2,max:2,call:([e,t])=>{let u=_e(be(e())),r=_e(be(t()));return u instanceof ae?u:r instanceof ae?r:Xu(u**r)}},SUM:{min:1,max:255,call:e=>{let t=xr(e,!0);return t instanceof ae?t:t.reduce((u,r)=>u+r,0)}},AVERAGE:{min:1,max:255,call:e=>{let t=xr(e,!0);return t instanceof ae?t:t.length===0?He("#DIV/0!"):t.reduce((u,r)=>u+r,0)/t.length}},MIN:{min:1,max:255,call:e=>{let t=xr(e,!0);return t instanceof ae?t:t.length===0?0:Math.min(...t)}},MAX:{min:1,max:255,call:e=>{let t=xr(e,!0);return t instanceof ae?t:t.length===0?0:Math.max(...t)}},COUNT:{min:1,max:255,call:e=>{let t=xr(e,!1);return t instanceof ae?t:t.length}},LEN:{min:1,max:1,call:Sn(e=>e.length)},UPPER:{min:1,max:1,call:Sn((e,t)=>e.toLocaleUpperCase(t))},LOWER:{min:1,max:1,call:Sn((e,t)=>e.toLocaleLowerCase(t))},TRIM:{min:1,max:1,call:Sn(e=>e.trim().replace(/ {2,}/g," "))},LEFT:{min:1,max:2,call:([e,t])=>{let u=Mu(be(e())),r=t?_e(be(t())):1;return u instanceof ae?u:r instanceof ae?r:r<0?He("#VALUE!"):u.slice(0,Math.trunc(r))}},RIGHT:{min:1,max:2,call:([e,t])=>{let u=Mu(be(e())),r=t?_e(be(t())):1;return u instanceof ae?u:r instanceof ae?r:r<0?He("#VALUE!"):Math.trunc(r)===0?"":u.slice(-Math.trunc(r))}},MID:{min:3,max:3,call:([e,t,u])=>{let r=Mu(be(e())),n=_e(be(t())),a=_e(be(u()));return r instanceof ae?r:n instanceof ae?n:a instanceof ae?a:n<1||a<0?He("#VALUE!"):r.substr(Math.trunc(n)-1,Math.trunc(a))}},CONCAT:{min:1,max:255,call:e=>{let t="";for(let u of e){let r=u();for(let n of Array.isArray(r)?r:[r]){let a=Mu(n);if(a instanceof ae)return a;t+=a}}return t}},YEAR:{min:1,max:1,call:fo(e=>e.getFullYear())},MONTH:{min:1,max:1,call:fo(e=>e.getMonth()+1)},DAY:{min:1,max:1,call:fo(e=>e.getDate())},TODAY:{min:0,max:0,call:(e,t)=>{let u=t.scope.now?.()??new Date;return new Date(u.getFullYear(),u.getMonth(),u.getDate())}},DATE:{min:3,max:3,call:([e,t,u])=>{let r=[e,t,u].map(i=>_e(be(i()))),n=r.find(i=>i instanceof ae);if(n)return n;let[a,o,l]=r;return new Date(Math.trunc(a),Math.trunc(o)-1,Math.trunc(l))}}};function km(e,t,u){if(t instanceof ae)return t;if(u instanceof ae)return u;switch(e){case"&":{let a=Mu(t),o=Mu(u);return a instanceof ae?a:o instanceof ae?o:a+o}case"=":return ju(t,u)===0;case"<>":return ju(t,u)!==0;case"<":return ju(t,u)<0;case"<=":return ju(t,u)<=0;case">":return ju(t,u)>0;case">=":return ju(t,u)>=0}if(e==="+"||e==="-"){let a=Rs(t),o=Rs(u);if(a&&o)return e==="-"?(a.getTime()-o.getTime())/vm:He("#VALUE!");if(a||o){let l=a??o,i=_e(a?u:t);return i instanceof ae?i:e==="-"&&o?He("#VALUE!"):Fm(l,e==="+"?i:-i)}}let r=_e(t),n=_e(u);if(r instanceof ae)return r;if(n instanceof ae)return n;switch(e){case"+":return Xu(r+n);case"-":return Xu(r-n);case"*":return Xu(r*n);case"/":return n===0?He("#DIV/0!"):Xu(r/n);case"^":return Xu(r**n)}return He("#VALUE!")}var Yu=class extends Error{constructor(e,t,u,r={}){super(e),this.position=t,this.kind=u,this.params=r}position;kind;params};function Io(e,t){let u;try{u=ni(e)}catch(i){if(i instanceof Ze)return{ok:!1,error:{message:i.message,position:i.position,kind:i.kind,params:i.params}};throw i}let r=new Set,n=!1,a=t.locale,o=i=>{switch(i.kind){case"number":case"string":case"boolean":{let s=i.value;return()=>s}case"column":{let s=t.resolveColumn(i.name);if(s===null)throw new Yu(`Unknown column [${i.name}]`,i.pos,"unknownColumn",{name:i.name});return r.add(s),h=>po(h.column(s))}case"ref":case"cell":{if(!t.allowCells)throw new Yu("Cell references like A1 belong in cell formulas \u2014 write a column as [Name]",i.pos,"cellsNotAllowed");return n=!0,s=>s.cell?po(s.cell(i)):He("#REF!")}case"range":{if(!t.allowCells)throw new Yu("Ranges like A1:B3 belong in cell formulas",i.from.pos,"cellsNotAllowed");return n=!0,s=>s.range?s.range(i.from,i.to).map(po):He("#REF!")}case"unary":{let s=o(i.operand),h=i.op;return m=>{let c=_e(be(s(m)));return c instanceof ae?c:h==="-"?-c:h==="%"?c/100:c}}case"binary":{let s=o(i.left),h=o(i.right),m=i.op;return c=>km(m,be(s(c)),be(h(c)))}case"call":{let s=Sm[i.name];if(!s)throw new Yu(`Unknown function ${i.name}`,i.pos,"unknownFunction",{name:i.name});if(i.args.length<s.min||i.args.length>s.max){let m=s.min===s.max?`${s.min}`:s.max>=255?`at least ${s.min}`:`${s.min}\u2013${s.max}`;throw new Yu(`${i.name} takes ${m} argument${m==="1"?"":"s"}`,i.pos,"argCount",{name:i.name,min:String(s.min),max:s.max>=255?"":String(s.max)})}let h=i.args.map(o);return m=>s.call(h.map(c=>()=>c(m)),{scope:m,locale:a})}}},l;try{l=o(u)}catch(i){if(i instanceof Yu)return{ok:!1,error:{message:i.message,position:i.position,kind:i.kind,params:i.params}};throw i}return{ok:!0,formula:{tree:u,columns:[...r],hasCellRefs:n,evaluate(i){try{let s=be(l(i));return typeof s=="number"&&!Number.isFinite(s)?He("#NUM!"):s}catch{return He("#VALUE!")}}}}}var Bm=new Set(["ROUND","ROUNDUP","ROUNDDOWN","ABS","SQRT","MOD","POWER","SUM","AVERAGE","MIN","MAX","COUNT","LEN","YEAR","MONTH","DAY"]),Tm=new Set(["UPPER","LOWER","TRIM","LEFT","RIGHT","MID","CONCAT"]),Rm=new Set(["AND","OR","NOT","ISBLANK"]),Nm=new Set(["TODAY","DATE"]);function Rr(e,t){switch(e.kind){case"number":return"number";case"string":return"string";case"boolean":return"boolean";case"column":{let u=t(e.name);return u==="lookup"||u===void 0?"string":u}case"cell":case"ref":case"range":return"number";case"unary":return"number";case"binary":{if(e.op==="&")return"string";if(["=","<>","<","<=",">",">="].includes(e.op))return"boolean";if(e.op==="+"||e.op==="-"){let u=Rr(e.left,t),r=Rr(e.right,t);if(u==="date"&&r==="date")return"number";if(u==="date"||r==="date")return"date"}return"number"}case"call":{if(e.name==="IF"||e.name==="IFERROR"){let u=e.args[1];return u?Rr(u,t):"string"}return Bm.has(e.name)?"number":Tm.has(e.name)?"string":Rm.has(e.name)?"boolean":Nm.has(e.name)?"date":"string"}}}function Iu(e,t){if(t(e))switch(e.kind){case"unary":Iu(e.operand,t);break;case"binary":Iu(e.left,t),Iu(e.right,t);break;case"call":e.args.forEach(u=>Iu(u,t));break}}function ai(e,t){let u=e;for(let r of[...t].sort((n,a)=>a.start-n.start))u=u.slice(0,r.start)+r.text+u.slice(r.end);return u}function oi(e){try{return ni(e)}catch{return null}}var ii=e=>typeof e=="string"&&e.trimStart().startsWith("=");function Co(e,t,u,r){return`${u?"$":""}${gm(e)}${r?"$":""}${t+1}`}function Lo(e){let t=[...e].sort((u,r)=>u-r);return t.every((u,r)=>u>=0&&(r===0||u===t[r-1]+1))}function Is(e,t){if(!ii(e))return e;let u=oi(e);if(!u)return e;let r=[],n=a=>{let o=t.columnAt(a.col),l=t.rowKeyAt(a.row);return o===null||l===null?null:Br(o,l,a.absCol,a.absRow)};return Iu(u,a=>{if(a.kind==="cell"){let o=n(a);return o!==null&&r.push({start:a.pos,end:a.end,text:o}),!1}if(a.kind==="range"&&a.from.kind==="cell"&&a.to.kind==="cell"){let{from:o,to:l}=a,i=[];for(let c=Math.min(o.col,l.col);c<=Math.max(o.col,l.col);c++){let f=t.columnAt(c);if(f===null)return!1;i.push(f)}let s=[];for(let c=Math.min(o.row,l.row);c<=Math.max(o.row,l.row);c++){let f=t.rowKeyAt(c);if(f===null)return!1;s.push(f)}let h=s.map(c=>t.rowDataIndex(c)),m=i.map(c=>t.columnDataIndex(c));if(Lo(h)&&Lo(m)){let c=s[h.indexOf(Math.min(...h))],f=s[h.indexOf(Math.max(...h))],C=i[m.indexOf(Math.min(...m))],A=i[m.indexOf(Math.max(...m))];r.push({start:o.pos,end:l.end,text:`${Br(C,c,o.absCol,o.absRow)}:${Br(A,f,l.absCol,l.absRow)}`})}else{let c=[];for(let f of s)for(let C of i)c.push(Br(C,f));r.push({start:o.pos,end:l.end,text:c.join(";")})}return!1}return!0}),ai(e,r)}function Mm(e,t){if(!ii(e))return e;let u=oi(e);if(!u)return e;let r=[],n=a=>{let o=t.columnViewIndex(a.columnId),l=t.rowViewIndex(a.rowKey);return o<0||l<0?null:Co(o,l,a.absCol,a.absRow)};return Iu(u,a=>{if(a.kind==="ref"){let o=n(a);return o!==null&&r.push({start:a.pos,end:a.end,text:o}),!1}if(a.kind==="range"&&a.from.kind==="ref"&&a.to.kind==="ref"){let o=a.from,l=a.to,i=t.rowViewIndex(o.rowKey),s=t.rowViewIndex(l.rowKey),h=t.columnViewIndex(o.columnId),m=t.columnViewIndex(l.columnId);if(i<0||s<0||h<0||m<0)return!1;let c=(S,F)=>Math.abs(S-F)+1,f=c(t.rowDataIndex(o.rowKey),t.rowDataIndex(l.rowKey)),C=c(t.columnDataIndex(o.columnId),t.columnDataIndex(l.columnId));if(f!==c(i,s)||C!==c(h,m))return!1;let A=[];for(let S=Math.min(i,s);S<=Math.max(i,s);S++){let F=t.rowKeyAt(S);A.push(F===null?-1:t.rowDataIndex(F))}return Lo(A)&&r.push({start:o.pos,end:l.end,text:`${Co(h,i,o.absCol,o.absRow)}:${Co(m,s,l.absCol,l.absRow)}`}),!1}return!0}),ai(e,r)}function Im(e,t,u,r){if(!ii(e)||t===0&&u===0)return e;let n=oi(e);if(!n)return e;let a=[],o=l=>{let i=l.columnId,s=l.rowKey;if(!l.absCol&&u!==0){let h=r.columnAt(r.columnViewIndex(l.columnId)+u);if(h===null||r.columnViewIndex(l.columnId)<0)return null;i=h}if(!l.absRow&&t!==0){let h=r.rowKeyAt(r.rowViewIndex(l.rowKey)+t);if(h===null||r.rowViewIndex(l.rowKey)<0)return null;s=h}return Br(i,s,l.absCol,l.absRow)};return Iu(n,l=>{if(l.kind==="ref"){let i=o(l);return i!==null&&a.push({start:l.pos,end:l.end,text:i}),!1}if(l.kind==="range"){for(let i of[l.from,l.to]){if(i.kind!=="ref")continue;let s=o(i);s!==null&&a.push({start:i.pos,end:i.end,text:s})}return!1}return!0}),ai(e,a)}var Lm={"=":1,"<>":1,"<":1,"<=":1,">":1,">=":1,"&":2,"+":3,"-":3,"*":4,"/":4,"^":5},Ls=6,Pm=7;function Gm(e){return String(Number(e.toPrecision(15)))}function Om(e,t,u=r=>r){let r=(n,a,o)=>{switch(n.kind){case"number":return Gm(n.value);case"string":return`"${n.value.replace(/"/g,'""')}"`;case"boolean":return n.value?"TRUE":"FALSE";case"column":case"cell":case"ref":case"range":return t(n);case"unary":{if(n.op==="%"){let s=r(n.operand,Pm,!1);return s===null?null:`${s}%`}let l=r(n.operand,Ls,!1);if(l===null)return null;let i=`${n.op}${l}`;return a>Ls?`(${i})`:i}case"binary":{let l=Lm[n.op],i=r(n.left,l,!1),s=r(n.right,l,!0);if(i===null||s===null)return null;let h=`${i}${n.op}${s}`;return l<a||l===a&&o?`(${h})`:h}case"call":{let l=[];for(let i of n.args){let s=r(i,0,!1);if(s===null)return null;l.push(s)}return`${u(n.name)}(${l.join(",")})`}}};return r(e,0,!1)}function li(e){return{sum:e.summarySum,avg:e.summaryAvg,min:e.summaryMin,max:e.summaryMax,count:e.summaryCount,countDistinct:e.summaryDistinct,custom:e.summaryCustom}}var Hm=li(pu("en"));function si(e,t=Hm){return e.label??t[e.type]}var Vm=new Set(["sum","avg","min","max"]);function Or(e,t,u){if(e.valueFormatter)return e.valueFormatter(t??null);if(t==null)return"\u2014";if(!Vm.has(e.type))return t.toLocaleString();if(u?.dataType==="date"){let r=new Date(t);return u.valueFormatter?u.valueFormatter(r,{}):r.toLocaleDateString()}return u?.valueFormatter?u.valueFormatter(t,{}):(Math.round(t*100)/100||0).toLocaleString(void 0,{maximumFractionDigits:2})}function Y0(e){switch(e){case"number":return["sum","avg","min","max","count","countDistinct"];case"date":return["min","max","count","countDistinct"];default:return["count","countDistinct"]}}function Ps(e){return e.kind==="data"||e.kind==="group"}function zm(e,t,u,r){let n=u.getCellValue(e.data,t);return r?{text:n==null?"":String(n),value:n}:{text:du(u.getDef(t),n,e.data),value:n}}var Km=new Set(["sum","avg","min","max"]);function Gs(e,t,u,r){if(t==null)return{text:"",value:null};if(r)return{text:String(t),value:t};let n=Km.has(e.type);return{text:Or(e,t,u),value:n&&u?.dataType==="date"?new Date(t):t,numFmt:n?void 0:"#,##0"}}function $m({nodes:e,columns:t,options:u,isSelected:r,selectionCount:n=0,summaries:a}){let o=t.runtime({includeScreenHidden:!0}),l=(u.columnIds??o.map(f=>f.state.id)).map(f=>{let C=t.getDef(f),A=t.getState(f),S=C?.dataType==="number";return{id:f,header:C?.headerName??C?.field??f,width:Math.max(8,Math.round((A?.width??100)/7)),isNumeric:S,isDate:C?.dataType==="date",align:C?.align??(S||C?.dataType==="bigint"?"right":"left"),numFmt:C?.excelFormat??_m(C?.dataType)}}),i=!!u.selectedOnly&&n>0&&!!r,s=u.includeGroups!==!1,h=!!u.raw,m=[];for(let f of e)if(f){if(Qc(f)){if(!s||i)continue;let C=f.aggregates,A=l.map((S,F)=>{if(F===0)return{text:`${f.label===""?"(Blanks)":f.label} (${f.count})`,value:f.label};let x=C?a?.defs.find(k=>k.columnId===S.id):void 0;return x?Gs(x,C[`${x.columnId}:${x.type}`],t.getDef(S.id),h):{text:"",value:null}});m.push({kind:"group",cells:A,level:f.level});continue}if(Xc(f)){if(!s||i)continue;let C=l.map((A,S)=>S===0?{text:f.label,value:f.label}:{text:"",value:null});m.push({kind:"group",cells:C,level:f.tree.depth});continue}Bt(f)&&(i&&!r(f.key)||m.push({kind:"data",cells:l.map(C=>{let A=zm(f,C.id,t,h),S=t.getDef(C.id)?.exportLink?.(f.data),F=jm(S);return F?{...A,link:F}:A}),level:0,source:{key:f.key,row:f.data}}))}let c;return a&&a.defs.length>0&&(c=l.map(f=>{let C=a.defs.find(A=>A.columnId===f.id);return C?Gs(C,a.values[`${C.columnId}:${C.type}`],t.getDef(f.id),h):null})),{columns:l,rows:m,totals:c}}var Q0="#,##0.###",Wm="#,##0";function _m(e){if(e==="number")return Q0;if(e==="date")return"yyyy-mm-dd"}function Um(e,t){return e==null?"":e instanceof Date?Number.isNaN(e.getTime())?"":e.getHours()===0&&e.getMinutes()===0&&e.getSeconds()===0?e.toLocaleDateString(t):e.toLocaleString(t):typeof e=="number"?Number.isFinite(e)?e.toLocaleString(t):"":String(e)}function qm(e,t,u="en"){if(t.size===0)return e;let r=[];return e.rows.forEach((n,a)=>{r.push(n);let o=t.get(a);if(!o||!Array.isArray(o.columns))return;let l=Array.isArray(o.rows)?o.rows:[],i=o.columns.map((h,m)=>{let c=typeof h=="string"?{header:h}:h,f=l.length>0&&l.every(C=>C?.[m]==null||typeof C[m]=="number");return{header:String(c.header??""),align:c.align??(f?"right":"left"),...c.numFmt?{numFmt:c.numFmt}:{}}}),s=n.level;o.title&&r.push({kind:"detailTitle",cells:[{text:o.title,value:o.title}],level:s,detailColumns:i}),r.push({kind:"detailHeader",cells:i.map(h=>({text:h.header,value:h.header})),level:s,detailColumns:i});for(let h of l)r.push({kind:"detail",cells:i.map((m,c)=>{let f=h?.[c]??null;return{text:Um(f,u),value:f}}),level:s,detailColumns:i})}),{...e,rows:r}}function jm(e){if(typeof e!="string")return null;let t=e.trim();return/^(https?:\/\/|mailto:|tel:)/i.test(t)?t:null}var et=class extends Error{constructor(){super("Export aborted"),this.name="ExportAbortedError"}},X0="\uFEFF",Ym=new Set(["tr","de","fr","es","it","pt","ru","ar"]);function Qm(e){let t=(e??"en").split(/[-_]/)[0].toLowerCase();return Ym.has(t)?";":","}function Wn(e,t){return e.includes(t)||e.includes('"')||e.includes(`
|
|
5
|
-
`)||e.includes("\r")||e!==e.trim()?`"${e.replace(/"/g,'""')}"`:e}async function
|
|
6
|
-
`,n=[];t.includeHeaders!==!1&&n.push(e.columns.map(l=>Wn(l.header,u)).join(u));let a=e.rows.length;for(let l=0;l<a;l++){if(t.signal?.aborted)throw new et;let i=e.rows[l];i.kind!=="data"&&i.kind!=="group"||(n.push(i.cells.map(s=>Wn(s.text,u)).join(u)),(l+1)%5e3===0&&(t.onProgress?.((l+1)/a),await new Promise(s=>setTimeout(s,0))))}t.onProgress?.(1);let o=n.join(r);return t.bom===!1?o:
|
|
7
|
-
`,o=new TextEncoder,l=!0,i=0,s=r.bom===!1?"":X0;r.includeHeaders!==!1&&(s+=t.map(h=>Wn(h.header,n)).join(n),l=!1),s&&await e.write(o.encode(s));for await(let h of u){if(r.signal?.aborted)throw new et;let m="";for(let c of h)c.kind!=="data"&&c.kind!=="group"||(m+=(l?"":a)+c.cells.map(f=>Wn(f.text,n)).join(n),l=!1,i++);m&&await e.write(o.encode(m))}return i}var ep="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",yo="FFF1F5F9",tp="FFFAFAFA",Os="FFE2E8F0",Nr=1048576,up=31;function Z0(e,t,u){for(let r=Math.max(2,t);;r++){let n=` (${r})`,a=e.slice(0,up-n.length)+n;if(!u.has(a.toLowerCase()))return a}}var J0=/^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}(?::\d{2}(?:\.\d{1,9})?)?)?(?:Z|[+-]\d{2}:?\d{2})?$/;function wo(e){return new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()))}function rp(e){let t=/^(\d{4})-(\d{2})-(\d{2})/.exec(e);if(!t)return!1;let u=Number(t[1]),r=Number(t[2]),n=Number(t[3]);return u<1||r<1||r>12||n<1?!1:n<=new Date(u,r,0).getDate()}var np=/^-?(?:\d+\.?\d*|\.\d+)$/;function ap(e){let t=e.trim();if(!np.test(t)||t.replace(/^-|\./g,"").replace(/^0+(?=\d)/,"").length>15)return null;let u=Number(t);return Number.isFinite(u)?u:null}function ed(e,t,u){if(!(u?.numFmt!==Q0||typeof t!="number")){if(typeof e=="string"){let r=/\.(\d+)$/.exec(e.trim())?.[1].length??0;if(r>0)return`#,##0.${"0".repeat(Math.min(r,10))}`}return Number.isInteger(t)?Wm:void 0}}function Po(e){if(e instanceof Date)return Number.isNaN(e.getTime())?null:wo(e);if(typeof e=="number"&&Number.isFinite(e))return wo(new Date(e));if(typeof e=="string"&&J0.test(e.trim())){let t=Xn(e.trim());return t?wo(t):null}return null}function Go(e,t,u,r){if(e.value instanceof Date)return Po(e.value)??(u?e.value:e.text);if(r&&t?.isDate){if(typeof e.value=="string"&&J0.test(e.value.trim())&&!rp(e.value.trim()))return null;let n=Po(e.value);if(n)return n}if(r&&t?.isNumeric&&typeof e.value=="string"){let n=ap(e.value);if(n!==null)return n}return typeof e.value=="bigint"?String(e.value):u||typeof e.value=="number"?e.value:e.text}async function op(){let e;try{e=await import("exceljs")}catch{throw new Error('[datagrid] Excel export needs the "exceljs" package. Install it with: npm i exceljs')}let t=e,u=t.Workbook?t:t.default;if(!u?.Workbook)throw new Error('[datagrid] Excel export needs the "exceljs" package, and what loaded exposes no Workbook \u2014 it is either not installed (npm i exceljs) or a version this writer does not understand.');return u}function Oo(e,t,u){e.columns=t.columns.map(r=>({key:r.id,width:r.width,style:u?{alignment:{horizontal:r.align},...r.numFmt?{numFmt:r.numFmt}:{}}:r.numFmt?{numFmt:r.numFmt}:void 0}))}function td(e){let t=e,u="";for(;t>0;){let r=(t-1)%26;u=String.fromCharCode(65+r)+u,t=Math.floor((t-1)/26)}return u||"A"}function di(e,t){if(t&&(t.value!==void 0&&(e.value=t.value),t.font&&(e.font={...e.font,...t.font,...t.font.color?{color:{argb:t.font.color}}:{}}),t.fill&&(e.fill={type:"pattern",pattern:"solid",fgColor:{argb:t.fill}}),t.numFmt&&(e.numFmt=t.numFmt),t.alignment&&(e.alignment={...e.alignment,...t.alignment}),t.border)){let u={style:"thin",color:{argb:t.border}};e.border={top:u,left:u,bottom:u,right:u}}}function Tr(e,t,u,r,n){let a=t.customizeCell;a&&e.eachCell((o,l)=>{let i=r?.columns[l-1],s=a({kind:u,columnId:i?.id??null,value:o.value,text:o.value==null?"":String(o.value),rowNumber:e.number,colNumber:l,rowIndex:n});di(o,s)})}function _n(e,t,u,r){if(t?.length)for(let n of t){e.room()||e.continue();let a=e.sheet,o=a.addRow(n.cells);n.height&&(o.height=n.height),n.style&&o.eachCell(l=>di(l,n.style)),n.merge&&u>1&&a.mergeCells(`A${o.number}:${td(u)}${o.number}`),Tr(o,r,"band",null,-1)}}async function Hs(e,t,u,r,n,a){let o=null,l=t.columns.length,i=new Map,s=[],h=u.formulas!==!1,m=(k,M)=>{let K=k.addRow(t.columns.map(O=>O.header));return K.font={bold:!0},K.fill={type:"pattern",pattern:"solid",fgColor:{argb:yo}},n&&(K.alignment={horizontal:"left",vertical:"middle"},K.border={bottom:{style:"thin",color:{argb:Os}}}),Tr(K,u,"header",t,-1),M&&(u.autoFilter!==!1&&(k.autoFilter={from:{row:K.number,column:1},to:{row:K.number,column:l}}),u.freezeHeader!==!1&&(k.views=[{state:"frozen",ySplit:K.number}])),K.number},c=r&&l>0;e.onContinue=c?k=>{m(k,!0)}:null,c&&(e.room(2)?o=m(e.sheet,a):e.continue());let f=t.rows.length,C=o===null?0:o+1,A=o??0,S=0,F=-1,x=(k,M)=>{M.forEach((K,O)=>{K?.numFmt&&(k.getCell(O+1).numFmt=K.numFmt)})};for(let k=0;k<f;k++){if(u.signal?.aborted)throw new et;let M=t.rows[k];if(M.kind==="detailTitle"||M.kind==="detailHeader"||M.kind==="detail"){e.room()||e.continue();let G=e.sheet.addRow([null,...M.cells.map(Y=>{let j=Y.value;return j instanceof Date?Po(j)??Y.text:typeof j=="number"||typeof j=="boolean"?j:Y.text})]);A=G.number;let W=M.detailColumns??[];M.cells.forEach((Y,j)=>{let J=G.getCell(j+2),ee=W[j];J.numFmt=M.kind==="detail"&&ee?.numFmt?ee.numFmt:"General",J.alignment={horizontal:M.kind==="detailTitle"?"left":ee?.align??"left"},M.kind==="detailHeader"&&(J.font={bold:!0},J.fill={type:"pattern",pattern:"solid",fgColor:{argb:yo}})}),M.kind==="detailTitle"&&(G.getCell(2).font={bold:!0,italic:!0}),n&&(G.outlineLevel=(F>=0?F+1:0)+1),u.customizeCell&&G.eachCell((Y,j)=>{j<2||di(Y,u.customizeCell({kind:"detail",columnId:null,value:Y.value,text:Y.value==null?"":String(Y.value),rowNumber:G.number,colNumber:j,rowIndex:k}))});continue}let K=M.cells.map((G,W)=>Go(G,t.columns[W],!!u.raw,M.kind==="data"));e.room()||e.continue();let O=e.sheet.addRow(K);x(O,M.cells),M.kind==="data"&&K.forEach((G,W)=>{if(M.cells[W]?.numFmt)return;let Y=ed(M.cells[W]?.value,G,t.columns[W]);Y&&(O.getCell(W+1).numFmt=Y)}),k===0&&(C=O.number),A=O.number,M.kind==="data"&&(M.source&&i.set(String(M.source.key),{sheet:e.sheet,row:O.number}),M.cells.forEach((G,W)=>{if(h&&G.excelFormula)s.push({sheet:e.sheet,row:O.number,column:W+1,cell:G});else if(G.link){let Y=O.getCell(W+1);Y.value={text:G.text,hyperlink:G.link},Y.font={color:{argb:"FF0563C1"},underline:!0}}})),M.kind==="group"?(F=M.level,O.font={bold:!0},O.getCell(1).alignment={indent:M.level,horizontal:"left"},n&&(O.fill={type:"pattern",pattern:"solid",fgColor:{argb:yo}},O.outlineLevel=M.level),S=0,Tr(O,u,"group",t,k)):(n&&(F>=0&&(O.outlineLevel=F+1),S%2===1&&(O.fill={type:"pattern",pattern:"solid",fgColor:{argb:tp}})),S++,Tr(O,u,"data",t,k)),(k+1)%5e3===0&&(u.onProgress?.((k+1)/f),await new Promise(G=>setTimeout(G,0)))}if(n&&u.totalsRow!==!1&&t.totals){e.room()||e.continue();let k=e.sheet.addRow(t.totals.map((M,K)=>M==null?"":Go(M,t.columns[K],!1,!1)));x(k,t.totals.map(M=>M??{})),k.font={bold:!0},k.border={top:{style:"double",color:{argb:Os}}},Tr(k,u,"totals",t,-1),A=k.number}return e.onContinue=null,lp(t,i,s),{headerRow:o,firstDataRow:C,lastRow:A}}function ip(e){return`'${e.replace(/'/g,"''")}'!`}function lp(e,t,u){if(u.length===0)return;let r=new Map(e.columns.map((a,o)=>[a.id,o+1])),n=(a,o)=>{let l=t.get(a),i=r.get(o);return l&&i!==void 0?{sheet:l.sheet.name,row:l.row,column:i}:null};for(let{sheet:a,row:o,column:l,cell:i}of u){let s=i.excelFormula(n,{sheet:a.name,row:o,column:l});if(s===null)continue;let h=a.getRow(o).getCell(l);h.value={formula:s,result:h.value}}}function vr(e,t){let u=`${td(e.column)}${e.row}`;return e.sheet===t.sheet?u:ip(e.sheet)+u}function sp(e,t,u){if(u?.length)for(let r of u){let n=e.addImage({...typeof r.data=="string"?{base64:r.data}:{buffer:r.data},extension:r.extension}),a=r.position??{col:0,row:0,width:160,height:48};t.addImage(n,{tl:{col:a.col,row:a.row},ext:{width:a.width,height:a.height}})}}async function dp(e,t={}){let u=await op(),r=t.styled===!0,n=t.includeHeaders!==!1,a=new u.Workbook,o=Math.floor(t.maxRowsPerSheet??Nr),l=Math.max(2,Math.min(Nr,Number.isFinite(o)?o:Nr)),i=new Set,s=S=>{i.add(S.toLowerCase());let F=a.addWorksheet(S);return r&&(F.properties.outlineProperties={summaryBelow:!1,summaryRight:!1}),F},h=(S,F)=>{let x=S.name,k=2,M={sheet:S,limit:l,room:(K=1)=>M.sheet.rowCount+K<=l,continue:()=>{let K=s(Z0(x,k++,i));Oo(K,F,r),M.sheet=K,M.onContinue?.(K)},onContinue:null};return M},m=s(t.sheetName??"Data");Oo(m,e,r);let c=h(m,e);sp(a,m,t.images),_n(c,t.headerBlock,e.columns.length,t),await Hs(c,e,t,n,r,!0),t.onProgress?.(1);let f=c,C=c;for(let S of t.additionalGrids??[]){let F=!S.sheetName;f=cp(s,h,f,S,t,r),await Hs(f,S.model,t,S.includeHeaders!==!1,r,!1),F&&C===c&&(C=f)}_n(C,t.footerBlock,e.columns.length,t);let A=await a.xlsx.writeBuffer();return new Blob([A],{type:ep})}function cp(e,t,u,r,n,a){let o=r.title?[{cells:[r.title],merge:!0,style:{font:{bold:!0,size:13}}}]:void 0;if(r.sheetName){let i=e(r.sheetName);Oo(i,r.model,a);let s=t(i,r.model);return _n(s,o,r.model.columns.length,n),s}let l=r.gap??2;for(let i=0;i<l;i++){if(!u.room()){u.continue();break}u.sheet.addRow([])}return _n(u,o,r.model.columns.length,n),u}var hp="application/pdf",Eo=[241,245,249],mp=[250,250,250],kt=[30,41,59];async function pp(){let e=new Error('[datagrid] PDF export needs "jspdf" and "jspdf-autotable". Install them with: npm i jspdf jspdf-autotable'),t;try{let[u,r]=await Promise.all([import("jspdf"),import("jspdf-autotable")]);t={jsPDF:u.jsPDF??u.default,autoTable:r.default??r}}catch{throw e}if(typeof t.jsPDF!="function"||typeof t.autoTable!="function")throw e;return t}var ci="helvetica",fp=/[^\u0000-\u00ff\u0152\u0153\u0160\u0161\u0178\u017d\u017e\u0192\u02c6\u02dc\u2013\u2014\u2018\u2019\u201a\u201c\u201d\u201e\u2020\u2021\u2022\u2026\u2030\u2039\u203a\u20ac\u2122]/u;function gp(e,t){let u=function*(){for(let r of t.headerBlock??[])yield r.text;for(let r of t.footerBlock??[])yield r.text;for(let r of[{model:e,title:void 0},...t.additionalGrids??[]]){r.title&&(yield r.title);for(let n of r.model.columns)yield n.header;for(let n of r.model.rows)for(let a of n.cells)yield a.text;for(let n of r.model.totals??[])n&&(yield n.text)}};for(let r of u()){let n=fp.exec(r);if(n)return n[0]}return null}function Cp(e,t,u){let r,n;if(typeof e=="string")r=atob(e.slice(0,8)),n=e;else{let a=e instanceof Uint8Array?e:new Uint8Array(e),o=[];for(let l=0;l<a.length;l+=32768)o.push(String.fromCharCode.apply(null,a.subarray(l,l+32768)));n=o.join(""),r=n.slice(0,4)}if(!r.startsWith("\0\0\0")){let a=r.startsWith("OTTO")?" (it is OpenType-CFF, .otf)":r.startsWith("wOF")?" (it is WOFF)":"";throw new Error(`[datagrid] PDF export: font "${t}" (${u}) is not a TrueType .ttf file${a}. jsPDF embeds TrueType only.`)}return n}function yp(e,t){let u=[["normal",t.normal],["bold",t.bold??t.normal],["italic",t.italic??t.normal],["bolditalic",t.boldItalic??t.bold??t.italic??t.normal]];for(let[r,n]of u){let a=`${t.family}-${r}.ttf`;e.addFileToVFS(a,Cp(n,t.family,r)),e.addFont(a,t.family,r)}return t.family}function Ho(e,t,u,r,n){if(!t?.length)return u;let a=e.internal.pageSize.getWidth(),o=u;for(let l of t){let i=l.fontSize??10;e.setFontSize(i),e.setFont(n,l.fontStyle??"normal");let s=l.color??kt;e.setTextColor(s[0],s[1],s[2]);let h=l.align??"left",m=h==="center"?a/2:h==="right"?a-r:r;o+=i*.353,e.text(l.text,m,o,{align:h}),o+=l.spacing??2}return e.setTextColor(kt[0],kt[1],kt[2]),o}var wp=[245,247,250];function Ep(e,t){if(e.kind==="data"||e.kind==="group")return e.cells.map(a=>a.text);let u=e.cells.map(a=>a.text);if(t<=1)return[u.join(" \xB7 ")];if(e.kind==="detailTitle")return["",{content:u[0]??"",colSpan:t-1}];let r=t-1,n=u.length>r?[...u.slice(0,r-1),u.slice(r-1).join(" \xB7 ")]:u;for(;n.length<r;)n.push("");return["",...n]}function bp(e,t){t&&(t.text!==void 0&&(e.text=[t.text]),t.fillColor&&(e.styles.fillColor=t.fillColor),t.textColor&&(e.styles.textColor=t.textColor),t.fontStyle&&(e.styles.fontStyle=t.fontStyle),t.fontSize&&(e.styles.fontSize=t.fontSize),t.halign&&(e.styles.halign=t.halign))}function hi(e,t,u,r,n,a,o){let l=r.styled!==!1,i=r.margin??14,s=o?.from??0,h=o?.to??u.rows.length,m=u.columns.length,c=u.rows.slice(s,h).map(C=>Ep(C,m)),f=l&&r.totalsRow!==!1&&u.totals&&(!o||o.withTotals)?[u.totals.map(C=>C?.text??"")]:void 0;return t(e,{startY:n,margin:{left:i,right:i},head:a&&u.columns.length>0?[u.columns.map(C=>C.header)]:void 0,body:c,foot:f,theme:l?"grid":"plain",showHead:r.repeatHeaders===!1?"firstPage":"everyPage",showFoot:f?"lastPage":"never",styles:{...r.font?{font:r.font.family}:{},fontSize:8,cellPadding:2,textColor:kt},headStyles:{fillColor:Eo,textColor:kt,fontStyle:"bold"},footStyles:{fillColor:Eo,textColor:kt,fontStyle:"bold"},alternateRowStyles:l?{fillColor:mp}:void 0,columnStyles:l?Object.fromEntries(u.columns.map((C,A)=>[A,{halign:C.align}])):void 0,didDrawCell:C=>{if(C.section!=="body")return;let A=u.rows[s+C.row.index]?.cells[C.column.index]?.link,{x:S,y:F,width:x,height:k}=C.cell;A&&e.link&&S!==void 0&&F!==void 0&&x!==void 0&&k!==void 0&&e.link(S,F,x,k,{url:A})},didParseCell:C=>{C.section==="body"&&u.rows[s+C.row.index]?.cells[C.column.index]?.link&&(C.cell.styles.textColor=[5,99,193]);let A,S=-1;if(C.section==="head")A="header";else if(C.section==="foot")A="totals";else{S=s+C.row.index;let M=u.rows[S]?.kind;A=M==="group"?"group":M==="data"||M===void 0?"data":"detail"}if(A==="detail"){let M=u.rows[S];C.cell.styles.fontSize=7,C.cell.styles.fillColor=wp,(M.kind==="detailHeader"||M.kind==="detailTitle")&&(C.cell.styles.fontStyle="bold"),M.kind==="detailTitle"&&(C.cell.styles.fontStyle="bolditalic");let K=M.detailColumns?.[C.column.index-1];C.cell.styles.halign=M.kind==="detail"&&K?K.align:"left"}A==="group"&&(C.cell.styles.fontStyle="bold",C.cell.styles.fillColor=Eo,C.column.index===0&&(C.cell.styles.cellPadding={top:2,right:2,bottom:2,left:2+(u.rows[S]?.level??0)*4}));let F=r.customizeCell;if(!F)return;let x=u.columns[C.column.index],k=S>=0?u.rows[S]?.cells[C.column.index]:void 0;bp(C.cell,F({kind:A,columnId:x?.id??null,text:Array.isArray(C.cell.text)?C.cell.text.join(" "):String(C.cell.text),value:k?.value,rowIndex:S,columnIndex:C.column.index}))}}),e.lastAutoTable?.finalY??n}function Ap(e,t){t?.length&&t.forEach((u,r)=>{try{e.addImage(u.data,u.format,u.x,u.y,u.width,u.height)}catch(n){let a=n instanceof Error?n.message:String(n);throw new Error(`[datagrid] PDF export could not decode images[${r}] (format: ${u.format}). The data is not a valid ${u.format} \u2014 check that it is a complete file, base64-encoded, and that \`format\` matches it. Underlying error: ${a}`)}})}function xp(e,t){let u=t.pageNumbers;if(!u)return;let r=t.margin??14,n=e.getNumberOfPages(),a=e.internal.pageSize.getWidth(),o=e.internal.pageSize.getHeight();for(let l=1;l<=n;l++){e.setPage(l),e.setFontSize(8),e.setFont(t.font?.family??ci,"normal"),e.setTextColor(148,163,184);let i=typeof u=="function"?u(l,n):`${l} / ${n}`;e.text(i,a-r,o-8,{align:"right"})}e.setTextColor(kt[0],kt[1],kt[2])}var vp=400,Fp=1e3;async function Dp(e,t,u,r,n,a,o){let l=u.rows.length,i=Math.max(1,r.sliceRows||Fp),s=n,h=0;for(;h<l;){if(r.signal?.aborted)throw new et;let m=Math.min(l,h+i);h>0&&e.addPage(),s=hi(e,t,u,r,h===0?n:o,a,{from:h,to:m,withTotals:m>=l}),h=m,r.onProgress?.(h/l),h<l&&await new Promise(c=>setTimeout(c,0))}return s}async function Sp(e,t={}){if(t.signal?.aborted)throw new et;let{jsPDF:u,autoTable:r}=await pp(),n=t.margin??14,a=new u({orientation:t.orientation??"landscape",unit:"mm",format:t.pageSize??"a4"}),o=t.font?yp(a,t.font):ci;if(!t.font){let s=gp(e,t);if(s!==null){let h=s.codePointAt(0).toString(16).toUpperCase().padStart(4,"0");console.warn(`[datagrid] PDF export: "${s}" (U+${h}) cannot be drawn by the built-in PDF font and will come out as the wrong character. Pass \`font\` (a TrueType .ttf covering your language) in the PDF export options \u2014 see PdfExportOptions.font.`)}}Ap(a,t.images);let l=n;l=Ho(a,t.headerBlock,l,n,o),l=t.sliceRows!==0&&e.rows.length>vp?await Dp(a,r,e,t,l+2,t.includeHeaders!==!1,n):hi(a,r,e,t,l+2,t.includeHeaders!==!1);for(let s of t.additionalGrids??[]){if(t.signal?.aborted)throw new et;l=kp(a,r,s,t,l,n)}if(t.onProgress?.(1),t.footerBlock?.length){let s=t.footerBlock.reduce((h,m)=>h+(m.fontSize??10)*.353+(m.spacing??2),4);l+s>a.internal.pageSize.getHeight()-n&&(a.addPage(),l=n),Ho(a,t.footerBlock,l+4,n,o)}xp(a,t);let i=a.output("arraybuffer");return new Blob([i],{type:hp})}function kp(e,t,u,r,n,a){let o=n;return u.pageBreak?(e.addPage(),o=a):o+=8,u.title&&(o=Ho(e,[{text:u.title,fontSize:12,fontStyle:"bold"}],o,a,r.font?.family??ci)),hi(e,t,u.model,r,o+2,u.includeHeaders!==!1)}function ud(e,t){if(typeof document>"u")throw new Error("[datagrid] downloadBlob requires a browser document.");let u=URL.createObjectURL(e),r=document.createElement("a");r.href=u,r.download=t,r.style.display="none",document.body.appendChild(r),r.click(),r.remove(),setTimeout(()=>URL.revokeObjectURL(u),0)}function mi(e){return{"=":e.opEquals,"<>":e.opNotEquals,">":e.opGreater,">=":e.opGreaterOrEqual,"<":e.opLess,"<=":e.opLessOrEqual,contains:e.opContains,notcontains:e.opNotContains,startswith:e.opStartsWith,endswith:e.opEndsWith,isnull:e.opIsBlank,isnotnull:e.opIsNotBlank,in:e.opIsOneOf,between:e.opIsBetween,period:e.opInPeriod,periods:{today:e.periodToday,yesterday:e.periodYesterday,tomorrow:e.periodTomorrow,thisWeek:e.periodThisWeek,lastWeek:e.periodLastWeek,nextWeek:e.periodNextWeek,thisMonth:e.periodThisMonth,lastMonth:e.periodLastMonth,nextMonth:e.periodNextMonth,thisQuarter:e.periodThisQuarter,lastQuarter:e.periodLastQuarter,nextQuarter:e.periodNextQuarter,thisYear:e.periodThisYear,lastYear:e.periodLastYear,nextYear:e.periodNextYear,yearToDate:e.periodYearToDate,lastDays:e.periodLastDays,nextDays:e.periodNextDays},and:e.filterAnd.toLocaleLowerCase(),or:e.filterOr.toLocaleLowerCase(),blank:e.filterBlank,emptyText:e.filterEmptyText,space:e.filterSpace,spaces:e.filterSpaces,listSeparator:", ",ofN:e.opValuesCount}}var Bp=mi(pu("en"));function rd(e,t,u={}){if(!e)return null;let r={...Bp,...u.labels},n=u.maxListValues??3,a=s=>{let h=t.getDef(s);return h?.headerName??h?.field??s},o=(s,h)=>{if(h==null)return r.blank;if(typeof h=="string"&&h.trim()===""){if(h==="")return r.emptyText;let c=Array.from(h).length;return c===1?r.space:r.spaces.replace("{n}",String(c))}let m=Ut(t.getDef(s),h);return m!==null?m:h instanceof Date?h.toLocaleDateString():String(h)},l=(s,h)=>{if(Je(s)){let f=s.nodes.map(A=>l(A,h+1)).filter(Boolean);if(f.length===0)return"";let C=f.join(` ${r[s.logic]} `);return h>0&&f.length>1?`(${C})`:C}let m=a(s.columnId);if(s.operator==="period"){let f=s.value,C=f?r.periods[f.period]:void 0;return`${m}: ${C?C.replace("{n}",String(f?.days??"")):r.blank}`}if(!Ir(s.operator)){let f=mu(t.getDef(s.columnId),s.operator),C=f?.label??s.operator;return(f?.operandType??"text")==="none"||s.value===void 0?`${m} ${C}`:`${m} ${C} ${o(s.columnId,s.value)}`}let c=r[s.operator==="notin"?"<>":s.operator];switch(s.operator){case"isnull":case"isnotnull":return`${m} ${c}`;case"in":case"notin":{let f=Array.isArray(s.value)?s.value:[s.value];return f.length>n?`${m} ${c} ${r.ofN.replace("{n}",String(f.length))}`:`${m} ${c} ${f.map(C=>o(s.columnId,C)).join(r.listSeparator)}`}case"between":{let[f,C]=Array.isArray(s.value)?s.value:[void 0,void 0];return`${m} ${c} ${o(s.columnId,f)} \u2013 ${o(s.columnId,C)}`}default:return`${m} ${c} ${o(s.columnId,s.value)}`}},i=l(e,0);return i===""?null:i}function Tp(e,t,u,r,n){let a=e,o=a.findIndex(h=>n(h)===t);if(o<0)return{rows:a,moved:!1,fromIndex:-1,toIndex:-1};let l;if(u===null)l=a.length;else{let h=a.findIndex(m=>n(m)===u);if(h<0)return{rows:a,moved:!1,fromIndex:o,toIndex:-1};if(h===o)return{rows:a,moved:!1,fromIndex:o,toIndex:o};l=r==="before"?h:h+1}if(l>o&&(l-=1),l===o)return{rows:a,moved:!1,fromIndex:o,toIndex:o};let i=a.slice(),[s]=i.splice(o,1);return i.splice(l,0,s),{rows:i,moved:!0,fromIndex:o,toIndex:l}}var Rp=["columnStateChanged","sortChanged","filterChanged","groupChanged","chartOpened","chartChanged","chartClosed","treeRowToggled","stateUpdated"],Np={selection:"selectionChanged",focus:"focusChanged",scroll:"bodyScrollEnd",details:"detailToggled",ranges:null},kn=new Map;function Mp(e,t,u){let r=kn.get(e);if(r&&r.load===u)return r.value;let n=t();kn.set(e,{load:u,value:n});let a=()=>{setTimeout(()=>{kn.get(e)?.value===n&&kn.delete(e)},0)};return n&&typeof n.then=="function"?n.then(a,a):a(),n}function Vs(e){try{return globalThis[e]??null}catch{return null}}function nd(e,t){if(!t.enabled)return()=>{};let u=t.storageKey??`kanuni-datagrid-${e.gridId}`,r=t.type??"localStorage",n=t.saveDelay??500,a=!1,o=m=>{if(!(a||!m))try{e.applyViewState(m)}catch{}};if(r==="custom"){let m=null;try{m=Mp(u,()=>t.customLoad?.()??null,t.customLoad)}catch{m=null}m&&typeof m.then=="function"?m.then(o,()=>{}):o(m)}else{let m=Vs(r);if(m){let c=null,f=!0;try{c=m.getItem(u)}catch{f=!1}if(f&&c)try{o(JSON.parse(c))}catch{try{m.removeItem(u)}catch{}}}}let l,i=()=>{let m=e.getViewState({include:t.include});if(r==="custom"){try{Promise.resolve(t.customSave?.(m)).catch(()=>{})}catch{}return}let c=Vs(r);if(c)try{c.setItem(u,JSON.stringify(m))}catch{}},s=()=>{l!==void 0&&clearTimeout(l),l=setTimeout(()=>{l=void 0,i()},n)},h=Rp.map(m=>e.events.on(m,s));for(let m of t.include??[]){let c=Np[m];c&&h.push(e.events.on(c,s))}return()=>{a=!0,h.forEach(m=>m()),l!==void 0&&(clearTimeout(l),l=void 0,i())}}var zs=150,tr=40;function Ip(e,t){return e.id?e.id:e.field?e.field:`col_${t}`}function Ks(e){return typeof e.flex=="number"&&Number.isFinite(e.flex)&&e.flex>0?e.flex:void 0}function Fr(e,t,u){let r=Math.max(e,t);return u!=null&&(r=Math.min(r,u)),r}var Lp=class{defs=[];defsById=new Map;baseById=new Map;states=new Map;orderIds=[];version=0;collapsedBands=new Set;gridWidth=0;options;formulaErrors=new Map;cellFormulaReader=null;setCellFormulaReader(e){this.cellFormulaReader=e}hasCellFormulas(){return this.defs.some(e=>e.allowFormulas===!0)}getDefinitionOrder(){return this.defs.map(e=>e.id)}getStoredValue(e,t){let u=this.defsById.get(t);return u?.allowFormulas&&u.field&&!u.valueGetter?e[u.field]:this.getCellValue(e,t)}setCellValue(e,t,u){let r=this.defsById.get(t);return r?.valueSetter?r.valueSetter({value:u,row:e,columnId:t})!==!1:(e[r?.field??t]=u,!0)}parseCellValue(e,t,u,r){let n=this.defsById.get(t)?.valueParser;return n?n({value:u,oldValue:r,row:e,columnId:t}):u}getEditorDataType(e){let t=this.defsById.get(e);return t?.allowFormulas||t?.valueParser?"string":this.getDataType(e)}constructor(e,t={}){this.options=t,this.setColumns(e)}getVersion(){return this.version}setColumns(e){let t=this.baseById,u=this.states,r=new Set;this.defs=e.map((n,a)=>{let o={...this.options.defaultColumnDef,...n},l=Ip(o,a);if(r.has(l)){let i=`[datagrid] duplicate column id "${l}" \u2014 set an explicit \`id\` on one of the columns.`;this.options.debugMode?console.error(i):console.warn(i)}return r.add(l),o.id=l,o}),this.states=new Map,this.defsById=new Map,this.baseById=new Map,this.orderIds=[],this.defs.forEach((n,a)=>{let o=n.id;this.defsById.has(o)||(this.defsById.set(o,n),this.baseById.set(o,n));let l=n.minWidth??tr,i=t.get(o),s=u.get(o),h=f=>s!==void 0&&i!==void 0&&i[f]===n[f],m={id:o,width:h("width")?Fr(s.width,l,n.maxWidth):Fr(n.width??zs,l,n.maxWidth),pinned:h("pin")?s.pinned:n.pin??null,visible:h("visible")?s.visible:n.visible!==!1,order:s!==void 0?s.order:a},c=h("flex")?s.flex:Ks(n);c!==void 0&&(m.flex=c),h("headerName")&&s.headerName!==void 0&&(m.headerName=s.headerName),this.states.set(o,m),this.orderIds.push(o)}),this.orderIds.sort((n,a)=>(this.states.get(n)?.order??0)-(this.states.get(a)?.order??0));for(let[n,a]of this.states)this.syncHeaderName(n,a);this.compileFormulas(),this.version++}resolveColumnName(e){if(this.defsById.has(e))return e;let t=e.toLowerCase();for(let u of this.defs)if(u.id.toLowerCase()===t)return u.id;for(let u of this.defs)if(u.headerName?.toLowerCase()===t)return u.id;return null}getFormulaError(e){return this.formulaErrors.get(e)??null}compileFormulas(){this.formulaErrors=new Map;let e=new Map;for(let o of this.defs){if(typeof o.formula!="string"||o.valueGetter)continue;let l=o.id,i=Io(o.formula,{resolveColumn:s=>this.resolveColumnName(s),locale:this.options.locale});if(o.editable=!1,!i.ok){this.formulaErrors.set(l,i.error),this.options.debugMode&&console.warn(`[datagrid] column "${l}": ${i.error.message} (at ${i.error.position})`);let s=ae.of("#NAME?");o.valueGetter=()=>s,o.dataType??="string";continue}e.set(l,i.formula)}let t=new Set,u=new Map,r=(o,l)=>{if(u.get(o)!=="done"){if(u.get(o)==="open"){for(let i of l.slice(l.indexOf(o)))t.add(i);return}u.set(o,"open");for(let i of e.get(o)?.columns??[])e.has(i)&&r(i,[...l,i]);u.set(o,"done")}};for(let o of e.keys())r(o,[o]);let n=new Set,a=o=>{let l=this.defsById.get(o);if(!l)return;if(l.dataType)return l.dataType;let i=e.get(o);if(!i||n.has(o))return;n.add(o);let s=Rr(i.tree,h=>{let m=this.resolveColumnName(h);return m===null?void 0:a(m)});return n.delete(o),l.dataType=s,s};for(let[o,l]of e){let i=this.defsById.get(o);if(a(o),t.has(o)){let s=ae.of("#CYCLE!");i.valueGetter=()=>s;continue}i.valueGetter=s=>l.evaluate({column:h=>this.getCellValue(s,h)})}}resetColumnStates(){this.orderIds=this.defs.map(e=>e.id),this.defs.forEach((e,t)=>{let u=this.states.get(e.id);if(!u)return;let r=e.minWidth??tr;u.width=Fr(e.width??zs,r,e.maxWidth);let n=Ks(e);n!==void 0?u.flex=n:delete u.flex,u.pinned=e.pin??null,u.visible=e.visible!==!1,u.order=t,delete u.headerName,this.syncHeaderName(e.id,u)}),this.version++}setHeaderName(e,t){let u=this.states.get(e),r=this.baseById.get(e);if(!u||!r)return!1;let n=this.getDef(e)?.headerName,a=typeof t=="string"?t.trim():"";return a===""||a===r.headerName?delete u.headerName:u.headerName=a,this.syncHeaderName(e,u),this.getDef(e)?.headerName===n?!1:(this.version++,!0)}getAuthoredHeaderName(e){return this.baseById.get(e)?.headerName}syncHeaderName(e,t){let u=this.baseById.get(e);u&&this.defsById.set(e,t.headerName===void 0?u:{...u,headerName:t.headerName})}getDef(e){return this.defsById.get(e)}getState(e){return this.states.get(e)}getOrder(){return[...this.orderIds]}getColumnStates(){return this.orderIds.map(e=>({...this.states.get(e)}))}runtime(e={}){let t={left:[],center:[],right:[]};for(let u of this.orderIds){let r=this.states.get(u),n=this.getDef(u);if(!r||!n||!r.visible||o4(n,this.collapsedBands)||!e.includeScreenHidden&&this.hiddenByWidth(n))continue;let a=r.pinned??"center";t[a==="left"?"left":a==="right"?"right":"center"].push({def:n,state:r})}return[...t.left,...t.center,...t.right]}hiddenByWidth(e){return typeof e.hideBelow=="number"&&this.gridWidth>0&&this.gridWidth<e.hideBelow}setGridWidth(e){let t=(r,n)=>typeof n.hideBelow=="number"&&r>0&&r<n.hideBelow,u=this.defs.some(r=>t(this.gridWidth,r)!==t(e,r));return this.gridWidth=e,u&&this.version++,u}isShown(e){let t=this.getDef(e);return this.states.get(e)?.visible!==!1&&!(t&&this.hiddenByWidth(t))}isBandCollapsed(e){return this.collapsedBands.has(Ju(e))}setBandCollapsed(e,t){if(e.length===0)return!1;let u=Ju(e);return this.collapsedBands.has(u)===t?!1:(t?this.collapsedBands.add(u):this.collapsedBands.delete(u),this.version++,!0)}getCollapsedBands(){return[...this.collapsedBands]}setCollapsedBands(e){this.collapsedBands=new Set(e),this.version++}isBandCollapsible(e){if(e.length===0)return!1;let t=Ju(e),u=!1,r=!1;for(let n of this.orderIds){let a=this.getDef(n),o=this.states.get(n);if(!a||!o?.visible)continue;let l=_t(a);l.length<e.length||Ju(l.slice(0,e.length))===t&&(a.bandShow==="open"?u=!0:r=!0)}return u&&r}setWidth(e,t){let u=this.states.get(e),r=this.getDef(e);!u||!r||(u.width=Fr(t,r.minWidth??tr,r.maxWidth),this.version++)}setFlex(e,t){let u=this.states.get(e);if(!u||u.flex===void 0)return;let r=Number.isFinite(t)&&t>0?t:0;u.flex!==r&&(u.flex=r,this.version++)}isFlexing(e){return(this.states.get(e)?.flex??0)>0}setPinned(e,t){let u=this.states.get(e);u&&(u.pinned=t,this.version++)}setVisible(e,t){let u=this.states.get(e);u&&(u.visible=t,this.version++)}moveColumn(e,t){let u=this.orderIds.indexOf(e);if(u===-1)return;this.orderIds.splice(u,1);let r=t?this.orderIds.indexOf(t):this.orderIds.length;this.orderIds.splice(r===-1?this.orderIds.length:r,0,e),this.orderIds.forEach((n,a)=>{let o=this.states.get(n);o&&(o.order=a)}),this.version++}applyColumnStates(e){let t=e.filter(n=>this.states.has(n.id)).slice().sort((n,a)=>n.order-a.order);for(let n of t){let a=this.getDef(n.id),o=this.states.get(n.id);!a||!o||(o.width=Fr(n.width,a.minWidth??tr,a.maxWidth),o.flex!==void 0&&typeof n.flex=="number"&&(o.flex=Number.isFinite(n.flex)&&n.flex>0?n.flex:0),o.pinned=n.pinned,o.visible=n.visible,typeof n.headerName=="string"&&n.headerName.trim()!==""?o.headerName=n.headerName.trim():delete o.headerName,this.syncHeaderName(n.id,o))}let u=t.map(n=>n.id),r=this.orderIds.filter(n=>!u.includes(n));this.orderIds=[...u,...r],this.orderIds.forEach((n,a)=>{let o=this.states.get(n);o&&(o.order=a)}),this.version++}getCellValue(e,t){let u=this.getDef(t);if(u){if(u.valueGetter)return u.valueGetter(e);if(u.field){let r=e[u.field];return u.allowFormulas&&this.cellFormulaReader&&typeof r=="string"&&r.trimStart().startsWith("=")?this.cellFormulaReader(e,t,r):r}}}getSortValue(e,t){let u=this.defsById.get(t);if(u){if(u.calculateSortValue)return u.calculateSortValue(e);if(u.valueGetter){let r=u.valueGetter(e);return r instanceof ae?null:r}if(u.field){let r=e[u.field];if(u.allowFormulas&&this.cellFormulaReader&&typeof r=="string"&&r.trimStart().startsWith("=")){let n=this.cellFormulaReader(e,t,r);return n instanceof ae?null:n}return r}}}getDataType(e){return this.getDef(e)?.dataType??"string"}};function Pp(e,t,u){let r=e.length,n=new Uint32Array(r),a=new Uint32Array(r),o=0,l=0;for(let S=0;S<r;S++){let F=e[S];Number.isNaN(t[F])?a[l++]=F:n[o++]=F}let i=new Uint32Array(o),s=new Uint32Array(o),h=new Float64Array(1),m=new Uint32Array(h.buffer);for(let S=0;S<o;S++){let F=t[n[S]];h[0]=F===0?0:F;let x=m[0],k=m[1];k&2147483648?(x=~x>>>0,k=~k>>>0):k=(k^2147483648)>>>0,u&&(x=~x>>>0,k=~k>>>0),i[S]=x,s[S]=k}let c=new Uint32Array(o);for(let S=0;S<o;S++)c[S]=S;let f=new Uint32Array(o),C=new Uint32Array(256);for(let S=0;S<8;S++){let F=S>=4,x=(S&3)*8,k=F?s:i;C.fill(0);for(let O=0;O<o;O++)C[k[c[O]]>>>x&255]++;if(C[k[c[0]]>>>x&255]===o)continue;let M=0;for(let O=0;O<256;O++){let G=C[O];C[O]=M,M+=G}for(let O=0;O<o;O++){let G=c[O];f[C[k[G]>>>x&255]++]=G}let K=c;c=f,f=K}let A=new Uint32Array(r);for(let S=0;S<o;S++)A[S]=n[c[S]];for(let S=0;S<l;S++)A[o+S]=a[S];return A}var $s=new Map;function Gp(e){let t=$s.get(e);return t||(t=new Intl.Collator(e,{numeric:!0,sensitivity:"base"}),$s.set(e,t)),t}function bo(e){return e==null||typeof e=="number"&&Number.isNaN(e)}function Op(e){if(typeof e=="number")return e;if(typeof e=="boolean")return e?1:0;if(e instanceof Date)return e.getTime();let t=Number(e);return Number.isNaN(t)?Number.NEGATIVE_INFINITY:t}function Hp(e){if(e instanceof Date)return e.getTime();if(typeof e=="number")return e;let t=Date.parse(String(e));return Number.isNaN(t)?Number.NEGATIVE_INFINITY:t}function ad(e,t,u=[]){let r=[];for(let{columnId:n}of t){if(u.includes(n))continue;let a=e.getDef(n);a?.absoluteSort&&!a.comparator&&e.getDataType(n)==="number"&&r.push(n)}return r}function Vp(e,t){for(let u of t)if(e.getDef(u.columnId)?.comparator)return!0;return!1}function zp(e,t,u,r,n){let a=e.length,o=r.columnId,l=r.direction==="desc"?-1:1,i=u.getDataType(o),s=u.getDef(o)?.comparator;if(s){let c=new Array(a),f=new Array(a);for(let C=0;C<a;C++){let A=t[e[C]];c[C]=u.getSortValue(A,o),f[C]=A}return{dir:l,numeric:null,strings:null,values:c,valueRows:f,comparator:s}}if(i==="string"||i==="lookup"){let c=new Array(a);for(let f=0;f<a;f++){let C=u.getSortValue(t[e[f]],o);c[f]=bo(C)?null:String(C)}return{dir:l,numeric:null,strings:c,values:null,valueRows:null,comparator:null}}if(i==="bigint"){let c=new Array(a);for(let f=0;f<a;f++){let C=u.getSortValue(t[e[f]],o);c[f]=bo(C)?null:String(C)}return{dir:l,numeric:$p(c),strings:null,values:null,valueRows:null,comparator:null}}let h=new Float64Array(a),m=i==="date"?Hp:Op;for(let c=0;c<a;c++){let f=u.getSortValue(t[e[c]],o);h[c]=bo(f)?Number.NaN:m(f)}if(n&&i==="number")for(let c=0;c<a;c++)h[c]=Math.abs(h[c]);return{dir:l,numeric:h,strings:null,values:null,valueRows:null,comparator:null}}function Kp(e,t){return od(e,u=>I4(u,t))}function $p(e){return od(e,H4)}function od(e,t){let u=e.length,r=[],n=new Map,a=new Int32Array(u);for(let i=0;i<u;i++){let s=e[i];if(s===null){a[i]=-1;continue}let h=n.get(s);h===void 0&&(h=r.length,r.push(s),n.set(s,h)),a[i]=h}let o=t(r),l=new Float64Array(u);for(let i=0;i<u;i++)l[i]=a[i]===-1?Number.NaN:o[a[i]];return l}function id(e,t,u,r,n={}){if(r.length===0)return e.slice();let a=Gp(n.locale??"en"),o=n.absoluteSort??ad(u,r),l=r.map(c=>zp(e,t,u,c,o.includes(c.columnId))),i=l.length,s=new Array(e.length),h=!0;for(let c=0;c<e.length;c++)s[c]=c,c>0&&e[c]<e[c-1]&&(h=!1);if(!l.some(c=>c.comparator!==null)&&h&&e.length>=5e4){let c=l.map(A=>A.numeric?A.numeric:Kp(A.strings,a)),f=Uint32Array.from(s);for(let A=i-1;A>=0;A--)f=Pp(f,c[A],l[A].dir===-1);let C=new Uint32Array(e.length);for(let A=0;A<f.length;A++)C[A]=e[f[A]];return C}s.sort((c,f)=>{for(let C=0;C<i;C++){let A=l[C];if(A.comparator){let S=A.values,F=A.valueRows,x=A.comparator(S[c],S[f],F[c],F[f],A.dir===-1);if(x!==0)return x*A.dir}else if(A.numeric){let S=A.numeric[c],F=A.numeric[f],x=Number.isNaN(S),k=Number.isNaN(F);if(x||k){if(x&&k)continue;return x?1:-1}if(S!==F)return(S<F?-1:1)*A.dir}else{let S=A.strings[c],F=A.strings[f];if(S===null||F===null){if(S===null&&F===null)continue;return S===null?1:-1}let x=a.compare(S,F);if(x!==0)return x*A.dir}}return e[c]-e[f]});let m=new Uint32Array(e.length);for(let c=0;c<s.length;c++)m[c]=e[s[c]];return m}var Wp=class{mode="client";rows;keyGetter;locale;nodeCache;constructor(e,t){this.rows=e,this.keyGetter=t.keyGetter,this.locale=t.locale??"en",this.nodeCache=t.nodeCache??new G0}getTotalCount(){return this.rows.length}setData(e){this.rows=e,this.nodeCache.invalidate()}patchData(e,t,u){this.rows=e,this.nodeCache.rebase(e,t)}getSourceRows(){return this.rows}compute(e,t){let u=this.rows.length,r=new Uint32Array(u);for(let o=0;o<u;o++)r[o]=o;let n=E0(r,this.rows,e,t.filter,t.searchText,t.externalFilter),a=id(n,this.rows,e,t.sort,{locale:this.locale,absoluteSort:t.absoluteSort});return{nodes:this.nodeCache.project(a,this.rows,this.keyGetter),visibleCount:a.length,totalCount:u}}async getRows(e,t){return this.compute(e,t)}},ld='var We=/[\\u0130\\u0131]/,ze=/[\\u0130\\u0131]/g;function G(e){return We.test(e)?e.replace(ze,"i").toLowerCase():e.toLowerCase()}var R=-1;var de=new WeakMap;function Ke(e){let t=de.get(e);if(t!==void 0)return t;let r=He(e);return de.set(e,r),r}function He(e){let t=e.resolvedOptions();if(t.sensitivity!=="base"||t.numeric!==true||t.ignorePunctuation||t.usage!=="sort"||t.collation!=="default")return false;let r=[];for(let n=32;n<=126;n++)r.push(String.fromCharCode(n));r.sort(e.compare);for(let n=1;n<r.length;n++)if(e.compare(r[n-1],r[n])===0&&r[n-1].toLowerCase()!==r[n].toLowerCase())return false;for(let n of r)if(e.compare(n,"")===0)return false;return !(e.compare("01","1")!==0||e.compare("0","00")!==0||e.compare("a09z","a9z")!==0||e.compare("9","10")>=0)}function me(e){for(let t=0;t<e.length;t++){let r=e.charCodeAt(t);if(r<32||r>126)return false}return true}function Ye(e,t){let r=0,n=0,o=e.length,f=t.length;for(;r<o&&n<f;){let a=e.charCodeAt(r),i=t.charCodeAt(n),h=a>=48&&a<=57,u=i>=48&&i<=57;if(h!==u)return true;if(h){for(;r<o&&e.charCodeAt(r)===48;)r++;for(;n<f&&t.charCodeAt(n)===48;)n++;let d=r,l=n;for(;r<o;){let C=e.charCodeAt(r);if(C<48||C>57)break;r++;}for(;n<f;){let C=t.charCodeAt(n);if(C<48||C>57)break;n++;}let N=r-d;if(N!==n-l)return true;for(let C=0;C<N;C++)if(e.charCodeAt(d+C)!==t.charCodeAt(l+C))return true}else {if(a>=65&&a<=90&&(a+=32),i>=65&&i<=90&&(i+=32),a!==i)return true;r++,n++;}}return r!==o||n!==f}function ge(e,t){let r=e.length,n=new Array(r);for(let d=0;d<r;d++)n[d]=d;n.sort((d,l)=>t.compare(e[d],e[l]));let o=new Int32Array(r);if(r===0)return o;let a=Ke(t)?new Uint8Array(r):null,i=n[0],h=a?me(e[i])?1:2:0;a&&(a[i]=h);let u=0;o[i]=0;for(let d=1;d<r;d++){let l=n[d],N=e[i],C=e[l],x=0;a&&(x=a[l],x===0&&(x=me(C)?1:2,a[l]=x)),(h===1&&x===1&&Ye(N,C)||t.compare(N,C)!==0)&&u++,o[l]=u,i=l,h=x;}return o}var Z=BigInt(Number.MAX_SAFE_INTEGER),be=-Z,he=/^[+-]?\\d+$/;function X(e){if(typeof e=="bigint")return e>Z||e<be?e:null;if(typeof e!="string"||e.length<16)return null;let t=e.trim();if(!he.test(t))return null;let r=BigInt(t);return r>Z||r<be?r:null}function pe(e,t){return typeof e=="number"&&typeof t=="number"?e-t:typeof e=="number"&&Number.isNaN(e)||typeof t=="number"&&Number.isNaN(t)?Number.NaN:e<t?-1:e>t?1:0}function $e(e){if(typeof e=="bigint")return e;if(typeof e=="number")return Number.isSafeInteger(e)?BigInt(e):null;if(typeof e!="string")return null;let t=e.trim();return he.test(t)?BigInt(t):null}function ye(e){let t=e.map(f=>$e(f)),r=e.map((f,a)=>a);r.sort((f,a)=>{let i=t[f],h=t[a];return i!==null&&h!==null?i<h?-1:i>h?1:0:i!==null?-1:h!==null?1:e[f]<e[a]?-1:e[f]>e[a]?1:0});let n=new Int32Array(e.length),o=0;return r.forEach((f,a)=>{if(a>0){let i=r[a-1];(t[f]!==null?t[f]===t[i]:t[i]===null&&e[f]===e[i])||(o=a);}n[f]=o;}),n}function Ce(e,t,r){let n=e.length,o=new Uint32Array(n),f=new Uint32Array(n),a=0,i=0;for(let g=0;g<n;g++){let p=e[g];Number.isNaN(t[p])?f[i++]=p:o[a++]=p;}let h=new Uint32Array(a),u=new Uint32Array(a),d=new Float64Array(1),l=new Uint32Array(d.buffer);for(let g=0;g<a;g++){let p=t[o[g]];d[0]=p===0?0:p;let y=l[0],b=l[1];b&2147483648?(y=~y>>>0,b=~b>>>0):b=(b^2147483648)>>>0,r&&(y=~y>>>0,b=~b>>>0),h[g]=y,u[g]=b;}let N=new Uint32Array(a);for(let g=0;g<a;g++)N[g]=g;let C=new Uint32Array(a),x=new Uint32Array(256);for(let g=0;g<8;g++){let p=g>=4,y=(g&3)*8,b=p?u:h;x.fill(0);for(let S=0;S<a;S++)x[b[N[S]]>>>y&255]++;if(x[b[N[0]]>>>y&255]===a)continue;let I=0;for(let S=0;S<256;S++){let F=x[S];x[S]=I,I+=F;}for(let S=0;S<a;S++){let F=N[S];C[x[b[F]>>>y&255]++]=F;}let A=N;N=C,C=A;}let k=new Uint32Array(n);for(let g=0;g<a;g++)k[g]=o[N[g]];for(let g=0;g<i;g++)k[a+g]=f[g];return k}var Xe=["=","<>",">",">=","<","<=","contains","notcontains","startswith","endswith","isnull","isnotnull","in","notin","between","period"];new Set(Xe);function Ne(e){return e.nodes!==void 0}var ke=new Map;function Qe(e){let t=ke.get(e);return t||(t=new Intl.Collator(e,{numeric:true,sensitivity:"base"}),ke.set(e,t)),t}var Ie=new WeakMap;function Je(e,t,r){let n=Ie.get(e);n||(n=new Map,Ie.set(e,n));let o=n.get(r);return (!o||o.length!==t.length)&&(o=e.kind==="text"&&e.integer?ye(t):ge(t,Qe(r)),n.set(r,o)),o}var we=new WeakMap;function Se(e,t){let r=we.get(e);if(!r)r=t.map(G),we.set(e,r);else for(let n=r.length;n<t.length;n++)r.push(G(t[n]));return r}function D(e){if(e instanceof Date)return e.getTime();if(typeof e=="number")return e;if(typeof e=="boolean")return e?1:0;if(e==null)return Number.NaN;let t=Number(e);if(!Number.isNaN(t))return t;let r=Date.parse(String(e));return Number.isNaN(r)?Number.NaN:r}function Ze(e,t){let r=e.dictionary,n=new Uint8Array(r.length),o=false,f=t.operator;if(f==="isnull")return {mask:n,nilPasses:true};if(f==="isnotnull")return n.fill(1),{mask:n,nilPasses:false};let a=Se(e,r),i=t.value==null?"":G(String(t.value)),h=!e.integer;switch(f){case "=":case "<>":{let u=t.value===null||t.value===void 0,d=u?"":String(t.value).toLowerCase();for(let l=0;l<r.length;l++){let N=u?false:h?String(r[l]).toLowerCase()===d:et(r[l],t.value);n[l]=(f==="="?N:!N)?1:0;}o=f==="="?u:!u;break}case "contains":for(let u=0;u<r.length;u++)n[u]=a[u].includes(i)?1:0;break;case "notcontains":for(let u=0;u<r.length;u++)n[u]=a[u].includes(i)?0:1;o=true,i===""&&(o=false);break;case "startswith":for(let u=0;u<r.length;u++)n[u]=a[u].startsWith(i)?1:0;break;case "endswith":for(let u=0;u<r.length;u++)n[u]=a[u].endsWith(i)?1:0;break;case "in":{if(h){let d=Ae(t.value);for(let l=0;l<r.length;l++)n[l]=d.has(String(r[l]).toLowerCase())?1:0;break}let u=xe(t.value);for(let d=0;d<r.length;d++)n[d]=u.has(H(r[d]))?1:0;break}case "notin":{if(h){let d=Ae(t.value);for(let l=0;l<r.length;l++)n[l]=d.has(String(r[l]).toLowerCase())?0:1;o=true;break}let u=xe(t.value);for(let d=0;d<r.length;d++)n[d]=u.has(H(r[d]))?0:1;o=true;break}case ">":case ">=":case "<":case "<=":{for(let u=0;u<r.length;u++){let d=ee(r[u],t.value);n[u]=f===">"&&d>0||f===">="&&d>=0||f==="<"&&d<0||f==="<="&&d<=0?1:0;}break}case "between":{if(!Array.isArray(t.value)||t.value.length<2)break;let[u,d]=t.value;for(let l=0;l<r.length;l++)n[l]=ee(r[l],u)>=0&&ee(r[l],d)<=0?1:0;break}default:n.fill(1),o=true;}return {mask:n,nilPasses:o}}function H(e){let t=X(e);if(t!==null)return t;if(e instanceof Date)return e.getTime();if(typeof e=="number")return e;if(typeof e=="boolean")return e?1:0;let r=Number(e);return Number.isNaN(r)?String(e).toLowerCase():r}function Ae(e){let t=new Set;for(let r of Array.isArray(e)?e:[])r!=null&&t.add(String(r).toLowerCase());return t}function et(e,t){return H(e)===H(t)}function xe(e){let t=new Set,r=Array.isArray(e)?e:[];for(let n of r){if(n==null)continue;let o=H(n);typeof o=="number"&&Number.isNaN(o)||t.add(o);}return t}function tt(e){let t=new Set,r=Array.isArray(e)?e:[];for(let n of r){let o=D(n);Number.isNaN(o)||t.add(o);}return t}var te=new WeakMap;function Te(e){let t=te.get(e);return t||(t=tt(e.value),te.set(e,t)),t}function ee(e,t){let r=X(e),n=X(t);if(r!==null||n!==null){let h=r??D(e),u=n??D(t),d=pe(h,u);if(!Number.isNaN(d))return d}let o=D(e),f=D(t);if(!Number.isNaN(o)&&!Number.isNaN(f))return o-f;let a=String(e).toLowerCase(),i=String(t).toLowerCase();return a<i?-1:a>i?1:0}function rt(e,t){if(t.operator==="in")return !Number.isNaN(e)&&Te(t).has(e);if(t.operator==="notin")return Number.isNaN(e)||!Te(t).has(e);let r=Number.isNaN(e);switch(t.operator){case "isnull":return r;case "isnotnull":return !r;case "=":return !r&&e===D(t.value);case "<>":return r||e!==D(t.value);case ">":return !r&&e>D(t.value);case ">=":return !r&&e>=D(t.value);case "<":return !r&&e<D(t.value);case "<=":return !r&&e<=D(t.value);case "between":return r||!Array.isArray(t.value)||t.value.length<2?false:e>=D(t.value[0])&&e<=D(t.value[1]);case "contains":case "notcontains":case "startswith":case "endswith":{let n=r?"":String(e),o=t.value==null?"":G(String(t.value)),f=n.toLowerCase();return t.operator==="contains"?f.includes(o):t.operator==="notcontains"?!f.includes(o):t.operator==="startswith"?f.startsWith(o):f.endsWith(o)}default:return true}}function re(e,t,r){if(Ne(e))return e.nodes.length===0?true:e.logic==="or"?e.nodes.some(i=>re(i,t,r)):e.nodes.every(i=>re(i,t,r));let n=t.columns[e.columnId];if(!n)return true;if(n.kind==="numeric")return rt(n.values[r],e);let o=ne.get(e),f=o??Ze(n,e);o||ne.set(e,f);let a=n.codes[r];return a===R?f.nilPasses:f.mask[a]===1}var ne=new WeakMap,nt=65535;function oe(e,t){ne=new WeakMap,te=new WeakMap;let{rowCount:r}=e,n=t.locale??"en",o=G(t.searchText.trim()),f=!!t.filter,a=o.length>0,i=[];if(a){let k=/^[0-9.+\\-einftya]*$/.test(o),g=(y,b,I)=>{let A=Se(b,y),S=new Uint8Array(y.length),F=false;for(let v=0;v<A.length;v++)(A[v].includes(o)||I!==void 0&&I.has(y[v]))&&(S[v]=1,F=true);return F?S:null},p=new Map;if(t.searchLabelHits)for(let[y,b]of Object.entries(t.searchLabelHits))p.set(y,new Set(b));for(let y of t.searchColumns){let b=e.columns[y];if(!b)continue;let I=p.get(y);if(b.kind==="text"){let A=g(b.dictionary,b,I);A&&i.push({codes:b.codes,mask:A,values:null,numberHits:null,scanText:true});}else if(b.searchDictionary&&b.searchCodes){let A=g(b.searchDictionary,b,I);A&&i.push({codes:b.searchCodes,mask:A,values:null,numberHits:null,scanText:true});}else {let A=null;if(I)for(let S of I){let F=Number(S);Number.isNaN(F)||(A??=new Set).add(F);}(k||A)&&i.push({codes:null,mask:null,values:b.values,numberHits:A,scanText:k});}}}let h=t.onProgress,u=t.isCancelled,d={order:new Uint32Array(0),cancelled:true},l;if(!f&&!a){l=new Uint32Array(r);for(let k=0;k<r;k++)l[k]=k;}else {let k=new Uint32Array(r),g=0;for(let p=0;p<r;p++){if((p&nt)===0){if(u?.())return d;h?.("filtering",r===0?1:p/r);}if(!(f&&!re(t.filter,e,p))){if(a){let y=false;for(let b of i)if(b.codes&&b.mask){let I=b.codes[p];if(I!==R&&b.mask[I]===1){y=true;break}}else if(b.values){let I=b.values[p];if(!Number.isNaN(I)){if(b.numberHits!==null&&b.numberHits.has(I)){y=true;break}if(b.scanText&&String(I).toLowerCase().includes(o)){y=true;break}}}if(!y)continue}k[g++]=p;}}l=k.subarray(0,g),h?.("filtering",1);}if(t.sort.length===0)return {order:l.slice()};if(u?.())return d;let N=[],C=t.absoluteSort??[];for(let k of t.sort){let g=e.columns[k.columnId];if(!g)continue;let p=k.direction==="desc"?-1:1;if(g.kind==="numeric"){let y=g.values;if(C.includes(k.columnId)){y=new Float64Array(g.values.length);for(let b=0;b<y.length;b++)y[b]=Math.abs(g.values[b]);}N.push({dir:p,numeric:y,codes:null,ranks:null});}else N.push({dir:p,numeric:null,codes:g.codes,ranks:Je(g,g.dictionary,n)});}if(N.length===0)return {order:l.slice()};if(l.length>=5e4){let k=[];for(let p of N){if(p.numeric){k.push(p.numeric);continue}let y=p.codes,b=p.ranks,I=new Float64Array(r);for(let A=0;A<r;A++){let S=y[A];I[A]=S===R?Number.NaN:b[S];}k.push(I);}let g=l;for(let p=N.length-1;p>=0;p--){if(u?.())return d;h?.("sorting",(N.length-1-p)/N.length),g=Ce(g,k[p],N[p].dir===-1);}return h?.("sorting",1),{order:g===l?l.slice():g}}h?.("sorting",null);let x=Array.from(l);return x.sort((k,g)=>{for(let p of N)if(p.numeric){let y=p.numeric[k],b=p.numeric[g],I=Number.isNaN(y),A=Number.isNaN(b);if(I||A){if(I&&A)continue;return I?1:-1}if(y!==b)return (y<b?-1:1)*p.dir}else {let y=p.codes[k],b=p.codes[g];if(y===R||b===R){if(y===R&&b===R)continue;return y===R?1:-1}let I=p.ranks[y],A=p.ranks[b];if(I!==A)return (I<A?-1:1)*p.dir}return k-g}),{order:Uint32Array.from(x)}}var ot=30,Ee="Other",at=1e4;var L=864e5,st=60,it=20,j=2e3,ae=["day","week","month","quarter","year"],Fe={day:L,week:7*L,month:30.44*L,quarter:91.31*L,year:365.25*L};function De(e,t){let r=new Date(e),n=r.getUTCFullYear(),o=r.getUTCMonth();switch(t){case "day":return Date.UTC(n,o,r.getUTCDate());case "week":{let f=Date.UTC(n,o,r.getUTCDate()),a=(new Date(f).getUTCDay()+6)%7;return f-a*L}case "month":return Date.UTC(n,o,1);case "quarter":return Date.UTC(n,Math.floor(o/3)*3,1);default:return Date.UTC(n,0,1)}}function Me(e,t){let r=new Date(e),n=r.getUTCFullYear(),o=r.getUTCMonth();switch(t){case "day":return e+L;case "week":return e+7*L;case "month":return Date.UTC(n,o+1,1);case "quarter":return Date.UTC(n,o+3,1);default:return Date.UTC(n+1,0,1)}}var se=e=>e<10?`0${e}`:String(e);function ut(e,t){let r=new Date(e),n=r.getUTCFullYear();switch(t){case "year":return String(n);case "quarter":return `${n}-Q${Math.floor(r.getUTCMonth()/3)+1}`;case "month":return `${n}-${se(r.getUTCMonth()+1)}`;default:return `${n}-${se(r.getUTCMonth()+1)}-${se(r.getUTCDate())}`}}function lt(e){if(!(e>0)||!Number.isFinite(e))return 1;let r=10**Math.floor(Math.log10(e)),n=e/r;return (n<=1?1:n<=2?2:n<=5?5:10)*r}function ct(e,t,r){let n=Number.isFinite(t)&&Number.isFinite(r)?Math.max(0,r-t):0;if(e.kind==="date"){let h=e.unit??"auto",u,d=false;if(h==="auto")u=ae.find(l=>n/Fe[l]+1<=st)??"year";else for(u=h;n/Fe[u]+1>j;){let l=ae[ae.indexOf(u)+1];if(!l)break;u=l,d=true;}return {info:{kind:"date",unit:u,adjusted:d},keyOf:l=>Number.isFinite(l)?De(l,u):Number.NaN,endOf:l=>Me(l,u),labelOf:l=>ut(l,u),keys:(l,N)=>{let C=[];if(!Number.isFinite(l)||!Number.isFinite(N))return C;for(let x=De(l,u);x<=N&&C.length<j;x=Me(x,u))C.push(x);return C}}}let o=e.size&&e.size>0?e.size:lt(n/Math.max(1,e.bins??it));(!(o>0)||!Number.isFinite(o))&&(o=1);let f=false;for(;n/o+1>j;)o*=2,f=true;let a=o;return {info:{kind:"number",size:a,adjusted:f},keyOf:h=>Number.isFinite(h)?Math.floor(h/a)*a:Number.NaN,endOf:h=>h+a,labelOf:h=>{let u=d=>String(Number(d.toPrecision(12)));return `${u(h)} \\u2013 ${u(h+a)}`},keys:(h,u)=>{let d=[];if(!Number.isFinite(h)||!Number.isFinite(u))return d;let l=Math.floor(h/a)*a;for(let N=l;N<=u&&d.length<j;N+=a)d.push(N);return d}}}function ft(e,t){if(e==null)return Number.NaN;if(e instanceof Date)return e.getTime();if(typeof e=="number")return e;if(t==="number")return Number(e);let r=Number(e);return Number.isNaN(r)?Date.parse(String(e)):r}function dt(e,t){if(!e)return {};let r=new Float64Array(t.length),n=new Float64Array(t.length);for(let o=0;o<t.length;o++){let f=t[o].start;r[o]=f,n[o]=Number.isNaN(f)?Number.NaN:e.endOf(f);}return {bucket:e.info,bucketStarts:r,bucketEnds:n}}var Y=-1;function Re(e,t,r,n){let o=Math.max(1,r.maxCategories??ot),f=r.otherBucket!==false,a=r.series.length,i=e[r.categoryColumnId],h=r.series.map(s=>e[s.columnId]),u=r.series.map(s=>s.aggregate==="countDistinct"),d=new Map,l=null,N=0,C=false,x=(s,c=Number.NaN)=>({label:s,sum:new Float64Array(a),numericCount:new Float64Array(a),count:new Float64Array(a),min:new Float64Array(a).fill(Number.POSITIVE_INFINITY),max:new Float64Array(a).fill(Number.NEGATIVE_INFINITY),first:new Float64Array(a).fill(Number.NaN),firstAt:new Float64Array(a).fill(Number.POSITIVE_INFINITY),last:new Float64Array(a).fill(Number.NaN),lastAt:new Float64Array(a).fill(Number.NEGATIVE_INFINITY),distinct:u.map(m=>m?new Set:null),seq:N++,start:c}),k=(s,c)=>{if(!i)return Number.NaN;if(i.kind==="numeric")return i.values[s];let m=i.codes[s];return m===Y?Number.NaN:ft(i.dictionary[m],c)},g=r.categoryBucket,p=null,y=Number.POSITIVE_INFINITY,b=Number.NEGATIVE_INFINITY;if(g){for(let s=0;s<t.length;s++){let c=k(t[s],g.kind);Number.isFinite(c)&&(c<y&&(y=c),c>b&&(b=c));}p=ct(g,y,b);}let I=0,A=1,S=2,F=new Uint8Array(a),v=new Array(a).fill(null),ue=new Array(a).fill(null),le=new Array(a).fill(null);for(let s=0;s<a;s++){let c=r.series[s].aggregate;F[s]=c==="count"?I:u[s]?A:S;let m=h[s];if(!m)continue;if(m.kind==="numeric"){v[s]=m.values;continue}ue[s]=m.codes;let E=m.dictionary,M=new Float64Array(E.length);for(let T=0;T<E.length;T++){let w=E[T],K=w===""?Number.NaN:Number(w);M[T]=Number.isFinite(K)?K:Number.NaN;}le[s]=M;}for(let s=0;s<t.length;s++){let c=t[s],m,E,M=Number.NaN;if(p&&g)M=p.keyOf(k(c,g.kind)),m=Number.isNaN(M)?"":M,E=Number.isNaN(M)?"":p.labelOf(M);else if(!i)m=E="";else if(i.kind==="text"){let w=i.codes[c];m=E=w===Y?"":i.dictionary[w];}else {let w=i.values[c];m=E=Number.isNaN(w)?"":String(w);}let T=d.get(m);T||(d.size>=at?(C=true,l??=x(r.otherLabel??Ee),T=l):(T=x(E,M),d.set(m,T)));for(let w=0;w<a;w++){let K=F[w],V=v[w],q=ue[w];if(K===I){(V!==null?!Number.isNaN(V[c]):q!==null&&q[c]!==Y)&&T.count[w]++;continue}if(K===A){let P=T.distinct[w];if(P)if(q!==null){let fe=q[c];fe!==Y&&P.add(fe);}else V!==null&&!Number.isNaN(V[c])&&P.add(V[c]);continue}let B;if(V!==null)B=V[c];else if(q!==null){let P=q[c];B=P===Y?Number.NaN:le[w][P];}else B=Number.NaN;Number.isNaN(B)||(T.numericCount[w]++,T.sum[w]+=B,B<T.min[w]&&(T.min[w]=B),B>T.max[w]&&(T.max[w]=B),s<T.firstAt[w]&&(T.first[w]=B,T.firstAt[w]=s),s>=T.lastAt[w]&&(T.last[w]=B,T.lastAt[w]=s));}}let Pe=(s,c)=>{for(let m=0;m<a;m++){s.sum[m]+=c.sum[m],s.numericCount[m]+=c.numericCount[m],s.count[m]+=c.count[m],c.min[m]<s.min[m]&&(s.min[m]=c.min[m]),c.max[m]>s.max[m]&&(s.max[m]=c.max[m]),c.firstAt[m]<s.firstAt[m]&&(s.first[m]=c.first[m],s.firstAt[m]=c.firstAt[m]),c.lastAt[m]>s.lastAt[m]&&(s.last[m]=c.last[m],s.lastAt[m]=c.lastAt[m]);let E=s.distinct[m],M=c.distinct[m];if(E&&M)for(let T of M)E.add(T);}},ce=(s,c)=>{switch(r.series[c].aggregate){case "count":return s.count[c];case "countDistinct":return s.distinct[c]?.size??0;case "sum":return s.numericCount[c]>0?s.sum[c]:Number.NaN;case "avg":return s.numericCount[c]>0?s.sum[c]/s.numericCount[c]:Number.NaN;case "min":return s.numericCount[c]>0?s.min[c]:Number.NaN;case "max":return s.numericCount[c]>0?s.max[c]:Number.NaN;case "first":return s.numericCount[c]>0?s.first[c]:Number.NaN;case "last":return s.numericCount[c]>0?s.last[c]:Number.NaN;default:return Number.NaN}},z=[...d.values()],Ge=z.length+(l?1:0),$=s=>{if(a===0)return Number.NEGATIVE_INFINITY;let c=ce(s,0);return Number.isNaN(c)?Number.NEGATIVE_INFINITY:c},O;if(p){O=p.keys(y,b).map(c=>d.get(c)??x(p.labelOf(c),c));let s=d.get("");s&&O.push(s);}else {let s=z;if(z.length>o){let c=[...z].sort((m,E)=>$(E)-$(m));if(s=c.slice(0,o),f){l??=x(r.otherLabel??Ee);for(let m of c.slice(o))Pe(l,m);}}switch(r.categoryOrder??"value-desc"){case "category-asc":s=[...s].sort((c,m)=>c.label.localeCompare(m.label));break;case "first-seen":s=[...s].sort((c,m)=>c.seq-m.seq);break;default:s=[...s].sort((c,m)=>$(m)-$(c));}O=l?[...s,l]:s;}return {categories:O.map(s=>s.label),series:r.series.map((s,c)=>{let m=new Float64Array(O.length);for(let E=0;E<O.length;E++)m[E]=ce(O[E],c);return {label:s.label??n.series[c]??s.columnId,columnId:s.columnId,aggregate:s.aggregate,values:m}}),truncated:p?false:z.length>o||C,otherIndex:p?null:l?O.length-1:null,rowCount:t.length,categoryCount:p?O.length:Ge,rankingExact:!C,...dt(p,O)}}function Ue(){let e=new WeakMap;return {get(t){let r=e.get(t);if(r===void 0){r=new Map;let n=t.kind==="text"?t.dictionary:t.searchDictionary??[];for(let o=0;o<n.length;o++)r.set(n[o],o);e.set(t,r);}return r}}}function Be(e,t,r){let n=r.get(e);return n===void 0&&(n=t.length,t.push(e),r.set(e,n)),n}function Oe(e,t,r){for(let n of t){let o=e[n.columnId];if(!o)continue;let{indices:f}=n;if(o.kind==="numeric"){let a=n.numbers??[];for(let i=0;i<f.length;i++)o.values[f[i]]=a[i];if(o.searchCodes&&o.searchDictionary&&n.labels){let i=r.get(o);for(let h=0;h<f.length;h++){let u=n.labels[h];o.searchCodes[f[h]]=u===null?R:Be(u,o.searchDictionary,i);}}}else {let a=n.labels??[],i=r.get(o);for(let h=0;h<f.length;h++){let u=a[h];o.codes[f[h]]=u===null?R:Be(u,o.dictionary,i);}}}}function _e(e){if(e.kind==="numeric"){let t={kind:"numeric",values:new Float64Array(e.buffer)};return e.searchBuffer&&e.searchDictionary&&(t.searchCodes=new Int32Array(e.searchBuffer),t.searchDictionary=e.searchDictionary),t}return {kind:"text",codes:new Int32Array(e.buffer),dictionary:e.dictionary??[],...e.integer?{integer:true}:{}}}var ve=self,W=new Map;function U(e,t){ve.postMessage(e,t??[]);}function Le(e,t){for(let r of e)t[r.columnId]=_e(r);}function mt(e){let t={};Le(e.columns,t),W.set(e.gridId,{dataVersion:e.dataVersion,table:{rowCount:e.rowCount,columns:t}}),U({action:"ready",gridId:e.gridId,dataVersion:e.dataVersion});}function gt(e){let t=W.get(e.gridId);!t||t.dataVersion!==e.dataVersion||(Le(e.columns,t.table.columns),U({action:"ready",gridId:e.gridId,dataVersion:e.dataVersion}));}var _=new Set,J=(e,t)=>`${e}:${t}`,Q=new Map,ie=new Map;function Ve(e,t){t>(Q.get(e)??0)&&Q.set(e,t);}function qe(e,t){let r=J(e,t);return ()=>_.has(r)||t<=(ie.get(e)??0)}function bt(e){Ve(e.gridId,e.requestId);let t=W.get(e.gridId);if(!t||t.dataVersion!==e.dataVersion)return;let r=J(e.gridId,e.requestId),n=qe(e.gridId,e.requestId);if(n()){_.delete(r),U({action:"cancelled",gridId:e.gridId,requestId:e.requestId});return}try{let{order:o,cancelled:f}=oe(t.table,{sort:e.sort,filter:e.filter,searchText:e.searchText,searchColumns:e.searchColumns,searchLabelHits:e.searchLabelHits,locale:e.locale,absoluteSort:e.absoluteSort,onProgress:(a,i)=>U({action:"progress",gridId:e.gridId,dataVersion:e.dataVersion,requestId:e.requestId,phase:a,fraction:i}),isCancelled:n});if(f){_.delete(r),U({action:"cancelled",gridId:e.gridId,requestId:e.requestId});return}U({action:"result",gridId:e.gridId,dataVersion:e.dataVersion,requestId:e.requestId,order:o.buffer,visibleCount:o.length},[o.buffer]),_.delete(r);}catch(o){U({action:"error",gridId:e.gridId,requestId:e.requestId,message:o instanceof Error?o.message:String(o)});}}function ht(e){Ve(e.gridId,e.requestId);let t=W.get(e.gridId);if(!t||t.dataVersion!==e.dataVersion)return;let r=J(e.gridId,e.requestId),n=qe(e.gridId,e.requestId);if(n()){_.delete(r),U({action:"cancelled",gridId:e.gridId,requestId:e.requestId});return}try{let{order:o,cancelled:f}=oe(t.table,{sort:[],filter:e.filter,searchText:e.searchText,searchColumns:e.searchColumns,searchLabelHits:e.searchLabelHits,locale:e.locale,isCancelled:n});if(f){_.delete(r),U({action:"cancelled",gridId:e.gridId,requestId:e.requestId});return}let a={categoryColumnId:e.categoryColumnId,series:e.series,maxCategories:e.maxCategories,otherBucket:e.otherBucket,categoryOrder:e.categoryOrder,categoryBucket:e.categoryBucket,otherLabel:e.otherLabel},i=Re(t.table.columns,o,a,{series:e.series.map(C=>C.label??C.columnId)}),h=i.categories.length,u=new Float64Array(i.series.length*h);for(let C=0;C<i.series.length;C++)u.set(i.series[C].values,C*h);let d=i.bucketStarts,l=i.bucketEnds,N=[u.buffer];d&&l&&N.push(d.buffer,l.buffer),U({action:"aggregated",gridId:e.gridId,dataVersion:e.dataVersion,requestId:e.requestId,categories:i.categories,values:u.buffer,seriesLabels:i.series.map(C=>C.label),truncated:i.truncated,otherIndex:i.otherIndex,rowCount:i.rowCount,categoryCount:i.categoryCount,rankingExact:i.rankingExact,bucket:i.bucket,bucketStarts:d?.buffer,bucketEnds:l?.buffer},N),_.delete(r);}catch(o){U({action:"error",gridId:e.gridId,requestId:e.requestId,message:o instanceof Error?o.message:String(o)});}}var pt=Ue();function yt(e){let t=W.get(e.gridId);!t||t.dataVersion!==e.fromVersion||(Oe(t.table.columns,e.patches,pt),t.dataVersion=e.toVersion);}ve.onmessage=e=>{let t=e.data;switch(t.action){case "init":mt(t);break;case "addColumns":gt(t);break;case "patchRows":yt(t);break;case "compute":bt(t);break;case "aggregate":ht(t);break;case "cancel":t.requestId===void 0?ie.set(t.gridId,Q.get(t.gridId)??0):_.add(J(t.gridId,t.requestId));break;case "dispose":W.delete(t.gridId),Q.delete(t.gridId),ie.delete(t.gridId);for(let r of _)r.startsWith(`${t.gridId}:`)&&_.delete(r);break}};',Bn=null;function _p(){return ld.length>0}function Up(){if(Bn)return Bn;if(!_p())throw new Error("[datagrid] this build carries no embedded worker (the build step that inlines it did not run). Pass `worker={{ url }}` to point at a copy of datagrid.worker.js instead.");if(typeof Blob>"u"||typeof URL?.createObjectURL!="function")throw new Error("[datagrid] Blob URLs are unavailable, so the embedded worker cannot start.");return Bn=URL.createObjectURL(new Blob([ld],{type:"text/javascript"})),Bn}function qp(e,t,u){if(t.kind==="numeric"){let n={columnId:e,kind:"numeric",buffer:t.values.buffer};return u.push(n.buffer),t.searchCodes&&t.searchDictionary&&(n.searchBuffer=t.searchCodes.buffer,n.searchDictionary=t.searchDictionary,u.push(n.searchBuffer)),n}let r={columnId:e,kind:"text",buffer:t.codes.buffer,dictionary:t.dictionary,...t.integer?{integer:!0}:{}};return u.push(r.buffer),r}var jp=2e4,Ws=!1;function Yp(e,t){typeof process<"u"&&process.env&&!t||Ws&&!t||(Ws=!0,console.warn(`[datagrid] the Web Worker could not be started, so filtering and sorting are running on the main thread. The grid still works \u2014 it is just slower on large data.
|
|
4
|
+
`+zh(t),...Iu(r),...Object.keys(n).length>0?{$defs:n}:{}}}var zt=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),mo=e=>typeof e=="string"&&!Number.isNaN(Date.parse(e)),Br=e=>{let t=typeof e=="number"?e:typeof e=="string"&&e.trim()!==""?Number(e):Number.NaN;return Number.isFinite(t)?t:null};function _h(e,t,u){let r=e.columnId,n=e.operator,a=typeof r=="string"?t.get(r):void 0,o=c=>(u.push(`filter on ${String(r)} (${String(n)}): ${c}`),null);if(!a)return o("no such column");if(!a.filterable)return o("the column cannot be filtered");let l=a.id,i=a.dataType,s=e.value,h=typeof n=="string"?a.operators?.find(c=>c.id===n):void 0;if(h){if(h.operandType==="none")return{columnId:l,operator:h.id};if(h.operandType==="number"){let c=Br(s);return c===null?o("expected a number"):{columnId:l,operator:h.id,value:c}}return h.operandType==="date"&&!mo(s)?o("expected a YYYY-MM-DD date"):s==null||typeof s=="object"?o("expected a value"):{columnId:l,operator:h.id,value:String(s)}}if(H0.includes(n))return{columnId:l,operator:n};if(n==="in")return!Array.isArray(s)||s.length===0?o('"in" needs a non-empty list'):{columnId:l,operator:n,value:[...s]};if(i==="boolean"){if(n!=="=")return o('a yes/no column only takes "="');let c=s===!0||s==="true"?!0:s===!1||s==="false"?!1:null;return c===null?o("expected true or false"):{columnId:l,operator:n,value:c}}if(i==="number"){if(n==="between"){let p=Array.isArray(s)&&s.length===2?s.map(Br):null;return!p||p[0]===null||p[1]===null?o("expected [min, max] numbers"):{columnId:l,operator:n,value:p}}if(!ur.includes(n))return o("not an operator for numbers");let c=Br(s);return c===null?o("expected a number"):{columnId:l,operator:n,value:c}}if(i==="bigint"){let c=C=>{let E=typeof C=="number"&&Number.isSafeInteger(C)?String(C):typeof C=="string"?C.trim():null;return E!==null&&/^[+-]?\d+$/.test(E)?E:null};if(n==="between"){let C=Array.isArray(s)&&s.length===2?s.map(c):null;return!C||C[0]===null||C[1]===null?o("expected [min, max] integers"):{columnId:l,operator:n,value:C}}if(!ur.includes(n))return o("not an operator for integers");let p=c(s);return p===null?o("expected an integer written as digits"):{columnId:l,operator:n,value:p}}if(i==="date"){if(n==="period"){let c=zt(s)?s:null,p=c?.period;if(!p||!Gr.includes(p))return o("unknown period");if(Hh.includes(p)){let C=Br(c.days);return C===null||C<1||!Number.isInteger(C)?o(`${p} needs a whole number of days`):{columnId:l,operator:n,value:{period:p,days:C}}}return{columnId:l,operator:n,value:{period:p}}}return n==="between"?!Array.isArray(s)||s.length!==2||!s.every(mo)?o("expected [from, to] dates"):{columnId:l,operator:n,value:[s[0],s[1]]}:ur.includes(n)?mo(s)?{columnId:l,operator:n,value:s}:o("expected a YYYY-MM-DD date"):o("not an operator for dates")}if(!V0.includes(n))return o("not an operator for text");if(s==null||typeof s=="object")return o("expected a value");let m=a.values?.find(c=>String(c.value)===String(s));return{columnId:l,operator:n,value:m&&(n==="="||n==="<>")?m.value:String(s)}}function K0(e,t,u,r){if(!zt(e))return u.push("filter: a condition that is not an object"),null;if(Array.isArray(e.nodes)){if(r>8)return u.push("filter: groups nested more than 8 deep"),null;let n=e.logic==="or"?"or":"and";e.logic!=="and"&&e.logic!=="or"&&u.push('filter: a group without and/or, read as "and"');let a=e.nodes.map(o=>K0(o,t,u,r+1)).filter(o=>o!==null);return a.length===0?null:a.length===1?a[0]:{logic:n,nodes:a}}return _h(e,t,u)}function Uh(e,t){let u=[],r=e;if(typeof r=="string")try{r=JSON.parse(r)}catch{return{state:{},dropped:["the answer is not valid JSON"]}}if(!zt(r))return{state:{},dropped:["the answer is not an object"]};let{features:n}=t,a=new Map(t.columns.map(l=>[l.id,l])),o={};if(n.has("filter")&&"filter"in r&&(o.filter=r.filter===null?null:K0(r.filter,a,u,0)),n.has("sort")&&"sort"in r)if(!Array.isArray(r.sort))u.push("sort: not a list");else{let l=new Set;o.sort=[];for(let i of r.sort){let s=zt(i)&&typeof i.columnId=="string"?a.get(i.columnId):void 0,h=zt(i)?i.direction:void 0;!s||!s.sortable?u.push(`sort by ${zt(i)?String(i.columnId):"?"}: not a sortable column`):h!=="asc"&&h!=="desc"?u.push(`sort by ${s.id}: direction must be asc or desc`):l.has(s.id)||(l.add(s.id),o.sort.push({columnId:s.id,direction:h}))}}if(n.has("grouping")&&"groupBy"in r)if(!Array.isArray(r.groupBy))u.push("groupBy: not a list");else{let l=[];for(let i of r.groupBy){let s=typeof i=="string"?a.get(i):void 0;!s||!s.groupable?u.push(`group by ${String(i)}: not a groupable column`):l.includes(s.id)||l.push(s.id)}o.groupBy=l}if((n.has("columnVisibility")||n.has("columnSizing")||n.has("columnPinning"))&&"columns"in r)if(!Array.isArray(r.columns))u.push("columns: not a list");else{let l=new Map;for(let i of r.columns){let s=zt(i)&&typeof i.columnId=="string"?a.get(i.columnId):void 0;if(!s||!zt(i)){u.push(`column ${zt(i)?String(i.columnId):"?"}: no such column`);continue}let h={columnId:s.id};if(n.has("columnVisibility")&&"visible"in i&&(typeof i.visible=="boolean"?h.visible=i.visible:u.push(`column ${s.id}: visible must be true or false`)),n.has("columnSizing")&&i.width!==null&&i.width!==void 0){let m=Br(i.width);m===null||m<=0?u.push(`column ${s.id}: width must be a positive number`):s.resizable?h.width=m:u.push(`column ${s.id}: cannot be resized`)}n.has("columnPinning")&&"pinned"in i&&(i.pinned==="left"||i.pinned==="right"||i.pinned===null?h.pinned=i.pinned:u.push(`column ${s.id}: pinned must be left, right or null`)),l.set(s.id,{...l.get(s.id),...h})}o.columns=[...l.values()]}return n.has("search")&&"searchText"in r&&(typeof r.searchText=="string"?o.searchText=r.searchText:r.searchText===null?o.searchText="":u.push("searchText: not text")),{state:o,dropped:u}}function z0(e,t=new Set){if(Je(e))for(let u of e.nodes)z0(u,t);else t.add(e.columnId);return t}function qh(e){if(typeof e=="function")return e;let t=e;return u=>u[t]}function Xe(e,t,u){return{kind:"data",key:t,sourceIndex:u,data:e}}var $0=class{nodes=[];rows=null;invalidate(){this.nodes=[],this.rows=null}invalidateSourceIndex(e){e>=0&&e<this.nodes.length&&(this.nodes[e]=void 0)}rebase(e,t){if(this.rows===null||this.nodes.length!==e.length){this.rows=e,this.nodes=new Array(e.length);return}this.rows=e;for(let u of t)this.invalidateSourceIndex(u)}project(e,t,u){this.rows!==t&&(this.nodes=new Array(t.length),this.rows=t);let r=this.nodes,n=new Array(e.length);for(let a=0;a<e.length;a++){let o=e[a],l=r[o];if(l===void 0){let i=t[o];l=Xe(i,u(i),o),r[o]=l}n[a]=l}return n}},jh="\0nil";function Yh(e){return e.map(t=>t==null?jh:String(t)).join("")}function ks(){return{key:"",path:[],level:-1,label:"",value:null,count:0,expanded:!0,childCount:0,childCountKnown:!1,blocks:new Map}}function Qh(e,t,u){return e.blocks.get(Math.floor(t/u))?.[t%u]}function $n(e,t,u){let r=u?.get(e);if(r!==void 0)return r;let n=e.childCountKnown?e.childCount:1;for(let a of e.blocks.values())for(let o of a)o&&$t(o)&&o.expanded&&(n+=$n(o,t,u));return u?.set(e,n),n}function $t(e){return e.kind!=="data"}function Bs(e,t){let{blockSize:u,columnIds:r}=t,n=new Map,a=$n(e,u,n),o=t.range?Math.max(0,t.range.start):0,l=t.range?Math.min(a,t.range.end):a,i=new Array(a),s=[],h=[],m=t.failedSlots,c=t.staleSlots,p=new Set,C=0,E=D=>{if(!D.childCountKnown){C>=o&&C<l&&(m?.has(`${D.key}@0`)?h.push(C):p.has(`${D.key}@0`)||(p.add(`${D.key}@0`),s.push({nodeKey:D.key,path:D.path,childIndex:0}))),C++;return}for(let F=0;F<D.childCount;F++){if(C>=l)return;let x=Qh(D,F,u);if(x!==void 0&&c&&C>=o){let k=`${D.key}@${Math.floor(F/u)}`;c.has(k)&&!m?.has(k)&&!p.has(k)&&(p.add(k),s.push({nodeKey:D.key,path:D.path,childIndex:F}))}if(x===void 0){if(C>=o){let k=`${D.key}@${Math.floor(F/u)}`;m?.has(k)?h.push(C):p.has(k)||(p.add(k),s.push({nodeKey:D.key,path:D.path,childIndex:F}))}C++;continue}if(!$t(x)){C>=o&&(i[C]=x),C++;continue}if(C>=o&&x.record)i[C]={kind:"data",key:x.record.key,sourceIndex:x.record.sourceIndex,data:x.record.data,tree:{depth:x.level,hasChildren:!0,expanded:x.expanded,ancestorOnly:!1}};else if(C>=o){let k={kind:"group",key:x.key,columnId:r[x.level]??"",value:x.value,label:x.label,count:x.count,level:x.level,expanded:x.expanded,...x.aggregates?{aggregates:x.aggregates}:{}};i[C]=k}if(C++,x.expanded){let k=$n(x,u,n);C+k<=o?C+=k:E(x)}}};return E(e),{nodes:i,pending:s,failed:h}}var fo=class extends Error{constructor(){super("[datagrid] export cancelled"),this.name="ExportCancelled"}},Xh=100,Zh=100;function Jh(e,t){return JSON.stringify({sort:e.sort,filter:e.filter,searchText:e.searchText,group:t,summaries:e.summaries})}var Ts=class{mode="remote";source;keyGetter;blockSize;maxBlocks;group;groupColumnIds;root=ks();expandedByDefault=!1;toggled=new Set;onError;debugMode;tree;blocks=new Map;inFlight=new Map;failedBlocks=new Set;failedSlots=new Set;failedRows=new Set;staleBlocks=new Set;staleSlots=new Set;countStale=!1;treeInFlight=new Map;currentKey="";generation=0;clock=0;distinctCache=new Map;distinctStores=new Map;distinctInFlight=new Map;summaries={};visibleCount=0;totalCount=0;countKnown=!1;disposed=!1;constructor(e,t){this.source=e,this.keyGetter=t.keyGetter,this.blockSize=Math.max(1,t.blockSize??Xh),this.maxBlocks=Math.max(1,t.maxBlocks??Zh),this.group=t.group,this.groupColumnIds=t.groupColumnIds??[],this.onError=t.onError,this.debugMode=t.debugMode??!1,this.tree=t.tree}isTree(){return this.tree!==void 0}syncTreeExpansion(e){for(let t of e.blocks.values())for(let u of t)u&&$t(u)&&u.record&&(u.expanded=this.tree.isExpanded(u.record.key),this.syncTreeExpansion(u))}getTotalCount(){return this.totalCount}invalidate(){this.forgetFailures(),this.inFlight.clear(),this.treeInFlight.clear(),this.staleBlocks=new Set(this.blocks.keys()),this.countStale=this.countKnown,this.staleSlots=new Set,this.collectTreeSlots(this.root,this.staleSlots),this.distinctCache.clear(),this.distinctStores.clear(),this.generation++}collectTreeSlots(e,t){for(let[u,r]of e.blocks){t.add(`${e.key}@${u}`);for(let n of r)n&&$t(n)&&this.collectTreeSlots(n,t)}}dispose(){this.disposed=!0,this.blocks.clear(),this.staleBlocks.clear(),this.inFlight.clear(),this.treeInFlight.clear(),this.distinctCache.clear(),this.distinctStores.clear(),this.distinctInFlight.clear(),this.resetTree()}setGrouping(e,t){this.group=e&&e.length>0?e:void 0,this.groupColumnIds=t,this.resetTree(),this.expandedByDefault=!1,this.toggled.clear(),this.treeInFlight.clear(),this.inFlight.clear(),this.generation++}isGrouped(){return(this.group?.length??0)>0}toggleGroupPath(e){let t=this.findNode(e);return t?(t.expanded=!t.expanded,t.expanded===this.expandedByDefault?this.toggled.delete(e):this.toggled.add(e),!0):!1}setExpandedPaths(e){this.expandedByDefault=!1,this.toggled=new Set(e),this.applyExpansion(this.root)}expandAllPaths(){this.expandedByDefault=!0,this.toggled.clear(),this.applyExpansion(this.root)}getExpansion(){return{expandedByDefault:this.expandedByDefault,toggled:[...this.toggled]}}setExpansion(e,t){this.expandedByDefault=e,this.toggled=new Set(t),this.applyExpansion(this.root)}isPathExpanded(e){return this.expandedByDefault!==this.toggled.has(e)}applyExpansion(e){for(let t of e.blocks.values())for(let u of t)u&&$t(u)&&(u.expanded=this.isPathExpanded(u.key),this.applyExpansion(u))}findNode(e,t=this.root){if(t.key===e)return t;for(let u of t.blocks.values())for(let r of u)if(r&&$t(r)){let n=this.findNode(e,r);if(n)return n}return null}resetTree(){this.root=ks(),this.failedSlots.clear(),this.failedRows.clear(),this.staleSlots.clear()}forgetFailures(){this.failedBlocks.clear(),this.failedSlots.clear(),this.failedRows.clear()}isLoadFailed(e){if(e<0)return!1;if(this.isGrouped()||this.isTree())return this.failedRows.has(e);if(!this.countKnown)return this.failedBlocks.has(0)&&e<Math.max(1,this.visibleCount);let t=Math.floor(e/this.blockSize);return this.failedBlocks.has(t)&&!this.blocks.has(t)}retryFailed(){return this.failedBlocks.size===0&&this.failedSlots.size===0?!1:(this.forgetFailures(),!0)}async loadAllRows(e,t){if(this.isGrouped()||this.isTree())throw new Error("[datagrid] cannot export a server-grouped grid: the rows live in a tree the server expands on demand. Clear the grouping and export the flat result, or produce the file on the server.");let u=[],r=Math.max(1,t.pageSize),n=Number.POSITIVE_INFINITY;for(;u.length<n;){if(t.isCancelled?.()||this.disposed)throw new fo;let a=await this.source.load({skip:u.length,take:r,sort:e.sort,filter:e.filter,searchText:e.searchText});if(n=a.totalCount,n>t.maxRows)throw new Error(`[datagrid] the export would cover ${n.toLocaleString("en-US")} rows, above the ${t.maxRows.toLocaleString("en-US")} limit. Raise \`remote.exportMaxRows\` if the machine can hold that much, narrow the filter, or build the file on the server.`);if(a.rows.length===0)break;for(let o of a.rows)u.push(Xe(o,this.keyGetter(o),u.length));t.onProgress?.(u.length,n)}return u}async*streamRows(e,t){if(this.isGrouped()||this.isTree())throw new Error("[datagrid] cannot export a server-grouped grid: the rows live in a tree the server expands on demand. Clear the grouping and export the flat result, or produce the file on the server.");let u=l=>new Error(`[datagrid] the export would cover more than ${t.maxRows.toLocaleString("en-US")} rows (\`remote.exportMaxRows\`). Raise it \u2014 \`Infinity\` removes the cap \u2014 narrow the filter, or build the file on the server. Rows counted: ${l.toLocaleString("en-US")}.`),r=0,n=l=>l.map(i=>Xe(i,this.keyGetter(i),r++));if(this.source.exportRows){let l=this.source.exportRows({sort:e.sort,filter:e.filter,searchText:e.searchText,columnIds:t.columnIds},t.signal);for await(let i of l){if(t.signal.aborted||this.disposed)throw new fo;if(r+i.length>t.maxRows)throw u(r+i.length);let s=n(i);t.onProgress?.(r,null),yield s}return}let a=Math.max(1,t.pageSize),o=Number.POSITIVE_INFINITY;for(;r<o;){if(t.signal.aborted||this.disposed)throw new fo;let l=await this.source.load({skip:r,take:a,sort:e.sort,filter:e.filter,searchText:e.searchText});if(o=l.totalCount,o>t.maxRows)throw u(o);if(l.rows.length===0)break;let i=n(l.rows);t.onProgress?.(r,o),yield i}}patchRows(e){if(e.length===0)return 0;let t=new Map;for(let a of e)t.set(this.keyGetter(a),a);let u=0,r=a=>{for(let o=0;o<a.length;o++){let l=a[o];if(!l)continue;let i=t.get(l.key);i!==void 0&&(a[o]=Xe(i,l.key,l.sourceIndex),u++)}};for(let a of this.blocks.values())r(a.nodes);let n=a=>{for(let o of a.blocks.values())for(let l=0;l<o.length;l++){let i=o[l];if(!i)continue;if($t(i)){n(i);continue}let s=t.get(i.key);s!==void 0&&(o[l]=Xe(s,i.key,i.sourceIndex),u++)}};return n(this.root),u}getSummaries(){return this.summaries}supportsDistinctValues(){return typeof this.source.loadDistinctValues=="function"}loadDistinctPage(e){let t=this.source.loadDistinctValues;return t?t.call(this.source,e):Promise.resolve([])}distinctStore(e,t){let u=`${e}\0${t}`,r=this.distinctStores.get(u);return r||(r=new Map,this.distinctStores.set(u,r)),r}async loadDistinctValues(e,t){let u=this.source.loadDistinctValues;if(!u)return[];let r=`${e}@${t}`,n=this.distinctCache.get(r);if(n)return n;let a=this.distinctInFlight.get(r);if(a)return a;let o=this.generation,l=u.call(this.source,{columnId:e,limit:t}).then(i=>{let s=Array.isArray(i)?i:i.values??[];return!this.disposed&&o===this.generation&&this.distinctCache.set(r,s),s}).catch(i=>(this.onError?.(i),this.debugMode&&console.error("[datagrid] loadDistinctValues failed",i),[])).finally(()=>{this.distinctInFlight.delete(r)});return this.distinctInFlight.set(r,l),l}async getRows(e,t){let u=Jh(t,this.group);if(u!==this.currentKey&&(this.currentKey=u,this.forgetFailures(),this.blocks.clear(),this.staleBlocks.clear(),this.countStale=!1,this.inFlight.clear(),this.treeInFlight.clear(),this.resetTree(),this.countKnown=!1,this.summaries={},this.generation++),this.isGrouped()||this.isTree())return this.getGroupedRows(t);(!this.countKnown||this.countStale)&&await this.fetchBlock(0,t);let r=t.range??{start:0,end:this.blockSize},n=Math.max(0,Math.floor(r.start/this.blockSize)),a=Math.max(n,Math.floor(Math.max(0,r.end-1)/this.blockSize)),o=[];for(let l=n;l<=a;l++)this.blocks.has(l)&&(this.blocks.get(l).touched=++this.clock),(!this.blocks.has(l)||this.staleBlocks.has(l))&&o.push(l);return o.length>0&&await Promise.all(o.map(l=>this.fetchBlock(l,t))),this.snapshot()}async getGroupedRows(e){let t=e.range,u=this.tree?64:(this.group?.length??0)+2,r=this.generation;for(let l=0;l<u&&!(this.disposed||r!==this.generation);l++){if(this.tree&&this.syncTreeExpansion(this.root),!this.root.childCountKnown){if(await this.loadChildren(this.root,0,e),!this.root.childCountKnown)break;continue}let{pending:i}=Bs(this.root,{blockSize:this.blockSize,columnIds:this.groupColumnIds,range:t,failedSlots:this.failedSlots,staleSlots:this.staleSlots});if(i.length===0)break;await Promise.all(i.map(s=>{let h=this.findNode(s.nodeKey);return h?this.loadChildren(h,s.childIndex,e):Promise.resolve()}))}this.tree&&this.syncTreeExpansion(this.root);let{nodes:n,failed:a}=Bs(this.root,{blockSize:this.blockSize,columnIds:this.groupColumnIds,range:t,failedSlots:this.failedSlots});this.failedRows=new Set(a);let o=$n(this.root,this.blockSize);return this.visibleCount=o,{nodes:n,visibleCount:o,totalCount:this.totalCount}}loadChildren(e,t,u){let r=Math.floor(t/this.blockSize),n=`${e.key}@${r}`;if(e.blocks.has(r)&&!this.staleSlots.has(n)||this.failedSlots.has(n))return Promise.resolve();let a=this.treeInFlight.get(n);if(a)return a;let o=this.loadChildrenBlock(e,r,u).finally(()=>{this.treeInFlight.get(n)===o&&this.treeInFlight.delete(n)});return this.treeInFlight.set(n,o),o}async loadChildrenBlock(e,t,u){let r=this.generation,n=this.group?.length??0,a=e.path.length>=n,o=this.tree?{skip:t*this.blockSize,take:this.blockSize,sort:u.sort,filter:u.filter,searchText:u.searchText,parentKey:e.record?e.record.key:null,...e===this.root?{summaries:u.summaries}:{}}:{skip:t*this.blockSize,take:this.blockSize,sort:u.sort,filter:u.filter,searchText:u.searchText,group:this.group,groupKeys:[...e.path],...e.path.length===0||!a?{summaries:u.summaries}:{}};try{let l=await this.source.load(o);if(this.disposed||r!==this.generation)return;l.summaries&&e===this.root&&(this.summaries=l.summaries);let i=t*this.blockSize,s=new Map;for(let m of e.blocks.values())for(let c of m)c&&$t(c)&&s.set(c.key,c);let h=this.tree?l.rows.map((m,c)=>this.reuse(s,this.treeChild(e,m,i+c))):a?l.rows.map((m,c)=>Xe(m,this.keyGetter(m),i+c)):(l.groups??[]).map(m=>{let c=[...e.path,m.value],p=Yh(c);return this.reuse(s,{key:p,path:c,level:e.level+1,label:m.label??(m.value==null?"":String(m.value)),value:m.value,count:m.count,...m.aggregates?{aggregates:m.aggregates}:{},expanded:this.isPathExpanded(p),childCount:0,childCountKnown:!1,blocks:new Map})});e.blocks.set(t,h),this.staleSlots.delete(`${e.key}@${t}`),e.childCount=l.totalCount,e.childCountKnown=!0,e===this.root&&(this.totalCount=l.totalCount,this.countKnown=!0)}catch(l){this.debugMode&&console.error("[datagrid] remote group load failed",e.key,l),!this.disposed&&r===this.generation&&this.failedSlots.add(`${e.key}@${t}`),this.onError?.(l)}}treeChild(e,t,u){let r=this.keyGetter(t),n=e.level+1;return this.tree.hasChildren(t)?{key:String(r),path:[...e.path,r],level:n,label:"",value:r,count:0,expanded:this.tree.isExpanded(r),childCount:0,childCountKnown:!1,blocks:new Map,record:{key:r,data:t,sourceIndex:u}}:{...Xe(t,r,u),tree:{depth:n,hasChildren:!1,expanded:!1,ancestorOnly:!1}}}reuse(e,t){if(!$t(t))return t;let u=e.get(t.key);return u?(u.label=t.label,u.value=t.value,u.count=t.count,u.aggregates=t.aggregates,u.record=t.record,u.expanded=t.expanded,u):t}snapshot(){if(!this.countKnown&&this.failedBlocks.has(0)&&this.visibleCount===0)return{nodes:new Array(1),visibleCount:1,totalCount:0};let e=new Array(this.visibleCount);for(let[t,u]of this.blocks){let r=t*this.blockSize;for(let n=0;n<u.nodes.length;n++){let a=r+n;a<this.visibleCount&&(e[a]=u.nodes[n])}}return{nodes:e,visibleCount:this.visibleCount,totalCount:this.totalCount}}fetchBlock(e,t){if(this.disposed||this.failedBlocks.has(e)||this.blocks.has(e)&&!this.staleBlocks.has(e))return Promise.resolve();let u=this.inFlight.get(e);if(u)return u;let r=this.loadBlock(e,t).finally(()=>{this.inFlight.get(e)===r&&this.inFlight.delete(e)});return this.inFlight.set(e,r),r}async loadBlock(e,t){let u=this.generation,r={skip:e*this.blockSize,take:this.blockSize,sort:t.sort,filter:t.filter,searchText:t.searchText,group:this.group,summaries:t.summaries};try{let n=await this.source.load(r);if(this.disposed||u!==this.generation)return;n.summaries&&(this.summaries=n.summaries);let a=e*this.blockSize,o=n.rows.map((l,i)=>Xe(l,this.keyGetter(l),a+i));this.blocks.set(e,{nodes:o,touched:++this.clock}),this.staleBlocks.delete(e),this.countStale=!1,this.evict(),this.visibleCount=n.totalCount,this.totalCount=n.totalCount,this.countKnown=!0}catch(n){this.debugMode&&console.error("[datagrid] remote block load failed",e,n),!this.disposed&&u===this.generation&&this.failedBlocks.add(e),this.onError?.(n)}}evict(){if(this.blocks.size<=this.maxBlocks)return;let e=[...this.blocks.entries()].sort((u,r)=>u[1].touched-r[1].touched),t=this.blocks.size-this.maxBlocks;for(let u=0;u<t;u++)this.blocks.delete(e[u][0]),this.staleBlocks.delete(e[u][0])}};var em=e=>`__detail__${String(e)}`;function tm(e,t){let{expandedKeys:u,expandedByDefault:r=!1}=t,n=Math.max(1,t.height);if(!r&&u.size===0)return e;let a=r?e.length:u.size,o=new Array(e.length+a),l=0;for(let i of e)o[l++]=i,!(i.kind!=="data"||!(r?!u.has(i.key):u.has(i.key)))&&(o[l++]={kind:"detail",key:em(i.key),parentKey:i.key,data:i.data,height:n});return o.length=l,o}var W0=260,Rs=e=>e===null?"__editform__new":`__editform__${String(e)}`;function um(e,t){let{rowKey:u,atTop:r=!1}=t;if(u===null)return e;let n=Math.max(1,t.height),a=e.findIndex(i=>i.kind==="data"&&i.key===u);if(r)return[{kind:"editform",key:Rs(u),parentKey:u,data:a<0?void 0:e[a].data,height:n},...e];if(a<0)return e;let o={kind:"editform",key:Rs(u),parentKey:u,data:e[a].data,height:n},l=new Array(e.length+1);for(let i=0;i<=a;i++)l[i]=e[i];l[a+1]=o;for(let i=a+1;i<e.length;i++)l[i+1]=e[i];return l}var rm=e=>`__message__${String(e)}`;function nm(e,t){if(t.rowKeys.size===0)return e;let u=Math.max(1,t.height),r=[];for(let n of e){if(r.push(n),n.kind!=="data"||!t.rowKeys.has(String(n.key)))continue;let a={kind:"message",key:rm(n.key),parentKey:n.key,data:n.data,height:u};r.push(a)}return r}var Yu=(e,t)=>`${String(e)}\0${t}`,am=class{cells=new Map;byRow=new Map;removed=new Set;inserted=new Map;rev=0;get revision(){return this.rev}writeCell(e,t){this.rev++,this.cells.set(e,t);let u=this.byRow.get(t.rowKey);u||(u=new Map,this.byRow.set(t.rowKey,u)),u.set(t.columnId,t)}dropCell(e){let t=this.cells.get(e);if(!t)return!1;this.rev++,this.cells.delete(e);let u=this.byRow.get(t.rowKey);return u&&(u.delete(t.columnId),u.size===0&&this.byRow.delete(t.rowKey)),!0}clearCells(){this.cells.size>0&&this.rev++,this.cells.clear(),this.byRow.clear()}set(e,t,u,r){let n=Yu(e,t),a=this.cells.get(n);if(a){if(Object.is(a.oldValue,u)){this.dropCell(n);return}Object.is(a.newValue,u)||this.rev++,a.newValue=u;return}Object.is(r,u)||this.writeCell(n,{rowKey:e,columnId:t,oldValue:r,newValue:u})}get(e,t){return this.cells.get(Yu(e,t))}isDirty(e,t){return t!==void 0?this.cells.has(Yu(e,t)):this.removed.has(e)||this.inserted.has(e)?!0:this.byRow.has(e)}effectiveValue(e,t,u){if(this.cells.size===0)return u;let r=this.cells.get(Yu(e,t));return r?r.newValue:u}revertCell(e,t){return this.dropCell(Yu(e,t))}revertRow(e){let t=this.removed.delete(e)||this.inserted.delete(e);t&&this.rev++;let u=this.byRow.get(e);if(u)for(let r of[...u.keys()])this.dropCell(Yu(e,r)),t=!0;return t}markRemoved(e){this.rev++,this.inserted.delete(e),this.removed.add(e)}markInserted(e,t){this.rev++,this.inserted.set(e,t)}isInserted(e){return this.inserted.has(e)}isRemoved(e){return this.removed.has(e)}hasCellChanges(e){return this.byRow.has(e)}hasChanges(){return this.cells.size>0||this.removed.size>0||this.inserted.size>0}getChangeCount(){return this.cells.size+this.removed.size+this.inserted.size}getRowChangeCount(){if(this.inserted.size===0&&this.removed.size===0)return this.byRow.size;let e=new Set(this.byRow.keys());for(let t of this.inserted.keys())e.add(t);for(let t of this.removed)e.add(t);return e.size}getCellChanges(){return[...this.cells.values()]}applyPendingTo(e,t){if(this.cells.size===0)return t;let u=this.byRow.get(e);if(!u)return t;let r={...t};for(let n of u.values())r[n.columnId]=n.newValue;return r}getChanges(e){let t=new Map;for(let u of this.cells.values()){let r=t.get(u.rowKey);r||(r={rowKey:u.rowKey,type:"update",values:{},oldValues:{},row:e?.(u.rowKey)},t.set(u.rowKey,r)),r.values[u.columnId]=u.newValue,r.oldValues[u.columnId]=u.oldValue}for(let[u,r]of this.inserted){let n=t.get(u)?.values;t.set(u,{rowKey:u,type:"insert",values:n?{...r,...n}:{...r},oldValues:{}})}for(let u of this.removed)t.set(u,{rowKey:u,type:"remove",values:{},oldValues:{},row:e?.(u)});return[...t.values()]}clear(){(this.removed.size>0||this.inserted.size>0)&&this.rev++,this.clearCells(),this.removed.clear(),this.inserted.clear()}retainKeys(e){let t=!1;for(let u of[...this.cells.keys()]){let r=this.cells.get(u);r&&!e.has(r.rowKey)&&(this.dropCell(u),t=!0)}for(let u of this.removed)e.has(u)||(this.removed.delete(u),this.rev++,t=!0);return t}},om=class{undoStack=[];redoStack=[];limit;applying=!1;seq=0;stamps=new WeakMap;constructor(e={}){this.limit=Math.max(1,e.limit??100)}push(e){this.applying||(this.stamps.set(e,++this.seq),this.undoStack.push(e),this.undoStack.length>this.limit&&this.undoStack.shift(),this.redoStack=[])}canUndo(){return this.undoStack.length>0}canRedo(){return this.redoStack.length>0}undo(){let e=this.undoStack.pop();if(!e)return null;this.applying=!0;try{e.undo()}finally{this.applying=!1}return this.redoStack.push(e),e}redo(){let e=this.redoStack.pop();if(!e)return null;this.applying=!0;try{e.redo()}finally{this.applying=!1}return this.undoStack.push(e),e}peekUndo(){return this.undoStack[this.undoStack.length-1]}peekRedo(){return this.redoStack[this.redoStack.length-1]}getDepth(){return{undo:this.undoStack.length,redo:this.redoStack.length}}mark(){return this.seq}drop(e){let t=r=>!e(r,this.stamps.get(r)??0),u=this.undoStack.length+this.redoStack.length;return this.undoStack=this.undoStack.filter(t),this.redoStack=this.redoStack.filter(t),u-this.undoStack.length-this.redoStack.length}clear(){this.undoStack=[],this.redoStack=[]}},ri={ok:"OK",cancel:"Cancel",apply:"Apply",close:"Close",clear:"Clear",save:"Save",search:"Search\u2026",selectAll:"Select all",showAll:"Show all",remove:"Remove",none:"None",toolbarSearch:"Search\u2026",exportMenu:"Export",exportCsv:"Export to CSV",exportExcel:"Export all data to Excel",exportExcelSelected:"Export selected rows to Excel",exportPdf:"Export to PDF",exporting:"Exporting\u2026",columns:"Columns",hiddenColumns:"Hidden columns",noHiddenColumns:"No hidden columns.",sortAsc:"Sort A \u2192 Z",sortDesc:"Sort Z \u2192 A",clearSort:"Clear sorting",cardSortBy:"Sort by",groupByColumn:"Group by this column",ungroupColumn:"Remove from grouping",showGroupPanel:"Show group panel",hideGroupPanel:"Hide group panel",showFooter:"Show footer",hideFooter:"Hide footer",showGroupFooters:"Show group footers",hideGroupFooters:"Hide group footers",hideColumn:"Hide this column",fieldChooser:"Field chooser\u2026",bestFit:"Best fit",bestFitAll:"Best fit (all columns)",pinRowTop:"Pin row to top",pinRowBottom:"Pin row to bottom",unpinRow:"Unpin row",findLabel:"Find in grid",findPrevious:"Previous match",findNext:"Next match",findClose:"Close find",findCount:"{n} of {count}",findNone:"No matches",renameColumn:"Rename column",fixedPosition:"Set fixed position",pinLeft:"Left",pinRight:"Right",pinSticky:"Sticky",unpin:"Unfix",moveLeft:"Move to the left",moveRight:"Move to the right",filterPlaceholder:"Filter\u2026",filterColumnAria:"Filter {column}",filterOperatorDefault:"Default",filterOperatorAria:"Filter operator for {column}",filterSelectAll:"Select all",filterBlank:"(Blanks)",filterNonBlank:"(Non-blanks)",filterEmptyText:"(empty text)",filterSpace:"(1 space)",filterSpaces:"({n} spaces)",filterNoMatch:"No matching values",filterLoading:"Loading values\u2026",filterTruncated:"Showing the first values only \u2014 search to find the rest.",filterRemove:"Remove the filter",filterToggle:"Apply the filter",filterEditBuilder:"Edit the filter",filterNone:"No filter",filterActive:"Filter active",opEquals:"is",opNotEquals:"is not",opGreater:">",opGreaterOrEqual:"\u2265",opLess:"<",opLessOrEqual:"\u2264",opContains:"contains",opNotContains:"does not contain",opStartsWith:"starts with",opEndsWith:"ends with",opIsBlank:"is blank",opIsNotBlank:"is not blank",opIsOneOf:"is one of",opIsBetween:"is between",opValuesCount:"{n} values",opInPeriod:"is in",periodToday:"today",periodYesterday:"yesterday",periodTomorrow:"tomorrow",periodThisWeek:"this week",periodLastWeek:"last week",periodNextWeek:"next week",periodThisMonth:"this month",periodLastMonth:"last month",periodNextMonth:"next month",periodThisQuarter:"this quarter",periodLastQuarter:"last quarter",periodNextQuarter:"next quarter",periodThisYear:"this year",periodLastYear:"last year",periodNextYear:"next year",periodYearToDate:"year to date",periodLastDays:"the last {n} days",periodNextDays:"the next {n} days",filterAnd:"AND",filterOr:"OR",builderTitle:"Filter builder",builderCombine:"Combine conditions with",builderAddCondition:"Add condition",builderAddGroup:"Add group",builderRemoveGroup:"Remove group",builderRemoveCondition:"Remove condition",builderEmpty:"No conditions yet.",builderColumn:"Column",builderOperator:"Operator",builderValue:"Value",builderValueFrom:"From",builderValueTo:"To",builderValuePlaceholder:"Enter a value",builderOpen:"Filter builder\u2026",builderClearAll:"Clear all",builderConditionButton:"+ Condition",builderGroupButton:"+ Group",builderTrue:"true",builderFalse:"false",builderPeriod:"Period",builderDays:"Days",filterCustom:"(Custom\u2026)",filterPopupAria:"{column} filter",importOpen:"Import\u2026",groupPanelHint:"Drag a column here to group by it",groupAddLevel:"Add grouping level",groupAddLevelButton:"+ Add level\u2026",groupNoGrouping:"(no grouping)",groupLevelAria:"Grouping level {n}",groupRemoveAria:"Remove {column}",groupExpandAll:"Expand all",groupCollapseAll:"Collapse all",pagerFirst:"First page",pagerPrevious:"Previous page",pagerNext:"Next page",pagerLast:"Last page",pagerPage:"Page",pagerOf:"of",pagerRowsPerPage:"Rows per page",pagerAria:"Pagination",pagerPageButton:"Page {n}",selectAllRows:"Select all rows",selectRowAria:"Select row {row}",selectGroupAria:"Select the {count} rows of {group}",summaryAria:"Summary",columnTotalsAria:"Column totals",rowActions:"Row actions",detailsAria:"Details",rowNumberAria:"Row number",noteEditorAria:"Cell note",notePlaceholder:"Write a note about this cell\u2026",addNote:"Add note\u2026",editNote:"Edit note\u2026",deleteNote:"Delete note",expandDetails:"Expand details",collapseDetails:"Collapse details",expandTreeRow:"Expand row",collapseTreeRow:"Collapse row",expandColumnGroup:"Expand column group",collapseColumnGroup:"Collapse column group",dragToReorder:"Drag to reorder",menuCopy:"Copy",menuCopyWithHeaders:"Copy with headers",menuCopyWithGroupHeaders:"Copy with group headers",menuCut:"Cut",menuPaste:"Paste",menuExport:"Export",menuChartRange:"Chart selected cells",statsSum:"Sum",statsCount:"Count",statsAvg:"Average",statsMin:"Min",statsMax:"Max",statsCells:"Cells",statsTooLarge:"Selection too large to total",statusRows:"Rows",statusFiltered:"Filtered",statusSelected:"Selected",summaryRows:"rows",announceRows:"{n} rows",announceSortedBy:"sorted by {columns}",announceSelected:"{n} selected",announceAscending:"ascending",announceDescending:"descending",sideFilters:"Filters",sideBarAria:"Tool panels",sideClearFilters:"Clear all filters",summarySum:"Sum",summaryAvg:"Avg",summaryMin:"Min",summaryMax:"Max",summaryCount:"Count",summaryDistinct:"Distinct",summaryCustom:"Custom",noTotal:"No total",busy:"Working\u2026",busyLoading:"Loading rows\u2026",rowsLoadFailed:"Couldn't load these rows.",retryLoad:"Retry",busyEncoding:"Preparing data\u2026",busyFiltering:"Filtering rows\u2026",busySorting:"Sorting rows\u2026",busyComputing:"Filtering and sorting\u2026",busyGrouping:"Building groups\u2026",busyAggregating:"Calculating totals\u2026",busyProjecting:"Updating the view\u2026",busyExporting:"Building the file\u2026",noData:"No data",editNewRow:"New row",editSaveChanges:"Save changes",editDiscardChanges:"Discard changes",editRow:"Edit row",editRowMenu:"Edit row\u2026",editDeleteRow:"Delete row",editUndoDelete:"Undo delete",editActions:"Actions",editSaveRow:"Save row",editSaving:"Saving\u2026",editEditingRow:"Editing row {row}",editSaveCount:"Save {n} row(s)",editCannotSave:"Cannot save",editSaveFailed:"Could not save the changes.",rowStatusNew:"New row, not saved",rowStatusChanged:"Unsaved changes",rowStatusRemoved:"Marked for deletion",rowStatusSaving:"Saving\u2026",rowStatusSaved:"Saved",rowStatusError:"Save failed",rowStatusRetry:"Retry",rowStatusDelete:"Delete row",editDeleteConfirm:"Delete this row?",editAddRowUndo:"Add row",editDeleteRowUndo:"Delete row",editCellUndo:"Edit {column}",editFillUndo:"Fill {count} cells",editPasteUndo:"Paste {count} cells",editCutUndo:"Cut {count} cells",editGroupTotal:"Group total",editGroupTotalUndo:"Change {column} total ({count} rows)",editNoMatch:"No match",formEditTitle:"Edit row",formAddTitle:"New row",formShortcut:"{key}+Enter to save \xB7 Esc to cancel",validationRequired:"This field is required",validationNumber:"Must be a number",validationNumberLocale:"Not a valid number. Write it like {example}",validationMin:"Must be at least {min}",validationMax:"Must be at most {max}",validationFormat:"Invalid format",validationEmail:"Invalid email address",validationInvalid:"Invalid value",dateCalendar:"Calendar",dateOpenCalendar:"Open calendar",datePreviousMonth:"Previous month",dateNextMonth:"Next month",monthJanuary:"January",monthFebruary:"February",monthMarch:"March",monthApril:"April",monthMay:"May",monthJune:"June",monthJuly:"July",monthAugust:"August",monthSeptember:"September",monthOctober:"October",monthNovember:"November",monthDecember:"December",weekStartsOn:"0",weekdaySu:"Su",weekdayMo:"Mo",weekdayTu:"Tu",weekdayWe:"We",weekdayTh:"Th",weekdayFr:"Fr",weekdaySa:"Sa",importTitle:"Import data",importStepSource:"1. Source",importStepMap:"2. Map columns",importFile:"CSV file",importPaste:"\u2026or paste rows",importSeparator:"Separator",importSeparatorAuto:"Detect automatically",importSeparatorComma:"Comma ,",importSeparatorSemicolon:"Semicolon ;",importSeparatorTab:"Tab",importSeparatorPipe:"Pipe |",importFileColumn:"File column",importDetected:"Detected",importGridColumn:"Grid column",importSample:"Sample",importSkip:"\u2014 skip \u2014",importPreview:"Preview",importNoSource:"Choose a file or paste some rows first.",importNoRows:"No data rows were found.",importAction:"Import",exportAborted:"Export aborted",exportSheetName:"Data",chart:"Chart",chartCategory:"Category",chartSeries:"Series",chartAddSeries:"Add series",chartRemoveSeries:"Remove",chartSource:"Data",chartSourceView:"Filtered rows",chartSourceSelection:"Selected rows",chartSourceAll:"All rows",chartSourceRange:"Selected range (rows {from}\u2013{to})",chartClose:"Close chart",chartFullscreen:"Fullscreen",chartExitFullscreen:"Exit fullscreen",chartFloat:"Pop out",chartDock:"Dock",chartNewWindow:"New window",chartMoveWindow:"Move chart window",chartResizeWindow:"Resize chart window",chartResizeDock:"Drag to change the chart height",chartSwitch:"Swap category and series",chartUnlink:"Unlink",chartLink:"Link",chartUnlinked:"Unlinked: the chart keeps its data and no longer follows the grid.",chartExportPng:"PNG",chartExportSvg:"SVG",chartExportFailed:"The chart could not be exported.",chartCrossFiltered:"The grid is filtered to {value}.",chartBlankCategory:"(blank)",chartTruncated:'Showing the top {n} categories; the rest are grouped as "Other".',chartOther:"Other",chartEmpty:"Nothing to chart yet.",chartNoVisibleSeries:"No visible series.",chartNeedsMoreSeries:"This chart type needs at least two value columns (for example a low and a high) \u2014 add a second series.",chartLoading:"Loading\u2026",chartNeedsRecharts:"Charts need the optional peer `recharts`. Install it to draw them.",chartOnlyOneSeries:"This chart type shows one series.",chartByColumn:"Chart by this column",chartGroupBy:"By",chartGroupNone:"Each value",chartGroupAuto:"Auto",chartGroupDay:"Day",chartGroupWeek:"Week",chartGroupMonth:"Month",chartGroupQuarter:"Quarter",chartGroupYear:"Year",chartGroupBins:"{n} bins",chartBucketAdjusted:"Too many intervals for one axis \u2014 grouped more coarsely.",chartWindowed:"Showing {shown} of {total}.",chartShowAll:"Show all",chartCanvasHint:"Chart. Scroll to zoom, drag to pan, arrow keys to move, 0 to show all.",chartCanvasHintPick:"Chart. Arrow keys choose a category, Enter or Space filters the grid by it (Ctrl adds one), + and \u2212 zoom, 0 shows all.",chartCategoryFocus:"{category}: {values} \u2014 {position} of {count}",chartCategoryFiltered:"filtering the grid",chartAggSum:"Sum",chartAggAvg:"Average",chartAggMin:"Min",chartAggMax:"Max",chartAggCount:"Count",chartAggDistinct:"Distinct",chartAggFirst:"First",chartAggLast:"Last",chartTypeColumn:"Column",chartTypeBar:"Bar",chartTypeLine:"Line",chartTypeArea:"Area",chartTypePie:"Pie",chartTypeDonut:"Donut",chartStacking:"Series layout",chartStackGrouped:"Grouped",chartStackStacked:"Stacked",chartStackNormalized:"100% stacked",chartFormat:"Format",chartFormatTitle:"Title",chartFormatCategoryAxis:"Category axis title",chartFormatValueAxis:"Value axis title",chartFormatLegend:"Legend",chartLegendTop:"Top",chartLegendBottom:"Bottom",chartLegendLeft:"Left",chartLegendRight:"Right",chartLegendNone:"Hidden",chartFormatDataLabels:"Data labels",chartFormatScale:"Value scale",chartScaleLinear:"Linear",chartScaleLog:"Logarithmic",chartFormatTextSize:"Text size",chartFormatTextColor:"Text colour",chartFormatDefault:"Default",chartFormatLabelAngle:"Category labels",chartAngleAuto:"Auto",chartAngleFlat:"Flat",chartFormatGridLines:"Grid lines",chartGridValue:"Value axis",chartGridBoth:"Both axes",chartGridNone:"None",chartFormatGridDashed:"Dashed grid",chartFormatLineWidth:"Line width",chartFormatLineDashed:"Dashed lines",chartFormatFillOpacity:"Fill opacity",chartFormatDateFormat:"Date format",chartFormatPalette:"Colours",chartPaletteTheme:"Theme",chartPaletteClassic:"Classic",chartPaletteColorblind:"Colour-blind safe",chartPaletteVivid:"Vivid",chartPaletteMonochrome:"One colour",sparklineSummary:"{count} values from {min} to {max}, ending at {last}",chartTypeWaterfall:"Waterfall",chartTypeFunnel:"Funnel",chartTypeTreemap:"Treemap",chartTypeHeatmap:"Heatmap",chartTypeBox:"Box plot",chartTypeRadar:"Radar",chartTypeRangeBar:"Range",chartBoxQ1:"Q1",chartBoxMedian:"Median",chartBoxQ3:"Q3",chartBoxOutlier:"Outlier",chartTotal:"Total",chartTypeScatter:"Scatter",chartTypeBubble:"Bubble",chartXAxis:"X axis",chartBubbleSize:"Size",chartXYSampled:"{shown} of {total} points, sampled evenly",licenseMissing:"Unlicensed",licenseExpired:"License expired",licenseReleaseNotCovered:"This version is not covered by the license",licenseDomainMismatch:"License not valid for this domain",licenseRevoked:"License revoked",licenseInvalidFormat:"Malformed license key",licenseInvalidSignature:"Invalid license signature",licenseEngineUnavailable:"Browser cannot verify the license (HTTPS required)",calcAdd:"Add calculated column\u2026",calcEdit:"Edit calculated column\u2026",calcRemove:"Remove calculated column",calcTitleAdd:"Add calculated column",calcTitleEdit:"Edit calculated column",calcName:"Name",calcFormula:"Formula",calcFormulaHint:"Write a column as [Name]. Example: [Price] * [Qty]",calcColumns:"Columns",calcFunctions:"Functions",calcPreview:"Preview",calcPreviewEmpty:"No rows to preview",calcErrorAt:"{message} (character {position})",calcAddButton:"Add",calcArgsAtLeast:"{min} or more",formulaError_empty:"Write a formula",formulaError_unclosedText:'Text is not closed: a " is missing',formulaError_unclosedColumn:"Column name is not closed: a ] is missing",formulaError_emptyColumn:"Empty column name []",formulaError_unexpectedChar:"Unexpected character {text}",formulaError_expected:"{text} is missing",formulaError_cellAfterColon:'A cell is missing after ":"',formulaError_unknownName:"Unknown name {name} \u2014 write a column as [{name}]",formulaError_unexpected:"Unexpected {text}",formulaError_endsEarly:"The formula ends too early",formulaError_trailing:"Unexpected text at the end",formulaError_unknownColumn:"There is no column [{name}]",formulaError_unknownFunction:"Unknown function {name}",formulaError_argCount:"{name} takes {range} argument(s)",formulaError_cellsNotAllowed:"Cell references such as A1 are not used here \u2014 write a column as [Name]"},im={ok:"Tamam",cancel:"\u0130ptal",apply:"Uygula",close:"Kapat",clear:"Temizle",save:"Kaydet",search:"Ara...",selectAll:"T\xFCm\xFCn\xFC Se\xE7",showAll:"T\xFCm\xFCn\xFC g\xF6ster",remove:"Kald\u0131r",none:"Yok",toolbarSearch:"Ara...",exportMenu:"D\u0131\u015Fa Aktar",exportCsv:"CSV'ye aktar",exportExcel:"T\xFCm veriyi Excel'e aktar",exportExcelSelected:"Se\xE7ili sat\u0131rlar\u0131 Excel'e aktar",exportPdf:"PDF'e aktar",exporting:"D\u0131\u015Fa aktar\u0131l\u0131yor\u2026",columns:"S\xFCtunlar",hiddenColumns:"Gizli s\xFCtunlar",noHiddenColumns:"Gizli s\xFCtun yok.",sortAsc:"A'dan Z'ye S\u0131rala",sortDesc:"Z'den A'ya S\u0131rala",clearSort:"S\u0131ralamay\u0131 Temizle",cardSortBy:"S\u0131rala",groupByColumn:"Bu s\xFCtuna g\xF6re grupla",ungroupColumn:"Gruplamadan \xE7\u0131kar",showGroupPanel:"Gruplama panelini g\xF6ster",hideGroupPanel:"Gruplama panelini gizle",showFooter:"Alt bilgiyi g\xF6ster",hideFooter:"Alt bilgiyi gizle",showGroupFooters:"Grup alt bilgilerini g\xF6ster",hideGroupFooters:"Grup alt bilgilerini gizle",hideColumn:"Bu s\xFCtunu gizle",fieldChooser:"Alan se\xE7ici\u2026",bestFit:"En uygun geni\u015Flik",bestFitAll:"En uygun geni\u015Flik (t\xFCm s\xFCtunlar)",pinRowTop:"Sat\u0131r\u0131 \xFCste sabitle",pinRowBottom:"Sat\u0131r\u0131 alta sabitle",unpinRow:"Sat\u0131r\u0131n sabitlemesini kald\u0131r",findLabel:"Tabloda bul",findPrevious:"\xD6nceki e\u015Fle\u015Fme",findNext:"Sonraki e\u015Fle\u015Fme",findClose:"Bulmay\u0131 kapat",findCount:"{n} / {count}",findNone:"E\u015Fle\u015Fme yok",renameColumn:"S\xFCtunu yeniden adland\u0131r",fixedPosition:"Sabit konum ayarla",pinLeft:"Sol",pinRight:"Sa\u011F",pinSticky:"Yap\u0131\u015Fkan",unpin:"Sabitlemeyi kald\u0131r",moveLeft:"Sola ta\u015F\u0131",moveRight:"Sa\u011Fa ta\u015F\u0131",filterPlaceholder:"Filtrele\u2026",filterColumnAria:"{column} filtrele",filterOperatorDefault:"Varsay\u0131lan",filterOperatorAria:"{column} filtre i\u015Fleci",filterSelectAll:"T\xFCm\xFCn\xFC se\xE7",filterBlank:"(Bo\u015F Olanlar)",filterNonBlank:"(Bo\u015F Olmayanlar)",filterEmptyText:"(bo\u015F metin)",filterSpace:"(1 bo\u015Fluk)",filterSpaces:"({n} bo\u015Fluk)",filterNoMatch:"E\u015Fle\u015Fen de\u011Fer yok",filterLoading:"De\u011Ferler y\xFCkleniyor\u2026",filterTruncated:"Yaln\u0131zca ilk de\u011Ferler g\xF6steriliyor \u2014 kalan\u0131n\u0131 bulmak i\xE7in aray\u0131n.",filterRemove:"Filtreyi kald\u0131r",filterToggle:"Filtreyi uygula",filterEditBuilder:"Filtreyi d\xFCzenle",filterNone:"Filtre yok",filterActive:"Filtre etkin",opEquals:"e\u015Fittir",opNotEquals:"e\u015Fit de\u011Fildir",opGreater:">",opGreaterOrEqual:"\u2265",opLess:"<",opLessOrEqual:"\u2264",opContains:"i\xE7erir",opNotContains:"i\xE7ermez",opStartsWith:"ile ba\u015Flar",opEndsWith:"ile biter",opIsBlank:"bo\u015Ftur",opIsNotBlank:"bo\u015F de\u011Fildir",opIsOneOf:"\u015Funlardan biridir",opIsBetween:"aras\u0131ndad\u0131r",opValuesCount:"{n} de\u011Fer",opInPeriod:"d\xF6nem i\xE7inde",periodToday:"bug\xFCn",periodYesterday:"d\xFCn",periodTomorrow:"yar\u0131n",periodThisWeek:"bu hafta",periodLastWeek:"ge\xE7en hafta",periodNextWeek:"gelecek hafta",periodThisMonth:"bu ay",periodLastMonth:"ge\xE7en ay",periodNextMonth:"gelecek ay",periodThisQuarter:"bu \xE7eyrek",periodLastQuarter:"ge\xE7en \xE7eyrek",periodNextQuarter:"gelecek \xE7eyrek",periodThisYear:"bu y\u0131l",periodLastYear:"ge\xE7en y\u0131l",periodNextYear:"gelecek y\u0131l",periodYearToDate:"y\u0131lba\u015F\u0131ndan bug\xFCne",periodLastDays:"son {n} g\xFCn",periodNextDays:"\xF6n\xFCm\xFCzdeki {n} g\xFCn",filterAnd:"VE",filterOr:"VEYA",builderTitle:"Filtre olu\u015Fturucu",builderCombine:"Ko\u015Fullar\u0131 \u015Fununla birle\u015Ftir",builderAddCondition:"Ko\u015Ful ekle",builderAddGroup:"Grup ekle",builderRemoveGroup:"Grubu kald\u0131r",builderRemoveCondition:"Ko\u015Fulu kald\u0131r",builderEmpty:"Hen\xFCz ko\u015Ful yok.",builderColumn:"S\xFCtun",builderOperator:"Operat\xF6r",builderValue:"De\u011Fer",builderValueFrom:"Ba\u015Flang\u0131\xE7",builderValueTo:"Biti\u015F",builderValuePlaceholder:"Bir de\u011Fer girin",builderOpen:"Filtre olu\u015Fturucu\u2026",builderClearAll:"T\xFCm\xFCn\xFC temizle",builderConditionButton:"+ Ko\u015Ful",builderGroupButton:"+ Grup",builderTrue:"do\u011Fru",builderFalse:"yanl\u0131\u015F",builderPeriod:"D\xF6nem",builderDays:"G\xFCn",filterCustom:"(\xD6zel\u2026)",filterPopupAria:"{column} filtresi",importOpen:"\u0130\xE7e aktar\u2026",groupPanelHint:"Gruplamak i\xE7in buraya bir s\xFCtun s\xFCr\xFCkleyin",groupAddLevel:"Gruplama d\xFCzeyi ekle",groupAddLevelButton:"+ D\xFCzey ekle\u2026",groupNoGrouping:"(gruplama yok)",groupLevelAria:"{n}. gruplama d\xFCzeyi",groupRemoveAria:"{column} kald\u0131r",groupExpandAll:"T\xFCm\xFCn\xFC geni\u015Flet",groupCollapseAll:"T\xFCm\xFCn\xFC daralt",pagerFirst:"\u0130lk sayfa",pagerPrevious:"\xD6nceki sayfa",pagerNext:"Sonraki sayfa",pagerLast:"Son sayfa",pagerPage:"Sayfa",pagerOf:"/",pagerRowsPerPage:"Sayfa ba\u015F\u0131na sat\u0131r",pagerAria:"Sayfalama",pagerPageButton:"Sayfa {n}",selectAllRows:"T\xFCm sat\u0131rlar\u0131 se\xE7",selectRowAria:"{row} numaral\u0131 sat\u0131r\u0131 se\xE7",selectGroupAria:"{group} grubundaki {count} sat\u0131r\u0131 se\xE7",summaryAria:"\xD6zet",columnTotalsAria:"S\xFCtun toplamlar\u0131",rowActions:"Sat\u0131r i\u015Flemleri",detailsAria:"Ayr\u0131nt\u0131lar",rowNumberAria:"Sat\u0131r numaras\u0131",noteEditorAria:"H\xFCcre notu",notePlaceholder:"Bu h\xFCcre hakk\u0131nda bir not yaz\u0131n\u2026",addNote:"Not ekle\u2026",editNote:"Notu d\xFCzenle\u2026",deleteNote:"Notu sil",expandDetails:"Ayr\u0131nt\u0131lar\u0131 geni\u015Flet",collapseDetails:"Ayr\u0131nt\u0131lar\u0131 daralt",expandTreeRow:"Sat\u0131r\u0131 a\xE7",collapseTreeRow:"Sat\u0131r\u0131 kapat",expandColumnGroup:"S\xFCtun grubunu geni\u015Flet",collapseColumnGroup:"S\xFCtun grubunu daralt",dragToReorder:"S\u0131ralamak i\xE7in s\xFCr\xFCkleyin",menuCopy:"Kopyala",menuCopyWithHeaders:"Ba\u015Fl\u0131klarla kopyala",menuCopyWithGroupHeaders:"Grup ba\u015Fl\u0131klar\u0131yla kopyala",menuCut:"Kes",menuPaste:"Yap\u0131\u015Ft\u0131r",menuExport:"D\u0131\u015Fa aktar",menuChartRange:"Se\xE7ili h\xFCcreleri grafi\u011Fe d\xF6k",statsSum:"Toplam",statsCount:"Say",statsAvg:"Ortalama",statsMin:"Min",statsMax:"Max",statsCells:"H\xFCcre",statsTooLarge:"Se\xE7im toplanamayacak kadar b\xFCy\xFCk",statusRows:"Sat\u0131r",statusFiltered:"Filtreli",statusSelected:"Se\xE7ili",summaryRows:"sat\u0131r",announceRows:"{n} sat\u0131r",announceSortedBy:"{columns} ile s\u0131ral\u0131",announceSelected:"{n} se\xE7ili",announceAscending:"artan",announceDescending:"azalan",sideFilters:"Filtreler",sideBarAria:"Ara\xE7 panelleri",sideClearFilters:"T\xFCm filtreleri temizle",summarySum:"Toplam",summaryAvg:"Ortalama",summaryMin:"Min",summaryMax:"Max",summaryCount:"Say",summaryDistinct:"Benzersiz",summaryCustom:"\xD6zel",noTotal:"Toplam yok",busy:"\xC7al\u0131\u015F\u0131yor\u2026",busyLoading:"Sat\u0131rlar y\xFCkleniyor\u2026",rowsLoadFailed:"Bu sat\u0131rlar y\xFCklenemedi.",retryLoad:"Tekrar dene",busyEncoding:"Veri haz\u0131rlan\u0131yor\u2026",busyFiltering:"Sat\u0131rlar filtreleniyor\u2026",busySorting:"Sat\u0131rlar s\u0131ralan\u0131yor\u2026",busyComputing:"Filtreleniyor ve s\u0131ralan\u0131yor\u2026",busyGrouping:"Gruplar olu\u015Fturuluyor\u2026",busyAggregating:"Toplamlar hesaplan\u0131yor\u2026",busyProjecting:"G\xF6r\xFCn\xFCm g\xFCncelleniyor\u2026",busyExporting:"Dosya olu\u015Fturuluyor\u2026",noData:"Veri Bulunamad\u0131",editNewRow:"Yeni sat\u0131r",editSaveChanges:"De\u011Fi\u015Fiklikleri kaydet",editDiscardChanges:"De\u011Fi\u015Fiklikleri iptal et",editRow:"Sat\u0131r\u0131 d\xFCzenle",editRowMenu:"Sat\u0131r\u0131 d\xFCzenle\u2026",editDeleteRow:"Sat\u0131r\u0131 sil",editUndoDelete:"Silmeyi geri al",editActions:"Aksiyonlar",editSaveRow:"Sat\u0131r\u0131 kaydet",editSaving:"Kaydediliyor\u2026",editEditingRow:"{row} numaral\u0131 sat\u0131r d\xFCzenleniyor",editSaveCount:"{n} sat\u0131r\u0131 kaydet",editCannotSave:"Kaydedilemiyor",editSaveFailed:"De\u011Fi\u015Fiklikler kaydedilemedi.",rowStatusNew:"Yeni sat\u0131r, kaydedilmedi",rowStatusChanged:"Kaydedilmemi\u015F de\u011Fi\u015Fiklikler",rowStatusRemoved:"Silinmek \xFCzere i\u015Faretlendi",rowStatusSaving:"Kaydediliyor\u2026",rowStatusSaved:"Kaydedildi",rowStatusError:"Kaydedilemedi",rowStatusRetry:"Tekrar dene",rowStatusDelete:"Sat\u0131r\u0131 sil",editDeleteConfirm:"Bu sat\u0131r silinsin mi?",editAddRowUndo:"Sat\u0131r ekle",editDeleteRowUndo:"Sat\u0131r sil",editCellUndo:"{column} d\xFCzenle",editFillUndo:"{count} h\xFCcre doldur",editPasteUndo:"{count} h\xFCcre yap\u0131\u015Ft\u0131r",editCutUndo:"{count} h\xFCcre kes",editGroupTotal:"Grup toplam\u0131",editGroupTotalUndo:"{column} toplam\u0131n\u0131 de\u011Fi\u015Ftir ({count} sat\u0131r)",editNoMatch:"Kay\u0131t bulunamad\u0131",formEditTitle:"Sat\u0131r\u0131 d\xFCzenle",formAddTitle:"Yeni sat\u0131r",formShortcut:"Kaydetmek i\xE7in {key}+Enter \xB7 \u0130ptal i\xE7in Esc",validationRequired:"Bu alan zorunludur",validationNumber:"Say\u0131 olmal\u0131d\u0131r",validationNumberLocale:"Ge\xE7erli bir say\u0131 de\u011Fil. \u015E\xF6yle yaz\u0131n: {example}",validationMin:"En az {min} olmal\u0131d\u0131r",validationMax:"En \xE7ok {max} olmal\u0131d\u0131r",validationFormat:"Ge\xE7ersiz bi\xE7im",validationEmail:"Ge\xE7ersiz e-posta adresi",validationInvalid:"Ge\xE7ersiz de\u011Fer",dateCalendar:"Takvim",dateOpenCalendar:"Takvimi a\xE7",datePreviousMonth:"\xD6nceki ay",dateNextMonth:"Sonraki ay",monthJanuary:"Ocak",monthFebruary:"\u015Eubat",monthMarch:"Mart",monthApril:"Nisan",monthMay:"May\u0131s",monthJune:"Haziran",monthJuly:"Temmuz",monthAugust:"A\u011Fustos",monthSeptember:"Eyl\xFCl",monthOctober:"Ekim",monthNovember:"Kas\u0131m",monthDecember:"Aral\u0131k",weekStartsOn:"1",weekdaySu:"Pz",weekdayMo:"Pt",weekdayTu:"Sa",weekdayWe:"\xC7a",weekdayTh:"Pe",weekdayFr:"Cu",weekdaySa:"Ct",importTitle:"Veri i\xE7e aktar",importStepSource:"1. Kaynak",importStepMap:"2. S\xFCtun e\u015Fleme",importFile:"CSV dosyas\u0131",importPaste:"\u2026veya sat\u0131rlar\u0131 yap\u0131\u015Ft\u0131r\u0131n",importSeparator:"Ay\u0131r\u0131c\u0131",importSeparatorAuto:"Otomatik alg\u0131la",importSeparatorComma:"Virg\xFCl ,",importSeparatorSemicolon:"Noktal\u0131 virg\xFCl ;",importSeparatorTab:"Sekme",importSeparatorPipe:"Dikey \xE7izgi |",importFileColumn:"Dosya s\xFCtunu",importDetected:"Alg\u0131lanan",importGridColumn:"Tablo s\xFCtunu",importSample:"\xD6rnek",importSkip:"\u2014 atla \u2014",importPreview:"\xD6nizleme",importNoSource:"\xD6nce bir dosya se\xE7in veya sat\u0131r yap\u0131\u015Ft\u0131r\u0131n.",importNoRows:"Veri sat\u0131r\u0131 bulunamad\u0131.",importAction:"\u0130\xE7e aktar",exportAborted:"D\u0131\u015Fa aktarma iptal edildi",exportSheetName:"Veri",chart:"Grafik",chartCategory:"Kategori",chartSeries:"Seri",chartAddSeries:"Seri ekle",chartRemoveSeries:"Kald\u0131r",chartSource:"Veri",chartSourceView:"Filtrelenmi\u015F sat\u0131rlar",chartSourceSelection:"Se\xE7ili sat\u0131rlar",chartSourceAll:"T\xFCm sat\u0131rlar",chartSourceRange:"Se\xE7ili aral\u0131k ({from}\u2013{to}. sat\u0131rlar)",chartClose:"Grafi\u011Fi kapat",chartFullscreen:"Tam ekran",chartExitFullscreen:"Tam ekrandan \xE7\u0131k",chartFloat:"Pencereye al",chartDock:"Yerine yerle\u015Ftir",chartNewWindow:"Yeni pencere",chartMoveWindow:"Grafik penceresini ta\u015F\u0131",chartResizeWindow:"Grafik penceresini boyutland\u0131r",chartResizeDock:"Grafi\u011Fin y\xFCksekli\u011Fini de\u011Fi\u015Ftirmek i\xE7in s\xFCr\xFCkleyin",chartSwitch:"Kategori ile seriyi de\u011Fi\u015Ftir",chartUnlink:"Gridden kopar",chartLink:"Gride ba\u011Fla",chartUnlinked:"Kopar\u0131ld\u0131: grafik verisini koruyor, grid de\u011Fi\u015Fse de de\u011Fi\u015Fmiyor.",chartExportPng:"PNG",chartExportSvg:"SVG",chartExportFailed:"Grafik d\u0131\u015Fa aktar\u0131lamad\u0131.",chartCrossFiltered:"Tablo {value} de\u011Ferine filtrelendi.",chartBlankCategory:"(bo\u015F)",chartTruncated:'En y\xFCksek {n} kategori g\xF6steriliyor; kalanlar "Di\u011Fer" alt\u0131nda topland\u0131.',chartOther:"Di\u011Fer",chartEmpty:"Hen\xFCz grafi\u011Fe d\xF6k\xFClecek bir \u015Fey yok.",chartNoVisibleSeries:"G\xF6r\xFCn\xFCr seri yok.",chartNeedsMoreSeries:"Bu grafik t\xFCr\xFC en az iki de\u011Fer s\xFCtunu ister (\xF6rne\u011Fin en d\xFC\u015F\xFCk ve en y\xFCksek) \u2014 ikinci bir seri ekleyin.",chartLoading:"Y\xFCkleniyor\u2026",chartNeedsRecharts:"Grafikler iste\u011Fe ba\u011Fl\u0131 `recharts` paketini gerektirir. \xC7izmek i\xE7in kurun.",chartOnlyOneSeries:"Bu grafik t\xFCr\xFC tek seri g\xF6sterir.",chartByColumn:"Bu s\xFCtuna g\xF6re grafik",chartGroupBy:"\u015Euna g\xF6re",chartGroupNone:"Her de\u011Fer",chartGroupAuto:"Otomatik",chartGroupDay:"G\xFCn",chartGroupWeek:"Hafta",chartGroupMonth:"Ay",chartGroupQuarter:"\xC7eyrek",chartGroupYear:"Y\u0131l",chartGroupBins:"{n} aral\u0131k",chartBucketAdjusted:"Bir eksen i\xE7in fazla aral\u0131k \u2014 daha kaba grupland\u0131.",chartWindowed:"{total} i\xE7inden {shown} g\xF6steriliyor.",chartShowAll:"T\xFCm\xFCn\xFC g\xF6ster",chartCanvasHint:"Grafik. Yak\u0131nla\u015Ft\u0131rmak i\xE7in kayd\u0131r\u0131n, kayd\u0131rmak i\xE7in s\xFCr\xFCkleyin, ok tu\u015Flar\u0131yla gezinin, t\xFCm\xFC i\xE7in 0.",chartCanvasHintPick:"Grafik. Ok tu\u015Flar\u0131yla bir kategori se\xE7in, Enter ya da Bo\u015Fluk tabloyu ona g\xF6re s\xFCzer (Ctrl ile eklenir), + ve \u2212 yak\u0131nla\u015Ft\u0131r\u0131r, 0 t\xFCm\xFCn\xFC g\xF6sterir.",chartCategoryFocus:"{category}: {values} \u2014 {position}/{count}",chartCategoryFiltered:"tabloyu s\xFCz\xFCyor",chartAggSum:"Toplam",chartAggAvg:"Ortalama",chartAggMin:"Min",chartAggMax:"Max",chartAggCount:"Say",chartAggDistinct:"Benzersiz",chartAggFirst:"\u0130lk",chartAggLast:"Son",chartTypeColumn:"S\xFCtun",chartTypeBar:"\xC7ubuk",chartTypeLine:"\xC7izgi",chartTypeArea:"Alan",chartTypePie:"Pasta",chartTypeDonut:"Halka",chartStacking:"Seri yerle\u015Fimi",chartStackGrouped:"Yan yana",chartStackStacked:"Y\u0131\u011F\u0131lm\u0131\u015F",chartStackNormalized:"%100 y\u0131\u011F\u0131lm\u0131\u015F",chartFormat:"Bi\xE7im",chartFormatTitle:"Ba\u015Fl\u0131k",chartFormatCategoryAxis:"Kategori ekseni ba\u015Fl\u0131\u011F\u0131",chartFormatValueAxis:"De\u011Fer ekseni ba\u015Fl\u0131\u011F\u0131",chartFormatLegend:"Lejant",chartLegendTop:"\xDCstte",chartLegendBottom:"Altta",chartLegendLeft:"Solda",chartLegendRight:"Sa\u011Fda",chartLegendNone:"Gizli",chartFormatDataLabels:"Veri etiketleri",chartFormatScale:"De\u011Fer \xF6l\xE7e\u011Fi",chartScaleLinear:"Do\u011Frusal",chartScaleLog:"Logaritmik",chartFormatTextSize:"Yaz\u0131 boyutu",chartFormatTextColor:"Yaz\u0131 rengi",chartFormatDefault:"Varsay\u0131lan",chartFormatLabelAngle:"Kategori etiketleri",chartAngleAuto:"Otomatik",chartAngleFlat:"D\xFCz",chartFormatGridLines:"Izgara \xE7izgileri",chartGridValue:"De\u011Fer ekseni",chartGridBoth:"\u0130ki eksen",chartGridNone:"Yok",chartFormatGridDashed:"Kesik \u0131zgara",chartFormatLineWidth:"\xC7izgi kal\u0131nl\u0131\u011F\u0131",chartFormatLineDashed:"Kesik \xE7izgiler",chartFormatFillOpacity:"Dolgu opakl\u0131\u011F\u0131",chartFormatDateFormat:"Tarih bi\xE7imi",chartFormatPalette:"Renkler",chartPaletteTheme:"Tema",chartPaletteClassic:"Klasik",chartPaletteColorblind:"Renk k\xF6rl\xFC\u011F\xFCne uygun",chartPaletteVivid:"Canl\u0131",chartPaletteMonochrome:"Tek renk",sparklineSummary:"{count} de\u011Fer, {min} ile {max} aras\u0131, son de\u011Fer {last}",chartTypeWaterfall:"\u015Eelale",chartTypeFunnel:"Huni",chartTypeTreemap:"A\u011Fa\xE7 haritas\u0131",chartTypeHeatmap:"Is\u0131 haritas\u0131",chartTypeBox:"Kutu grafi\u011Fi",chartTypeRadar:"Radar",chartTypeRangeBar:"Aral\u0131k",chartBoxQ1:"\xC71",chartBoxMedian:"Ortanca",chartBoxQ3:"\xC73",chartBoxOutlier:"Ayk\u0131r\u0131 de\u011Fer",chartTotal:"Toplam",chartTypeScatter:"Da\u011F\u0131l\u0131m",chartTypeBubble:"Kabarc\u0131k",chartXAxis:"X ekseni",chartBubbleSize:"Boyut",chartXYSampled:"{total} noktan\u0131n {shown} tanesi, e\u015Fit aral\u0131kla \xF6rneklendi",licenseMissing:"Lisanss\u0131z",licenseExpired:"Lisans\u0131n s\xFCresi dolmu\u015F",licenseReleaseNotCovered:"Bu s\xFCr\xFCm lisans kapsam\u0131nda de\u011Fil",licenseDomainMismatch:"Lisans bu alan ad\u0131 i\xE7in ge\xE7erli de\u011Fil",licenseRevoked:"Lisans iptal edilmi\u015F",licenseInvalidFormat:"Lisans anahtar\u0131 hatal\u0131",licenseInvalidSignature:"Lisans imzas\u0131 ge\xE7ersiz",licenseEngineUnavailable:"Taray\u0131c\u0131 lisans\u0131 do\u011Frulayam\u0131yor (HTTPS gerekli)",calcAdd:"Hesaplanm\u0131\u015F s\xFCtun ekle\u2026",calcEdit:"Hesaplanm\u0131\u015F s\xFCtunu d\xFCzenle\u2026",calcRemove:"Hesaplanm\u0131\u015F s\xFCtunu kald\u0131r",calcTitleAdd:"Hesaplanm\u0131\u015F s\xFCtun ekle",calcTitleEdit:"Hesaplanm\u0131\u015F s\xFCtunu d\xFCzenle",calcName:"Ad",calcFormula:"Form\xFCl",calcFormulaHint:"S\xFCtunu [Ad] diye yaz\u0131n. \xD6rnek: [Fiyat] * [Adet]",calcColumns:"S\xFCtunlar",calcFunctions:"\u0130\u015Flevler",calcPreview:"\xD6nizleme",calcPreviewEmpty:"\xD6nizlenecek sat\u0131r yok",calcErrorAt:"{message} ({position}. karakter)",calcAddButton:"Ekle",calcArgsAtLeast:"{min} veya daha fazla",formulaError_empty:"Bir form\xFCl yaz\u0131n",formulaError_unclosedText:'Metin kapanmam\u0131\u015F: bir " eksik',formulaError_unclosedColumn:"S\xFCtun ad\u0131 kapanmam\u0131\u015F: bir ] eksik",formulaError_emptyColumn:"Bo\u015F s\xFCtun ad\u0131 []",formulaError_unexpectedChar:"Beklenmeyen karakter {text}",formulaError_expected:"{text} eksik",formulaError_cellAfterColon:'":" i\u015Faretinden sonra bir h\xFCcre eksik',formulaError_unknownName:"Bilinmeyen ad {name} \u2014 s\xFCtunu [{name}] diye yaz\u0131n",formulaError_unexpected:"Beklenmeyen {text}",formulaError_endsEarly:"Form\xFCl erken bitiyor",formulaError_trailing:"Sonda beklenmeyen metin",formulaError_unknownColumn:"[{name}] ad\u0131nda bir s\xFCtun yok",formulaError_unknownFunction:"Bilinmeyen i\u015Flev {name}",formulaError_argCount:"{name} {range} ba\u011F\u0131ms\u0131z de\u011Fi\u015Fken al\u0131r",formulaError_cellsNotAllowed:"A1 gibi h\xFCcre ba\u015Fvurular\u0131 burada kullan\u0131lmaz \u2014 s\xFCtunu [Ad] diye yaz\u0131n"},lm={ok:"OK",cancel:"Abbrechen",apply:"Anwenden",close:"Schlie\xDFen",clear:"L\xF6schen",save:"Speichern",search:"Suchen...",selectAll:"Alles ausw\xE4hlen",showAll:"Alle anzeigen",remove:"Entfernen",none:"Keine",toolbarSearch:"Suchen...",exportMenu:"Exportieren",exportCsv:"Als CSV exportieren",exportExcel:"Alle Daten nach Excel exportieren",exportExcelSelected:"Ausgew\xE4hlte Zeilen nach Excel exportieren",exportPdf:"Als PDF exportieren",exporting:"Wird exportiert\u2026",columns:"Spalten",hiddenColumns:"Ausgeblendete Spalten",noHiddenColumns:"Keine ausgeblendeten Spalten.",sortAsc:"Sortieren A \u2192 Z",sortDesc:"Sortieren Z \u2192 A",clearSort:"Sortierung l\xF6schen",cardSortBy:"Sortieren nach",groupByColumn:"Nach dieser Spalte gruppieren",ungroupColumn:"Aus Gruppierung entfernen",showGroupPanel:"Gruppierungsbereich anzeigen",hideGroupPanel:"Gruppierungsbereich ausblenden",showFooter:"Fu\xDFzeile anzeigen",hideFooter:"Fu\xDFzeile ausblenden",showGroupFooters:"Gruppenfu\xDFzeilen anzeigen",hideGroupFooters:"Gruppenfu\xDFzeilen ausblenden",hideColumn:"Diese Spalte ausblenden",fieldChooser:"Feldauswahl\u2026",bestFit:"Optimale Breite",bestFitAll:"Optimale Breite (alle Spalten)",pinRowTop:"Zeile oben fixieren",pinRowBottom:"Zeile unten fixieren",unpinRow:"Zeilenfixierung aufheben",findLabel:"In der Tabelle suchen",findPrevious:"Vorheriger Treffer",findNext:"N\xE4chster Treffer",findClose:"Suche schlie\xDFen",findCount:"{n} von {count}",findNone:"Keine Treffer",renameColumn:"Spalte umbenennen",fixedPosition:"Feste Position festlegen",pinLeft:"Links",pinRight:"Rechts",pinSticky:"Fixiert",unpin:"Fixierung aufheben",moveLeft:"Nach links verschieben",moveRight:"Nach rechts verschieben",filterPlaceholder:"Filtern\u2026",filterColumnAria:"{column} filtern",filterOperatorDefault:"Standard",filterOperatorAria:"Filteroperator f\xFCr {column}",filterSelectAll:"Alles ausw\xE4hlen",filterBlank:"(Leer)",filterNonBlank:"(Nicht leer)",filterEmptyText:"(leerer Text)",filterSpace:"(1 Leerzeichen)",filterSpaces:"({n} Leerzeichen)",filterNoMatch:"Keine passenden Werte",filterLoading:"Werte werden geladen\u2026",filterTruncated:"Es werden nur die ersten Werte angezeigt \u2014 suchen Sie nach den \xFCbrigen.",filterRemove:"Filter entfernen",filterToggle:"Filter anwenden",filterEditBuilder:"Filter bearbeiten",filterNone:"Kein Filter",filterActive:"Filter aktiv",opEquals:"ist",opNotEquals:"ist nicht",opGreater:">",opGreaterOrEqual:"\u2265",opLess:"<",opLessOrEqual:"\u2264",opContains:"enth\xE4lt",opNotContains:"enth\xE4lt nicht",opStartsWith:"beginnt mit",opEndsWith:"endet mit",opIsBlank:"ist leer",opIsNotBlank:"ist nicht leer",opIsOneOf:"ist eines von",opIsBetween:"liegt zwischen",opValuesCount:"{n} Werte",opInPeriod:"liegt in",periodToday:"heute",periodYesterday:"gestern",periodTomorrow:"morgen",periodThisWeek:"diese Woche",periodLastWeek:"letzte Woche",periodNextWeek:"n\xE4chste Woche",periodThisMonth:"diesen Monat",periodLastMonth:"letzten Monat",periodNextMonth:"n\xE4chsten Monat",periodThisQuarter:"dieses Quartal",periodLastQuarter:"letztes Quartal",periodNextQuarter:"n\xE4chstes Quartal",periodThisYear:"dieses Jahr",periodLastYear:"letztes Jahr",periodNextYear:"n\xE4chstes Jahr",periodYearToDate:"seit Jahresbeginn",periodLastDays:"die letzten {n} Tage",periodNextDays:"die n\xE4chsten {n} Tage",filterAnd:"UND",filterOr:"ODER",builderTitle:"Filter-Editor",builderCombine:"Bedingungen verkn\xFCpfen mit",builderAddCondition:"Bedingung hinzuf\xFCgen",builderAddGroup:"Gruppe hinzuf\xFCgen",builderRemoveGroup:"Gruppe entfernen",builderRemoveCondition:"Bedingung entfernen",builderEmpty:"Noch keine Bedingungen.",builderColumn:"Spalte",builderOperator:"Operator",builderValue:"Wert",builderValueFrom:"Von",builderValueTo:"Bis",builderValuePlaceholder:"Wert eingeben",builderOpen:"Filter-Editor\u2026",builderClearAll:"Alle l\xF6schen",builderConditionButton:"+ Bedingung",builderGroupButton:"+ Gruppe",builderTrue:"wahr",builderFalse:"falsch",builderPeriod:"Zeitraum",builderDays:"Tage",filterCustom:"(Benutzerdefiniert\u2026)",filterPopupAria:"Filter {column}",importOpen:"Importieren\u2026",groupPanelHint:"Ziehen Sie eine Spalte hierher, um danach zu gruppieren",groupAddLevel:"Gruppierungsebene hinzuf\xFCgen",groupAddLevelButton:"+ Ebene hinzuf\xFCgen\u2026",groupNoGrouping:"(keine Gruppierung)",groupLevelAria:"Gruppierungsebene {n}",groupRemoveAria:"{column} entfernen",groupExpandAll:"Alle erweitern",groupCollapseAll:"Alle reduzieren",pagerFirst:"Erste Seite",pagerPrevious:"Vorherige Seite",pagerNext:"N\xE4chste Seite",pagerLast:"Letzte Seite",pagerPage:"Seite",pagerOf:"von",pagerRowsPerPage:"Zeilen pro Seite",pagerAria:"Seitennavigation",pagerPageButton:"Seite {n}",selectAllRows:"Alle Zeilen ausw\xE4hlen",selectRowAria:"Zeile {row} ausw\xE4hlen",selectGroupAria:"Die {count} Zeilen von {group} ausw\xE4hlen",summaryAria:"Zusammenfassung",columnTotalsAria:"Spaltensummen",rowActions:"Zeilenaktionen",detailsAria:"Details",rowNumberAria:"Zeilennummer",noteEditorAria:"Zellennotiz",notePlaceholder:"Notiz zu dieser Zelle schreiben\u2026",addNote:"Notiz hinzuf\xFCgen\u2026",editNote:"Notiz bearbeiten\u2026",deleteNote:"Notiz l\xF6schen",expandDetails:"Details erweitern",collapseDetails:"Details reduzieren",expandTreeRow:"Zeile aufklappen",collapseTreeRow:"Zeile zuklappen",expandColumnGroup:"Spaltengruppe aufklappen",collapseColumnGroup:"Spaltengruppe zuklappen",dragToReorder:"Zum Umsortieren ziehen",menuCopy:"Kopieren",menuCopyWithHeaders:"Mit Spaltenk\xF6pfen kopieren",menuCopyWithGroupHeaders:"Mit Gruppenk\xF6pfen kopieren",menuCut:"Ausschneiden",menuPaste:"Einf\xFCgen",menuExport:"Exportieren",menuChartRange:"Ausgew\xE4hlte Zellen als Diagramm",statsSum:"Summe",statsCount:"Anzahl",statsAvg:"Durchschnitt",statsMin:"Min",statsMax:"Max",statsCells:"Zellen",statsTooLarge:"Auswahl zu gro\xDF f\xFCr eine Summe",statusRows:"Zeilen",statusFiltered:"Gefiltert",statusSelected:"Ausgew\xE4hlt",summaryRows:"Zeilen",announceRows:"{n} Zeilen",announceSortedBy:"sortiert nach {columns}",announceSelected:"{n} ausgew\xE4hlt",announceAscending:"aufsteigend",announceDescending:"absteigend",sideFilters:"Filter",sideBarAria:"Werkzeugbereiche",sideClearFilters:"Alle Filter l\xF6schen",summarySum:"Summe",summaryAvg:"Durchschnitt",summaryMin:"Min",summaryMax:"Max",summaryCount:"Anzahl",summaryDistinct:"Eindeutig",summaryCustom:"Benutzerdefiniert",noTotal:"Keine Summe",busy:"Wird bearbeitet\u2026",busyLoading:"Zeilen werden geladen\u2026",rowsLoadFailed:"Diese Zeilen konnten nicht geladen werden.",retryLoad:"Erneut versuchen",busyEncoding:"Daten werden vorbereitet\u2026",busyFiltering:"Zeilen werden gefiltert\u2026",busySorting:"Zeilen werden sortiert\u2026",busyComputing:"Filtern und Sortieren\u2026",busyGrouping:"Gruppen werden erstellt\u2026",busyAggregating:"Summen werden berechnet\u2026",busyProjecting:"Ansicht wird aktualisiert\u2026",busyExporting:"Datei wird erstellt\u2026",noData:"Keine Daten gefunden",editNewRow:"Neue Zeile",editSaveChanges:"\xC4nderungen speichern",editDiscardChanges:"\xC4nderungen verwerfen",editRow:"Zeile bearbeiten",editRowMenu:"Zeile bearbeiten\u2026",editDeleteRow:"Zeile l\xF6schen",editUndoDelete:"L\xF6schen r\xFCckg\xE4ngig",editActions:"Aktionen",editSaveRow:"Zeile speichern",editSaving:"Wird gespeichert\u2026",editEditingRow:"Zeile {row} wird bearbeitet",editSaveCount:"{n} Zeile(n) speichern",editCannotSave:"Speichern nicht m\xF6glich",editSaveFailed:"Die \xC4nderungen konnten nicht gespeichert werden.",rowStatusNew:"Neue Zeile, nicht gespeichert",rowStatusChanged:"Ungespeicherte \xC4nderungen",rowStatusRemoved:"Zum L\xF6schen markiert",rowStatusSaving:"Wird gespeichert\u2026",rowStatusSaved:"Gespeichert",rowStatusError:"Speichern fehlgeschlagen",rowStatusRetry:"Erneut versuchen",rowStatusDelete:"Zeile l\xF6schen",editDeleteConfirm:"Diese Zeile l\xF6schen?",editAddRowUndo:"Zeile hinzuf\xFCgen",editDeleteRowUndo:"Zeile l\xF6schen",editCellUndo:"{column} bearbeiten",editFillUndo:"{count} Zellen f\xFCllen",editPasteUndo:"{count} Zellen einf\xFCgen",editCutUndo:"{count} Zellen ausschneiden",editGroupTotal:"Gruppensumme",editGroupTotalUndo:"Summe von {column} \xE4ndern ({count} Zeilen)",editNoMatch:"Keine \xDCbereinstimmung",formEditTitle:"Zeile bearbeiten",formAddTitle:"Neue Zeile",formShortcut:"{key}+Enter zum Speichern \xB7 Esc zum Abbrechen",validationRequired:"Dieses Feld ist erforderlich",validationNumber:"Muss eine Zahl sein",validationNumberLocale:"Keine g\xFCltige Zahl. Schreiben Sie z. B. {example}",validationMin:"Muss mindestens {min} sein",validationMax:"Darf h\xF6chstens {max} sein",validationFormat:"Ung\xFCltiges Format",validationEmail:"Ung\xFCltige E-Mail-Adresse",validationInvalid:"Ung\xFCltiger Wert",dateCalendar:"Kalender",dateOpenCalendar:"Kalender \xF6ffnen",datePreviousMonth:"Vorheriger Monat",dateNextMonth:"N\xE4chster Monat",monthJanuary:"Januar",monthFebruary:"Februar",monthMarch:"M\xE4rz",monthApril:"April",monthMay:"Mai",monthJune:"Juni",monthJuly:"Juli",monthAugust:"August",monthSeptember:"September",monthOctober:"Oktober",monthNovember:"November",monthDecember:"Dezember",weekStartsOn:"1",weekdaySu:"So",weekdayMo:"Mo",weekdayTu:"Di",weekdayWe:"Mi",weekdayTh:"Do",weekdayFr:"Fr",weekdaySa:"Sa",importTitle:"Daten importieren",importStepSource:"1. Quelle",importStepMap:"2. Spalten zuordnen",importFile:"CSV-Datei",importPaste:"\u2026oder Zeilen einf\xFCgen",importSeparator:"Trennzeichen",importSeparatorAuto:"Automatisch erkennen",importSeparatorComma:"Komma ,",importSeparatorSemicolon:"Semikolon ;",importSeparatorTab:"Tabulator",importSeparatorPipe:"Pipe |",importFileColumn:"Dateispalte",importDetected:"Erkannt",importGridColumn:"Tabellenspalte",importSample:"Beispiel",importSkip:"\u2014 \xFCberspringen \u2014",importPreview:"Vorschau",importNoSource:"W\xE4hlen Sie zuerst eine Datei oder f\xFCgen Sie Zeilen ein.",importNoRows:"Es wurden keine Datenzeilen gefunden.",importAction:"Importieren",exportAborted:"Export abgebrochen",exportSheetName:"Daten",chart:"Diagramm",chartCategory:"Kategorie",chartSeries:"Reihe",chartAddSeries:"Reihe hinzuf\xFCgen",chartRemoveSeries:"Entfernen",chartSource:"Daten",chartSourceView:"Gefilterte Zeilen",chartSourceSelection:"Ausgew\xE4hlte Zeilen",chartSourceAll:"Alle Zeilen",chartSourceRange:"Ausgew\xE4hlter Bereich (Zeilen {from}\u2013{to})",chartClose:"Diagramm schlie\xDFen",chartFullscreen:"Vollbild",chartExitFullscreen:"Vollbild beenden",chartFloat:"Abdocken",chartDock:"Andocken",chartNewWindow:"Neues Fenster",chartMoveWindow:"Diagrammfenster verschieben",chartResizeWindow:"Gr\xF6\xDFe des Diagrammfensters \xE4ndern",chartResizeDock:"Ziehen, um die Diagrammh\xF6he zu \xE4ndern",chartSwitch:"Kategorie und Reihen tauschen",chartUnlink:"Entkoppeln",chartLink:"Verkn\xFCpfen",chartUnlinked:"Entkoppelt: Das Diagramm beh\xE4lt seine Daten und folgt dem Raster nicht mehr.",chartExportPng:"PNG",chartExportSvg:"SVG",chartExportFailed:"Das Diagramm konnte nicht exportiert werden.",chartCrossFiltered:"Die Tabelle ist auf {value} gefiltert.",chartBlankCategory:"(leer)",chartTruncated:"Es werden die obersten {n} Kategorien angezeigt; die \xFCbrigen sind als \u201ESonstige\u201C zusammengefasst.",chartOther:"Sonstige",chartEmpty:"Noch nichts darzustellen.",chartNoVisibleSeries:"Keine sichtbaren Reihen.",chartNeedsMoreSeries:"Dieser Diagrammtyp braucht mindestens zwei Wertspalten (zum Beispiel Tief und Hoch) \u2014 f\xFCgen Sie eine zweite Reihe hinzu.",chartLoading:"Wird geladen\u2026",chartNeedsRecharts:"Diagramme ben\xF6tigen das optionale Paket `recharts`. Installieren Sie es, um sie zu zeichnen.",chartOnlyOneSeries:"Dieser Diagrammtyp zeigt eine Reihe.",chartByColumn:"Diagramm nach dieser Spalte",chartGroupBy:"Nach",chartGroupNone:"Jeder Wert",chartGroupAuto:"Automatisch",chartGroupDay:"Tag",chartGroupWeek:"Woche",chartGroupMonth:"Monat",chartGroupQuarter:"Quartal",chartGroupYear:"Jahr",chartGroupBins:"{n} Klassen",chartBucketAdjusted:"Zu viele Intervalle f\xFCr eine Achse \u2014 gr\xF6ber gruppiert.",chartWindowed:"{shown} von {total} werden angezeigt.",chartShowAll:"Alle anzeigen",chartCanvasHint:"Diagramm. Scrollen zum Zoomen, Ziehen zum Verschieben, Pfeiltasten zum Bewegen, 0 f\xFCr alle.",chartCanvasHintPick:"Diagramm. Pfeiltasten w\xE4hlen eine Kategorie, Enter oder Leertaste filtert das Raster danach (Strg f\xFCgt hinzu), + und \u2212 zoomen, 0 zeigt alles.",chartCategoryFocus:"{category}: {values} \u2014 {position} von {count}",chartCategoryFiltered:"filtert das Raster",chartAggSum:"Summe",chartAggAvg:"Durchschnitt",chartAggMin:"Min",chartAggMax:"Max",chartAggCount:"Anzahl",chartAggDistinct:"Eindeutig",chartAggFirst:"Erster",chartAggLast:"Letzter",chartTypeColumn:"S\xE4ule",chartTypeBar:"Balken",chartTypeLine:"Linie",chartTypeArea:"Fl\xE4che",chartTypePie:"Kreis",chartTypeDonut:"Ring",chartStacking:"Reihenanordnung",chartStackGrouped:"Gruppiert",chartStackStacked:"Gestapelt",chartStackNormalized:"Gestapelt 100 %",chartFormat:"Format",chartFormatTitle:"Titel",chartFormatCategoryAxis:"Titel der Kategorieachse",chartFormatValueAxis:"Titel der Werteachse",chartFormatLegend:"Legende",chartLegendTop:"Oben",chartLegendBottom:"Unten",chartLegendLeft:"Links",chartLegendRight:"Rechts",chartLegendNone:"Ausgeblendet",chartFormatDataLabels:"Datenbeschriftungen",chartFormatScale:"Werteskala",chartScaleLinear:"Linear",chartScaleLog:"Logarithmisch",chartFormatTextSize:"Textgr\xF6\xDFe",chartFormatTextColor:"Textfarbe",chartFormatDefault:"Standard",chartFormatLabelAngle:"Kategoriebeschriftungen",chartAngleAuto:"Automatisch",chartAngleFlat:"Waagerecht",chartFormatGridLines:"Gitternetzlinien",chartGridValue:"Werteachse",chartGridBoth:"Beide Achsen",chartGridNone:"Keine",chartFormatGridDashed:"Gestricheltes Gitter",chartFormatLineWidth:"Linienst\xE4rke",chartFormatLineDashed:"Gestrichelte Linien",chartFormatFillOpacity:"Deckkraft der F\xFCllung",chartFormatDateFormat:"Datumsformat",chartFormatPalette:"Farben",chartPaletteTheme:"Design",chartPaletteClassic:"Klassisch",chartPaletteColorblind:"Farbenblind-sicher",chartPaletteVivid:"Kr\xE4ftig",chartPaletteMonochrome:"Eine Farbe",sparklineSummary:"{count} Werte von {min} bis {max}, zuletzt {last}",chartTypeWaterfall:"Wasserfall",chartTypeFunnel:"Trichter",chartTypeTreemap:"Treemap",chartTypeHeatmap:"Heatmap",chartTypeBox:"Boxplot",chartTypeRadar:"Netz",chartTypeRangeBar:"Spanne",chartBoxQ1:"Q1",chartBoxMedian:"Median",chartBoxQ3:"Q3",chartBoxOutlier:"Ausrei\xDFer",chartTotal:"Gesamt",chartTypeScatter:"Punkt (XY)",chartTypeBubble:"Blase",chartXAxis:"X-Achse",chartBubbleSize:"Gr\xF6\xDFe",chartXYSampled:"{shown} von {total} Punkten, gleichm\xE4\xDFig ausgew\xE4hlt",licenseMissing:"Nicht lizenziert",licenseExpired:"Lizenz abgelaufen",licenseReleaseNotCovered:"Diese Version ist nicht durch die Lizenz abgedeckt",licenseDomainMismatch:"Lizenz gilt nicht f\xFCr diese Domain",licenseRevoked:"Lizenz widerrufen",licenseInvalidFormat:"Lizenzschl\xFCssel fehlerhaft",licenseInvalidSignature:"Ung\xFCltige Lizenzsignatur",licenseEngineUnavailable:"Browser kann die Lizenz nicht pr\xFCfen (HTTPS erforderlich)",calcAdd:"Berechnete Spalte hinzuf\xFCgen\u2026",calcEdit:"Berechnete Spalte bearbeiten\u2026",calcRemove:"Berechnete Spalte entfernen",calcTitleAdd:"Berechnete Spalte hinzuf\xFCgen",calcTitleEdit:"Berechnete Spalte bearbeiten",calcName:"Name",calcFormula:"Formel",calcFormulaHint:"Spalten als [Name] schreiben. Beispiel: [Preis] * [Menge]",calcColumns:"Spalten",calcFunctions:"Funktionen",calcPreview:"Vorschau",calcPreviewEmpty:"Keine Zeilen f\xFCr die Vorschau",calcErrorAt:"{message} (Zeichen {position})",calcAddButton:"Hinzuf\xFCgen",calcArgsAtLeast:"{min} oder mehr",formulaError_empty:"Formel eingeben",formulaError_unclosedText:'Text nicht geschlossen: ein " fehlt',formulaError_unclosedColumn:"Spaltenname nicht geschlossen: ein ] fehlt",formulaError_emptyColumn:"Leerer Spaltenname []",formulaError_unexpectedChar:"Unerwartetes Zeichen {text}",formulaError_expected:"{text} fehlt",formulaError_cellAfterColon:'Nach ":" fehlt eine Zelle',formulaError_unknownName:"Unbekannter Name {name} \u2014 Spalten als [{name}] schreiben",formulaError_unexpected:"Unerwartetes {text}",formulaError_endsEarly:"Die Formel endet zu fr\xFCh",formulaError_trailing:"Unerwarteter Text am Ende",formulaError_unknownColumn:"Es gibt keine Spalte [{name}]",formulaError_unknownFunction:"Unbekannte Funktion {name}",formulaError_argCount:"{name} erwartet {range} Argument(e)",formulaError_cellsNotAllowed:"Zellbez\xFCge wie A1 gibt es hier nicht \u2014 Spalten als [Name] schreiben"},sm={ok:"OK",cancel:"Annuler",apply:"Appliquer",close:"Fermer",clear:"Effacer",save:"Enregistrer",search:"Rechercher...",selectAll:"Tout s\xE9lectionner",showAll:"Tout afficher",remove:"Supprimer",none:"Aucun",toolbarSearch:"Rechercher...",exportMenu:"Exporter",exportCsv:"Exporter en CSV",exportExcel:"Exporter toutes les donn\xE9es vers Excel",exportExcelSelected:"Exporter les lignes s\xE9lectionn\xE9es vers Excel",exportPdf:"Exporter en PDF",exporting:"Exportation\u2026",columns:"Colonnes",hiddenColumns:"Colonnes masqu\xE9es",noHiddenColumns:"Aucune colonne masqu\xE9e.",sortAsc:"Trier de A \xE0 Z",sortDesc:"Trier de Z \xE0 A",clearSort:"Effacer le tri",cardSortBy:"Trier par",groupByColumn:"Grouper par cette colonne",ungroupColumn:"Retirer du groupement",showGroupPanel:"Afficher le panneau de groupement",hideGroupPanel:"Masquer le panneau de groupement",showFooter:"Afficher le pied de tableau",hideFooter:"Masquer le pied de tableau",showGroupFooters:"Afficher les pieds de groupe",hideGroupFooters:"Masquer les pieds de groupe",hideColumn:"Masquer cette colonne",fieldChooser:"S\xE9lecteur de champs\u2026",bestFit:"Ajuster la largeur",bestFitAll:"Ajuster la largeur (toutes les colonnes)",pinRowTop:"\xC9pingler la ligne en haut",pinRowBottom:"\xC9pingler la ligne en bas",unpinRow:"D\xE9s\xE9pingler la ligne",findLabel:"Rechercher dans la grille",findPrevious:"R\xE9sultat pr\xE9c\xE9dent",findNext:"R\xE9sultat suivant",findClose:"Fermer la recherche",findCount:"{n} sur {count}",findNone:"Aucun r\xE9sultat",renameColumn:"Renommer la colonne",fixedPosition:"D\xE9finir une position fixe",pinLeft:"Gauche",pinRight:"Droite",pinSticky:"Fixe",unpin:"Lib\xE9rer",moveLeft:"D\xE9placer vers la gauche",moveRight:"D\xE9placer vers la droite",filterPlaceholder:"Filtrer\u2026",filterColumnAria:"Filtrer {column}",filterOperatorDefault:"Par d\xE9faut",filterOperatorAria:"Op\xE9rateur de filtre pour {column}",filterSelectAll:"Tout s\xE9lectionner",filterBlank:"(Vides)",filterNonBlank:"(Non vides)",filterEmptyText:"(texte vide)",filterSpace:"(1 espace)",filterSpaces:"({n} espaces)",filterNoMatch:"Aucune valeur correspondante",filterLoading:"Chargement des valeurs\u2026",filterTruncated:"Seules les premi\xE8res valeurs sont affich\xE9es \u2014 recherchez pour trouver les autres.",filterRemove:"Supprimer le filtre",filterToggle:"Appliquer le filtre",filterEditBuilder:"Modifier le filtre",filterNone:"Aucun filtre",filterActive:"Filtre actif",opEquals:"est",opNotEquals:"n'est pas",opGreater:">",opGreaterOrEqual:"\u2265",opLess:"<",opLessOrEqual:"\u2264",opContains:"contient",opNotContains:"ne contient pas",opStartsWith:"commence par",opEndsWith:"se termine par",opIsBlank:"est vide",opIsNotBlank:"n'est pas vide",opIsOneOf:"fait partie de",opIsBetween:"est entre",opValuesCount:"{n} valeurs",opInPeriod:"est dans",periodToday:"aujourd'hui",periodYesterday:"hier",periodTomorrow:"demain",periodThisWeek:"cette semaine",periodLastWeek:"la semaine derni\xE8re",periodNextWeek:"la semaine prochaine",periodThisMonth:"ce mois-ci",periodLastMonth:"le mois dernier",periodNextMonth:"le mois prochain",periodThisQuarter:"ce trimestre",periodLastQuarter:"le trimestre dernier",periodNextQuarter:"le trimestre prochain",periodThisYear:"cette ann\xE9e",periodLastYear:"l'ann\xE9e derni\xE8re",periodNextYear:"l'ann\xE9e prochaine",periodYearToDate:"depuis le d\xE9but de l'ann\xE9e",periodLastDays:"les {n} derniers jours",periodNextDays:"les {n} prochains jours",filterAnd:"ET",filterOr:"OU",builderTitle:"G\xE9n\xE9rateur de filtre",builderCombine:"Combiner les conditions avec",builderAddCondition:"Ajouter une condition",builderAddGroup:"Ajouter un groupe",builderRemoveGroup:"Supprimer le groupe",builderRemoveCondition:"Supprimer la condition",builderEmpty:"Aucune condition pour le moment.",builderColumn:"Colonne",builderOperator:"Op\xE9rateur",builderValue:"Valeur",builderValueFrom:"De",builderValueTo:"\xC0",builderValuePlaceholder:"Saisissez une valeur",builderOpen:"G\xE9n\xE9rateur de filtre\u2026",builderClearAll:"Tout effacer",builderConditionButton:"+ Condition",builderGroupButton:"+ Groupe",builderTrue:"vrai",builderFalse:"faux",builderPeriod:"P\xE9riode",builderDays:"Jours",filterCustom:"(Personnalis\xE9\u2026)",filterPopupAria:"Filtre {column}",importOpen:"Importer\u2026",groupPanelHint:"Faites glisser une colonne ici pour grouper",groupAddLevel:"Ajouter un niveau de groupement",groupAddLevelButton:"+ Ajouter un niveau\u2026",groupNoGrouping:"(aucun groupement)",groupLevelAria:"Niveau de groupement {n}",groupRemoveAria:"Supprimer {column}",groupExpandAll:"D\xE9velopper tout",groupCollapseAll:"R\xE9duire tout",pagerFirst:"Premi\xE8re page",pagerPrevious:"Page pr\xE9c\xE9dente",pagerNext:"Page suivante",pagerLast:"Derni\xE8re page",pagerPage:"Page",pagerOf:"sur",pagerRowsPerPage:"Lignes par page",pagerAria:"Pagination",pagerPageButton:"Page {n}",selectAllRows:"S\xE9lectionner toutes les lignes",selectRowAria:"S\xE9lectionner la ligne {row}",selectGroupAria:"S\xE9lectionner les {count} lignes de {group}",summaryAria:"Synth\xE8se",columnTotalsAria:"Totaux des colonnes",rowActions:"Actions de ligne",detailsAria:"D\xE9tails",rowNumberAria:"Num\xE9ro de ligne",noteEditorAria:"Note de cellule",notePlaceholder:"\xC9crivez une note sur cette cellule\u2026",addNote:"Ajouter une note\u2026",editNote:"Modifier la note\u2026",deleteNote:"Supprimer la note",expandDetails:"D\xE9velopper les d\xE9tails",collapseDetails:"R\xE9duire les d\xE9tails",expandTreeRow:"D\xE9velopper la ligne",collapseTreeRow:"R\xE9duire la ligne",expandColumnGroup:"D\xE9velopper le groupe de colonnes",collapseColumnGroup:"R\xE9duire le groupe de colonnes",dragToReorder:"Faire glisser pour r\xE9ordonner",menuCopy:"Copier",menuCopyWithHeaders:"Copier avec les en-t\xEAtes",menuCopyWithGroupHeaders:"Copier avec les en-t\xEAtes de groupe",menuCut:"Couper",menuPaste:"Coller",menuExport:"Exporter",menuChartRange:"Graphique des cellules s\xE9lectionn\xE9es",statsSum:"Somme",statsCount:"Nombre",statsAvg:"Moyenne",statsMin:"Min",statsMax:"Max",statsCells:"Cellules",statsTooLarge:"S\xE9lection trop grande pour \xEAtre totalis\xE9e",statusRows:"Lignes",statusFiltered:"Filtr\xE9es",statusSelected:"S\xE9lectionn\xE9es",summaryRows:"lignes",announceRows:"{n} lignes",announceSortedBy:"tri\xE9 par {columns}",announceSelected:"{n} s\xE9lectionn\xE9es",announceAscending:"croissant",announceDescending:"d\xE9croissant",sideFilters:"Filtres",sideBarAria:"Panneaux d'outils",sideClearFilters:"Effacer tous les filtres",summarySum:"Somme",summaryAvg:"Moyenne",summaryMin:"Min",summaryMax:"Max",summaryCount:"Nombre",summaryDistinct:"Distinct",summaryCustom:"Personnalis\xE9",noTotal:"Aucun total",busy:"En cours\u2026",busyLoading:"Chargement des lignes\u2026",rowsLoadFailed:"Impossible de charger ces lignes.",retryLoad:"R\xE9essayer",busyEncoding:"Pr\xE9paration des donn\xE9es\u2026",busyFiltering:"Filtrage des lignes\u2026",busySorting:"Tri des lignes\u2026",busyComputing:"Filtrage et tri\u2026",busyGrouping:"Construction des groupes\u2026",busyAggregating:"Calcul des totaux\u2026",busyProjecting:"Mise \xE0 jour de la vue\u2026",busyExporting:"Cr\xE9ation du fichier\u2026",noData:"Aucune donn\xE9e trouv\xE9e",editNewRow:"Nouvelle ligne",editSaveChanges:"Enregistrer les modifications",editDiscardChanges:"Annuler les modifications",editRow:"Modifier la ligne",editRowMenu:"Modifier la ligne\u2026",editDeleteRow:"Supprimer la ligne",editUndoDelete:"Annuler la suppression",editActions:"Actions",editSaveRow:"Enregistrer la ligne",editSaving:"Enregistrement\u2026",editEditingRow:"Modification de la ligne {row}",editSaveCount:"Enregistrer {n} ligne(s)",editCannotSave:"Enregistrement impossible",editSaveFailed:"Les modifications n'ont pas pu \xEAtre enregistr\xE9es.",rowStatusNew:"Nouvelle ligne non enregistr\xE9e",rowStatusChanged:"Modifications non enregistr\xE9es",rowStatusRemoved:"Marqu\xE9e pour suppression",rowStatusSaving:"Enregistrement\u2026",rowStatusSaved:"Enregistr\xE9",rowStatusError:"\xC9chec de l'enregistrement",rowStatusRetry:"R\xE9essayer",rowStatusDelete:"Supprimer la ligne",editDeleteConfirm:"Supprimer cette ligne ?",editAddRowUndo:"Ajouter une ligne",editDeleteRowUndo:"Supprimer la ligne",editCellUndo:"Modifier {column}",editFillUndo:"Remplir {count} cellules",editPasteUndo:"Coller {count} cellules",editCutUndo:"Couper {count} cellules",editGroupTotal:"Total du groupe",editGroupTotalUndo:"Modifier le total de {column} ({count} lignes)",editNoMatch:"Aucune correspondance",formEditTitle:"Modifier la ligne",formAddTitle:"Nouvelle ligne",formShortcut:"{key}+Entr\xE9e pour enregistrer \xB7 \xC9chap pour annuler",validationRequired:"Ce champ est obligatoire",validationNumber:"Doit \xEAtre un nombre",validationNumberLocale:"Nombre non valide. \xC9crivez par exemple {example}",validationMin:"Doit \xEAtre au moins {min}",validationMax:"Doit \xEAtre au plus {max}",validationFormat:"Format invalide",validationEmail:"Adresse e-mail invalide",validationInvalid:"Valeur invalide",dateCalendar:"Calendrier",dateOpenCalendar:"Ouvrir le calendrier",datePreviousMonth:"Mois pr\xE9c\xE9dent",dateNextMonth:"Mois suivant",monthJanuary:"Janvier",monthFebruary:"F\xE9vrier",monthMarch:"Mars",monthApril:"Avril",monthMay:"Mai",monthJune:"Juin",monthJuly:"Juillet",monthAugust:"Ao\xFBt",monthSeptember:"Septembre",monthOctober:"Octobre",monthNovember:"Novembre",monthDecember:"D\xE9cembre",weekStartsOn:"1",weekdaySu:"Di",weekdayMo:"Lu",weekdayTu:"Ma",weekdayWe:"Me",weekdayTh:"Je",weekdayFr:"Ve",weekdaySa:"Sa",importTitle:"Importer des donn\xE9es",importStepSource:"1. Source",importStepMap:"2. Associer les colonnes",importFile:"Fichier CSV",importPaste:"\u2026ou collez des lignes",importSeparator:"S\xE9parateur",importSeparatorAuto:"D\xE9tecter automatiquement",importSeparatorComma:"Virgule ,",importSeparatorSemicolon:"Point-virgule ;",importSeparatorTab:"Tabulation",importSeparatorPipe:"Barre verticale |",importFileColumn:"Colonne du fichier",importDetected:"D\xE9tect\xE9",importGridColumn:"Colonne du tableau",importSample:"Exemple",importSkip:"\u2014 ignorer \u2014",importPreview:"Aper\xE7u",importNoSource:"Choisissez d'abord un fichier ou collez des lignes.",importNoRows:"Aucune ligne de donn\xE9es trouv\xE9e.",importAction:"Importer",exportAborted:"Exportation interrompue",exportSheetName:"Donn\xE9es",chart:"Graphique",chartCategory:"Cat\xE9gorie",chartSeries:"S\xE9rie",chartAddSeries:"Ajouter une s\xE9rie",chartRemoveSeries:"Supprimer",chartSource:"Donn\xE9es",chartSourceView:"Lignes filtr\xE9es",chartSourceSelection:"Lignes s\xE9lectionn\xE9es",chartSourceAll:"Toutes les lignes",chartSourceRange:"Plage s\xE9lectionn\xE9e (lignes {from}\u2013{to})",chartClose:"Fermer le graphique",chartFullscreen:"Plein \xE9cran",chartExitFullscreen:"Quitter le plein \xE9cran",chartFloat:"D\xE9tacher",chartDock:"Ancrer",chartNewWindow:"Nouvelle fen\xEAtre",chartMoveWindow:"D\xE9placer la fen\xEAtre du graphique",chartResizeWindow:"Redimensionner la fen\xEAtre du graphique",chartResizeDock:"Faites glisser pour changer la hauteur du graphique",chartSwitch:"Permuter cat\xE9gories et s\xE9ries",chartUnlink:"Dissocier",chartLink:"Lier",chartUnlinked:"Dissoci\xE9 : le graphique garde ses donn\xE9es et ne suit plus la grille.",chartExportPng:"PNG",chartExportSvg:"SVG",chartExportFailed:"Le graphique n'a pas pu \xEAtre export\xE9.",chartCrossFiltered:"Le tableau est filtr\xE9 sur {value}.",chartBlankCategory:"(vide)",chartTruncated:"Affichage des {n} premi\xE8res cat\xE9gories ; les autres sont regroup\xE9es sous \xAB Autres \xBB.",chartOther:"Autres",chartEmpty:"Rien \xE0 repr\xE9senter pour le moment.",chartNoVisibleSeries:"Aucune s\xE9rie visible.",chartNeedsMoreSeries:"Ce type de graphique demande au moins deux colonnes de valeurs (par exemple un minimum et un maximum) \u2014 ajoutez une deuxi\xE8me s\xE9rie.",chartLoading:"Chargement\u2026",chartNeedsRecharts:"Les graphiques n\xE9cessitent le paquet optionnel `recharts`. Installez-le pour les dessiner.",chartOnlyOneSeries:"Ce type de graphique affiche une seule s\xE9rie.",chartByColumn:"Graphique par cette colonne",chartGroupBy:"Par",chartGroupNone:"Chaque valeur",chartGroupAuto:"Automatique",chartGroupDay:"Jour",chartGroupWeek:"Semaine",chartGroupMonth:"Mois",chartGroupQuarter:"Trimestre",chartGroupYear:"Ann\xE9e",chartGroupBins:"{n} classes",chartBucketAdjusted:"Trop d\u2019intervalles pour un axe \u2014 regroupement plus large.",chartWindowed:"Affichage de {shown} sur {total}.",chartShowAll:"Tout afficher",chartCanvasHint:"Graphique. Faites d\xE9filer pour zoomer, glissez pour d\xE9placer, fl\xE8ches pour parcourir, 0 pour tout afficher.",chartCanvasHintPick:"Graphique. Les fl\xE8ches choisissent une cat\xE9gorie, Entr\xE9e ou Espace filtre la grille sur elle (Ctrl en ajoute une), + et \u2212 zooment, 0 affiche tout.",chartCategoryFocus:"{category} : {values} \u2014 {position} sur {count}",chartCategoryFiltered:"filtre la grille",chartAggSum:"Somme",chartAggAvg:"Moyenne",chartAggMin:"Min",chartAggMax:"Max",chartAggCount:"Nombre",chartAggDistinct:"Distinct",chartAggFirst:"Premier",chartAggLast:"Dernier",chartTypeColumn:"Colonnes",chartTypeBar:"Barres",chartTypeLine:"Courbe",chartTypeArea:"Aires",chartTypePie:"Secteurs",chartTypeDonut:"Anneau",chartStacking:"Disposition des s\xE9ries",chartStackGrouped:"Group\xE9",chartStackStacked:"Empil\xE9",chartStackNormalized:"Empil\xE9 100 %",chartFormat:"Format",chartFormatTitle:"Titre",chartFormatCategoryAxis:"Titre de l\u2019axe des cat\xE9gories",chartFormatValueAxis:"Titre de l\u2019axe des valeurs",chartFormatLegend:"L\xE9gende",chartLegendTop:"En haut",chartLegendBottom:"En bas",chartLegendLeft:"\xC0 gauche",chartLegendRight:"\xC0 droite",chartLegendNone:"Masqu\xE9e",chartFormatDataLabels:"\xC9tiquettes de donn\xE9es",chartFormatScale:"\xC9chelle des valeurs",chartScaleLinear:"Lin\xE9aire",chartScaleLog:"Logarithmique",chartFormatTextSize:"Taille du texte",chartFormatTextColor:"Couleur du texte",chartFormatDefault:"Par d\xE9faut",chartFormatLabelAngle:"\xC9tiquettes de cat\xE9gorie",chartAngleAuto:"Automatique",chartAngleFlat:"Horizontales",chartFormatGridLines:"Quadrillage",chartGridValue:"Axe des valeurs",chartGridBoth:"Les deux axes",chartGridNone:"Aucun",chartFormatGridDashed:"Quadrillage en pointill\xE9s",chartFormatLineWidth:"\xC9paisseur du trait",chartFormatLineDashed:"Traits en pointill\xE9s",chartFormatFillOpacity:"Opacit\xE9 du remplissage",chartFormatDateFormat:"Format de date",chartFormatPalette:"Couleurs",chartPaletteTheme:"Th\xE8me",chartPaletteClassic:"Classique",chartPaletteColorblind:"Adapt\xE9e au daltonisme",chartPaletteVivid:"Vives",chartPaletteMonochrome:"Une couleur",sparklineSummary:"{count} valeurs de {min} \xE0 {max}, derni\xE8re {last}",chartTypeWaterfall:"Cascade",chartTypeFunnel:"Entonnoir",chartTypeTreemap:"Compartimentage",chartTypeHeatmap:"Carte thermique",chartTypeBox:"Bo\xEEte \xE0 moustaches",chartTypeRadar:"Radar",chartTypeRangeBar:"Plage",chartBoxQ1:"Q1",chartBoxMedian:"M\xE9diane",chartBoxQ3:"Q3",chartBoxOutlier:"Valeur aberrante",chartTotal:"Total",chartTypeScatter:"Nuage de points",chartTypeBubble:"Bulles",chartXAxis:"Axe X",chartBubbleSize:"Taille",chartXYSampled:"{shown} points sur {total}, \xE9chantillonn\xE9s r\xE9guli\xE8rement",licenseMissing:"Sans licence",licenseExpired:"Licence expir\xE9e",licenseReleaseNotCovered:"Cette version n\u2019est pas couverte par la licence",licenseDomainMismatch:"Licence non valide pour ce domaine",licenseRevoked:"Licence r\xE9voqu\xE9e",licenseInvalidFormat:"Cl\xE9 de licence mal form\xE9e",licenseInvalidSignature:"Signature de licence invalide",licenseEngineUnavailable:"Le navigateur ne peut pas v\xE9rifier la licence (HTTPS requis)",calcAdd:"Ajouter une colonne calcul\xE9e\u2026",calcEdit:"Modifier la colonne calcul\xE9e\u2026",calcRemove:"Supprimer la colonne calcul\xE9e",calcTitleAdd:"Ajouter une colonne calcul\xE9e",calcTitleEdit:"Modifier la colonne calcul\xE9e",calcName:"Nom",calcFormula:"Formule",calcFormulaHint:"\xC9crivez une colonne [Nom]. Exemple : [Prix] * [Qt\xE9]",calcColumns:"Colonnes",calcFunctions:"Fonctions",calcPreview:"Aper\xE7u",calcPreviewEmpty:"Aucune ligne \xE0 pr\xE9visualiser",calcErrorAt:"{message} (caract\xE8re {position})",calcAddButton:"Ajouter",calcArgsAtLeast:"{min} ou plus",formulaError_empty:"Saisissez une formule",formulaError_unclosedText:'Texte non ferm\xE9 : il manque un "',formulaError_unclosedColumn:"Nom de colonne non ferm\xE9 : il manque un ]",formulaError_emptyColumn:"Nom de colonne vide []",formulaError_unexpectedChar:"Caract\xE8re inattendu {text}",formulaError_expected:"{text} manquant",formulaError_cellAfterColon:"Une cellule manque apr\xE8s \xAB : \xBB",formulaError_unknownName:"Nom inconnu {name} \u2014 \xE9crivez la colonne [{name}]",formulaError_unexpected:"{text} inattendu",formulaError_endsEarly:"La formule se termine trop t\xF4t",formulaError_trailing:"Texte inattendu \xE0 la fin",formulaError_unknownColumn:"Il n'y a pas de colonne [{name}]",formulaError_unknownFunction:"Fonction inconnue {name}",formulaError_argCount:"{name} attend {range} argument(s)",formulaError_cellsNotAllowed:"Les r\xE9f\xE9rences de cellule comme A1 ne servent pas ici \u2014 \xE9crivez une colonne [Nom]"},dm={ok:"Aceptar",cancel:"Cancelar",apply:"Aplicar",close:"Cerrar",clear:"Borrar",save:"Guardar",search:"Buscar...",selectAll:"Seleccionar todo",showAll:"Mostrar todo",remove:"Quitar",none:"Ninguno",toolbarSearch:"Buscar...",exportMenu:"Exportar",exportCsv:"Exportar a CSV",exportExcel:"Exportar todos los datos a Excel",exportExcelSelected:"Exportar las filas seleccionadas a Excel",exportPdf:"Exportar a PDF",exporting:"Exportando\u2026",columns:"Columnas",hiddenColumns:"Columnas ocultas",noHiddenColumns:"No hay columnas ocultas.",sortAsc:"Ordenar de la A a la Z",sortDesc:"Ordenar de la Z a la A",clearSort:"Borrar ordenaci\xF3n",cardSortBy:"Ordenar por",groupByColumn:"Agrupar por esta columna",ungroupColumn:"Quitar de la agrupaci\xF3n",showGroupPanel:"Mostrar panel de agrupaci\xF3n",hideGroupPanel:"Ocultar panel de agrupaci\xF3n",showFooter:"Mostrar pie de tabla",hideFooter:"Ocultar pie de tabla",showGroupFooters:"Mostrar pies de grupo",hideGroupFooters:"Ocultar pies de grupo",hideColumn:"Ocultar esta columna",fieldChooser:"Selector de campos\u2026",bestFit:"Ajustar ancho",bestFitAll:"Ajustar ancho (todas las columnas)",pinRowTop:"Fijar fila arriba",pinRowBottom:"Fijar fila abajo",unpinRow:"Desfijar fila",findLabel:"Buscar en la tabla",findPrevious:"Coincidencia anterior",findNext:"Coincidencia siguiente",findClose:"Cerrar b\xFAsqueda",findCount:"{n} de {count}",findNone:"Sin coincidencias",renameColumn:"Cambiar nombre de columna",fixedPosition:"Establecer posici\xF3n fija",pinLeft:"Izquierda",pinRight:"Derecha",pinSticky:"Fija",unpin:"Liberar",moveLeft:"Mover a la izquierda",moveRight:"Mover a la derecha",filterPlaceholder:"Filtrar\u2026",filterColumnAria:"Filtrar {column}",filterOperatorDefault:"Predeterminado",filterOperatorAria:"Operador de filtro para {column}",filterSelectAll:"Seleccionar todo",filterBlank:"(En blanco)",filterNonBlank:"(No en blanco)",filterEmptyText:"(texto vac\xEDo)",filterSpace:"(1 espacio)",filterSpaces:"({n} espacios)",filterNoMatch:"No hay valores coincidentes",filterLoading:"Cargando valores\u2026",filterTruncated:"Solo se muestran los primeros valores \u2014 busque para encontrar el resto.",filterRemove:"Quitar el filtro",filterToggle:"Aplicar el filtro",filterEditBuilder:"Editar el filtro",filterNone:"Sin filtro",filterActive:"Filtro activo",opEquals:"es",opNotEquals:"no es",opGreater:">",opGreaterOrEqual:"\u2265",opLess:"<",opLessOrEqual:"\u2264",opContains:"contiene",opNotContains:"no contiene",opStartsWith:"empieza por",opEndsWith:"termina en",opIsBlank:"est\xE1 en blanco",opIsNotBlank:"no est\xE1 en blanco",opIsOneOf:"es uno de",opIsBetween:"est\xE1 entre",opValuesCount:"{n} valores",opInPeriod:"est\xE1 en",periodToday:"hoy",periodYesterday:"ayer",periodTomorrow:"ma\xF1ana",periodThisWeek:"esta semana",periodLastWeek:"la semana pasada",periodNextWeek:"la pr\xF3xima semana",periodThisMonth:"este mes",periodLastMonth:"el mes pasado",periodNextMonth:"el pr\xF3ximo mes",periodThisQuarter:"este trimestre",periodLastQuarter:"el trimestre pasado",periodNextQuarter:"el pr\xF3ximo trimestre",periodThisYear:"este a\xF1o",periodLastYear:"el a\xF1o pasado",periodNextYear:"el pr\xF3ximo a\xF1o",periodYearToDate:"en lo que va de a\xF1o",periodLastDays:"los \xFAltimos {n} d\xEDas",periodNextDays:"los pr\xF3ximos {n} d\xEDas",filterAnd:"Y",filterOr:"O",builderTitle:"Generador de filtros",builderCombine:"Combinar condiciones con",builderAddCondition:"A\xF1adir condici\xF3n",builderAddGroup:"A\xF1adir grupo",builderRemoveGroup:"Quitar grupo",builderRemoveCondition:"Quitar condici\xF3n",builderEmpty:"Todav\xEDa no hay condiciones.",builderColumn:"Columna",builderOperator:"Operador",builderValue:"Valor",builderValueFrom:"Desde",builderValueTo:"Hasta",builderValuePlaceholder:"Introduzca un valor",builderOpen:"Generador de filtros\u2026",builderClearAll:"Borrar todo",builderConditionButton:"+ Condici\xF3n",builderGroupButton:"+ Grupo",builderTrue:"verdadero",builderFalse:"falso",builderPeriod:"Per\xEDodo",builderDays:"D\xEDas",filterCustom:"(Personalizado\u2026)",filterPopupAria:"Filtro {column}",importOpen:"Importar\u2026",groupPanelHint:"Arrastre una columna aqu\xED para agrupar por ella",groupAddLevel:"A\xF1adir nivel de agrupaci\xF3n",groupAddLevelButton:"+ A\xF1adir nivel\u2026",groupNoGrouping:"(sin agrupaci\xF3n)",groupLevelAria:"Nivel de agrupaci\xF3n {n}",groupRemoveAria:"Quitar {column}",groupExpandAll:"Expandir todo",groupCollapseAll:"Contraer todo",pagerFirst:"Primera p\xE1gina",pagerPrevious:"P\xE1gina anterior",pagerNext:"P\xE1gina siguiente",pagerLast:"\xDAltima p\xE1gina",pagerPage:"P\xE1gina",pagerOf:"de",pagerRowsPerPage:"Filas por p\xE1gina",pagerAria:"Paginaci\xF3n",pagerPageButton:"P\xE1gina {n}",selectAllRows:"Seleccionar todas las filas",selectRowAria:"Seleccionar la fila {row}",selectGroupAria:"Seleccionar las {count} filas de {group}",summaryAria:"Resumen",columnTotalsAria:"Totales de columna",rowActions:"Acciones de fila",detailsAria:"Detalles",rowNumberAria:"N\xFAmero de fila",noteEditorAria:"Nota de celda",notePlaceholder:"Escriba una nota sobre esta celda\u2026",addNote:"A\xF1adir nota\u2026",editNote:"Editar nota\u2026",deleteNote:"Eliminar nota",expandDetails:"Expandir detalles",collapseDetails:"Contraer detalles",expandTreeRow:"Expandir fila",collapseTreeRow:"Contraer fila",expandColumnGroup:"Expandir grupo de columnas",collapseColumnGroup:"Contraer grupo de columnas",dragToReorder:"Arrastre para reordenar",menuCopy:"Copiar",menuCopyWithHeaders:"Copiar con encabezados",menuCopyWithGroupHeaders:"Copiar con encabezados de grupo",menuCut:"Cortar",menuPaste:"Pegar",menuExport:"Exportar",menuChartRange:"Graficar celdas seleccionadas",statsSum:"Suma",statsCount:"Recuento",statsAvg:"Promedio",statsMin:"M\xEDnimo",statsMax:"M\xE1ximo",statsCells:"Celdas",statsTooLarge:"Selecci\xF3n demasiado grande para sumarla",statusRows:"Filas",statusFiltered:"Filtradas",statusSelected:"Seleccionadas",summaryRows:"filas",announceRows:"{n} filas",announceSortedBy:"ordenado por {columns}",announceSelected:"{n} seleccionadas",announceAscending:"ascendente",announceDescending:"descendente",sideFilters:"Filtros",sideBarAria:"Paneles de herramientas",sideClearFilters:"Borrar todos los filtros",summarySum:"Suma",summaryAvg:"Promedio",summaryMin:"M\xEDnimo",summaryMax:"M\xE1ximo",summaryCount:"Recuento",summaryDistinct:"Distintos",summaryCustom:"Personalizado",noTotal:"Sin total",busy:"Trabajando\u2026",busyLoading:"Cargando filas\u2026",rowsLoadFailed:"No se pudieron cargar estas filas.",retryLoad:"Reintentar",busyEncoding:"Preparando datos\u2026",busyFiltering:"Filtrando filas\u2026",busySorting:"Ordenando filas\u2026",busyComputing:"Filtrando y ordenando\u2026",busyGrouping:"Creando grupos\u2026",busyAggregating:"Calculando totales\u2026",busyProjecting:"Actualizando la vista\u2026",busyExporting:"Creando el archivo\u2026",noData:"No se encontraron datos",editNewRow:"Nueva fila",editSaveChanges:"Guardar cambios",editDiscardChanges:"Descartar cambios",editRow:"Editar fila",editRowMenu:"Editar fila\u2026",editDeleteRow:"Eliminar fila",editUndoDelete:"Deshacer eliminaci\xF3n",editActions:"Acciones",editSaveRow:"Guardar fila",editSaving:"Guardando\u2026",editEditingRow:"Editando la fila {row}",editSaveCount:"Guardar {n} fila(s)",editCannotSave:"No se puede guardar",editSaveFailed:"No se pudieron guardar los cambios.",rowStatusNew:"Fila nueva sin guardar",rowStatusChanged:"Cambios sin guardar",rowStatusRemoved:"Marcada para eliminar",rowStatusSaving:"Guardando\u2026",rowStatusSaved:"Guardado",rowStatusError:"Error al guardar",rowStatusRetry:"Reintentar",rowStatusDelete:"Eliminar fila",editDeleteConfirm:"\xBFEliminar esta fila?",editAddRowUndo:"A\xF1adir fila",editDeleteRowUndo:"Eliminar fila",editCellUndo:"Editar {column}",editFillUndo:"Rellenar {count} celdas",editPasteUndo:"Pegar {count} celdas",editCutUndo:"Cortar {count} celdas",editGroupTotal:"Total del grupo",editGroupTotalUndo:"Cambiar total de {column} ({count} filas)",editNoMatch:"Sin coincidencias",formEditTitle:"Editar fila",formAddTitle:"Nueva fila",formShortcut:"{key}+Intro para guardar \xB7 Esc para cancelar",validationRequired:"Este campo es obligatorio",validationNumber:"Debe ser un n\xFAmero",validationNumberLocale:"No es un n\xFAmero v\xE1lido. Escr\xEDbalo as\xED: {example}",validationMin:"Debe ser como m\xEDnimo {min}",validationMax:"Debe ser como m\xE1ximo {max}",validationFormat:"Formato no v\xE1lido",validationEmail:"Direcci\xF3n de correo no v\xE1lida",validationInvalid:"Valor no v\xE1lido",dateCalendar:"Calendario",dateOpenCalendar:"Abrir calendario",datePreviousMonth:"Mes anterior",dateNextMonth:"Mes siguiente",monthJanuary:"Enero",monthFebruary:"Febrero",monthMarch:"Marzo",monthApril:"Abril",monthMay:"Mayo",monthJune:"Junio",monthJuly:"Julio",monthAugust:"Agosto",monthSeptember:"Septiembre",monthOctober:"Octubre",monthNovember:"Noviembre",monthDecember:"Diciembre",weekStartsOn:"1",weekdaySu:"Do",weekdayMo:"Lu",weekdayTu:"Ma",weekdayWe:"Mi",weekdayTh:"Ju",weekdayFr:"Vi",weekdaySa:"S\xE1",importTitle:"Importar datos",importStepSource:"1. Origen",importStepMap:"2. Asignar columnas",importFile:"Archivo CSV",importPaste:"\u2026o pegue filas",importSeparator:"Separador",importSeparatorAuto:"Detectar autom\xE1ticamente",importSeparatorComma:"Coma ,",importSeparatorSemicolon:"Punto y coma ;",importSeparatorTab:"Tabulador",importSeparatorPipe:"Barra vertical |",importFileColumn:"Columna del archivo",importDetected:"Detectado",importGridColumn:"Columna de la tabla",importSample:"Muestra",importSkip:"\u2014 omitir \u2014",importPreview:"Vista previa",importNoSource:"Elija primero un archivo o pegue algunas filas.",importNoRows:"No se encontraron filas de datos.",importAction:"Importar",exportAborted:"Exportaci\xF3n cancelada",exportSheetName:"Datos",chart:"Gr\xE1fico",chartCategory:"Categor\xEDa",chartSeries:"Serie",chartAddSeries:"A\xF1adir serie",chartRemoveSeries:"Quitar",chartSource:"Datos",chartSourceView:"Filas filtradas",chartSourceSelection:"Filas seleccionadas",chartSourceAll:"Todas las filas",chartSourceRange:"Rango seleccionado (filas {from}\u2013{to})",chartClose:"Cerrar el gr\xE1fico",chartFullscreen:"Pantalla completa",chartExitFullscreen:"Salir de pantalla completa",chartFloat:"Desacoplar",chartDock:"Acoplar",chartNewWindow:"Nueva ventana",chartMoveWindow:"Mover la ventana del gr\xE1fico",chartResizeWindow:"Cambiar el tama\xF1o de la ventana del gr\xE1fico",chartResizeDock:"Arrastre para cambiar la altura del gr\xE1fico",chartSwitch:"Intercambiar categor\xEDas y series",chartUnlink:"Desvincular",chartLink:"Vincular",chartUnlinked:"Desvinculado: el gr\xE1fico conserva sus datos y ya no sigue a la cuadr\xEDcula.",chartExportPng:"PNG",chartExportSvg:"SVG",chartExportFailed:"No se pudo exportar el gr\xE1fico.",chartCrossFiltered:"La tabla est\xE1 filtrada por {value}.",chartBlankCategory:"(en blanco)",chartTruncated:"Se muestran las {n} categor\xEDas principales; el resto se agrupa como \xABOtros\xBB.",chartOther:"Otros",chartEmpty:"Todav\xEDa no hay nada que representar.",chartNoVisibleSeries:"No hay series visibles.",chartNeedsMoreSeries:"Este tipo de gr\xE1fico necesita al menos dos columnas de valores (por ejemplo, m\xEDnimo y m\xE1ximo): a\xF1ada una segunda serie.",chartLoading:"Cargando\u2026",chartNeedsRecharts:"Los gr\xE1ficos necesitan el paquete opcional `recharts`. Inst\xE1lelo para dibujarlos.",chartOnlyOneSeries:"Este tipo de gr\xE1fico muestra una serie.",chartByColumn:"Gr\xE1fico por esta columna",chartGroupBy:"Por",chartGroupNone:"Cada valor",chartGroupAuto:"Autom\xE1tico",chartGroupDay:"D\xEDa",chartGroupWeek:"Semana",chartGroupMonth:"Mes",chartGroupQuarter:"Trimestre",chartGroupYear:"A\xF1o",chartGroupBins:"{n} intervalos",chartBucketAdjusted:"Demasiados intervalos para un eje \u2014 se agrup\xF3 de forma m\xE1s amplia.",chartWindowed:"Mostrando {shown} de {total}.",chartShowAll:"Mostrar todo",chartCanvasHint:"Gr\xE1fico. Desplace para acercar, arrastre para mover, flechas para navegar, 0 para verlo todo.",chartCanvasHintPick:"Gr\xE1fico. Las flechas eligen una categor\xEDa, Intro o Espacio filtra la cuadr\xEDcula por ella (Ctrl a\xF1ade otra), + y \u2212 hacen zoom, 0 muestra todo.",chartCategoryFocus:"{category}: {values} \u2014 {position} de {count}",chartCategoryFiltered:"filtrando la cuadr\xEDcula",chartAggSum:"Suma",chartAggAvg:"Promedio",chartAggMin:"M\xEDnimo",chartAggMax:"M\xE1ximo",chartAggCount:"Recuento",chartAggDistinct:"Distintos",chartAggFirst:"Primero",chartAggLast:"\xDAltimo",chartTypeColumn:"Columnas",chartTypeBar:"Barras",chartTypeLine:"L\xEDneas",chartTypeArea:"\xC1reas",chartTypePie:"Circular",chartTypeDonut:"Anillo",chartStacking:"Disposici\xF3n de series",chartStackGrouped:"Agrupado",chartStackStacked:"Apilado",chartStackNormalized:"Apilado 100 %",chartFormat:"Formato",chartFormatTitle:"T\xEDtulo",chartFormatCategoryAxis:"T\xEDtulo del eje de categor\xEDas",chartFormatValueAxis:"T\xEDtulo del eje de valores",chartFormatLegend:"Leyenda",chartLegendTop:"Arriba",chartLegendBottom:"Abajo",chartLegendLeft:"Izquierda",chartLegendRight:"Derecha",chartLegendNone:"Oculta",chartFormatDataLabels:"Etiquetas de datos",chartFormatScale:"Escala de valores",chartScaleLinear:"Lineal",chartScaleLog:"Logar\xEDtmica",chartFormatTextSize:"Tama\xF1o del texto",chartFormatTextColor:"Color del texto",chartFormatDefault:"Predeterminado",chartFormatLabelAngle:"Etiquetas de categor\xEDa",chartAngleAuto:"Autom\xE1tico",chartAngleFlat:"Horizontales",chartFormatGridLines:"L\xEDneas de cuadr\xEDcula",chartGridValue:"Eje de valores",chartGridBoth:"Ambos ejes",chartGridNone:"Ninguna",chartFormatGridDashed:"Cuadr\xEDcula discontinua",chartFormatLineWidth:"Grosor de l\xEDnea",chartFormatLineDashed:"L\xEDneas discontinuas",chartFormatFillOpacity:"Opacidad del relleno",chartFormatDateFormat:"Formato de fecha",chartFormatPalette:"Colores",chartPaletteTheme:"Tema",chartPaletteClassic:"Cl\xE1sica",chartPaletteColorblind:"Apta para daltonismo",chartPaletteVivid:"Vivos",chartPaletteMonochrome:"Un solo color",sparklineSummary:"{count} valores de {min} a {max}, \xFAltimo {last}",chartTypeWaterfall:"Cascada",chartTypeFunnel:"Embudo",chartTypeTreemap:"Mapa de \xE1rbol",chartTypeHeatmap:"Mapa de calor",chartTypeBox:"Diagrama de caja",chartTypeRadar:"Radar",chartTypeRangeBar:"Rango",chartBoxQ1:"Q1",chartBoxMedian:"Mediana",chartBoxQ3:"Q3",chartBoxOutlier:"Valor at\xEDpico",chartTotal:"Total",chartTypeScatter:"Dispersi\xF3n",chartTypeBubble:"Burbujas",chartXAxis:"Eje X",chartBubbleSize:"Tama\xF1o",chartXYSampled:"{shown} de {total} puntos, muestreados de forma uniforme",licenseMissing:"Sin licencia",licenseExpired:"Licencia caducada",licenseReleaseNotCovered:"Esta versi\xF3n no est\xE1 cubierta por la licencia",licenseDomainMismatch:"Licencia no v\xE1lida para este dominio",licenseRevoked:"Licencia revocada",licenseInvalidFormat:"Clave de licencia mal formada",licenseInvalidSignature:"Firma de licencia no v\xE1lida",licenseEngineUnavailable:"El navegador no puede verificar la licencia (se requiere HTTPS)",calcAdd:"A\xF1adir columna calculada\u2026",calcEdit:"Editar columna calculada\u2026",calcRemove:"Quitar columna calculada",calcTitleAdd:"A\xF1adir columna calculada",calcTitleEdit:"Editar columna calculada",calcName:"Nombre",calcFormula:"F\xF3rmula",calcFormulaHint:"Escriba una columna como [Nombre]. Ejemplo: [Precio] * [Cant]",calcColumns:"Columnas",calcFunctions:"Funciones",calcPreview:"Vista previa",calcPreviewEmpty:"No hay filas para la vista previa",calcErrorAt:"{message} (car\xE1cter {position})",calcAddButton:"A\xF1adir",calcArgsAtLeast:"{min} o m\xE1s",formulaError_empty:"Escriba una f\xF3rmula",formulaError_unclosedText:'Texto sin cerrar: falta un "',formulaError_unclosedColumn:"Nombre de columna sin cerrar: falta un ]",formulaError_emptyColumn:"Nombre de columna vac\xEDo []",formulaError_unexpectedChar:"Car\xE1cter inesperado {text}",formulaError_expected:"Falta {text}",formulaError_cellAfterColon:'Falta una celda despu\xE9s de ":"',formulaError_unknownName:"Nombre desconocido {name}: escriba la columna como [{name}]",formulaError_unexpected:"{text} inesperado",formulaError_endsEarly:"La f\xF3rmula termina antes de tiempo",formulaError_trailing:"Texto inesperado al final",formulaError_unknownColumn:"No hay ninguna columna [{name}]",formulaError_unknownFunction:"Funci\xF3n desconocida {name}",formulaError_argCount:"{name} admite {range} argumento(s)",formulaError_cellsNotAllowed:"Aqu\xED no se usan referencias de celda como A1: escriba la columna como [Nombre]"},cm={ok:"OK",cancel:"Annulla",apply:"Applica",close:"Chiudi",clear:"Cancella",save:"Salva",search:"Cerca...",selectAll:"Seleziona tutto",showAll:"Mostra tutto",remove:"Rimuovi",none:"Nessuno",toolbarSearch:"Cerca...",exportMenu:"Esporta",exportCsv:"Esporta in CSV",exportExcel:"Esporta tutti i dati in Excel",exportExcelSelected:"Esporta le righe selezionate in Excel",exportPdf:"Esporta in PDF",exporting:"Esportazione\u2026",columns:"Colonne",hiddenColumns:"Colonne nascoste",noHiddenColumns:"Nessuna colonna nascosta.",sortAsc:"Ordina dalla A alla Z",sortDesc:"Ordina dalla Z alla A",clearSort:"Cancella ordinamento",cardSortBy:"Ordina per",groupByColumn:"Raggruppa per questa colonna",ungroupColumn:"Rimuovi dal raggruppamento",showGroupPanel:"Mostra pannello di raggruppamento",hideGroupPanel:"Nascondi pannello di raggruppamento",showFooter:"Mostra pi\xE8 di tabella",hideFooter:"Nascondi pi\xE8 di tabella",showGroupFooters:"Mostra pi\xE8 di gruppo",hideGroupFooters:"Nascondi pi\xE8 di gruppo",hideColumn:"Nascondi questa colonna",fieldChooser:"Selettore campi\u2026",bestFit:"Adatta larghezza",bestFitAll:"Adatta larghezza (tutte le colonne)",pinRowTop:"Blocca riga in alto",pinRowBottom:"Blocca riga in basso",unpinRow:"Sblocca riga",findLabel:"Trova nella griglia",findPrevious:"Risultato precedente",findNext:"Risultato successivo",findClose:"Chiudi ricerca",findCount:"{n} di {count}",findNone:"Nessun risultato",renameColumn:"Rinomina colonna",fixedPosition:"Imposta posizione fissa",pinLeft:"Sinistra",pinRight:"Destra",pinSticky:"Fissa",unpin:"Sblocca",moveLeft:"Sposta a sinistra",moveRight:"Sposta a destra",filterPlaceholder:"Filtra\u2026",filterColumnAria:"Filtra {column}",filterOperatorDefault:"Predefinito",filterOperatorAria:"Operatore di filtro per {column}",filterSelectAll:"Seleziona tutto",filterBlank:"(Vuoti)",filterNonBlank:"(Non vuoti)",filterEmptyText:"(testo vuoto)",filterSpace:"(1 spazio)",filterSpaces:"({n} spazi)",filterNoMatch:"Nessun valore corrispondente",filterLoading:"Caricamento valori\u2026",filterTruncated:"Vengono mostrati solo i primi valori \u2014 cerca per trovare gli altri.",filterRemove:"Rimuovi il filtro",filterToggle:"Applica il filtro",filterEditBuilder:"Modifica il filtro",filterNone:"Nessun filtro",filterActive:"Filtro attivo",opEquals:"\xE8",opNotEquals:"non \xE8",opGreater:">",opGreaterOrEqual:"\u2265",opLess:"<",opLessOrEqual:"\u2264",opContains:"contiene",opNotContains:"non contiene",opStartsWith:"inizia con",opEndsWith:"finisce con",opIsBlank:"\xE8 vuoto",opIsNotBlank:"non \xE8 vuoto",opIsOneOf:"\xE8 uno di",opIsBetween:"\xE8 compreso tra",opValuesCount:"{n} valori",opInPeriod:"\xE8 in",periodToday:"oggi",periodYesterday:"ieri",periodTomorrow:"domani",periodThisWeek:"questa settimana",periodLastWeek:"la settimana scorsa",periodNextWeek:"la prossima settimana",periodThisMonth:"questo mese",periodLastMonth:"il mese scorso",periodNextMonth:"il prossimo mese",periodThisQuarter:"questo trimestre",periodLastQuarter:"il trimestre scorso",periodNextQuarter:"il prossimo trimestre",periodThisYear:"quest'anno",periodLastYear:"l'anno scorso",periodNextYear:"l'anno prossimo",periodYearToDate:"da inizio anno",periodLastDays:"gli ultimi {n} giorni",periodNextDays:"i prossimi {n} giorni",filterAnd:"E",filterOr:"O",builderTitle:"Generatore di filtri",builderCombine:"Combina le condizioni con",builderAddCondition:"Aggiungi condizione",builderAddGroup:"Aggiungi gruppo",builderRemoveGroup:"Rimuovi gruppo",builderRemoveCondition:"Rimuovi condizione",builderEmpty:"Ancora nessuna condizione.",builderColumn:"Colonna",builderOperator:"Operatore",builderValue:"Valore",builderValueFrom:"Da",builderValueTo:"A",builderValuePlaceholder:"Inserisci un valore",builderOpen:"Generatore di filtri\u2026",builderClearAll:"Cancella tutto",builderConditionButton:"+ Condizione",builderGroupButton:"+ Gruppo",builderTrue:"vero",builderFalse:"falso",builderPeriod:"Periodo",builderDays:"Giorni",filterCustom:"(Personalizzato\u2026)",filterPopupAria:"Filtro {column}",importOpen:"Importa\u2026",groupPanelHint:"Trascina qui una colonna per raggrupparla",groupAddLevel:"Aggiungi livello di raggruppamento",groupAddLevelButton:"+ Aggiungi livello\u2026",groupNoGrouping:"(nessun raggruppamento)",groupLevelAria:"Livello di raggruppamento {n}",groupRemoveAria:"Rimuovi {column}",groupExpandAll:"Espandi tutto",groupCollapseAll:"Comprimi tutto",pagerFirst:"Prima pagina",pagerPrevious:"Pagina precedente",pagerNext:"Pagina successiva",pagerLast:"Ultima pagina",pagerPage:"Pagina",pagerOf:"di",pagerRowsPerPage:"Righe per pagina",pagerAria:"Paginazione",pagerPageButton:"Pagina {n}",selectAllRows:"Seleziona tutte le righe",selectRowAria:"Seleziona la riga {row}",selectGroupAria:"Seleziona le {count} righe di {group}",summaryAria:"Riepilogo",columnTotalsAria:"Totali di colonna",rowActions:"Azioni riga",detailsAria:"Dettagli",rowNumberAria:"Numero di riga",noteEditorAria:"Nota della cella",notePlaceholder:"Scrivi una nota su questa cella\u2026",addNote:"Aggiungi nota\u2026",editNote:"Modifica nota\u2026",deleteNote:"Elimina nota",expandDetails:"Espandi i dettagli",collapseDetails:"Comprimi i dettagli",expandTreeRow:"Espandi riga",collapseTreeRow:"Comprimi riga",expandColumnGroup:"Espandi gruppo di colonne",collapseColumnGroup:"Comprimi gruppo di colonne",dragToReorder:"Trascina per riordinare",menuCopy:"Copia",menuCopyWithHeaders:"Copia con intestazioni",menuCopyWithGroupHeaders:"Copia con intestazioni di gruppo",menuCut:"Taglia",menuPaste:"Incolla",menuExport:"Esporta",menuChartRange:"Grafico delle celle selezionate",statsSum:"Somma",statsCount:"Conteggio",statsAvg:"Media",statsMin:"Min",statsMax:"Max",statsCells:"Celle",statsTooLarge:"Selezione troppo grande per essere totalizzata",statusRows:"Righe",statusFiltered:"Filtrate",statusSelected:"Selezionate",summaryRows:"righe",announceRows:"{n} righe",announceSortedBy:"ordinato per {columns}",announceSelected:"{n} selezionate",announceAscending:"crescente",announceDescending:"decrescente",sideFilters:"Filtri",sideBarAria:"Pannelli degli strumenti",sideClearFilters:"Cancella tutti i filtri",summarySum:"Somma",summaryAvg:"Media",summaryMin:"Min",summaryMax:"Max",summaryCount:"Conteggio",summaryDistinct:"Distinti",summaryCustom:"Personalizzato",noTotal:"Nessun totale",busy:"Elaborazione\u2026",busyLoading:"Caricamento righe\u2026",rowsLoadFailed:"Impossibile caricare queste righe.",retryLoad:"Riprova",busyEncoding:"Preparazione dei dati\u2026",busyFiltering:"Filtraggio righe\u2026",busySorting:"Ordinamento righe\u2026",busyComputing:"Filtraggio e ordinamento\u2026",busyGrouping:"Creazione dei gruppi\u2026",busyAggregating:"Calcolo dei totali\u2026",busyProjecting:"Aggiornamento della vista\u2026",busyExporting:"Creazione del file\u2026",noData:"Nessun dato trovato",editNewRow:"Nuova riga",editSaveChanges:"Salva le modifiche",editDiscardChanges:"Annulla le modifiche",editRow:"Modifica riga",editRowMenu:"Modifica riga\u2026",editDeleteRow:"Elimina riga",editUndoDelete:"Annulla eliminazione",editActions:"Azioni",editSaveRow:"Salva riga",editSaving:"Salvataggio\u2026",editEditingRow:"Modifica della riga {row}",editSaveCount:"Salva {n} riga/righe",editCannotSave:"Impossibile salvare",editSaveFailed:"Non \xE8 stato possibile salvare le modifiche.",rowStatusNew:"Nuova riga non salvata",rowStatusChanged:"Modifiche non salvate",rowStatusRemoved:"Contrassegnata per l'eliminazione",rowStatusSaving:"Salvataggio\u2026",rowStatusSaved:"Salvato",rowStatusError:"Salvataggio non riuscito",rowStatusRetry:"Riprova",rowStatusDelete:"Elimina riga",editDeleteConfirm:"Eliminare questa riga?",editAddRowUndo:"Aggiungi riga",editDeleteRowUndo:"Elimina riga",editCellUndo:"Modifica {column}",editFillUndo:"Riempi {count} celle",editPasteUndo:"Incolla {count} celle",editCutUndo:"Taglia {count} celle",editGroupTotal:"Totale del gruppo",editGroupTotalUndo:"Modifica totale di {column} ({count} righe)",editNoMatch:"Nessuna corrispondenza",formEditTitle:"Modifica riga",formAddTitle:"Nuova riga",formShortcut:"{key}+Invio per salvare \xB7 Esc per annullare",validationRequired:"Questo campo \xE8 obbligatorio",validationNumber:"Deve essere un numero",validationNumberLocale:"Numero non valido. Scrivilo cos\xEC: {example}",validationMin:"Deve essere almeno {min}",validationMax:"Deve essere al massimo {max}",validationFormat:"Formato non valido",validationEmail:"Indirizzo e-mail non valido",validationInvalid:"Valore non valido",dateCalendar:"Calendario",dateOpenCalendar:"Apri il calendario",datePreviousMonth:"Mese precedente",dateNextMonth:"Mese successivo",monthJanuary:"Gennaio",monthFebruary:"Febbraio",monthMarch:"Marzo",monthApril:"Aprile",monthMay:"Maggio",monthJune:"Giugno",monthJuly:"Luglio",monthAugust:"Agosto",monthSeptember:"Settembre",monthOctober:"Ottobre",monthNovember:"Novembre",monthDecember:"Dicembre",weekStartsOn:"1",weekdaySu:"Do",weekdayMo:"Lu",weekdayTu:"Ma",weekdayWe:"Me",weekdayTh:"Gi",weekdayFr:"Ve",weekdaySa:"Sa",importTitle:"Importa dati",importStepSource:"1. Origine",importStepMap:"2. Associa colonne",importFile:"File CSV",importPaste:"\u2026oppure incolla delle righe",importSeparator:"Separatore",importSeparatorAuto:"Rileva automaticamente",importSeparatorComma:"Virgola ,",importSeparatorSemicolon:"Punto e virgola ;",importSeparatorTab:"Tabulazione",importSeparatorPipe:"Barra verticale |",importFileColumn:"Colonna del file",importDetected:"Rilevato",importGridColumn:"Colonna della tabella",importSample:"Esempio",importSkip:"\u2014 salta \u2014",importPreview:"Anteprima",importNoSource:"Scegli prima un file oppure incolla delle righe.",importNoRows:"Non \xE8 stata trovata alcuna riga di dati.",importAction:"Importa",exportAborted:"Esportazione interrotta",exportSheetName:"Dati",chart:"Grafico",chartCategory:"Categoria",chartSeries:"Serie",chartAddSeries:"Aggiungi serie",chartRemoveSeries:"Rimuovi",chartSource:"Dati",chartSourceView:"Righe filtrate",chartSourceSelection:"Righe selezionate",chartSourceAll:"Tutte le righe",chartSourceRange:"Intervallo selezionato (righe {from}\u2013{to})",chartClose:"Chiudi il grafico",chartFullscreen:"Schermo intero",chartExitFullscreen:"Esci da schermo intero",chartFloat:"Sgancia",chartDock:"Aggancia",chartNewWindow:"Nuova finestra",chartMoveWindow:"Sposta la finestra del grafico",chartResizeWindow:"Ridimensiona la finestra del grafico",chartResizeDock:"Trascina per cambiare l\u2019altezza del grafico",chartSwitch:"Scambia categorie e serie",chartUnlink:"Scollega",chartLink:"Collega",chartUnlinked:"Scollegato: il grafico mantiene i suoi dati e non segue pi\xF9 la griglia.",chartExportPng:"PNG",chartExportSvg:"SVG",chartExportFailed:"Non \xE8 stato possibile esportare il grafico.",chartCrossFiltered:"La tabella \xE8 filtrata su {value}.",chartBlankCategory:"(vuoto)",chartTruncated:"Vengono mostrate le prime {n} categorie; le altre sono raggruppate come \xABAltro\xBB.",chartOther:"Altro",chartEmpty:"Non c\u2019\xE8 ancora nulla da rappresentare.",chartNoVisibleSeries:"Nessuna serie visibile.",chartNeedsMoreSeries:"Questo tipo di grafico richiede almeno due colonne di valori (ad esempio minimo e massimo): aggiungi una seconda serie.",chartLoading:"Caricamento\u2026",chartNeedsRecharts:"I grafici richiedono il pacchetto opzionale `recharts`. Installalo per disegnarli.",chartOnlyOneSeries:"Questo tipo di grafico mostra una sola serie.",chartByColumn:"Grafico per questa colonna",chartGroupBy:"Per",chartGroupNone:"Ogni valore",chartGroupAuto:"Automatico",chartGroupDay:"Giorno",chartGroupWeek:"Settimana",chartGroupMonth:"Mese",chartGroupQuarter:"Trimestre",chartGroupYear:"Anno",chartGroupBins:"{n} intervalli",chartBucketAdjusted:"Troppi intervalli per un asse \u2014 raggruppati in modo pi\xF9 ampio.",chartWindowed:"Vengono mostrati {shown} di {total}.",chartShowAll:"Mostra tutto",chartCanvasHint:"Grafico. Scorri per ingrandire, trascina per spostare, frecce per navigare, 0 per mostrare tutto.",chartCanvasHintPick:"Grafico. Le frecce scelgono una categoria, Invio o Spazio filtra la griglia su di essa (Ctrl ne aggiunge una), + e \u2212 ingrandiscono, 0 mostra tutto.",chartCategoryFocus:"{category}: {values} \u2014 {position} di {count}",chartCategoryFiltered:"filtra la griglia",chartAggSum:"Somma",chartAggAvg:"Media",chartAggMin:"Min",chartAggMax:"Max",chartAggCount:"Conteggio",chartAggDistinct:"Distinti",chartAggFirst:"Primo",chartAggLast:"Ultimo",chartTypeColumn:"Colonne",chartTypeBar:"Barre",chartTypeLine:"Linee",chartTypeArea:"Aree",chartTypePie:"Torta",chartTypeDonut:"Ciambella",chartStacking:"Disposizione serie",chartStackGrouped:"Raggruppato",chartStackStacked:"In pila",chartStackNormalized:"In pila 100%",chartFormat:"Formato",chartFormatTitle:"Titolo",chartFormatCategoryAxis:"Titolo asse categorie",chartFormatValueAxis:"Titolo asse valori",chartFormatLegend:"Legenda",chartLegendTop:"In alto",chartLegendBottom:"In basso",chartLegendLeft:"A sinistra",chartLegendRight:"A destra",chartLegendNone:"Nascosta",chartFormatDataLabels:"Etichette dati",chartFormatScale:"Scala dei valori",chartScaleLinear:"Lineare",chartScaleLog:"Logaritmica",chartFormatTextSize:"Dimensione testo",chartFormatTextColor:"Colore testo",chartFormatDefault:"Predefinito",chartFormatLabelAngle:"Etichette di categoria",chartAngleAuto:"Automatico",chartAngleFlat:"Orizzontali",chartFormatGridLines:"Griglia",chartGridValue:"Asse dei valori",chartGridBoth:"Entrambi gli assi",chartGridNone:"Nessuna",chartFormatGridDashed:"Griglia tratteggiata",chartFormatLineWidth:"Spessore linea",chartFormatLineDashed:"Linee tratteggiate",chartFormatFillOpacity:"Opacit\xE0 riempimento",chartFormatDateFormat:"Formato data",chartFormatPalette:"Colori",chartPaletteTheme:"Tema",chartPaletteClassic:"Classica",chartPaletteColorblind:"Adatta al daltonismo",chartPaletteVivid:"Vivaci",chartPaletteMonochrome:"Un colore",sparklineSummary:"{count} valori da {min} a {max}, ultimo {last}",chartTypeWaterfall:"Cascata",chartTypeFunnel:"Imbuto",chartTypeTreemap:"Treemap",chartTypeHeatmap:"Mappa di calore",chartTypeBox:"Box plot",chartTypeRadar:"Radar",chartTypeRangeBar:"Intervallo",chartBoxQ1:"Q1",chartBoxMedian:"Mediana",chartBoxQ3:"Q3",chartBoxOutlier:"Valore anomalo",chartTotal:"Totale",chartTypeScatter:"Dispersione",chartTypeBubble:"Bolle",chartXAxis:"Asse X",chartBubbleSize:"Dimensione",chartXYSampled:"{shown} di {total} punti, campionati in modo uniforme",licenseMissing:"Senza licenza",licenseExpired:"Licenza scaduta",licenseReleaseNotCovered:"Questa versione non \xE8 coperta dalla licenza",licenseDomainMismatch:"Licenza non valida per questo dominio",licenseRevoked:"Licenza revocata",licenseInvalidFormat:"Chiave di licenza malformata",licenseInvalidSignature:"Firma della licenza non valida",licenseEngineUnavailable:"Il browser non pu\xF2 verificare la licenza (HTTPS richiesto)",calcAdd:"Aggiungi colonna calcolata\u2026",calcEdit:"Modifica colonna calcolata\u2026",calcRemove:"Rimuovi colonna calcolata",calcTitleAdd:"Aggiungi colonna calcolata",calcTitleEdit:"Modifica colonna calcolata",calcName:"Nome",calcFormula:"Formula",calcFormulaHint:"Scrivi una colonna come [Nome]. Esempio: [Prezzo] * [Qt\xE0]",calcColumns:"Colonne",calcFunctions:"Funzioni",calcPreview:"Anteprima",calcPreviewEmpty:"Nessuna riga da mostrare",calcErrorAt:"{message} (carattere {position})",calcAddButton:"Aggiungi",calcArgsAtLeast:"{min} o pi\xF9",formulaError_empty:"Scrivi una formula",formulaError_unclosedText:'Testo non chiuso: manca un "',formulaError_unclosedColumn:"Nome di colonna non chiuso: manca una ]",formulaError_emptyColumn:"Nome di colonna vuoto []",formulaError_unexpectedChar:"Carattere inatteso {text}",formulaError_expected:"Manca {text}",formulaError_cellAfterColon:'Manca una cella dopo ":"',formulaError_unknownName:"Nome sconosciuto {name}: scrivi la colonna come [{name}]",formulaError_unexpected:"{text} inatteso",formulaError_endsEarly:"La formula finisce troppo presto",formulaError_trailing:"Testo inatteso alla fine",formulaError_unknownColumn:"Non esiste la colonna [{name}]",formulaError_unknownFunction:"Funzione sconosciuta {name}",formulaError_argCount:"{name} accetta {range} argomenti",formulaError_cellsNotAllowed:"I riferimenti di cella come A1 non si usano qui: scrivi la colonna come [Nome]"},hm={ok:"OK",cancel:"Cancelar",apply:"Aplicar",close:"Fechar",clear:"Limpar",save:"Guardar",search:"Pesquisar...",selectAll:"Selecionar tudo",showAll:"Mostrar tudo",remove:"Remover",none:"Nenhum",toolbarSearch:"Pesquisar...",exportMenu:"Exportar",exportCsv:"Exportar para CSV",exportExcel:"Exportar todos os dados para Excel",exportExcelSelected:"Exportar as linhas selecionadas para Excel",exportPdf:"Exportar para PDF",exporting:"A exportar\u2026",columns:"Colunas",hiddenColumns:"Colunas ocultas",noHiddenColumns:"Nenhuma coluna oculta.",sortAsc:"Classificar de A a Z",sortDesc:"Classificar de Z a A",clearSort:"Limpar classifica\xE7\xE3o",cardSortBy:"Ordenar por",groupByColumn:"Agrupar por esta coluna",ungroupColumn:"Remover do agrupamento",showGroupPanel:"Mostrar painel de agrupamento",hideGroupPanel:"Ocultar painel de agrupamento",showFooter:"Mostrar rodap\xE9",hideFooter:"Ocultar rodap\xE9",showGroupFooters:"Mostrar rodap\xE9s de grupo",hideGroupFooters:"Ocultar rodap\xE9s de grupo",hideColumn:"Ocultar esta coluna",fieldChooser:"Seletor de campos\u2026",bestFit:"Ajustar largura",bestFitAll:"Ajustar largura (todas as colunas)",pinRowTop:"Fixar linha no topo",pinRowBottom:"Fixar linha em baixo",unpinRow:"Desafixar linha",findLabel:"Localizar na tabela",findPrevious:"Ocorr\xEAncia anterior",findNext:"Pr\xF3xima ocorr\xEAncia",findClose:"Fechar localizar",findCount:"{n} de {count}",findNone:"Nenhuma ocorr\xEAncia",renameColumn:"Renomear coluna",fixedPosition:"Definir posi\xE7\xE3o fixa",pinLeft:"Esquerda",pinRight:"Direita",pinSticky:"Fixa",unpin:"Libertar",moveLeft:"Mover para a esquerda",moveRight:"Mover para a direita",filterPlaceholder:"Filtrar\u2026",filterColumnAria:"Filtrar {column}",filterOperatorDefault:"Padr\xE3o",filterOperatorAria:"Operador de filtro para {column}",filterSelectAll:"Selecionar tudo",filterBlank:"(Em branco)",filterNonBlank:"(N\xE3o vazios)",filterEmptyText:"(texto vazio)",filterSpace:"(1 espa\xE7o)",filterSpaces:"({n} espa\xE7os)",filterNoMatch:"Nenhum valor correspondente",filterLoading:"A carregar valores\u2026",filterTruncated:"S\xE3o mostrados apenas os primeiros valores \u2014 pesquise para encontrar os restantes.",filterRemove:"Remover o filtro",filterToggle:"Aplicar o filtro",filterEditBuilder:"Editar o filtro",filterNone:"Sem filtro",filterActive:"Filtro ativo",opEquals:"\xE9",opNotEquals:"n\xE3o \xE9",opGreater:">",opGreaterOrEqual:"\u2265",opLess:"<",opLessOrEqual:"\u2264",opContains:"cont\xE9m",opNotContains:"n\xE3o cont\xE9m",opStartsWith:"come\xE7a por",opEndsWith:"termina em",opIsBlank:"est\xE1 em branco",opIsNotBlank:"n\xE3o est\xE1 em branco",opIsOneOf:"\xE9 um de",opIsBetween:"est\xE1 entre",opValuesCount:"{n} valores",opInPeriod:"est\xE1 em",periodToday:"hoje",periodYesterday:"ontem",periodTomorrow:"amanh\xE3",periodThisWeek:"esta semana",periodLastWeek:"a semana passada",periodNextWeek:"a pr\xF3xima semana",periodThisMonth:"este m\xEAs",periodLastMonth:"o m\xEAs passado",periodNextMonth:"o pr\xF3ximo m\xEAs",periodThisQuarter:"este trimestre",periodLastQuarter:"o trimestre passado",periodNextQuarter:"o pr\xF3ximo trimestre",periodThisYear:"este ano",periodLastYear:"o ano passado",periodNextYear:"o pr\xF3ximo ano",periodYearToDate:"no acumulado do ano",periodLastDays:"os \xFAltimos {n} dias",periodNextDays:"os pr\xF3ximos {n} dias",filterAnd:"E",filterOr:"OU",builderTitle:"Construtor de filtros",builderCombine:"Combinar condi\xE7\xF5es com",builderAddCondition:"Adicionar condi\xE7\xE3o",builderAddGroup:"Adicionar grupo",builderRemoveGroup:"Remover grupo",builderRemoveCondition:"Remover condi\xE7\xE3o",builderEmpty:"Ainda n\xE3o h\xE1 condi\xE7\xF5es.",builderColumn:"Coluna",builderOperator:"Operador",builderValue:"Valor",builderValueFrom:"De",builderValueTo:"At\xE9",builderValuePlaceholder:"Introduza um valor",builderOpen:"Construtor de filtros\u2026",builderClearAll:"Limpar tudo",builderConditionButton:"+ Condi\xE7\xE3o",builderGroupButton:"+ Grupo",builderTrue:"verdadeiro",builderFalse:"falso",builderPeriod:"Per\xEDodo",builderDays:"Dias",filterCustom:"(Personalizado\u2026)",filterPopupAria:"Filtro {column}",importOpen:"Importar\u2026",groupPanelHint:"Arraste uma coluna para aqui para agrupar por ela",groupAddLevel:"Adicionar n\xEDvel de agrupamento",groupAddLevelButton:"+ Adicionar n\xEDvel\u2026",groupNoGrouping:"(sem agrupamento)",groupLevelAria:"N\xEDvel de agrupamento {n}",groupRemoveAria:"Remover {column}",groupExpandAll:"Expandir tudo",groupCollapseAll:"Recolher tudo",pagerFirst:"Primeira p\xE1gina",pagerPrevious:"P\xE1gina anterior",pagerNext:"P\xE1gina seguinte",pagerLast:"\xDAltima p\xE1gina",pagerPage:"P\xE1gina",pagerOf:"de",pagerRowsPerPage:"Linhas por p\xE1gina",pagerAria:"Pagina\xE7\xE3o",pagerPageButton:"P\xE1gina {n}",selectAllRows:"Selecionar todas as linhas",selectRowAria:"Selecionar a linha {row}",selectGroupAria:"Selecionar as {count} linhas de {group}",summaryAria:"Resumo",columnTotalsAria:"Totais das colunas",rowActions:"A\xE7\xF5es da linha",detailsAria:"Detalhes",rowNumberAria:"N\xFAmero da linha",noteEditorAria:"Nota da c\xE9lula",notePlaceholder:"Escreva uma nota sobre esta c\xE9lula\u2026",addNote:"Adicionar nota\u2026",editNote:"Editar nota\u2026",deleteNote:"Excluir nota",expandDetails:"Expandir detalhes",collapseDetails:"Recolher detalhes",expandTreeRow:"Expandir linha",collapseTreeRow:"Recolher linha",expandColumnGroup:"Expandir grupo de colunas",collapseColumnGroup:"Recolher grupo de colunas",dragToReorder:"Arraste para reordenar",menuCopy:"Copiar",menuCopyWithHeaders:"Copiar com cabe\xE7alhos",menuCopyWithGroupHeaders:"Copiar com cabe\xE7alhos de grupo",menuCut:"Recortar",menuPaste:"Colar",menuExport:"Exportar",menuChartRange:"Gr\xE1fico das c\xE9lulas selecionadas",statsSum:"Soma",statsCount:"Contagem",statsAvg:"M\xE9dia",statsMin:"M\xEDn",statsMax:"M\xE1x",statsCells:"C\xE9lulas",statsTooLarge:"Sele\xE7\xE3o demasiado grande para totalizar",statusRows:"Linhas",statusFiltered:"Filtradas",statusSelected:"Selecionadas",summaryRows:"linhas",announceRows:"{n} linhas",announceSortedBy:"ordenado por {columns}",announceSelected:"{n} selecionadas",announceAscending:"crescente",announceDescending:"decrescente",sideFilters:"Filtros",sideBarAria:"Pain\xE9is de ferramentas",sideClearFilters:"Limpar todos os filtros",summarySum:"Soma",summaryAvg:"M\xE9dia",summaryMin:"M\xEDn",summaryMax:"M\xE1x",summaryCount:"Contagem",summaryDistinct:"Distintos",summaryCustom:"Personalizado",noTotal:"Sem total",busy:"A processar\u2026",busyLoading:"A carregar linhas\u2026",rowsLoadFailed:"N\xE3o foi poss\xEDvel carregar estas linhas.",retryLoad:"Tentar novamente",busyEncoding:"A preparar os dados\u2026",busyFiltering:"A filtrar linhas\u2026",busySorting:"A classificar linhas\u2026",busyComputing:"A filtrar e classificar\u2026",busyGrouping:"A criar grupos\u2026",busyAggregating:"A calcular totais\u2026",busyProjecting:"A atualizar a vista\u2026",busyExporting:"A criar o ficheiro\u2026",noData:"Nenhum dado encontrado",editNewRow:"Nova linha",editSaveChanges:"Guardar altera\xE7\xF5es",editDiscardChanges:"Descartar altera\xE7\xF5es",editRow:"Editar linha",editRowMenu:"Editar linha\u2026",editDeleteRow:"Eliminar linha",editUndoDelete:"Anular elimina\xE7\xE3o",editActions:"A\xE7\xF5es",editSaveRow:"Guardar linha",editSaving:"A guardar\u2026",editEditingRow:"A editar a linha {row}",editSaveCount:"Guardar {n} linha(s)",editCannotSave:"N\xE3o \xE9 poss\xEDvel guardar",editSaveFailed:"N\xE3o foi poss\xEDvel guardar as altera\xE7\xF5es.",rowStatusNew:"Nova linha n\xE3o guardada",rowStatusChanged:"Altera\xE7\xF5es n\xE3o guardadas",rowStatusRemoved:"Marcada para elimina\xE7\xE3o",rowStatusSaving:"A guardar\u2026",rowStatusSaved:"Guardado",rowStatusError:"Falha ao guardar",rowStatusRetry:"Tentar novamente",rowStatusDelete:"Eliminar linha",editDeleteConfirm:"Eliminar esta linha?",editAddRowUndo:"Adicionar linha",editDeleteRowUndo:"Eliminar linha",editCellUndo:"Editar {column}",editFillUndo:"Preencher {count} c\xE9lulas",editPasteUndo:"Colar {count} c\xE9lulas",editCutUndo:"Recortar {count} c\xE9lulas",editGroupTotal:"Total do grupo",editGroupTotalUndo:"Alterar total de {column} ({count} linhas)",editNoMatch:"Sem correspond\xEAncia",formEditTitle:"Editar linha",formAddTitle:"Nova linha",formShortcut:"{key}+Enter para guardar \xB7 Esc para cancelar",validationRequired:"Este campo \xE9 obrigat\xF3rio",validationNumber:"Tem de ser um n\xFAmero",validationNumberLocale:"N\xFAmero inv\xE1lido. Escreva assim: {example}",validationMin:"Tem de ser pelo menos {min}",validationMax:"Tem de ser no m\xE1ximo {max}",validationFormat:"Formato inv\xE1lido",validationEmail:"Endere\xE7o de e-mail inv\xE1lido",validationInvalid:"Valor inv\xE1lido",dateCalendar:"Calend\xE1rio",dateOpenCalendar:"Abrir calend\xE1rio",datePreviousMonth:"M\xEAs anterior",dateNextMonth:"M\xEAs seguinte",monthJanuary:"Janeiro",monthFebruary:"Fevereiro",monthMarch:"Mar\xE7o",monthApril:"Abril",monthMay:"Maio",monthJune:"Junho",monthJuly:"Julho",monthAugust:"Agosto",monthSeptember:"Setembro",monthOctober:"Outubro",monthNovember:"Novembro",monthDecember:"Dezembro",weekStartsOn:"1",weekdaySu:"Do",weekdayMo:"Se",weekdayTu:"Te",weekdayWe:"Qa",weekdayTh:"Qi",weekdayFr:"Sx",weekdaySa:"S\xE1",importTitle:"Importar dados",importStepSource:"1. Origem",importStepMap:"2. Mapear colunas",importFile:"Ficheiro CSV",importPaste:"\u2026ou cole linhas",importSeparator:"Separador",importSeparatorAuto:"Detetar automaticamente",importSeparatorComma:"V\xEDrgula ,",importSeparatorSemicolon:"Ponto e v\xEDrgula ;",importSeparatorTab:"Tabula\xE7\xE3o",importSeparatorPipe:"Barra vertical |",importFileColumn:"Coluna do ficheiro",importDetected:"Detetado",importGridColumn:"Coluna da tabela",importSample:"Amostra",importSkip:"\u2014 ignorar \u2014",importPreview:"Pr\xE9-visualiza\xE7\xE3o",importNoSource:"Escolha primeiro um ficheiro ou cole algumas linhas.",importNoRows:"N\xE3o foram encontradas linhas de dados.",importAction:"Importar",exportAborted:"Exporta\xE7\xE3o cancelada",exportSheetName:"Dados",chart:"Gr\xE1fico",chartCategory:"Categoria",chartSeries:"S\xE9rie",chartAddSeries:"Adicionar s\xE9rie",chartRemoveSeries:"Remover",chartSource:"Dados",chartSourceView:"Linhas filtradas",chartSourceSelection:"Linhas selecionadas",chartSourceAll:"Todas as linhas",chartSourceRange:"Intervalo selecionado (linhas {from}\u2013{to})",chartClose:"Fechar o gr\xE1fico",chartFullscreen:"Ecr\xE3 inteiro",chartExitFullscreen:"Sair do ecr\xE3 inteiro",chartFloat:"Destacar",chartDock:"Ancorar",chartNewWindow:"Nova janela",chartMoveWindow:"Mover a janela do gr\xE1fico",chartResizeWindow:"Redimensionar a janela do gr\xE1fico",chartResizeDock:"Arraste para alterar a altura do gr\xE1fico",chartSwitch:"Trocar categorias e s\xE9ries",chartUnlink:"Desligar",chartLink:"Ligar",chartUnlinked:"Desligado: o gr\xE1fico mant\xE9m os dados e j\xE1 n\xE3o acompanha a grelha.",chartExportPng:"PNG",chartExportSvg:"SVG",chartExportFailed:"N\xE3o foi poss\xEDvel exportar o gr\xE1fico.",chartCrossFiltered:"A tabela est\xE1 filtrada por {value}.",chartBlankCategory:"(em branco)",chartTruncated:"A mostrar as {n} principais categorias; as restantes est\xE3o agrupadas como \xABOutros\xBB.",chartOther:"Outros",chartEmpty:"Ainda n\xE3o h\xE1 nada para representar.",chartNoVisibleSeries:"Nenhuma s\xE9rie vis\xEDvel.",chartNeedsMoreSeries:"Este tipo de gr\xE1fico precisa de pelo menos duas colunas de valores (por exemplo, m\xEDnimo e m\xE1ximo) \u2014 adicione uma segunda s\xE9rie.",chartLoading:"A carregar\u2026",chartNeedsRecharts:"Os gr\xE1ficos precisam do pacote opcional `recharts`. Instale-o para os desenhar.",chartOnlyOneSeries:"Este tipo de gr\xE1fico mostra uma s\xE9rie.",chartByColumn:"Gr\xE1fico por esta coluna",chartGroupBy:"Por",chartGroupNone:"Cada valor",chartGroupAuto:"Autom\xE1tico",chartGroupDay:"Dia",chartGroupWeek:"Semana",chartGroupMonth:"M\xEAs",chartGroupQuarter:"Trimestre",chartGroupYear:"Ano",chartGroupBins:"{n} intervalos",chartBucketAdjusted:"Demasiados intervalos para um eixo \u2014 agrupados de forma mais ampla.",chartWindowed:"A mostrar {shown} de {total}.",chartShowAll:"Mostrar tudo",chartCanvasHint:"Gr\xE1fico. Desloque para ampliar, arraste para mover, setas para navegar, 0 para mostrar tudo.",chartCanvasHintPick:"Gr\xE1fico. As setas escolhem uma categoria, Enter ou Espa\xE7o filtra a grade por ela (Ctrl adiciona), + e \u2212 aproximam, 0 mostra tudo.",chartCategoryFocus:"{category}: {values} \u2014 {position} de {count}",chartCategoryFiltered:"filtrando a grade",chartAggSum:"Soma",chartAggAvg:"M\xE9dia",chartAggMin:"M\xEDn",chartAggMax:"M\xE1x",chartAggCount:"Contagem",chartAggDistinct:"Distintos",chartAggFirst:"Primeiro",chartAggLast:"\xDAltimo",chartTypeColumn:"Colunas",chartTypeBar:"Barras",chartTypeLine:"Linhas",chartTypeArea:"\xC1reas",chartTypePie:"Circular",chartTypeDonut:"Anel",chartStacking:"Disposi\xE7\xE3o das s\xE9ries",chartStackGrouped:"Agrupado",chartStackStacked:"Empilhado",chartStackNormalized:"Empilhado 100%",chartFormat:"Formato",chartFormatTitle:"T\xEDtulo",chartFormatCategoryAxis:"T\xEDtulo do eixo de categorias",chartFormatValueAxis:"T\xEDtulo do eixo de valores",chartFormatLegend:"Legenda",chartLegendTop:"Em cima",chartLegendBottom:"Em baixo",chartLegendLeft:"\xC0 esquerda",chartLegendRight:"\xC0 direita",chartLegendNone:"Oculta",chartFormatDataLabels:"R\xF3tulos de dados",chartFormatScale:"Escala de valores",chartScaleLinear:"Linear",chartScaleLog:"Logar\xEDtmica",chartFormatTextSize:"Tamanho do texto",chartFormatTextColor:"Cor do texto",chartFormatDefault:"Padr\xE3o",chartFormatLabelAngle:"R\xF3tulos de categoria",chartAngleAuto:"Autom\xE1tico",chartAngleFlat:"Horizontais",chartFormatGridLines:"Linhas de grade",chartGridValue:"Eixo de valores",chartGridBoth:"Ambos os eixos",chartGridNone:"Nenhuma",chartFormatGridDashed:"Grade tracejada",chartFormatLineWidth:"Espessura da linha",chartFormatLineDashed:"Linhas tracejadas",chartFormatFillOpacity:"Opacidade do preenchimento",chartFormatDateFormat:"Formato de data",chartFormatPalette:"Cores",chartPaletteTheme:"Tema",chartPaletteClassic:"Cl\xE1ssica",chartPaletteColorblind:"Segura para daltonismo",chartPaletteVivid:"Vivas",chartPaletteMonochrome:"Uma cor",sparklineSummary:"{count} valores de {min} a {max}, \xFAltimo {last}",chartTypeWaterfall:"Cascata",chartTypeFunnel:"Funil",chartTypeTreemap:"Mapa de \xE1rvore",chartTypeHeatmap:"Mapa de calor",chartTypeBox:"Diagrama de caixa",chartTypeRadar:"Radar",chartTypeRangeBar:"Intervalo",chartBoxQ1:"Q1",chartBoxMedian:"Mediana",chartBoxQ3:"Q3",chartBoxOutlier:"Valor at\xEDpico",chartTotal:"Total",chartTypeScatter:"Dispers\xE3o",chartTypeBubble:"Bolhas",chartXAxis:"Eixo X",chartBubbleSize:"Tamanho",chartXYSampled:"{shown} de {total} pontos, amostrados de forma uniforme",licenseMissing:"Sem licen\xE7a",licenseExpired:"Licen\xE7a expirada",licenseReleaseNotCovered:"Esta vers\xE3o n\xE3o \xE9 coberta pela licen\xE7a",licenseDomainMismatch:"Licen\xE7a n\xE3o v\xE1lida para este dom\xEDnio",licenseRevoked:"Licen\xE7a revogada",licenseInvalidFormat:"Chave de licen\xE7a malformada",licenseInvalidSignature:"Assinatura da licen\xE7a inv\xE1lida",licenseEngineUnavailable:"O navegador n\xE3o consegue verificar a licen\xE7a (HTTPS necess\xE1rio)",calcAdd:"Adicionar coluna calculada\u2026",calcEdit:"Editar coluna calculada\u2026",calcRemove:"Remover coluna calculada",calcTitleAdd:"Adicionar coluna calculada",calcTitleEdit:"Editar coluna calculada",calcName:"Nome",calcFormula:"F\xF3rmula",calcFormulaHint:"Escreva uma coluna como [Nome]. Exemplo: [Pre\xE7o] * [Qtd]",calcColumns:"Colunas",calcFunctions:"Fun\xE7\xF5es",calcPreview:"Pr\xE9-visualiza\xE7\xE3o",calcPreviewEmpty:"N\xE3o h\xE1 linhas para pr\xE9-visualizar",calcErrorAt:"{message} (caractere {position})",calcAddButton:"Adicionar",calcArgsAtLeast:"{min} ou mais",formulaError_empty:"Escreva uma f\xF3rmula",formulaError_unclosedText:'Texto n\xE3o fechado: falta um "',formulaError_unclosedColumn:"Nome de coluna n\xE3o fechado: falta um ]",formulaError_emptyColumn:"Nome de coluna vazio []",formulaError_unexpectedChar:"Caractere inesperado {text}",formulaError_expected:"Falta {text}",formulaError_cellAfterColon:'Falta uma c\xE9lula depois de ":"',formulaError_unknownName:"Nome desconhecido {name}: escreva a coluna como [{name}]",formulaError_unexpected:"{text} inesperado",formulaError_endsEarly:"A f\xF3rmula termina cedo demais",formulaError_trailing:"Texto inesperado no fim",formulaError_unknownColumn:"N\xE3o existe a coluna [{name}]",formulaError_unknownFunction:"Fun\xE7\xE3o desconhecida {name}",formulaError_argCount:"{name} aceita {range} argumento(s)",formulaError_cellsNotAllowed:"Refer\xEAncias de c\xE9lula como A1 n\xE3o s\xE3o usadas aqui: escreva a coluna como [Nome]"},mm={ok:"\u041E\u041A",cancel:"\u041E\u0442\u043C\u0435\u043D\u0430",apply:"\u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C",close:"\u0417\u0430\u043A\u0440\u044B\u0442\u044C",clear:"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C",save:"\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C",search:"\u041F\u043E\u0438\u0441\u043A...",selectAll:"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0441\u0435",showAll:"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432\u0441\u0435",remove:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C",none:"\u041D\u0435\u0442",toolbarSearch:"\u041F\u043E\u0438\u0441\u043A...",exportMenu:"\u042D\u043A\u0441\u043F\u043E\u0440\u0442",exportCsv:"\u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u0432 CSV",exportExcel:"\u042D\u043A\u0441\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432\u0441\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 \u0432 Excel",exportExcelSelected:"\u042D\u043A\u0441\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0435 \u0441\u0442\u0440\u043E\u043A\u0438 \u0432 Excel",exportPdf:"\u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u0432 PDF",exporting:"\u042D\u043A\u0441\u043F\u043E\u0440\u0442\u2026",columns:"\u0421\u0442\u043E\u043B\u0431\u0446\u044B",hiddenColumns:"\u0421\u043A\u0440\u044B\u0442\u044B\u0435 \u0441\u0442\u043E\u043B\u0431\u0446\u044B",noHiddenColumns:"\u0421\u043A\u0440\u044B\u0442\u044B\u0445 \u0441\u0442\u043E\u043B\u0431\u0446\u043E\u0432 \u043D\u0435\u0442.",sortAsc:"\u0421\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043E\u0442 \u0410 \u0434\u043E \u042F",sortDesc:"\u0421\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043E\u0442 \u042F \u0434\u043E \u0410",clearSort:"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0443",cardSortBy:"\u0421\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E",groupByColumn:"\u0413\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E \u044D\u0442\u043E\u043C\u0443 \u0441\u0442\u043E\u043B\u0431\u0446\u0443",ungroupColumn:"\u0423\u0431\u0440\u0430\u0442\u044C \u0438\u0437 \u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0438",showGroupPanel:"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u0430\u043D\u0435\u043B\u044C \u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0438",hideGroupPanel:"\u0421\u043A\u0440\u044B\u0442\u044C \u043F\u0430\u043D\u0435\u043B\u044C \u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0438",showFooter:"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0438\u0442\u043E\u0433\u0438",hideFooter:"\u0421\u043A\u0440\u044B\u0442\u044C \u0438\u0442\u043E\u0433\u0438",showGroupFooters:"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0438\u0442\u043E\u0433\u0438 \u043F\u043E \u0433\u0440\u0443\u043F\u043F\u0430\u043C",hideGroupFooters:"\u0421\u043A\u0440\u044B\u0442\u044C \u0438\u0442\u043E\u0433\u0438 \u043F\u043E \u0433\u0440\u0443\u043F\u043F\u0430\u043C",hideColumn:"\u0421\u043A\u0440\u044B\u0442\u044C \u044D\u0442\u043E\u0442 \u0441\u0442\u043E\u043B\u0431\u0435\u0446",fieldChooser:"\u0412\u044B\u0431\u043E\u0440 \u043F\u043E\u043B\u0435\u0439\u2026",bestFit:"\u041F\u043E\u0434\u043E\u0431\u0440\u0430\u0442\u044C \u0448\u0438\u0440\u0438\u043D\u0443",bestFitAll:"\u041F\u043E\u0434\u043E\u0431\u0440\u0430\u0442\u044C \u0448\u0438\u0440\u0438\u043D\u0443 (\u0432\u0441\u0435 \u0441\u0442\u043E\u043B\u0431\u0446\u044B)",pinRowTop:"\u0417\u0430\u043A\u0440\u0435\u043F\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443 \u0441\u0432\u0435\u0440\u0445\u0443",pinRowBottom:"\u0417\u0430\u043A\u0440\u0435\u043F\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443 \u0441\u043D\u0438\u0437\u0443",unpinRow:"\u041E\u0442\u043A\u0440\u0435\u043F\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443",findLabel:"\u041D\u0430\u0439\u0442\u0438 \u0432 \u0442\u0430\u0431\u043B\u0438\u0446\u0435",findPrevious:"\u041F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0435\u0435 \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435",findNext:"\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0435 \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435",findClose:"\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u043F\u043E\u0438\u0441\u043A",findCount:"{n} \u0438\u0437 {count}",findNone:"\u041D\u0435\u0442 \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439",renameColumn:"\u041F\u0435\u0440\u0435\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u0442\u044C \u0441\u0442\u043E\u043B\u0431\u0435\u0446",fixedPosition:"\u0417\u0430\u0434\u0430\u0442\u044C \u0444\u0438\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u0443\u044E \u043F\u043E\u0437\u0438\u0446\u0438\u044E",pinLeft:"\u0421\u043B\u0435\u0432\u0430",pinRight:"\u0421\u043F\u0440\u0430\u0432\u0430",pinSticky:"\u0417\u0430\u043A\u0440\u0435\u043F\u043B\u0451\u043D",unpin:"\u041E\u0442\u043A\u0440\u0435\u043F\u0438\u0442\u044C",moveLeft:"\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0432\u043B\u0435\u0432\u043E",moveRight:"\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0432\u043F\u0440\u0430\u0432\u043E",filterPlaceholder:"\u0424\u0438\u043B\u044C\u0442\u0440\u2026",filterColumnAria:"\u0424\u0438\u043B\u044C\u0442\u0440 \xAB{column}\xBB",filterOperatorDefault:"\u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E",filterOperatorAria:"\u041E\u043F\u0435\u0440\u0430\u0442\u043E\u0440 \u0444\u0438\u043B\u044C\u0442\u0440\u0430 \u0434\u043B\u044F \xAB{column}\xBB",filterSelectAll:"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0441\u0435",filterBlank:"(\u041F\u0443\u0441\u0442\u043E)",filterNonBlank:"(\u041D\u0435 \u043F\u0443\u0441\u0442\u044B\u0435)",filterEmptyText:"(\u043F\u0443\u0441\u0442\u043E\u0439 \u0442\u0435\u043A\u0441\u0442)",filterSpace:"(1 \u043F\u0440\u043E\u0431\u0435\u043B)",filterSpaces:"(\u043F\u0440\u043E\u0431\u0435\u043B\u043E\u0432: {n})",filterNoMatch:"\u0421\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439 \u043D\u0435\u0442",filterLoading:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0439\u2026",filterTruncated:"\u041F\u043E\u043A\u0430\u0437\u0430\u043D\u044B \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0435\u0440\u0432\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u2014 \u0432\u043E\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435\u0441\u044C \u043F\u043E\u0438\u0441\u043A\u043E\u043C, \u0447\u0442\u043E\u0431\u044B \u043D\u0430\u0439\u0442\u0438 \u043E\u0441\u0442\u0430\u043B\u044C\u043D\u044B\u0435.",filterRemove:"\u0423\u0431\u0440\u0430\u0442\u044C \u0444\u0438\u043B\u044C\u0442\u0440",filterToggle:"\u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C \u0444\u0438\u043B\u044C\u0442\u0440",filterEditBuilder:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0444\u0438\u043B\u044C\u0442\u0440",filterNone:"\u0424\u0438\u043B\u044C\u0442\u0440\u0430 \u043D\u0435\u0442",filterActive:"\u0424\u0438\u043B\u044C\u0442\u0440 \u0430\u043A\u0442\u0438\u0432\u0435\u043D",opEquals:"\u0440\u0430\u0432\u043D\u043E",opNotEquals:"\u043D\u0435 \u0440\u0430\u0432\u043D\u043E",opGreater:">",opGreaterOrEqual:"\u2265",opLess:"<",opLessOrEqual:"\u2264",opContains:"\u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442",opNotContains:"\u043D\u0435 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442",opStartsWith:"\u043D\u0430\u0447\u0438\u043D\u0430\u0435\u0442\u0441\u044F \u0441",opEndsWith:"\u0437\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u043D\u0430",opIsBlank:"\u043F\u0443\u0441\u0442\u043E",opIsNotBlank:"\u043D\u0435 \u043F\u0443\u0441\u0442\u043E",opIsOneOf:"\u043E\u0434\u043D\u043E \u0438\u0437",opIsBetween:"\u043C\u0435\u0436\u0434\u0443",opValuesCount:"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0439: {n}",opInPeriod:"\u0432 \u043F\u0435\u0440\u0438\u043E\u0434\u0435",periodToday:"\u0441\u0435\u0433\u043E\u0434\u043D\u044F",periodYesterday:"\u0432\u0447\u0435\u0440\u0430",periodTomorrow:"\u0437\u0430\u0432\u0442\u0440\u0430",periodThisWeek:"\u044D\u0442\u0430 \u043D\u0435\u0434\u0435\u043B\u044F",periodLastWeek:"\u043F\u0440\u043E\u0448\u043B\u0430\u044F \u043D\u0435\u0434\u0435\u043B\u044F",periodNextWeek:"\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0430\u044F \u043D\u0435\u0434\u0435\u043B\u044F",periodThisMonth:"\u044D\u0442\u043E\u0442 \u043C\u0435\u0441\u044F\u0446",periodLastMonth:"\u043F\u0440\u043E\u0448\u043B\u044B\u0439 \u043C\u0435\u0441\u044F\u0446",periodNextMonth:"\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u043C\u0435\u0441\u044F\u0446",periodThisQuarter:"\u044D\u0442\u043E\u0442 \u043A\u0432\u0430\u0440\u0442\u0430\u043B",periodLastQuarter:"\u043F\u0440\u043E\u0448\u043B\u044B\u0439 \u043A\u0432\u0430\u0440\u0442\u0430\u043B",periodNextQuarter:"\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u043A\u0432\u0430\u0440\u0442\u0430\u043B",periodThisYear:"\u044D\u0442\u043E\u0442 \u0433\u043E\u0434",periodLastYear:"\u043F\u0440\u043E\u0448\u043B\u044B\u0439 \u0433\u043E\u0434",periodNextYear:"\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u0433\u043E\u0434",periodYearToDate:"\u0441 \u043D\u0430\u0447\u0430\u043B\u0430 \u0433\u043E\u0434\u0430",periodLastDays:"\u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0435 {n} \u0434\u043D.",periodNextDays:"\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0435 {n} \u0434\u043D.",filterAnd:"\u0418",filterOr:"\u0418\u041B\u0418",builderTitle:"\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440 \u0444\u0438\u043B\u044C\u0442\u0440\u0430",builderCombine:"\u041E\u0431\u044A\u0435\u0434\u0438\u043D\u0438\u0442\u044C \u0443\u0441\u043B\u043E\u0432\u0438\u044F \u043E\u043F\u0435\u0440\u0430\u0442\u043E\u0440\u043E\u043C",builderAddCondition:"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0443\u0441\u043B\u043E\u0432\u0438\u0435",builderAddGroup:"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0433\u0440\u0443\u043F\u043F\u0443",builderRemoveGroup:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0433\u0440\u0443\u043F\u043F\u0443",builderRemoveCondition:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0443\u0441\u043B\u043E\u0432\u0438\u0435",builderEmpty:"\u0423\u0441\u043B\u043E\u0432\u0438\u0439 \u043F\u043E\u043A\u0430 \u043D\u0435\u0442.",builderColumn:"\u0421\u0442\u043E\u043B\u0431\u0435\u0446",builderOperator:"\u041E\u043F\u0435\u0440\u0430\u0442\u043E\u0440",builderValue:"\u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435",builderValueFrom:"\u041E\u0442",builderValueTo:"\u0414\u043E",builderValuePlaceholder:"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435",builderOpen:"\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440 \u0444\u0438\u043B\u044C\u0442\u0440\u0430\u2026",builderClearAll:"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0432\u0441\u0451",builderConditionButton:"+ \u0423\u0441\u043B\u043E\u0432\u0438\u0435",builderGroupButton:"+ \u0413\u0440\u0443\u043F\u043F\u0430",builderTrue:"\u0438\u0441\u0442\u0438\u043D\u0430",builderFalse:"\u043B\u043E\u0436\u044C",builderPeriod:"\u041F\u0435\u0440\u0438\u043E\u0434",builderDays:"\u0414\u043D\u0438",filterCustom:"(\u041E\u0441\u043E\u0431\u043E\u0435\u2026)",filterPopupAria:"\u0424\u0438\u043B\u044C\u0442\u0440 {column}",importOpen:"\u0418\u043C\u043F\u043E\u0440\u0442\u2026",groupPanelHint:"\u041F\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u0435 \u0441\u044E\u0434\u0430 \u0441\u0442\u043E\u043B\u0431\u0435\u0446, \u0447\u0442\u043E\u0431\u044B \u0441\u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E \u043D\u0435\u043C\u0443",groupAddLevel:"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0443\u0440\u043E\u0432\u0435\u043D\u044C \u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0438",groupAddLevelButton:"+ \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0443\u0440\u043E\u0432\u0435\u043D\u044C\u2026",groupNoGrouping:"(\u0431\u0435\u0437 \u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0438)",groupLevelAria:"\u0423\u0440\u043E\u0432\u0435\u043D\u044C \u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0438 {n}",groupRemoveAria:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C {column}",groupExpandAll:"\u0420\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0432\u0441\u0435",groupCollapseAll:"\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0432\u0441\u0435",pagerFirst:"\u041F\u0435\u0440\u0432\u0430\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430",pagerPrevious:"\u041F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0430\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430",pagerNext:"\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0430\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430",pagerLast:"\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u044F\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430",pagerPage:"\u0421\u0442\u0440\u0430\u043D\u0438\u0446\u0430",pagerOf:"\u0438\u0437",pagerRowsPerPage:"\u0421\u0442\u0440\u043E\u043A \u043D\u0430 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0435",pagerAria:"\u041F\u043E\u0441\u0442\u0440\u0430\u043D\u0438\u0447\u043D\u0430\u044F \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044F",pagerPageButton:"\u0421\u0442\u0440\u0430\u043D\u0438\u0446\u0430 {n}",selectAllRows:"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0441\u0435 \u0441\u0442\u0440\u043E\u043A\u0438",selectRowAria:"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443 {row}",selectGroupAria:"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0438 \u0433\u0440\u0443\u043F\u043F\u044B {group} ({count})",summaryAria:"\u0421\u0432\u043E\u0434\u043A\u0430",columnTotalsAria:"\u0418\u0442\u043E\u0433\u0438 \u043F\u043E \u0441\u0442\u043E\u043B\u0431\u0446\u0430\u043C",rowActions:"\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u0441\u043E \u0441\u0442\u0440\u043E\u043A\u043E\u0439",detailsAria:"\u041F\u043E\u0434\u0440\u043E\u0431\u043D\u043E\u0441\u0442\u0438",rowNumberAria:"\u041D\u043E\u043C\u0435\u0440 \u0441\u0442\u0440\u043E\u043A\u0438",noteEditorAria:"\u041F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u0435 \u043A \u044F\u0447\u0435\u0439\u043A\u0435",notePlaceholder:"\u041D\u0430\u043F\u0438\u0448\u0438\u0442\u0435 \u043F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u0435 \u043A \u044D\u0442\u043E\u0439 \u044F\u0447\u0435\u0439\u043A\u0435\u2026",addNote:"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u0435\u2026",editNote:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u0435\u2026",deleteNote:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u043F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u0435",expandDetails:"\u0420\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u043F\u043E\u0434\u0440\u043E\u0431\u043D\u043E\u0441\u0442\u0438",collapseDetails:"\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u043F\u043E\u0434\u0440\u043E\u0431\u043D\u043E\u0441\u0442\u0438",expandTreeRow:"\u0420\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443",collapseTreeRow:"\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443",expandColumnGroup:"\u0420\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0433\u0440\u0443\u043F\u043F\u0443 \u0441\u0442\u043E\u043B\u0431\u0446\u043E\u0432",collapseColumnGroup:"\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0433\u0440\u0443\u043F\u043F\u0443 \u0441\u0442\u043E\u043B\u0431\u0446\u043E\u0432",dragToReorder:"\u041F\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u043E\u0440\u044F\u0434\u043E\u043A",menuCopy:"\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C",menuCopyWithHeaders:"\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430\u043C\u0438",menuCopyWithGroupHeaders:"\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430\u043C\u0438 \u0433\u0440\u0443\u043F\u043F",menuCut:"\u0412\u044B\u0440\u0435\u0437\u0430\u0442\u044C",menuPaste:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C",menuExport:"\u042D\u043A\u0441\u043F\u043E\u0440\u0442",menuChartRange:"\u0414\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u0430 \u043F\u043E \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u043C \u044F\u0447\u0435\u0439\u043A\u0430\u043C",statsSum:"\u0421\u0443\u043C\u043C\u0430",statsCount:"\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E",statsAvg:"\u0421\u0440\u0435\u0434\u043D\u0435\u0435",statsMin:"\u041C\u0438\u043D",statsMax:"\u041C\u0430\u043A\u0441",statsCells:"\u042F\u0447\u0435\u0439\u043A\u0438",statsTooLarge:"\u0412\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u0432\u0435\u043B\u0438\u043A\u043E \u0434\u043B\u044F \u043F\u043E\u0434\u0441\u0447\u0451\u0442\u0430",statusRows:"\u0421\u0442\u0440\u043E\u043A\u0438",statusFiltered:"\u041E\u0442\u0444\u0438\u043B\u044C\u0442\u0440\u043E\u0432\u0430\u043D\u043E",statusSelected:"\u0412\u044B\u0431\u0440\u0430\u043D\u043E",summaryRows:"\u0441\u0442\u0440\u043E\u043A",announceRows:"\u0421\u0442\u0440\u043E\u043A: {n}",announceSortedBy:"\u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0430 \u043F\u043E {columns}",announceSelected:"\u0432\u044B\u0431\u0440\u0430\u043D\u043E: {n}",announceAscending:"\u043F\u043E \u0432\u043E\u0437\u0440\u0430\u0441\u0442\u0430\u043D\u0438\u044E",announceDescending:"\u043F\u043E \u0443\u0431\u044B\u0432\u0430\u043D\u0438\u044E",sideFilters:"\u0424\u0438\u043B\u044C\u0442\u0440\u044B",sideBarAria:"\u041F\u0430\u043D\u0435\u043B\u0438 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432",sideClearFilters:"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0432\u0441\u0435 \u0444\u0438\u043B\u044C\u0442\u0440\u044B",summarySum:"\u0421\u0443\u043C\u043C\u0430",summaryAvg:"\u0421\u0440\u0435\u0434\u043D\u0435\u0435",summaryMin:"\u041C\u0438\u043D",summaryMax:"\u041C\u0430\u043A\u0441",summaryCount:"\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E",summaryDistinct:"\u0423\u043D\u0438\u043A\u0430\u043B\u044C\u043D\u044B\u0435",summaryCustom:"\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439",noTotal:"\u041D\u0435\u0442 \u0438\u0442\u043E\u0433\u0430",busy:"\u0412\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F\u2026",busyLoading:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u0441\u0442\u0440\u043E\u043A\u2026",rowsLoadFailed:"\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u044D\u0442\u0438 \u0441\u0442\u0440\u043E\u043A\u0438.",retryLoad:"\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u044C",busyEncoding:"\u041F\u043E\u0434\u0433\u043E\u0442\u043E\u0432\u043A\u0430 \u0434\u0430\u043D\u043D\u044B\u0445\u2026",busyFiltering:"\u0424\u0438\u043B\u044C\u0442\u0440\u0430\u0446\u0438\u044F \u0441\u0442\u0440\u043E\u043A\u2026",busySorting:"\u0421\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0430 \u0441\u0442\u0440\u043E\u043A\u2026",busyComputing:"\u0424\u0438\u043B\u044C\u0442\u0440\u0430\u0446\u0438\u044F \u0438 \u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0430\u2026",busyGrouping:"\u041F\u043E\u0441\u0442\u0440\u043E\u0435\u043D\u0438\u0435 \u0433\u0440\u0443\u043F\u043F\u2026",busyAggregating:"\u0412\u044B\u0447\u0438\u0441\u043B\u0435\u043D\u0438\u0435 \u0438\u0442\u043E\u0433\u043E\u0432\u2026",busyProjecting:"\u041E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0435 \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u044F\u2026",busyExporting:"\u0421\u043E\u0437\u0434\u0430\u043D\u0438\u0435 \u0444\u0430\u0439\u043B\u0430\u2026",noData:"\u0414\u0430\u043D\u043D\u044B\u0435 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u044B",editNewRow:"\u041D\u043E\u0432\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430",editSaveChanges:"\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F",editDiscardChanges:"\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F",editRow:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443",editRowMenu:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443\u2026",editDeleteRow:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443",editUndoDelete:"\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u0435",editActions:"\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044F",editSaveRow:"\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443",editSaving:"\u0421\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0435\u2026",editEditingRow:"\u0418\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0435 \u0441\u0442\u0440\u043E\u043A\u0438 {row}",editSaveCount:"\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A: {n}",editCannotSave:"\u041D\u0435 \u0443\u0434\u0430\u0451\u0442\u0441\u044F \u0441\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C",editSaveFailed:"\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0441\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F.",rowStatusNew:"\u041D\u043E\u0432\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430, \u043D\u0435 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0430",rowStatusChanged:"\u041D\u0435\u0441\u043E\u0445\u0440\u0430\u043D\u0451\u043D\u043D\u044B\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F",rowStatusRemoved:"\u041F\u043E\u043C\u0435\u0447\u0435\u043D\u0430 \u043D\u0430 \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u0435",rowStatusSaving:"\u0421\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0435\u2026",rowStatusSaved:"\u0421\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u043E",rowStatusError:"\u041E\u0448\u0438\u0431\u043A\u0430 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u044F",rowStatusRetry:"\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u044C",rowStatusDelete:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443",editDeleteConfirm:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u044D\u0442\u0443 \u0441\u0442\u0440\u043E\u043A\u0443?",editAddRowUndo:"\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0441\u0442\u0440\u043E\u043A\u0438",editDeleteRowUndo:"\u0423\u0434\u0430\u043B\u0435\u043D\u0438\u0435 \u0441\u0442\u0440\u043E\u043A\u0438",editCellUndo:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C {column}",editFillUndo:"\u0417\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u044C {count} \u044F\u0447\u0435\u0435\u043A",editPasteUndo:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C {count} \u044F\u0447\u0435\u0435\u043A",editCutUndo:"\u0412\u044B\u0440\u0435\u0437\u0430\u0442\u044C {count} \u044F\u0447\u0435\u0435\u043A",editGroupTotal:"\u0418\u0442\u043E\u0433 \u0433\u0440\u0443\u043F\u043F\u044B",editGroupTotalUndo:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0438\u0442\u043E\u0433 {column} ({count} \u0441\u0442\u0440\u043E\u043A)",editNoMatch:"\u0421\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439 \u043D\u0435\u0442",formEditTitle:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443",formAddTitle:"\u041D\u043E\u0432\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430",formShortcut:"{key}+Enter \u2014 \u0441\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \xB7 Esc \u2014 \u043E\u0442\u043C\u0435\u043D\u0438\u0442\u044C",validationRequired:"\u042D\u0442\u043E \u043F\u043E\u043B\u0435 \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E",validationNumber:"\u0414\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u0447\u0438\u0441\u043B\u043E\u043C",validationNumberLocale:"\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u0447\u0438\u0441\u043B\u043E. \u041F\u0438\u0448\u0438\u0442\u0435 \u0442\u0430\u043A: {example}",validationMin:"\u0414\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u043D\u0435 \u043C\u0435\u043D\u044C\u0448\u0435 {min}",validationMax:"\u0414\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u043D\u0435 \u0431\u043E\u043B\u044C\u0448\u0435 {max}",validationFormat:"\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0444\u043E\u0440\u043C\u0430\u0442",validationEmail:"\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0430\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B",validationInvalid:"\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435",dateCalendar:"\u041A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044C",dateOpenCalendar:"\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044C",datePreviousMonth:"\u041F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0438\u0439 \u043C\u0435\u0441\u044F\u0446",dateNextMonth:"\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u043C\u0435\u0441\u044F\u0446",monthJanuary:"\u042F\u043D\u0432\u0430\u0440\u044C",monthFebruary:"\u0424\u0435\u0432\u0440\u0430\u043B\u044C",monthMarch:"\u041C\u0430\u0440\u0442",monthApril:"\u0410\u043F\u0440\u0435\u043B\u044C",monthMay:"\u041C\u0430\u0439",monthJune:"\u0418\u044E\u043D\u044C",monthJuly:"\u0418\u044E\u043B\u044C",monthAugust:"\u0410\u0432\u0433\u0443\u0441\u0442",monthSeptember:"\u0421\u0435\u043D\u0442\u044F\u0431\u0440\u044C",monthOctober:"\u041E\u043A\u0442\u044F\u0431\u0440\u044C",monthNovember:"\u041D\u043E\u044F\u0431\u0440\u044C",monthDecember:"\u0414\u0435\u043A\u0430\u0431\u0440\u044C",weekStartsOn:"1",weekdaySu:"\u0412\u0441",weekdayMo:"\u041F\u043D",weekdayTu:"\u0412\u0442",weekdayWe:"\u0421\u0440",weekdayTh:"\u0427\u0442",weekdayFr:"\u041F\u0442",weekdaySa:"\u0421\u0431",importTitle:"\u0418\u043C\u043F\u043E\u0440\u0442 \u0434\u0430\u043D\u043D\u044B\u0445",importStepSource:"1. \u0418\u0441\u0442\u043E\u0447\u043D\u0438\u043A",importStepMap:"2. \u0421\u043E\u043F\u043E\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0441\u0442\u043E\u043B\u0431\u0446\u043E\u0432",importFile:"\u0424\u0430\u0439\u043B CSV",importPaste:"\u2026\u0438\u043B\u0438 \u0432\u0441\u0442\u0430\u0432\u044C\u0442\u0435 \u0441\u0442\u0440\u043E\u043A\u0438",importSeparator:"\u0420\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044C",importSeparatorAuto:"\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u0438\u0442\u044C \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438",importSeparatorComma:"\u0417\u0430\u043F\u044F\u0442\u0430\u044F ,",importSeparatorSemicolon:"\u0422\u043E\u0447\u043A\u0430 \u0441 \u0437\u0430\u043F\u044F\u0442\u043E\u0439 ;",importSeparatorTab:"\u0422\u0430\u0431\u0443\u043B\u044F\u0446\u0438\u044F",importSeparatorPipe:"\u0412\u0435\u0440\u0442\u0438\u043A\u0430\u043B\u044C\u043D\u0430\u044F \u0447\u0435\u0440\u0442\u0430 |",importFileColumn:"\u0421\u0442\u043E\u043B\u0431\u0435\u0446 \u0444\u0430\u0439\u043B\u0430",importDetected:"\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043E",importGridColumn:"\u0421\u0442\u043E\u043B\u0431\u0435\u0446 \u0442\u0430\u0431\u043B\u0438\u0446\u044B",importSample:"\u041F\u0440\u0438\u043C\u0435\u0440",importSkip:"\u2014 \u043F\u0440\u043E\u043F\u0443\u0441\u0442\u0438\u0442\u044C \u2014",importPreview:"\u041F\u0440\u0435\u0434\u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440",importNoSource:"\u0421\u043D\u0430\u0447\u0430\u043B\u0430 \u0432\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0444\u0430\u0439\u043B \u0438\u043B\u0438 \u0432\u0441\u0442\u0430\u0432\u044C\u0442\u0435 \u0441\u0442\u0440\u043E\u043A\u0438.",importNoRows:"\u0421\u0442\u0440\u043E\u043A\u0438 \u0434\u0430\u043D\u043D\u044B\u0445 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u044B.",importAction:"\u0418\u043C\u043F\u043E\u0440\u0442",exportAborted:"\u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u043F\u0440\u0435\u0440\u0432\u0430\u043D",exportSheetName:"\u0414\u0430\u043D\u043D\u044B\u0435",chart:"\u0414\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u0430",chartCategory:"\u041A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u044F",chartSeries:"\u0420\u044F\u0434",chartAddSeries:"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0440\u044F\u0434",chartRemoveSeries:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C",chartSource:"\u0414\u0430\u043D\u043D\u044B\u0435",chartSourceView:"\u041E\u0442\u0444\u0438\u043B\u044C\u0442\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u0441\u0442\u0440\u043E\u043A\u0438",chartSourceSelection:"\u0412\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0435 \u0441\u0442\u0440\u043E\u043A\u0438",chartSourceAll:"\u0412\u0441\u0435 \u0441\u0442\u0440\u043E\u043A\u0438",chartSourceRange:"\u0412\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0439 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D (\u0441\u0442\u0440\u043E\u043A\u0438 {from}\u2013{to})",chartClose:"\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u0443",chartFullscreen:"\u0412\u043E \u0432\u0435\u0441\u044C \u044D\u043A\u0440\u0430\u043D",chartExitFullscreen:"\u0412\u044B\u0439\u0442\u0438 \u0438\u0437 \u043F\u043E\u043B\u043D\u043E\u044D\u043A\u0440\u0430\u043D\u043D\u043E\u0433\u043E \u0440\u0435\u0436\u0438\u043C\u0430",chartFloat:"\u041E\u0442\u043A\u0440\u0435\u043F\u0438\u0442\u044C",chartDock:"\u0417\u0430\u043A\u0440\u0435\u043F\u0438\u0442\u044C",chartNewWindow:"\u041D\u043E\u0432\u043E\u0435 \u043E\u043A\u043D\u043E",chartMoveWindow:"\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u043E\u043A\u043D\u043E \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u044B",chartResizeWindow:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0440\u0430\u0437\u043C\u0435\u0440 \u043E\u043A\u043D\u0430 \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u044B",chartResizeDock:"\u041F\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0432\u044B\u0441\u043E\u0442\u0443 \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u044B",chartSwitch:"\u041F\u043E\u043C\u0435\u043D\u044F\u0442\u044C \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0438 \u0438 \u0440\u044F\u0434\u044B",chartUnlink:"\u041E\u0442\u0432\u044F\u0437\u0430\u0442\u044C",chartLink:"\u041F\u0440\u0438\u0432\u044F\u0437\u0430\u0442\u044C",chartUnlinked:"\u041E\u0442\u0432\u044F\u0437\u0430\u043D\u043E: \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u0430 \u0441\u043E\u0445\u0440\u0430\u043D\u044F\u0435\u0442 \u0441\u0432\u043E\u0438 \u0434\u0430\u043D\u043D\u044B\u0435 \u0438 \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0435 \u0441\u043B\u0435\u0434\u0443\u0435\u0442 \u0437\u0430 \u0442\u0430\u0431\u043B\u0438\u0446\u0435\u0439.",chartExportPng:"PNG",chartExportSvg:"SVG",chartExportFailed:"\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u044D\u043A\u0441\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u0443.",chartCrossFiltered:"\u0422\u0430\u0431\u043B\u0438\u0446\u0430 \u043E\u0442\u0444\u0438\u043B\u044C\u0442\u0440\u043E\u0432\u0430\u043D\u0430 \u043F\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044E {value}.",chartBlankCategory:"(\u043F\u0443\u0441\u0442\u043E)",chartTruncated:"\u041F\u043E\u043A\u0430\u0437\u0430\u043D\u044B {n} \u043E\u0441\u043D\u043E\u0432\u043D\u044B\u0445 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0439; \u043E\u0441\u0442\u0430\u043B\u044C\u043D\u044B\u0435 \u043E\u0431\u044A\u0435\u0434\u0438\u043D\u0435\u043D\u044B \u043A\u0430\u043A \xAB\u041F\u0440\u043E\u0447\u0435\u0435\xBB.",chartOther:"\u041F\u0440\u043E\u0447\u0435\u0435",chartEmpty:"\u041F\u043E\u043A\u0430 \u043D\u0435\u0447\u0435\u0433\u043E \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C.",chartNoVisibleSeries:"\u041D\u0435\u0442 \u0432\u0438\u0434\u0438\u043C\u044B\u0445 \u0440\u044F\u0434\u043E\u0432.",chartNeedsMoreSeries:"\u0414\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u0442\u0438\u043F\u0430 \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u044B \u043D\u0443\u0436\u043D\u044B \u043C\u0438\u043D\u0438\u043C\u0443\u043C \u0434\u0432\u0430 \u0441\u0442\u043E\u043B\u0431\u0446\u0430 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0439 (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u043C\u0438\u043D\u0438\u043C\u0443\u043C \u0438 \u043C\u0430\u043A\u0441\u0438\u043C\u0443\u043C) \u2014 \u0434\u043E\u0431\u0430\u0432\u044C\u0442\u0435 \u0432\u0442\u043E\u0440\u043E\u0439 \u0440\u044F\u0434.",chartLoading:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430\u2026",chartNeedsRecharts:"\u0414\u043B\u044F \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C \u043D\u0443\u0436\u0435\u043D \u043D\u0435\u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u044B\u0439 \u043F\u0430\u043A\u0435\u0442 `recharts`. \u0423\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u0435 \u0435\u0433\u043E, \u0447\u0442\u043E\u0431\u044B \u0438\u0445 \u0440\u0438\u0441\u043E\u0432\u0430\u0442\u044C.",chartOnlyOneSeries:"\u042D\u0442\u043E\u0442 \u0442\u0438\u043F \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u044B \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u0442 \u043E\u0434\u0438\u043D \u0440\u044F\u0434.",chartByColumn:"\u0414\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u0430 \u043F\u043E \u044D\u0442\u043E\u043C\u0443 \u0441\u0442\u043E\u043B\u0431\u0446\u0443",chartGroupBy:"\u041F\u043E",chartGroupNone:"\u041A\u0430\u0436\u0434\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435",chartGroupAuto:"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438",chartGroupDay:"\u0414\u0435\u043D\u044C",chartGroupWeek:"\u041D\u0435\u0434\u0435\u043B\u044F",chartGroupMonth:"\u041C\u0435\u0441\u044F\u0446",chartGroupQuarter:"\u041A\u0432\u0430\u0440\u0442\u0430\u043B",chartGroupYear:"\u0413\u043E\u0434",chartGroupBins:"\u0438\u043D\u0442\u0435\u0440\u0432\u0430\u043B\u043E\u0432: {n}",chartBucketAdjusted:"\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u043D\u043E\u0433\u043E \u0438\u043D\u0442\u0435\u0440\u0432\u0430\u043B\u043E\u0432 \u0434\u043B\u044F \u043E\u0434\u043D\u043E\u0439 \u043E\u0441\u0438 \u2014 \u0441\u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u0430\u043D\u043E \u043A\u0440\u0443\u043F\u043D\u0435\u0435.",chartWindowed:"\u041F\u043E\u043A\u0430\u0437\u0430\u043D\u043E {shown} \u0438\u0437 {total}.",chartShowAll:"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432\u0441\u0435",chartCanvasHint:"\u0414\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u0430. \u041F\u0440\u043E\u043A\u0440\u0443\u0442\u043A\u0430 \u2014 \u043C\u0430\u0441\u0448\u0442\u0430\u0431, \u043F\u0435\u0440\u0435\u0442\u0430\u0441\u043A\u0438\u0432\u0430\u043D\u0438\u0435 \u2014 \u0441\u0434\u0432\u0438\u0433, \u0441\u0442\u0440\u0435\u043B\u043A\u0438 \u2014 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u0435, 0 \u2014 \u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432\u0441\u0435.",chartCanvasHintPick:"\u0414\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u0430. \u0421\u0442\u0440\u0435\u043B\u043A\u0438 \u0432\u044B\u0431\u0438\u0440\u0430\u044E\u0442 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u044E, Enter \u0438\u043B\u0438 \u041F\u0440\u043E\u0431\u0435\u043B \u0444\u0438\u043B\u044C\u0442\u0440\u0443\u0435\u0442 \u043F\u043E \u043D\u0435\u0439 \u0442\u0430\u0431\u043B\u0438\u0446\u0443 (Ctrl \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0435\u0442), + \u0438 \u2212 \u043C\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u044E\u0442, 0 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u0442 \u0432\u0441\u0451.",chartCategoryFocus:"{category}: {values} \u2014 {position} \u0438\u0437 {count}",chartCategoryFiltered:"\u0444\u0438\u043B\u044C\u0442\u0440\u0443\u0435\u0442 \u0442\u0430\u0431\u043B\u0438\u0446\u0443",chartAggSum:"\u0421\u0443\u043C\u043C\u0430",chartAggAvg:"\u0421\u0440\u0435\u0434\u043D\u0435\u0435",chartAggMin:"\u041C\u0438\u043D",chartAggMax:"\u041C\u0430\u043A\u0441",chartAggCount:"\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E",chartAggDistinct:"\u0423\u043D\u0438\u043A\u0430\u043B\u044C\u043D\u044B\u0435",chartAggFirst:"\u041F\u0435\u0440\u0432\u043E\u0435",chartAggLast:"\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0435",chartTypeColumn:"\u0421\u0442\u043E\u043B\u0431\u0446\u044B",chartTypeBar:"\u041F\u043E\u043B\u043E\u0441\u044B",chartTypeLine:"\u041B\u0438\u043D\u0438\u044F",chartTypeArea:"\u041E\u0431\u043B\u0430\u0441\u0442\u044C",chartTypePie:"\u041A\u0440\u0443\u0433\u043E\u0432\u0430\u044F",chartTypeDonut:"\u041A\u043E\u043B\u044C\u0446\u0435\u0432\u0430\u044F",chartStacking:"\u0420\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0440\u044F\u0434\u043E\u0432",chartStackGrouped:"\u0413\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0430",chartStackStacked:"\u0421 \u043D\u0430\u043A\u043E\u043F\u043B\u0435\u043D\u0438\u0435\u043C",chartStackNormalized:"\u041D\u043E\u0440\u043C\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u043E\u0435 100%",chartFormat:"\u0424\u043E\u0440\u043C\u0430\u0442",chartFormatTitle:"\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A",chartFormatCategoryAxis:"\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043E\u0441\u0438 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0439",chartFormatValueAxis:"\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043E\u0441\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0439",chartFormatLegend:"\u041B\u0435\u0433\u0435\u043D\u0434\u0430",chartLegendTop:"\u0421\u0432\u0435\u0440\u0445\u0443",chartLegendBottom:"\u0421\u043D\u0438\u0437\u0443",chartLegendLeft:"\u0421\u043B\u0435\u0432\u0430",chartLegendRight:"\u0421\u043F\u0440\u0430\u0432\u0430",chartLegendNone:"\u0421\u043A\u0440\u044B\u0442\u0430",chartFormatDataLabels:"\u041F\u043E\u0434\u043F\u0438\u0441\u0438 \u0434\u0430\u043D\u043D\u044B\u0445",chartFormatScale:"\u0428\u043A\u0430\u043B\u0430 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0439",chartScaleLinear:"\u041B\u0438\u043D\u0435\u0439\u043D\u0430\u044F",chartScaleLog:"\u041B\u043E\u0433\u0430\u0440\u0438\u0444\u043C\u0438\u0447\u0435\u0441\u043A\u0430\u044F",chartFormatTextSize:"\u0420\u0430\u0437\u043C\u0435\u0440 \u0442\u0435\u043A\u0441\u0442\u0430",chartFormatTextColor:"\u0426\u0432\u0435\u0442 \u0442\u0435\u043A\u0441\u0442\u0430",chartFormatDefault:"\u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E",chartFormatLabelAngle:"\u041F\u043E\u0434\u043F\u0438\u0441\u0438 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0439",chartAngleAuto:"\u0410\u0432\u0442\u043E",chartAngleFlat:"\u0413\u043E\u0440\u0438\u0437\u043E\u043D\u0442\u0430\u043B\u044C\u043D\u043E",chartFormatGridLines:"\u041B\u0438\u043D\u0438\u0438 \u0441\u0435\u0442\u043A\u0438",chartGridValue:"\u041E\u0441\u044C \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0439",chartGridBoth:"\u041E\u0431\u0435 \u043E\u0441\u0438",chartGridNone:"\u041D\u0435\u0442",chartFormatGridDashed:"\u041F\u0443\u043D\u043A\u0442\u0438\u0440\u043D\u0430\u044F \u0441\u0435\u0442\u043A\u0430",chartFormatLineWidth:"\u0422\u043E\u043B\u0449\u0438\u043D\u0430 \u043B\u0438\u043D\u0438\u0438",chartFormatLineDashed:"\u041F\u0443\u043D\u043A\u0442\u0438\u0440\u043D\u044B\u0435 \u043B\u0438\u043D\u0438\u0438",chartFormatFillOpacity:"\u041D\u0435\u043F\u0440\u043E\u0437\u0440\u0430\u0447\u043D\u043E\u0441\u0442\u044C \u0437\u0430\u043B\u0438\u0432\u043A\u0438",chartFormatDateFormat:"\u0424\u043E\u0440\u043C\u0430\u0442 \u0434\u0430\u0442\u044B",chartFormatPalette:"\u0426\u0432\u0435\u0442\u0430",chartPaletteTheme:"\u0422\u0435\u043C\u0430",chartPaletteClassic:"\u041A\u043B\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043A\u0430\u044F",chartPaletteColorblind:"\u0414\u043B\u044F \u0434\u0430\u043B\u044C\u0442\u043E\u043D\u0438\u043A\u043E\u0432",chartPaletteVivid:"\u042F\u0440\u043A\u0430\u044F",chartPaletteMonochrome:"\u041E\u0434\u0438\u043D \u0446\u0432\u0435\u0442",sparklineSummary:"{count} \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0439 \u043E\u0442 {min} \u0434\u043E {max}, \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0435 {last}",chartTypeWaterfall:"\u041A\u0430\u0441\u043A\u0430\u0434\u043D\u0430\u044F",chartTypeFunnel:"\u0412\u043E\u0440\u043E\u043D\u043A\u0430",chartTypeTreemap:"\u041F\u043B\u043E\u0441\u043A\u043E\u0435 \u0434\u0435\u0440\u0435\u0432\u043E",chartTypeHeatmap:"\u0422\u0435\u043F\u043B\u043E\u0432\u0430\u044F \u043A\u0430\u0440\u0442\u0430",chartTypeBox:"\u042F\u0449\u0438\u043A \u0441 \u0443\u0441\u0430\u043C\u0438",chartTypeRadar:"\u041B\u0435\u043F\u0435\u0441\u0442\u043A\u043E\u0432\u0430\u044F",chartTypeRangeBar:"\u0414\u0438\u0430\u043F\u0430\u0437\u043E\u043D",chartBoxQ1:"Q1",chartBoxMedian:"\u041C\u0435\u0434\u0438\u0430\u043D\u0430",chartBoxQ3:"Q3",chartBoxOutlier:"\u0412\u044B\u0431\u0440\u043E\u0441",chartTotal:"\u0418\u0442\u043E\u0433\u043E",chartTypeScatter:"\u0422\u043E\u0447\u0435\u0447\u043D\u0430\u044F",chartTypeBubble:"\u041F\u0443\u0437\u044B\u0440\u044C\u043A\u043E\u0432\u0430\u044F",chartXAxis:"\u041E\u0441\u044C X",chartBubbleSize:"\u0420\u0430\u0437\u043C\u0435\u0440",chartXYSampled:"{shown} \u0438\u0437 {total} \u0442\u043E\u0447\u0435\u043A, \u0440\u0430\u0432\u043D\u043E\u043C\u0435\u0440\u043D\u0430\u044F \u0432\u044B\u0431\u043E\u0440\u043A\u0430",licenseMissing:"\u0411\u0435\u0437 \u043B\u0438\u0446\u0435\u043D\u0437\u0438\u0438",licenseExpired:"\u0421\u0440\u043E\u043A \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u043B\u0438\u0446\u0435\u043D\u0437\u0438\u0438 \u0438\u0441\u0442\u0451\u043A",licenseReleaseNotCovered:"\u042D\u0442\u0430 \u0432\u0435\u0440\u0441\u0438\u044F \u043D\u0435 \u043F\u043E\u043A\u0440\u044B\u0432\u0430\u0435\u0442\u0441\u044F \u043B\u0438\u0446\u0435\u043D\u0437\u0438\u0435\u0439",licenseDomainMismatch:"\u041B\u0438\u0446\u0435\u043D\u0437\u0438\u044F \u043D\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u044C\u043D\u0430 \u0434\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u0434\u043E\u043C\u0435\u043D\u0430",licenseRevoked:"\u041B\u0438\u0446\u0435\u043D\u0437\u0438\u044F \u043E\u0442\u043E\u0437\u0432\u0430\u043D\u0430",licenseInvalidFormat:"\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0444\u043E\u0440\u043C\u0430\u0442 \u043B\u0438\u0446\u0435\u043D\u0437\u0438\u043E\u043D\u043D\u043E\u0433\u043E \u043A\u043B\u044E\u0447\u0430",licenseInvalidSignature:"\u041D\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u044C\u043D\u0430\u044F \u043F\u043E\u0434\u043F\u0438\u0441\u044C \u043B\u0438\u0446\u0435\u043D\u0437\u0438\u0438",licenseEngineUnavailable:"\u0411\u0440\u0430\u0443\u0437\u0435\u0440 \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u043F\u0440\u043E\u0432\u0435\u0440\u0438\u0442\u044C \u043B\u0438\u0446\u0435\u043D\u0437\u0438\u044E (\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F HTTPS)",calcAdd:"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0432\u044B\u0447\u0438\u0441\u043B\u044F\u0435\u043C\u044B\u0439 \u0441\u0442\u043E\u043B\u0431\u0435\u0446\u2026",calcEdit:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0432\u044B\u0447\u0438\u0441\u043B\u044F\u0435\u043C\u044B\u0439 \u0441\u0442\u043E\u043B\u0431\u0435\u0446\u2026",calcRemove:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0432\u044B\u0447\u0438\u0441\u043B\u044F\u0435\u043C\u044B\u0439 \u0441\u0442\u043E\u043B\u0431\u0435\u0446",calcTitleAdd:"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0432\u044B\u0447\u0438\u0441\u043B\u044F\u0435\u043C\u044B\u0439 \u0441\u0442\u043E\u043B\u0431\u0435\u0446",calcTitleEdit:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0432\u044B\u0447\u0438\u0441\u043B\u044F\u0435\u043C\u044B\u0439 \u0441\u0442\u043E\u043B\u0431\u0435\u0446",calcName:"\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435",calcFormula:"\u0424\u043E\u0440\u043C\u0443\u043B\u0430",calcFormulaHint:"\u0421\u0442\u043E\u043B\u0431\u0435\u0446 \u043F\u0438\u0448\u0435\u0442\u0441\u044F \u043A\u0430\u043A [\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435]. \u041F\u0440\u0438\u043C\u0435\u0440: [\u0426\u0435\u043D\u0430] * [\u041A\u043E\u043B-\u0432\u043E]",calcColumns:"\u0421\u0442\u043E\u043B\u0431\u0446\u044B",calcFunctions:"\u0424\u0443\u043D\u043A\u0446\u0438\u0438",calcPreview:"\u041F\u0440\u0435\u0434\u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440",calcPreviewEmpty:"\u041D\u0435\u0442 \u0441\u0442\u0440\u043E\u043A \u0434\u043B\u044F \u043F\u0440\u0435\u0434\u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0430",calcErrorAt:"{message} (\u0441\u0438\u043C\u0432\u043E\u043B {position})",calcAddButton:"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C",calcArgsAtLeast:"{min} \u0438\u043B\u0438 \u0431\u043E\u043B\u044C\u0448\u0435",formulaError_empty:"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0444\u043E\u0440\u043C\u0443\u043B\u0443",formulaError_unclosedText:'\u0422\u0435\u043A\u0441\u0442 \u043D\u0435 \u0437\u0430\u043A\u0440\u044B\u0442: \u043D\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 "',formulaError_unclosedColumn:"\u0418\u043C\u044F \u0441\u0442\u043E\u043B\u0431\u0446\u0430 \u043D\u0435 \u0437\u0430\u043A\u0440\u044B\u0442\u043E: \u043D\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 ]",formulaError_emptyColumn:"\u041F\u0443\u0441\u0442\u043E\u0435 \u0438\u043C\u044F \u0441\u0442\u043E\u043B\u0431\u0446\u0430 []",formulaError_unexpectedChar:"\u041D\u0435\u043E\u0436\u0438\u0434\u0430\u043D\u043D\u044B\u0439 \u0441\u0438\u043C\u0432\u043E\u043B {text}",formulaError_expected:"\u041D\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 {text}",formulaError_cellAfterColon:'\u041F\u043E\u0441\u043B\u0435 ":" \u043D\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u044F\u0447\u0435\u0439\u043A\u0438',formulaError_unknownName:"\u041D\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043D\u043E\u0435 \u0438\u043C\u044F {name} \u2014 \u0441\u0442\u043E\u043B\u0431\u0435\u0446 \u043F\u0438\u0448\u0435\u0442\u0441\u044F \u043A\u0430\u043A [{name}]",formulaError_unexpected:"\u041D\u0435\u043E\u0436\u0438\u0434\u0430\u043D\u043D\u044B\u0439 {text}",formulaError_endsEarly:"\u0424\u043E\u0440\u043C\u0443\u043B\u0430 \u043E\u0431\u0440\u044B\u0432\u0430\u0435\u0442\u0441\u044F",formulaError_trailing:"\u041B\u0438\u0448\u043D\u0438\u0439 \u0442\u0435\u043A\u0441\u0442 \u0432 \u043A\u043E\u043D\u0446\u0435",formulaError_unknownColumn:"\u0421\u0442\u043E\u043B\u0431\u0446\u0430 [{name}] \u043D\u0435\u0442",formulaError_unknownFunction:"\u041D\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043D\u0430\u044F \u0444\u0443\u043D\u043A\u0446\u0438\u044F {name}",formulaError_argCount:"{name}: \u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C {range}",formulaError_cellsNotAllowed:"\u0421\u0441\u044B\u043B\u043A\u0438 \u043D\u0430 \u044F\u0447\u0435\u0439\u043A\u0438 \u0432\u0440\u043E\u0434\u0435 A1 \u0437\u0434\u0435\u0441\u044C \u043D\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E\u0442\u0441\u044F \u2014 \u043F\u0438\u0448\u0438\u0442\u0435 \u0441\u0442\u043E\u043B\u0431\u0435\u0446 \u043A\u0430\u043A [\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435]"},fm={ok:"\u0645\u0648\u0627\u0641\u0642",cancel:"\u0625\u0644\u063A\u0627\u0621",apply:"\u062A\u0637\u0628\u064A\u0642",close:"\u0625\u063A\u0644\u0627\u0642",clear:"\u0645\u0633\u062D",save:"\u062D\u0641\u0638",search:"\u0628\u062D\u062B...",selectAll:"\u062A\u062D\u062F\u064A\u062F \u0627\u0644\u0643\u0644",showAll:"\u0639\u0631\u0636 \u0627\u0644\u0643\u0644",remove:"\u0625\u0632\u0627\u0644\u0629",none:"\u0628\u0644\u0627",toolbarSearch:"\u0628\u062D\u062B...",exportMenu:"\u062A\u0635\u062F\u064A\u0631",exportCsv:"\u062A\u0635\u062F\u064A\u0631 \u0625\u0644\u0649 CSV",exportExcel:"\u062A\u0635\u062F\u064A\u0631 \u0643\u0644 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u0625\u0644\u0649 Excel",exportExcelSelected:"\u062A\u0635\u062F\u064A\u0631 \u0627\u0644\u0635\u0641\u0648\u0641 \u0627\u0644\u0645\u062D\u062F\u062F\u0629 \u0625\u0644\u0649 Excel",exportPdf:"\u062A\u0635\u062F\u064A\u0631 \u0625\u0644\u0649 PDF",exporting:"\u062C\u0627\u0631\u064A \u0627\u0644\u062A\u0635\u062F\u064A\u0631\u2026",columns:"\u0627\u0644\u0623\u0639\u0645\u062F\u0629",hiddenColumns:"\u0627\u0644\u0623\u0639\u0645\u062F\u0629 \u0627\u0644\u0645\u062E\u0641\u064A\u0629",noHiddenColumns:"\u0644\u0627 \u062A\u0648\u062C\u062F \u0623\u0639\u0645\u062F\u0629 \u0645\u062E\u0641\u064A\u0629.",sortAsc:"\u0627\u0644\u0641\u0631\u0632 \u0645\u0646 \u0623 \u0625\u0644\u0649 \u064A",sortDesc:"\u0627\u0644\u0641\u0631\u0632 \u0645\u0646 \u064A \u0625\u0644\u0649 \u0623",clearSort:"\u0645\u0633\u062D \u0627\u0644\u0641\u0631\u0632",cardSortBy:"\u062A\u0631\u062A\u064A\u0628 \u062D\u0633\u0628",groupByColumn:"\u062A\u062C\u0645\u064A\u0639 \u062D\u0633\u0628 \u0647\u0630\u0627 \u0627\u0644\u0639\u0645\u0648\u062F",ungroupColumn:"\u0625\u0632\u0627\u0644\u0629 \u0645\u0646 \u0627\u0644\u062A\u062C\u0645\u064A\u0639",showGroupPanel:"\u0639\u0631\u0636 \u0644\u0648\u062D\u0629 \u0627\u0644\u062A\u062C\u0645\u064A\u0639",hideGroupPanel:"\u0625\u062E\u0641\u0627\u0621 \u0644\u0648\u062D\u0629 \u0627\u0644\u062A\u062C\u0645\u064A\u0639",showFooter:"\u0639\u0631\u0636 \u0627\u0644\u062A\u0630\u064A\u064A\u0644",hideFooter:"\u0625\u062E\u0641\u0627\u0621 \u0627\u0644\u062A\u0630\u064A\u064A\u0644",showGroupFooters:"\u0639\u0631\u0636 \u062A\u0630\u064A\u064A\u0644\u0627\u062A \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0627\u062A",hideGroupFooters:"\u0625\u062E\u0641\u0627\u0621 \u062A\u0630\u064A\u064A\u0644\u0627\u062A \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0627\u062A",hideColumn:"\u0625\u062E\u0641\u0627\u0621 \u0647\u0630\u0627 \u0627\u0644\u0639\u0645\u0648\u062F",fieldChooser:"\u0645\u062D\u062F\u062F \u0627\u0644\u062D\u0642\u0648\u0644\u2026",bestFit:"\u0623\u0641\u0636\u0644 \u0639\u0631\u0636",bestFitAll:"\u0623\u0641\u0636\u0644 \u0639\u0631\u0636 (\u0643\u0644 \u0627\u0644\u0623\u0639\u0645\u062F\u0629)",pinRowTop:"\u062A\u062B\u0628\u064A\u062A \u0627\u0644\u0635\u0641 \u0641\u064A \u0627\u0644\u0623\u0639\u0644\u0649",pinRowBottom:"\u062A\u062B\u0628\u064A\u062A \u0627\u0644\u0635\u0641 \u0641\u064A \u0627\u0644\u0623\u0633\u0641\u0644",unpinRow:"\u0625\u0644\u063A\u0627\u0621 \u062A\u062B\u0628\u064A\u062A \u0627\u0644\u0635\u0641",findLabel:"\u0627\u0644\u0628\u062D\u062B \u0641\u064A \u0627\u0644\u062C\u062F\u0648\u0644",findPrevious:"\u0627\u0644\u0645\u0637\u0627\u0628\u0642\u0629 \u0627\u0644\u0633\u0627\u0628\u0642\u0629",findNext:"\u0627\u0644\u0645\u0637\u0627\u0628\u0642\u0629 \u0627\u0644\u062A\u0627\u0644\u064A\u0629",findClose:"\u0625\u063A\u0644\u0627\u0642 \u0627\u0644\u0628\u062D\u062B",findCount:"{n} \u0645\u0646 {count}",findNone:"\u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u0637\u0627\u0628\u0642\u0627\u062A",renameColumn:"\u0625\u0639\u0627\u062F\u0629 \u062A\u0633\u0645\u064A\u0629 \u0627\u0644\u0639\u0645\u0648\u062F",fixedPosition:"\u062A\u0639\u064A\u064A\u0646 \u0645\u0648\u0636\u0639 \u062B\u0627\u0628\u062A",pinLeft:"\u064A\u0633\u0627\u0631",pinRight:"\u064A\u0645\u064A\u0646",pinSticky:"\u0645\u062B\u0628\u0651\u062A",unpin:"\u0625\u0644\u063A\u0627\u0621 \u0627\u0644\u062A\u062B\u0628\u064A\u062A",moveLeft:"\u0627\u0646\u062A\u0642\u0627\u0644 \u0644\u0644\u064A\u0633\u0627\u0631",moveRight:"\u0627\u0646\u062A\u0642\u0627\u0644 \u0644\u0644\u064A\u0645\u064A\u0646",filterPlaceholder:"\u062A\u0635\u0641\u064A\u0629\u2026",filterColumnAria:"\u062A\u0635\u0641\u064A\u0629 {column}",filterOperatorDefault:"\u0627\u0641\u062A\u0631\u0627\u0636\u064A",filterOperatorAria:"\u0639\u0627\u0645\u0644 \u0627\u0644\u062A\u0635\u0641\u064A\u0629 \u0644\u0640 {column}",filterSelectAll:"\u062A\u062D\u062F\u064A\u062F \u0627\u0644\u0643\u0644",filterBlank:"(\u0641\u0627\u0631\u063A)",filterNonBlank:"(\u063A\u064A\u0631 \u0641\u0627\u0631\u063A)",filterEmptyText:"(\u0646\u0635 \u0641\u0627\u0631\u063A)",filterSpace:"(\u0645\u0633\u0627\u0641\u0629 \u0648\u0627\u062D\u062F\u0629)",filterSpaces:"(\u0639\u062F\u062F \u0627\u0644\u0645\u0633\u0627\u0641\u0627\u062A: {n})",filterNoMatch:"\u0644\u0627 \u062A\u0648\u062C\u062F \u0642\u064A\u0645 \u0645\u0637\u0627\u0628\u0642\u0629",filterLoading:"\u062C\u0627\u0631\u064A \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0642\u064A\u0645\u2026",filterTruncated:"\u062A\u064F\u0639\u0631\u0636 \u0627\u0644\u0642\u064A\u0645 \u0627\u0644\u0623\u0648\u0644\u0649 \u0641\u0642\u0637 \u2014 \u0627\u0633\u062A\u062E\u062F\u0645 \u0627\u0644\u0628\u062D\u062B \u0644\u0644\u0639\u062B\u0648\u0631 \u0639\u0644\u0649 \u0627\u0644\u0628\u0642\u064A\u0629.",filterRemove:"\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u062A\u0635\u0641\u064A\u0629",filterToggle:"\u062A\u0637\u0628\u064A\u0642 \u0627\u0644\u062A\u0635\u0641\u064A\u0629",filterEditBuilder:"\u062A\u0639\u062F\u064A\u0644 \u0627\u0644\u062A\u0635\u0641\u064A\u0629",filterNone:"\u0644\u0627 \u062A\u0648\u062C\u062F \u062A\u0635\u0641\u064A\u0629",filterActive:"\u0627\u0644\u062A\u0635\u0641\u064A\u0629 \u0645\u0641\u0639\u0651\u0644\u0629",opEquals:"\u064A\u0633\u0627\u0648\u064A",opNotEquals:"\u0644\u0627 \u064A\u0633\u0627\u0648\u064A",opGreater:">",opGreaterOrEqual:"\u2265",opLess:"<",opLessOrEqual:"\u2264",opContains:"\u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649",opNotContains:"\u0644\u0627 \u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649",opStartsWith:"\u064A\u0628\u062F\u0623 \u0628\u0640",opEndsWith:"\u064A\u0646\u062A\u0647\u064A \u0628\u0640",opIsBlank:"\u0641\u0627\u0631\u063A",opIsNotBlank:"\u063A\u064A\u0631 \u0641\u0627\u0631\u063A",opIsOneOf:"\u0648\u0627\u062D\u062F \u0645\u0646",opIsBetween:"\u0628\u064A\u0646",opValuesCount:"{n} \u0642\u064A\u0645\u0629",opInPeriod:"\u0636\u0645\u0646 \u0627\u0644\u0641\u062A\u0631\u0629",periodToday:"\u0627\u0644\u064A\u0648\u0645",periodYesterday:"\u0623\u0645\u0633",periodTomorrow:"\u063A\u062F\u064B\u0627",periodThisWeek:"\u0647\u0630\u0627 \u0627\u0644\u0623\u0633\u0628\u0648\u0639",periodLastWeek:"\u0627\u0644\u0623\u0633\u0628\u0648\u0639 \u0627\u0644\u0645\u0627\u0636\u064A",periodNextWeek:"\u0627\u0644\u0623\u0633\u0628\u0648\u0639 \u0627\u0644\u0642\u0627\u062F\u0645",periodThisMonth:"\u0647\u0630\u0627 \u0627\u0644\u0634\u0647\u0631",periodLastMonth:"\u0627\u0644\u0634\u0647\u0631 \u0627\u0644\u0645\u0627\u0636\u064A",periodNextMonth:"\u0627\u0644\u0634\u0647\u0631 \u0627\u0644\u0642\u0627\u062F\u0645",periodThisQuarter:"\u0647\u0630\u0627 \u0627\u0644\u0631\u0628\u0639",periodLastQuarter:"\u0627\u0644\u0631\u0628\u0639 \u0627\u0644\u0645\u0627\u0636\u064A",periodNextQuarter:"\u0627\u0644\u0631\u0628\u0639 \u0627\u0644\u0642\u0627\u062F\u0645",periodThisYear:"\u0647\u0630\u0627 \u0627\u0644\u0639\u0627\u0645",periodLastYear:"\u0627\u0644\u0639\u0627\u0645 \u0627\u0644\u0645\u0627\u0636\u064A",periodNextYear:"\u0627\u0644\u0639\u0627\u0645 \u0627\u0644\u0642\u0627\u062F\u0645",periodYearToDate:"\u0645\u0646\u0630 \u0628\u062F\u0627\u064A\u0629 \u0627\u0644\u0639\u0627\u0645",periodLastDays:"\u0622\u062E\u0631 {n} \u064A\u0648\u0645",periodNextDays:"\u0627\u0644\u0640 {n} \u064A\u0648\u0645 \u0627\u0644\u0642\u0627\u062F\u0645\u0629",filterAnd:"\u0648",filterOr:"\u0623\u0648",builderTitle:"\u0645\u0646\u0634\u0626 \u0627\u0644\u062A\u0635\u0641\u064A\u0629",builderCombine:"\u062F\u0645\u062C \u0627\u0644\u0634\u0631\u0648\u0637 \u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645",builderAddCondition:"\u0625\u0636\u0627\u0641\u0629 \u0634\u0631\u0637",builderAddGroup:"\u0625\u0636\u0627\u0641\u0629 \u0645\u062C\u0645\u0648\u0639\u0629",builderRemoveGroup:"\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629",builderRemoveCondition:"\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0634\u0631\u0637",builderEmpty:"\u0644\u0627 \u062A\u0648\u062C\u062F \u0634\u0631\u0648\u0637 \u0628\u0639\u062F.",builderColumn:"\u0627\u0644\u0639\u0645\u0648\u062F",builderOperator:"\u0627\u0644\u0645\u064F\u0639\u0627\u0645\u0644",builderValue:"\u0627\u0644\u0642\u064A\u0645\u0629",builderValueFrom:"\u0645\u0646",builderValueTo:"\u0625\u0644\u0649",builderValuePlaceholder:"\u0623\u062F\u062E\u0644 \u0642\u064A\u0645\u0629",builderOpen:"\u0645\u0646\u0634\u0626 \u0627\u0644\u0645\u0631\u0634\u062D\u0627\u062A\u2026",builderClearAll:"\u0645\u0633\u062D \u0627\u0644\u0643\u0644",builderConditionButton:"+ \u0634\u0631\u0637",builderGroupButton:"+ \u0645\u062C\u0645\u0648\u0639\u0629",builderTrue:"\u0635\u062D\u064A\u062D",builderFalse:"\u062E\u0637\u0623",builderPeriod:"\u0627\u0644\u0641\u062A\u0631\u0629",builderDays:"\u0627\u0644\u0623\u064A\u0627\u0645",filterCustom:"(\u0645\u062E\u0635\u0635\u2026)",filterPopupAria:"\u0645\u0631\u0634\u062D {column}",importOpen:"\u0627\u0633\u062A\u064A\u0631\u0627\u062F\u2026",groupPanelHint:"\u0627\u0633\u062D\u0628 \u0639\u0645\u0648\u062F\u064B\u0627 \u0625\u0644\u0649 \u0647\u0646\u0627 \u0644\u0644\u062A\u062C\u0645\u064A\u0639 \u062D\u0633\u0628\u0647",groupAddLevel:"\u0625\u0636\u0627\u0641\u0629 \u0645\u0633\u062A\u0648\u0649 \u062A\u062C\u0645\u064A\u0639",groupAddLevelButton:"+ \u0625\u0636\u0627\u0641\u0629 \u0645\u0633\u062A\u0648\u0649\u2026",groupNoGrouping:"(\u0628\u062F\u0648\u0646 \u062A\u062C\u0645\u064A\u0639)",groupLevelAria:"\u0645\u0633\u062A\u0648\u0649 \u0627\u0644\u062A\u062C\u0645\u064A\u0639 {n}",groupRemoveAria:"\u0625\u0632\u0627\u0644\u0629 {column}",groupExpandAll:"\u062A\u0648\u0633\u064A\u0639 \u0627\u0644\u0643\u0644",groupCollapseAll:"\u0637\u064A \u0627\u0644\u0643\u0644",pagerFirst:"\u0627\u0644\u0635\u0641\u062D\u0629 \u0627\u0644\u0623\u0648\u0644\u0649",pagerPrevious:"\u0627\u0644\u0635\u0641\u062D\u0629 \u0627\u0644\u0633\u0627\u0628\u0642\u0629",pagerNext:"\u0627\u0644\u0635\u0641\u062D\u0629 \u0627\u0644\u062A\u0627\u0644\u064A\u0629",pagerLast:"\u0627\u0644\u0635\u0641\u062D\u0629 \u0627\u0644\u0623\u062E\u064A\u0631\u0629",pagerPage:"\u0635\u0641\u062D\u0629",pagerOf:"\u0645\u0646",pagerRowsPerPage:"\u0635\u0641\u0648\u0641 \u0644\u0643\u0644 \u0635\u0641\u062D\u0629",pagerAria:"\u062A\u0631\u0642\u064A\u0645 \u0627\u0644\u0635\u0641\u062D\u0627\u062A",pagerPageButton:"\u0627\u0644\u0635\u0641\u062D\u0629 {n}",selectAllRows:"\u062A\u062D\u062F\u064A\u062F \u0643\u0644 \u0627\u0644\u0635\u0641\u0648\u0641",selectRowAria:"\u062A\u062D\u062F\u064A\u062F \u0627\u0644\u0635\u0641 {row}",selectGroupAria:"\u062A\u062D\u062F\u064A\u062F \u0635\u0641\u0648\u0641 {group} \u0648\u0639\u062F\u062F\u0647\u0627 {count}",summaryAria:"\u0645\u0644\u062E\u0635",columnTotalsAria:"\u0625\u062C\u0645\u0627\u0644\u064A\u0627\u062A \u0627\u0644\u0623\u0639\u0645\u062F\u0629",rowActions:"\u0625\u062C\u0631\u0627\u0621\u0627\u062A \u0627\u0644\u0635\u0641",detailsAria:"\u0627\u0644\u062A\u0641\u0627\u0635\u064A\u0644",rowNumberAria:"\u0631\u0642\u0645 \u0627\u0644\u0635\u0641",noteEditorAria:"\u0645\u0644\u0627\u062D\u0638\u0629 \u0627\u0644\u062E\u0644\u064A\u0629",notePlaceholder:"\u0627\u0643\u062A\u0628 \u0645\u0644\u0627\u062D\u0638\u0629 \u062D\u0648\u0644 \u0647\u0630\u0647 \u0627\u0644\u062E\u0644\u064A\u0629\u2026",addNote:"\u0625\u0636\u0627\u0641\u0629 \u0645\u0644\u0627\u062D\u0638\u0629\u2026",editNote:"\u062A\u0639\u062F\u064A\u0644 \u0627\u0644\u0645\u0644\u0627\u062D\u0638\u0629\u2026",deleteNote:"\u062D\u0630\u0641 \u0627\u0644\u0645\u0644\u0627\u062D\u0638\u0629",expandDetails:"\u062A\u0648\u0633\u064A\u0639 \u0627\u0644\u062A\u0641\u0627\u0635\u064A\u0644",collapseDetails:"\u0637\u064A \u0627\u0644\u062A\u0641\u0627\u0635\u064A\u0644",expandTreeRow:"\u062A\u0648\u0633\u064A\u0639 \u0627\u0644\u0635\u0641",collapseTreeRow:"\u0637\u064A \u0627\u0644\u0635\u0641",expandColumnGroup:"\u062A\u0648\u0633\u064A\u0639 \u0645\u062C\u0645\u0648\u0639\u0629 \u0627\u0644\u0623\u0639\u0645\u062F\u0629",collapseColumnGroup:"\u0637\u064A \u0645\u062C\u0645\u0648\u0639\u0629 \u0627\u0644\u0623\u0639\u0645\u062F\u0629",dragToReorder:"\u0627\u0633\u062D\u0628 \u0644\u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u062A\u0631\u062A\u064A\u0628",menuCopy:"\u0646\u0633\u062E",menuCopyWithHeaders:"\u0646\u0633\u062E \u0645\u0639 \u0627\u0644\u0639\u0646\u0627\u0648\u064A\u0646",menuCopyWithGroupHeaders:"\u0646\u0633\u062E \u0645\u0639 \u0639\u0646\u0627\u0648\u064A\u0646 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0627\u062A",menuCut:"\u0642\u0635",menuPaste:"\u0644\u0635\u0642",menuExport:"\u062A\u0635\u062F\u064A\u0631",menuChartRange:"\u0631\u0633\u0645 \u0628\u064A\u0627\u0646\u064A \u0644\u0644\u062E\u0644\u0627\u064A\u0627 \u0627\u0644\u0645\u062D\u062F\u062F\u0629",statsSum:"\u0645\u062C\u0645\u0648\u0639",statsCount:"\u0627\u0644\u0639\u062F\u062F",statsAvg:"\u0645\u062A\u0648\u0633\u0637",statsMin:"\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u062F\u0646\u0649",statsMax:"\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649",statsCells:"\u0627\u0644\u062E\u0644\u0627\u064A\u0627",statsTooLarge:"\u0627\u0644\u062A\u062D\u062F\u064A\u062F \u0623\u0643\u0628\u0631 \u0645\u0646 \u0623\u0646 \u064A\u064F\u062C\u0645\u0639",statusRows:"\u0627\u0644\u0635\u0641\u0648\u0641",statusFiltered:"\u0645\u0635\u0641\u0651\u0649",statusSelected:"\u0645\u062D\u062F\u062F",summaryRows:"\u0635\u0641\u0648\u0641",announceRows:"{n} \u0635\u0641\u0648\u0641",announceSortedBy:"\u0645\u0631\u062A\u0628\u0629 \u062D\u0633\u0628 {columns}",announceSelected:"{n} \u0645\u062D\u062F\u062F\u0629",announceAscending:"\u062A\u0635\u0627\u0639\u062F\u064A",announceDescending:"\u062A\u0646\u0627\u0632\u0644\u064A",sideFilters:"\u0639\u0648\u0627\u0645\u0644 \u0627\u0644\u062A\u0635\u0641\u064A\u0629",sideBarAria:"\u0644\u0648\u062D\u0627\u062A \u0627\u0644\u0623\u062F\u0648\u0627\u062A",sideClearFilters:"\u0645\u0633\u062D \u0643\u0644 \u0639\u0648\u0627\u0645\u0644 \u0627\u0644\u062A\u0635\u0641\u064A\u0629",summarySum:"\u0645\u062C\u0645\u0648\u0639",summaryAvg:"\u0645\u062A\u0648\u0633\u0637",summaryMin:"\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u062F\u0646\u0649",summaryMax:"\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649",summaryCount:"\u0627\u0644\u0639\u062F\u062F",summaryDistinct:"\u0627\u0644\u0642\u064A\u0645 \u0627\u0644\u0641\u0631\u064A\u062F\u0629",summaryCustom:"\u0645\u062E\u0635\u0635",noTotal:"\u0644\u0627 \u064A\u0648\u062C\u062F \u0625\u062C\u0645\u0627\u0644\u064A",busy:"\u062C\u0627\u0631\u064A \u0627\u0644\u0639\u0645\u0644\u2026",busyLoading:"\u062C\u0627\u0631\u064A \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0635\u0641\u0648\u0641\u2026",rowsLoadFailed:"\u062A\u0639\u0630\u0651\u0631 \u062A\u062D\u0645\u064A\u0644 \u0647\u0630\u0647 \u0627\u0644\u0635\u0641\u0648\u0641.",retryLoad:"\u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629",busyEncoding:"\u062C\u0627\u0631\u064A \u062A\u062D\u0636\u064A\u0631 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A\u2026",busyFiltering:"\u062C\u0627\u0631\u064A \u062A\u0635\u0641\u064A\u0629 \u0627\u0644\u0635\u0641\u0648\u0641\u2026",busySorting:"\u062C\u0627\u0631\u064A \u0641\u0631\u0632 \u0627\u0644\u0635\u0641\u0648\u0641\u2026",busyComputing:"\u062C\u0627\u0631\u064A \u0627\u0644\u062A\u0635\u0641\u064A\u0629 \u0648\u0627\u0644\u0641\u0631\u0632\u2026",busyGrouping:"\u062C\u0627\u0631\u064A \u0625\u0646\u0634\u0627\u0621 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0627\u062A\u2026",busyAggregating:"\u062C\u0627\u0631\u064A \u062D\u0633\u0627\u0628 \u0627\u0644\u0625\u062C\u0645\u0627\u0644\u064A\u0627\u062A\u2026",busyProjecting:"\u062C\u0627\u0631\u064A \u062A\u062D\u062F\u064A\u062B \u0627\u0644\u0639\u0631\u0636\u2026",busyExporting:"\u062C\u0627\u0631\u064A \u0625\u0646\u0634\u0627\u0621 \u0627\u0644\u0645\u0644\u0641\u2026",noData:"\u0644\u0645 \u064A\u062A\u0645 \u0627\u0644\u0639\u062B\u0648\u0631 \u0639\u0644\u0649 \u0628\u064A\u0627\u0646\u0627\u062A",editNewRow:"\u0635\u0641 \u062C\u062F\u064A\u062F",editSaveChanges:"\u062D\u0641\u0638 \u0627\u0644\u062A\u063A\u064A\u064A\u0631\u0627\u062A",editDiscardChanges:"\u062A\u062C\u0627\u0647\u0644 \u0627\u0644\u062A\u063A\u064A\u064A\u0631\u0627\u062A",editRow:"\u062A\u0639\u062F\u064A\u0644 \u0627\u0644\u0635\u0641",editRowMenu:"\u062A\u0639\u062F\u064A\u0644 \u0627\u0644\u0635\u0641\u2026",editDeleteRow:"\u062D\u0630\u0641 \u0627\u0644\u0635\u0641",editUndoDelete:"\u062A\u0631\u0627\u062C\u0639 \u0639\u0646 \u0627\u0644\u062D\u0630\u0641",editActions:"\u0627\u0644\u0625\u062C\u0631\u0627\u0621\u0627\u062A",editSaveRow:"\u062D\u0641\u0638 \u0627\u0644\u0635\u0641",editSaving:"\u062C\u0627\u0631\u064A \u0627\u0644\u062D\u0641\u0638\u2026",editEditingRow:"\u062C\u0627\u0631\u064A \u062A\u0639\u062F\u064A\u0644 \u0627\u0644\u0635\u0641 {row}",editSaveCount:"\u062D\u0641\u0638 {n} \u0635\u0641",editCannotSave:"\u062A\u0639\u0630\u0651\u0631 \u0627\u0644\u062D\u0641\u0638",editSaveFailed:"\u062A\u0639\u0630\u0651\u0631 \u062D\u0641\u0638 \u0627\u0644\u062A\u063A\u064A\u064A\u0631\u0627\u062A.",rowStatusNew:"\u0635\u0641 \u062C\u062F\u064A\u062F \u063A\u064A\u0631 \u0645\u062D\u0641\u0648\u0638",rowStatusChanged:"\u062A\u063A\u064A\u064A\u0631\u0627\u062A \u063A\u064A\u0631 \u0645\u062D\u0641\u0648\u0638\u0629",rowStatusRemoved:"\u0645\u062D\u062F\u062F \u0644\u0644\u062D\u0630\u0641",rowStatusSaving:"\u062C\u0627\u0631\u064D \u0627\u0644\u062D\u0641\u0638\u2026",rowStatusSaved:"\u062A\u0645 \u0627\u0644\u062D\u0641\u0638",rowStatusError:"\u062A\u0639\u0630\u0651\u0631 \u0627\u0644\u062D\u0641\u0638",rowStatusRetry:"\u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629",rowStatusDelete:"\u062D\u0630\u0641 \u0627\u0644\u0635\u0641",editDeleteConfirm:"\u0647\u0644 \u062A\u0631\u064A\u062F \u062D\u0630\u0641 \u0647\u0630\u0627 \u0627\u0644\u0635\u0641\u061F",editAddRowUndo:"\u0625\u0636\u0627\u0641\u0629 \u0635\u0641",editDeleteRowUndo:"\u062D\u0630\u0641 \u0635\u0641",editCellUndo:"\u062A\u062D\u0631\u064A\u0631 {column}",editFillUndo:"\u062A\u0639\u0628\u0626\u0629 {count} \u062E\u0644\u064A\u0629",editPasteUndo:"\u0644\u0635\u0642 {count} \u062E\u0644\u064A\u0629",editCutUndo:"\u0642\u0635 {count} \u062E\u0644\u064A\u0629",editGroupTotal:"\u0625\u062C\u0645\u0627\u0644\u064A \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629",editGroupTotalUndo:"\u062A\u063A\u064A\u064A\u0631 \u0625\u062C\u0645\u0627\u0644\u064A {column} ({count} \u0635\u0641\u0648\u0641)",editNoMatch:"\u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u0637\u0627\u0628\u0642\u0629",formEditTitle:"\u062A\u0639\u062F\u064A\u0644 \u0627\u0644\u0635\u0641",formAddTitle:"\u0635\u0641 \u062C\u062F\u064A\u062F",formShortcut:"{key}+Enter \u0644\u0644\u062D\u0641\u0638 \xB7 Esc \u0644\u0644\u0625\u0644\u063A\u0627\u0621",validationRequired:"\u0647\u0630\u0627 \u0627\u0644\u062D\u0642\u0644 \u0645\u0637\u0644\u0648\u0628",validationNumber:"\u064A\u062C\u0628 \u0623\u0646 \u064A\u0643\u0648\u0646 \u0631\u0642\u0645\u064B\u0627",validationNumberLocale:"\u0644\u064A\u0633 \u0631\u0642\u0645\u064B\u0627 \u0635\u0627\u0644\u062D\u064B\u0627. \u0627\u0643\u062A\u0628\u0647 \u0647\u0643\u0630\u0627: {example}",validationMin:"\u064A\u062C\u0628 \u0623\u0644\u0627 \u064A\u0642\u0644 \u0639\u0646 {min}",validationMax:"\u064A\u062C\u0628 \u0623\u0644\u0627 \u064A\u0632\u064A\u062F \u0639\u0646 {max}",validationFormat:"\u062A\u0646\u0633\u064A\u0642 \u063A\u064A\u0631 \u0635\u0627\u0644\u062D",validationEmail:"\u0639\u0646\u0648\u0627\u0646 \u0628\u0631\u064A\u062F \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A \u063A\u064A\u0631 \u0635\u0627\u0644\u062D",validationInvalid:"\u0642\u064A\u0645\u0629 \u063A\u064A\u0631 \u0635\u0627\u0644\u062D\u0629",dateCalendar:"\u0627\u0644\u062A\u0642\u0648\u064A\u0645",dateOpenCalendar:"\u0641\u062A\u062D \u0627\u0644\u062A\u0642\u0648\u064A\u0645",datePreviousMonth:"\u0627\u0644\u0634\u0647\u0631 \u0627\u0644\u0633\u0627\u0628\u0642",dateNextMonth:"\u0627\u0644\u0634\u0647\u0631 \u0627\u0644\u062A\u0627\u0644\u064A",monthJanuary:"\u064A\u0646\u0627\u064A\u0631",monthFebruary:"\u0641\u0628\u0631\u0627\u064A\u0631",monthMarch:"\u0645\u0627\u0631\u0633",monthApril:"\u0623\u0628\u0631\u064A\u0644",monthMay:"\u0645\u0627\u064A\u0648",monthJune:"\u064A\u0648\u0646\u064A\u0648",monthJuly:"\u064A\u0648\u0644\u064A\u0648",monthAugust:"\u0623\u063A\u0633\u0637\u0633",monthSeptember:"\u0633\u0628\u062A\u0645\u0628\u0631",monthOctober:"\u0623\u0643\u062A\u0648\u0628\u0631",monthNovember:"\u0646\u0648\u0641\u0645\u0628\u0631",monthDecember:"\u062F\u064A\u0633\u0645\u0628\u0631",weekStartsOn:"6",weekdaySu:"\u0623\u062D\u062F",weekdayMo:"\u0625\u062B\u0646",weekdayTu:"\u062B\u0644\u0627",weekdayWe:"\u0623\u0631\u0628",weekdayTh:"\u062E\u0645\u064A",weekdayFr:"\u062C\u0645\u0639",weekdaySa:"\u0633\u0628\u062A",importTitle:"\u0627\u0633\u062A\u064A\u0631\u0627\u062F \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A",importStepSource:"\u0661. \u0627\u0644\u0645\u0635\u062F\u0631",importStepMap:"\u0662. \u0645\u0637\u0627\u0628\u0642\u0629 \u0627\u0644\u0623\u0639\u0645\u062F\u0629",importFile:"\u0645\u0644\u0641 CSV",importPaste:"\u2026\u0623\u0648 \u0627\u0644\u0635\u0642 \u0627\u0644\u0635\u0641\u0648\u0641",importSeparator:"\u0627\u0644\u0641\u0627\u0635\u0644",importSeparatorAuto:"\u0643\u0634\u0641 \u062A\u0644\u0642\u0627\u0626\u064A",importSeparatorComma:"\u0641\u0627\u0635\u0644\u0629 ,",importSeparatorSemicolon:"\u0641\u0627\u0635\u0644\u0629 \u0645\u0646\u0642\u0648\u0637\u0629 ;",importSeparatorTab:"\u0645\u0633\u0627\u0641\u0629 \u062C\u062F\u0648\u0644\u0629",importSeparatorPipe:"\u0634\u0631\u0637\u0629 \u0639\u0645\u0648\u062F\u064A\u0629 |",importFileColumn:"\u0639\u0645\u0648\u062F \u0627\u0644\u0645\u0644\u0641",importDetected:"\u0627\u0644\u0645\u0643\u062A\u0634\u0641",importGridColumn:"\u0639\u0645\u0648\u062F \u0627\u0644\u062C\u062F\u0648\u0644",importSample:"\u0639\u064A\u0646\u0629",importSkip:"\u2014 \u062A\u062E\u0637\u064D \u2014",importPreview:"\u0645\u0639\u0627\u064A\u0646\u0629",importNoSource:"\u0627\u062E\u062A\u0631 \u0645\u0644\u0641\u064B\u0627 \u0623\u0648\u0644\u064B\u0627 \u0623\u0648 \u0627\u0644\u0635\u0642 \u0628\u0639\u0636 \u0627\u0644\u0635\u0641\u0648\u0641.",importNoRows:"\u0644\u0645 \u064A\u062A\u0645 \u0627\u0644\u0639\u062B\u0648\u0631 \u0639\u0644\u0649 \u0635\u0641\u0648\u0641 \u0628\u064A\u0627\u0646\u0627\u062A.",importAction:"\u0627\u0633\u062A\u064A\u0631\u0627\u062F",exportAborted:"\u062A\u0645 \u0625\u0644\u063A\u0627\u0621 \u0627\u0644\u062A\u0635\u062F\u064A\u0631",exportSheetName:"\u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A",chart:"\u0627\u0644\u0631\u0633\u0645 \u0627\u0644\u0628\u064A\u0627\u0646\u064A",chartCategory:"\u0627\u0644\u0641\u0626\u0629",chartSeries:"\u0627\u0644\u0633\u0644\u0633\u0644\u0629",chartAddSeries:"\u0625\u0636\u0627\u0641\u0629 \u0633\u0644\u0633\u0644\u0629",chartRemoveSeries:"\u0625\u0632\u0627\u0644\u0629",chartSource:"\u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A",chartSourceView:"\u0627\u0644\u0635\u0641\u0648\u0641 \u0627\u0644\u0645\u0635\u0641\u0651\u0627\u0629",chartSourceSelection:"\u0627\u0644\u0635\u0641\u0648\u0641 \u0627\u0644\u0645\u062D\u062F\u062F\u0629",chartSourceAll:"\u0643\u0644 \u0627\u0644\u0635\u0641\u0648\u0641",chartSourceRange:"\u0627\u0644\u0646\u0637\u0627\u0642 \u0627\u0644\u0645\u062D\u062F\u062F (\u0627\u0644\u0635\u0641\u0648\u0641 {from}\u2013{to})",chartClose:"\u0625\u063A\u0644\u0627\u0642 \u0627\u0644\u0631\u0633\u0645 \u0627\u0644\u0628\u064A\u0627\u0646\u064A",chartFullscreen:"\u0645\u0644\u0621 \u0627\u0644\u0634\u0627\u0634\u0629",chartExitFullscreen:"\u0625\u0646\u0647\u0627\u0621 \u0645\u0644\u0621 \u0627\u0644\u0634\u0627\u0634\u0629",chartFloat:"\u0641\u0635\u0644 \u0641\u064A \u0646\u0627\u0641\u0630\u0629",chartDock:"\u0625\u0631\u0633\u0627\u0621",chartNewWindow:"\u0646\u0627\u0641\u0630\u0629 \u062C\u062F\u064A\u062F\u0629",chartMoveWindow:"\u0646\u0642\u0644 \u0646\u0627\u0641\u0630\u0629 \u0627\u0644\u0645\u062E\u0637\u0637",chartResizeWindow:"\u062A\u063A\u064A\u064A\u0631 \u062D\u062C\u0645 \u0646\u0627\u0641\u0630\u0629 \u0627\u0644\u0645\u062E\u0637\u0637",chartResizeDock:"\u0627\u0633\u062D\u0628 \u0644\u062A\u063A\u064A\u064A\u0631 \u0627\u0631\u062A\u0641\u0627\u0639 \u0627\u0644\u0645\u062E\u0637\u0637",chartSwitch:"\u062A\u0628\u062F\u064A\u0644 \u0627\u0644\u0641\u0626\u0627\u062A \u0648\u0627\u0644\u0633\u0644\u0627\u0633\u0644",chartUnlink:"\u0641\u0635\u0644",chartLink:"\u0631\u0628\u0637",chartUnlinked:"\u0645\u0641\u0635\u0648\u0644: \u064A\u062D\u062A\u0641\u0638 \u0627\u0644\u0645\u062E\u0637\u0637 \u0628\u0628\u064A\u0627\u0646\u0627\u062A\u0647 \u0648\u0644\u0645 \u064A\u0639\u062F \u064A\u062A\u0628\u0639 \u0627\u0644\u062C\u062F\u0648\u0644.",chartExportPng:"PNG",chartExportSvg:"SVG",chartExportFailed:"\u062A\u0639\u0630\u0651\u0631 \u062A\u0635\u062F\u064A\u0631 \u0627\u0644\u0631\u0633\u0645 \u0627\u0644\u0628\u064A\u0627\u0646\u064A.",chartCrossFiltered:"\u062A\u0645\u062A \u062A\u0635\u0641\u064A\u0629 \u0627\u0644\u062C\u062F\u0648\u0644 \u0625\u0644\u0649 {value}.",chartBlankCategory:"(\u0641\u0627\u0631\u063A)",chartTruncated:"\u064A\u062A\u0645 \u0639\u0631\u0636 \u0623\u0639\u0644\u0649 {n} \u0641\u0626\u0629\u061B \u0648\u0627\u0644\u0628\u0627\u0642\u064A \u0645\u062C\u0645\u0651\u0639 \u0636\u0645\u0646 \xAB\u0623\u062E\u0631\u0649\xBB.",chartOther:"\u0623\u062E\u0631\u0649",chartEmpty:"\u0644\u0627 \u064A\u0648\u062C\u062F \u0634\u064A\u0621 \u0644\u0639\u0631\u0636\u0647 \u0628\u0639\u062F.",chartNoVisibleSeries:"\u0644\u0627 \u062A\u0648\u062C\u062F \u0633\u0644\u0627\u0633\u0644 \u0645\u0631\u0626\u064A\u0629.",chartNeedsMoreSeries:"\u064A\u062A\u0637\u0644\u0628 \u0647\u0630\u0627 \u0627\u0644\u0646\u0648\u0639 \u0645\u0646 \u0627\u0644\u0645\u062E\u0637\u0637\u0627\u062A \u0639\u0645\u0648\u062F\u064E\u064A \u0642\u064A\u0645 \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644 (\u0645\u062B\u0644 \u0627\u0644\u0623\u062F\u0646\u0649 \u0648\u0627\u0644\u0623\u0639\u0644\u0649) \u2014 \u0623\u0636\u0641 \u0633\u0644\u0633\u0644\u0629 \u062B\u0627\u0646\u064A\u0629.",chartLoading:"\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0645\u064A\u0644\u2026",chartNeedsRecharts:"\u062A\u062D\u062A\u0627\u062C \u0627\u0644\u0631\u0633\u0648\u0645 \u0627\u0644\u0628\u064A\u0627\u0646\u064A\u0629 \u0625\u0644\u0649 \u062D\u0632\u0645\u0629 `recharts` \u0627\u0644\u0627\u062E\u062A\u064A\u0627\u0631\u064A\u0629. \u062B\u0628\u0651\u062A\u0647\u0627 \u0644\u0631\u0633\u0645\u0647\u0627.",chartOnlyOneSeries:"\u0647\u0630\u0627 \u0627\u0644\u0646\u0648\u0639 \u0645\u0646 \u0627\u0644\u0631\u0633\u0648\u0645 \u064A\u0639\u0631\u0636 \u0633\u0644\u0633\u0644\u0629 \u0648\u0627\u062D\u062F\u0629.",chartByColumn:"\u0631\u0633\u0645 \u0628\u064A\u0627\u0646\u064A \u062D\u0633\u0628 \u0647\u0630\u0627 \u0627\u0644\u0639\u0645\u0648\u062F",chartGroupBy:"\u062D\u0633\u0628",chartGroupNone:"\u0643\u0644 \u0642\u064A\u0645\u0629",chartGroupAuto:"\u062A\u0644\u0642\u0627\u0626\u064A",chartGroupDay:"\u064A\u0648\u0645",chartGroupWeek:"\u0623\u0633\u0628\u0648\u0639",chartGroupMonth:"\u0634\u0647\u0631",chartGroupQuarter:"\u0631\u0628\u0639",chartGroupYear:"\u0633\u0646\u0629",chartGroupBins:"{n} \u0641\u0626\u0629",chartBucketAdjusted:"\u0639\u062F\u062F \u0627\u0644\u0641\u0648\u0627\u0635\u0644 \u0623\u0643\u0628\u0631 \u0645\u0646 \u0623\u0646 \u064A\u062A\u0633\u0639 \u0644\u0645\u062D\u0648\u0631 \u0648\u0627\u062D\u062F \u2014 \u062A\u0645 \u0627\u0644\u062A\u062C\u0645\u064A\u0639 \u0628\u0634\u0643\u0644 \u0623\u0648\u0633\u0639.",chartWindowed:"\u064A\u062A\u0645 \u0639\u0631\u0636 {shown} \u0645\u0646 {total}.",chartShowAll:"\u0639\u0631\u0636 \u0627\u0644\u0643\u0644",chartCanvasHint:"\u0631\u0633\u0645 \u0628\u064A\u0627\u0646\u064A. \u0645\u0631\u0651\u0631 \u0644\u0644\u062A\u0643\u0628\u064A\u0631\u060C \u0627\u0633\u062D\u0628 \u0644\u0644\u062A\u062D\u0631\u064A\u0643\u060C \u0627\u0633\u062A\u062E\u062F\u0645 \u0627\u0644\u0623\u0633\u0647\u0645 \u0644\u0644\u062A\u0646\u0642\u0644\u060C \u06480 \u0644\u0639\u0631\u0636 \u0627\u0644\u0643\u0644.",chartCanvasHintPick:"\u0631\u0633\u0645 \u0628\u064A\u0627\u0646\u064A. \u062A\u062E\u062A\u0627\u0631 \u0627\u0644\u0623\u0633\u0647\u0645 \u0641\u0626\u0629\u060C \u0648\u064A\u0635\u0641\u0651\u064A Enter \u0623\u0648 \u0627\u0644\u0645\u0633\u0627\u0641\u0629 \u0627\u0644\u062C\u062F\u0648\u0644 \u0628\u0647\u0627 (Ctrl \u064A\u0636\u064A\u0641 \u0641\u0626\u0629)\u060C \u0648+ \u0648\u2212 \u0644\u0644\u062A\u0643\u0628\u064A\u0631\u060C \u06480 \u0644\u0639\u0631\u0636 \u0627\u0644\u0643\u0644.",chartCategoryFocus:"{category}: {values} \u2014 {position} \u0645\u0646 {count}",chartCategoryFiltered:"\u064A\u0635\u0641\u0651\u064A \u0627\u0644\u062C\u062F\u0648\u0644",chartAggSum:"\u0645\u062C\u0645\u0648\u0639",chartAggAvg:"\u0645\u062A\u0648\u0633\u0637",chartAggMin:"\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u062F\u0646\u0649",chartAggMax:"\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649",chartAggCount:"\u0627\u0644\u0639\u062F\u062F",chartAggDistinct:"\u0627\u0644\u0642\u064A\u0645 \u0627\u0644\u0641\u0631\u064A\u062F\u0629",chartAggFirst:"\u0627\u0644\u0623\u0648\u0644",chartAggLast:"\u0627\u0644\u0623\u062E\u064A\u0631",chartTypeColumn:"\u0623\u0639\u0645\u062F\u0629",chartTypeBar:"\u0623\u0634\u0631\u0637\u0629",chartTypeLine:"\u062E\u0637\u064A",chartTypeArea:"\u0645\u0633\u0627\u062D\u064A",chartTypePie:"\u062F\u0627\u0626\u0631\u064A",chartTypeDonut:"\u062D\u0644\u0642\u064A",chartStacking:"\u062A\u0631\u062A\u064A\u0628 \u0627\u0644\u0633\u0644\u0627\u0633\u0644",chartStackGrouped:"\u0645\u062C\u0645\u0651\u0639",chartStackStacked:"\u0645\u0643\u062F\u0651\u0633",chartStackNormalized:"\u0645\u0643\u062F\u0651\u0633 100%",chartFormat:"\u0627\u0644\u062A\u0646\u0633\u064A\u0642",chartFormatTitle:"\u0627\u0644\u0639\u0646\u0648\u0627\u0646",chartFormatCategoryAxis:"\u0639\u0646\u0648\u0627\u0646 \u0645\u062D\u0648\u0631 \u0627\u0644\u0641\u0626\u0627\u062A",chartFormatValueAxis:"\u0639\u0646\u0648\u0627\u0646 \u0645\u062D\u0648\u0631 \u0627\u0644\u0642\u064A\u0645",chartFormatLegend:"\u0648\u0633\u064A\u0644\u0629 \u0627\u0644\u0625\u064A\u0636\u0627\u062D",chartLegendTop:"\u0623\u0639\u0644\u0649",chartLegendBottom:"\u0623\u0633\u0641\u0644",chartLegendLeft:"\u064A\u0633\u0627\u0631",chartLegendRight:"\u064A\u0645\u064A\u0646",chartLegendNone:"\u0645\u062E\u0641\u064A\u0629",chartFormatDataLabels:"\u062A\u0633\u0645\u064A\u0627\u062A \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A",chartFormatScale:"\u0645\u0642\u064A\u0627\u0633 \u0627\u0644\u0642\u064A\u0645",chartScaleLinear:"\u062E\u0637\u064A",chartScaleLog:"\u0644\u0648\u063A\u0627\u0631\u064A\u062A\u0645\u064A",chartFormatTextSize:"\u062D\u062C\u0645 \u0627\u0644\u0646\u0635",chartFormatTextColor:"\u0644\u0648\u0646 \u0627\u0644\u0646\u0635",chartFormatDefault:"\u0627\u0641\u062A\u0631\u0627\u0636\u064A",chartFormatLabelAngle:"\u062A\u0633\u0645\u064A\u0627\u062A \u0627\u0644\u0641\u0626\u0627\u062A",chartAngleAuto:"\u062A\u0644\u0642\u0627\u0626\u064A",chartAngleFlat:"\u0623\u0641\u0642\u064A\u0629",chartFormatGridLines:"\u062E\u0637\u0648\u0637 \u0627\u0644\u0634\u0628\u0643\u0629",chartGridValue:"\u0645\u062D\u0648\u0631 \u0627\u0644\u0642\u064A\u0645",chartGridBoth:"\u0643\u0644\u0627 \u0627\u0644\u0645\u062D\u0648\u0631\u064A\u0646",chartGridNone:"\u0628\u0644\u0627",chartFormatGridDashed:"\u0634\u0628\u0643\u0629 \u0645\u062A\u0642\u0637\u0639\u0629",chartFormatLineWidth:"\u0633\u064F\u0645\u0643 \u0627\u0644\u062E\u0637",chartFormatLineDashed:"\u062E\u0637\u0648\u0637 \u0645\u062A\u0642\u0637\u0639\u0629",chartFormatFillOpacity:"\u0639\u062A\u0627\u0645\u0629 \u0627\u0644\u062A\u0639\u0628\u0626\u0629",chartFormatDateFormat:"\u062A\u0646\u0633\u064A\u0642 \u0627\u0644\u062A\u0627\u0631\u064A\u062E",chartFormatPalette:"\u0627\u0644\u0623\u0644\u0648\u0627\u0646",chartPaletteTheme:"\u0627\u0644\u0633\u0645\u0629",chartPaletteClassic:"\u0643\u0644\u0627\u0633\u064A\u0643\u064A\u0629",chartPaletteColorblind:"\u0645\u0646\u0627\u0633\u0628\u0629 \u0644\u0639\u0645\u0649 \u0627\u0644\u0623\u0644\u0648\u0627\u0646",chartPaletteVivid:"\u0632\u0627\u0647\u064A\u0629",chartPaletteMonochrome:"\u0644\u0648\u0646 \u0648\u0627\u062D\u062F",sparklineSummary:"{count} \u0642\u064A\u0645\u0629 \u0645\u0646 {min} \u0625\u0644\u0649 {max}\u060C \u0627\u0644\u0623\u062E\u064A\u0631\u0629 {last}",chartTypeWaterfall:"\u0634\u0644\u0627\u0644",chartTypeFunnel:"\u0642\u0645\u0639",chartTypeTreemap:"\u062E\u0631\u064A\u0637\u0629 \u0634\u062C\u0631\u064A\u0629",chartTypeHeatmap:"\u062E\u0631\u064A\u0637\u0629 \u062D\u0631\u0627\u0631\u064A\u0629",chartTypeBox:"\u0645\u062E\u0637\u0637 \u0627\u0644\u0635\u0646\u062F\u0648\u0642",chartTypeRadar:"\u0631\u0627\u062F\u0627\u0631",chartTypeRangeBar:"\u0646\u0637\u0627\u0642",chartBoxQ1:"\u0627\u0644\u0631\u0628\u064A\u0639 \u0627\u0644\u0623\u0648\u0644",chartBoxMedian:"\u0627\u0644\u0648\u0633\u064A\u0637",chartBoxQ3:"\u0627\u0644\u0631\u0628\u064A\u0639 \u0627\u0644\u062B\u0627\u0644\u062B",chartBoxOutlier:"\u0642\u064A\u0645\u0629 \u0634\u0627\u0630\u0629",chartTotal:"\u0627\u0644\u0625\u062C\u0645\u0627\u0644\u064A",chartTypeScatter:"\u0645\u0628\u0639\u062B\u0631",chartTypeBubble:"\u0641\u0642\u0627\u0639\u064A",chartXAxis:"\u0627\u0644\u0645\u062D\u0648\u0631 X",chartBubbleSize:"\u0627\u0644\u062D\u062C\u0645",chartXYSampled:"{shown} \u0645\u0646 {total} \u0646\u0642\u0637\u0629\u060C \u0628\u0639\u064A\u0646\u0629 \u0645\u0646\u062A\u0638\u0645\u0629",licenseMissing:"\u063A\u064A\u0631 \u0645\u0631\u062E\u0651\u0635",licenseExpired:"\u0627\u0646\u062A\u0647\u062A \u0635\u0644\u0627\u062D\u064A\u0629 \u0627\u0644\u062A\u0631\u062E\u064A\u0635",licenseReleaseNotCovered:"\u0647\u0630\u0627 \u0627\u0644\u0625\u0635\u062F\u0627\u0631 \u063A\u064A\u0631 \u0645\u0634\u0645\u0648\u0644 \u0628\u0627\u0644\u062A\u0631\u062E\u064A\u0635",licenseDomainMismatch:"\u0627\u0644\u062A\u0631\u062E\u064A\u0635 \u063A\u064A\u0631 \u0635\u0627\u0644\u062D \u0644\u0647\u0630\u0627 \u0627\u0644\u0646\u0637\u0627\u0642",licenseRevoked:"\u062A\u0645 \u0625\u0644\u063A\u0627\u0621 \u0627\u0644\u062A\u0631\u062E\u064A\u0635",licenseInvalidFormat:"\u0635\u064A\u063A\u0629 \u0645\u0641\u062A\u0627\u062D \u0627\u0644\u062A\u0631\u062E\u064A\u0635 \u063A\u064A\u0631 \u0635\u062D\u064A\u062D\u0629",licenseInvalidSignature:"\u062A\u0648\u0642\u064A\u0639 \u0627\u0644\u062A\u0631\u062E\u064A\u0635 \u063A\u064A\u0631 \u0635\u0627\u0644\u062D",licenseEngineUnavailable:"\u0644\u0627 \u064A\u0633\u062A\u0637\u064A\u0639 \u0627\u0644\u0645\u062A\u0635\u0641\u062D \u0627\u0644\u062A\u062D\u0642\u0642 \u0645\u0646 \u0627\u0644\u062A\u0631\u062E\u064A\u0635 (\u064A\u0644\u0632\u0645 HTTPS)",calcAdd:"\u0625\u0636\u0627\u0641\u0629 \u0639\u0645\u0648\u062F \u0645\u062D\u0633\u0648\u0628\u2026",calcEdit:"\u062A\u0639\u062F\u064A\u0644 \u0627\u0644\u0639\u0645\u0648\u062F \u0627\u0644\u0645\u062D\u0633\u0648\u0628\u2026",calcRemove:"\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0639\u0645\u0648\u062F \u0627\u0644\u0645\u062D\u0633\u0648\u0628",calcTitleAdd:"\u0625\u0636\u0627\u0641\u0629 \u0639\u0645\u0648\u062F \u0645\u062D\u0633\u0648\u0628",calcTitleEdit:"\u062A\u0639\u062F\u064A\u0644 \u0627\u0644\u0639\u0645\u0648\u062F \u0627\u0644\u0645\u062D\u0633\u0648\u0628",calcName:"\u0627\u0644\u0627\u0633\u0645",calcFormula:"\u0627\u0644\u0635\u064A\u063A\u0629",calcFormulaHint:"\u0627\u0643\u062A\u0628 \u0627\u0644\u0639\u0645\u0648\u062F \u0647\u0643\u0630\u0627 [\u0627\u0644\u0627\u0633\u0645]. \u0645\u062B\u0627\u0644: [\u0627\u0644\u0633\u0639\u0631] * [\u0627\u0644\u0643\u0645\u064A\u0629]",calcColumns:"\u0627\u0644\u0623\u0639\u0645\u062F\u0629",calcFunctions:"\u0627\u0644\u062F\u0648\u0627\u0644",calcPreview:"\u0645\u0639\u0627\u064A\u0646\u0629",calcPreviewEmpty:"\u0644\u0627 \u062A\u0648\u062C\u062F \u0635\u0641\u0648\u0641 \u0644\u0644\u0645\u0639\u0627\u064A\u0646\u0629",calcErrorAt:"{message} (\u0627\u0644\u062D\u0631\u0641 {position})",calcAddButton:"\u0625\u0636\u0627\u0641\u0629",calcArgsAtLeast:"{min} \u0623\u0648 \u0623\u0643\u062B\u0631",formulaError_empty:"\u0627\u0643\u062A\u0628 \u0635\u064A\u063A\u0629",formulaError_unclosedText:'\u0627\u0644\u0646\u0635 \u063A\u064A\u0631 \u0645\u063A\u0644\u0642: \u064A\u0646\u0642\u0635 "',formulaError_unclosedColumn:"\u0627\u0633\u0645 \u0627\u0644\u0639\u0645\u0648\u062F \u063A\u064A\u0631 \u0645\u063A\u0644\u0642: \u064A\u0646\u0642\u0635 ]",formulaError_emptyColumn:"\u0627\u0633\u0645 \u0639\u0645\u0648\u062F \u0641\u0627\u0631\u063A []",formulaError_unexpectedChar:"\u062D\u0631\u0641 \u063A\u064A\u0631 \u0645\u062A\u0648\u0642\u0639 {text}",formulaError_expected:"\u064A\u0646\u0642\u0635 {text}",formulaError_cellAfterColon:'\u062A\u0646\u0642\u0635 \u062E\u0644\u064A\u0629 \u0628\u0639\u062F ":"',formulaError_unknownName:"\u0627\u0633\u0645 \u063A\u064A\u0631 \u0645\u0639\u0631\u0648\u0641 {name} \u2014 \u0627\u0643\u062A\u0628 \u0627\u0644\u0639\u0645\u0648\u062F \u0647\u0643\u0630\u0627 [{name}]",formulaError_unexpected:"{text} \u063A\u064A\u0631 \u0645\u062A\u0648\u0642\u0639",formulaError_endsEarly:"\u062A\u0646\u062A\u0647\u064A \u0627\u0644\u0635\u064A\u063A\u0629 \u0645\u0628\u0643\u0631\u064B\u0627",formulaError_trailing:"\u0646\u0635 \u063A\u064A\u0631 \u0645\u062A\u0648\u0642\u0639 \u0641\u064A \u0627\u0644\u0646\u0647\u0627\u064A\u0629",formulaError_unknownColumn:"\u0644\u0627 \u064A\u0648\u062C\u062F \u0639\u0645\u0648\u062F [{name}]",formulaError_unknownFunction:"\u062F\u0627\u0644\u0629 \u063A\u064A\u0631 \u0645\u0639\u0631\u0648\u0641\u0629 {name}",formulaError_argCount:"\u062A\u0623\u062E\u0630 {name} \u0639\u062F\u062F {range} \u0645\u0646 \u0627\u0644\u0648\u0633\u0627\u0626\u0637",formulaError_cellsNotAllowed:"\u0644\u0627 \u062A\u064F\u0633\u062A\u062E\u062F\u0645 \u0645\u0631\u0627\u062C\u0639 \u0627\u0644\u062E\u0644\u0627\u064A\u0627 \u0645\u062B\u0644 A1 \u0647\u0646\u0627 \u2014 \u0627\u0643\u062A\u0628 \u0627\u0644\u0639\u0645\u0648\u062F \u0647\u0643\u0630\u0627 [\u0627\u0644\u0627\u0633\u0645]"},pm={ok:"\u786E\u5B9A",cancel:"\u53D6\u6D88",apply:"\u5E94\u7528",close:"\u5173\u95ED",clear:"\u6E05\u9664",save:"\u4FDD\u5B58",search:"\u641C\u7D22...",selectAll:"\u5168\u9009",showAll:"\u663E\u793A\u5168\u90E8",remove:"\u79FB\u9664",none:"\u65E0",toolbarSearch:"\u641C\u7D22...",exportMenu:"\u5BFC\u51FA",exportCsv:"\u5BFC\u51FA\u4E3A CSV",exportExcel:"\u5C06\u5168\u90E8\u6570\u636E\u5BFC\u51FA\u5230 Excel",exportExcelSelected:"\u5C06\u9009\u4E2D\u884C\u5BFC\u51FA\u5230 Excel",exportPdf:"\u5BFC\u51FA\u4E3A PDF",exporting:"\u6B63\u5728\u5BFC\u51FA\u2026",columns:"\u5217",hiddenColumns:"\u9690\u85CF\u7684\u5217",noHiddenColumns:"\u6CA1\u6709\u9690\u85CF\u7684\u5217\u3002",sortAsc:"\u6309 A \u5230 Z \u6392\u5E8F",sortDesc:"\u6309 Z \u5230 A \u6392\u5E8F",clearSort:"\u6E05\u9664\u6392\u5E8F",cardSortBy:"\u6392\u5E8F\u65B9\u5F0F",groupByColumn:"\u6309\u6B64\u5217\u5206\u7EC4",ungroupColumn:"\u4ECE\u5206\u7EC4\u4E2D\u79FB\u9664",showGroupPanel:"\u663E\u793A\u5206\u7EC4\u9762\u677F",hideGroupPanel:"\u9690\u85CF\u5206\u7EC4\u9762\u677F",showFooter:"\u663E\u793A\u6C47\u603B\u680F",hideFooter:"\u9690\u85CF\u6C47\u603B\u680F",showGroupFooters:"\u663E\u793A\u5206\u7EC4\u6C47\u603B",hideGroupFooters:"\u9690\u85CF\u5206\u7EC4\u6C47\u603B",hideColumn:"\u9690\u85CF\u6B64\u5217",fieldChooser:"\u5B57\u6BB5\u9009\u62E9\u5668\u2026",bestFit:"\u6700\u4F73\u5217\u5BBD",bestFitAll:"\u6700\u4F73\u5217\u5BBD\uFF08\u6240\u6709\u5217\uFF09",pinRowTop:"\u5C06\u884C\u56FA\u5B9A\u5230\u9876\u90E8",pinRowBottom:"\u5C06\u884C\u56FA\u5B9A\u5230\u5E95\u90E8",unpinRow:"\u53D6\u6D88\u56FA\u5B9A\u884C",findLabel:"\u5728\u8868\u683C\u4E2D\u67E5\u627E",findPrevious:"\u4E0A\u4E00\u4E2A\u5339\u914D\u9879",findNext:"\u4E0B\u4E00\u4E2A\u5339\u914D\u9879",findClose:"\u5173\u95ED\u67E5\u627E",findCount:"\u7B2C {n} \u4E2A\uFF0C\u5171 {count} \u4E2A",findNone:"\u65E0\u5339\u914D\u9879",renameColumn:"\u91CD\u547D\u540D\u5217",fixedPosition:"\u8BBE\u7F6E\u56FA\u5B9A\u4F4D\u7F6E",pinLeft:"\u5DE6\u4FA7",pinRight:"\u53F3\u4FA7",pinSticky:"\u5438\u9644",unpin:"\u53D6\u6D88\u56FA\u5B9A",moveLeft:"\u5DE6\u79FB",moveRight:"\u53F3\u79FB",filterPlaceholder:"\u7B5B\u9009\u2026",filterColumnAria:"\u7B5B\u9009{column}",filterOperatorDefault:"\u9ED8\u8BA4",filterOperatorAria:"{column}\u7684\u7B5B\u9009\u8FD0\u7B97\u7B26",filterSelectAll:"\u5168\u9009",filterBlank:"(\u7A7A\u767D)",filterNonBlank:"(\u975E\u7A7A\u767D)",filterEmptyText:"(\u7A7A\u6587\u672C)",filterSpace:"(1 \u4E2A\u7A7A\u683C)",filterSpaces:"({n} \u4E2A\u7A7A\u683C)",filterNoMatch:"\u6CA1\u6709\u5339\u914D\u7684\u503C",filterLoading:"\u6B63\u5728\u52A0\u8F7D\u503C\u2026",filterTruncated:"\u4EC5\u663E\u793A\u524D\u82E5\u5E72\u4E2A\u503C\u2014\u2014\u8BF7\u641C\u7D22\u4EE5\u67E5\u627E\u5176\u4F59\u7684\u503C\u3002",filterRemove:"\u79FB\u9664\u7B5B\u9009",filterToggle:"\u5E94\u7528\u7B5B\u9009",filterEditBuilder:"\u7F16\u8F91\u7B5B\u9009",filterNone:"\u65E0\u7B5B\u9009",filterActive:"\u7B5B\u9009\u5DF2\u542F\u7528",opEquals:"\u7B49\u4E8E",opNotEquals:"\u4E0D\u7B49\u4E8E",opGreater:">",opGreaterOrEqual:"\u2265",opLess:"<",opLessOrEqual:"\u2264",opContains:"\u5305\u542B",opNotContains:"\u4E0D\u5305\u542B",opStartsWith:"\u5F00\u5934\u4E3A",opEndsWith:"\u7ED3\u5C3E\u4E3A",opIsBlank:"\u4E3A\u7A7A",opIsNotBlank:"\u4E0D\u4E3A\u7A7A",opIsOneOf:"\u5C5E\u4E8E",opIsBetween:"\u4ECB\u4E8E",opValuesCount:"{n} \u4E2A\u503C",opInPeriod:"\u5728\u671F\u95F4",periodToday:"\u4ECA\u5929",periodYesterday:"\u6628\u5929",periodTomorrow:"\u660E\u5929",periodThisWeek:"\u672C\u5468",periodLastWeek:"\u4E0A\u5468",periodNextWeek:"\u4E0B\u5468",periodThisMonth:"\u672C\u6708",periodLastMonth:"\u4E0A\u6708",periodNextMonth:"\u4E0B\u6708",periodThisQuarter:"\u672C\u5B63\u5EA6",periodLastQuarter:"\u4E0A\u5B63\u5EA6",periodNextQuarter:"\u4E0B\u5B63\u5EA6",periodThisYear:"\u4ECA\u5E74",periodLastYear:"\u53BB\u5E74",periodNextYear:"\u660E\u5E74",periodYearToDate:"\u5E74\u521D\u81F3\u4ECA",periodLastDays:"\u6700\u8FD1 {n} \u5929",periodNextDays:"\u672A\u6765 {n} \u5929",filterAnd:"\u4E0E",filterOr:"\u6216",builderTitle:"\u7B5B\u9009\u751F\u6210\u5668",builderCombine:"\u6761\u4EF6\u7684\u7EC4\u5408\u65B9\u5F0F",builderAddCondition:"\u6DFB\u52A0\u6761\u4EF6",builderAddGroup:"\u6DFB\u52A0\u5206\u7EC4",builderRemoveGroup:"\u79FB\u9664\u5206\u7EC4",builderRemoveCondition:"\u79FB\u9664\u6761\u4EF6",builderEmpty:"\u5C1A\u65E0\u6761\u4EF6\u3002",builderColumn:"\u5217",builderOperator:"\u8FD0\u7B97\u7B26",builderValue:"\u503C",builderValueFrom:"\u4ECE",builderValueTo:"\u5230",builderValuePlaceholder:"\u8BF7\u8F93\u5165\u503C",builderOpen:"\u7B5B\u9009\u751F\u6210\u5668\u2026",builderClearAll:"\u5168\u90E8\u6E05\u9664",builderConditionButton:"+ \u6761\u4EF6",builderGroupButton:"+ \u5206\u7EC4",builderTrue:"\u771F",builderFalse:"\u5047",builderPeriod:"\u671F\u95F4",builderDays:"\u5929\u6570",filterCustom:"(\u81EA\u5B9A\u4E49\u2026)",filterPopupAria:"{column} \u7B5B\u9009",importOpen:"\u5BFC\u5165\u2026",groupPanelHint:"\u5C06\u5217\u62D6\u5230\u6B64\u5904\u5373\u53EF\u6309\u5176\u5206\u7EC4",groupAddLevel:"\u6DFB\u52A0\u5206\u7EC4\u5C42\u7EA7",groupAddLevelButton:"+ \u6DFB\u52A0\u5C42\u7EA7\u2026",groupNoGrouping:"\uFF08\u65E0\u5206\u7EC4\uFF09",groupLevelAria:"\u7B2C {n} \u7EA7\u5206\u7EC4",groupRemoveAria:"\u79FB\u9664{column}",groupExpandAll:"\u5168\u90E8\u5C55\u5F00",groupCollapseAll:"\u5168\u90E8\u6298\u53E0",pagerFirst:"\u9996\u9875",pagerPrevious:"\u4E0A\u4E00\u9875",pagerNext:"\u4E0B\u4E00\u9875",pagerLast:"\u672B\u9875",pagerPage:"\u7B2C",pagerOf:"/",pagerRowsPerPage:"\u6BCF\u9875\u884C\u6570",pagerAria:"\u5206\u9875",pagerPageButton:"\u7B2C {n} \u9875",selectAllRows:"\u9009\u62E9\u6240\u6709\u884C",selectRowAria:"\u9009\u62E9\u7B2C {row} \u884C",selectGroupAria:"\u9009\u62E9 {group} \u4E2D\u7684 {count} \u884C",summaryAria:"\u6C47\u603B",columnTotalsAria:"\u5217\u5408\u8BA1",rowActions:"\u884C\u64CD\u4F5C",detailsAria:"\u8BE6\u60C5",rowNumberAria:"\u884C\u53F7",noteEditorAria:"\u5355\u5143\u683C\u6279\u6CE8",notePlaceholder:"\u4E3A\u6B64\u5355\u5143\u683C\u5199\u6279\u6CE8\u2026",addNote:"\u6DFB\u52A0\u6279\u6CE8\u2026",editNote:"\u7F16\u8F91\u6279\u6CE8\u2026",deleteNote:"\u5220\u9664\u6279\u6CE8",expandDetails:"\u5C55\u5F00\u8BE6\u60C5",collapseDetails:"\u6298\u53E0\u8BE6\u60C5",expandTreeRow:"\u5C55\u5F00\u884C",collapseTreeRow:"\u6298\u53E0\u884C",expandColumnGroup:"\u5C55\u5F00\u5217\u7EC4",collapseColumnGroup:"\u6298\u53E0\u5217\u7EC4",dragToReorder:"\u62D6\u52A8\u4EE5\u91CD\u65B0\u6392\u5E8F",menuCopy:"\u590D\u5236",menuCopyWithHeaders:"\u590D\u5236\uFF08\u542B\u8868\u5934\uFF09",menuCopyWithGroupHeaders:"\u590D\u5236\uFF08\u542B\u5206\u7EC4\u8868\u5934\uFF09",menuCut:"\u526A\u5207",menuPaste:"\u7C98\u8D34",menuExport:"\u5BFC\u51FA",menuChartRange:"\u5C06\u6240\u9009\u5355\u5143\u683C\u751F\u6210\u56FE\u8868",statsSum:"\u6C42\u548C",statsCount:"\u8BA1\u6570",statsAvg:"\u5E73\u5747\u503C",statsMin:"\u6700\u5C0F\u503C",statsMax:"\u6700\u5927\u503C",statsCells:"\u5355\u5143\u683C",statsTooLarge:"\u6240\u9009\u533A\u57DF\u8FC7\u5927\uFF0C\u65E0\u6CD5\u6C47\u603B",statusRows:"\u884C\u6570",statusFiltered:"\u7B5B\u9009\u540E",statusSelected:"\u5DF2\u9009\u62E9",summaryRows:"\u884C",announceRows:"{n} \u884C",announceSortedBy:"\u6309 {columns} \u6392\u5E8F",announceSelected:"\u5DF2\u9009\u62E9 {n} \u9879",announceAscending:"\u5347\u5E8F",announceDescending:"\u964D\u5E8F",sideFilters:"\u7B5B\u9009\u5668",sideBarAria:"\u5DE5\u5177\u9762\u677F",sideClearFilters:"\u6E05\u9664\u6240\u6709\u7B5B\u9009",summarySum:"\u6C42\u548C",summaryAvg:"\u5E73\u5747\u503C",summaryMin:"\u6700\u5C0F\u503C",summaryMax:"\u6700\u5927\u503C",summaryCount:"\u8BA1\u6570",summaryDistinct:"\u53BB\u91CD\u8BA1\u6570",summaryCustom:"\u81EA\u5B9A\u4E49",noTotal:"\u65E0\u5408\u8BA1",busy:"\u5904\u7406\u4E2D\u2026",busyLoading:"\u6B63\u5728\u52A0\u8F7D\u884C\u2026",rowsLoadFailed:"\u65E0\u6CD5\u52A0\u8F7D\u8FD9\u4E9B\u884C\u3002",retryLoad:"\u91CD\u8BD5",busyEncoding:"\u6B63\u5728\u51C6\u5907\u6570\u636E\u2026",busyFiltering:"\u6B63\u5728\u7B5B\u9009\u884C\u2026",busySorting:"\u6B63\u5728\u6392\u5E8F\u884C\u2026",busyComputing:"\u6B63\u5728\u7B5B\u9009\u548C\u6392\u5E8F\u2026",busyGrouping:"\u6B63\u5728\u6784\u5EFA\u5206\u7EC4\u2026",busyAggregating:"\u6B63\u5728\u8BA1\u7B97\u5408\u8BA1\u2026",busyProjecting:"\u6B63\u5728\u66F4\u65B0\u89C6\u56FE\u2026",busyExporting:"\u6B63\u5728\u751F\u6210\u6587\u4EF6\u2026",noData:"\u672A\u627E\u5230\u6570\u636E",editNewRow:"\u65B0\u5EFA\u884C",editSaveChanges:"\u4FDD\u5B58\u66F4\u6539",editDiscardChanges:"\u653E\u5F03\u66F4\u6539",editRow:"\u7F16\u8F91\u884C",editRowMenu:"\u7F16\u8F91\u884C\u2026",editDeleteRow:"\u5220\u9664\u884C",editUndoDelete:"\u64A4\u9500\u5220\u9664",editActions:"\u64CD\u4F5C",editSaveRow:"\u4FDD\u5B58\u6B64\u884C",editSaving:"\u6B63\u5728\u4FDD\u5B58\u2026",editEditingRow:"\u6B63\u5728\u7F16\u8F91\u7B2C {row} \u884C",editSaveCount:"\u4FDD\u5B58 {n} \u884C",editCannotSave:"\u65E0\u6CD5\u4FDD\u5B58",editSaveFailed:"\u672A\u80FD\u4FDD\u5B58\u66F4\u6539\u3002",rowStatusNew:"\u65B0\u884C(\u672A\u4FDD\u5B58)",rowStatusChanged:"\u672A\u4FDD\u5B58\u7684\u66F4\u6539",rowStatusRemoved:"\u5F85\u5220\u9664",rowStatusSaving:"\u6B63\u5728\u4FDD\u5B58\u2026",rowStatusSaved:"\u5DF2\u4FDD\u5B58",rowStatusError:"\u4FDD\u5B58\u5931\u8D25",rowStatusRetry:"\u91CD\u8BD5",rowStatusDelete:"\u5220\u9664\u884C",editDeleteConfirm:"\u8981\u5220\u9664\u6B64\u884C\u5417\uFF1F",editAddRowUndo:"\u6DFB\u52A0\u884C",editDeleteRowUndo:"\u5220\u9664\u884C",editCellUndo:"\u7F16\u8F91 {column}",editFillUndo:"\u586B\u5145 {count} \u4E2A\u5355\u5143\u683C",editPasteUndo:"\u7C98\u8D34 {count} \u4E2A\u5355\u5143\u683C",editCutUndo:"\u526A\u5207 {count} \u4E2A\u5355\u5143\u683C",editGroupTotal:"\u5206\u7EC4\u5408\u8BA1",editGroupTotalUndo:"\u66F4\u6539 {column} \u5408\u8BA1\uFF08{count} \u884C\uFF09",editNoMatch:"\u65E0\u5339\u914D\u9879",formEditTitle:"\u7F16\u8F91\u884C",formAddTitle:"\u65B0\u5EFA\u884C",formShortcut:"{key}+Enter \u4FDD\u5B58 \xB7 Esc \u53D6\u6D88",validationRequired:"\u6B64\u5B57\u6BB5\u4E3A\u5FC5\u586B\u9879",validationNumber:"\u5FC5\u987B\u4E3A\u6570\u5B57",validationNumberLocale:"\u4E0D\u662F\u6709\u6548\u7684\u6570\u5B57\u3002\u793A\u4F8B\uFF1A{example}",validationMin:"\u4E0D\u80FD\u5C0F\u4E8E {min}",validationMax:"\u4E0D\u80FD\u5927\u4E8E {max}",validationFormat:"\u683C\u5F0F\u65E0\u6548",validationEmail:"\u7535\u5B50\u90AE\u4EF6\u5730\u5740\u65E0\u6548",validationInvalid:"\u503C\u65E0\u6548",dateCalendar:"\u65E5\u5386",dateOpenCalendar:"\u6253\u5F00\u65E5\u5386",datePreviousMonth:"\u4E0A\u4E2A\u6708",dateNextMonth:"\u4E0B\u4E2A\u6708",monthJanuary:"\u4E00\u6708",monthFebruary:"\u4E8C\u6708",monthMarch:"\u4E09\u6708",monthApril:"\u56DB\u6708",monthMay:"\u4E94\u6708",monthJune:"\u516D\u6708",monthJuly:"\u4E03\u6708",monthAugust:"\u516B\u6708",monthSeptember:"\u4E5D\u6708",monthOctober:"\u5341\u6708",monthNovember:"\u5341\u4E00\u6708",monthDecember:"\u5341\u4E8C\u6708",weekStartsOn:"1",weekdaySu:"\u65E5",weekdayMo:"\u4E00",weekdayTu:"\u4E8C",weekdayWe:"\u4E09",weekdayTh:"\u56DB",weekdayFr:"\u4E94",weekdaySa:"\u516D",importTitle:"\u5BFC\u5165\u6570\u636E",importStepSource:"1. \u6570\u636E\u6E90",importStepMap:"2. \u6620\u5C04\u5217",importFile:"CSV \u6587\u4EF6",importPaste:"\u2026\u6216\u7C98\u8D34\u884C",importSeparator:"\u5206\u9694\u7B26",importSeparatorAuto:"\u81EA\u52A8\u68C0\u6D4B",importSeparatorComma:"\u9017\u53F7 ,",importSeparatorSemicolon:"\u5206\u53F7 ;",importSeparatorTab:"\u5236\u8868\u7B26",importSeparatorPipe:"\u7AD6\u7EBF |",importFileColumn:"\u6587\u4EF6\u5217",importDetected:"\u68C0\u6D4B\u7ED3\u679C",importGridColumn:"\u8868\u683C\u5217",importSample:"\u793A\u4F8B",importSkip:"\u2014 \u8DF3\u8FC7 \u2014",importPreview:"\u9884\u89C8",importNoSource:"\u8BF7\u5148\u9009\u62E9\u6587\u4EF6\u6216\u7C98\u8D34\u4E00\u4E9B\u884C\u3002",importNoRows:"\u672A\u627E\u5230\u6570\u636E\u884C\u3002",importAction:"\u5BFC\u5165",exportAborted:"\u5BFC\u51FA\u5DF2\u4E2D\u6B62",exportSheetName:"\u6570\u636E",chart:"\u56FE\u8868",chartCategory:"\u7C7B\u522B",chartSeries:"\u7CFB\u5217",chartAddSeries:"\u6DFB\u52A0\u7CFB\u5217",chartRemoveSeries:"\u79FB\u9664",chartSource:"\u6570\u636E",chartSourceView:"\u7B5B\u9009\u540E\u7684\u884C",chartSourceSelection:"\u9009\u4E2D\u7684\u884C",chartSourceAll:"\u5168\u90E8\u884C",chartSourceRange:"\u6240\u9009\u8303\u56F4\uFF08\u7B2C {from}\u2013{to} \u884C\uFF09",chartClose:"\u5173\u95ED\u56FE\u8868",chartFullscreen:"\u5168\u5C4F",chartExitFullscreen:"\u9000\u51FA\u5168\u5C4F",chartFloat:"\u5F39\u51FA",chartDock:"\u505C\u9760",chartNewWindow:"\u65B0\u7A97\u53E3",chartMoveWindow:"\u79FB\u52A8\u56FE\u8868\u7A97\u53E3",chartResizeWindow:"\u8C03\u6574\u56FE\u8868\u7A97\u53E3\u5927\u5C0F",chartResizeDock:"\u62D6\u52A8\u4EE5\u66F4\u6539\u56FE\u8868\u9AD8\u5EA6",chartSwitch:"\u4EA4\u6362\u7C7B\u522B\u548C\u7CFB\u5217",chartUnlink:"\u53D6\u6D88\u5173\u8054",chartLink:"\u5173\u8054",chartUnlinked:"\u5DF2\u53D6\u6D88\u5173\u8054\uFF1A\u56FE\u8868\u4FDD\u7559\u5176\u6570\u636E\uFF0C\u4E0D\u518D\u968F\u8868\u683C\u53D8\u5316\u3002",chartExportPng:"PNG",chartExportSvg:"SVG",chartExportFailed:"\u56FE\u8868\u5BFC\u51FA\u5931\u8D25\u3002",chartCrossFiltered:"\u8868\u683C\u5DF2\u7B5B\u9009\u4E3A {value}\u3002",chartBlankCategory:"(\u7A7A\u767D)",chartTruncated:"\u663E\u793A\u524D {n} \u4E2A\u7C7B\u522B\uFF1B\u5176\u4F59\u5F52\u5165\u201C\u5176\u4ED6\u201D\u3002",chartOther:"\u5176\u4ED6",chartEmpty:"\u6682\u65E0\u53EF\u7ED8\u5236\u7684\u5185\u5BB9\u3002",chartNoVisibleSeries:"\u6CA1\u6709\u53EF\u89C1\u7684\u7CFB\u5217\u3002",chartNeedsMoreSeries:"\u6B64\u56FE\u8868\u7C7B\u578B\u81F3\u5C11\u9700\u8981\u4E24\u4E2A\u6570\u503C\u5217\uFF08\u4F8B\u5982\u6700\u4F4E\u503C\u548C\u6700\u9AD8\u503C\uFF09\uFF0C\u8BF7\u6DFB\u52A0\u7B2C\u4E8C\u4E2A\u7CFB\u5217\u3002",chartLoading:"\u52A0\u8F7D\u4E2D\u2026",chartNeedsRecharts:"\u56FE\u8868\u9700\u8981\u53EF\u9009\u4F9D\u8D56 `recharts`\u3002\u8BF7\u5B89\u88C5\u540E\u518D\u7ED8\u5236\u3002",chartOnlyOneSeries:"\u6B64\u56FE\u8868\u7C7B\u578B\u4EC5\u663E\u793A\u4E00\u4E2A\u7CFB\u5217\u3002",chartByColumn:"\u6309\u6B64\u5217\u7ED8\u5236\u56FE\u8868",chartGroupBy:"\u6309",chartGroupNone:"\u6BCF\u4E2A\u503C",chartGroupAuto:"\u81EA\u52A8",chartGroupDay:"\u65E5",chartGroupWeek:"\u5468",chartGroupMonth:"\u6708",chartGroupQuarter:"\u5B63\u5EA6",chartGroupYear:"\u5E74",chartGroupBins:"{n} \u4E2A\u533A\u95F4",chartBucketAdjusted:"\u5355\u4E2A\u5750\u6807\u8F74\u4E0A\u7684\u533A\u95F4\u8FC7\u591A\u2014\u2014\u5DF2\u6309\u66F4\u7C97\u7684\u7C92\u5EA6\u5206\u7EC4\u3002",chartWindowed:"\u6B63\u5728\u663E\u793A {total} \u4E2A\u4E2D\u7684 {shown} \u4E2A\u3002",chartShowAll:"\u663E\u793A\u5168\u90E8",chartCanvasHint:"\u56FE\u8868\u3002\u6EDA\u52A8\u7F29\u653E\uFF0C\u62D6\u52A8\u5E73\u79FB\uFF0C\u65B9\u5411\u952E\u79FB\u52A8\uFF0C\u6309 0 \u663E\u793A\u5168\u90E8\u3002",chartCanvasHintPick:"\u56FE\u8868\u3002\u65B9\u5411\u952E\u9009\u62E9\u7C7B\u522B\uFF0CEnter \u6216\u7A7A\u683C\u6309\u8BE5\u7C7B\u522B\u7B5B\u9009\u8868\u683C\uFF08Ctrl \u8FFD\u52A0\uFF09\uFF0C+ \u548C \u2212 \u7F29\u653E\uFF0C0 \u663E\u793A\u5168\u90E8\u3002",chartCategoryFocus:"{category}\uFF1A{values} \u2014 \u7B2C {position} \u4E2A\uFF0C\u5171 {count} \u4E2A",chartCategoryFiltered:"\u6B63\u5728\u7B5B\u9009\u8868\u683C",chartAggSum:"\u6C42\u548C",chartAggAvg:"\u5E73\u5747\u503C",chartAggMin:"\u6700\u5C0F\u503C",chartAggMax:"\u6700\u5927\u503C",chartAggCount:"\u8BA1\u6570",chartAggDistinct:"\u53BB\u91CD\u8BA1\u6570",chartAggFirst:"\u7B2C\u4E00\u4E2A",chartAggLast:"\u6700\u540E\u4E00\u4E2A",chartTypeColumn:"\u67F1\u5F62\u56FE",chartTypeBar:"\u6761\u5F62\u56FE",chartTypeLine:"\u6298\u7EBF\u56FE",chartTypeArea:"\u9762\u79EF\u56FE",chartTypePie:"\u997C\u56FE",chartTypeDonut:"\u73AF\u5F62\u56FE",chartStacking:"\u7CFB\u5217\u5E03\u5C40",chartStackGrouped:"\u7C07\u72B6",chartStackStacked:"\u5806\u79EF",chartStackNormalized:"\u767E\u5206\u6BD4\u5806\u79EF",chartFormat:"\u683C\u5F0F",chartFormatTitle:"\u6807\u9898",chartFormatCategoryAxis:"\u5206\u7C7B\u8F74\u6807\u9898",chartFormatValueAxis:"\u6570\u503C\u8F74\u6807\u9898",chartFormatLegend:"\u56FE\u4F8B",chartLegendTop:"\u9876\u90E8",chartLegendBottom:"\u5E95\u90E8",chartLegendLeft:"\u5DE6\u4FA7",chartLegendRight:"\u53F3\u4FA7",chartLegendNone:"\u9690\u85CF",chartFormatDataLabels:"\u6570\u636E\u6807\u7B7E",chartFormatScale:"\u6570\u503C\u523B\u5EA6",chartScaleLinear:"\u7EBF\u6027",chartScaleLog:"\u5BF9\u6570",chartFormatTextSize:"\u6587\u5B57\u5927\u5C0F",chartFormatTextColor:"\u6587\u5B57\u989C\u8272",chartFormatDefault:"\u9ED8\u8BA4",chartFormatLabelAngle:"\u7C7B\u522B\u6807\u7B7E",chartAngleAuto:"\u81EA\u52A8",chartAngleFlat:"\u6C34\u5E73",chartFormatGridLines:"\u7F51\u683C\u7EBF",chartGridValue:"\u6570\u503C\u8F74",chartGridBoth:"\u4E24\u4E2A\u8F74",chartGridNone:"\u65E0",chartFormatGridDashed:"\u865A\u7EBF\u7F51\u683C",chartFormatLineWidth:"\u7EBF\u5BBD",chartFormatLineDashed:"\u865A\u7EBF",chartFormatFillOpacity:"\u586B\u5145\u4E0D\u900F\u660E\u5EA6",chartFormatDateFormat:"\u65E5\u671F\u683C\u5F0F",chartFormatPalette:"\u989C\u8272",chartPaletteTheme:"\u4E3B\u9898",chartPaletteClassic:"\u7ECF\u5178",chartPaletteColorblind:"\u8272\u76F2\u53CB\u597D",chartPaletteVivid:"\u9C9C\u8273",chartPaletteMonochrome:"\u5355\u8272",sparklineSummary:"{count} \u4E2A\u503C\uFF0C\u4ECE {min} \u5230 {max}\uFF0C\u6700\u540E\u4E3A {last}",chartTypeWaterfall:"\u7011\u5E03\u56FE",chartTypeFunnel:"\u6F0F\u6597\u56FE",chartTypeTreemap:"\u77E9\u5F62\u6811\u56FE",chartTypeHeatmap:"\u70ED\u529B\u56FE",chartTypeBox:"\u7BB1\u7EBF\u56FE",chartTypeRadar:"\u96F7\u8FBE\u56FE",chartTypeRangeBar:"\u8303\u56F4\u56FE",chartBoxQ1:"Q1",chartBoxMedian:"\u4E2D\u4F4D\u6570",chartBoxQ3:"Q3",chartBoxOutlier:"\u79BB\u7FA4\u503C",chartTotal:"\u5408\u8BA1",chartTypeScatter:"\u6563\u70B9\u56FE",chartTypeBubble:"\u6C14\u6CE1\u56FE",chartXAxis:"X \u8F74",chartBubbleSize:"\u5927\u5C0F",chartXYSampled:"\u5171 {total} \u4E2A\u70B9\uFF0C\u5747\u5300\u62BD\u6837\u663E\u793A {shown} \u4E2A",licenseMissing:"\u672A\u6388\u6743",licenseExpired:"\u8BB8\u53EF\u8BC1\u5DF2\u8FC7\u671F",licenseReleaseNotCovered:"\u6B64\u7248\u672C\u4E0D\u5728\u8BB8\u53EF\u8BC1\u8986\u76D6\u8303\u56F4\u5185",licenseDomainMismatch:"\u8BB8\u53EF\u8BC1\u5BF9\u6B64\u57DF\u540D\u65E0\u6548",licenseRevoked:"\u8BB8\u53EF\u8BC1\u5DF2\u88AB\u540A\u9500",licenseInvalidFormat:"\u8BB8\u53EF\u8BC1\u5BC6\u94A5\u683C\u5F0F\u9519\u8BEF",licenseInvalidSignature:"\u8BB8\u53EF\u8BC1\u7B7E\u540D\u65E0\u6548",licenseEngineUnavailable:"\u6D4F\u89C8\u5668\u65E0\u6CD5\u9A8C\u8BC1\u8BB8\u53EF\u8BC1\uFF08\u9700\u8981 HTTPS\uFF09",calcAdd:"\u6DFB\u52A0\u8BA1\u7B97\u5217\u2026",calcEdit:"\u7F16\u8F91\u8BA1\u7B97\u5217\u2026",calcRemove:"\u5220\u9664\u8BA1\u7B97\u5217",calcTitleAdd:"\u6DFB\u52A0\u8BA1\u7B97\u5217",calcTitleEdit:"\u7F16\u8F91\u8BA1\u7B97\u5217",calcName:"\u540D\u79F0",calcFormula:"\u516C\u5F0F",calcFormulaHint:"\u5217\u5199\u4F5C [\u540D\u79F0]\u3002\u793A\u4F8B\uFF1A[\u4EF7\u683C] * [\u6570\u91CF]",calcColumns:"\u5217",calcFunctions:"\u51FD\u6570",calcPreview:"\u9884\u89C8",calcPreviewEmpty:"\u6CA1\u6709\u53EF\u9884\u89C8\u7684\u884C",calcErrorAt:"{message}\uFF08\u7B2C {position} \u4E2A\u5B57\u7B26\uFF09",calcAddButton:"\u6DFB\u52A0",calcArgsAtLeast:"{min} \u4E2A\u6216\u66F4\u591A",formulaError_empty:"\u8BF7\u8F93\u5165\u516C\u5F0F",formulaError_unclosedText:'\u6587\u672C\u672A\u95ED\u5408\uFF1A\u7F3A\u5C11 "',formulaError_unclosedColumn:"\u5217\u540D\u672A\u95ED\u5408\uFF1A\u7F3A\u5C11 ]",formulaError_emptyColumn:"\u5217\u540D\u4E3A\u7A7A []",formulaError_unexpectedChar:"\u610F\u5916\u7684\u5B57\u7B26 {text}",formulaError_expected:"\u7F3A\u5C11 {text}",formulaError_cellAfterColon:'":" \u540E\u7F3A\u5C11\u5355\u5143\u683C',formulaError_unknownName:"\u672A\u77E5\u540D\u79F0 {name} \u2014 \u5217\u5E94\u5199\u4F5C [{name}]",formulaError_unexpected:"\u610F\u5916\u7684 {text}",formulaError_endsEarly:"\u516C\u5F0F\u8FC7\u65E9\u7ED3\u675F",formulaError_trailing:"\u672B\u5C3E\u6709\u591A\u4F59\u7684\u6587\u672C",formulaError_unknownColumn:"\u6CA1\u6709\u5217 [{name}]",formulaError_unknownFunction:"\u672A\u77E5\u51FD\u6570 {name}",formulaError_argCount:"{name} \u9700\u8981 {range} \u4E2A\u53C2\u6570",formulaError_cellsNotAllowed:"\u6B64\u5904\u4E0D\u4F7F\u7528 A1 \u8FD9\u6837\u7684\u5355\u5143\u683C\u5F15\u7528 \u2014 \u5217\u5E94\u5199\u4F5C [\u540D\u79F0]"},gm={ok:"OK",cancel:"\u30AD\u30E3\u30F3\u30BB\u30EB",apply:"\u9069\u7528",close:"\u9589\u3058\u308B",clear:"\u30AF\u30EA\u30A2",save:"\u4FDD\u5B58",search:"\u691C\u7D22...",selectAll:"\u3059\u3079\u3066\u9078\u629E",showAll:"\u3059\u3079\u3066\u8868\u793A",remove:"\u524A\u9664",none:"\u306A\u3057",toolbarSearch:"\u691C\u7D22...",exportMenu:"\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8",exportCsv:"CSV \u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8",exportExcel:"\u3059\u3079\u3066\u306E\u30C7\u30FC\u30BF\u3092 Excel \u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8",exportExcelSelected:"\u9078\u629E\u3057\u305F\u884C\u3092 Excel \u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8",exportPdf:"PDF \u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8",exporting:"\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u4E2D\u2026",columns:"\u5217",hiddenColumns:"\u975E\u8868\u793A\u306E\u5217",noHiddenColumns:"\u975E\u8868\u793A\u306E\u5217\u306F\u3042\u308A\u307E\u305B\u3093\u3002",sortAsc:"\u6607\u9806\u3067\u4E26\u3079\u66FF\u3048",sortDesc:"\u964D\u9806\u3067\u4E26\u3079\u66FF\u3048",clearSort:"\u4E26\u3079\u66FF\u3048\u3092\u30AF\u30EA\u30A2",cardSortBy:"\u4E26\u3079\u66FF\u3048",groupByColumn:"\u3053\u306E\u5217\u3067\u30B0\u30EB\u30FC\u30D7\u5316",ungroupColumn:"\u30B0\u30EB\u30FC\u30D7\u5316\u304B\u3089\u5916\u3059",showGroupPanel:"\u30B0\u30EB\u30FC\u30D7\u30D1\u30CD\u30EB\u3092\u8868\u793A",hideGroupPanel:"\u30B0\u30EB\u30FC\u30D7\u30D1\u30CD\u30EB\u3092\u975E\u8868\u793A",showFooter:"\u30D5\u30C3\u30BF\u30FC\u3092\u8868\u793A",hideFooter:"\u30D5\u30C3\u30BF\u30FC\u3092\u975E\u8868\u793A",showGroupFooters:"\u30B0\u30EB\u30FC\u30D7\u30D5\u30C3\u30BF\u30FC\u3092\u8868\u793A",hideGroupFooters:"\u30B0\u30EB\u30FC\u30D7\u30D5\u30C3\u30BF\u30FC\u3092\u975E\u8868\u793A",hideColumn:"\u3053\u306E\u5217\u3092\u975E\u8868\u793A",fieldChooser:"\u30D5\u30A3\u30FC\u30EB\u30C9\u9078\u629E\u2026",bestFit:"\u5E45\u3092\u81EA\u52D5\u8ABF\u6574",bestFitAll:"\u5E45\u3092\u81EA\u52D5\u8ABF\u6574\uFF08\u3059\u3079\u3066\u306E\u5217\uFF09",pinRowTop:"\u884C\u3092\u4E0A\u90E8\u306B\u56FA\u5B9A",pinRowBottom:"\u884C\u3092\u4E0B\u90E8\u306B\u56FA\u5B9A",unpinRow:"\u884C\u306E\u56FA\u5B9A\u3092\u89E3\u9664",findLabel:"\u8868\u5185\u3092\u691C\u7D22",findPrevious:"\u524D\u306E\u4E00\u81F4",findNext:"\u6B21\u306E\u4E00\u81F4",findClose:"\u691C\u7D22\u3092\u9589\u3058\u308B",findCount:"{n} / {count}",findNone:"\u4E00\u81F4\u306A\u3057",renameColumn:"\u5217\u540D\u3092\u5909\u66F4",fixedPosition:"\u56FA\u5B9A\u4F4D\u7F6E\u3092\u8A2D\u5B9A",pinLeft:"\u5DE6",pinRight:"\u53F3",pinSticky:"\u56FA\u5B9A",unpin:"\u56FA\u5B9A\u3092\u89E3\u9664",moveLeft:"\u5DE6\u306B\u79FB\u52D5",moveRight:"\u53F3\u306B\u79FB\u52D5",filterPlaceholder:"\u30D5\u30A3\u30EB\u30BF\u30FC\u2026",filterColumnAria:"{column} \u3092\u30D5\u30A3\u30EB\u30BF\u30FC",filterOperatorDefault:"\u65E2\u5B9A",filterOperatorAria:"{column} \u306E\u30D5\u30A3\u30EB\u30BF\u30FC\u6F14\u7B97\u5B50",filterSelectAll:"\u3059\u3079\u3066\u9078\u629E",filterBlank:"(\u7A7A\u767D)",filterNonBlank:"(\u7A7A\u767D\u4EE5\u5916)",filterEmptyText:"(\u7A7A\u306E\u6587\u5B57\u5217)",filterSpace:"(\u30B9\u30DA\u30FC\u30B9 1 \u500B)",filterSpaces:"(\u30B9\u30DA\u30FC\u30B9 {n} \u500B)",filterNoMatch:"\u4E00\u81F4\u3059\u308B\u5024\u304C\u3042\u308A\u307E\u305B\u3093",filterLoading:"\u5024\u3092\u8AAD\u307F\u8FBC\u307F\u4E2D\u2026",filterTruncated:"\u5148\u982D\u306E\u5024\u306E\u307F\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002\u6B8B\u308A\u306F\u691C\u7D22\u3057\u3066\u304F\u3060\u3055\u3044\u3002",filterRemove:"\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u89E3\u9664",filterToggle:"\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u9069\u7528",filterEditBuilder:"\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u7DE8\u96C6",filterNone:"\u30D5\u30A3\u30EB\u30BF\u30FC\u306A\u3057",filterActive:"\u30D5\u30A3\u30EB\u30BF\u30FC\u9069\u7528\u4E2D",opEquals:"\u304C\u6B21\u3068\u7B49\u3057\u3044",opNotEquals:"\u304C\u6B21\u3068\u7B49\u3057\u304F\u306A\u3044",opGreater:">",opGreaterOrEqual:"\u2265",opLess:"<",opLessOrEqual:"\u2264",opContains:"\u3092\u542B\u3080",opNotContains:"\u3092\u542B\u307E\u306A\u3044",opStartsWith:"\u3067\u59CB\u307E\u308B",opEndsWith:"\u3067\u7D42\u308F\u308B",opIsBlank:"\u304C\u7A7A\u767D",opIsNotBlank:"\u304C\u7A7A\u767D\u3067\u306A\u3044",opIsBetween:"\u304C\u6B21\u306E\u7BC4\u56F2\u5185",opIsOneOf:"\u304C\u6B21\u306E\u3044\u305A\u308C\u304B",opValuesCount:"{n} \u4EF6\u306E\u5024",opInPeriod:"\u671F\u9593\u5185",periodToday:"\u4ECA\u65E5",periodYesterday:"\u6628\u65E5",periodTomorrow:"\u660E\u65E5",periodThisWeek:"\u4ECA\u9031",periodLastWeek:"\u5148\u9031",periodNextWeek:"\u6765\u9031",periodThisMonth:"\u4ECA\u6708",periodLastMonth:"\u5148\u6708",periodNextMonth:"\u6765\u6708",periodThisQuarter:"\u4ECA\u56DB\u534A\u671F",periodLastQuarter:"\u524D\u56DB\u534A\u671F",periodNextQuarter:"\u6B21\u56DB\u534A\u671F",periodThisYear:"\u4ECA\u5E74",periodLastYear:"\u6628\u5E74",periodNextYear:"\u6765\u5E74",periodYearToDate:"\u5E74\u521D\u6765",periodLastDays:"\u904E\u53BB {n} \u65E5\u9593",periodNextDays:"\u4ECA\u5F8C {n} \u65E5\u9593",filterAnd:"\u304B\u3064 (And)",filterOr:"\u307E\u305F\u306F (Or)",builderTitle:"\u30D5\u30A3\u30EB\u30BF\u30FC\u30D3\u30EB\u30C0\u30FC",builderCombine:"\u6761\u4EF6\u306E\u7D50\u5408\u65B9\u6CD5",builderAddCondition:"\u6761\u4EF6\u3092\u8FFD\u52A0",builderAddGroup:"\u30B0\u30EB\u30FC\u30D7\u3092\u8FFD\u52A0",builderRemoveGroup:"\u30B0\u30EB\u30FC\u30D7\u3092\u524A\u9664",builderRemoveCondition:"\u6761\u4EF6\u3092\u524A\u9664",builderEmpty:"\u307E\u3060\u6761\u4EF6\u304C\u3042\u308A\u307E\u305B\u3093\u3002",builderColumn:"\u5217",builderOperator:"\u6F14\u7B97\u5B50",builderValue:"\u5024",builderValueFrom:"\u958B\u59CB",builderValueTo:"\u7D42\u4E86",builderValuePlaceholder:"\u5024\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",builderOpen:"\u30D5\u30A3\u30EB\u30BF\u30FC\u30D3\u30EB\u30C0\u30FC\u2026",builderClearAll:"\u3059\u3079\u3066\u30AF\u30EA\u30A2",builderConditionButton:"+ \u6761\u4EF6",builderGroupButton:"+ \u30B0\u30EB\u30FC\u30D7",builderTrue:"\u771F",builderFalse:"\u507D",builderPeriod:"\u671F\u9593",builderDays:"\u65E5\u6570",filterCustom:"(\u30AB\u30B9\u30BF\u30E0\u2026)",filterPopupAria:"{column} \u306E\u30D5\u30A3\u30EB\u30BF\u30FC",importOpen:"\u30A4\u30F3\u30DD\u30FC\u30C8\u2026",groupPanelHint:"\u30B0\u30EB\u30FC\u30D7\u5316\u3059\u308B\u5217\u3092\u3053\u3053\u306B\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u304F\u3060\u3055\u3044",groupAddLevel:"\u30B0\u30EB\u30FC\u30D7\u5316\u306E\u30EC\u30D9\u30EB\u3092\u8FFD\u52A0",groupAddLevelButton:"+ \u30EC\u30D9\u30EB\u3092\u8FFD\u52A0\u2026",groupNoGrouping:"\uFF08\u30B0\u30EB\u30FC\u30D7\u5316\u306A\u3057\uFF09",groupLevelAria:"\u30B0\u30EB\u30FC\u30D7\u5316\u30EC\u30D9\u30EB {n}",groupRemoveAria:"{column} \u3092\u524A\u9664",groupExpandAll:"\u3059\u3079\u3066\u5C55\u958B",groupCollapseAll:"\u3059\u3079\u3066\u6298\u308A\u305F\u305F\u3080",pagerFirst:"\u6700\u521D\u306E\u30DA\u30FC\u30B8",pagerPrevious:"\u524D\u306E\u30DA\u30FC\u30B8",pagerNext:"\u6B21\u306E\u30DA\u30FC\u30B8",pagerLast:"\u6700\u5F8C\u306E\u30DA\u30FC\u30B8",pagerPage:"\u30DA\u30FC\u30B8",pagerOf:"/",pagerRowsPerPage:"1 \u30DA\u30FC\u30B8\u3042\u305F\u308A\u306E\u884C\u6570",pagerAria:"\u30DA\u30FC\u30B8\u9001\u308A",pagerPageButton:"{n} \u30DA\u30FC\u30B8",selectAllRows:"\u3059\u3079\u3066\u306E\u884C\u3092\u9078\u629E",selectRowAria:"\u884C {row} \u3092\u9078\u629E",selectGroupAria:"{group} \u306E {count} \u884C\u3092\u9078\u629E",summaryAria:"\u96C6\u8A08",columnTotalsAria:"\u5217\u306E\u5408\u8A08",rowActions:"\u884C\u306E\u64CD\u4F5C",detailsAria:"\u8A73\u7D30",rowNumberAria:"\u884C\u756A\u53F7",noteEditorAria:"\u30BB\u30EB\u306E\u30E1\u30E2",notePlaceholder:"\u3053\u306E\u30BB\u30EB\u306B\u3064\u3044\u3066\u30E1\u30E2\u3092\u66F8\u304F\u2026",addNote:"\u30E1\u30E2\u3092\u8FFD\u52A0\u2026",editNote:"\u30E1\u30E2\u3092\u7DE8\u96C6\u2026",deleteNote:"\u30E1\u30E2\u3092\u524A\u9664",expandDetails:"\u8A73\u7D30\u3092\u5C55\u958B",collapseDetails:"\u8A73\u7D30\u3092\u6298\u308A\u305F\u305F\u3080",expandTreeRow:"\u884C\u3092\u5C55\u958B",collapseTreeRow:"\u884C\u3092\u6298\u308A\u305F\u305F\u3080",expandColumnGroup:"\u5217\u30B0\u30EB\u30FC\u30D7\u3092\u5C55\u958B",collapseColumnGroup:"\u5217\u30B0\u30EB\u30FC\u30D7\u3092\u6298\u308A\u305F\u305F\u3080",dragToReorder:"\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u4E26\u3079\u66FF\u3048",menuCopy:"\u30B3\u30D4\u30FC",menuCopyWithHeaders:"\u898B\u51FA\u3057\u4ED8\u304D\u3067\u30B3\u30D4\u30FC",menuCopyWithGroupHeaders:"\u30B0\u30EB\u30FC\u30D7\u898B\u51FA\u3057\u4ED8\u304D\u3067\u30B3\u30D4\u30FC",menuCut:"\u5207\u308A\u53D6\u308A",menuPaste:"\u8CBC\u308A\u4ED8\u3051",menuExport:"\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8",menuChartRange:"\u9078\u629E\u3057\u305F\u30BB\u30EB\u3092\u30B0\u30E9\u30D5\u5316",statsSum:"\u5408\u8A08",statsCount:"\u30AB\u30A6\u30F3\u30C8",statsAvg:"\u5E73\u5747",statsMin:"\u6700\u5C0F",statsMax:"\u6700\u5927",statsCells:"\u30BB\u30EB",statsTooLarge:"\u9078\u629E\u7BC4\u56F2\u304C\u5927\u304D\u3059\u304E\u3066\u96C6\u8A08\u3067\u304D\u307E\u305B\u3093",statusRows:"\u884C\u6570",statusFiltered:"\u30D5\u30A3\u30EB\u30BF\u30FC\u5F8C",statusSelected:"\u9078\u629E\u6E08\u307F",summaryRows:"\u884C",announceRows:"{n} \u884C",announceSortedBy:"{columns} \u3067\u4E26\u3079\u66FF\u3048",announceSelected:"{n} \u4EF6\u9078\u629E",announceAscending:"\u6607\u9806",announceDescending:"\u964D\u9806",sideFilters:"\u30D5\u30A3\u30EB\u30BF\u30FC",sideBarAria:"\u30C4\u30FC\u30EB\u30D1\u30CD\u30EB",sideClearFilters:"\u3059\u3079\u3066\u306E\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u30AF\u30EA\u30A2",summarySum:"\u5408\u8A08",summaryAvg:"\u5E73\u5747",summaryMin:"\u6700\u5C0F",summaryMax:"\u6700\u5927",summaryCount:"\u30AB\u30A6\u30F3\u30C8",summaryDistinct:"\u4E00\u610F\u306E\u6570",summaryCustom:"\u30AB\u30B9\u30BF\u30E0",noTotal:"\u5408\u8A08\u306A\u3057",busy:"\u51E6\u7406\u4E2D\u2026",busyLoading:"\u884C\u3092\u8AAD\u307F\u8FBC\u307F\u4E2D\u2026",rowsLoadFailed:"\u3053\u308C\u3089\u306E\u884C\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093\u3067\u3057\u305F\u3002",retryLoad:"\u518D\u8A66\u884C",busyEncoding:"\u30C7\u30FC\u30BF\u3092\u6E96\u5099\u4E2D\u2026",busyFiltering:"\u884C\u3092\u30D5\u30A3\u30EB\u30BF\u30FC\u4E2D\u2026",busySorting:"\u884C\u3092\u4E26\u3079\u66FF\u3048\u4E2D\u2026",busyComputing:"\u30D5\u30A3\u30EB\u30BF\u30FC\u3068\u4E26\u3079\u66FF\u3048\u3092\u5B9F\u884C\u4E2D\u2026",busyGrouping:"\u30B0\u30EB\u30FC\u30D7\u3092\u4F5C\u6210\u4E2D\u2026",busyAggregating:"\u5408\u8A08\u3092\u8A08\u7B97\u4E2D\u2026",busyProjecting:"\u30D3\u30E5\u30FC\u3092\u66F4\u65B0\u4E2D\u2026",busyExporting:"\u30D5\u30A1\u30A4\u30EB\u3092\u4F5C\u6210\u4E2D\u2026",noData:"\u30C7\u30FC\u30BF\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093",editNewRow:"\u65B0\u3057\u3044\u884C",editSaveChanges:"\u5909\u66F4\u3092\u4FDD\u5B58",editDiscardChanges:"\u5909\u66F4\u3092\u7834\u68C4",editRow:"\u884C\u3092\u7DE8\u96C6",editRowMenu:"\u884C\u3092\u7DE8\u96C6\u2026",editDeleteRow:"\u884C\u3092\u524A\u9664",editUndoDelete:"\u524A\u9664\u3092\u5143\u306B\u623B\u3059",editActions:"\u30A2\u30AF\u30B7\u30E7\u30F3",editSaveRow:"\u884C\u3092\u4FDD\u5B58",editSaving:"\u4FDD\u5B58\u4E2D\u2026",editEditingRow:"\u884C {row} \u3092\u7DE8\u96C6\u4E2D",editSaveCount:"{n} \u884C\u3092\u4FDD\u5B58",editCannotSave:"\u4FDD\u5B58\u3067\u304D\u307E\u305B\u3093",editSaveFailed:"\u5909\u66F4\u3092\u4FDD\u5B58\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002",rowStatusNew:"\u65B0\u3057\u3044\u884C(\u672A\u4FDD\u5B58)",rowStatusChanged:"\u672A\u4FDD\u5B58\u306E\u5909\u66F4",rowStatusRemoved:"\u524A\u9664\u4E88\u5B9A",rowStatusSaving:"\u4FDD\u5B58\u4E2D\u2026",rowStatusSaved:"\u4FDD\u5B58\u6E08\u307F",rowStatusError:"\u4FDD\u5B58\u306B\u5931\u6557\u3057\u307E\u3057\u305F",rowStatusRetry:"\u518D\u8A66\u884C",rowStatusDelete:"\u884C\u3092\u524A\u9664",editDeleteConfirm:"\u3053\u306E\u884C\u3092\u524A\u9664\u3057\u307E\u3059\u304B\uFF1F",editAddRowUndo:"\u884C\u306E\u8FFD\u52A0",editDeleteRowUndo:"\u884C\u306E\u524A\u9664",editCellUndo:"{column} \u3092\u7DE8\u96C6",editFillUndo:"{count} \u30BB\u30EB\u3092\u30D5\u30A3\u30EB",editPasteUndo:"{count} \u30BB\u30EB\u3092\u8CBC\u308A\u4ED8\u3051",editCutUndo:"{count} \u30BB\u30EB\u3092\u5207\u308A\u53D6\u308A",editGroupTotal:"\u30B0\u30EB\u30FC\u30D7\u5408\u8A08",editGroupTotalUndo:"{column} \u306E\u5408\u8A08\u3092\u5909\u66F4\uFF08{count} \u884C\uFF09",editNoMatch:"\u4E00\u81F4\u306A\u3057",formEditTitle:"\u884C\u3092\u7DE8\u96C6",formAddTitle:"\u65B0\u3057\u3044\u884C",formShortcut:"{key}+Enter \u3067\u4FDD\u5B58 \xB7 Esc \u3067\u30AD\u30E3\u30F3\u30BB\u30EB",validationRequired:"\u3053\u306E\u9805\u76EE\u306F\u5FC5\u9808\u3067\u3059",validationNumber:"\u6570\u5024\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",validationNumberLocale:"\u6570\u5024\u306E\u5F62\u5F0F\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093\u3002\u4F8B: {example}",validationMin:"{min} \u4EE5\u4E0A\u306B\u3057\u3066\u304F\u3060\u3055\u3044",validationMax:"{max} \u4EE5\u4E0B\u306B\u3057\u3066\u304F\u3060\u3055\u3044",validationFormat:"\u5F62\u5F0F\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093",validationEmail:"\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093",validationInvalid:"\u5024\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093",dateCalendar:"\u30AB\u30EC\u30F3\u30C0\u30FC",dateOpenCalendar:"\u30AB\u30EC\u30F3\u30C0\u30FC\u3092\u958B\u304F",datePreviousMonth:"\u524D\u306E\u6708",dateNextMonth:"\u6B21\u306E\u6708",monthJanuary:"1\u6708",monthFebruary:"2\u6708",monthMarch:"3\u6708",monthApril:"4\u6708",monthMay:"5\u6708",monthJune:"6\u6708",monthJuly:"7\u6708",monthAugust:"8\u6708",monthSeptember:"9\u6708",monthOctober:"10\u6708",monthNovember:"11\u6708",monthDecember:"12\u6708",weekStartsOn:"0",weekdaySu:"\u65E5",weekdayMo:"\u6708",weekdayTu:"\u706B",weekdayWe:"\u6C34",weekdayTh:"\u6728",weekdayFr:"\u91D1",weekdaySa:"\u571F",importTitle:"\u30C7\u30FC\u30BF\u306E\u30A4\u30F3\u30DD\u30FC\u30C8",importStepSource:"1. \u30BD\u30FC\u30B9",importStepMap:"2. \u5217\u306E\u5BFE\u5FDC\u4ED8\u3051",importFile:"CSV \u30D5\u30A1\u30A4\u30EB",importPaste:"\u2026\u307E\u305F\u306F\u884C\u3092\u8CBC\u308A\u4ED8\u3051",importSeparator:"\u533A\u5207\u308A\u6587\u5B57",importSeparatorAuto:"\u81EA\u52D5\u691C\u51FA",importSeparatorComma:"\u30AB\u30F3\u30DE ,",importSeparatorSemicolon:"\u30BB\u30DF\u30B3\u30ED\u30F3 ;",importSeparatorTab:"\u30BF\u30D6",importSeparatorPipe:"\u30D1\u30A4\u30D7 |",importFileColumn:"\u30D5\u30A1\u30A4\u30EB\u306E\u5217",importDetected:"\u691C\u51FA\u7D50\u679C",importGridColumn:"\u30B0\u30EA\u30C3\u30C9\u306E\u5217",importSample:"\u30B5\u30F3\u30D7\u30EB",importSkip:"\u2014 \u30B9\u30AD\u30C3\u30D7 \u2014",importPreview:"\u30D7\u30EC\u30D3\u30E5\u30FC",importNoSource:"\u307E\u305A\u30D5\u30A1\u30A4\u30EB\u3092\u9078\u3076\u304B\u3001\u884C\u3092\u8CBC\u308A\u4ED8\u3051\u3066\u304F\u3060\u3055\u3044\u3002",importNoRows:"\u30C7\u30FC\u30BF\u884C\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002",importAction:"\u30A4\u30F3\u30DD\u30FC\u30C8",exportAborted:"\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3092\u4E2D\u6B62\u3057\u307E\u3057\u305F",exportSheetName:"\u30C7\u30FC\u30BF",chart:"\u30B0\u30E9\u30D5",chartCategory:"\u30AB\u30C6\u30B4\u30EA",chartSeries:"\u7CFB\u5217",chartAddSeries:"\u7CFB\u5217\u3092\u8FFD\u52A0",chartRemoveSeries:"\u524A\u9664",chartSource:"\u30C7\u30FC\u30BF",chartSourceView:"\u30D5\u30A3\u30EB\u30BF\u30FC\u5F8C\u306E\u884C",chartSourceSelection:"\u9078\u629E\u3057\u305F\u884C",chartSourceAll:"\u3059\u3079\u3066\u306E\u884C",chartSourceRange:"\u9078\u629E\u7BC4\u56F2\uFF08{from}\u2013{to} \u884C\u76EE\uFF09",chartClose:"\u30B0\u30E9\u30D5\u3092\u9589\u3058\u308B",chartFullscreen:"\u5168\u753B\u9762\u8868\u793A",chartExitFullscreen:"\u5168\u753B\u9762\u8868\u793A\u3092\u7D42\u4E86",chartFloat:"\u30A6\u30A3\u30F3\u30C9\u30A6\u3067\u8868\u793A",chartDock:"\u30C9\u30C3\u30AD\u30F3\u30B0",chartNewWindow:"\u65B0\u3057\u3044\u30A6\u30A3\u30F3\u30C9\u30A6",chartMoveWindow:"\u30B0\u30E9\u30D5\u30A6\u30A3\u30F3\u30C9\u30A6\u3092\u79FB\u52D5",chartResizeWindow:"\u30B0\u30E9\u30D5\u30A6\u30A3\u30F3\u30C9\u30A6\u306E\u30B5\u30A4\u30BA\u3092\u5909\u66F4",chartResizeDock:"\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u30B0\u30E9\u30D5\u306E\u9AD8\u3055\u3092\u5909\u66F4",chartSwitch:"\u30AB\u30C6\u30B4\u30EA\u3068\u7CFB\u5217\u3092\u5165\u308C\u66FF\u3048",chartUnlink:"\u30EA\u30F3\u30AF\u89E3\u9664",chartLink:"\u30EA\u30F3\u30AF",chartUnlinked:"\u30EA\u30F3\u30AF\u89E3\u9664\u4E2D: \u30B0\u30E9\u30D5\u306F\u30C7\u30FC\u30BF\u3092\u4FDD\u6301\u3057\u3001\u30B0\u30EA\u30C3\u30C9\u306E\u5909\u66F4\u306B\u8FFD\u5F93\u3057\u307E\u305B\u3093\u3002",chartExportPng:"PNG",chartExportSvg:"SVG",chartExportFailed:"\u30B0\u30E9\u30D5\u3092\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002",chartCrossFiltered:"\u30B0\u30EA\u30C3\u30C9\u306F {value} \u3067\u7D5E\u308A\u8FBC\u307E\u308C\u3066\u3044\u307E\u3059\u3002",chartBlankCategory:"(\u7A7A\u767D)",chartTruncated:"\u4E0A\u4F4D {n} \u4EF6\u306E\u30AB\u30C6\u30B4\u30EA\u3092\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002\u6B8B\u308A\u306F\u300C\u305D\u306E\u4ED6\u300D\u306B\u307E\u3068\u3081\u3089\u308C\u3066\u3044\u307E\u3059\u3002",chartOther:"\u305D\u306E\u4ED6",chartEmpty:"\u307E\u3060\u8868\u793A\u3067\u304D\u308B\u3082\u306E\u304C\u3042\u308A\u307E\u305B\u3093\u3002",chartNoVisibleSeries:"\u8868\u793A\u4E2D\u306E\u7CFB\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002",chartNeedsMoreSeries:"\u3053\u306E\u30B0\u30E9\u30D5\u306E\u7A2E\u985E\u306B\u306F\u5024\u306E\u5217\u304C2\u3064\u4EE5\u4E0A\u5FC5\u8981\u3067\u3059\uFF08\u4F8B\uFF1A\u6700\u5C0F\u5024\u3068\u6700\u5927\u5024\uFF09\u30022\u3064\u76EE\u306E\u7CFB\u5217\u3092\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044\u3002",chartLoading:"\u8AAD\u307F\u8FBC\u307F\u4E2D\u2026",chartNeedsRecharts:"\u30B0\u30E9\u30D5\u306B\u306F\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u30D1\u30C3\u30B1\u30FC\u30B8 `recharts` \u304C\u5FC5\u8981\u3067\u3059\u3002\u63CF\u753B\u3059\u308B\u306B\u306F\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u3066\u304F\u3060\u3055\u3044\u3002",chartOnlyOneSeries:"\u3053\u306E\u30B0\u30E9\u30D5\u306E\u7A2E\u985E\u306F 1 \u7CFB\u5217\u306E\u307F\u8868\u793A\u3057\u307E\u3059\u3002",chartByColumn:"\u3053\u306E\u5217\u3067\u30B0\u30E9\u30D5\u3092\u4F5C\u6210",chartGroupBy:"\u5358\u4F4D",chartGroupNone:"\u5404\u5024",chartGroupAuto:"\u81EA\u52D5",chartGroupDay:"\u65E5",chartGroupWeek:"\u9031",chartGroupMonth:"\u6708",chartGroupQuarter:"\u56DB\u534A\u671F",chartGroupYear:"\u5E74",chartGroupBins:"{n} \u533A\u9593",chartBucketAdjusted:"1 \u3064\u306E\u8EF8\u306B\u306F\u533A\u9593\u304C\u591A\u3059\u304E\u308B\u305F\u3081\u3001\u7C97\u304F\u307E\u3068\u3081\u307E\u3057\u305F\u3002",chartWindowed:"{total} \u4EF6\u4E2D {shown} \u4EF6\u3092\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002",chartShowAll:"\u3059\u3079\u3066\u8868\u793A",chartCanvasHint:"\u30B0\u30E9\u30D5\u3002\u30B9\u30AF\u30ED\u30FC\u30EB\u3067\u62E1\u5927\u7E2E\u5C0F\u3001\u30C9\u30E9\u30C3\u30B0\u3067\u79FB\u52D5\u3001\u77E2\u5370\u30AD\u30FC\u3067\u79FB\u52D5\u30010 \u3067\u5168\u4F53\u8868\u793A\u3002",chartCanvasHintPick:"\u30B0\u30E9\u30D5\u3002\u77E2\u5370\u30AD\u30FC\u3067\u30AB\u30C6\u30B4\u30EA\u3092\u9078\u3073\u3001Enter \u307E\u305F\u306F Space \u3067\u305D\u306E\u30AB\u30C6\u30B4\u30EA\u3067\u8868\u3092\u7D5E\u308A\u8FBC\u307F\u307E\u3059\uFF08Ctrl \u3067\u8FFD\u52A0\uFF09\u3002+ \u3068 \u2212 \u3067\u62E1\u5927\u7E2E\u5C0F\u30010 \u3067\u5168\u4F53\u8868\u793A\u3002",chartCategoryFocus:"{category}: {values} \u2014 {count} \u4EF6\u4E2D {position} \u4EF6\u76EE",chartCategoryFiltered:"\u8868\u3092\u7D5E\u308A\u8FBC\u307F\u4E2D",chartAggSum:"\u5408\u8A08",chartAggAvg:"\u5E73\u5747",chartAggMin:"\u6700\u5C0F",chartAggMax:"\u6700\u5927",chartAggCount:"\u30AB\u30A6\u30F3\u30C8",chartAggDistinct:"\u4E00\u610F\u306E\u6570",chartAggFirst:"\u6700\u521D",chartAggLast:"\u6700\u5F8C",chartTypeColumn:"\u7E26\u68D2",chartTypeBar:"\u6A2A\u68D2",chartTypeLine:"\u6298\u308C\u7DDA",chartTypeArea:"\u9762",chartTypePie:"\u5186",chartTypeDonut:"\u30C9\u30FC\u30CA\u30C4",chartStacking:"\u7CFB\u5217\u306E\u914D\u7F6E",chartStackGrouped:"\u96C6\u5408",chartStackStacked:"\u7A4D\u307F\u4E0A\u3052",chartStackNormalized:"100% \u7A4D\u307F\u4E0A\u3052",chartFormat:"\u66F8\u5F0F",chartFormatTitle:"\u30BF\u30A4\u30C8\u30EB",chartFormatCategoryAxis:"\u9805\u76EE\u8EF8\u306E\u30BF\u30A4\u30C8\u30EB",chartFormatValueAxis:"\u5024\u8EF8\u306E\u30BF\u30A4\u30C8\u30EB",chartFormatLegend:"\u51E1\u4F8B",chartLegendTop:"\u4E0A",chartLegendBottom:"\u4E0B",chartLegendLeft:"\u5DE6",chartLegendRight:"\u53F3",chartLegendNone:"\u975E\u8868\u793A",chartFormatDataLabels:"\u30C7\u30FC\u30BF \u30E9\u30D9\u30EB",chartFormatScale:"\u5024\u306E\u76EE\u76DB",chartScaleLinear:"\u7DDA\u5F62",chartScaleLog:"\u5BFE\u6570",chartFormatTextSize:"\u6587\u5B57\u30B5\u30A4\u30BA",chartFormatTextColor:"\u6587\u5B57\u8272",chartFormatDefault:"\u65E2\u5B9A",chartFormatLabelAngle:"\u9805\u76EE\u30E9\u30D9\u30EB",chartAngleAuto:"\u81EA\u52D5",chartAngleFlat:"\u6C34\u5E73",chartFormatGridLines:"\u76EE\u76DB\u7DDA",chartGridValue:"\u5024\u8EF8",chartGridBoth:"\u4E21\u65B9\u306E\u8EF8",chartGridNone:"\u306A\u3057",chartFormatGridDashed:"\u7834\u7DDA\u306E\u76EE\u76DB\u7DDA",chartFormatLineWidth:"\u7DDA\u306E\u592A\u3055",chartFormatLineDashed:"\u7834\u7DDA",chartFormatFillOpacity:"\u5857\u308A\u3064\u3076\u3057\u306E\u4E0D\u900F\u660E\u5EA6",chartFormatDateFormat:"\u65E5\u4ED8\u5F62\u5F0F",chartFormatPalette:"\u914D\u8272",chartPaletteTheme:"\u30C6\u30FC\u30DE",chartPaletteClassic:"\u30AF\u30E9\u30B7\u30C3\u30AF",chartPaletteColorblind:"\u8272\u899A\u591A\u69D8\u6027\u306B\u914D\u616E",chartPaletteVivid:"\u30D3\u30D3\u30C3\u30C9",chartPaletteMonochrome:"\u5358\u8272",sparklineSummary:"{count} \u500B\u306E\u5024 ({min}\u301C{max})\u3001\u6700\u5F8C\u306F {last}",chartTypeWaterfall:"\u30A6\u30A9\u30FC\u30BF\u30FC\u30D5\u30A9\u30FC\u30EB",chartTypeFunnel:"\u3058\u3087\u3046\u3054",chartTypeTreemap:"\u30C4\u30EA\u30FC\u30DE\u30C3\u30D7",chartTypeHeatmap:"\u30D2\u30FC\u30C8\u30DE\u30C3\u30D7",chartTypeBox:"\u7BB1\u3072\u3052\u56F3",chartTypeRadar:"\u30EC\u30FC\u30C0\u30FC",chartTypeRangeBar:"\u7BC4\u56F2",chartBoxQ1:"Q1",chartBoxMedian:"\u4E2D\u592E\u5024",chartBoxQ3:"Q3",chartBoxOutlier:"\u5916\u308C\u5024",chartTotal:"\u5408\u8A08",chartTypeScatter:"\u6563\u5E03\u56F3",chartTypeBubble:"\u30D0\u30D6\u30EB",chartXAxis:"X \u8EF8",chartBubbleSize:"\u30B5\u30A4\u30BA",chartXYSampled:"{total} \u70B9\u4E2D {shown} \u70B9 (\u5747\u7B49\u306B\u62BD\u51FA)",licenseMissing:"\u30E9\u30A4\u30BB\u30F3\u30B9\u306A\u3057",licenseExpired:"\u30E9\u30A4\u30BB\u30F3\u30B9\u306E\u6709\u52B9\u671F\u9650\u304C\u5207\u308C\u3066\u3044\u307E\u3059",licenseReleaseNotCovered:"\u3053\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u306F\u30E9\u30A4\u30BB\u30F3\u30B9\u306E\u5BFE\u8C61\u5916\u3067\u3059",licenseDomainMismatch:"\u3053\u306E\u30C9\u30E1\u30A4\u30F3\u3067\u306F\u30E9\u30A4\u30BB\u30F3\u30B9\u304C\u7121\u52B9\u3067\u3059",licenseRevoked:"\u30E9\u30A4\u30BB\u30F3\u30B9\u306F\u53D6\u308A\u6D88\u3055\u308C\u307E\u3057\u305F",licenseInvalidFormat:"\u30E9\u30A4\u30BB\u30F3\u30B9\u30AD\u30FC\u306E\u5F62\u5F0F\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093",licenseInvalidSignature:"\u30E9\u30A4\u30BB\u30F3\u30B9\u306E\u7F72\u540D\u304C\u7121\u52B9\u3067\u3059",licenseEngineUnavailable:"\u30D6\u30E9\u30A6\u30B6\u30FC\u3067\u30E9\u30A4\u30BB\u30F3\u30B9\u3092\u691C\u8A3C\u3067\u304D\u307E\u305B\u3093\uFF08HTTPS \u304C\u5FC5\u8981\u3067\u3059\uFF09",calcAdd:"\u8A08\u7B97\u5217\u3092\u8FFD\u52A0\u2026",calcEdit:"\u8A08\u7B97\u5217\u3092\u7DE8\u96C6\u2026",calcRemove:"\u8A08\u7B97\u5217\u3092\u524A\u9664",calcTitleAdd:"\u8A08\u7B97\u5217\u3092\u8FFD\u52A0",calcTitleEdit:"\u8A08\u7B97\u5217\u3092\u7DE8\u96C6",calcName:"\u540D\u524D",calcFormula:"\u6570\u5F0F",calcFormulaHint:"\u5217\u306F [\u540D\u524D] \u3068\u66F8\u304D\u307E\u3059\u3002\u4F8B: [\u4FA1\u683C] * [\u6570\u91CF]",calcColumns:"\u5217",calcFunctions:"\u95A2\u6570",calcPreview:"\u30D7\u30EC\u30D3\u30E5\u30FC",calcPreviewEmpty:"\u30D7\u30EC\u30D3\u30E5\u30FC\u3059\u308B\u884C\u304C\u3042\u308A\u307E\u305B\u3093",calcErrorAt:"{message}\uFF08{position} \u6587\u5B57\u76EE\uFF09",calcAddButton:"\u8FFD\u52A0",calcArgsAtLeast:"{min} \u500B\u4EE5\u4E0A",formulaError_empty:"\u6570\u5F0F\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",formulaError_unclosedText:'\u6587\u5B57\u5217\u304C\u9589\u3058\u3066\u3044\u307E\u305B\u3093: " \u304C\u3042\u308A\u307E\u305B\u3093',formulaError_unclosedColumn:"\u5217\u540D\u304C\u9589\u3058\u3066\u3044\u307E\u305B\u3093: ] \u304C\u3042\u308A\u307E\u305B\u3093",formulaError_emptyColumn:"\u5217\u540D\u304C\u7A7A\u3067\u3059 []",formulaError_unexpectedChar:"\u4E88\u671F\u3057\u306A\u3044\u6587\u5B57 {text}",formulaError_expected:"{text} \u304C\u3042\u308A\u307E\u305B\u3093",formulaError_cellAfterColon:'":" \u306E\u5F8C\u306B\u30BB\u30EB\u304C\u3042\u308A\u307E\u305B\u3093',formulaError_unknownName:"\u4E0D\u660E\u306A\u540D\u524D {name} \u2014 \u5217\u306F [{name}] \u3068\u66F8\u304D\u307E\u3059",formulaError_unexpected:"\u4E88\u671F\u3057\u306A\u3044 {text}",formulaError_endsEarly:"\u6570\u5F0F\u304C\u9014\u4E2D\u3067\u7D42\u308F\u3063\u3066\u3044\u307E\u3059",formulaError_trailing:"\u672B\u5C3E\u306B\u4E88\u671F\u3057\u306A\u3044\u30C6\u30AD\u30B9\u30C8\u304C\u3042\u308A\u307E\u3059",formulaError_unknownColumn:"\u5217 [{name}] \u306F\u3042\u308A\u307E\u305B\u3093",formulaError_unknownFunction:"\u4E0D\u660E\u306A\u95A2\u6570 {name}",formulaError_argCount:"{name} \u306E\u5F15\u6570\u306F {range} \u500B\u3067\u3059",formulaError_cellsNotAllowed:"A1 \u306E\u3088\u3046\u306A\u30BB\u30EB\u53C2\u7167\u306F\u3053\u3053\u3067\u306F\u4F7F\u3048\u307E\u305B\u3093 \u2014 \u5217\u306F [\u540D\u524D] \u3068\u66F8\u304D\u307E\u3059"},Cm={ok:"\uD655\uC778",cancel:"\uCDE8\uC18C",apply:"\uC801\uC6A9",close:"\uB2EB\uAE30",clear:"\uC9C0\uC6B0\uAE30",save:"\uC800\uC7A5",search:"\uAC80\uC0C9...",selectAll:"\uBAA8\uB450 \uC120\uD0DD",showAll:"\uBAA8\uB450 \uD45C\uC2DC",remove:"\uC81C\uAC70",none:"\uC5C6\uC74C",toolbarSearch:"\uAC80\uC0C9...",exportMenu:"\uB0B4\uBCF4\uB0B4\uAE30",exportCsv:"CSV\uB85C \uB0B4\uBCF4\uB0B4\uAE30",exportExcel:"\uBAA8\uB4E0 \uB370\uC774\uD130\uB97C Excel\uB85C \uB0B4\uBCF4\uB0B4\uAE30",exportExcelSelected:"\uC120\uD0DD\uD55C \uD589\uC744 Excel\uB85C \uB0B4\uBCF4\uB0B4\uAE30",exportPdf:"PDF\uB85C \uB0B4\uBCF4\uB0B4\uAE30",exporting:"\uB0B4\uBCF4\uB0B4\uB294 \uC911\u2026",columns:"\uC5F4",hiddenColumns:"\uC228\uACA8\uC9C4 \uC5F4",noHiddenColumns:"\uC228\uACA8\uC9C4 \uC5F4\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",sortAsc:"\uC624\uB984\uCC28\uC21C \uC815\uB82C",sortDesc:"\uB0B4\uB9BC\uCC28\uC21C \uC815\uB82C",clearSort:"\uC815\uB82C \uC9C0\uC6B0\uAE30",cardSortBy:"\uC815\uB82C \uAE30\uC900",groupByColumn:"\uC774 \uC5F4\uB85C \uADF8\uB8F9\uD654",ungroupColumn:"\uADF8\uB8F9\uD654\uC5D0\uC11C \uC81C\uC678",showGroupPanel:"\uADF8\uB8F9 \uD328\uB110 \uD45C\uC2DC",hideGroupPanel:"\uADF8\uB8F9 \uD328\uB110 \uC228\uAE30\uAE30",showFooter:"\uBC14\uB2E5\uAE00 \uD45C\uC2DC",hideFooter:"\uBC14\uB2E5\uAE00 \uC228\uAE30\uAE30",showGroupFooters:"\uADF8\uB8F9 \uBC14\uB2E5\uAE00 \uD45C\uC2DC",hideGroupFooters:"\uADF8\uB8F9 \uBC14\uB2E5\uAE00 \uC228\uAE30\uAE30",hideColumn:"\uC774 \uC5F4 \uC228\uAE30\uAE30",fieldChooser:"\uD544\uB4DC \uC120\uD0DD\uAE30\u2026",bestFit:"\uB108\uBE44 \uC790\uB3D9 \uB9DE\uCDA4",bestFitAll:"\uB108\uBE44 \uC790\uB3D9 \uB9DE\uCDA4(\uBAA8\uB4E0 \uC5F4)",pinRowTop:"\uD589\uC744 \uC704\uCABD\uC5D0 \uACE0\uC815",pinRowBottom:"\uD589\uC744 \uC544\uB798\uCABD\uC5D0 \uACE0\uC815",unpinRow:"\uD589 \uACE0\uC815 \uD574\uC81C",findLabel:"\uD45C\uC5D0\uC11C \uCC3E\uAE30",findPrevious:"\uC774\uC804 \uC77C\uCE58 \uD56D\uBAA9",findNext:"\uB2E4\uC74C \uC77C\uCE58 \uD56D\uBAA9",findClose:"\uCC3E\uAE30 \uB2EB\uAE30",findCount:"{n}/{count}",findNone:"\uC77C\uCE58 \uD56D\uBAA9 \uC5C6\uC74C",renameColumn:"\uC5F4 \uC774\uB984 \uBC14\uAFB8\uAE30",fixedPosition:"\uACE0\uC815 \uC704\uCE58 \uC124\uC815",pinLeft:"\uC67C\uCABD",pinRight:"\uC624\uB978\uCABD",pinSticky:"\uACE0\uC815",unpin:"\uACE0\uC815 \uD574\uC81C",moveLeft:"\uC67C\uCABD\uC73C\uB85C \uC774\uB3D9",moveRight:"\uC624\uB978\uCABD\uC73C\uB85C \uC774\uB3D9",filterPlaceholder:"\uD544\uD130\u2026",filterColumnAria:"{column} \uD544\uD130",filterOperatorDefault:"\uAE30\uBCF8\uAC12",filterOperatorAria:"{column} \uD544\uD130 \uC5F0\uC0B0\uC790",filterSelectAll:"\uBAA8\uB450 \uC120\uD0DD",filterBlank:"(\uBE44\uC5B4 \uC788\uC74C)",filterNonBlank:"(\uBE44\uC5B4 \uC788\uC9C0 \uC54A\uC74C)",filterEmptyText:"(\uBE48 \uD14D\uC2A4\uD2B8)",filterSpace:"(\uACF5\uBC31 1\uAC1C)",filterSpaces:"(\uACF5\uBC31 {n}\uAC1C)",filterNoMatch:"\uC77C\uCE58\uD558\uB294 \uAC12\uC774 \uC5C6\uC2B5\uB2C8\uB2E4",filterLoading:"\uAC12\uC744 \uBD88\uB7EC\uC624\uB294 \uC911\u2026",filterTruncated:"\uCC98\uC74C \uAC12\uB9CC \uD45C\uC2DC\uB429\uB2C8\uB2E4 \u2014 \uB098\uBA38\uC9C0\uB294 \uAC80\uC0C9\uD574 \uC8FC\uC138\uC694.",filterRemove:"\uD544\uD130 \uC81C\uAC70",filterToggle:"\uD544\uD130 \uC801\uC6A9",filterEditBuilder:"\uD544\uD130 \uD3B8\uC9D1",filterNone:"\uD544\uD130 \uC5C6\uC74C",filterActive:"\uD544\uD130 \uC801\uC6A9 \uC911",opEquals:"\uAC19\uC74C",opNotEquals:"\uAC19\uC9C0 \uC54A\uC74C",opGreater:">",opGreaterOrEqual:"\u2265",opLess:"<",opLessOrEqual:"\u2264",opContains:"\uD3EC\uD568",opNotContains:"\uD3EC\uD568\uD558\uC9C0 \uC54A\uC74C",opStartsWith:"(\uC73C)\uB85C \uC2DC\uC791",opEndsWith:"(\uC73C)\uB85C \uB05D\uB0A8",opIsBlank:"\uBE44\uC5B4 \uC788\uC74C",opIsNotBlank:"\uBE44\uC5B4 \uC788\uC9C0 \uC54A\uC74C",opIsOneOf:"\uB2E4\uC74C \uC911 \uD558\uB098",opIsBetween:"\uC0AC\uC774",opValuesCount:"\uAC12 {n}\uAC1C",opInPeriod:"\uAE30\uAC04 \uB0B4",periodToday:"\uC624\uB298",periodYesterday:"\uC5B4\uC81C",periodTomorrow:"\uB0B4\uC77C",periodThisWeek:"\uC774\uBC88 \uC8FC",periodLastWeek:"\uC9C0\uB09C\uC8FC",periodNextWeek:"\uB2E4\uC74C \uC8FC",periodThisMonth:"\uC774\uBC88 \uB2EC",periodLastMonth:"\uC9C0\uB09C\uB2EC",periodNextMonth:"\uB2E4\uC74C \uB2EC",periodThisQuarter:"\uC774\uBC88 \uBD84\uAE30",periodLastQuarter:"\uC9C0\uB09C \uBD84\uAE30",periodNextQuarter:"\uB2E4\uC74C \uBD84\uAE30",periodThisYear:"\uC62C\uD574",periodLastYear:"\uC791\uB144",periodNextYear:"\uB0B4\uB144",periodYearToDate:"\uC5F0\uCD08\uBD80\uD130 \uC624\uB298\uAE4C\uC9C0",periodLastDays:"\uCD5C\uADFC {n}\uC77C",periodNextDays:"\uC55E\uC73C\uB85C {n}\uC77C",filterAnd:"\uADF8\uB9AC\uACE0 (And)",filterOr:"\uB610\uB294 (Or)",builderTitle:"\uD544\uD130 \uC791\uC131\uAE30",builderCombine:"\uC870\uAC74 \uACB0\uD569 \uBC29\uC2DD",builderAddCondition:"\uC870\uAC74 \uCD94\uAC00",builderAddGroup:"\uADF8\uB8F9 \uCD94\uAC00",builderRemoveGroup:"\uADF8\uB8F9 \uC81C\uAC70",builderRemoveCondition:"\uC870\uAC74 \uC81C\uAC70",builderEmpty:"\uC544\uC9C1 \uC870\uAC74\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",builderColumn:"\uC5F4",builderOperator:"\uC5F0\uC0B0\uC790",builderValue:"\uAC12",builderValueFrom:"\uC2DC\uC791",builderValueTo:"\uB05D",builderValuePlaceholder:"\uAC12\uC744 \uC785\uB825\uD558\uC138\uC694",builderOpen:"\uD544\uD130 \uBE4C\uB354\u2026",builderClearAll:"\uBAA8\uB450 \uC9C0\uC6B0\uAE30",builderConditionButton:"+ \uC870\uAC74",builderGroupButton:"+ \uADF8\uB8F9",builderTrue:"\uCC38",builderFalse:"\uAC70\uC9D3",builderPeriod:"\uAE30\uAC04",builderDays:"\uC77C\uC218",filterCustom:"(\uC0AC\uC6A9\uC790 \uC9C0\uC815\u2026)",filterPopupAria:"{column} \uD544\uD130",importOpen:"\uAC00\uC838\uC624\uAE30\u2026",groupPanelHint:"\uADF8\uB8F9\uD654\uD560 \uC5F4\uC744 \uC5EC\uAE30\uB85C \uB04C\uC5B4 \uB193\uC73C\uC138\uC694",groupAddLevel:"\uADF8\uB8F9\uD654 \uC218\uC900 \uCD94\uAC00",groupAddLevelButton:"+ \uC218\uC900 \uCD94\uAC00\u2026",groupNoGrouping:"(\uADF8\uB8F9\uD654 \uC5C6\uC74C)",groupLevelAria:"\uADF8\uB8F9\uD654 \uC218\uC900 {n}",groupRemoveAria:"{column} \uC81C\uAC70",groupExpandAll:"\uBAA8\uB450 \uD655\uC7A5",groupCollapseAll:"\uBAA8\uB450 \uCD95\uC18C",pagerFirst:"\uCCAB \uD398\uC774\uC9C0",pagerPrevious:"\uC774\uC804 \uD398\uC774\uC9C0",pagerNext:"\uB2E4\uC74C \uD398\uC774\uC9C0",pagerLast:"\uB9C8\uC9C0\uB9C9 \uD398\uC774\uC9C0",pagerPage:"\uD398\uC774\uC9C0",pagerOf:"/",pagerRowsPerPage:"\uD398\uC774\uC9C0\uB2F9 \uD589 \uC218",pagerAria:"\uD398\uC774\uC9C0 \uB9E4\uAE40",pagerPageButton:"{n}\uD398\uC774\uC9C0",selectAllRows:"\uBAA8\uB4E0 \uD589 \uC120\uD0DD",selectRowAria:"{row}\uD589 \uC120\uD0DD",selectGroupAria:"{group}\uC758 {count}\uAC1C \uD589 \uC120\uD0DD",summaryAria:"\uC694\uC57D",columnTotalsAria:"\uC5F4 \uD569\uACC4",rowActions:"\uD589 \uC791\uC5C5",detailsAria:"\uC138\uBD80 \uC815\uBCF4",rowNumberAria:"\uD589 \uBC88\uD638",noteEditorAria:"\uC140 \uBA54\uBAA8",notePlaceholder:"\uC774 \uC140\uC5D0 \uB300\uD55C \uBA54\uBAA8 \uC791\uC131\u2026",addNote:"\uBA54\uBAA8 \uCD94\uAC00\u2026",editNote:"\uBA54\uBAA8 \uD3B8\uC9D1\u2026",deleteNote:"\uBA54\uBAA8 \uC0AD\uC81C",expandDetails:"\uC138\uBD80 \uC815\uBCF4 \uD655\uC7A5",collapseDetails:"\uC138\uBD80 \uC815\uBCF4 \uCD95\uC18C",expandTreeRow:"\uD589 \uD3BC\uCE58\uAE30",collapseTreeRow:"\uD589 \uC811\uAE30",expandColumnGroup:"\uC5F4 \uADF8\uB8F9 \uD3BC\uCE58\uAE30",collapseColumnGroup:"\uC5F4 \uADF8\uB8F9 \uC811\uAE30",dragToReorder:"\uB04C\uC5B4\uC11C \uC21C\uC11C \uBCC0\uACBD",menuCopy:"\uBCF5\uC0AC",menuCopyWithHeaders:"\uBA38\uB9AC\uAE00 \uD3EC\uD568 \uBCF5\uC0AC",menuCopyWithGroupHeaders:"\uADF8\uB8F9 \uBA38\uB9AC\uAE00 \uD3EC\uD568 \uBCF5\uC0AC",menuCut:"\uC798\uB77C\uB0B4\uAE30",menuPaste:"\uBD99\uC5EC\uB123\uAE30",menuExport:"\uB0B4\uBCF4\uB0B4\uAE30",menuChartRange:"\uC120\uD0DD\uD55C \uC140 \uCC28\uD2B8",statsSum:"\uD569\uACC4",statsCount:"\uAC1C\uC218",statsAvg:"\uD3C9\uADE0",statsMin:"\uCD5C\uC18C",statsMax:"\uCD5C\uB300",statsCells:"\uC140",statsTooLarge:"\uC120\uD0DD \uBC94\uC704\uAC00 \uB108\uBB34 \uCEE4\uC11C \uD569\uACC4\uB97C \uB0BC \uC218 \uC5C6\uC2B5\uB2C8\uB2E4",statusRows:"\uD589",statusFiltered:"\uD544\uD130\uB428",statusSelected:"\uC120\uD0DD\uB428",summaryRows:"\uD589",announceRows:"{n}\uAC1C \uD589",announceSortedBy:"{columns} \uAE30\uC900 \uC815\uB82C",announceSelected:"{n}\uAC1C \uC120\uD0DD\uB428",announceAscending:"\uC624\uB984\uCC28\uC21C",announceDescending:"\uB0B4\uB9BC\uCC28\uC21C",sideFilters:"\uD544\uD130",sideBarAria:"\uB3C4\uAD6C \uD328\uB110",sideClearFilters:"\uBAA8\uB4E0 \uD544\uD130 \uC9C0\uC6B0\uAE30",summarySum:"\uD569\uACC4",summaryAvg:"\uD3C9\uADE0",summaryMin:"\uCD5C\uC18C",summaryMax:"\uCD5C\uB300",summaryCount:"\uAC1C\uC218",summaryDistinct:"\uACE0\uC720 \uAC1C\uC218",summaryCustom:"\uC0AC\uC6A9\uC790 \uC9C0\uC815",noTotal:"\uD569\uACC4 \uC5C6\uC74C",busy:"\uCC98\uB9AC \uC911\u2026",busyLoading:"\uD589\uC744 \uBD88\uB7EC\uC624\uB294 \uC911\u2026",rowsLoadFailed:"\uC774 \uD589\uC744 \uBD88\uB7EC\uC624\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.",retryLoad:"\uB2E4\uC2DC \uC2DC\uB3C4",busyEncoding:"\uB370\uC774\uD130\uB97C \uC900\uBE44\uD558\uB294 \uC911\u2026",busyFiltering:"\uD589\uC744 \uD544\uD130\uB9C1\uD558\uB294 \uC911\u2026",busySorting:"\uD589\uC744 \uC815\uB82C\uD558\uB294 \uC911\u2026",busyComputing:"\uD544\uD130\uB9C1 \uBC0F \uC815\uB82C \uC911\u2026",busyGrouping:"\uADF8\uB8F9\uC744 \uB9CC\uB4DC\uB294 \uC911\u2026",busyAggregating:"\uD569\uACC4\uB97C \uACC4\uC0B0\uD558\uB294 \uC911\u2026",busyProjecting:"\uBCF4\uAE30\uB97C \uC5C5\uB370\uC774\uD2B8\uD558\uB294 \uC911\u2026",busyExporting:"\uD30C\uC77C\uC744 \uB9CC\uB4DC\uB294 \uC911\u2026",noData:"\uB370\uC774\uD130\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4",editNewRow:"\uC0C8 \uD589",editSaveChanges:"\uBCC0\uACBD \uB0B4\uC6A9 \uC800\uC7A5",editDiscardChanges:"\uBCC0\uACBD \uB0B4\uC6A9 \uCDE8\uC18C",editRow:"\uD589 \uD3B8\uC9D1",editRowMenu:"\uD589 \uD3B8\uC9D1\u2026",editDeleteRow:"\uD589 \uC0AD\uC81C",editUndoDelete:"\uC0AD\uC81C \uCDE8\uC18C",editActions:"\uC791\uC5C5",editSaveRow:"\uD589 \uC800\uC7A5",editSaving:"\uC800\uC7A5 \uC911\u2026",editEditingRow:"{row}\uD589 \uD3B8\uC9D1 \uC911",editSaveCount:"{n}\uAC1C \uD589 \uC800\uC7A5",editCannotSave:"\uC800\uC7A5\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4",editSaveFailed:"\uBCC0\uACBD \uB0B4\uC6A9\uC744 \uC800\uC7A5\uD558\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.",rowStatusNew:"\uC0C8 \uD589(\uC800\uC7A5\uB418\uC9C0 \uC54A\uC74C)",rowStatusChanged:"\uC800\uC7A5\uB418\uC9C0 \uC54A\uC740 \uBCC0\uACBD \uB0B4\uC6A9",rowStatusRemoved:"\uC0AD\uC81C \uC608\uC815",rowStatusSaving:"\uC800\uC7A5 \uC911\u2026",rowStatusSaved:"\uC800\uC7A5\uB428",rowStatusError:"\uC800\uC7A5 \uC2E4\uD328",rowStatusRetry:"\uB2E4\uC2DC \uC2DC\uB3C4",rowStatusDelete:"\uD589 \uC0AD\uC81C",editDeleteConfirm:"\uC774 \uD589\uC744 \uC0AD\uC81C\uD560\uAE4C\uC694?",editAddRowUndo:"\uD589 \uCD94\uAC00",editDeleteRowUndo:"\uD589 \uC0AD\uC81C",editCellUndo:"{column} \uD3B8\uC9D1",editFillUndo:"{count}\uAC1C \uC140 \uCC44\uC6B0\uAE30",editPasteUndo:"{count}\uAC1C \uC140 \uBD99\uC5EC\uB123\uAE30",editCutUndo:"{count}\uAC1C \uC140 \uC798\uB77C\uB0B4\uAE30",editGroupTotal:"\uADF8\uB8F9 \uD569\uACC4",editGroupTotalUndo:"{column} \uD569\uACC4 \uBCC0\uACBD({count}\uAC1C \uD589)",editNoMatch:"\uC77C\uCE58 \uD56D\uBAA9 \uC5C6\uC74C",formEditTitle:"\uD589 \uD3B8\uC9D1",formAddTitle:"\uC0C8 \uD589",formShortcut:"{key}+Enter\uB85C \uC800\uC7A5 \xB7 Esc\uB85C \uCDE8\uC18C",validationRequired:"\uD544\uC218 \uD56D\uBAA9\uC785\uB2C8\uB2E4",validationNumber:"\uC22B\uC790\uC5EC\uC57C \uD569\uB2C8\uB2E4",validationNumberLocale:"\uC62C\uBC14\uB978 \uC22B\uC790\uAC00 \uC544\uB2D9\uB2C8\uB2E4. \uC608: {example}",validationMin:"{min} \uC774\uC0C1\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4",validationMax:"{max} \uC774\uD558\uC5EC\uC57C \uD569\uB2C8\uB2E4",validationFormat:"\uD615\uC2DD\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4",validationEmail:"\uC774\uBA54\uC77C \uC8FC\uC18C\uAC00 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4",validationInvalid:"\uAC12\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4",dateCalendar:"\uB2EC\uB825",dateOpenCalendar:"\uB2EC\uB825 \uC5F4\uAE30",datePreviousMonth:"\uC774\uC804 \uB2EC",dateNextMonth:"\uB2E4\uC74C \uB2EC",monthJanuary:"1\uC6D4",monthFebruary:"2\uC6D4",monthMarch:"3\uC6D4",monthApril:"4\uC6D4",monthMay:"5\uC6D4",monthJune:"6\uC6D4",monthJuly:"7\uC6D4",monthAugust:"8\uC6D4",monthSeptember:"9\uC6D4",monthOctober:"10\uC6D4",monthNovember:"11\uC6D4",monthDecember:"12\uC6D4",weekStartsOn:"0",weekdaySu:"\uC77C",weekdayMo:"\uC6D4",weekdayTu:"\uD654",weekdayWe:"\uC218",weekdayTh:"\uBAA9",weekdayFr:"\uAE08",weekdaySa:"\uD1A0",importTitle:"\uB370\uC774\uD130 \uAC00\uC838\uC624\uAE30",importStepSource:"1. \uC6D0\uBCF8",importStepMap:"2. \uC5F4 \uB9E4\uD551",importFile:"CSV \uD30C\uC77C",importPaste:"\u2026\uB610\uB294 \uD589 \uBD99\uC5EC\uB123\uAE30",importSeparator:"\uAD6C\uBD84 \uAE30\uD638",importSeparatorAuto:"\uC790\uB3D9 \uAC10\uC9C0",importSeparatorComma:"\uC27C\uD45C ,",importSeparatorSemicolon:"\uC138\uBBF8\uCF5C\uB860 ;",importSeparatorTab:"\uD0ED",importSeparatorPipe:"\uD30C\uC774\uD504 |",importFileColumn:"\uD30C\uC77C \uC5F4",importDetected:"\uAC10\uC9C0\uB428",importGridColumn:"\uADF8\uB9AC\uB4DC \uC5F4",importSample:"\uC608\uC2DC",importSkip:"\u2014 \uAC74\uB108\uB6F0\uAE30 \u2014",importPreview:"\uBBF8\uB9AC \uBCF4\uAE30",importNoSource:"\uBA3C\uC800 \uD30C\uC77C\uC744 \uC120\uD0DD\uD558\uAC70\uB098 \uD589\uC744 \uBD99\uC5EC\uB123\uC73C\uC138\uC694.",importNoRows:"\uB370\uC774\uD130 \uD589\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.",importAction:"\uAC00\uC838\uC624\uAE30",exportAborted:"\uB0B4\uBCF4\uB0B4\uAE30\uAC00 \uC911\uB2E8\uB418\uC5C8\uC2B5\uB2C8\uB2E4",exportSheetName:"\uB370\uC774\uD130",chart:"\uCC28\uD2B8",chartCategory:"\uBC94\uC8FC",chartSeries:"\uACC4\uC5F4",chartAddSeries:"\uACC4\uC5F4 \uCD94\uAC00",chartRemoveSeries:"\uC81C\uAC70",chartSource:"\uB370\uC774\uD130",chartSourceView:"\uD544\uD130\uB9C1\uB41C \uD589",chartSourceSelection:"\uC120\uD0DD\uD55C \uD589",chartSourceAll:"\uBAA8\uB4E0 \uD589",chartSourceRange:"\uC120\uD0DD\uD55C \uBC94\uC704({from}\u2013{to}\uD589)",chartClose:"\uCC28\uD2B8 \uB2EB\uAE30",chartFullscreen:"\uC804\uCCB4 \uD654\uBA74",chartExitFullscreen:"\uC804\uCCB4 \uD654\uBA74 \uC885\uB8CC",chartFloat:"\uCC3D\uC73C\uB85C \uBD84\uB9AC",chartDock:"\uB3C4\uD0B9",chartNewWindow:"\uC0C8 \uCC3D",chartMoveWindow:"\uCC28\uD2B8 \uCC3D \uC774\uB3D9",chartResizeWindow:"\uCC28\uD2B8 \uCC3D \uD06C\uAE30 \uC870\uC815",chartResizeDock:"\uB4DC\uB798\uADF8\uD558\uC5EC \uCC28\uD2B8 \uB192\uC774 \uBCC0\uACBD",chartSwitch:"\uBC94\uC8FC\uC640 \uACC4\uC5F4 \uBC14\uAFB8\uAE30",chartUnlink:"\uC5F0\uACB0 \uD574\uC81C",chartLink:"\uC5F0\uACB0",chartUnlinked:"\uC5F0\uACB0 \uD574\uC81C\uB428: \uCC28\uD2B8\uB294 \uB370\uC774\uD130\uB97C \uC720\uC9C0\uD558\uBA70 \uB354 \uC774\uC0C1 \uADF8\uB9AC\uB4DC\uB97C \uB530\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.",chartExportPng:"PNG",chartExportSvg:"SVG",chartExportFailed:"\uCC28\uD2B8\uB97C \uB0B4\uBCF4\uB0B4\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.",chartCrossFiltered:"\uADF8\uB9AC\uB4DC\uAC00 {value}(\uC73C)\uB85C \uD544\uD130\uB9C1\uB418\uC5C8\uC2B5\uB2C8\uB2E4.",chartBlankCategory:"(\uBE44\uC5B4 \uC788\uC74C)",chartTruncated:"\uC0C1\uC704 {n}\uAC1C \uBC94\uC8FC\uB97C \uD45C\uC2DC\uD569\uB2C8\uB2E4. \uB098\uBA38\uC9C0\uB294 \u201C\uAE30\uD0C0\u201D\uB85C \uBB36\uC600\uC2B5\uB2C8\uB2E4.",chartOther:"\uAE30\uD0C0",chartEmpty:"\uC544\uC9C1 \uD45C\uC2DC\uD560 \uB0B4\uC6A9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",chartNoVisibleSeries:"\uD45C\uC2DC\uB41C \uACC4\uC5F4\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",chartNeedsMoreSeries:"\uC774 \uCC28\uD2B8 \uC720\uD615\uC5D0\uB294 \uAC12 \uC5F4\uC774 \uB450 \uAC1C \uC774\uC0C1 \uD544\uC694\uD569\uB2C8\uB2E4(\uC608: \uCD5C\uC19F\uAC12\uACFC \uCD5C\uB313\uAC12). \uB450 \uBC88\uC9F8 \uACC4\uC5F4\uC744 \uCD94\uAC00\uD558\uC138\uC694.",chartLoading:"\uBD88\uB7EC\uC624\uB294 \uC911\u2026",chartNeedsRecharts:"\uCC28\uD2B8\uC5D0\uB294 \uC120\uD0DD \uD328\uD0A4\uC9C0 `recharts`\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4. \uC124\uCE58\uD55C \uB4A4 \uC0AC\uC6A9\uD558\uC138\uC694.",chartOnlyOneSeries:"\uC774 \uCC28\uD2B8 \uC720\uD615\uC740 \uACC4\uC5F4 \uD558\uB098\uB9CC \uD45C\uC2DC\uD569\uB2C8\uB2E4.",chartByColumn:"\uC774 \uC5F4\uB85C \uCC28\uD2B8 \uB9CC\uB4E4\uAE30",chartGroupBy:"\uAE30\uC900",chartGroupNone:"\uAC01 \uAC12",chartGroupAuto:"\uC790\uB3D9",chartGroupDay:"\uC77C",chartGroupWeek:"\uC8FC",chartGroupMonth:"\uC6D4",chartGroupQuarter:"\uBD84\uAE30",chartGroupYear:"\uC5F0\uB3C4",chartGroupBins:"\uAD6C\uAC04 {n}\uAC1C",chartBucketAdjusted:"\uCD95 \uD558\uB098\uC5D0 \uD45C\uC2DC\uD558\uAE30\uC5D0 \uAD6C\uAC04\uC774 \uB108\uBB34 \uB9CE\uC544 \uB354 \uD06C\uAC8C \uBB36\uC5C8\uC2B5\uB2C8\uB2E4.",chartWindowed:"{total}\uAC1C \uC911 {shown}\uAC1C\uB97C \uD45C\uC2DC\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4.",chartShowAll:"\uBAA8\uB450 \uD45C\uC2DC",chartCanvasHint:"\uCC28\uD2B8. \uC2A4\uD06C\uB864\uD558\uC5EC \uD655\uB300/\uCD95\uC18C, \uB04C\uC5B4\uC11C \uC774\uB3D9, \uD654\uC0B4\uD45C \uD0A4\uB85C \uC774\uB3D9, 0\uC744 \uB20C\uB7EC \uC804\uCCB4 \uBCF4\uAE30.",chartCanvasHintPick:"\uCC28\uD2B8. \uD654\uC0B4\uD45C \uD0A4\uB85C \uBC94\uC8FC\uB97C \uACE0\uB974\uACE0 Enter \uB610\uB294 Space\uB85C \uADF8 \uBC94\uC8FC\uB85C \uD45C\uB97C \uD544\uD130\uB9C1\uD569\uB2C8\uB2E4(Ctrl\uB85C \uCD94\uAC00). +\uC640 \u2212\uB85C \uD655\uB300\xB7\uCD95\uC18C, 0\uC73C\uB85C \uC804\uCCB4 \uBCF4\uAE30.",chartCategoryFocus:"{category}: {values} \u2014 {count}\uAC1C \uC911 {position}\uBC88\uC9F8",chartCategoryFiltered:"\uD45C\uB97C \uD544\uD130\uB9C1\uD558\uB294 \uC911",chartAggSum:"\uD569\uACC4",chartAggAvg:"\uD3C9\uADE0",chartAggMin:"\uCD5C\uC18C",chartAggMax:"\uCD5C\uB300",chartAggCount:"\uAC1C\uC218",chartAggDistinct:"\uACE0\uC720 \uAC1C\uC218",chartAggFirst:"\uCCAB \uAC12",chartAggLast:"\uB9C8\uC9C0\uB9C9 \uAC12",chartTypeColumn:"\uC138\uB85C \uB9C9\uB300",chartTypeBar:"\uAC00\uB85C \uB9C9\uB300",chartTypeLine:"\uC120",chartTypeArea:"\uC601\uC5ED",chartTypePie:"\uC6D0",chartTypeDonut:"\uB3C4\uB11B",chartStacking:"\uACC4\uC5F4 \uBC30\uCE58",chartStackGrouped:"\uBB36\uC740",chartStackStacked:"\uB204\uC801",chartStackNormalized:"100% \uB204\uC801",chartFormat:"\uC11C\uC2DD",chartFormatTitle:"\uC81C\uBAA9",chartFormatCategoryAxis:"\uBC94\uC8FC \uCD95 \uC81C\uBAA9",chartFormatValueAxis:"\uAC12 \uCD95 \uC81C\uBAA9",chartFormatLegend:"\uBC94\uB840",chartLegendTop:"\uC704\uCABD",chartLegendBottom:"\uC544\uB798\uCABD",chartLegendLeft:"\uC67C\uCABD",chartLegendRight:"\uC624\uB978\uCABD",chartLegendNone:"\uC228\uAE40",chartFormatDataLabels:"\uB370\uC774\uD130 \uB808\uC774\uBE14",chartFormatScale:"\uAC12 \uB208\uAE08",chartScaleLinear:"\uC120\uD615",chartScaleLog:"\uB85C\uADF8",chartFormatTextSize:"\uAE00\uC790 \uD06C\uAE30",chartFormatTextColor:"\uAE00\uC790 \uC0C9",chartFormatDefault:"\uAE30\uBCF8\uAC12",chartFormatLabelAngle:"\uD56D\uBAA9 \uB808\uC774\uBE14",chartAngleAuto:"\uC790\uB3D9",chartAngleFlat:"\uAC00\uB85C",chartFormatGridLines:"\uB208\uAE08\uC120",chartGridValue:"\uAC12 \uCD95",chartGridBoth:"\uB450 \uCD95 \uBAA8\uB450",chartGridNone:"\uC5C6\uC74C",chartFormatGridDashed:"\uC810\uC120 \uB208\uAE08\uC120",chartFormatLineWidth:"\uC120 \uAD75\uAE30",chartFormatLineDashed:"\uC810\uC120",chartFormatFillOpacity:"\uCC44\uC6B0\uAE30 \uBD88\uD22C\uBA85\uB3C4",chartFormatDateFormat:"\uB0A0\uC9DC \uD615\uC2DD",chartFormatPalette:"\uC0C9\uC0C1",chartPaletteTheme:"\uD14C\uB9C8",chartPaletteClassic:"\uD074\uB798\uC2DD",chartPaletteColorblind:"\uC0C9\uAC01 \uC774\uC0C1 \uBC30\uB824",chartPaletteVivid:"\uC120\uBA85\uD558\uAC8C",chartPaletteMonochrome:"\uB2E8\uC0C9",sparklineSummary:"\uAC12 {count}\uAC1C, {min}\uBD80\uD130 {max}\uAE4C\uC9C0, \uB9C8\uC9C0\uB9C9 {last}",chartTypeWaterfall:"\uD3ED\uD3EC",chartTypeFunnel:"\uAE54\uB54C\uAE30\uD615",chartTypeTreemap:"\uD2B8\uB9AC\uB9F5",chartTypeHeatmap:"\uD788\uD2B8\uB9F5",chartTypeBox:"\uC0C1\uC790 \uADF8\uB9BC",chartTypeRadar:"\uBC29\uC0AC\uD615",chartTypeRangeBar:"\uBC94\uC704",chartBoxQ1:"Q1",chartBoxMedian:"\uC911\uC559\uAC12",chartBoxQ3:"Q3",chartBoxOutlier:"\uC774\uC0C1\uAC12",chartTotal:"\uD569\uACC4",chartTypeScatter:"\uBD84\uC0B0\uD615",chartTypeBubble:"\uAC70\uD488\uD615",chartXAxis:"X\uCD95",chartBubbleSize:"\uD06C\uAE30",chartXYSampled:"{total}\uAC1C \uC911 {shown}\uAC1C \uC810, \uADE0\uB4F1 \uD45C\uBCF8",licenseMissing:"\uB77C\uC774\uC120\uC2A4 \uC5C6\uC74C",licenseExpired:"\uB77C\uC774\uC120\uC2A4\uAC00 \uB9CC\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4",licenseReleaseNotCovered:"\uC774 \uBC84\uC804\uC740 \uB77C\uC774\uC120\uC2A4 \uC801\uC6A9 \uB300\uC0C1\uC774 \uC544\uB2D9\uB2C8\uB2E4",licenseDomainMismatch:"\uC774 \uB3C4\uBA54\uC778\uC5D0\uC11C\uB294 \uB77C\uC774\uC120\uC2A4\uAC00 \uC720\uD6A8\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4",licenseRevoked:"\uB77C\uC774\uC120\uC2A4\uAC00 \uCDE8\uC18C\uB418\uC5C8\uC2B5\uB2C8\uB2E4",licenseInvalidFormat:"\uB77C\uC774\uC120\uC2A4 \uD0A4 \uD615\uC2DD\uC774 \uC798\uBABB\uB418\uC5C8\uC2B5\uB2C8\uB2E4",licenseInvalidSignature:"\uB77C\uC774\uC120\uC2A4 \uC11C\uBA85\uC774 \uC720\uD6A8\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4",licenseEngineUnavailable:"\uBE0C\uB77C\uC6B0\uC800\uC5D0\uC11C \uB77C\uC774\uC120\uC2A4\uB97C \uD655\uC778\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4(HTTPS \uD544\uC694)",calcAdd:"\uACC4\uC0B0 \uC5F4 \uCD94\uAC00\u2026",calcEdit:"\uACC4\uC0B0 \uC5F4 \uD3B8\uC9D1\u2026",calcRemove:"\uACC4\uC0B0 \uC5F4 \uC81C\uAC70",calcTitleAdd:"\uACC4\uC0B0 \uC5F4 \uCD94\uAC00",calcTitleEdit:"\uACC4\uC0B0 \uC5F4 \uD3B8\uC9D1",calcName:"\uC774\uB984",calcFormula:"\uC218\uC2DD",calcFormulaHint:"\uC5F4\uC740 [\uC774\uB984]\uC73C\uB85C \uC501\uB2C8\uB2E4. \uC608: [\uAC00\uACA9] * [\uC218\uB7C9]",calcColumns:"\uC5F4",calcFunctions:"\uD568\uC218",calcPreview:"\uBBF8\uB9AC \uBCF4\uAE30",calcPreviewEmpty:"\uBBF8\uB9AC \uBCFC \uD589\uC774 \uC5C6\uC2B5\uB2C8\uB2E4",calcErrorAt:"{message} ({position}\uBC88\uC9F8 \uBB38\uC790)",calcAddButton:"\uCD94\uAC00",calcArgsAtLeast:"{min}\uAC1C \uC774\uC0C1",formulaError_empty:"\uC218\uC2DD\uC744 \uC785\uB825\uD558\uC138\uC694",formulaError_unclosedText:'\uD14D\uC2A4\uD2B8\uAC00 \uB2EB\uD788\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4: " \uAC00 \uC5C6\uC2B5\uB2C8\uB2E4',formulaError_unclosedColumn:"\uC5F4 \uC774\uB984\uC774 \uB2EB\uD788\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4: ] \uAC00 \uC5C6\uC2B5\uB2C8\uB2E4",formulaError_emptyColumn:"\uBE48 \uC5F4 \uC774\uB984 []",formulaError_unexpectedChar:"\uC608\uAE30\uCE58 \uC54A\uC740 \uBB38\uC790 {text}",formulaError_expected:"{text} \uAC00 \uC5C6\uC2B5\uB2C8\uB2E4",formulaError_cellAfterColon:'":" \uB4A4\uC5D0 \uC140\uC774 \uC5C6\uC2B5\uB2C8\uB2E4',formulaError_unknownName:"\uC54C \uC218 \uC5C6\uB294 \uC774\uB984 {name} \u2014 \uC5F4\uC740 [{name}]\uC73C\uB85C \uC501\uB2C8\uB2E4",formulaError_unexpected:"\uC608\uAE30\uCE58 \uC54A\uC740 {text}",formulaError_endsEarly:"\uC218\uC2DD\uC774 \uB108\uBB34 \uC77C\uCC0D \uB05D\uB0A9\uB2C8\uB2E4",formulaError_trailing:"\uB05D\uC5D0 \uC608\uAE30\uCE58 \uC54A\uC740 \uD14D\uC2A4\uD2B8\uAC00 \uC788\uC2B5\uB2C8\uB2E4",formulaError_unknownColumn:"[{name}] \uC5F4\uC774 \uC5C6\uC2B5\uB2C8\uB2E4",formulaError_unknownFunction:"\uC54C \uC218 \uC5C6\uB294 \uD568\uC218 {name}",formulaError_argCount:"{name}\uC758 \uC778\uC218\uB294 {range}\uAC1C\uC785\uB2C8\uB2E4",formulaError_cellsNotAllowed:"A1 \uAC19\uC740 \uC140 \uCC38\uC870\uB294 \uC5EC\uAE30\uC11C \uC4F0\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4 \u2014 \uC5F4\uC740 [\uC774\uB984]\uC73C\uB85C \uC501\uB2C8\uB2E4"};function bt(e,t){let u=e;for(let[r,n]of Object.entries(t))u=u.replace(`{${r}}`,String(n));return u}var wm={tr:im,en:ri,de:lm,fr:sm,es:dm,it:cm,pt:hm,ru:mm,ar:fm,"zh-CN":pm,ja:gm,ko:Cm};function pu(e,t){return Bh(wm,ri,e,t)}var ct={valid:!0,message:null},ym=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;function xr(e){return e==null||e===""}function Dt(e,t){return{valid:!1,message:e.message??t}}function Em(e,t){let{value:u}=t,r=t.messages??pu("en");switch(e.type){case"required":return xr(u)?Dt(e,r.validationRequired):ct;case"range":{if(xr(u))return ct;let n=typeof u=="number"?u:Number(u);return Number.isNaN(n)?Dt(e,r.validationNumber):e.min!==void 0&&n<e.min?Dt(e,r.validationMin.replace("{min}",String(e.min))):e.max!==void 0&&n>e.max?Dt(e,r.validationMax.replace("{max}",String(e.max))):ct}case"stringLength":{if(xr(u))return ct;let n=String(u).length;return e.min!==void 0&&n<e.min?Dt(e,`Must be at least ${e.min} characters`):e.max!==void 0&&n>e.max?Dt(e,`Must be at most ${e.max} characters`):ct}case"pattern":return xr(u)||(typeof e.pattern=="string"?new RegExp(e.pattern):e.pattern).test(String(u))?ct:Dt(e,r.validationFormat);case"email":return xr(u)||ym.test(String(u))?ct:Dt(e,r.validationEmail);case"custom":{let n=e.validate(t);return n===!0?ct:typeof n=="string"?{valid:!1,message:n}:Dt(e,r.validationInvalid)}case"asyncCustom":return ct;default:return ct}}function Mu(e,t){if(!t||t.length===0)return ct;for(let u of t){let r=Em(u,e);if(!r.valid)return r}return ct}async function bm(e,t){let u=Mu(e,t);if(!u.valid||!t)return u;let r=e.messages??pu("en");for(let n of t){if(n.type!=="asyncCustom")continue;let a=await n.validate(e);if(a!==!0)return typeof a=="string"?{valid:!1,message:a}:Dt(n,r.validationInvalid)}return ct}var Am={get:()=>{},keys:()=>[]};function xm(e){if(!e)return Am;if(e instanceof Map){let u=e;return{get:r=>{if(u.has(r))return String(u.get(r));let n=Number(r);return r!==""&&Number.isFinite(n)&&u.has(n)?String(u.get(n)):void 0},keys:()=>Array.from(u.keys(),r=>String(r))}}let t=e;return{get:u=>Object.prototype.hasOwnProperty.call(t,u)?String(t[u]):void 0,keys:()=>Object.keys(t)}}function _0(e){if(!e)return null;let t=e===!0?{}:e,u=t.savedDuration;return{tint:t.tint===!0,icons:t.icons===!0,strike:t.strike===!0,savedDuration:typeof u=="number"&&Number.isFinite(u)&&u>=0?u:1500,get:t.get,messages:t.messages===!0,errors:xm(t.errors),onRetry:t.onRetry,onDelete:t.onDelete}}var vm=new Set(["new","changed","removed","saving","saved","error"]);function U0(e,t,u,r){if(!e)return null;if(e.get&&t!==void 0){let o=e.get({row:t,rowKey:u});if(o!==void 0)return o==="error"?{status:o,error:e.errors.get(String(u))??null}:o!==null&&vm.has(o)?{status:o,error:null}:null}let n=e.errors.get(String(u));if(n!==void 0)return{status:"error",error:n};let a=r?.getRowStatus(u)??null;return a?{status:a,error:a==="error"?r?.getRowStatusError(u)??null:null}:null}function q0(e,t){if(!e?.messages)return[];let u=new Set,r=[];for(let n of e.errors.keys())u.add(n),r.push(n);for(let n of t?.getErrorRowKeys?.()??[])u.has(String(n))||(u.add(String(n)),r.push(n));return r}function j0(e,t,u,r,n){let a=e.errors.get(String(t)),o=r?.getRowStatus(t)==="error"?r.getRowStatusError(t):null,l=a??o??"",i={rowKey:t,row:u,error:l},s=a===void 0&&o!==null?()=>{r?.saveChanges?.(t)}:e.onRetry?()=>{e.onRetry(i)}:null,h=e.onDelete?()=>{e.onDelete(i)}:null;return{text:l?`${n.rowStatusError}: ${l}`:n.rowStatusError,retry:s,remove:h,context:i}}function Y0(e,t,u=!1){return`kanuni-datagrid-row--status-${e}${t?" kanuni-datagrid-row--status-tint":""}${u&&e==="removed"?" kanuni-datagrid-row--status-strike":""}`}function Q0(e,t){switch(e.status){case"new":return t.rowStatusNew;case"removed":return t.rowStatusRemoved;case"changed":return t.rowStatusChanged;case"saving":return t.rowStatusSaving;case"saved":return t.rowStatusSaved;default:return e.error?`${t.rowStatusError}: ${e.error}`:t.rowStatusError}}var Fm=class extends Error{rows;constructor(e,t){super(t??e[0]?.message??"Save rejected"),this.name="SaveRejected",this.rows=e.map(u=>({...u})),Object.setPrototypeOf(this,new.target.prototype)}};function Dm(e){return e instanceof Fm?!0:e instanceof Error&&e.name==="SaveRejected"&&Array.isArray(e.rows)}function su(e){return e==="row"||e==="form"||e==="popup"}var Sm="__dg_new_",km=/^[+-]?\d+$/;function po(e,t){if(typeof e!="bigint"||typeof t!="string")return t;let u=t.trim();return km.test(u)?BigInt(u):t}var Bm=0;function Ns(e){return!!e&&!!(e.insert||e.update||e.remove)}var X0=class{changes=new am;undoStack=new om;session=null;rowSession=null;rowDrafts=null;rowBaseline=null;mode;options;saveToken=0;saving=!1;saveQueue=Promise.resolve();savesInFlight=0;text;rowSaveState=new Map;savedDuration;savedTimers=new Set;insertedKeys=new Map;disposed=!1;publishedRevision=0;commitOn;unsentRows=new Set;constructor(e){this.options=e,this.mode=e.mode??"cell",this.commitOn=e.commitOn==="row"?"row":"cell",this.text=e.messages??pu("en"),this.savedDuration=Math.max(0,e.savedDuration??1500)}getMode(){return this.mode}setMode(e){!su(e)&&this.rowSession&&this.cancelRowEdit(),this.mode=e}getCommitOn(){return this.commitOn}setCommitOn(e){let t=e==="row"?"row":"cell";if(t===this.commitOn)return;let u=this.commitsRows();this.commitOn=t,u&&!this.commitsRows()&&this.commitRows(null)}commitsRows(){return this.mode==="cell"&&this.commitOn==="row"}setMessages(e){this.text=e}setDependentValues(e){this.dependentValues=e}dependentValues=null;withDependents(e){let t=this.dependentValues;if(!t)return e;let u=[...e],r=new Map;for(let a of e)r.set(a.rowKey,[...r.get(a.rowKey)??[],a]);let n=this.options.allowUpdating;for(let[a,o]of r){let l=this.effectiveRow(a);if(!l)continue;let i={...l};for(let h of o)i[h.columnId]=h.value;let s=t(a,i,o.map(h=>h.columnId));for(let[h,m]of Object.entries(s??{}))o.some(c=>c.columnId===h)||Object.is(this.effectiveValue(a,h),m)||n!==void 0&&(typeof n=="function"?!n(l,h):!n)||u.push({rowKey:a,columnId:h,value:m})}return u}isSaving(){return this.saving}getRowStatus(e){let t=this.rowSaveState.get(e),u=this.changes.isDirty(e);return t?.status==="error"?u?"error":null:t?.status==="saving"?"saving":u?this.changes.isRemoved(e)?"removed":this.changes.isInserted(e)?"new":"changed":t?.status==="saved"?"saved":null}getErrorRowKeys(){let e=[];for(let t of this.rowSaveState.keys())this.getRowStatus(t)==="error"&&e.push(t);return e}getRowStatusError(e){return this.getRowStatus(e)!=="error"?null:this.rowSaveState.get(e)?.error??null}setSavedDuration(e){this.savedDuration=Number.isFinite(e)&&e>0?e:0,this.savedDuration===0&&this.dropSavedStatuses()&&this.notify()}dispose(){this.disposed=!0,this.dropSavedStatuses()}resume(){this.disposed=!1}dropSavedStatuses(){for(let t of this.savedTimers)clearTimeout(t);this.savedTimers.clear();let e=!1;for(let[t,u]of this.rowSaveState)u.status==="saved"&&(this.rowSaveState.delete(t),e=!0);return e}touchRow(e){let t=this.rowSaveState.get(e);!t||t.status==="saving"||this.rowSaveState.delete(e)}setRowState(e,t,u,r=null){let n={status:t,token:u,error:r};return this.rowSaveState.set(e,n),n}settleRowStatus(e,t,u){let r=[],n=null;if(!u.saved&&u.rows){n=new Map;for(let o of u.rows){let l=n.get(o.rowKey)??[];l.includes(o.message)||l.push(o.message),n.set(o.rowKey,l)}}for(let o of e){let l=this.insertedKeys.get(o.rowKey)??o.rowKey,i=this.rowSaveState.get(l);if(!(!i||i.token!==t||i.status!=="saving"))if(n){let s=n.get(o.rowKey)??n.get(l);s?this.setRowState(l,"error",t,s.join("; ")):this.rowSaveState.delete(l)}else u.saved?this.savedDuration>0&&!this.disposed&&o.type!=="remove"&&!this.changes.isDirty(l)?r.push([l,this.setRowState(l,"saved",t)]):this.rowSaveState.delete(l):this.setRowState(l,"error",t,u.error??this.text.editSaveFailed)}if(this.insertedKeys.clear(),r.length===0)return;let a=setTimeout(()=>{this.savedTimers.delete(a);let o=!1;for(let[l,i]of r)this.rowSaveState.get(l)===i&&(this.rowSaveState.delete(l),o=!0);o&&this.notify()},this.savedDuration);this.savedTimers.add(a)}getSession(){return this.session}isEditing(e,t){return this.session?e===void 0?!0:this.session.rowKey!==e?!1:t===void 0||this.session.columnId===t:!1}getRowSession(){return this.rowSession}isEditingRow(e){return this.rowSession?e===void 0||this.rowSession.rowKey===e:!1}canEditRow(e,t={}){if(!su(this.mode)&&!t.standalone)return!1;if(this.rowSession)return this.rowSession.rowKey===e;if(this.changes.isRemoved(e))return!1;let u=this.options.editableColumns?.(e)??null;return u===null||u.length>0}beginRowEdit(e,t={}){let u=t.standalone===!0;if(!this.canEditRow(e,t))return!1;if(this.rowSession)return!0;u&&this.session&&!this.commitEdit()&&this.cancelEdit();let r=this.session;return this.session=null,r&&this.options.onEditingStopped?.({rowKey:r.rowKey,columnId:r.columnId,value:r.value,cancelled:!0}),this.rowDrafts=null,this.rowSession={rowKey:e,isNew:this.changes.isInserted(e),errors:{},saving:!1,...u?{standalone:!0}:{}},this.rowBaseline=u?this.baselineOf(e):null,this.options.onRowEditingStarted?.({rowKey:e,isNew:this.rowSession.isNew}),this.notify(),!0}setRowEditValue(e,t){let u=this.rowSession;if(!u||!this.canUpdate(u.rowKey,e))return;let r=this.options.readValue(u.rowKey,e),n=po(r,this.parse(u.rowKey,e,t));this.rowDrafts?.rowKey!==u.rowKey&&(this.rowDrafts={rowKey:u.rowKey,values:new Map}),this.rowDrafts.values.set(e,t);let a=this.effectiveValue(u.rowKey,e);if(Object.is(a,n)){this.notify();return}let o=!0,l=(c,p,C)=>{this.options.onCellValueChanged?.({rowKey:u.rowKey,columnId:e,value:c,previousValue:p,source:C})},i=()=>{o||this.rowDrafts?.values.delete(e),this.touchRow(u.rowKey),this.changes.set(u.rowKey,e,n,r),l(n,a,o?"edit":"redo"),o=!1},s=()=>{this.rowDrafts?.values.delete(e),this.touchRow(u.rowKey),this.changes.set(u.rowKey,e,a,r),l(a,n,"undo")};i(),this.undoStack.push({label:this.text.editCellUndo.replace("{column}",e),undo:s,redo:i,touches:(c,p)=>c===u.rowKey&&(p===void 0||p===e)});let h=Mu({value:n,columnId:e,row:this.effectiveRow(u.rowKey)},this.rulesFor(e)),m={...u.errors};h.valid?delete m[e]:m[e]=h.message??this.text.validationInvalid,this.rowSession={...u,errors:m},this.notify()}rowEditValue(e){let t=this.rowSession;if(!t)return;let u=this.rowDrafts;return u?.rowKey===t.rowKey&&u.values.has(e)?u.values.get(e):this.shownValue(t.rowKey,e)}shownValue(e,t){let u=this.effectiveValue(e,t);return this.options.formatForEdit?this.options.formatForEdit(e,t,u):u}rulesFor(e){let t=this.options.columnRules?.(e),u=this.options.rules?.[e];return t?.length?u?.length?[...t,...u]:[...t]:u}parse(e,t,u){return this.options.parseFromEdit?this.options.parseFromEdit(e,t,u):u}validateRowEdit(e){let t=this.rowSession;if(!t)return!1;let u={},r=this.effectiveRow(t.rowKey);for(let n of e){let a=this.rulesFor(n);if(!a?.length)continue;let o=Mu({value:this.effectiveValue(t.rowKey,n),columnId:n,row:r},a);o.valid||(u[n]=o.message??this.text.validationInvalid)}return this.rowSession={...t,errors:u},this.notify(),Object.keys(u).length===0}async saveRowEdit(e){let t=this.rowSession;if(!t)return{saved:!0,changes:[]};if(e&&!this.validateRowEdit(e)){let r=Object.values(this.rowSession?.errors??{})[0];return{saved:!1,changes:[],error:r??this.text.validationInvalid}}if(t.standalone&&!su(this.mode))return this.saveStandaloneRow(t.rowKey);this.rowSession={...this.rowSession??t,saving:!0},this.notify();let u=await this.saveChanges(t.rowKey);return u.saved?this.closeRowSession(!1):this.rowSession=this.rowSession?{...this.rowSession,saving:!1}:null,this.notify(),u}async saveStandaloneRow(e){if(this.mode==="batch")return this.closeRowSession(!1),this.notify(),{saved:!0,changes:[]};this.rowSession={...this.rowSession,saving:!0};let t=this.standaloneEdits(e);if(t.length>0){let r=this.rowCells(e);this.restoreBaseline();let n=this.text.editCellUndo.replace("{column}",t.map(a=>a.columnId).join(", "));if(!this.applyEdits(t,n,"edit",{atomic:!0,noSave:!0})){for(let a of r)this.changes.set(e,a.columnId,a.newValue,a.oldValue);return this.rowSession=this.rowSession?{...this.rowSession,saving:!1}:null,this.notify(),{saved:!1,changes:[],error:this.text.editSaveFailed,rowKey:e}}this.rowBaseline=this.baselineOf(e)}let u=this.changes.isDirty(e)?await this.saveChanges(e):{saved:!0,changes:[]};return u.saved?this.closeRowSession(!1):this.rowSession=this.rowSession?{...this.rowSession,saving:!1}:null,this.notify(),u}standaloneEdits(e){let t=new Map((this.rowBaseline?.cells??[]).map(n=>[n.columnId,n])),u=this.rowCells(e),r=[];for(let n of u){let a=t.get(n.columnId);Object.is(a?a.newValue:n.oldValue,n.newValue)||r.push({rowKey:e,columnId:n.columnId,value:n.newValue})}for(let[n,a]of t)u.some(o=>o.columnId===n)||r.push({rowKey:e,columnId:n,value:a.oldValue});return r}rowCells(e){return this.changes.getCellChanges().filter(t=>t.rowKey===e).map(t=>({...t}))}baselineOf(e){return{rowKey:e,cells:this.rowCells(e),mark:this.undoStack.mark()}}restoreBaseline(){let e=this.rowBaseline;if(!e)return;let{rowKey:t}=e;for(let u of this.rowCells(t))this.changes.revertCell(t,u.columnId);for(let u of e.cells)this.changes.set(t,u.columnId,u.newValue,u.oldValue);this.undoStack.drop((u,r)=>r>e.mark),this.touchRow(t)}closeRowSession(e){let t=this.rowSession;t&&(this.rowSession=null,this.rowDrafts=null,this.rowBaseline=null,this.options.onRowEditingStopped?.({rowKey:t.rowKey,isNew:t.isNew,cancelled:e}))}heldRow(){let e=this.rowSession;return e?.standalone&&!e.saving?e.rowKey:null}cancelRowEdit(){let e=this.rowSession;if(e){if(e.standalone){this.session=null,this.restoreBaseline(),this.closeRowSession(!0),this.notify();return}this.rowSession=null,this.rowDrafts=null,this.session=null,e.isNew?(this.changes.revertRow(e.rowKey),this.options.dropRow?.(e.rowKey)):this.changes.revertRow(e.rowKey),this.options.onRowEditingStopped?.({rowKey:e.rowKey,isNew:e.isNew,cancelled:!0}),this.notify()}}canUpdate(e,t){if(this.options.isColumnEditable?.(t)===!1)return!1;let u=this.options.allowUpdating;return u===void 0?!0:typeof u=="function"?u(this.options.readRow?.(e),t):u}canDelete(e){let t=this.options.allowDeleting;return t===void 0?!1:typeof t=="function"?t(this.options.readRow?.(e)):t}canAdd(){let e=this.options.allowAdding;return e===void 0?!1:typeof e=="function"?e():e}addRow(e={},t,u){if(!this.canAdd())return null;let r={...e};this.options.onInitNewRow?.(r);let n=this.options.newRowKey?.(r),a=n!=null&&n!==""?n:`${Sm}${++Bm}`,o=u??this.options.newRowPosition??"last",l=()=>{this.changes.markInserted(a,r),this.options.insertRow?.(a,r,o,t)},i=()=>{this.changes.revertRow(a),this.options.dropRow?.(a)};if(l(),this.undoStack.push({label:this.text.editAddRowUndo,undo:i,redo:l,touches:s=>s===a}),su(this.mode)){let s=this.rowSession;return this.rowDrafts=null,this.rowSession={rowKey:a,isNew:!0,errors:{},saving:!1},s&&this.options.onRowEditingStopped?.({rowKey:s.rowKey,isNew:s.isNew,cancelled:!0}),this.options.onRowEditingStarted?.({rowKey:a,isNew:!0}),this.notify(),a}return this.notify(),this.commitsRows()?this.unsentRows.add(a):this.mode!=="batch"&&this.autoSave(),a}removeRow(e){if(!this.canDelete(e))return!1;if(this.changes.isInserted(e))return this.unsentRows.delete(e),this.changes.revertRow(e),this.options.dropRow?.(e),this.forgetRowHistory(e),this.notify(),!0;let t=()=>{this.touchRow(e),this.changes.markRemoved(e)},u=()=>{this.touchRow(e),this.changes.revertRow(e)};return t(),this.undoStack.push({label:this.text.editDeleteRowUndo,undo:u,redo:t,touches:r=>r===e}),this.notify(),this.commitsRows()?(this.unsentRows.delete(e),this.autoSave(e)):this.mode!=="batch"&&this.autoSave(),!0}restoreRow(e){this.changes.isRemoved(e)&&(this.changes.revertRow(e),this.notify())}isRemoved(e){return this.changes.isRemoved(e)}isDirty(e,t){return this.changes.isDirty(e,t)}revertRow(e){if(this.unsentRows.delete(e),this.changes.isInserted(e))this.changes.revertRow(e),this.options.dropRow?.(e);else{let t=this.changes.getCellChanges().filter(u=>u.rowKey===e);if(!this.changes.revertRow(e))return!1;this.writeBack(t)}return this.touchRow(e),this.forgetRowHistory(e),this.notify(),!0}revertCell(e,t){let u=this.changes.get(e,t);return!u||!this.changes.revertCell(e,t)?!1:(this.writeBack([u]),this.touchRow(e),this.undoStack.drop(r=>r.touches?.(e,t)===!0),this.notify(),!0)}writeBack(e){if(this.mode==="cell")for(let t of e)this.options.applyValue?.(t.rowKey,t.columnId,t.oldValue)}forgetRowHistory(e){this.undoStack.drop(t=>t.touches?.(e)===!0)}beginEdit(e,t,u){if(!this.canUpdate(e,t)||this.rowSession||su(this.mode)||this.session&&!this.commitEdit())return!1;let r=this.shownValue(e,t),n=u!==void 0;return this.session={rowKey:e,columnId:t,initialValue:r,value:n?u:r,seeded:n,validation:{valid:!0,message:null}},this.options.onEditingStarted?.({rowKey:e,columnId:t,value:this.session.value}),this.notify(),!0}setEditValue(e){if(!this.session)return;this.session.value=e;let{rowKey:t,columnId:u}=this.session,r=this.rulesFor(u);this.session.validation=Mu({value:r?.length?this.parse(t,u,e):e,columnId:u,row:this.effectiveRow(t)},r),this.notify()}commitEdit(){let e=this.session;if(!e)return!0;let t=!Object.is(e.value,e.initialValue),u=t?this.parse(e.rowKey,e.columnId,e.value):e.value,r=Mu({value:u,columnId:e.columnId,row:this.effectiveRow(e.rowKey)},this.rulesFor(e.columnId));return r.valid?(this.session=null,this.options.onEditingStopped?.({rowKey:e.rowKey,columnId:e.columnId,value:e.value,cancelled:!1}),t&&this.applyEdits([{rowKey:e.rowKey,columnId:e.columnId,value:u}],this.text.editCellUndo.replace("{column}",e.columnId)),this.notify(),!0):(e.validation=r,this.notify(),!1)}cancelEdit(){let e=this.session;this.session=null,e&&this.options.onEditingStopped?.({rowKey:e.rowKey,columnId:e.columnId,value:e.value,cancelled:!0}),this.notify()}applyEdits(e,t,u="edit",r={}){if(e.length===0)return!1;let n=this.withDependents(e).map(p=>{let C=this.options.readValue(p.rowKey,p.columnId);return{...p,value:po(C,p.value),previous:this.effectiveValue(p.rowKey,p.columnId),source:C}}).filter(p=>!(typeof p.value=="bigint"&&p.value===p.previous));if(n.length===0)return!1;let a=this.mode==="cell"&&this.heldRow()===null,o=this.options.storedValue,l=n;if(a&&this.options.applyValue){let p=[];for(let C of n)if(this.options.applyValue(C.rowKey,C.columnId,C.value)!==!1)p.push(C);else if(r.atomic){for(let E of p.reverse())this.options.applyValue(E.rowKey,E.columnId,E.source);return!1}l=o?p.map(C=>({...C,value:o(C.rowKey,C.columnId,C.value)})):p}if(l.length===0)return!1;let i=!0,s=(p,C,E,D)=>{this.options.onCellValueChanged?.({rowKey:p.rowKey,columnId:p.columnId,value:C,previousValue:E,source:D})},h=()=>{let p=!i,C=i?u:"redo";i=!1;for(let E of l)this.touchRow(E.rowKey),this.changes.set(E.rowKey,E.columnId,E.value,E.source),a&&p&&this.options.applyValue?.(E.rowKey,E.columnId,E.value),p&&this.commitsRows()&&this.unsentRows.add(E.rowKey),s(E,E.value,E.previous,C)},m=()=>{for(let p of l)this.touchRow(p.rowKey),this.changes.set(p.rowKey,p.columnId,p.previous,p.source),a&&this.options.applyValue?.(p.rowKey,p.columnId,p.previous),this.commitsRows()&&this.unsentRows.add(p.rowKey),s(p,p.previous,p.value,"undo")};h();let c={label:t,undo:m,redo:h,touches:(p,C)=>l.some(E=>E.rowKey===p&&(C===void 0||E.columnId===C))};if(this.undoStack.push(c),this.notify(),!(r.noSave||this.heldRow()!==null))if(this.commitsRows())for(let p of l)this.unsentRows.add(p.rowKey);else this.mode==="cell"&&(r.keepEditor?this.queueSave().then(p=>{!p.saved&&!p.superseded&&this.options.onAutoSaveFailed?.(p)}):this.autoSave());return!0}setRowValues(e,t){if((su(this.mode)||this.rowSession?.standalone)&&this.rowSession?.rowKey!==e)return!1;let u=this.options.readRow?.(e);if(!u||this.changes.isRemoved(e))return!1;let r=this.options.allowUpdating,n=Object.entries(t);for(let[s]of n)if(r!==void 0&&(typeof r=="function"?!r(u,s):!r))return!1;let a=n.map(([s,h])=>({rowKey:e,columnId:s,value:po(this.options.readValue(e,s),h)})).filter(s=>!Object.is(this.effectiveValue(e,s.columnId),s.value));if(a.length===0)return!0;let o={...this.effectiveRow(e)};for(let s of a)o[s.columnId]=s.value;for(let s of a)if(!Mu({value:s.value,columnId:s.columnId,row:o},this.rulesFor(s.columnId)).valid)return!1;let l=this.text.editCellUndo.replace("{column}",a.map(s=>s.columnId).join(", "));if(!this.applyEdits(a,l,"edit",{atomic:!0,keepEditor:!0}))return!1;if(this.rowDrafts?.rowKey===e)for(let s of a)this.rowDrafts.values.delete(s.columnId);if(this.rowSession?.rowKey===e){let s={...this.rowSession.errors};for(let h of a)delete s[h.columnId];this.rowSession={...this.rowSession,errors:s}}let i=this.session;if(i?.rowKey===e&&a.some(s=>s.columnId===i.columnId)){let s=this.shownValue(e,i.columnId);i.value=s,i.initialValue=s,i.seeded=!1,i.validation={valid:!0,message:null}}return this.notify(),!0}effectiveValue(e,t){return this.changes.effectiveValue(e,t,this.options.readValue(e,t))}effectiveRow(e){let t=this.options.readRow?.(e);if(t)return this.changes.applyPendingTo(e,t)}undo(){this.options.onHistoryStarted?.({kind:"undo",label:this.undoStack.peekUndo()?.label??null});let e=this.undoStack.undo();return e&&this.notify(),this.options.onHistoryEnded?.({kind:"undo",performed:!!e,label:e?.label??null}),!!e}redo(){this.options.onHistoryStarted?.({kind:"redo",label:this.undoStack.peekRedo()?.label??null});let e=this.undoStack.redo();return e&&this.notify(),this.options.onHistoryEnded?.({kind:"redo",performed:!!e,label:e?.label??null}),!!e}canUndo(){return this.undoStack.canUndo()}canRedo(){return this.undoStack.canRedo()}hasChanges(){return this.changes.hasChanges()}getChanges(){return this.changes.getChanges(this.options.readRow)}async saveChanges(e){if(this.session&&!this.commitEdit())return{saved:!1,changes:[],error:this.session?.validation.message??this.text.validationInvalid};if(this.commitsRows())for(let t of[...this.unsentRows])(e===void 0||e===t)&&this.isEmptyNewRow(t)&&this.discardNewRow(t);return this.queueSave(e)}async queueSave(e){let t=this.savesInFlight>0?this.saveQueue:null;this.savesInFlight++;let u;this.saveQueue=new Promise(r=>{u=r});try{return t&&await t,await this.persist(e)}finally{this.savesInFlight--,u()}}autoSave(e){this.saveChanges(e).then(t=>{!t.saved&&!t.superseded&&this.options.onAutoSaveFailed?.(t)})}isEmptyNewRow(e){return this.changes.isInserted(e)&&!this.changes.hasCellChanges(e)}discardEmptyNewRow(e){return this.isEmptyNewRow(e)?(this.session?.rowKey===e&&this.cancelEdit(),this.discardNewRow(e),!0):!1}discardNewRow(e){this.unsentRows.delete(e),this.rowSaveState.delete(e),this.changes.revertRow(e),this.options.dropRow?.(e),this.forgetRowHistory(e),this.notify()}getUnsentRowKeys(){return[...this.unsentRows]}commitRows(e){if(this.unsentRows.size!==0&&!(this.session&&this.session.rowKey!==e&&!this.commitEdit())){for(let t of[...this.unsentRows])if(!(t===e||t===this.heldRow())){if(this.unsentRows.delete(t),this.isEmptyNewRow(t)){this.discardNewRow(t);continue}this.changes.isDirty(t)&&this.queueSave(t).then(u=>{!u.saved&&!u.superseded&&this.options.onAutoSaveFailed?.(u)})}}}async persist(e){let t=this.heldRow(),u=this.getChanges().filter(o=>(e===void 0||o.rowKey===e)&&o.rowKey!==t);if(u.length===0)return{saved:!0,changes:[]};for(let o of u)this.unsentRows.delete(o.rowKey);let r=++this.saveToken,n=this.undoStack.mark();this.saving=!0;for(let o of u)this.setRowState(o.rowKey,"saving",r);this.notify();let a=null;try{return a=await this.send(u,r),a.saved&&!a.superseded&&this.forgetSavedHistory(u,n,e),a}finally{r===this.saveToken&&(this.saving=!1),this.settleRowStatus(u,r,a??{saved:!1,changes:u,error:this.text.editSaveFailed}),this.notify()}}forgetSavedHistory(e,t,u){if(this.mode!=="cell"&&this.mode!=="batch")return;if(u===void 0){this.undoStack.drop((n,a)=>a<=t);return}let r=e.map(n=>n.rowKey);this.undoStack.drop((n,a)=>a<=t&&r.some(o=>n.touches?.(o)===!0))}async send(e,t){try{for(let r of e){if(r.type!=="insert")continue;let n=this.effectiveRow(r.rowKey);for(let[a,o]of Object.entries(this.options.rules??{})){if(!o||o.length===0||a in r.values)continue;let l=n?this.options.readValue?.(r.rowKey,a):void 0,i=Mu({value:l,columnId:a,row:n},o);if(!i.valid)return{saved:!1,changes:e,error:i.message??this.text.validationInvalid,columnId:a,rowKey:r.rowKey}}}for(let r of e)for(let[n,a]of Object.entries(r.values)){let o=await bm({value:a,columnId:n,row:this.effectiveRow(r.rowKey)??r.row},this.rulesFor(n));if(!o.valid)return{saved:!1,changes:e,error:o.message??this.text.validationInvalid,columnId:n,rowKey:r.rowKey}}let u=this.options.crud;if(u&&Ns(u)){let r=e.find(n=>!u[n.type]);if(r)return console.error(`[datagrid] editing.crud has no "${r.type}" handler, so a pending ${r.type} cannot be saved. Nothing was sent and the changes stay pending. Add crud.${r.type}, or use onSave instead of crud.`),{saved:!1,changes:e,error:this.text.editSaveFailed,rowKey:r.rowKey};await this.dispatchCrud(e,u)}else await this.options.onSave?.(e);if(t!==this.saveToken)return{saved:!0,changes:e,superseded:!0};for(let r of e)if(r.type==="update")for(let n of Object.keys(r.values)){let a=this.changes.get(r.rowKey,n);a&&Object.is(a.newValue,r.values[n])&&this.changes.revertCell(r.rowKey,n)}else this.changes.revertRow(r.rowKey);if(!Ns(this.options.crud))for(let r of e)r.type==="remove"&&(this.options.readRow&&this.options.readRow(r.rowKey)===void 0||this.options.dropRow?.(r.rowKey));return{saved:!0,changes:e}}catch(u){if(Dm(u)){let r=u.rows.map(n=>({...n}));return{saved:!1,changes:e,error:u.message||this.text.editSaveFailed,rows:r,rowKey:r[0]?.rowKey,columnId:r[0]?.columnId}}return{saved:!1,changes:e,error:u instanceof Error?u.message:String(u)}}}async dispatchCrud(e,t){let u={insert:0,update:1,remove:2},r=[...e].sort((n,a)=>u[n.type]-u[a.type]);for(let n of r)if(n.type==="insert"){if(!t.insert)continue;let a=await t.insert(n.values),o=a?this.options.replaceRow?.(n.rowKey,a):void 0;if(o!==void 0&&o!==n.rowKey){let l=this.rowSaveState.get(n.rowKey);l&&(this.rowSaveState.delete(n.rowKey),this.rowSaveState.set(o,l)),this.insertedKeys.set(n.rowKey,o)}this.options.onRowInserted?.(n.rowKey,a??void 0)}else if(n.type==="update"){if(!t.update)continue;let a=await t.update(n.rowKey,n.values,n.row);a&&this.options.replaceRow?.(n.rowKey,a),this.options.onRowUpdated?.(n.rowKey,a??n.row,n.values)}else{if(!t.remove)continue;await t.remove(n.rowKey,n.row),this.options.dropRow?.(n.rowKey),this.options.onRowRemoved?.(n.rowKey,n.row)}}cancelChanges(){let e=this.rowSession,t=this.session;this.session=null,this.rowSession=null,this.rowDrafts=null,this.rowBaseline=null,t&&this.options.onEditingStopped?.({rowKey:t.rowKey,columnId:t.columnId,value:t.value,cancelled:!0}),e&&this.options.onRowEditingStopped?.({rowKey:e.rowKey,isNew:e.isNew,cancelled:!0});for(let u of this.getChanges())u.type==="insert"&&this.options.dropRow?.(u.rowKey);this.changes.clear(),this.undoStack.clear(),this.unsentRows.clear(),this.notify()}retainKeys(e){this.changes.retainKeys(e)&&this.notify()}notify(){let e=this.changes.revision;e!==this.publishedRevision&&(this.publishedRevision=e,this.options.onChangesChanged?.({dirty:this.changes.hasChanges(),count:this.changes.getRowChangeCount()})),this.options.onChange?.()}};function ni(e,t,u,r){let n=e.indexOf(u);if(r===1){for(let a=n+1;a<e.length;a++)if(t(e[a]))return e[a]}else for(let a=(n<0?e.length:n)-1;a>=0;a--)if(t(e[a]))return e[a];return null}function ai(e,t,u){return ni(e,t,"",u)}function Tr(e,t,u=!1,r=!1){let n=a=>a.replace(/[\\{}@$]/g,o=>"\\"+o);return`{${u?"$":""}${n(e)}@${r?"$":""}${n(t)}}`}var Ze=class extends Error{constructor(e,t,u,r={}){super(e),this.position=t,this.kind=u,this.params=r,this.name="FormulaSyntaxError"}position;kind;params};function Tm(e){let t=0;for(let u of e.toUpperCase())t=t*26+(u.charCodeAt(0)-64);return t-1}function Rm(e){let t=e+1,u="";for(;t>0;){let r=(t-1)%26;u=String.fromCharCode(65+r)+u,t=Math.floor((t-1)/26)}return u}var Nm=/^(\$?)([A-Za-z]{1,3})(\$?)(\d{1,7})/,Mm=/^[A-Za-z_][A-Za-z0-9_.]*/,Im=/^(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/,Lm=["<=",">=","<>","=","<",">","+","-","*","/","^","&","%","(",")",",",";",":"];function Pm(e,t){let u=[],r=0;for(;r<e.length;){let n=e[r];if(/\s/.test(n)){r++;continue}let a=r+t,o=e.slice(r);if(n==='"'){let c="",p=r+1;for(;;){if(p>=e.length)throw new Ze('Unclosed text: a " is missing',a,"unclosedText");if(e[p]==='"'){if(e[p+1]==='"'){c+='"',p+=2;continue}break}c+=e[p++]}u.push({t:"str",v:c,pos:a}),r=p+1;continue}if(n==="["){let c="",p=r+1;for(;;){if(p>=e.length)throw new Ze("Unclosed column name: a ] is missing",a,"unclosedColumn");if(e[p]==="]"){if(e[p+1]==="]"){c+="]",p+=2;continue}break}c+=e[p++]}if(c.trim()==="")throw new Ze("Empty column name",a,"emptyColumn");u.push({t:"col",v:c.trim(),pos:a}),r=p+1;continue}if(n==="{"){let c=r+1,p=[""],C=[!1,!1];for(;;){if(c>=e.length)throw new Ze("Unclosed reference: a } is missing",a,"unclosedColumn");let E=e[c];if(E==="}")break;if(E==="\\"&&c+1<e.length){p[p.length-1]+=e[c+1],c+=2;continue}if(E==="@"&&p.length===1){p.push(""),c++;continue}if(E==="$"&&p[p.length-1]===""){C[p.length-1]=!0,c++;continue}p[p.length-1]+=E,c++}if(p.length!==2||p[0]===""||p[1]==="")throw new Ze("A reference is written {column@row}",a,"unexpected",{text:"{"});u.push({t:"ref",columnId:p[0],rowKey:p[1],absCol:C[0],absRow:C[1],pos:a,end:c+1+t}),r=c+1;continue}let l=Im.exec(o);if(l){u.push({t:"num",v:Number(l[0]),pos:a}),r+=l[0].length;continue}let i=Nm.exec(o),s=i?o.slice(i[0].length):"";if(i&&!/^\s*\(/.test(s)&&!/^[A-Za-z0-9_.]/.test(s)){u.push({t:"cell",col:Tm(i[2]),row:Number(i[4])-1,absCol:i[1]==="$",absRow:i[3]==="$",pos:a,end:a+i[0].length}),r+=i[0].length;continue}let h=Mm.exec(o);if(h){u.push({t:"id",v:h[0],pos:a}),r+=h[0].length;continue}let m=Lm.find(c=>o.startsWith(c));if(m){u.push({t:"op",v:m,pos:a}),r+=m.length;continue}throw new Ze(`Unexpected character '${n}'`,a,"unexpectedChar",{text:n})}return u.push({t:"end",pos:e.length+t}),u}var Gm=new Set(["=","<>","<","<=",">",">="]);function Ms(e){return e.t==="cell"?{kind:"cell",col:e.col,row:e.row,absCol:e.absCol,absRow:e.absRow,pos:e.pos,end:e.end}:{kind:"ref",columnId:e.columnId,rowKey:e.rowKey,absCol:e.absCol,absRow:e.absRow,pos:e.pos,end:e.end}}function oi(e){let t=e.trimStart().startsWith("=")?e.indexOf("=")+1:0,u=Pm(e.slice(t),t),r=0,n=()=>u[r],a=()=>u[r++],o=F=>{let x=n();return x.t==="op"&&x.v===F},l=F=>{let x=a();if(x.t!=="op"||x.v!==F)throw new Ze(`Expected '${F}'`,x.pos,"expected",{text:F})},i=()=>{let F=s();for(;;){let x=n();if(x.t!=="op"||!Gm.has(x.v))return F;a(),F={kind:"binary",op:x.v,left:F,right:s()}}},s=()=>{let F=h();for(;o("&");)a(),F={kind:"binary",op:"&",left:F,right:h()};return F},h=()=>{let F=m();for(;o("+")||o("-");)F={kind:"binary",op:a().v,left:F,right:m()};return F},m=()=>{let F=c();for(;o("*")||o("/");)F={kind:"binary",op:a().v,left:F,right:c()};return F},c=()=>{let F=p();for(;o("^");)a(),F={kind:"binary",op:"^",left:F,right:p()};return F},p=()=>{if(o("-")||o("+"))return{kind:"unary",op:a().v,operand:p()};let F=C();for(;o("%");)a(),F={kind:"unary",op:"%",operand:F};return F},C=()=>{let F=a();switch(F.t){case"num":return{kind:"number",value:F.v};case"str":return{kind:"string",value:F.v};case"col":return{kind:"column",name:F.v,pos:F.pos};case"cell":case"ref":{let x=Ms(F);if(!o(":"))return x;a();let k=a();if(k.t!=="cell"&&k.t!=="ref")throw new Ze('Expected a cell after ":"',k.pos,"cellAfterColon");return{kind:"range",from:x,to:Ms(k)}}case"id":{let x=F.v.toUpperCase();if(o("(")){a();let k=[];if(!o(")"))for(;;){if(k.push(i()),o(",")||o(";")){a();continue}break}return l(")"),{kind:"call",name:x,args:k,pos:F.pos}}if(x==="TRUE"||x==="FALSE")return{kind:"boolean",value:x==="TRUE"};throw new Ze(`Unknown name '${F.v}' \u2014 a column is written [${F.v}]`,F.pos,"unknownName",{name:F.v})}case"op":if(F.v==="("){let x=i();return l(")"),x}throw new Ze(`Unexpected '${F.v}'`,F.pos,"unexpected",{text:F.v});case"end":throw new Ze("The formula ends too early",F.pos,"endsEarly")}};if(n().t==="end")throw new Ze("The formula is empty",n().pos,"empty");let E=i(),D=n();if(D.t!=="end")throw new Ze("Unexpected text after the formula",D.pos,"trailing");return E}var ae=class Pn{constructor(t){this.code=t}code;toString(){return this.code}static all=new Map;static of(t){let u=Pn.all.get(t);return u||Pn.all.set(t,u=new Pn(t)),u}};var Ve=ae.of;function go(e){return e==null?null:typeof e=="number"?Number.isFinite(e)?e:Ve("#NUM!"):typeof e=="string"||typeof e=="boolean"?e:e instanceof Date?Number.isNaN(e.getTime())?null:e:e instanceof ae?e:typeof e=="bigint"?Number(e):String(e)}function _e(e){if(e===null)return 0;if(typeof e=="number")return e;if(typeof e=="boolean")return e?1:0;if(e instanceof ae)return e;if(typeof e=="string"){let t=e.trim();if(t==="")return 0;let u=Number(t);return Number.isFinite(u)?u:Ve("#VALUE!")}return Ve("#VALUE!")}function Om(e){return String(Number(e.toPrecision(15)))}function Is(e,t=2){return String(e).padStart(t,"0")}function Lu(e){return e===null?"":e instanceof ae?e:typeof e=="number"?Om(e):typeof e=="boolean"?e?"TRUE":"FALSE":e instanceof Date?`${e.getFullYear()}-${Is(e.getMonth()+1)}-${Is(e.getDate())}`:e}function Lo(e){if(e===null)return!1;if(typeof e=="boolean")return e;if(typeof e=="number")return e!==0;if(e instanceof ae)return e;if(typeof e=="string"){let t=e.trim().toUpperCase();if(t==="TRUE")return!0;if(t==="FALSE")return!1}return Ve("#VALUE!")}var Z0=/^(\d{4})-(\d{2})-(\d{2})(?:[T ](\d{2}):(\d{2})(?::(\d{2}))?)?/;function J0(e){if(e instanceof Date||e instanceof ae)return e;if(typeof e=="string"){let t=Z0.exec(e.trim());if(t)return new Date(+t[1],+t[2]-1,+t[3],+(t[4]??0),+(t[5]??0),+(t[6]??0))}return Ve("#VALUE!")}var Vm=864e5;function Ls(e){if(e instanceof Date)return e;if(typeof e=="string"&&Z0.test(e.trim())){let t=J0(e);return t instanceof Date?t:null}return null}function Hm(e,t){let u=new Date(e.getTime());return u.setDate(u.getDate()+Math.trunc(t)),u}function Zu(e){return Number.isFinite(e)?e:Ve("#NUM!")}function Qu(e,t){let u=(i,s)=>i instanceof Date?i.getTime():i===null?typeof s=="string"?"":typeof s=="boolean"?!1:0:i,r=u(e,t),n=u(t,e),a=i=>typeof i=="number"?0:typeof i=="string"?1:2;if(a(r)!==a(n))return a(r)-a(n);if(typeof r=="string"){let i=r.toLowerCase(),s=n.toLowerCase();return i<s?-1:i>s?1:0}let o=Number(r),l=Number(n);return o<l?-1:o>l?1:0}function be(e){return Array.isArray(e)?e[0]??null:e}function vr(e,t){let u=[];for(let r of e){let n=r();if(Array.isArray(n)){for(let o of n){if(o instanceof ae)return o;typeof o=="number"&&u.push(o)}continue}if(!t&&typeof n!="number")continue;let a=_e(n);if(a instanceof ae)return a;u.push(a)}return u}function Km(e,t,u){let r=10**Math.trunc(t),n=Number((Math.abs(e)*r).toPrecision(15)),a=u==="half"?Math.round(n):u==="up"?Math.ceil(n):Math.floor(n);return Math.sign(e)*a/r}var Ps=e=>([t])=>{let u=_e(be(t()));return u instanceof ae?u:e(u)},Sn=e=>([t],u)=>{let r=Lu(be(t()));return r instanceof ae?r:e(r,u.locale)},Co=e=>([t])=>{let u=J0(be(t()));return u instanceof ae?u:e(u)},wo=e=>([t,u])=>{let r=_e(be(t()));if(r instanceof ae)return r;let n=u?_e(be(u())):0;return n instanceof ae?n:Km(r,n,e)},Gs=e=>t=>{for(let u of t){let r=u();for(let n of Array.isArray(r)?r:[r]){let a=Lo(n);if(a instanceof ae)return a;if(a!==e)return!e}}return e},zm={IF:{min:2,max:3,call:([e,t,u])=>{let r=Lo(be(e()));return r instanceof ae?r:r?be(t()):u?be(u()):!1}},IFERROR:{min:2,max:2,call:([e,t])=>{let u=be(e());return u instanceof ae?be(t()):u}},AND:{min:1,max:255,call:Gs(!0)},OR:{min:1,max:255,call:Gs(!1)},NOT:{min:1,max:1,call:([e])=>{let t=Lo(be(e()));return t instanceof ae?t:!t}},ISBLANK:{min:1,max:1,call:([e])=>{let t=be(e());return t===null||t===""}},ROUND:{min:1,max:2,call:wo("half")},ROUNDUP:{min:1,max:2,call:wo("up")},ROUNDDOWN:{min:1,max:2,call:wo("down")},ABS:{min:1,max:1,call:Ps(Math.abs)},SQRT:{min:1,max:1,call:Ps(e=>e<0?Ve("#NUM!"):Math.sqrt(e))},MOD:{min:2,max:2,call:([e,t])=>{let u=_e(be(e())),r=_e(be(t()));return u instanceof ae?u:r instanceof ae?r:r===0?Ve("#DIV/0!"):u-r*Math.floor(u/r)}},POWER:{min:2,max:2,call:([e,t])=>{let u=_e(be(e())),r=_e(be(t()));return u instanceof ae?u:r instanceof ae?r:Zu(u**r)}},SUM:{min:1,max:255,call:e=>{let t=vr(e,!0);return t instanceof ae?t:t.reduce((u,r)=>u+r,0)}},AVERAGE:{min:1,max:255,call:e=>{let t=vr(e,!0);return t instanceof ae?t:t.length===0?Ve("#DIV/0!"):t.reduce((u,r)=>u+r,0)/t.length}},MIN:{min:1,max:255,call:e=>{let t=vr(e,!0);return t instanceof ae?t:t.length===0?0:Math.min(...t)}},MAX:{min:1,max:255,call:e=>{let t=vr(e,!0);return t instanceof ae?t:t.length===0?0:Math.max(...t)}},COUNT:{min:1,max:255,call:e=>{let t=vr(e,!1);return t instanceof ae?t:t.length}},LEN:{min:1,max:1,call:Sn(e=>e.length)},UPPER:{min:1,max:1,call:Sn((e,t)=>e.toLocaleUpperCase(t))},LOWER:{min:1,max:1,call:Sn((e,t)=>e.toLocaleLowerCase(t))},TRIM:{min:1,max:1,call:Sn(e=>e.trim().replace(/ {2,}/g," "))},LEFT:{min:1,max:2,call:([e,t])=>{let u=Lu(be(e())),r=t?_e(be(t())):1;return u instanceof ae?u:r instanceof ae?r:r<0?Ve("#VALUE!"):u.slice(0,Math.trunc(r))}},RIGHT:{min:1,max:2,call:([e,t])=>{let u=Lu(be(e())),r=t?_e(be(t())):1;return u instanceof ae?u:r instanceof ae?r:r<0?Ve("#VALUE!"):Math.trunc(r)===0?"":u.slice(-Math.trunc(r))}},MID:{min:3,max:3,call:([e,t,u])=>{let r=Lu(be(e())),n=_e(be(t())),a=_e(be(u()));return r instanceof ae?r:n instanceof ae?n:a instanceof ae?a:n<1||a<0?Ve("#VALUE!"):r.substr(Math.trunc(n)-1,Math.trunc(a))}},CONCAT:{min:1,max:255,call:e=>{let t="";for(let u of e){let r=u();for(let n of Array.isArray(r)?r:[r]){let a=Lu(n);if(a instanceof ae)return a;t+=a}}return t}},YEAR:{min:1,max:1,call:Co(e=>e.getFullYear())},MONTH:{min:1,max:1,call:Co(e=>e.getMonth()+1)},DAY:{min:1,max:1,call:Co(e=>e.getDate())},TODAY:{min:0,max:0,call:(e,t)=>{let u=t.scope.now?.()??new Date;return new Date(u.getFullYear(),u.getMonth(),u.getDate())}},DATE:{min:3,max:3,call:([e,t,u])=>{let r=[e,t,u].map(i=>_e(be(i()))),n=r.find(i=>i instanceof ae);if(n)return n;let[a,o,l]=r;return new Date(Math.trunc(a),Math.trunc(o)-1,Math.trunc(l))}}};function $m(e,t,u){if(t instanceof ae)return t;if(u instanceof ae)return u;switch(e){case"&":{let a=Lu(t),o=Lu(u);return a instanceof ae?a:o instanceof ae?o:a+o}case"=":return Qu(t,u)===0;case"<>":return Qu(t,u)!==0;case"<":return Qu(t,u)<0;case"<=":return Qu(t,u)<=0;case">":return Qu(t,u)>0;case">=":return Qu(t,u)>=0}if(e==="+"||e==="-"){let a=Ls(t),o=Ls(u);if(a&&o)return e==="-"?(a.getTime()-o.getTime())/Vm:Ve("#VALUE!");if(a||o){let l=a??o,i=_e(a?u:t);return i instanceof ae?i:e==="-"&&o?Ve("#VALUE!"):Hm(l,e==="+"?i:-i)}}let r=_e(t),n=_e(u);if(r instanceof ae)return r;if(n instanceof ae)return n;switch(e){case"+":return Zu(r+n);case"-":return Zu(r-n);case"*":return Zu(r*n);case"/":return n===0?Ve("#DIV/0!"):Zu(r/n);case"^":return Zu(r**n)}return Ve("#VALUE!")}var Xu=class extends Error{constructor(e,t,u,r={}){super(e),this.position=t,this.kind=u,this.params=r}position;kind;params};function Po(e,t){let u;try{u=oi(e)}catch(i){if(i instanceof Ze)return{ok:!1,error:{message:i.message,position:i.position,kind:i.kind,params:i.params}};throw i}let r=new Set,n=!1,a=t.locale,o=i=>{switch(i.kind){case"number":case"string":case"boolean":{let s=i.value;return()=>s}case"column":{let s=t.resolveColumn(i.name);if(s===null)throw new Xu(`Unknown column [${i.name}]`,i.pos,"unknownColumn",{name:i.name});return r.add(s),h=>go(h.column(s))}case"ref":case"cell":{if(!t.allowCells)throw new Xu("Cell references like A1 belong in cell formulas \u2014 write a column as [Name]",i.pos,"cellsNotAllowed");return n=!0,s=>s.cell?go(s.cell(i)):Ve("#REF!")}case"range":{if(!t.allowCells)throw new Xu("Ranges like A1:B3 belong in cell formulas",i.from.pos,"cellsNotAllowed");return n=!0,s=>s.range?s.range(i.from,i.to).map(go):Ve("#REF!")}case"unary":{let s=o(i.operand),h=i.op;return m=>{let c=_e(be(s(m)));return c instanceof ae?c:h==="-"?-c:h==="%"?c/100:c}}case"binary":{let s=o(i.left),h=o(i.right),m=i.op;return c=>$m(m,be(s(c)),be(h(c)))}case"call":{let s=zm[i.name];if(!s)throw new Xu(`Unknown function ${i.name}`,i.pos,"unknownFunction",{name:i.name});if(i.args.length<s.min||i.args.length>s.max){let m=s.min===s.max?`${s.min}`:s.max>=255?`at least ${s.min}`:`${s.min}\u2013${s.max}`;throw new Xu(`${i.name} takes ${m} argument${m==="1"?"":"s"}`,i.pos,"argCount",{name:i.name,min:String(s.min),max:s.max>=255?"":String(s.max)})}let h=i.args.map(o);return m=>s.call(h.map(c=>()=>c(m)),{scope:m,locale:a})}}},l;try{l=o(u)}catch(i){if(i instanceof Xu)return{ok:!1,error:{message:i.message,position:i.position,kind:i.kind,params:i.params}};throw i}return{ok:!0,formula:{tree:u,columns:[...r],hasCellRefs:n,evaluate(i){try{let s=be(l(i));return typeof s=="number"&&!Number.isFinite(s)?Ve("#NUM!"):s}catch{return Ve("#VALUE!")}}}}}var Wm=new Set(["ROUND","ROUNDUP","ROUNDDOWN","ABS","SQRT","MOD","POWER","SUM","AVERAGE","MIN","MAX","COUNT","LEN","YEAR","MONTH","DAY"]),_m=new Set(["UPPER","LOWER","TRIM","LEFT","RIGHT","MID","CONCAT"]),Um=new Set(["AND","OR","NOT","ISBLANK"]),qm=new Set(["TODAY","DATE"]);function Nr(e,t){switch(e.kind){case"number":return"number";case"string":return"string";case"boolean":return"boolean";case"column":{let u=t(e.name);return u==="lookup"||u===void 0?"string":u}case"cell":case"ref":case"range":return"number";case"unary":return"number";case"binary":{if(e.op==="&")return"string";if(["=","<>","<","<=",">",">="].includes(e.op))return"boolean";if(e.op==="+"||e.op==="-"){let u=Nr(e.left,t),r=Nr(e.right,t);if(u==="date"&&r==="date")return"number";if(u==="date"||r==="date")return"date"}return"number"}case"call":{if(e.name==="IF"||e.name==="IFERROR"){let u=e.args[1];return u?Nr(u,t):"string"}return Wm.has(e.name)?"number":_m.has(e.name)?"string":Um.has(e.name)?"boolean":qm.has(e.name)?"date":"string"}}}function Pu(e,t){if(t(e))switch(e.kind){case"unary":Pu(e.operand,t);break;case"binary":Pu(e.left,t),Pu(e.right,t);break;case"call":e.args.forEach(u=>Pu(u,t));break}}function ii(e,t){let u=e;for(let r of[...t].sort((n,a)=>a.start-n.start))u=u.slice(0,r.start)+r.text+u.slice(r.end);return u}function li(e){try{return oi(e)}catch{return null}}var si=e=>typeof e=="string"&&e.trimStart().startsWith("=");function yo(e,t,u,r){return`${u?"$":""}${Rm(e)}${r?"$":""}${t+1}`}function Go(e){let t=[...e].sort((u,r)=>u-r);return t.every((u,r)=>u>=0&&(r===0||u===t[r-1]+1))}function Os(e,t){if(!si(e))return e;let u=li(e);if(!u)return e;let r=[],n=a=>{let o=t.columnAt(a.col),l=t.rowKeyAt(a.row);return o===null||l===null?null:Tr(o,l,a.absCol,a.absRow)};return Pu(u,a=>{if(a.kind==="cell"){let o=n(a);return o!==null&&r.push({start:a.pos,end:a.end,text:o}),!1}if(a.kind==="range"&&a.from.kind==="cell"&&a.to.kind==="cell"){let{from:o,to:l}=a,i=[];for(let c=Math.min(o.col,l.col);c<=Math.max(o.col,l.col);c++){let p=t.columnAt(c);if(p===null)return!1;i.push(p)}let s=[];for(let c=Math.min(o.row,l.row);c<=Math.max(o.row,l.row);c++){let p=t.rowKeyAt(c);if(p===null)return!1;s.push(p)}let h=s.map(c=>t.rowDataIndex(c)),m=i.map(c=>t.columnDataIndex(c));if(Go(h)&&Go(m)){let c=s[h.indexOf(Math.min(...h))],p=s[h.indexOf(Math.max(...h))],C=i[m.indexOf(Math.min(...m))],E=i[m.indexOf(Math.max(...m))];r.push({start:o.pos,end:l.end,text:`${Tr(C,c,o.absCol,o.absRow)}:${Tr(E,p,l.absCol,l.absRow)}`})}else{let c=[];for(let p of s)for(let C of i)c.push(Tr(C,p));r.push({start:o.pos,end:l.end,text:c.join(";")})}return!1}return!0}),ii(e,r)}function jm(e,t){if(!si(e))return e;let u=li(e);if(!u)return e;let r=[],n=a=>{let o=t.columnViewIndex(a.columnId),l=t.rowViewIndex(a.rowKey);return o<0||l<0?null:yo(o,l,a.absCol,a.absRow)};return Pu(u,a=>{if(a.kind==="ref"){let o=n(a);return o!==null&&r.push({start:a.pos,end:a.end,text:o}),!1}if(a.kind==="range"&&a.from.kind==="ref"&&a.to.kind==="ref"){let o=a.from,l=a.to,i=t.rowViewIndex(o.rowKey),s=t.rowViewIndex(l.rowKey),h=t.columnViewIndex(o.columnId),m=t.columnViewIndex(l.columnId);if(i<0||s<0||h<0||m<0)return!1;let c=(D,F)=>Math.abs(D-F)+1,p=c(t.rowDataIndex(o.rowKey),t.rowDataIndex(l.rowKey)),C=c(t.columnDataIndex(o.columnId),t.columnDataIndex(l.columnId));if(p!==c(i,s)||C!==c(h,m))return!1;let E=[];for(let D=Math.min(i,s);D<=Math.max(i,s);D++){let F=t.rowKeyAt(D);E.push(F===null?-1:t.rowDataIndex(F))}return Go(E)&&r.push({start:o.pos,end:l.end,text:`${yo(h,i,o.absCol,o.absRow)}:${yo(m,s,l.absCol,l.absRow)}`}),!1}return!0}),ii(e,r)}function Ym(e,t,u,r){if(!si(e)||t===0&&u===0)return e;let n=li(e);if(!n)return e;let a=[],o=l=>{let i=l.columnId,s=l.rowKey;if(!l.absCol&&u!==0){let h=r.columnAt(r.columnViewIndex(l.columnId)+u);if(h===null||r.columnViewIndex(l.columnId)<0)return null;i=h}if(!l.absRow&&t!==0){let h=r.rowKeyAt(r.rowViewIndex(l.rowKey)+t);if(h===null||r.rowViewIndex(l.rowKey)<0)return null;s=h}return Tr(i,s,l.absCol,l.absRow)};return Pu(n,l=>{if(l.kind==="ref"){let i=o(l);return i!==null&&a.push({start:l.pos,end:l.end,text:i}),!1}if(l.kind==="range"){for(let i of[l.from,l.to]){if(i.kind!=="ref")continue;let s=o(i);s!==null&&a.push({start:i.pos,end:i.end,text:s})}return!1}return!0}),ii(e,a)}var Qm={"=":1,"<>":1,"<":1,"<=":1,">":1,">=":1,"&":2,"+":3,"-":3,"*":4,"/":4,"^":5},Vs=6,Xm=7;function Zm(e){return String(Number(e.toPrecision(15)))}function Jm(e,t,u=r=>r){let r=(n,a,o)=>{switch(n.kind){case"number":return Zm(n.value);case"string":return`"${n.value.replace(/"/g,'""')}"`;case"boolean":return n.value?"TRUE":"FALSE";case"column":case"cell":case"ref":case"range":return t(n);case"unary":{if(n.op==="%"){let s=r(n.operand,Xm,!1);return s===null?null:`${s}%`}let l=r(n.operand,Vs,!1);if(l===null)return null;let i=`${n.op}${l}`;return a>Vs?`(${i})`:i}case"binary":{let l=Qm[n.op],i=r(n.left,l,!1),s=r(n.right,l,!0);if(i===null||s===null)return null;let h=`${i}${n.op}${s}`;return l<a||l===a&&o?`(${h})`:h}case"call":{let l=[];for(let i of n.args){let s=r(i,0,!1);if(s===null)return null;l.push(s)}return`${u(n.name)}(${l.join(",")})`}}};return r(e,0,!1)}function di(e){return{sum:e.summarySum,avg:e.summaryAvg,min:e.summaryMin,max:e.summaryMax,count:e.summaryCount,countDistinct:e.summaryDistinct,custom:e.summaryCustom}}var ef=di(pu("en"));function ci(e,t=ef){return e.label??t[e.type]}var tf=new Set(["sum","avg","min","max"]);function Vr(e,t,u){if(e.valueFormatter)return e.valueFormatter(t??null);if(t==null)return"\u2014";if(!tf.has(e.type))return t.toLocaleString();if(u?.dataType==="date"){let r=new Date(t);return u.valueFormatter?u.valueFormatter(r,{}):r.toLocaleDateString()}return u?.valueFormatter?u.valueFormatter(t,{}):(Math.round(t*100)/100||0).toLocaleString(void 0,{maximumFractionDigits:2})}function ed(e){switch(e){case"number":return["sum","avg","min","max","count","countDistinct"];case"date":return["min","max","count","countDistinct"];default:return["count","countDistinct"]}}function Hs(e){return e.kind==="data"||e.kind==="group"}function uf(e,t,u,r){let n=u.getCellValue(e.data,t);return r?{text:n==null?"":String(n),value:n}:{text:cu(u.getDef(t),n,e.data),value:n}}var rf=new Set(["sum","avg","min","max"]);function Ks(e,t,u,r){if(t==null)return{text:"",value:null};if(r)return{text:String(t),value:t};let n=rf.has(e.type);return{text:Vr(e,t,u),value:n&&u?.dataType==="date"?new Date(t):t,numFmt:n?void 0:"#,##0"}}function nf({nodes:e,columns:t,options:u,isSelected:r,selectionCount:n=0,summaries:a}){let o=t.runtime({includeScreenHidden:!0}),l=(u.columnIds??o.map(p=>p.state.id)).map(p=>{let C=t.getDef(p),E=t.getState(p),D=C?.dataType==="number";return{id:p,header:C?.headerName??C?.field??p,width:Math.max(8,Math.round((E?.width??100)/7)),isNumeric:D,isDate:C?.dataType==="date",align:C?.align??(D||C?.dataType==="bigint"?"right":"left"),numFmt:C?.excelFormat??of(C?.dataType)}}),i=!!u.selectedOnly&&n>0&&!!r,s=u.includeGroups!==!1,h=!!u.raw,m=[];for(let p of e)if(p){if(t4(p)){if(!s||i)continue;let C=p.aggregates,E=l.map((D,F)=>{if(F===0)return{text:`${p.label===""?"(Blanks)":p.label} (${p.count})`,value:p.label};let x=C?a?.defs.find(k=>k.columnId===D.id):void 0;return x?Ks(x,C[`${x.columnId}:${x.type}`],t.getDef(D.id),h):{text:"",value:null}});m.push({kind:"group",cells:E,level:p.level});continue}if(u4(p)){if(!s||i)continue;let C=l.map((E,D)=>D===0?{text:p.label,value:p.label}:{text:"",value:null});m.push({kind:"group",cells:C,level:p.tree.depth});continue}Bt(p)&&(i&&!r(p.key)||m.push({kind:"data",cells:l.map(C=>{let E=uf(p,C.id,t,h),D=t.getDef(C.id)?.exportLink?.(p.data),F=df(D);return F?{...E,link:F}:E}),level:0,source:{key:p.key,row:p.data}}))}let c;return a&&a.defs.length>0&&(c=l.map(p=>{let C=a.defs.find(E=>E.columnId===p.id);return C?Ks(C,a.values[`${C.columnId}:${C.type}`],t.getDef(p.id),h):null})),{columns:l,rows:m,totals:c}}var td="#,##0.###",af="#,##0";function of(e){if(e==="number")return td;if(e==="date")return"yyyy-mm-dd"}function lf(e,t){return e==null?"":e instanceof Date?Number.isNaN(e.getTime())?"":e.getHours()===0&&e.getMinutes()===0&&e.getSeconds()===0?e.toLocaleDateString(t):e.toLocaleString(t):typeof e=="number"?Number.isFinite(e)?e.toLocaleString(t):"":String(e)}function sf(e,t,u="en"){if(t.size===0)return e;let r=[];return e.rows.forEach((n,a)=>{r.push(n);let o=t.get(a);if(!o||!Array.isArray(o.columns))return;let l=Array.isArray(o.rows)?o.rows:[],i=o.columns.map((h,m)=>{let c=typeof h=="string"?{header:h}:h,p=l.length>0&&l.every(C=>C?.[m]==null||typeof C[m]=="number");return{header:String(c.header??""),align:c.align??(p?"right":"left"),...c.numFmt?{numFmt:c.numFmt}:{}}}),s=n.level;o.title&&r.push({kind:"detailTitle",cells:[{text:o.title,value:o.title}],level:s,detailColumns:i}),r.push({kind:"detailHeader",cells:i.map(h=>({text:h.header,value:h.header})),level:s,detailColumns:i});for(let h of l)r.push({kind:"detail",cells:i.map((m,c)=>{let p=h?.[c]??null;return{text:lf(p,u),value:p}}),level:s,detailColumns:i})}),{...e,rows:r}}function df(e){if(typeof e!="string")return null;let t=e.trim();return/^(https?:\/\/|mailto:|tel:)/i.test(t)?t:null}var et=class extends Error{constructor(){super("Export aborted"),this.name="ExportAbortedError"}},ud="\uFEFF",cf=new Set(["tr","de","fr","es","it","pt","ru","ar"]);function hf(e){let t=(e??"en").split(/[-_]/)[0].toLowerCase();return cf.has(t)?";":","}function Wn(e,t){return e.includes(t)||e.includes('"')||e.includes(`
|
|
5
|
+
`)||e.includes("\r")||e!==e.trim()?`"${e.replace(/"/g,'""')}"`:e}async function mf(e,t={}){let u=t.delimiter??",",r=t.newline??`\r
|
|
6
|
+
`,n=[];t.includeHeaders!==!1&&n.push(e.columns.map(l=>Wn(l.header,u)).join(u));let a=e.rows.length;for(let l=0;l<a;l++){if(t.signal?.aborted)throw new et;let i=e.rows[l];i.kind!=="data"&&i.kind!=="group"||(n.push(i.cells.map(s=>Wn(s.text,u)).join(u)),(l+1)%5e3===0&&(t.onProgress?.((l+1)/a),await new Promise(s=>setTimeout(s,0))))}t.onProgress?.(1);let o=n.join(r);return t.bom===!1?o:ud+o}async function ff(e,t={}){let u=await mf(e,t);return new Blob([u],{type:"text/csv;charset=utf-8;"})}async function pf(e,t,u,r={}){let n=r.delimiter??",",a=r.newline??`\r
|
|
7
|
+
`,o=new TextEncoder,l=!0,i=0,s=r.bom===!1?"":ud;r.includeHeaders!==!1&&(s+=t.map(h=>Wn(h.header,n)).join(n),l=!1),s&&await e.write(o.encode(s));for await(let h of u){if(r.signal?.aborted)throw new et;let m="";for(let c of h)c.kind!=="data"&&c.kind!=="group"||(m+=(l?"":a)+c.cells.map(p=>Wn(p.text,n)).join(n),l=!1,i++);m&&await e.write(o.encode(m))}return i}var gf="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",Eo="FFF1F5F9",Cf="FFFAFAFA",zs="FFE2E8F0",Mr=1048576,wf=31;function rd(e,t,u){for(let r=Math.max(2,t);;r++){let n=` (${r})`,a=e.slice(0,wf-n.length)+n;if(!u.has(a.toLowerCase()))return a}}var nd=/^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}(?::\d{2}(?:\.\d{1,9})?)?)?(?:Z|[+-]\d{2}:?\d{2})?$/;function bo(e){return new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()))}function yf(e){let t=/^(\d{4})-(\d{2})-(\d{2})/.exec(e);if(!t)return!1;let u=Number(t[1]),r=Number(t[2]),n=Number(t[3]);return u<1||r<1||r>12||n<1?!1:n<=new Date(u,r,0).getDate()}var Ef=/^-?(?:\d+\.?\d*|\.\d+)$/;function bf(e){let t=e.trim();if(!Ef.test(t)||t.replace(/^-|\./g,"").replace(/^0+(?=\d)/,"").length>15)return null;let u=Number(t);return Number.isFinite(u)?u:null}function ad(e,t,u){if(!(u?.numFmt!==td||typeof t!="number")){if(typeof e=="string"){let r=/\.(\d+)$/.exec(e.trim())?.[1].length??0;if(r>0)return`#,##0.${"0".repeat(Math.min(r,10))}`}return Number.isInteger(t)?af:void 0}}function Oo(e){if(e instanceof Date)return Number.isNaN(e.getTime())?null:bo(e);if(typeof e=="number"&&Number.isFinite(e))return bo(new Date(e));if(typeof e=="string"&&nd.test(e.trim())){let t=Xn(e.trim());return t?bo(t):null}return null}function Vo(e,t,u,r){if(e.value instanceof Date)return Oo(e.value)??(u?e.value:e.text);if(r&&t?.isDate){if(typeof e.value=="string"&&nd.test(e.value.trim())&&!yf(e.value.trim()))return null;let n=Oo(e.value);if(n)return n}if(r&&t?.isNumeric&&typeof e.value=="string"){let n=bf(e.value);if(n!==null)return n}return typeof e.value=="bigint"?String(e.value):u||typeof e.value=="number"?e.value:e.text}async function Af(){let e;try{e=await import("exceljs")}catch{throw new Error('[datagrid] Excel export needs the "exceljs" package. Install it with: npm i exceljs')}let t=e,u=t.Workbook?t:t.default;if(!u?.Workbook)throw new Error('[datagrid] Excel export needs the "exceljs" package, and what loaded exposes no Workbook \u2014 it is either not installed (npm i exceljs) or a version this writer does not understand.');return u}function Ho(e,t,u){e.columns=t.columns.map(r=>({key:r.id,width:r.width,style:u?{alignment:{horizontal:r.align},...r.numFmt?{numFmt:r.numFmt}:{}}:r.numFmt?{numFmt:r.numFmt}:void 0}))}function od(e){let t=e,u="";for(;t>0;){let r=(t-1)%26;u=String.fromCharCode(65+r)+u,t=Math.floor((t-1)/26)}return u||"A"}function hi(e,t){if(t&&(t.value!==void 0&&(e.value=t.value),t.font&&(e.font={...e.font,...t.font,...t.font.color?{color:{argb:t.font.color}}:{}}),t.fill&&(e.fill={type:"pattern",pattern:"solid",fgColor:{argb:t.fill}}),t.numFmt&&(e.numFmt=t.numFmt),t.alignment&&(e.alignment={...e.alignment,...t.alignment}),t.border)){let u={style:"thin",color:{argb:t.border}};e.border={top:u,left:u,bottom:u,right:u}}}function Rr(e,t,u,r,n){let a=t.customizeCell;a&&e.eachCell((o,l)=>{let i=r?.columns[l-1],s=a({kind:u,columnId:i?.id??null,value:o.value,text:o.value==null?"":String(o.value),rowNumber:e.number,colNumber:l,rowIndex:n});hi(o,s)})}function _n(e,t,u,r){if(t?.length)for(let n of t){e.room()||e.continue();let a=e.sheet,o=a.addRow(n.cells);n.height&&(o.height=n.height),n.style&&o.eachCell(l=>hi(l,n.style)),n.merge&&u>1&&a.mergeCells(`A${o.number}:${od(u)}${o.number}`),Rr(o,r,"band",null,-1)}}async function $s(e,t,u,r,n,a){let o=null,l=t.columns.length,i=new Map,s=[],h=u.formulas!==!1,m=(k,M)=>{let z=k.addRow(t.columns.map(O=>O.header));return z.font={bold:!0},z.fill={type:"pattern",pattern:"solid",fgColor:{argb:Eo}},n&&(z.alignment={horizontal:"left",vertical:"middle"},z.border={bottom:{style:"thin",color:{argb:zs}}}),Rr(z,u,"header",t,-1),M&&(u.autoFilter!==!1&&(k.autoFilter={from:{row:z.number,column:1},to:{row:z.number,column:l}}),u.freezeHeader!==!1&&(k.views=[{state:"frozen",ySplit:z.number}])),z.number},c=r&&l>0;e.onContinue=c?k=>{m(k,!0)}:null,c&&(e.room(2)?o=m(e.sheet,a):e.continue());let p=t.rows.length,C=o===null?0:o+1,E=o??0,D=0,F=-1,x=(k,M)=>{M.forEach((z,O)=>{z?.numFmt&&(k.getCell(O+1).numFmt=z.numFmt)})};for(let k=0;k<p;k++){if(u.signal?.aborted)throw new et;let M=t.rows[k];if(M.kind==="detailTitle"||M.kind==="detailHeader"||M.kind==="detail"){e.room()||e.continue();let G=e.sheet.addRow([null,...M.cells.map(Y=>{let j=Y.value;return j instanceof Date?Oo(j)??Y.text:typeof j=="number"||typeof j=="boolean"?j:Y.text})]);E=G.number;let W=M.detailColumns??[];M.cells.forEach((Y,j)=>{let J=G.getCell(j+2),ee=W[j];J.numFmt=M.kind==="detail"&&ee?.numFmt?ee.numFmt:"General",J.alignment={horizontal:M.kind==="detailTitle"?"left":ee?.align??"left"},M.kind==="detailHeader"&&(J.font={bold:!0},J.fill={type:"pattern",pattern:"solid",fgColor:{argb:Eo}})}),M.kind==="detailTitle"&&(G.getCell(2).font={bold:!0,italic:!0}),n&&(G.outlineLevel=(F>=0?F+1:0)+1),u.customizeCell&&G.eachCell((Y,j)=>{j<2||hi(Y,u.customizeCell({kind:"detail",columnId:null,value:Y.value,text:Y.value==null?"":String(Y.value),rowNumber:G.number,colNumber:j,rowIndex:k}))});continue}let z=M.cells.map((G,W)=>Vo(G,t.columns[W],!!u.raw,M.kind==="data"));e.room()||e.continue();let O=e.sheet.addRow(z);x(O,M.cells),M.kind==="data"&&z.forEach((G,W)=>{if(M.cells[W]?.numFmt)return;let Y=ad(M.cells[W]?.value,G,t.columns[W]);Y&&(O.getCell(W+1).numFmt=Y)}),k===0&&(C=O.number),E=O.number,M.kind==="data"&&(M.source&&i.set(String(M.source.key),{sheet:e.sheet,row:O.number}),M.cells.forEach((G,W)=>{if(h&&G.excelFormula)s.push({sheet:e.sheet,row:O.number,column:W+1,cell:G});else if(G.link){let Y=O.getCell(W+1);Y.value={text:G.text,hyperlink:G.link},Y.font={color:{argb:"FF0563C1"},underline:!0}}})),M.kind==="group"?(F=M.level,O.font={bold:!0},O.getCell(1).alignment={indent:M.level,horizontal:"left"},n&&(O.fill={type:"pattern",pattern:"solid",fgColor:{argb:Eo}},O.outlineLevel=M.level),D=0,Rr(O,u,"group",t,k)):(n&&(F>=0&&(O.outlineLevel=F+1),D%2===1&&(O.fill={type:"pattern",pattern:"solid",fgColor:{argb:Cf}})),D++,Rr(O,u,"data",t,k)),(k+1)%5e3===0&&(u.onProgress?.((k+1)/p),await new Promise(G=>setTimeout(G,0)))}if(n&&u.totalsRow!==!1&&t.totals){e.room()||e.continue();let k=e.sheet.addRow(t.totals.map((M,z)=>M==null?"":Vo(M,t.columns[z],!1,!1)));x(k,t.totals.map(M=>M??{})),k.font={bold:!0},k.border={top:{style:"double",color:{argb:zs}}},Rr(k,u,"totals",t,-1),E=k.number}return e.onContinue=null,vf(t,i,s),{headerRow:o,firstDataRow:C,lastRow:E}}function xf(e){return`'${e.replace(/'/g,"''")}'!`}function vf(e,t,u){if(u.length===0)return;let r=new Map(e.columns.map((a,o)=>[a.id,o+1])),n=(a,o)=>{let l=t.get(a),i=r.get(o);return l&&i!==void 0?{sheet:l.sheet.name,row:l.row,column:i}:null};for(let{sheet:a,row:o,column:l,cell:i}of u){let s=i.excelFormula(n,{sheet:a.name,row:o,column:l});if(s===null)continue;let h=a.getRow(o).getCell(l);h.value={formula:s,result:h.value}}}function Fr(e,t){let u=`${od(e.column)}${e.row}`;return e.sheet===t.sheet?u:xf(e.sheet)+u}function Ff(e,t,u){if(u?.length)for(let r of u){let n=e.addImage({...typeof r.data=="string"?{base64:r.data}:{buffer:r.data},extension:r.extension}),a=r.position??{col:0,row:0,width:160,height:48};t.addImage(n,{tl:{col:a.col,row:a.row},ext:{width:a.width,height:a.height}})}}async function Df(e,t={}){let u=await Af(),r=t.styled===!0,n=t.includeHeaders!==!1,a=new u.Workbook,o=Math.floor(t.maxRowsPerSheet??Mr),l=Math.max(2,Math.min(Mr,Number.isFinite(o)?o:Mr)),i=new Set,s=D=>{i.add(D.toLowerCase());let F=a.addWorksheet(D);return r&&(F.properties.outlineProperties={summaryBelow:!1,summaryRight:!1}),F},h=(D,F)=>{let x=D.name,k=2,M={sheet:D,limit:l,room:(z=1)=>M.sheet.rowCount+z<=l,continue:()=>{let z=s(rd(x,k++,i));Ho(z,F,r),M.sheet=z,M.onContinue?.(z)},onContinue:null};return M},m=s(t.sheetName??"Data");Ho(m,e,r);let c=h(m,e);Ff(a,m,t.images),_n(c,t.headerBlock,e.columns.length,t),await $s(c,e,t,n,r,!0),t.onProgress?.(1);let p=c,C=c;for(let D of t.additionalGrids??[]){let F=!D.sheetName;p=Sf(s,h,p,D,t,r),await $s(p,D.model,t,D.includeHeaders!==!1,r,!1),F&&C===c&&(C=p)}_n(C,t.footerBlock,e.columns.length,t);let E=await a.xlsx.writeBuffer();return new Blob([E],{type:gf})}function Sf(e,t,u,r,n,a){let o=r.title?[{cells:[r.title],merge:!0,style:{font:{bold:!0,size:13}}}]:void 0;if(r.sheetName){let i=e(r.sheetName);Ho(i,r.model,a);let s=t(i,r.model);return _n(s,o,r.model.columns.length,n),s}let l=r.gap??2;for(let i=0;i<l;i++){if(!u.room()){u.continue();break}u.sheet.addRow([])}return _n(u,o,r.model.columns.length,n),u}var kf="application/pdf",Ao=[241,245,249],Bf=[250,250,250],kt=[30,41,59];async function Tf(){let e=new Error('[datagrid] PDF export needs "jspdf" and "jspdf-autotable". Install them with: npm i jspdf jspdf-autotable'),t;try{let[u,r]=await Promise.all([import("jspdf"),import("jspdf-autotable")]);t={jsPDF:u.jsPDF??u.default,autoTable:r.default??r}}catch{throw e}if(typeof t.jsPDF!="function"||typeof t.autoTable!="function")throw e;return t}var mi="helvetica",Rf=/[^\u0000-\u00ff\u0152\u0153\u0160\u0161\u0178\u017d\u017e\u0192\u02c6\u02dc\u2013\u2014\u2018\u2019\u201a\u201c\u201d\u201e\u2020\u2021\u2022\u2026\u2030\u2039\u203a\u20ac\u2122]/u;function Nf(e,t){let u=function*(){for(let r of t.headerBlock??[])yield r.text;for(let r of t.footerBlock??[])yield r.text;for(let r of[{model:e,title:void 0},...t.additionalGrids??[]]){r.title&&(yield r.title);for(let n of r.model.columns)yield n.header;for(let n of r.model.rows)for(let a of n.cells)yield a.text;for(let n of r.model.totals??[])n&&(yield n.text)}};for(let r of u()){let n=Rf.exec(r);if(n)return n[0]}return null}function Mf(e,t,u){let r,n;if(typeof e=="string")r=atob(e.slice(0,8)),n=e;else{let a=e instanceof Uint8Array?e:new Uint8Array(e),o=[];for(let l=0;l<a.length;l+=32768)o.push(String.fromCharCode.apply(null,a.subarray(l,l+32768)));n=o.join(""),r=n.slice(0,4)}if(!r.startsWith("\0\0\0")){let a=r.startsWith("OTTO")?" (it is OpenType-CFF, .otf)":r.startsWith("wOF")?" (it is WOFF)":"";throw new Error(`[datagrid] PDF export: font "${t}" (${u}) is not a TrueType .ttf file${a}. jsPDF embeds TrueType only.`)}return n}function If(e,t){let u=[["normal",t.normal],["bold",t.bold??t.normal],["italic",t.italic??t.normal],["bolditalic",t.boldItalic??t.bold??t.italic??t.normal]];for(let[r,n]of u){let a=`${t.family}-${r}.ttf`;e.addFileToVFS(a,Mf(n,t.family,r)),e.addFont(a,t.family,r)}return t.family}function Ko(e,t,u,r,n){if(!t?.length)return u;let a=e.internal.pageSize.getWidth(),o=u;for(let l of t){let i=l.fontSize??10;e.setFontSize(i),e.setFont(n,l.fontStyle??"normal");let s=l.color??kt;e.setTextColor(s[0],s[1],s[2]);let h=l.align??"left",m=h==="center"?a/2:h==="right"?a-r:r;o+=i*.353,e.text(l.text,m,o,{align:h}),o+=l.spacing??2}return e.setTextColor(kt[0],kt[1],kt[2]),o}var Lf=[245,247,250];function Pf(e,t){if(e.kind==="data"||e.kind==="group")return e.cells.map(a=>a.text);let u=e.cells.map(a=>a.text);if(t<=1)return[u.join(" \xB7 ")];if(e.kind==="detailTitle")return["",{content:u[0]??"",colSpan:t-1}];let r=t-1,n=u.length>r?[...u.slice(0,r-1),u.slice(r-1).join(" \xB7 ")]:u;for(;n.length<r;)n.push("");return["",...n]}function Gf(e,t){t&&(t.text!==void 0&&(e.text=[t.text]),t.fillColor&&(e.styles.fillColor=t.fillColor),t.textColor&&(e.styles.textColor=t.textColor),t.fontStyle&&(e.styles.fontStyle=t.fontStyle),t.fontSize&&(e.styles.fontSize=t.fontSize),t.halign&&(e.styles.halign=t.halign))}function fi(e,t,u,r,n,a,o){let l=r.styled!==!1,i=r.margin??14,s=o?.from??0,h=o?.to??u.rows.length,m=u.columns.length,c=u.rows.slice(s,h).map(C=>Pf(C,m)),p=l&&r.totalsRow!==!1&&u.totals&&(!o||o.withTotals)?[u.totals.map(C=>C?.text??"")]:void 0;return t(e,{startY:n,margin:{left:i,right:i},head:a&&u.columns.length>0?[u.columns.map(C=>C.header)]:void 0,body:c,foot:p,theme:l?"grid":"plain",showHead:r.repeatHeaders===!1?"firstPage":"everyPage",showFoot:p?"lastPage":"never",rowPageBreak:"avoid",styles:{...r.font?{font:r.font.family}:{},fontSize:8,cellPadding:2,textColor:kt},headStyles:{fillColor:Ao,textColor:kt,fontStyle:"bold"},footStyles:{fillColor:Ao,textColor:kt,fontStyle:"bold"},alternateRowStyles:l?{fillColor:Bf}:void 0,columnStyles:l?Object.fromEntries(u.columns.map((C,E)=>[E,{halign:C.align}])):void 0,didDrawCell:C=>{if(C.section!=="body")return;let E=u.rows[s+C.row.index]?.cells[C.column.index]?.link,{x:D,y:F,width:x,height:k}=C.cell;E&&e.link&&D!==void 0&&F!==void 0&&x!==void 0&&k!==void 0&&e.link(D,F,x,k,{url:E})},didParseCell:C=>{C.section==="body"&&u.rows[s+C.row.index]?.cells[C.column.index]?.link&&(C.cell.styles.textColor=[5,99,193]);let E,D=-1;if(C.section==="head")E="header";else if(C.section==="foot")E="totals";else{D=s+C.row.index;let M=u.rows[D]?.kind;E=M==="group"?"group":M==="data"||M===void 0?"data":"detail"}if(E==="detail"){let M=u.rows[D];C.cell.styles.fontSize=7,C.cell.styles.fillColor=Lf,(M.kind==="detailHeader"||M.kind==="detailTitle")&&(C.cell.styles.fontStyle="bold"),M.kind==="detailTitle"&&(C.cell.styles.fontStyle="bolditalic");let z=M.detailColumns?.[C.column.index-1];C.cell.styles.halign=M.kind==="detail"&&z?z.align:"left"}E==="group"&&(C.cell.styles.fontStyle="bold",C.cell.styles.fillColor=Ao,C.column.index===0&&(C.cell.styles.cellPadding={top:2,right:2,bottom:2,left:2+(u.rows[D]?.level??0)*4}));let F=r.customizeCell;if(!F)return;let x=u.columns[C.column.index],k=D>=0?u.rows[D]?.cells[C.column.index]:void 0;Gf(C.cell,F({kind:E,columnId:x?.id??null,text:Array.isArray(C.cell.text)?C.cell.text.join(" "):String(C.cell.text),value:k?.value,rowIndex:D,columnIndex:C.column.index}))}}),e.lastAutoTable?.finalY??n}function Of(e,t){t?.length&&t.forEach((u,r)=>{try{e.addImage(u.data,u.format,u.x,u.y,u.width,u.height)}catch(n){let a=n instanceof Error?n.message:String(n);throw new Error(`[datagrid] PDF export could not decode images[${r}] (format: ${u.format}). The data is not a valid ${u.format} \u2014 check that it is a complete file, base64-encoded, and that \`format\` matches it. Underlying error: ${a}`)}})}function Vf(e,t){let u=t.pageNumbers;if(!u)return;let r=t.margin??14,n=e.getNumberOfPages(),a=e.internal.pageSize.getWidth(),o=e.internal.pageSize.getHeight();for(let l=1;l<=n;l++){e.setPage(l),e.setFontSize(8),e.setFont(t.font?.family??mi,"normal"),e.setTextColor(148,163,184);let i=typeof u=="function"?u(l,n):`${l} / ${n}`;e.text(i,a-r,o-8,{align:"right"})}e.setTextColor(kt[0],kt[1],kt[2])}var Hf=400,Kf=1e3;async function zf(e,t,u,r,n,a,o){let l=u.rows.length,i=Math.max(1,r.sliceRows||Kf),s=n,h=0;for(;h<l;){if(r.signal?.aborted)throw new et;let m=Math.min(l,h+i);h>0&&e.addPage(),s=fi(e,t,u,r,h===0?n:o,a,{from:h,to:m,withTotals:m>=l}),h=m,r.onProgress?.(h/l),h<l&&await new Promise(c=>setTimeout(c,0))}return s}async function $f(e,t={}){if(t.signal?.aborted)throw new et;let{jsPDF:u,autoTable:r}=await Tf(),n=t.margin??14,a=new u({orientation:t.orientation??"landscape",unit:"mm",format:t.pageSize??"a4"}),o=t.font?If(a,t.font):mi;if(!t.font){let s=Nf(e,t);if(s!==null){let h=s.codePointAt(0).toString(16).toUpperCase().padStart(4,"0");console.warn(`[datagrid] PDF export: "${s}" (U+${h}) cannot be drawn by the built-in PDF font and will come out as the wrong character. Pass \`font\` (a TrueType .ttf covering your language) in the PDF export options \u2014 see PdfExportOptions.font.`)}}Of(a,t.images);let l=n;l=Ko(a,t.headerBlock,l,n,o),l=t.sliceRows!==0&&e.rows.length>Hf?await zf(a,r,e,t,l+2,t.includeHeaders!==!1,n):fi(a,r,e,t,l+2,t.includeHeaders!==!1);for(let s of t.additionalGrids??[]){if(t.signal?.aborted)throw new et;l=Wf(a,r,s,t,l,n)}if(t.onProgress?.(1),t.footerBlock?.length){let s=t.footerBlock.reduce((h,m)=>h+(m.fontSize??10)*.353+(m.spacing??2),4);l+s>a.internal.pageSize.getHeight()-n&&(a.addPage(),l=n),Ko(a,t.footerBlock,l+4,n,o)}Vf(a,t);let i=a.output("arraybuffer");return new Blob([i],{type:kf})}function Wf(e,t,u,r,n,a){let o=n;return u.pageBreak?(e.addPage(),o=a):o+=8,u.title&&(o=Ko(e,[{text:u.title,fontSize:12,fontStyle:"bold"}],o,a,r.font?.family??mi)),fi(e,t,u.model,r,o+2,u.includeHeaders!==!1)}function id(e,t){if(typeof document>"u")throw new Error("[datagrid] downloadBlob requires a browser document.");let u=URL.createObjectURL(e),r=document.createElement("a");r.href=u,r.download=t,r.style.display="none",document.body.appendChild(r),r.click(),r.remove(),setTimeout(()=>URL.revokeObjectURL(u),0)}function pi(e){return{"=":e.opEquals,"<>":e.opNotEquals,">":e.opGreater,">=":e.opGreaterOrEqual,"<":e.opLess,"<=":e.opLessOrEqual,contains:e.opContains,notcontains:e.opNotContains,startswith:e.opStartsWith,endswith:e.opEndsWith,isnull:e.opIsBlank,isnotnull:e.opIsNotBlank,in:e.opIsOneOf,between:e.opIsBetween,period:e.opInPeriod,periods:{today:e.periodToday,yesterday:e.periodYesterday,tomorrow:e.periodTomorrow,thisWeek:e.periodThisWeek,lastWeek:e.periodLastWeek,nextWeek:e.periodNextWeek,thisMonth:e.periodThisMonth,lastMonth:e.periodLastMonth,nextMonth:e.periodNextMonth,thisQuarter:e.periodThisQuarter,lastQuarter:e.periodLastQuarter,nextQuarter:e.periodNextQuarter,thisYear:e.periodThisYear,lastYear:e.periodLastYear,nextYear:e.periodNextYear,yearToDate:e.periodYearToDate,lastDays:e.periodLastDays,nextDays:e.periodNextDays},and:e.filterAnd.toLocaleLowerCase(),or:e.filterOr.toLocaleLowerCase(),blank:e.filterBlank,emptyText:e.filterEmptyText,space:e.filterSpace,spaces:e.filterSpaces,listSeparator:", ",ofN:e.opValuesCount}}var _f=pi(pu("en"));function ld(e,t,u={}){if(!e)return null;let r={..._f,...u.labels},n=u.maxListValues??3,a=s=>{let h=t.getDef(s);return h?.headerName??h?.field??s},o=(s,h)=>{if(h==null)return r.blank;if(typeof h=="string"&&h.trim()===""){if(h==="")return r.emptyText;let c=Array.from(h).length;return c===1?r.space:r.spaces.replace("{n}",String(c))}let m=Ut(t.getDef(s),h);return m!==null?m:h instanceof Date?h.toLocaleDateString():String(h)},l=(s,h)=>{if(Je(s)){let p=s.nodes.map(E=>l(E,h+1)).filter(Boolean);if(p.length===0)return"";let C=p.join(` ${r[s.logic]} `);return h>0&&p.length>1?`(${C})`:C}let m=a(s.columnId);if(s.operator==="period"){let p=s.value,C=p?r.periods[p.period]:void 0;return`${m}: ${C?C.replace("{n}",String(p?.days??"")):r.blank}`}if(!Lr(s.operator)){let p=fu(t.getDef(s.columnId),s.operator),C=p?.label??s.operator;return(p?.operandType??"text")==="none"||s.value===void 0?`${m} ${C}`:`${m} ${C} ${o(s.columnId,s.value)}`}let c=r[s.operator==="notin"?"<>":s.operator];switch(s.operator){case"isnull":case"isnotnull":return`${m} ${c}`;case"in":case"notin":{let p=Array.isArray(s.value)?s.value:[s.value];return p.length>n?`${m} ${c} ${r.ofN.replace("{n}",String(p.length))}`:`${m} ${c} ${p.map(C=>o(s.columnId,C)).join(r.listSeparator)}`}case"between":{let[p,C]=Array.isArray(s.value)?s.value:[void 0,void 0];return`${m} ${c} ${o(s.columnId,p)} \u2013 ${o(s.columnId,C)}`}default:return`${m} ${c} ${o(s.columnId,s.value)}`}},i=l(e,0);return i===""?null:i}function Uf(e,t,u,r,n){let a=e,o=a.findIndex(h=>n(h)===t);if(o<0)return{rows:a,moved:!1,fromIndex:-1,toIndex:-1};let l;if(u===null)l=a.length;else{let h=a.findIndex(m=>n(m)===u);if(h<0)return{rows:a,moved:!1,fromIndex:o,toIndex:-1};if(h===o)return{rows:a,moved:!1,fromIndex:o,toIndex:o};l=r==="before"?h:h+1}if(l>o&&(l-=1),l===o)return{rows:a,moved:!1,fromIndex:o,toIndex:o};let i=a.slice(),[s]=i.splice(o,1);return i.splice(l,0,s),{rows:i,moved:!0,fromIndex:o,toIndex:l}}var qf=["columnStateChanged","sortChanged","filterChanged","groupChanged","chartOpened","chartChanged","chartClosed","treeRowToggled","stateUpdated"],jf={selection:"selectionChanged",focus:"focusChanged",scroll:"bodyScrollEnd",details:"detailToggled",ranges:null},kn=new Map;function Yf(e,t,u){let r=kn.get(e);if(r&&r.load===u)return r.value;let n=t();kn.set(e,{load:u,value:n});let a=()=>{setTimeout(()=>{kn.get(e)?.value===n&&kn.delete(e)},0)};return n&&typeof n.then=="function"?n.then(a,a):a(),n}function Ws(e){try{return globalThis[e]??null}catch{return null}}function sd(e,t){if(!t.enabled)return()=>{};let u=t.storageKey??`kanuni-datagrid-${e.gridId}`,r=t.type??"localStorage",n=t.saveDelay??500,a=!1,o=m=>{if(!(a||!m))try{e.applyViewState(m)}catch{}};if(r==="custom"){let m=null;try{m=Yf(u,()=>t.customLoad?.()??null,t.customLoad)}catch{m=null}m&&typeof m.then=="function"?m.then(o,()=>{}):o(m)}else{let m=Ws(r);if(m){let c=null,p=!0;try{c=m.getItem(u)}catch{p=!1}if(p&&c)try{o(JSON.parse(c))}catch{try{m.removeItem(u)}catch{}}}}let l,i=()=>{let m=e.getViewState({include:t.include});if(r==="custom"){try{Promise.resolve(t.customSave?.(m)).catch(()=>{})}catch{}return}let c=Ws(r);if(c)try{c.setItem(u,JSON.stringify(m))}catch{}},s=()=>{l!==void 0&&clearTimeout(l),l=setTimeout(()=>{l=void 0,i()},n)},h=qf.map(m=>e.events.on(m,s));for(let m of t.include??[]){let c=jf[m];c&&h.push(e.events.on(c,s))}return()=>{a=!0,h.forEach(m=>m()),l!==void 0&&(clearTimeout(l),l=void 0,i())}}var _s=150,tr=40;function Qf(e,t){return e.id?e.id:e.field?e.field:`col_${t}`}function Us(e){return typeof e.flex=="number"&&Number.isFinite(e.flex)&&e.flex>0?e.flex:void 0}function Dr(e,t,u){let r=Math.max(e,t);return u!=null&&(r=Math.min(r,u)),r}var Xf=class{defs=[];defsById=new Map;baseById=new Map;states=new Map;orderIds=[];version=0;collapsedBands=new Set;gridWidth=0;options;formulaErrors=new Map;cellFormulaReader=null;setCellFormulaReader(e){this.cellFormulaReader=e}hasCellFormulas(){return this.defs.some(e=>e.allowFormulas===!0)}getDefinitionOrder(){return this.defs.map(e=>e.id)}getStoredValue(e,t){let u=this.defsById.get(t);return u?.allowFormulas&&u.field&&!u.valueGetter?e[u.field]:this.getCellValue(e,t)}setCellValue(e,t,u){let r=this.defsById.get(t);return r?.valueSetter?r.valueSetter({value:u,row:e,columnId:t})!==!1:(e[r?.field??t]=u,!0)}parseCellValue(e,t,u,r){let n=this.defsById.get(t)?.valueParser;return n?n({value:u,oldValue:r,row:e,columnId:t}):u}getNumberLocale(){return C0(this.options.locale)}getNumberFormat(e){return this.defsById.get(e)?.numberFormat}getEditorDataType(e){let t=this.defsById.get(e);return t?.allowFormulas||t?.valueParser?"string":this.getDataType(e)}constructor(e,t={}){this.options=t,this.setColumns(e)}getVersion(){return this.version}setColumns(e){let t=this.baseById,u=this.states,r=new Set;this.defs=e.map((n,a)=>{let o={...this.options.defaultColumnDef,...n},l=Qf(o,a);if(r.has(l)){let i=`[datagrid] duplicate column id "${l}" \u2014 set an explicit \`id\` on one of the columns.`;this.options.debugMode?console.error(i):console.warn(i)}return r.add(l),o.id=l,o.numberFormat&&(o.numberFormat=H4(o.numberFormat,this.options.locale)),o}),this.states=new Map,this.defsById=new Map,this.baseById=new Map,this.orderIds=[],this.defs.forEach((n,a)=>{let o=n.id;this.defsById.has(o)||(this.defsById.set(o,n),this.baseById.set(o,n));let l=n.minWidth??tr,i=t.get(o),s=u.get(o),h=p=>s!==void 0&&i!==void 0&&i[p]===n[p],m={id:o,width:h("width")?Dr(s.width,l,n.maxWidth):Dr(n.width??_s,l,n.maxWidth),pinned:h("pin")?s.pinned:n.pin??null,visible:h("visible")?s.visible:n.visible!==!1,order:s!==void 0?s.order:a},c=h("flex")?s.flex:Us(n);c!==void 0&&(m.flex=c),h("headerName")&&s.headerName!==void 0&&(m.headerName=s.headerName),this.states.set(o,m),this.orderIds.push(o)}),this.orderIds.sort((n,a)=>(this.states.get(n)?.order??0)-(this.states.get(a)?.order??0));for(let[n,a]of this.states)this.syncHeaderName(n,a);this.compileFormulas(),this.version++}resolveColumnName(e){if(this.defsById.has(e))return e;let t=e.toLowerCase();for(let u of this.defs)if(u.id.toLowerCase()===t)return u.id;for(let u of this.defs)if(u.headerName?.toLowerCase()===t)return u.id;return null}getFormulaError(e){return this.formulaErrors.get(e)??null}compileFormulas(){this.formulaErrors=new Map;let e=new Map;for(let o of this.defs){if(typeof o.formula!="string"||o.valueGetter)continue;let l=o.id,i=Po(o.formula,{resolveColumn:s=>this.resolveColumnName(s),locale:this.options.locale});if(o.editable=!1,!i.ok){this.formulaErrors.set(l,i.error),this.options.debugMode&&console.warn(`[datagrid] column "${l}": ${i.error.message} (at ${i.error.position})`);let s=ae.of("#NAME?");o.valueGetter=()=>s,o.dataType??="string";continue}e.set(l,i.formula)}let t=new Set,u=new Map,r=(o,l)=>{if(u.get(o)!=="done"){if(u.get(o)==="open"){for(let i of l.slice(l.indexOf(o)))t.add(i);return}u.set(o,"open");for(let i of e.get(o)?.columns??[])e.has(i)&&r(i,[...l,i]);u.set(o,"done")}};for(let o of e.keys())r(o,[o]);let n=new Set,a=o=>{let l=this.defsById.get(o);if(!l)return;if(l.dataType)return l.dataType;let i=e.get(o);if(!i||n.has(o))return;n.add(o);let s=Nr(i.tree,h=>{let m=this.resolveColumnName(h);return m===null?void 0:a(m)});return n.delete(o),l.dataType=s,s};for(let[o,l]of e){let i=this.defsById.get(o);if(a(o),t.has(o)){let s=ae.of("#CYCLE!");i.valueGetter=()=>s;continue}i.valueGetter=s=>l.evaluate({column:h=>this.getCellValue(s,h)})}}resetColumnStates(){this.orderIds=this.defs.map(e=>e.id),this.defs.forEach((e,t)=>{let u=this.states.get(e.id);if(!u)return;let r=e.minWidth??tr;u.width=Dr(e.width??_s,r,e.maxWidth);let n=Us(e);n!==void 0?u.flex=n:delete u.flex,u.pinned=e.pin??null,u.visible=e.visible!==!1,u.order=t,delete u.headerName,this.syncHeaderName(e.id,u)}),this.version++}setHeaderName(e,t){let u=this.states.get(e),r=this.baseById.get(e);if(!u||!r)return!1;let n=this.getDef(e)?.headerName,a=typeof t=="string"?t.trim():"";return a===""||a===r.headerName?delete u.headerName:u.headerName=a,this.syncHeaderName(e,u),this.getDef(e)?.headerName===n?!1:(this.version++,!0)}getAuthoredHeaderName(e){return this.baseById.get(e)?.headerName}syncHeaderName(e,t){let u=this.baseById.get(e);u&&this.defsById.set(e,t.headerName===void 0?u:{...u,headerName:t.headerName})}getDef(e){return this.defsById.get(e)}getState(e){return this.states.get(e)}getOrder(){return[...this.orderIds]}getColumnStates(){return this.orderIds.map(e=>({...this.states.get(e)}))}runtime(e={}){let t={left:[],center:[],right:[]};for(let u of this.orderIds){let r=this.states.get(u),n=this.getDef(u);if(!r||!n||!r.visible||c4(n,this.collapsedBands)||!e.includeScreenHidden&&this.hiddenByWidth(n))continue;let a=r.pinned??"center";t[a==="left"?"left":a==="right"?"right":"center"].push({def:n,state:r})}return[...t.left,...t.center,...t.right]}hiddenByWidth(e){return typeof e.hideBelow=="number"&&this.gridWidth>0&&this.gridWidth<e.hideBelow}setGridWidth(e){let t=(r,n)=>typeof n.hideBelow=="number"&&r>0&&r<n.hideBelow,u=this.defs.some(r=>t(this.gridWidth,r)!==t(e,r));return this.gridWidth=e,u&&this.version++,u}isShown(e){let t=this.getDef(e);return this.states.get(e)?.visible!==!1&&!(t&&this.hiddenByWidth(t))}isBandCollapsed(e){return this.collapsedBands.has(er(e))}setBandCollapsed(e,t){if(e.length===0)return!1;let u=er(e);return this.collapsedBands.has(u)===t?!1:(t?this.collapsedBands.add(u):this.collapsedBands.delete(u),this.version++,!0)}getCollapsedBands(){return[...this.collapsedBands]}setCollapsedBands(e){this.collapsedBands=new Set(e),this.version++}isBandCollapsible(e){if(e.length===0)return!1;let t=er(e),u=!1,r=!1;for(let n of this.orderIds){let a=this.getDef(n),o=this.states.get(n);if(!a||!o?.visible)continue;let l=_t(a);l.length<e.length||er(l.slice(0,e.length))===t&&(a.bandShow==="open"?u=!0:r=!0)}return u&&r}setWidth(e,t){let u=this.states.get(e),r=this.getDef(e);!u||!r||(u.width=Dr(t,r.minWidth??tr,r.maxWidth),this.version++)}setFlex(e,t){let u=this.states.get(e);if(!u||u.flex===void 0)return;let r=Number.isFinite(t)&&t>0?t:0;u.flex!==r&&(u.flex=r,this.version++)}isFlexing(e){return(this.states.get(e)?.flex??0)>0}setPinned(e,t){let u=this.states.get(e);u&&(u.pinned=t,this.version++)}setVisible(e,t){let u=this.states.get(e);u&&(u.visible=t,this.version++)}moveColumn(e,t){let u=this.orderIds.indexOf(e);if(u===-1)return;this.orderIds.splice(u,1);let r=t?this.orderIds.indexOf(t):this.orderIds.length;this.orderIds.splice(r===-1?this.orderIds.length:r,0,e),this.orderIds.forEach((n,a)=>{let o=this.states.get(n);o&&(o.order=a)}),this.version++}applyColumnStates(e){let t=e.filter(n=>this.states.has(n.id)).slice().sort((n,a)=>n.order-a.order);for(let n of t){let a=this.getDef(n.id),o=this.states.get(n.id);!a||!o||(o.width=Dr(n.width,a.minWidth??tr,a.maxWidth),o.flex!==void 0&&typeof n.flex=="number"&&(o.flex=Number.isFinite(n.flex)&&n.flex>0?n.flex:0),o.pinned=n.pinned,o.visible=n.visible,typeof n.headerName=="string"&&n.headerName.trim()!==""?o.headerName=n.headerName.trim():delete o.headerName,this.syncHeaderName(n.id,o))}let u=t.map(n=>n.id),r=this.orderIds.filter(n=>!u.includes(n));this.orderIds=[...u,...r],this.orderIds.forEach((n,a)=>{let o=this.states.get(n);o&&(o.order=a)}),this.version++}getCellValue(e,t){let u=this.getDef(t);if(u){if(u.valueGetter)return u.valueGetter(e);if(u.field){let r=e[u.field];return u.allowFormulas&&this.cellFormulaReader&&typeof r=="string"&&r.trimStart().startsWith("=")?this.cellFormulaReader(e,t,r):r}}}getSortValue(e,t){let u=this.defsById.get(t);if(u){if(u.calculateSortValue)return u.calculateSortValue(e);if(u.valueGetter){let r=u.valueGetter(e);return r instanceof ae?null:r}if(u.field){let r=e[u.field];if(u.allowFormulas&&this.cellFormulaReader&&typeof r=="string"&&r.trimStart().startsWith("=")){let n=this.cellFormulaReader(e,t,r);return n instanceof ae?null:n}return r}}}getDataType(e){return this.getDef(e)?.dataType??"string"}};function Zf(e,t,u){let r=e.length,n=new Uint32Array(r),a=new Uint32Array(r),o=0,l=0;for(let D=0;D<r;D++){let F=e[D];Number.isNaN(t[F])?a[l++]=F:n[o++]=F}let i=new Uint32Array(o),s=new Uint32Array(o),h=new Float64Array(1),m=new Uint32Array(h.buffer);for(let D=0;D<o;D++){let F=t[n[D]];h[0]=F===0?0:F;let x=m[0],k=m[1];k&2147483648?(x=~x>>>0,k=~k>>>0):k=(k^2147483648)>>>0,u&&(x=~x>>>0,k=~k>>>0),i[D]=x,s[D]=k}let c=new Uint32Array(o);for(let D=0;D<o;D++)c[D]=D;let p=new Uint32Array(o),C=new Uint32Array(256);for(let D=0;D<8;D++){let F=D>=4,x=(D&3)*8,k=F?s:i;C.fill(0);for(let O=0;O<o;O++)C[k[c[O]]>>>x&255]++;if(C[k[c[0]]>>>x&255]===o)continue;let M=0;for(let O=0;O<256;O++){let G=C[O];C[O]=M,M+=G}for(let O=0;O<o;O++){let G=c[O];p[C[k[G]>>>x&255]++]=G}let z=c;c=p,p=z}let E=new Uint32Array(r);for(let D=0;D<o;D++)E[D]=n[c[D]];for(let D=0;D<l;D++)E[o+D]=a[D];return E}var qs=new Map;function Jf(e){let t=qs.get(e);return t||(t=new Intl.Collator(e,{numeric:!0,sensitivity:"base"}),qs.set(e,t)),t}function xo(e){return e==null||typeof e=="number"&&Number.isNaN(e)}function ep(e){if(typeof e=="number")return e;if(typeof e=="boolean")return e?1:0;if(e instanceof Date)return e.getTime();let t=Number(e);return Number.isNaN(t)?Number.NEGATIVE_INFINITY:t}function tp(e){if(e instanceof Date)return e.getTime();if(typeof e=="number")return e;let t=Date.parse(String(e));return Number.isNaN(t)?Number.NEGATIVE_INFINITY:t}function dd(e,t,u=[]){let r=[];for(let{columnId:n}of t){if(u.includes(n))continue;let a=e.getDef(n);a?.absoluteSort&&!a.comparator&&e.getDataType(n)==="number"&&r.push(n)}return r}function up(e,t){for(let u of t)if(e.getDef(u.columnId)?.comparator)return!0;return!1}function rp(e,t,u,r,n){let a=e.length,o=r.columnId,l=r.direction==="desc"?-1:1,i=u.getDataType(o),s=u.getDef(o)?.comparator;if(s){let c=new Array(a),p=new Array(a);for(let C=0;C<a;C++){let E=t[e[C]];c[C]=u.getSortValue(E,o),p[C]=E}return{dir:l,numeric:null,strings:null,values:c,valueRows:p,comparator:s}}if(i==="string"||i==="lookup"){let c=new Array(a);for(let p=0;p<a;p++){let C=u.getSortValue(t[e[p]],o);c[p]=xo(C)?null:String(C)}return{dir:l,numeric:null,strings:c,values:null,valueRows:null,comparator:null}}if(i==="bigint"){let c=new Array(a);for(let p=0;p<a;p++){let C=u.getSortValue(t[e[p]],o);c[p]=xo(C)?null:String(C)}return{dir:l,numeric:ap(c),strings:null,values:null,valueRows:null,comparator:null}}let h=new Float64Array(a),m=i==="date"?tp:ep;for(let c=0;c<a;c++){let p=u.getSortValue(t[e[c]],o);h[c]=xo(p)?Number.NaN:m(p)}if(n&&i==="number")for(let c=0;c<a;c++)h[c]=Math.abs(h[c]);return{dir:l,numeric:h,strings:null,values:null,valueRows:null,comparator:null}}function np(e,t){return cd(e,u=>U4(u,t))}function ap(e){return cd(e,X4)}function cd(e,t){let u=e.length,r=[],n=new Map,a=new Int32Array(u);for(let i=0;i<u;i++){let s=e[i];if(s===null){a[i]=-1;continue}let h=n.get(s);h===void 0&&(h=r.length,r.push(s),n.set(s,h)),a[i]=h}let o=t(r),l=new Float64Array(u);for(let i=0;i<u;i++)l[i]=a[i]===-1?Number.NaN:o[a[i]];return l}function hd(e,t,u,r,n={}){if(r.length===0)return e.slice();let a=Jf(n.locale??"en"),o=n.absoluteSort??dd(u,r),l=r.map(c=>rp(e,t,u,c,o.includes(c.columnId))),i=l.length,s=new Array(e.length),h=!0;for(let c=0;c<e.length;c++)s[c]=c,c>0&&e[c]<e[c-1]&&(h=!1);if(!l.some(c=>c.comparator!==null)&&h&&e.length>=5e4){let c=l.map(E=>E.numeric?E.numeric:np(E.strings,a)),p=Uint32Array.from(s);for(let E=i-1;E>=0;E--)p=Zf(p,c[E],l[E].dir===-1);let C=new Uint32Array(e.length);for(let E=0;E<p.length;E++)C[E]=e[p[E]];return C}s.sort((c,p)=>{for(let C=0;C<i;C++){let E=l[C];if(E.comparator){let D=E.values,F=E.valueRows,x=E.comparator(D[c],D[p],F[c],F[p],E.dir===-1);if(x!==0)return x*E.dir}else if(E.numeric){let D=E.numeric[c],F=E.numeric[p],x=Number.isNaN(D),k=Number.isNaN(F);if(x||k){if(x&&k)continue;return x?1:-1}if(D!==F)return(D<F?-1:1)*E.dir}else{let D=E.strings[c],F=E.strings[p];if(D===null||F===null){if(D===null&&F===null)continue;return D===null?1:-1}let x=a.compare(D,F);if(x!==0)return x*E.dir}}return e[c]-e[p]});let m=new Uint32Array(e.length);for(let c=0;c<s.length;c++)m[c]=e[s[c]];return m}var op=class{mode="client";rows;keyGetter;locale;nodeCache;constructor(e,t){this.rows=e,this.keyGetter=t.keyGetter,this.locale=t.locale??"en",this.nodeCache=t.nodeCache??new $0}getTotalCount(){return this.rows.length}setData(e){this.rows=e,this.nodeCache.invalidate()}patchData(e,t,u){this.rows=e,this.nodeCache.rebase(e,t)}getSourceRows(){return this.rows}compute(e,t){let u=this.rows.length,r=new Uint32Array(u);for(let o=0;o<u;o++)r[o]=o;let n=D0(r,this.rows,e,t.filter,t.searchText,t.externalFilter),a=hd(n,this.rows,e,t.sort,{locale:this.locale,absoluteSort:t.absoluteSort});return{nodes:this.nodeCache.project(a,this.rows,this.keyGetter),visibleCount:a.length,totalCount:u}}async getRows(e,t){return this.compute(e,t)}},md='var We=/[\\u0130\\u0131]/,ze=/[\\u0130\\u0131]/g;function G(e){return We.test(e)?e.replace(ze,"i").toLowerCase():e.toLowerCase()}var R=-1;var de=new WeakMap;function Ke(e){let t=de.get(e);if(t!==void 0)return t;let r=He(e);return de.set(e,r),r}function He(e){let t=e.resolvedOptions();if(t.sensitivity!=="base"||t.numeric!==true||t.ignorePunctuation||t.usage!=="sort"||t.collation!=="default")return false;let r=[];for(let n=32;n<=126;n++)r.push(String.fromCharCode(n));r.sort(e.compare);for(let n=1;n<r.length;n++)if(e.compare(r[n-1],r[n])===0&&r[n-1].toLowerCase()!==r[n].toLowerCase())return false;for(let n of r)if(e.compare(n,"")===0)return false;return !(e.compare("01","1")!==0||e.compare("0","00")!==0||e.compare("a09z","a9z")!==0||e.compare("9","10")>=0)}function me(e){for(let t=0;t<e.length;t++){let r=e.charCodeAt(t);if(r<32||r>126)return false}return true}function Ye(e,t){let r=0,n=0,o=e.length,f=t.length;for(;r<o&&n<f;){let a=e.charCodeAt(r),i=t.charCodeAt(n),h=a>=48&&a<=57,u=i>=48&&i<=57;if(h!==u)return true;if(h){for(;r<o&&e.charCodeAt(r)===48;)r++;for(;n<f&&t.charCodeAt(n)===48;)n++;let d=r,l=n;for(;r<o;){let C=e.charCodeAt(r);if(C<48||C>57)break;r++;}for(;n<f;){let C=t.charCodeAt(n);if(C<48||C>57)break;n++;}let N=r-d;if(N!==n-l)return true;for(let C=0;C<N;C++)if(e.charCodeAt(d+C)!==t.charCodeAt(l+C))return true}else {if(a>=65&&a<=90&&(a+=32),i>=65&&i<=90&&(i+=32),a!==i)return true;r++,n++;}}return r!==o||n!==f}function ge(e,t){let r=e.length,n=new Array(r);for(let d=0;d<r;d++)n[d]=d;n.sort((d,l)=>t.compare(e[d],e[l]));let o=new Int32Array(r);if(r===0)return o;let a=Ke(t)?new Uint8Array(r):null,i=n[0],h=a?me(e[i])?1:2:0;a&&(a[i]=h);let u=0;o[i]=0;for(let d=1;d<r;d++){let l=n[d],N=e[i],C=e[l],x=0;a&&(x=a[l],x===0&&(x=me(C)?1:2,a[l]=x)),(h===1&&x===1&&Ye(N,C)||t.compare(N,C)!==0)&&u++,o[l]=u,i=l,h=x;}return o}var Z=BigInt(Number.MAX_SAFE_INTEGER),be=-Z,he=/^[+-]?\\d+$/;function X(e){if(typeof e=="bigint")return e>Z||e<be?e:null;if(typeof e!="string"||e.length<16)return null;let t=e.trim();if(!he.test(t))return null;let r=BigInt(t);return r>Z||r<be?r:null}function pe(e,t){return typeof e=="number"&&typeof t=="number"?e-t:typeof e=="number"&&Number.isNaN(e)||typeof t=="number"&&Number.isNaN(t)?Number.NaN:e<t?-1:e>t?1:0}function $e(e){if(typeof e=="bigint")return e;if(typeof e=="number")return Number.isSafeInteger(e)?BigInt(e):null;if(typeof e!="string")return null;let t=e.trim();return he.test(t)?BigInt(t):null}function ye(e){let t=e.map(f=>$e(f)),r=e.map((f,a)=>a);r.sort((f,a)=>{let i=t[f],h=t[a];return i!==null&&h!==null?i<h?-1:i>h?1:0:i!==null?-1:h!==null?1:e[f]<e[a]?-1:e[f]>e[a]?1:0});let n=new Int32Array(e.length),o=0;return r.forEach((f,a)=>{if(a>0){let i=r[a-1];(t[f]!==null?t[f]===t[i]:t[i]===null&&e[f]===e[i])||(o=a);}n[f]=o;}),n}function Ce(e,t,r){let n=e.length,o=new Uint32Array(n),f=new Uint32Array(n),a=0,i=0;for(let g=0;g<n;g++){let p=e[g];Number.isNaN(t[p])?f[i++]=p:o[a++]=p;}let h=new Uint32Array(a),u=new Uint32Array(a),d=new Float64Array(1),l=new Uint32Array(d.buffer);for(let g=0;g<a;g++){let p=t[o[g]];d[0]=p===0?0:p;let y=l[0],b=l[1];b&2147483648?(y=~y>>>0,b=~b>>>0):b=(b^2147483648)>>>0,r&&(y=~y>>>0,b=~b>>>0),h[g]=y,u[g]=b;}let N=new Uint32Array(a);for(let g=0;g<a;g++)N[g]=g;let C=new Uint32Array(a),x=new Uint32Array(256);for(let g=0;g<8;g++){let p=g>=4,y=(g&3)*8,b=p?u:h;x.fill(0);for(let S=0;S<a;S++)x[b[N[S]]>>>y&255]++;if(x[b[N[0]]>>>y&255]===a)continue;let I=0;for(let S=0;S<256;S++){let F=x[S];x[S]=I,I+=F;}for(let S=0;S<a;S++){let F=N[S];C[x[b[F]>>>y&255]++]=F;}let A=N;N=C,C=A;}let k=new Uint32Array(n);for(let g=0;g<a;g++)k[g]=o[N[g]];for(let g=0;g<i;g++)k[a+g]=f[g];return k}var Xe=["=","<>",">",">=","<","<=","contains","notcontains","startswith","endswith","isnull","isnotnull","in","notin","between","period"];new Set(Xe);function Ne(e){return e.nodes!==void 0}var ke=new Map;function Qe(e){let t=ke.get(e);return t||(t=new Intl.Collator(e,{numeric:true,sensitivity:"base"}),ke.set(e,t)),t}var Ie=new WeakMap;function Je(e,t,r){let n=Ie.get(e);n||(n=new Map,Ie.set(e,n));let o=n.get(r);return (!o||o.length!==t.length)&&(o=e.kind==="text"&&e.integer?ye(t):ge(t,Qe(r)),n.set(r,o)),o}var we=new WeakMap;function Se(e,t){let r=we.get(e);if(!r)r=t.map(G),we.set(e,r);else for(let n=r.length;n<t.length;n++)r.push(G(t[n]));return r}function D(e){if(e instanceof Date)return e.getTime();if(typeof e=="number")return e;if(typeof e=="boolean")return e?1:0;if(e==null)return Number.NaN;let t=Number(e);if(!Number.isNaN(t))return t;let r=Date.parse(String(e));return Number.isNaN(r)?Number.NaN:r}function Ze(e,t){let r=e.dictionary,n=new Uint8Array(r.length),o=false,f=t.operator;if(f==="isnull")return {mask:n,nilPasses:true};if(f==="isnotnull")return n.fill(1),{mask:n,nilPasses:false};let a=Se(e,r),i=t.value==null?"":G(String(t.value)),h=!e.integer;switch(f){case "=":case "<>":{let u=t.value===null||t.value===void 0,d=u?"":String(t.value).toLowerCase();for(let l=0;l<r.length;l++){let N=u?false:h?String(r[l]).toLowerCase()===d:et(r[l],t.value);n[l]=(f==="="?N:!N)?1:0;}o=f==="="?u:!u;break}case "contains":for(let u=0;u<r.length;u++)n[u]=a[u].includes(i)?1:0;break;case "notcontains":for(let u=0;u<r.length;u++)n[u]=a[u].includes(i)?0:1;o=true,i===""&&(o=false);break;case "startswith":for(let u=0;u<r.length;u++)n[u]=a[u].startsWith(i)?1:0;break;case "endswith":for(let u=0;u<r.length;u++)n[u]=a[u].endsWith(i)?1:0;break;case "in":{if(h){let d=Ae(t.value);for(let l=0;l<r.length;l++)n[l]=d.has(String(r[l]).toLowerCase())?1:0;break}let u=xe(t.value);for(let d=0;d<r.length;d++)n[d]=u.has(H(r[d]))?1:0;break}case "notin":{if(h){let d=Ae(t.value);for(let l=0;l<r.length;l++)n[l]=d.has(String(r[l]).toLowerCase())?0:1;o=true;break}let u=xe(t.value);for(let d=0;d<r.length;d++)n[d]=u.has(H(r[d]))?0:1;o=true;break}case ">":case ">=":case "<":case "<=":{for(let u=0;u<r.length;u++){let d=ee(r[u],t.value);n[u]=f===">"&&d>0||f===">="&&d>=0||f==="<"&&d<0||f==="<="&&d<=0?1:0;}break}case "between":{if(!Array.isArray(t.value)||t.value.length<2)break;let[u,d]=t.value;for(let l=0;l<r.length;l++)n[l]=ee(r[l],u)>=0&&ee(r[l],d)<=0?1:0;break}default:n.fill(1),o=true;}return {mask:n,nilPasses:o}}function H(e){let t=X(e);if(t!==null)return t;if(e instanceof Date)return e.getTime();if(typeof e=="number")return e;if(typeof e=="boolean")return e?1:0;let r=Number(e);return Number.isNaN(r)?String(e).toLowerCase():r}function Ae(e){let t=new Set;for(let r of Array.isArray(e)?e:[])r!=null&&t.add(String(r).toLowerCase());return t}function et(e,t){return H(e)===H(t)}function xe(e){let t=new Set,r=Array.isArray(e)?e:[];for(let n of r){if(n==null)continue;let o=H(n);typeof o=="number"&&Number.isNaN(o)||t.add(o);}return t}function tt(e){let t=new Set,r=Array.isArray(e)?e:[];for(let n of r){let o=D(n);Number.isNaN(o)||t.add(o);}return t}var te=new WeakMap;function Te(e){let t=te.get(e);return t||(t=tt(e.value),te.set(e,t)),t}function ee(e,t){let r=X(e),n=X(t);if(r!==null||n!==null){let h=r??D(e),u=n??D(t),d=pe(h,u);if(!Number.isNaN(d))return d}let o=D(e),f=D(t);if(!Number.isNaN(o)&&!Number.isNaN(f))return o-f;let a=String(e).toLowerCase(),i=String(t).toLowerCase();return a<i?-1:a>i?1:0}function rt(e,t){if(t.operator==="in")return !Number.isNaN(e)&&Te(t).has(e);if(t.operator==="notin")return Number.isNaN(e)||!Te(t).has(e);let r=Number.isNaN(e);switch(t.operator){case "isnull":return r;case "isnotnull":return !r;case "=":return !r&&e===D(t.value);case "<>":return r||e!==D(t.value);case ">":return !r&&e>D(t.value);case ">=":return !r&&e>=D(t.value);case "<":return !r&&e<D(t.value);case "<=":return !r&&e<=D(t.value);case "between":return r||!Array.isArray(t.value)||t.value.length<2?false:e>=D(t.value[0])&&e<=D(t.value[1]);case "contains":case "notcontains":case "startswith":case "endswith":{let n=r?"":String(e),o=t.value==null?"":G(String(t.value)),f=n.toLowerCase();return t.operator==="contains"?f.includes(o):t.operator==="notcontains"?!f.includes(o):t.operator==="startswith"?f.startsWith(o):f.endsWith(o)}default:return true}}function re(e,t,r){if(Ne(e))return e.nodes.length===0?true:e.logic==="or"?e.nodes.some(i=>re(i,t,r)):e.nodes.every(i=>re(i,t,r));let n=t.columns[e.columnId];if(!n)return true;if(n.kind==="numeric")return rt(n.values[r],e);let o=ne.get(e),f=o??Ze(n,e);o||ne.set(e,f);let a=n.codes[r];return a===R?f.nilPasses:f.mask[a]===1}var ne=new WeakMap,nt=65535;function oe(e,t){ne=new WeakMap,te=new WeakMap;let{rowCount:r}=e,n=t.locale??"en",o=G(t.searchText.trim()),f=!!t.filter,a=o.length>0,i=[];if(a){let k=/^[0-9.+\\-einftya]*$/.test(o),g=(y,b,I)=>{let A=Se(b,y),S=new Uint8Array(y.length),F=false;for(let L=0;L<A.length;L++)(A[L].includes(o)||I!==void 0&&I.has(y[L]))&&(S[L]=1,F=true);return F?S:null},p=new Map;if(t.searchLabelHits)for(let[y,b]of Object.entries(t.searchLabelHits))p.set(y,new Set(b));for(let y of t.searchColumns){let b=e.columns[y];if(!b)continue;let I=p.get(y);if(b.kind==="text"){let A=g(b.dictionary,b,I);A&&i.push({codes:b.codes,mask:A,values:null,numberHits:null,scanText:true});}else if(b.searchDictionary&&b.searchCodes){let A=g(b.searchDictionary,b,I);A&&i.push({codes:b.searchCodes,mask:A,values:null,numberHits:null,scanText:true});}else {let A=null;if(I)for(let S of I){let F=Number(S);Number.isNaN(F)||(A??=new Set).add(F);}(k||A)&&i.push({codes:null,mask:null,values:b.values,numberHits:A,scanText:k});}}}let h=t.onProgress,u=t.isCancelled,d={order:new Uint32Array(0),cancelled:true},l;if(!f&&!a){l=new Uint32Array(r);for(let k=0;k<r;k++)l[k]=k;}else {let k=new Uint32Array(r),g=0;for(let p=0;p<r;p++){if((p&nt)===0){if(u?.())return d;h?.("filtering",r===0?1:p/r);}if(!(f&&!re(t.filter,e,p))){if(a){let y=false;for(let b of i)if(b.codes&&b.mask){let I=b.codes[p];if(I!==R&&b.mask[I]===1){y=true;break}}else if(b.values){let I=b.values[p];if(!Number.isNaN(I)){if(b.numberHits!==null&&b.numberHits.has(I)){y=true;break}if(b.scanText&&String(I).toLowerCase().includes(o)){y=true;break}}}if(!y)continue}k[g++]=p;}}l=k.subarray(0,g),h?.("filtering",1);}if(t.sort.length===0)return {order:l.slice()};if(u?.())return d;let N=[],C=t.absoluteSort??[];for(let k of t.sort){let g=e.columns[k.columnId];if(!g)continue;let p=k.direction==="desc"?-1:1;if(g.kind==="numeric"){let y=g.values;if(C.includes(k.columnId)){y=new Float64Array(g.values.length);for(let b=0;b<y.length;b++)y[b]=Math.abs(g.values[b]);}N.push({dir:p,numeric:y,codes:null,ranks:null});}else N.push({dir:p,numeric:null,codes:g.codes,ranks:Je(g,g.dictionary,n)});}if(N.length===0)return {order:l.slice()};if(l.length>=5e4){let k=[];for(let p of N){if(p.numeric){k.push(p.numeric);continue}let y=p.codes,b=p.ranks,I=new Float64Array(r);for(let A=0;A<r;A++){let S=y[A];I[A]=S===R?Number.NaN:b[S];}k.push(I);}let g=l;for(let p=N.length-1;p>=0;p--){if(u?.())return d;h?.("sorting",(N.length-1-p)/N.length),g=Ce(g,k[p],N[p].dir===-1);}return h?.("sorting",1),{order:g===l?l.slice():g}}h?.("sorting",null);let x=Array.from(l);return x.sort((k,g)=>{for(let p of N)if(p.numeric){let y=p.numeric[k],b=p.numeric[g],I=Number.isNaN(y),A=Number.isNaN(b);if(I||A){if(I&&A)continue;return I?1:-1}if(y!==b)return (y<b?-1:1)*p.dir}else {let y=p.codes[k],b=p.codes[g];if(y===R||b===R){if(y===R&&b===R)continue;return y===R?1:-1}let I=p.ranks[y],A=p.ranks[b];if(I!==A)return (I<A?-1:1)*p.dir}return k-g}),{order:Uint32Array.from(x)}}var ot=30,Ee="Other",at=1e4;var v=864e5,st=60,it=20,j=2e3,ae=["day","week","month","quarter","year"],Fe={day:v,week:7*v,month:30.44*v,quarter:91.31*v,year:365.25*v};function De(e,t){let r=new Date(e),n=r.getUTCFullYear(),o=r.getUTCMonth();switch(t){case "day":return Date.UTC(n,o,r.getUTCDate());case "week":{let f=Date.UTC(n,o,r.getUTCDate()),a=(new Date(f).getUTCDay()+6)%7;return f-a*v}case "month":return Date.UTC(n,o,1);case "quarter":return Date.UTC(n,Math.floor(o/3)*3,1);default:return Date.UTC(n,0,1)}}function Me(e,t){let r=new Date(e),n=r.getUTCFullYear(),o=r.getUTCMonth();switch(t){case "day":return e+v;case "week":return e+7*v;case "month":return Date.UTC(n,o+1,1);case "quarter":return Date.UTC(n,o+3,1);default:return Date.UTC(n+1,0,1)}}var se=e=>e<10?`0${e}`:String(e);function ut(e,t){let r=new Date(e),n=r.getUTCFullYear();switch(t){case "year":return String(n);case "quarter":return `${n}-Q${Math.floor(r.getUTCMonth()/3)+1}`;case "month":return `${n}-${se(r.getUTCMonth()+1)}`;default:return `${n}-${se(r.getUTCMonth()+1)}-${se(r.getUTCDate())}`}}function lt(e){if(!(e>0)||!Number.isFinite(e))return 1;let r=10**Math.floor(Math.log10(e)),n=e/r;return (n<=1?1:n<=2?2:n<=5?5:10)*r}function ct(e,t,r){let n=Number.isFinite(t)&&Number.isFinite(r)?Math.max(0,r-t):0;if(e.kind==="date"){let h=e.unit??"auto",u,d=false;if(h==="auto")u=ae.find(l=>n/Fe[l]+1<=st)??"year";else for(u=h;n/Fe[u]+1>j;){let l=ae[ae.indexOf(u)+1];if(!l)break;u=l,d=true;}return {info:{kind:"date",unit:u,adjusted:d},keyOf:l=>Number.isFinite(l)?De(l,u):Number.NaN,endOf:l=>Me(l,u),labelOf:l=>ut(l,u),keys:(l,N)=>{let C=[];if(!Number.isFinite(l)||!Number.isFinite(N))return C;for(let x=De(l,u);x<=N&&C.length<j;x=Me(x,u))C.push(x);return C}}}let o=e.size&&e.size>0?e.size:lt(n/Math.max(1,e.bins??it));(!(o>0)||!Number.isFinite(o))&&(o=1);let f=false;for(;n/o+1>j;)o*=2,f=true;let a=o;return {info:{kind:"number",size:a,adjusted:f},keyOf:h=>Number.isFinite(h)?Math.floor(h/a)*a:Number.NaN,endOf:h=>h+a,labelOf:h=>{let u=d=>String(Number(d.toPrecision(12)));return `${u(h)} \\u2013 ${u(h+a)}`},keys:(h,u)=>{let d=[];if(!Number.isFinite(h)||!Number.isFinite(u))return d;let l=Math.floor(h/a)*a;for(let N=l;N<=u&&d.length<j;N+=a)d.push(N);return d}}}function ft(e,t){if(e==null)return Number.NaN;if(e instanceof Date)return e.getTime();if(typeof e=="number")return e;if(t==="number")return Number(e);let r=Number(e);return Number.isNaN(r)?Date.parse(String(e)):r}function dt(e,t){if(!e)return {};let r=new Float64Array(t.length),n=new Float64Array(t.length);for(let o=0;o<t.length;o++){let f=t[o].start;r[o]=f,n[o]=Number.isNaN(f)?Number.NaN:e.endOf(f);}return {bucket:e.info,bucketStarts:r,bucketEnds:n}}var Y=-1;function Re(e,t,r,n){let o=Math.max(1,r.maxCategories??ot),f=r.otherBucket!==false,a=r.series.length,i=e[r.categoryColumnId],h=r.series.map(s=>e[s.columnId]),u=r.series.map(s=>s.aggregate==="countDistinct"),d=new Map,l=null,N=0,C=false,x=(s,c=Number.NaN)=>({label:s,sum:new Float64Array(a),numericCount:new Float64Array(a),count:new Float64Array(a),min:new Float64Array(a).fill(Number.POSITIVE_INFINITY),max:new Float64Array(a).fill(Number.NEGATIVE_INFINITY),first:new Float64Array(a).fill(Number.NaN),firstAt:new Float64Array(a).fill(Number.POSITIVE_INFINITY),last:new Float64Array(a).fill(Number.NaN),lastAt:new Float64Array(a).fill(Number.NEGATIVE_INFINITY),distinct:u.map(m=>m?new Set:null),seq:N++,start:c}),k=(s,c)=>{if(!i)return Number.NaN;if(i.kind==="numeric")return i.values[s];let m=i.codes[s];return m===Y?Number.NaN:ft(i.dictionary[m],c)},g=r.categoryBucket,p=null,y=Number.POSITIVE_INFINITY,b=Number.NEGATIVE_INFINITY;if(g){for(let s=0;s<t.length;s++){let c=k(t[s],g.kind);Number.isFinite(c)&&(c<y&&(y=c),c>b&&(b=c));}p=ct(g,y,b);}let I=0,A=1,S=2,F=new Uint8Array(a),L=new Array(a).fill(null),ue=new Array(a).fill(null),le=new Array(a).fill(null);for(let s=0;s<a;s++){let c=r.series[s].aggregate;F[s]=c==="count"?I:u[s]?A:S;let m=h[s];if(!m)continue;if(m.kind==="numeric"){L[s]=m.values;continue}ue[s]=m.codes;let E=m.dictionary,M=new Float64Array(E.length);for(let T=0;T<E.length;T++){let w=E[T],K=w===""?Number.NaN:Number(w);M[T]=Number.isFinite(K)?K:Number.NaN;}le[s]=M;}for(let s=0;s<t.length;s++){let c=t[s],m,E,M=Number.NaN;if(p&&g)M=p.keyOf(k(c,g.kind)),m=Number.isNaN(M)?"":M,E=Number.isNaN(M)?"":p.labelOf(M);else if(!i)m=E="";else if(i.kind==="text"){let w=i.codes[c];m=E=w===Y?"":i.dictionary[w];}else {let w=i.values[c];m=E=Number.isNaN(w)?"":String(w);}let T=d.get(m);T||(d.size>=at?(C=true,l??=x(r.otherLabel??Ee),T=l):(T=x(E,M),d.set(m,T)));for(let w=0;w<a;w++){let K=F[w],V=L[w],q=ue[w];if(K===I){(V!==null?!Number.isNaN(V[c]):q!==null&&q[c]!==Y)&&T.count[w]++;continue}if(K===A){let P=T.distinct[w];if(P)if(q!==null){let fe=q[c];fe!==Y&&P.add(fe);}else V!==null&&!Number.isNaN(V[c])&&P.add(V[c]);continue}let B;if(V!==null)B=V[c];else if(q!==null){let P=q[c];B=P===Y?Number.NaN:le[w][P];}else B=Number.NaN;Number.isNaN(B)||(T.numericCount[w]++,T.sum[w]+=B,B<T.min[w]&&(T.min[w]=B),B>T.max[w]&&(T.max[w]=B),s<T.firstAt[w]&&(T.first[w]=B,T.firstAt[w]=s),s>=T.lastAt[w]&&(T.last[w]=B,T.lastAt[w]=s));}}let Pe=(s,c)=>{for(let m=0;m<a;m++){s.sum[m]+=c.sum[m],s.numericCount[m]+=c.numericCount[m],s.count[m]+=c.count[m],c.min[m]<s.min[m]&&(s.min[m]=c.min[m]),c.max[m]>s.max[m]&&(s.max[m]=c.max[m]),c.firstAt[m]<s.firstAt[m]&&(s.first[m]=c.first[m],s.firstAt[m]=c.firstAt[m]),c.lastAt[m]>s.lastAt[m]&&(s.last[m]=c.last[m],s.lastAt[m]=c.lastAt[m]);let E=s.distinct[m],M=c.distinct[m];if(E&&M)for(let T of M)E.add(T);}},ce=(s,c)=>{switch(r.series[c].aggregate){case "count":return s.count[c];case "countDistinct":return s.distinct[c]?.size??0;case "sum":return s.numericCount[c]>0?s.sum[c]:Number.NaN;case "avg":return s.numericCount[c]>0?s.sum[c]/s.numericCount[c]:Number.NaN;case "min":return s.numericCount[c]>0?s.min[c]:Number.NaN;case "max":return s.numericCount[c]>0?s.max[c]:Number.NaN;case "first":return s.numericCount[c]>0?s.first[c]:Number.NaN;case "last":return s.numericCount[c]>0?s.last[c]:Number.NaN;default:return Number.NaN}},z=[...d.values()],Ge=z.length+(l?1:0),$=s=>{if(a===0)return Number.NEGATIVE_INFINITY;let c=ce(s,0);return Number.isNaN(c)?Number.NEGATIVE_INFINITY:c},O;if(p){O=p.keys(y,b).map(c=>d.get(c)??x(p.labelOf(c),c));let s=d.get("");s&&O.push(s);}else {let s=z;if(z.length>o){let c=[...z].sort((m,E)=>$(E)-$(m));if(s=c.slice(0,o),f){l??=x(r.otherLabel??Ee);for(let m of c.slice(o))Pe(l,m);}}switch(r.categoryOrder??"value-desc"){case "category-asc":s=[...s].sort((c,m)=>c.label.localeCompare(m.label));break;case "first-seen":s=[...s].sort((c,m)=>c.seq-m.seq);break;default:s=[...s].sort((c,m)=>$(m)-$(c));}O=l?[...s,l]:s;}return {categories:O.map(s=>s.label),series:r.series.map((s,c)=>{let m=new Float64Array(O.length);for(let E=0;E<O.length;E++)m[E]=ce(O[E],c);return {label:s.label??n.series[c]??s.columnId,columnId:s.columnId,aggregate:s.aggregate,values:m}}),truncated:p?false:z.length>o||C,otherIndex:p?null:l?O.length-1:null,rowCount:t.length,categoryCount:p?O.length:Ge,rankingExact:!C,...dt(p,O)}}function Ue(){let e=new WeakMap;return {get(t){let r=e.get(t);if(r===void 0){r=new Map;let n=t.kind==="text"?t.dictionary:t.searchDictionary??[];for(let o=0;o<n.length;o++)r.set(n[o],o);e.set(t,r);}return r}}}function Be(e,t,r){let n=r.get(e);return n===void 0&&(n=t.length,t.push(e),r.set(e,n)),n}function Oe(e,t,r){for(let n of t){let o=e[n.columnId];if(!o)continue;let{indices:f}=n;if(o.kind==="numeric"){let a=n.numbers??[];for(let i=0;i<f.length;i++)o.values[f[i]]=a[i];if(o.searchCodes&&o.searchDictionary&&n.labels){let i=r.get(o);for(let h=0;h<f.length;h++){let u=n.labels[h];o.searchCodes[f[h]]=u===null?R:Be(u,o.searchDictionary,i);}}}else {let a=n.labels??[],i=r.get(o);for(let h=0;h<f.length;h++){let u=a[h];o.codes[f[h]]=u===null?R:Be(u,o.dictionary,i);}}}}function _e(e){if(e.kind==="numeric"){let t={kind:"numeric",values:new Float64Array(e.buffer)};return e.searchBuffer&&e.searchDictionary&&(t.searchCodes=new Int32Array(e.searchBuffer),t.searchDictionary=e.searchDictionary),t}return {kind:"text",codes:new Int32Array(e.buffer),dictionary:e.dictionary??[],...e.integer?{integer:true}:{}}}var Le=self,W=new Map;function U(e,t){Le.postMessage(e,t??[]);}function ve(e,t){for(let r of e)t[r.columnId]=_e(r);}function mt(e){let t={};ve(e.columns,t),W.set(e.gridId,{dataVersion:e.dataVersion,table:{rowCount:e.rowCount,columns:t}}),U({action:"ready",gridId:e.gridId,dataVersion:e.dataVersion});}function gt(e){let t=W.get(e.gridId);!t||t.dataVersion!==e.dataVersion||(ve(e.columns,t.table.columns),U({action:"ready",gridId:e.gridId,dataVersion:e.dataVersion}));}var _=new Set,J=(e,t)=>`${e}:${t}`,Q=new Map,ie=new Map;function Ve(e,t){t>(Q.get(e)??0)&&Q.set(e,t);}function qe(e,t){let r=J(e,t);return ()=>_.has(r)||t<=(ie.get(e)??0)}function bt(e){Ve(e.gridId,e.requestId);let t=W.get(e.gridId);if(!t||t.dataVersion!==e.dataVersion)return;let r=J(e.gridId,e.requestId),n=qe(e.gridId,e.requestId);if(n()){_.delete(r),U({action:"cancelled",gridId:e.gridId,requestId:e.requestId});return}try{let{order:o,cancelled:f}=oe(t.table,{sort:e.sort,filter:e.filter,searchText:e.searchText,searchColumns:e.searchColumns,searchLabelHits:e.searchLabelHits,locale:e.locale,absoluteSort:e.absoluteSort,onProgress:(a,i)=>U({action:"progress",gridId:e.gridId,dataVersion:e.dataVersion,requestId:e.requestId,phase:a,fraction:i}),isCancelled:n});if(f){_.delete(r),U({action:"cancelled",gridId:e.gridId,requestId:e.requestId});return}U({action:"result",gridId:e.gridId,dataVersion:e.dataVersion,requestId:e.requestId,order:o.buffer,visibleCount:o.length},[o.buffer]),_.delete(r);}catch(o){U({action:"error",gridId:e.gridId,requestId:e.requestId,message:o instanceof Error?o.message:String(o)});}}function ht(e){Ve(e.gridId,e.requestId);let t=W.get(e.gridId);if(!t||t.dataVersion!==e.dataVersion)return;let r=J(e.gridId,e.requestId),n=qe(e.gridId,e.requestId);if(n()){_.delete(r),U({action:"cancelled",gridId:e.gridId,requestId:e.requestId});return}try{let{order:o,cancelled:f}=oe(t.table,{sort:[],filter:e.filter,searchText:e.searchText,searchColumns:e.searchColumns,searchLabelHits:e.searchLabelHits,locale:e.locale,isCancelled:n});if(f){_.delete(r),U({action:"cancelled",gridId:e.gridId,requestId:e.requestId});return}let a={categoryColumnId:e.categoryColumnId,series:e.series,maxCategories:e.maxCategories,otherBucket:e.otherBucket,categoryOrder:e.categoryOrder,categoryBucket:e.categoryBucket,otherLabel:e.otherLabel},i=Re(t.table.columns,o,a,{series:e.series.map(C=>C.label??C.columnId)}),h=i.categories.length,u=new Float64Array(i.series.length*h);for(let C=0;C<i.series.length;C++)u.set(i.series[C].values,C*h);let d=i.bucketStarts,l=i.bucketEnds,N=[u.buffer];d&&l&&N.push(d.buffer,l.buffer),U({action:"aggregated",gridId:e.gridId,dataVersion:e.dataVersion,requestId:e.requestId,categories:i.categories,values:u.buffer,seriesLabels:i.series.map(C=>C.label),truncated:i.truncated,otherIndex:i.otherIndex,rowCount:i.rowCount,categoryCount:i.categoryCount,rankingExact:i.rankingExact,bucket:i.bucket,bucketStarts:d?.buffer,bucketEnds:l?.buffer},N),_.delete(r);}catch(o){U({action:"error",gridId:e.gridId,requestId:e.requestId,message:o instanceof Error?o.message:String(o)});}}var pt=Ue();function yt(e){let t=W.get(e.gridId);!t||t.dataVersion!==e.fromVersion||(Oe(t.table.columns,e.patches,pt),t.dataVersion=e.toVersion);}Le.onmessage=e=>{let t=e.data;switch(t.action){case "init":mt(t);break;case "addColumns":gt(t);break;case "patchRows":yt(t);break;case "compute":bt(t);break;case "aggregate":ht(t);break;case "cancel":t.requestId===void 0?ie.set(t.gridId,Q.get(t.gridId)??0):_.add(J(t.gridId,t.requestId));break;case "dispose":W.delete(t.gridId),Q.delete(t.gridId),ie.delete(t.gridId);for(let r of _)r.startsWith(`${t.gridId}:`)&&_.delete(r);break}};',Bn=null;function ip(){return md.length>0}function lp(){if(Bn)return Bn;if(!ip())throw new Error("[datagrid] this build carries no embedded worker (the build step that inlines it did not run). Pass `worker={{ url }}` to point at a copy of datagrid.worker.js instead.");if(typeof Blob>"u"||typeof URL?.createObjectURL!="function")throw new Error("[datagrid] Blob URLs are unavailable, so the embedded worker cannot start.");return Bn=URL.createObjectURL(new Blob([md],{type:"text/javascript"})),Bn}function sp(e,t,u){if(t.kind==="numeric"){let n={columnId:e,kind:"numeric",buffer:t.values.buffer};return u.push(n.buffer),t.searchCodes&&t.searchDictionary&&(n.searchBuffer=t.searchCodes.buffer,n.searchDictionary=t.searchDictionary,u.push(n.searchBuffer)),n}let r={columnId:e,kind:"text",buffer:t.codes.buffer,dictionary:t.dictionary,...t.integer?{integer:!0}:{}};return u.push(r.buffer),r}var dp=2e4,js=!1;function cp(e,t){typeof process<"u"&&process.env&&!t||js&&!t||(js=!0,console.warn(`[datagrid] the Web Worker could not be started, so filtering and sorting are running on the main thread. The grid still works \u2014 it is just slower on large data.
|
|
8
8
|
The worker ships inside the package and starts from a Blob URL, so this is almost always a Content-Security-Policy. Either allow it:
|
|
9
9
|
Content-Security-Policy: worker-src 'self' blob:
|
|
10
10
|
or serve the worker as a file and point at it:
|
|
@@ -12,7 +12,7 @@ or serve the worker as a file and point at it:
|
|
|
12
12
|
<DataGrid worker={{ url: workerUrl }} />
|
|
13
13
|
Next.js: copy datagrid.worker.js from node_modules/@kanunilabs/datagrid-core/dist/ into public/, then <DataGrid worker={{ url: '/datagrid.worker.js' }} />
|
|
14
14
|
Silence this by turning the worker off on purpose: <DataGrid worker={{ enabled: false }} />
|
|
15
|
-
Cause:`,e))}var Qp=1e5,Xp=12,Zp=2e3,Jp=500,_s=2e5;function Us(){return new Promise(e=>{if(typeof MessageChannel>"u"){setTimeout(e,0);return}let t=new MessageChannel;t.port1.onmessage=()=>{t.port1.close(),e()},t.port2.postMessage(void 0)})}var St=class extends Error{constructor(e){super(`[datagrid] ${e}`),this.name="WorkerRequestAbandoned"}},Gn=class extends Error{constructor(){super("[datagrid] compute cancelled"),this.name="WorkerRequestCancelled"}};function ef(){return typeof Worker<"u"}function sd(e,t){if(e){if("nodes"in e){for(let u of e.nodes)sd(u,t);return}t.add(e.columnId)}}function Vo(e,t){let u=new Set;for(let r of t.sort)u.add(r.columnId);if(sd(t.filter,u),(t.searchText??"").trim().length>0)for(let r of No(e))u.add(r);return[...u].filter(r=>e.getState(Jo(r)??r)!==void 0)}var Tn=class{mode="client";rows;options;fallback;threshold;worker=null;workerBroken=!1;dataVersion=0;encodeToken=0;encodeQueue=Promise.resolve();initializedVersion=-1;encodedColumns=new Set;lastTimings={encodeMs:0,workerMs:0,projectMs:0};getLastTimings(){return this.lastTimings}encodedMeta=new Map;requestCounter=0;pending=new Map;pendingAggregate=new Map;nodeCache=new G0;constructor(e,t){this.rows=e,this.options=t,this.threshold=t.threshold??jp,this.fallback=new Wp(e,{keyGetter:t.keyGetter,locale:t.locale,nodeCache:this.nodeCache})}getTotalCount(){return this.rows.length}setData(e){this.rows=e,this.fallback.setData(e),this.encodedMeta.clear(),this.nodeCache.invalidate(),this.dataVersion++,this.settlePending("data replaced while a worker request was in flight")}patchData(e,t,u){this.rows=e,this.fallback.patchData(e,t,u);let r=this.dataVersion;this.dataVersion++,this.tryPatchWorker(r,t,u),this.settlePending("data replaced while a worker request was in flight")}tryPatchWorker(e,t,u){if(!this.worker||this.workerBroken||!u||this.initializedVersion!==e)return;if(t.length===0){this.postPatch(e,[]);return}let r=[];for(let n of this.encodedColumns){let a=this.encodedMeta.get(n);if(!a)return;if(a.displaySource!==null){let i=a.displaySource,s=[],h=[];for(let m of t)h.push(p0(u,i,this.rows[m])),s.push(m);r.push({columnId:n,kind:"text",indices:s,labels:h});continue}let o=a.usesSortValue?i=>u.getSortValue(i,n):i=>u.getCellValue(i,n),l=[];if(a.kind==="numeric"){let i=a.dataType==="date"?g0:f0,s=[],h=a.hasSearch?[]:void 0;for(let m of t){let c=o(this.rows[m]);if(Vn(c))s.push(Number.NaN),h?.push(null);else{if(!a.hasSearch&&typeof c!="number")return;s.push(i(c)),h?.push(String(c))}l.push(m)}r.push({columnId:n,kind:"numeric",indices:l,numbers:s,labels:h})}else{let i=[];for(let s of t){let h=o(this.rows[s]);i.push(Vn(h)?null:String(h)),l.push(s)}r.push({columnId:n,kind:"text",indices:l,labels:i})}}this.postPatch(e,r)}postPatch(e,t){let u={action:"patchRows",gridId:this.options.gridId,fromVersion:e,toVersion:this.dataVersion,patches:t};this.worker.postMessage(u),this.initializedVersion=this.dataVersion}getSourceRows(){return this.rows}usesWorker(){return this.options.enabled!==!1&&!this.workerBroken&&ef()&&this.rows.length>=this.threshold}async getRows(e,t){if(!this.usesWorker()||Vp(e,t.sort)||typeof t.externalFilter=="function"||Do(t.filter))return this.fallback.compute(e,t);try{let u=performance.now(),r=await this.computeOnWorker(e,t);return this.lastTimings.workerMs=Math.round(performance.now()-u)-this.lastTimings.encodeMs,this.buildResult(r)}catch(u){if(u instanceof St||u instanceof Gn)throw u;return this.workerBroken=!0,this.teardownWorker(),Yp(u,this.options.debugMode===!0),this.fallback.compute(e,t)}}buildResult(e){let t=performance.now(),u=this.nodeCache.project(e,this.rows,this.options.keyGetter);return this.lastTimings.projectMs=Math.round(performance.now()-t),{nodes:u,visibleCount:e.length,totalCount:this.rows.length}}ensureWorker(){if(this.worker)return this.worker;let e=this.options.workerUrl,t=e?new Worker(e,{type:"module"}):new Worker(Up());return t.onmessage=u=>this.onMessage(u.data),t.onerror=u=>{let r=new Error(`datagrid worker error: ${u.message??"unknown"}`);this.pending.forEach(n=>n.reject(r)),this.pending.clear(),this.pendingAggregate.forEach(n=>n.reject(r)),this.pendingAggregate.clear()},this.worker=t,t}onMessage(e){if(e.action==="result"){if(e.dataVersion!==this.dataVersion)return;let t=this.pending.get(e.requestId);if(!t)return;this.pending.delete(e.requestId),t.resolve(new Uint32Array(e.order))}else if(e.action==="aggregated"){if(e.dataVersion!==this.dataVersion)return;let t=this.pendingAggregate.get(e.requestId);if(!t)return;this.pendingAggregate.delete(e.requestId),t.resolve(e)}else if(e.action==="error"){let t=this.pending.get(e.requestId)??this.pendingAggregate.get(e.requestId);if(!t)return;this.pending.delete(e.requestId),this.pendingAggregate.delete(e.requestId),t.reject(new Error(e.message))}else if(e.action==="progress"){if(e.dataVersion!==this.dataVersion||!this.pending.has(e.requestId))return;this.options.onPhaseProgress?.(e.phase,e.fraction)}else if(e.action==="cancelled"){let t=this.pending.get(e.requestId);if(!t)return;this.pending.delete(e.requestId),t.reject(new Gn)}}cancel(){if(this.encodeToken++,!this.worker||this.pending.size===0)return;let e={action:"cancel",gridId:this.options.gridId};this.worker.postMessage(e)}async encodeOne(e,t,u,r,n,a){if(!r)return T4(this.rows,e,t,u);let o=C0(this.rows,e,t,u),l=Zp;for(;;){let i=performance.now(),s=o.step(l),h=performance.now()-i;if(!s)break;let m=h>0?Math.round(l*Xp/h):_s;if(l=Math.min(_s,Math.max(Jp,m)),await Us(),this.encodeToken!==a)throw new St("encode cancelled");n?.(o.done/o.total)}return o.finish()}toWire(e,t,u,r,n){let a=Jo(t);return this.encodedMeta.set(t,{kind:r.kind,hasSearch:r.kind==="numeric"&&!!r.searchCodes,usesSortValue:u,dataType:a===null?e.getDataType(t):"string",displaySource:a}),qp(t,r,n)}enqueueEncode(e,t){let u=this.encodeQueue.then(()=>{if(this.encodeToken!==e)throw new St("encode cancelled");return t(e)});return this.encodeQueue=u.catch(()=>{}),u}async sendColumns(e,t,u,r,n=!1,a=this.encodeToken){let o=this.dataVersion,l=[],i=[],s=this.rows.length>=Qp&&u.length>0;for(let m=0;m<u.length;m++){if(s){if(await Us(),this.encodeToken!==a)throw new St("encode cancelled");n||this.options.onEncodeProgress?.(m/u.length)}let c=t.getDef(u[m])?.calculateSortValue!=null,f=await this.encodeOne(t,u[m],c,s,n?void 0:C=>this.options.onEncodeProgress?.((m+C)/u.length),a);l.push(this.toWire(t,u[m],c,f,i))}s&&!n&&this.options.onEncodeProgress?.(1);let h=r?{action:"init",gridId:this.options.gridId,dataVersion:o,rowCount:this.rows.length,columns:l}:{action:"addColumns",gridId:this.options.gridId,dataVersion:o,columns:l};if(e.postMessage(h,i),r)this.initializedVersion=o,this.encodedColumns=new Set(u);else for(let m of u)this.encodedColumns.add(m)}async computeOnWorker(e,t){let u=this.ensureWorker();this.lastTimings={encodeMs:0,workerMs:0,projectMs:0},await this.enqueueEncode(this.encodeToken,async l=>{let i=Vo(e,t),s=this.initializedVersion!==this.dataVersion,h=s?i:i.filter(c=>!this.encodedColumns.has(c));if(!s&&h.length===0)return;let m=performance.now();if(await this.sendColumns(u,e,h,s,!1,l),this.lastTimings.encodeMs=Math.round(performance.now()-m),this.initializedVersion!==this.dataVersion)throw new St("data replaced while columns were being encoded")});let r=++this.requestCounter,n=No(e),a=new Promise((l,i)=>{this.pending.set(r,{resolve:l,reject:i})}),o={action:"compute",gridId:this.options.gridId,dataVersion:this.dataVersion,requestId:r,sort:t.sort,filter:t.filter,searchText:t.searchText,searchColumns:n,searchLabelHits:ss(Ro(e,n,Mr(t.searchText))),locale:this.options.locale??"en",...t.absoluteSort&&t.absoluteSort.length>0?{absoluteSort:[...t.absoluteSort]}:{}};return u.postMessage(o),a}async aggregate(e,t,u){if(!this.usesWorker()||!T0(u)||Do(t.filter))return null;try{let r=this.ensureWorker(),n=new Set(Vo(e,t));n.add(u.categoryColumnId);for(let c of u.series)n.add(c.columnId);if(this.initializedVersion!==this.dataVersion)return null;await this.enqueueEncode(this.encodeToken,async c=>{if(this.initializedVersion!==this.dataVersion)throw new St("data replaced while the chart waited to encode");let f=[...n].filter(C=>!this.encodedColumns.has(C));if(f.length!==0&&(await this.sendColumns(r,e,f,!1,!0,c),this.initializedVersion!==this.dataVersion))throw new St("data replaced while columns were being encoded")});let a=++this.requestCounter,o=No(e),l=new Promise((c,f)=>{this.pendingAggregate.set(a,{resolve:c,reject:f})}),i={action:"aggregate",gridId:this.options.gridId,dataVersion:this.dataVersion,requestId:a,filter:t.filter,searchText:t.searchText,searchColumns:o,searchLabelHits:ss(Ro(e,o,Mr(t.searchText))),locale:this.options.locale??"en",categoryColumnId:u.categoryColumnId,series:u.series.map(c=>({columnId:c.columnId,aggregate:c.aggregate,label:c.label??e.getDef(c.columnId)?.headerName??c.columnId})),maxCategories:u.maxCategories,otherBucket:u.otherBucket,categoryOrder:u.categoryOrder,categoryBucket:u.categoryBucket,otherLabel:u.otherLabel};r.postMessage(i);let s=await l,h=s.categories.length,m=new Float64Array(s.values);return{categories:s.categories,series:u.series.map((c,f)=>({label:s.seriesLabels[f]??c.columnId,columnId:c.columnId,aggregate:c.aggregate,values:m.subarray(f*h,(f+1)*h)})),truncated:s.truncated,otherIndex:s.otherIndex,rowCount:s.rowCount,categoryCount:s.categoryCount,rankingExact:s.rankingExact,bucket:s.bucket,bucketStarts:s.bucketStarts?new Float64Array(s.bucketStarts):void 0,bucketEnds:s.bucketEnds?new Float64Array(s.bucketEnds):void 0}}catch(r){return r instanceof St||r instanceof Gn||this.options.debugMode&&console.error("[datagrid] worker chart aggregation failed, using main thread:",r),null}}teardownWorker(){if(this.worker){try{let e={action:"dispose",gridId:this.options.gridId};this.worker.postMessage(e)}catch{}this.worker.terminate(),this.worker=null,this.initializedVersion=-1,this.encodedColumns.clear()}}dispose(){this.settlePending("grid disposed while a worker request was in flight"),this.teardownWorker(),this.rows=[]}settlePending(e){if(this.pending.size===0&&this.pendingAggregate.size===0)return;let t=new St(e);this.pending.forEach(u=>u.reject(t)),this.pending.clear(),this.pendingAggregate.forEach(u=>u.reject(t)),this.pendingAggregate.clear()}};var tf=class{mode;selected=new Set;allMatching=!1;anchor=null;selectable=null;constructor(e="none"){this.mode=e}setSelectable(e){this.selectable=e}canSelect(e){return this.selectable===null||this.selectable(e)}dropUnselectable(){if(this.selectable===null||this.allMatching)return!1;let e=!1;for(let t of[...this.selected])this.selectable(t)||(this.selected.delete(t),e=!0);return this.anchor!==null&&!this.selectable(this.anchor)&&(this.anchor=null),e}getMode(){return this.mode}setMode(e){if(e===this.mode)return!1;if(this.mode=e,e==="none")this.clear();else if(e==="single"&&this.allMatching)this.clear();else if(e==="single"&&this.selected.size>1){let t=this.selected.values().next().value;this.selected=new Set([t])}return!0}isSelected(e){return this.allMatching?!this.selected.has(e)&&this.canSelect(e):this.selected.has(e)}getSelectedKeys(){return[...this.selected]}getSelectionDescriptor(){return{allMatching:this.allMatching,keys:[...this.selected]}}isAllMatching(){return this.allMatching}getSelectedCount(e){return this.allMatching?e===void 0?0:Math.max(0,e-this.selected.size):this.selected.size}selectAllMatching(){return this.mode!=="multiple"||this.allMatching&&this.selected.size===0?!1:(this.allMatching=!0,this.selected=new Set,!0)}getAnchor(){return this.anchor}select(e){return this.mode==="none"||!this.canSelect(e)||!this.allMatching&&this.selected.size===1&&this.selected.has(e)?!1:(this.allMatching=!1,this.selected=new Set([e]),this.anchor=e,!0)}toggle(e){return this.mode==="none"?!1:this.isSelected(e)?(this.allMatching?this.selected.add(e):this.selected.delete(e),!0):this.canSelect(e)?(this.allMatching?this.selected.delete(e):this.mode==="single"?this.selected=new Set([e]):this.selected.add(e),this.anchor=e,!0):!1}selectRange(e,t,u=!1){if(this.mode!=="multiple")return this.select(e);let r=this.anchor??e,n=t.indexOf(r),a=t.indexOf(e);if(n===-1||a===-1)return this.select(e);let o=Math.min(n,a),l=Math.max(n,a),i=u&&!this.allMatching?new Set(this.selected):new Set;for(let s=o;s<=l;s++)this.canSelect(t[s])&&i.add(t[s]);return!this.allMatching&&Ao(i,this.selected)?!1:(this.allMatching=!1,this.selected=i,!0)}selectAll(e){if(this.mode!=="multiple")return!1;let t=new Set(this.selectable===null?e:e.filter(u=>this.canSelect(u)));return!this.allMatching&&Ao(t,this.selected)?!1:(this.allMatching=!1,this.selected=t,this.anchor=e[0]??null,!0)}setMany(e,t){if(this.mode!=="multiple")return!1;let u=!1;for(let r of e)this.isSelected(r)!==t&&(t&&!this.canSelect(r)||(this.allMatching===t?this.selected.delete(r):this.selected.add(r),u=!0));return u}clear(){return!this.allMatching&&this.selected.size===0?!1:(this.allMatching=!1,this.selected=new Set,!0)}setSelectedKeys(e){if(this.mode==="none")return!1;let t=this.selectable===null?e:e.filter(r=>this.canSelect(r)),u=new Set(this.mode==="single"?t.slice(0,1):t);return!this.allMatching&&Ao(u,this.selected)?!1:(this.allMatching=!1,this.selected=u,this.anchor=u.size>0?[...u][u.size-1]:null,!0)}handleRowClick(e,t,u){if(this.mode==="none")return!1;let r=!!(t.ctrlKey||t.metaKey);return t.shiftKey&&this.mode==="multiple"?this.selectRange(e,u,r):r?this.toggle(e):this.select(e)}retainKeys(e){let t=!1;for(let u of this.selected)e.has(u)||(this.selected.delete(u),t=!0);return this.anchor!==null&&!e.has(this.anchor)&&(this.anchor=null),t}};function Ao(e,t){if(e.size!==t.size)return!1;for(let u of e)if(!t.has(u))return!1;return!0}function uf(e){return{count:e.length,keyAt:t=>e[t],indexOf:t=>e.indexOf(t)}}function Tu(e,t,u){return e<t?t:e>u?u:e}function xo(e){return e.rows??uf(e.rowKeys??[])}var rf=class{position=null;get(){return this.position}isFocused(e,t){return this.position?.rowKey===e&&this.position?.columnId===t}set(e){return e?.rowKey===this.position?.rowKey&&e?.columnId===this.position?.columnId?!1:(this.position=e,!0)}clear(){return this.set(null)}getIndices(e){if(!this.position)return null;let t=xo(e).indexOf(this.position.rowKey),u=e.columnIds.indexOf(this.position.columnId);return t===-1||u===-1?null:{rowIndex:t,columnIndex:u}}move(e,t){let{columnIds:u}=t,r=xo(t);if(r.count===0||u.length===0)return!1;let n=Math.max(1,t.pageSize??10),a=this.getIndices(t);if(!a){let f=r.keyAt(0);return f===void 0?!1:this.set({rowKey:f,columnId:u[0]})}let o=r.count-1,l=u.length-1,{rowIndex:i,columnIndex:s}=a,h=i,m=(f,C)=>{let A=r.keyAt(f);return t.spanOf&&A!==void 0?t.spanOf(A,C):{start:C,span:1}};switch(e){case"up":i=Tu(i-1,0,o);break;case"down":i=Tu(i+1,0,o);break;case"left":s=Tu(m(i,s).start-1,0,l);break;case"right":{let f=m(i,s);s=Tu(f.start+f.span,0,l);break}case"pageUp":i=Tu(i-n,0,o);break;case"pageDown":i=Tu(i+n,0,o);break;case"rowStart":s=0;break;case"rowEnd":s=l;break;case"gridStart":i=0,s=0;break;case"gridEnd":i=o,s=l;break}if(t.isFocusable){let f=i>h?1:i<h?-1:0;i=this.skipUnfocusable(r,i,f,t.isFocusable,h)}let c=r.keyAt(i);return c===void 0?!1:(t.spanOf&&(s=t.spanOf(c,s).start),this.set({rowKey:c,columnId:u[s]}))}skipUnfocusable(e,t,u,r,n){if(r(e.keyAt(t),t))return t;let a=u===0?-1:u;for(let o=t+a;o>=0&&o<e.count;o+=a)if(r(e.keyAt(o),o))return o;for(let o=t-a;o>=0&&o<e.count;o-=a)if(r(e.keyAt(o),o))return o;return n}reconcile(e,t){if(!this.position)return!1;let{columnIds:u}=e,r=xo(e);if(r.count===0||u.length===0)return this.clear();let n=r.indexOf(this.position.rowKey)!==-1,a=u.includes(this.position.columnId)?this.position.columnId:u[0];if(n)return this.set({rowKey:this.position.rowKey,columnId:a});let o=Tu(t??0,0,r.count-1),l=r.keyAt(o);return l===void 0?this.clear():this.set({rowKey:l,columnId:a})}},dt=(e,t=!0)=>({type:e,preventDefault:t});function dd(e){let t=!!(e.ctrlKey||e.metaKey),u=!!e.shiftKey;switch(e.key){case"ArrowUp":return dt(u?"extendSelectionUp":"up");case"ArrowDown":return dt(u?"extendSelectionDown":"down");case"ArrowLeft":return dt("left");case"ArrowRight":return dt("right");case"PageUp":return dt("pageUp");case"PageDown":return dt("pageDown");case"Home":return dt(t?"gridStart":"rowStart");case"End":return dt(t?"gridEnd":"rowEnd");case" ":case"Spacebar":return dt("toggleSelection");case"Enter":return dt("activate");case"Escape":return dt("clearSelection");case"a":case"A":return t?dt("selectAll"):null;case"c":case"C":return t?dt("copy",!1):null;default:return null}}function nf(e){return e==="up"||e==="down"||e==="left"||e==="right"||e==="pageUp"||e==="pageDown"||e==="rowStart"||e==="rowEnd"||e==="gridStart"||e==="gridEnd"}var af="__dg_",Lu="__dg_group";function Be(e){return e.startsWith(af)}function of(e){return e.filter(t=>!Be(t))}function zo(e){return e.replace(/[\t\r\n]+/g," ")}function lf(e,t,u,r){let n=u.getCellValue(e.data,t),a=du(u.getDef(t),n,e.data);return zo(r.cell?r.cell(e,t,n,a):a)}function sf(e,t,u={},r={}){let n=u.columnIds??of(t.runtime().map(o=>o.state.id));if(n.length===0)return"";let a=[];if(u.includeGroupHeaders){let o=n.map(i=>_t(t.getDef(i))),l=o.reduce((i,s)=>Math.max(i,s.length),0);for(let i=0;i<l;i++){let s=null;a.push(o.map(h=>{let m=h[i]??"",c=m===""?null:h.slice(0,i+1).join("\0"),f=c!==null&&c===s;return s=c,f?"":zo(m)}).join(" "))}}(u.includeHeaders||u.includeGroupHeaders)&&a.push(n.map(o=>{let l=t.getDef(o)?.headerName??t.getDef(o)?.field??o;return zo(r.header?r.header(o,l):l)}).join(" "));for(let o of e)Bt(o)&&a.push(n.map(l=>lf(o,l,t,r)).join(" "));return a.join(`
|
|
16
|
-
`)}function
|
|
17
|
-
`,$o="http://schemas.openxmlformats.org/spreadsheetml/2006/main",Sr="http://schemas.openxmlformats.org/officeDocument/2006/relationships";function Un(e){let t=e.length>Xs?e.slice(0,Xs):e;return t=t.replace(/[\u0000-\u0008\u000B\u000C\u000E-\u001F\uFFFE\uFFFF]/g,""),t.replace(/[&<>"]/g,u=>u==="&"?"&":u==="<"?"<":u===">"?">":""")}function bf(e){let t=e+1,u="";for(;t>0;){let r=(t-1)%26;u=String.fromCharCode(65+r)+u,t=Math.floor((t-1)/26)}return u}function Af(e){let t=(e??"").replace(/[[\]:*?/\\]/g," ").trim().slice(0,31).trim();return t===""?"Data":t}var Zs={General:0,0:1,"0.00":2,"#,##0":3,"#,##0.00":4,"0%":9,"0.00%":10};function xf(e){let t=new Map,u=o=>{if(!o||o==="General")return 0;if(o in Zs)return Zs[o];let l=t.get(o);return l===void 0&&(l=164+t.size,t.set(o,l)),l},r=['<xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0"/>','<xf numFmtId="0" fontId="1" fillId="0" borderId="0" xfId="0" applyFont="1"/>'],n=new Map([[0,0]]),a=o=>{let l=u(o),i=n.get(l);return i===void 0&&(i=r.length,r.push(`<xf numFmtId="${l}" fontId="0" fillId="0" borderId="0" xfId="0" applyNumberFormat="1"/>`),n.set(l,i)),i};return{columnStyle:e.map(o=>a(o.numFmt)),styleFor:a,headerStyle:1,xml:()=>{let o=t.size===0?"":`<numFmts count="${t.size}">${[...t].map(([l,i])=>`<numFmt numFmtId="${i}" formatCode="${Un(l)}"/>`).join("")}</numFmts>`;return`${Zu}<styleSheet xmlns="${$o}">${o}<fonts count="2"><font><sz val="11"/><name val="Calibri"/></font><font><b/><sz val="11"/><name val="Calibri"/></font></fonts><fills count="2"><fill><patternFill patternType="none"/></fill><fill><patternFill patternType="gray125"/></fill></fills><borders count="1"><border><left/><right/><top/><bottom/><diagonal/></border></borders><cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0"/></cellStyleXfs><cellXfs count="${r.length}">${r.join("")}</cellXfs><cellStyles count="1"><cellStyle name="Normal" xfId="0" builtinId="0"/></cellStyles></styleSheet>`}}}function vf(e,t,u,r){let n=t?` s="${t}"`:"";if(u instanceof Date){let o=u.getTime()/wf+Ef;return Number.isFinite(o)?`<c r="${e}"${n}><v>${o}</v></c>`:""}if(typeof u=="number")return Number.isFinite(u)?`<c r="${e}"${n}><v>${u}</v></c>`:"";if(typeof u=="boolean")return`<c r="${e}"${n} t="b"><v>${u?1:0}</v></c>`;let a=u==null?r:String(u);return a===""?"":`<c r="${e}"${n} t="inlineStr"><is><t xml:space="preserve">${Un(a)}</t></is></c>`}async function Ff(e,t,u,r={}){let n=new yf(e,{compress:r.compress}),a=xf(t),o=t.map((G,W)=>bf(W)),l=r.includeHeaders!==!1,i=Math.max(l?2:1,Math.min(Nr,r.maxRowsPerSheet??Nr)),s=!!r.raw,h=o[o.length-1]??"A",m=Af(r.sheetName),c=[],f=new Set,C=0,A=t.length===0?"":`<cols>${t.map((G,W)=>`<col min="${W+1}" max="${W+1}" width="${Math.min(255,G.width)}" customWidth="1"/>`).join("")}</cols>`,S=l?`<row r="1">${t.map((G,W)=>`<c r="${o[W]}1" s="${a.headerStyle}" t="inlineStr"><is><t xml:space="preserve">${Un(G.header)}</t></is></c>`).join("")}</row>`:"",F=u[Symbol.asyncIterator](),x=[],k=0,M=!1,K=async()=>{for(;k>=x.length;){if(M)return null;if(r.signal?.aborted)throw new et;let G=await F.next();if(G.done)return M=!0,null;x=G.value,k=0}return x[k++]};async function*O(){let G=l&&r.freezeHeader!==!1;yield`${Zu}<worksheet xmlns="${$o}" xmlns:r="${Sr}">`+(G?'<sheetViews><sheetView workbookViewId="0"><pane ySplit="1" topLeftCell="A2" activePane="bottomLeft" state="frozen"/></sheetView></sheetViews>':'<sheetViews><sheetView workbookViewId="0"/></sheetViews>')+`${A}<sheetData>${S}`;let W=l?1:0,Y="";for(;W<i;){let j=await K();if(!j)break;if(j.kind!=="data"&&j.kind!=="group")continue;W++,C++;let J="";for(let ee=0;ee<t.length;ee++){let re=j.cells[ee];if(!re)continue;let B=j.kind!=="data"?re.text:typeof re.value=="boolean"?re.value:Go(re,t[ee],s,!0);if(j.kind==="data"&&B===null)continue;let U=j.kind==="data"&&!re.numFmt?ed(re.value,B,t[ee]):void 0,q=j.kind!=="data"?0:U?a.styleFor(U):a.columnStyle[ee];J+=vf(`${o[ee]}${W}`,q,B,re.text)}Y+=`<row r="${W}">${J}</row>`,Y.length>256*1024&&(yield Y,Y="")}Y&&(yield Y),yield`</sheetData>${l&&r.autoFilter!==!1&&t.length>0?`<autoFilter ref="A1:${h}${Math.max(1,W)}"/>`:""}</worksheet>`}try{do{let W=c.length===0?m:Z0(m,c.length+1,f);if(c.push(W),f.add(W.toLowerCase()),await n.addFile(`xl/worksheets/sheet${c.length}.xml`,O()),r.signal?.aborted)throw new et;if(!M){if(!await K())break;k--}}while(!M||k<x.length);let G=c.map((W,Y)=>Y+1);await n.addFile("xl/styles.xml",[a.xml()]),await n.addFile("xl/workbook.xml",[`${Zu}<workbook xmlns="${$o}" xmlns:r="${Sr}"><sheets>`+c.map((W,Y)=>`<sheet name="${Un(W)}" sheetId="${Y+1}" r:id="rId${Y+1}"/>`).join("")+"</sheets></workbook>"]),await n.addFile("xl/_rels/workbook.xml.rels",[`${Zu}<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">`+G.map(W=>`<Relationship Id="rId${W}" Type="${Sr}/worksheet" Target="worksheets/sheet${W}.xml"/>`).join("")+`<Relationship Id="rId${G.length+1}" Type="${Sr}/styles" Target="styles.xml"/></Relationships>`]),await n.addFile("_rels/.rels",[`${Zu}<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="${Sr}/officeDocument" Target="xl/workbook.xml"/></Relationships>`]),await n.addFile("[Content_Types].xml",[`${Zu}<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Default Extension="xml" ContentType="application/xml"/><Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/><Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"/>`+G.map(W=>`<Override PartName="/xl/worksheets/sheet${W}.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>`).join("")+"</Types>"]),await n.finish()}finally{M||await F.return?.(void 0)}return C}var Wo=["asc","desc",null];function Js(e){if(!Array.isArray(e))return Wo;let t=[];for(let u of e){let r=u==="asc"||u==="desc"?u:u===null?null:void 0;r!==void 0&&!t.includes(r)&&t.push(r)}return t.some(u=>u!==null)?t:Wo}function Df(e,t){let u=t.indexOf(e);return u===-1?t[0]:t[(u+1)%t.length]}function Sf(e){let t={};for(let[u,r]of Object.entries(e)){let n=Object.values(r);n.length!==0&&(t[u]=n.length===1?n[0]:{logic:"and",nodes:n})}return t}var kf=class{state={sort:[],filter:null,columnFilters:{},columnFilterParts:{},filterEnabled:!0,searchText:"",groupBy:[],collapsedGroups:[],expandedDetails:[],page:0,pageSize:50};listeners=new Set;version=0;multiSort;collapsedCache=null;expandedCache=null;constructor(e={}){this.multiSort=e.multiSort??!1}getState(){return this.state}getVersion(){return this.version}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}commit(e,t="data",u){e.collapsedGroups!==this.state.collapsedGroups&&(this.collapsedCache=u?.collapsed??null),e.expandedDetails!==this.state.expandedDetails&&(this.expandedCache=u?.expanded??null),this.state=e,this.version++,this.listeners.forEach(r=>r(this.state,t))}collapsedSet(){return this.collapsedCache||(this.collapsedCache=new Set(this.state.collapsedGroups)),this.collapsedCache}expandedSet(){return this.expandedCache||(this.expandedCache=new Set(this.state.expandedDetails)),this.expandedCache}commitCollapsed(e){this.commit({...this.state,collapsedGroups:[...e]},"view",{collapsed:e})}commitExpanded(e){this.commit({...this.state,expandedDetails:[...e]},"view",{expanded:e})}toggleSort(e,t=!1,u=Wo){let r=this.state.sort,n=r.find(l=>l.columnId===e),a=Df(n?.direction??null,u),o;this.multiSort&&t?(o=r.filter(l=>l.columnId!==e),a&&o.push({columnId:e,direction:a})):o=a?[{columnId:e,direction:a}]:[],this.commit({...this.state,sort:o})}setSort(e){let t=this.multiSort?e.slice():e.slice(0,1);this.commit({...this.state,sort:t})}setGroupLevelSort(e,t){this.commit({...this.state,sort:this.multiSort?[...e,...t]:e})}clearSort(){this.state.sort.length!==0&&this.commit({...this.state,sort:[]})}setFilter(e){this.commit({...this.state,filter:e})}setFilterEnabled(e){e!==this.state.filterEnabled&&this.commit({...this.state,filterEnabled:e})}setColumnFilter(e,t,u){let r={...this.state.columnFilterParts};if(u===void 0)t?r[e]={[cu]:t}:delete r[e];else{let n={...r[e]??{}};delete n[cu],t?n[u]=t:delete n[u],Object.keys(n).length>0?r[e]=n:delete r[e]}this.commit({...this.state,columnFilterParts:r,columnFilters:Sf(r)})}getColumnFilter(e,t){return t!==void 0?this.state.columnFilterParts[e]?.[t]??null:this.state.columnFilters[e]??null}clearColumnFilters(){Object.keys(this.state.columnFilters).length!==0&&this.commit({...this.state,columnFilters:{},columnFilterParts:{}})}effectiveFilter(){let e=[];this.state.filter&&e.push(this.state.filter);for(let t of Object.values(this.state.columnFilters))e.push(t);return e.length===0?null:e.length===1?e[0]:{logic:"and",nodes:e}}setSearchText(e){e!==this.state.searchText&&this.commit({...this.state,searchText:e})}setGroupBy(e){let t=e==null?[]:typeof e=="string"?[e]:[...e],u=this.state.groupBy;return t.length===u.length&&t.every((r,n)=>r===u[n])?!1:(this.commit({...this.state,groupBy:t,collapsedGroups:[]}),!0)}isGroupCollapsed(e){return this.collapsedSet().has(e)}toggleGroup(e){let t=this.collapsedSet(),u=new Set(t);u.delete(e)||u.add(e),this.commitCollapsed(u)}setCollapsedGroups(e){this.commitCollapsed(new Set(e))}isDetailExpanded(e){return this.expandedSet().has(e)}toggleDetail(e){let t=new Set(this.expandedSet());t.delete(e)||t.add(e),this.commitExpanded(t)}setExpandedDetails(e){this.commitExpanded(new Set(e))}setPage(e){let t=Math.max(0,Math.floor(e));t!==this.state.page&&this.commit({...this.state,page:t},"page")}setPageSize(e){let t=Math.max(1,Math.floor(e));t!==this.state.pageSize&&this.commit({...this.state,pageSize:t,page:0},"page")}clampPage(e){let t=Math.max(0,e-1);return this.state.page<=t?this.state.page:(this.state={...this.state,page:t},this.version++,t)}resetPage(){this.state.page!==0&&this.commit({...this.state,page:0},"page")}applyState(e){this.commit({...e})}reset(){this.commit({sort:[],filter:null,columnFilters:{},columnFilterParts:{},filterEnabled:!0,searchText:"",groupBy:[],collapsedGroups:[],expandedDetails:[],page:0,pageSize:this.state.pageSize})}};function Mn(e,t){return e.toLowerCase().endsWith(`.${t}`)?e:`${e}.${t}`}var Bf=[];function Tf(e,t){if(t.length!==e.length)return null;let u=!1;for(let o=0;o<e.length&&!u;o++)u=e[o].data!==t[o];if(!u)return e;let r=new Map,n=new Int32Array(e.length).fill(-1);for(let o=e.length-1;o>=0;o--){let l=r.get(e[o].data);l!==void 0&&(n[o]=l),r.set(e[o].data,o)}let a=new Array(e.length);for(let o=0;o<t.length;o++){let l=r.get(t[o]);if(l===void 0)return null;n[l]===-1?r.delete(t[o]):r.set(t[o],n[l]),a[o]=e[l]}return a}function Rf(e){let t=e;for(;t&&"nodes"in t&&t.nodes.length===1;)t=t.nodes[0];return t}function _o(e,t){if(!e)return null;if("nodes"in e){let u=e.nodes.map(r=>_o(r,t)).filter(r=>r!==null);return u.length===0?null:{logic:e.logic,nodes:u}}return t(e.columnId)?e:null}var Uo="__dg_pending_row_",Nf=e=>`${Uo}${e}`,e0="\0nil";function Mf(e){if(typeof e!="string"||!e.startsWith(Uo))return null;let t=Number(e.slice(Uo.length));return Number.isInteger(t)&&t>=0?t:null}function If(e){return e==null?[]:typeof e=="string"?[e]:[...e]}var Lf="\0",In="",Fo=1e3,Pf=150,Gf=60,hd=class{gridId;events=new mh;viewStateParts=new Map;pendingViewStateParts={};pendingFocus=null;pendingScroll=null;columns;store;rowModel;debugMode;unboundedWarned=!1;locale;text;virtual;selection;focus=new rf;keyGetter;rowKeyField;summaryDefs;pendingReaders;historyDelegate;editingDelegate;summaryValues={};treeData;treeParent=null;treeChildParents=new WeakMap;treeIndex=null;treeIndexEpoch=-1;treeToggled=new Set;treeExpandedByDefault;warnedTreeGrouping=!1;lastPagination=null;firstDataRenderedSent=!1;cellRevision=0;collapsedByDefault;groupSummaries;groupDisplay;groupColumnConfig;authorColumns;stickyGroupHeaders;stickyIndex=null;showGroupedColumns;masterDetail;masterDetailExport;editForm=null;messageRows=null;getRowHeightFn;dataRowHeight=null;measuredRowHeights=new Map;lastResult={nodes:[],visibleCount:0,totalCount:0};spanCache=new Map;spanCacheResult=null;viewNodes=[];allViewNodes=[];paginationEnabled;infiniteScroll;infinitePageSize;infiniteLimit;exportDefaults={csv:{},excel:{},pdf:{}};exportPageSize;distinctFollowsSearch;exportMaxRows;exportToken=0;computeToken=0;lastComputeTimings={};summaryPassSeq=0;remoteFetchQueued=!1;viewportWidth=0;viewportHeight=0;leadWidth=0;externalFilter=null;sortCycle;postSort;warnedPostSort=!1;rowSelectableFn;selectableCache=new WeakMap;sourceRowIndex=null;animateRows=!1;findState=null;rowPinning=null;pinned={top:[],bottom:[]};pinnedSnapshot=new Map;selectableCountCache=null;selectableDirty=!1;asyncQueue=[];asyncCallbacks=[];asyncTimer=null;asyncTransactionWait;lastScrollTop=-1;lastScrollLeft=-1;scrollEndTimer=null;overlayOverride=null;lastFocusedRowKey=null;deferredSelection;rowIndexCache=null;dataNodeCache=null;dataKeyCache=null;nodeByKey=null;groupTree=null;groupTreeSignature=null;dataEpoch=0;distinctCache=new Map;distinctFullInflight=new Map;distinctTruncated=new Set;distinctEpoch=-1;localeCollator=null;summaryBasis=null;busy={busy:!1,progress:null,phase:null,cancellable:!1};exportAbort=null;busyDepth=0;unsubscribeStore;disposed=!1;constructor(e){this.gridId=e.gridId,this.asyncTransactionWait=e.asyncTransactionWait??50,this.debugMode=e.debugMode??!1,this.locale=e.locale??"en",this.text=pu(e.locale,e.messages),this.groupDisplay=e.grouping?.display==="aligned"||e.grouping?.display==="column"?e.grouping.display:"fullWidth",this.groupColumnConfig=e.grouping?.groupColumn??{},this.authorColumns=e.columns,this.columns=new Lp(this.withGroupColumn(e.columns,[]),{defaultColumnDef:e.defaultColumnDef,debugMode:this.debugMode,locale:this.locale}),this.columns.setCellFormulaReader((u,r,n)=>this.readCellFormula(u,r,n)),this.warnShadowedFilterOperators(),this.store=new kf({multiSort:e.sorting?.multi??!1}),this.sortCycle=Js(e.sorting?.cycle),this.postSort=e.sorting?.postSort??null,this.rowSelectableFn=e.selection?.isRowSelectable??null;let t=Lh(e.rowKey);if(this.keyGetter=t,e.tree?.childrenField&&Array.isArray(e.dataSource)&&(e={...e,dataSource:to(e.dataSource,e.tree.childrenField,this.treeChildParents).rows}),this.rowKeyField=typeof e.rowKey=="string"?e.rowKey:null,e.viewportDatasource)this.rowModel=new qs(e.viewportDatasource,{keyGetter:t,onChange:()=>this.scheduleRemoteFetch()});else if(Zc(e.dataSource)){let u=e.tree?.hasChildren;this.rowModel=new Fs(e.dataSource,{keyGetter:t,blockSize:e.remote?.blockSize,maxBlocks:e.remote?.maxBlocks,onError:r=>this.events.emit("dataError",{error:r}),debugMode:this.debugMode,...u?{tree:{hasChildren:u,isExpanded:r=>this.isTreeRowExpanded(r)}}:{}})}else this.rowModel=new Tn(e.dataSource,{gridId:e.gridId,keyGetter:t,locale:e.locale,enabled:e.worker?.enabled,threshold:e.worker?.threshold,workerUrl:e.worker?.url,debugMode:this.debugMode,onEncodeProgress:u=>u>=1?this.setBusy("computing",null):this.setBusy("encoding",Math.round(u*100)),onPhaseProgress:(u,r)=>this.setBusy(u,r===null?null:Math.round(r*100))});this.exportPageSize=Math.max(1,e.remote?.exportPageSize??1e3),this.distinctFollowsSearch=e.remote?.distinctFollowsSearch===!0,this.exportMaxRows=Math.max(1,e.remote?.exportMaxRows??1e5),this.selection=new tf(e.selection?.mode??"none"),this.selection.setSelectable(this.rowSelectableFn?u=>this.isRowSelectable(u):null),this.deferredSelection=e.selection?.deferred??!1,this.postSort&&this.rowModel.mode==="remote"&&console.warn("[datagrid] `sorting.postSort` is ignored with a remote DataSource \u2014 the server decides the row order. Order the rows on the server, or load them into an array."),this.summaryDefs=e.summaries??[],this.setRowPinning(e.rowPinning),this.animateRows=e.animateRows===!0,this.events.on("dataUpdated",()=>this.prunePinnedRows());for(let u of["contentReady","columnStateChanged"])this.events.on(u,()=>{this.findState&&(this.recomputeFind(this.findState.matches[this.findState.active]??null),this.emitFindChanged())});if(this.treeData=e.tree??null,this.treeData&&(this.treeParent=this.treeData.childrenField?u=>{let r=u&&typeof u=="object"?this.treeChildParents.get(u):void 0;return r===void 0?null:t(r)}:t4(this.treeData)),this.treeData&&this.rowModel.mode==="remote"&&!this.treeData.hasChildren&&console.warn("[datagrid] `tree` needs the rows in memory and is ignored with a remote DataSource \u2014 the grid shows a flat list. Give `tree.hasChildren` to load the tree from the server one level at a time (`load({ parentKey })`), or load the rows into an array."),this.treeExpandedByDefault=this.treeData?.defaultExpanded??!1,this.collapsedByDefault=e.grouping?.collapsedByDefault??!1,this.groupSummaries=e.grouping?.groupSummaries??!1,this.stickyGroupHeaders=e.grouping?.stickyHeaders??!1,this.showGroupedColumns=e.grouping?.showGroupedColumns??!1,e.grouping?.groupBy){this.store.setGroupBy(e.grouping.groupBy);let u=this.store.getState().groupBy;this.refreshGroupColumn(),this.remote()?.setGrouping(u.map(r=>({columnId:r})),u)}this.paginationEnabled=e.pagination?e.pagination.enabled!==!1:!1,this.infiniteScroll=e.scrolling?.mode==="infinite",this.infinitePageSize=Math.max(1,e.scrolling?.pageSize??100),this.infiniteLimit=this.infinitePageSize,e.pagination?.pageSize&&this.store.setPageSize(e.pagination.pageSize),this.virtual=new b0({rowHeight:e.rowHeight,overscanY:e.virtualization?.overscanY,overscanX:e.virtualization?.overscanX}),this.virtual.setColumnLayout(cs(this.layoutRuntime())),this.getRowHeightFn=e.getRowHeight,this.masterDetail=e.masterDetail?{height:Math.max(1,e.masterDetail.height??160),expandedByDefault:e.masterDetail.expandedByDefault??!1}:null,this.masterDetailExport=e.masterDetail?.export??null,this.unsubscribeStore=this.store.subscribe((u,r)=>{this.events.emit("stateUpdated",{scope:r,state:this.getViewState()}),r==="page"&&this.emitPaginationChanged(!1),r==="view"||r==="page"&&this.rowModel.mode==="client"?this.reproject():this.recompute()}),this.recompute()}getRows(){return this.viewNodes}getDataRows(){return this.dataNodes()}getDataRowNode(e){if(!this.nodeByKey){let t=new Map,u=this.dataNodes();for(let r=0;r<u.length;r++)t.has(u[r].key)||t.set(u[r].key,u[r]);this.nodeByKey=t}return this.nodeByKey.get(e)}getRowByKey(e){return this.getDataRowNode(e)?.data}forEachNode(e){let t=this.rowModel.getSourceRows?.();if(!t){this.forEachNodeAfterFilterAndSort(e);return}for(let u=0;u<t.length;u++)e(Xe(t[u],this.keyGetter(t[u]),u),u)}forEachNodeAfterFilterAndSort(e){let t=this.dataNodes();for(let u=0;u<t.length;u++)e(t[u],u)}forEachDisplayedNode(e){let t=this.viewNodes;for(let u=0;u<t.length;u++)e(t[u],u)}dataNodes(){if(this.dataNodeCache)return this.dataNodeCache;let e=[];for(let t of this.lastResult.nodes)t&&t.kind==="data"&&e.push(t);return this.dataNodeCache=e,e}invalidateResultCaches(){this.dataNodeCache=null,this.dataKeyCache=null,this.nodeByKey=null,this.groupTree=null,this.groupTreeSignature=null,this.selectableCountCache=null}ensureGroupTree(e){let t=this.groupSummaries&&this.summaryDefs.length>0,u=`${e.join(Lf)}#${t?this.summaryDefs.map(r=>`${r.columnId}:${r.type}`).join(","):""}`;return this.groupTree&&this.groupTreeSignature===u?this.groupTree:(this.setBusy("grouping",null),this.groupTree=es(this.dataNodes(),this.columns,{columnIds:e,summaries:t?this.summaryDefs:void 0,locale:this.locale}),this.groupTreeSignature=u,this.groupTree)}getVisibleCount(){return this.lastResult.visibleCount}getTotalCount(){return this.rowModel.getTotalCount()}getColumnModel(){return this.columns}getColumnStates(){return this.columns.getColumnStates()}getSort(){return this.store.getState().sort}getFilter(){return this.store.getState().filter}getSearchText(){return this.store.getState().searchText}getVirtualWindow(){return this.virtual.getWindow()}getColumnLayout(){return this.virtual.getColumnLayout()}getVisualColumnIds(){let e=this.getColumnLayout(),t=[];for(let u of e.left)t.push(u.state.id);for(let u of e.center)t.push(u.state.id);for(let u of e.right)t.push(u.state.id);return t}getColumnIdAt(e){if(e<0)return null;let t=this.getColumnLayout();if(e<t.left.length)return t.left[e].state.id;let u=e-t.left.length;return u<t.center.length?t.center[u].state.id:t.right[u-t.center.length]?.state.id??null}getVisualColumnCount(){let e=this.getColumnLayout();return e.left.length+e.center.length+e.right.length}getAnimateRows(){return this.animateRows}setAnimateRows(e){this.animateRows=e}getRowHeight(){return this.virtual.getRowHeight()}isUsingWorker(){return this.rowModel instanceof Tn&&this.rowModel.usesWorker()}getVisibleCenterColumns(){return this.virtual.getVisibleCenterColumns()}warnIfUnbounded(e){if(this.unboundedWarned||typeof process<"u"&&process.env&&!this.debugMode)return;let t=this.lastResult.visibleCount;t<500||e<3e3||e<t*this.getRowHeight()*.9||(this.unboundedWarned=!0,console.warn(`[datagrid] "${this.gridId}" is ${Math.round(e)} px tall \u2014 as tall as its ${t} rows \u2014 so it draws every one of them instead of only the rows in view, and gets slower with each. Give the grid a height: \`style={{ height: 500 }}\` (React; there is no \`height\` prop), a CSS height on the grid's container, or a parent with a definite height (a flex child needs \`min-height: 0\`).`))}setViewportSize(e,t){let u=this.viewportWidth,r=this.viewportHeight,n=e!==u||t!==r;this.viewportWidth=e,this.viewportHeight=t,e!==u&&this.applyFlex()&&this.emitColumnStateChanged(),e!==u&&this.columns.setGridWidth(e)&&this.emitColumnStateChanged();let a=this.emitIfWindowChanged(this.virtual.setViewportSize(e,t));return a&&this.rowModel.mode==="remote"&&this.scheduleRemoteFetch(),n&&(this.events.emit("gridSizeChanged",{width:e,height:t,previousWidth:u,previousHeight:r}),this.warnIfUnbounded(t)),a}setMaxScrollOffset(e){return this.emitIfWindowChanged(this.virtual.setMaxScrollOffset(e))}setChromeOffsets(e,t){this.virtual.setChromeOffsets(e,t)}setLeadWidth(e){let t=e!==this.leadWidth;this.leadWidth=e,this.virtual.setLeadWidth(e),t&&this.applyFlex()&&this.emitColumnStateChanged()}setMaxCanvasHeight(e){return this.emitIfWindowChanged(this.virtual.setMaxCanvasHeight(e))}setScroll(e,t){let u=this.emitIfWindowChanged(this.virtual.setScroll(e,t));return u&&this.rowModel.mode==="remote"&&this.scheduleRemoteFetch(),this.publishScroll(e,t),u}publishScroll(e,t){if(e===this.lastScrollTop&&t===this.lastScrollLeft)return;this.lastScrollTop=e,this.lastScrollLeft=t;let u=this.virtual.getWindow(),r={scrollTop:e,scrollLeft:t,firstRow:u.rows.start,lastRow:u.rows.end};this.events.emit("bodyScroll",r),this.scrollEndTimer!==null&&clearTimeout(this.scrollEndTimer),this.scrollEndTimer=setTimeout(()=>{this.scrollEndTimer=null,!this.disposed&&this.events.emit("bodyScrollEnd",r)},Pf)}showLoadingOverlay(){this.setOverlayOverride("loading")}showNoRowsOverlay(){this.setOverlayOverride("noRows")}hideOverlay(){this.setOverlayOverride(null)}getOverlay(){return this.overlayOverride==="none"?null:this.overlayOverride!==null?this.overlayOverride:this.busy.busy?"loading":this.getVisibleCount()===0?"noRows":null}setOverlayOverride(e){this.overlayOverride!==e&&(this.overlayOverride=e,this.events.emit("overlayChanged",{overlay:this.getOverlay(),manual:e!==null}))}notifyRowDrag(e,t){let u=e==="enter"?"rowDragEnter":e==="move"?"rowDragMove":"rowDragLeave";this.events.emit(u,{rowKey:t.rowKey,row:this.getRowByKey(t.rowKey),overKey:t.overKey??null,position:t.position??null,fromGridId:t.fromGridId??this.gridId})}notifyRowDragEnd(e){this.events.emit("rowDragEnd",{rowKey:e.rowKey,row:this.getRowByKey(e.rowKey),overKey:e.overKey??null,position:e.position??null,fromGridId:e.fromGridId??this.gridId,dropped:e.dropped})}lastRemoteRange=null;fetchUncoveredWindow(){let e=this.lastRemoteRange;if(!e)return;let t=this.virtual.getWindow().rows,u=Math.min(t.end,this.viewNodes.length);for(let r=t.start;r<u;r++)if(this.viewNodes[r]===void 0&&(r<e.start||r>=e.end)){this.scheduleRemoteFetch();return}}scheduleRemoteFetch(){this.remoteFetchQueued||this.disposed||(this.remoteFetchQueued=!0,queueMicrotask(()=>{this.remoteFetchQueued=!1,this.disposed||this.recompute(!0)}))}setRowHeight(e){let t=this.virtual.setRowHeight(e);t&&this.measuredRowHeights.size>0&&(this.measuredRowHeights=new Map,this.rebuildRowHeights()),t?this.emitIfWindowChanged(!0):this.events.emit("viewportChanged",{window:this.virtual.getWindow()})}setDataRowHeight(e){let t=e!==null&&Number.isFinite(e)&&e>0?Math.round(e):null;t!==this.dataRowHeight&&(this.dataRowHeight=t,this.rebuildRowHeights()?this.emitIfWindowChanged(!0):this.events.emit("viewportChanged",{window:this.virtual.getWindow()}))}getDataRowHeight(){return this.dataRowHeight}ensureVisible(e,t){let u=0,r=this.stickyGroupIndex();if(r)for(let n of cd(r,e))u+=this.virtual.getRowHeightAt(n);return this.virtual.ensureVisible(e,t,u)}stickyGroupIndex(){return!this.stickyGroupHeaders||this.rowModel.mode!=="client"||this.store.getState().groupBy.length===0?null:(this.stickyIndex?.nodes!==this.viewNodes&&(this.stickyIndex=hf(this.viewNodes)),this.stickyIndex)}getStickyGroupRows(){let e=this.stickyGroupIndex();if(!e)return[];let t=this.virtual;return mf(e,{viewTop:t.getViewTop(),indexAt:u=>t.indexAtOffset(u),offsetOf:u=>t.getRowOffset(u),heightOf:u=>t.getRowHeightAt(u)})}hasStickyGroupHeaders(){return this.stickyGroupHeaders&&this.rowModel.mode==="client"}getRowIndex(e){return this.rowAxis().indexOf(e)}openFilterBuilder(e){this.events.emit("filterBuilderRequested",e===void 0?{}:{columnId:e})}scrollToRow(e){let t=this.rowAxis().indexOf(e);if(t<0)return;let u=this.ensureVisible(t);u&&this.events.emit("scrollRequested",u)}revealRow(e,t=3){if(this.disposed)return;let u=()=>{if(!this.editForm?.atTop||String(this.editForm.rowKey)!==String(e))return!1;let a=this.ensureVisible(0);return a&&this.events.emit("scrollRequested",a),!0};if(u())return;if(this.rowAxis().indexOf(e)>=0){this.scrollToRow(e);return}let r=t,n=this.events.on("contentReady",()=>{if(this.disposed||this.rowAxis().indexOf(e)>=0){if(n(),this.disposed||u())return;this.scrollToRow(e);return}--r<=0&&n()})}scrollToCell(e,t){let u=this.rowAxis().indexOf(e);if(u<0)return;let r=this.getColumnLayout().center.findIndex(a=>a.state.id===t),n=this.ensureVisible(u,r===-1?void 0:r);n&&this.events.emit("scrollRequested",n)}getSelectionMode(){return this.selection.getMode()}setSelectionMode(e){this.selection.setMode(e)&&this.emitSelectionChanged()}isRowSelected(e){return this.selection.isSelected(e)}isRowSelectable(e){if(bn(e))return!1;let t=this.rowSelectableFn;if(!t)return!0;let u=this.getDataRowNode(e)?.data??this.sourceRowByKey(e);if(u===void 0)return!0;if(u===null||typeof u!="object")return!!t(u);let r=this.selectableCache.get(u);if(r!==void 0)return r;let n=!!t(u);return this.selectableCache.set(u,n),n}setRowSelectable(e){this.rowSelectableFn=e,this.selection.setSelectable(e?t=>this.isRowSelectable(t):null),this.selectableCache=new WeakMap,this.selectableCountCache=null,this.selectionVersion++,this.selection.dropUnselectable()&&this.emitSelectionChanged(),this.refreshCells()}getSelectableCount(){if(!this.rowSelectableFn||this.rowModel.mode!=="client")return this.lastResult.visibleCount;if(this.selectableCountCache===null){let e=0;for(let t of this.dataNodes())this.isRowSelectable(t.key)&&e++;this.selectableCountCache=e}return this.selectableCountCache}sourceRowByKey(e){if(this.rowModel.mode==="client"){if(!this.sourceRowIndex){let t=new Map,u=this.rowModel.getSourceRows?.()??[];for(let r of u){let n=this.keyGetter(r);t.has(n)||t.set(n,r)}this.sourceRowIndex=t}return this.sourceRowIndex.get(e)}}reconcileSelectable(){this.selectableDirty&&(this.selectableDirty=!1,this.rowSelectableFn&&this.selection.dropUnselectable()&&this.emitSelectionChanged())}getSelectedKeys(){return this.selection.isAllMatching()?this.dataNodes().filter(e=>this.selection.isSelected(e.key)).map(e=>e.key):this.selection.getSelectedKeys()}getSelectionDescriptor(){let e=this.selection.getSelectionDescriptor();if(e.allMatching&&this.rowSelectableFn&&this.rowModel.mode==="client"){let t=new Set(e.keys);for(let u of this.dataNodes())!t.has(u.key)&&!this.isRowSelectable(u.key)&&e.keys.push(u.key)}return e}getSelectedCount(){if(!this.selection.isAllMatching())return this.selection.getSelectedCount();let{keys:e}=this.selection.getSelectionDescriptor(),t=e.length;if(this.rowModel.mode==="client"&&t>0){t=0;for(let u of e)this.getDataRowNode(u)&&this.isRowSelectable(u)&&t++}return Math.max(0,this.getSelectableCount()-t)}isAllMatchingSelected(){return this.selection.isAllMatching()}getSelectedRows(){return this.dataNodes().filter(e=>this.selection.isSelected(e.key)).map(e=>e.data)}getFocusedNode(){let e=this.focus.get();if(!e)return;let t=this.rowAxis().indexOf(e.rowKey);return t>=0?this.viewNodes[t]:void 0}getFocusedRowKey(){return this.focus.get()?.rowKey??null}getFocusedRowIndex(){let e=this.getFocusedRowKey();return e===null?-1:this.rowAxis().indexOf(e)}focusRow(e){let t=this.focus.get()?.columnId??this.layoutRuntime()[0]?.state.id;t&&this.focus.set({rowKey:e,columnId:t})&&(this.emitFocusChanged(),this.scrollToRow(e))}selectRow(e){bn(e)||this.selection.select(e)&&this.emitSelectionChanged()}toggleRow(e){bn(e)||this.selection.toggle(e)&&this.emitSelectionChanged()}setSelectedKeys(e){this.selection.setSelectedKeys(e)&&this.emitSelectionChanged()}selectionVersion=0;groupSelectionCache=new Map;groupSelectionCacheKey=null;findGroup(e){let t=this.groupTree;if(!t)return null;let u=[...t.roots];for(;u.length>0;){let r=u.pop();if(r.key===e)return r;r.children&&e.startsWith(`${r.key}|`)&&u.push(...r.children)}return null}getGroupEditAggregate(e){if(!this.enterpriseEdition||this.getGroupDisplay()==="fullWidth"||!this.getGroupSummaries()||!this.columns.getDef(e)?.groupEdit)return null;let t=this.getSummaryDefs().find(u=>u.columnId===e);return t&&(t.type==="sum"||t.type==="avg")?t.type:null}planGroupEdit(e,t,u,r,n){this.requireEnterprise("Editing a group total","");let a=this.getGroupEditAggregate(t),o=this.columns.getDef(t)?.groupEdit;if(!a||!o||!Number.isFinite(u))return null;let l=this.getGroupRowKeys(e);if(l.length===0)return null;if(typeof o=="function"){let h=l.map(m=>({rowKey:m,row:this.getRowByKey(m),value:r(m),writable:n(m)}));return o({groupKey:e,columnId:t,aggregate:a,target:u,rows:h}).filter(m=>n(m.rowKey))}let i=l.map(h=>{let m=Number(r(h));return{key:h,value:Number.isFinite(m)?m:0,writable:n(h)}}),s=df(i,u,a,o);return s?s.map(h=>({rowKey:h.key,value:h.value})):null}getGroupRowKeys(e){let t=this.findGroup(e);if(!t||!this.groupTree)return[];let u=this.groupTree.nodes,r=[];for(let n=t.from;n<t.to;n++)r.push(u[n].key);return r}getGroupSelectionState(e){let t=this.groupSelectionCacheKey;(!t||t.tree!==this.groupTree||t.version!==this.selectionVersion)&&(this.groupSelectionCache.clear(),this.groupSelectionCacheKey={tree:this.groupTree,version:this.selectionVersion});let u=this.groupSelectionCache.get(e);if(u)return u;let r=0,n=0,a=this.findGroup(e);if(a&&this.groupTree){let l=this.groupTree.nodes,i=this.rowSelectableFn!==null;for(let s=a.from;s<a.to&&!(r>0&&n>0);s++)this.selection.isSelected(l[s].key)?r++:(!i||this.isRowSelectable(l[s].key))&&n++}let o=r>0&&n>0?"some":r>0?"all":"none";return this.groupSelectionCache.set(e,o),o}setGroupSelected(e,t){this.selection.setMany(this.getGroupRowKeys(e),t)&&this.emitSelectionChanged()}toggleGroupSelection(e){this.setGroupSelected(e,this.getGroupSelectionState(e)!=="all")}selectAll(){(this.deferredSelection?this.selection.selectAllMatching():this.selection.selectAll(this.dataKeys()))&&this.emitSelectionChanged()}clearSelection(){this.selection.clear()&&this.emitSelectionChanged()}handleRowClick(e,t={}){bn(e)||this.selection.handleRowClick(e,t,this.dataKeys())&&this.emitSelectionChanged()}notifyCell(e,t,u,r){let n=t.kind==="data"?t.data:void 0;this.events.emit(e,{rowKey:t.key,rowIndex:u,columnId:r,value:n===void 0?void 0:this.columns.getCellValue(n,r),row:n,node:t})}notifyCellValueChanged(e){this.events.emit("cellValueChanged",{...e,row:this.getRowByKey(e.rowKey)})}notifyEditingStarted(e){this.events.emit("cellEditingStarted",e)}notifyEditingStopped(e){this.events.emit("cellEditingStopped",e)}notifyRowEditingStarted(e){this.events.emit("rowEditingStarted",{...e,row:this.getRowByKey(e.rowKey)})}notifyRowEditingStopped(e){this.events.emit("rowEditingStopped",{...e,row:this.getRowByKey(e.rowKey)})}notifyHistoryStarted(e,t){this.events.emit(e==="undo"?"undoStarted":"redoStarted",{label:t})}notifyHistoryEnded(e,t){this.events.emit(e==="undo"?"undoEnded":"redoEnded",t)}setHistoryDelegate(e){this.historyDelegate=e??void 0}undo(){return this.historyDelegate?.undo()??!1}redo(){return this.historyDelegate?.redo()??!1}canUndo(){return this.historyDelegate?.canUndo()??!1}canRedo(){return this.historyDelegate?.canRedo()??!1}getHistoryDepth(){return this.historyDelegate?.depth()??{undo:0,redo:0}}setEditingDelegate(e){this.editingDelegate=e??void 0}startEditingCell(e,t){return this.editingDelegate?.startEditingCell(e,t)??!1}stopEditing(e){return this.editingDelegate?.stopEditing(e?.cancel??!1)??Promise.resolve(!1)}getEditingCells(){return this.editingDelegate?.getEditingCells()??[]}isEditing(){return this.getEditingCells().length>0}notifyRow(e,t,u){this.events.emit(e,{rowKey:t.key,rowIndex:u,row:t.kind==="data"?t.data:void 0,node:t})}getFocus(){return this.focus.get()}isCellFocused(e,t){return this.focus.isFocused(e,t)}focusCell(e,t){this.pendingFocus=null,this.focus.set({rowKey:e,columnId:t})&&this.emitFocusChanged()}clearFocus(){this.pendingFocus=null,this.focus.clear()&&this.emitFocusChanged()}moveFocus(e){this.pendingFocus=null;let t=this.focus.move(e,this.focusContext());return t&&this.emitFocusChanged(),t}getFocusIndices(){return this.focus.getIndices(this.focusContext())}executeCommand(e){let{type:t}=e;if((t==="left"||t==="right")&&this.expandCollapseByKey(t))return!0;if(nf(t))return this.moveFocus(t);switch(t){case"toggleSelection":{let u=this.getFocusedNode();return u?(u.kind==="group"?this.toggleGroup(String(u.key)):u.kind==="treePath"?this.toggleTreeRow(u.key):u.kind==="data"&&this.toggleRow(u.key),!0):!1}case"extendSelectionUp":case"extendSelectionDown":{let u=this.moveFocus(t==="extendSelectionUp"?"up":"down"),r=this.focus.get();return r&&this.selection.getMode()==="multiple"&&this.selection.selectRange(r.rowKey,this.dataKeys(),!1)&&this.emitSelectionChanged(),u}case"selectAll":return this.selectAll(),!0;case"clearSelection":return this.clearSelection(),!0;case"activate":return!1;case"copy":return!1;default:return!1}}expandCollapseByKey(e){let t=this.getFocusedNode(),u=this.focus.get();if(!t||!u)return!1;if(t.kind==="group")return(e==="right"?t.expanded:!t.expanded)?!1:(this.toggleGroup(String(t.key)),!0);if(t.kind!=="data"&&t.kind!=="treePath"||!t.tree)return!1;let r=this.getVisualColumnIds().find(i=>!Be(i));if(u.columnId!==r)return!1;let{hasChildren:n,expanded:a,depth:o}=t.tree;if(e==="right")return!n||a?!1:(this.expandTreeRow(t.key),!0);if(n&&a)return this.collapseTreeRow(t.key),!0;let l=o>0?this.treeIndex?.parentOf.get(t.key)??null:null;return l===null||this.rowAxis().indexOf(l)<0?!1:(this.focusCell(l,u.columnId),!0)}getClipboardText(e={}){let t=this.lastResult.nodes.filter(u=>this.selection.isSelected(u.key));if(t.length===0){let u=this.focus.get();if(!u)return"";t=this.lastResult.nodes.filter(r=>r.key===u.rowKey)}return t.length===0?"":sf(t,this.columns,e,this.clipboardTextHooks())}clipboardHooks=null;setClipboardHooks(e){e&&this.requireEnterprise("Clipboard callbacks",""),this.clipboardHooks=e}clipboardTextHooks(){let e=this.clipboardHooks;if(!e)return{};let t=e.processCellForClipboard,u=e.processHeaderForClipboard;return{cell:t?(r,n,a,o)=>t({row:r.data,rowKey:r.key,columnId:n,value:a,text:o}):void 0,header:u?(r,n)=>u({columnId:r,text:n}):void 0}}clipboardCellText(e,t,u,r){let n=this.clipboardHooks?.processCellForClipboard;return n?n({row:e.data,rowKey:e.key,columnId:t,value:u,text:r}):r}writeClipboard(e,t="copy"){if(!e)return!1;let u=this.clipboardHooks?.sendToClipboard;if(u)return u({text:e,kind:t}),!0;let r=typeof navigator>"u"?void 0:navigator.clipboard;return r?.writeText?(r.writeText(e).catch(()=>{}),!0):!1}processPastedTable(e){let t=this.clipboardHooks?.processDataFromClipboard;return t?t({data:e}):e}pastedCellValue(e,t,u,r){this.columns.getDef(t)?.valueParser&&!this.isFormulaCell(t,u)&&(r=this.parseCellValue(e,t,u));let n=this.clipboardHooks?.processCellFromClipboard;if(!n)return r;let a=this.getRowByKey(e);return a===void 0?r:n({row:a,rowKey:e,columnId:t,value:r,text:u})}notifyClipboardGesture(e,t,u){let r=`${e}Start`,n=`${e}End`;this.events.emit(r,{cellCount:t});let a=!1;try{return a=u(),a}finally{this.events.emit(n,{cellCount:t,performed:a})}}dataKeys(){if(this.dataKeyCache)return this.dataKeyCache;let e=this.dataNodes(),t=new Array(e.length);for(let u=0;u<e.length;u++)t[u]=e[u].key;return this.dataKeyCache=t,t}rowAxis(){let e=this.viewNodes;return{count:e.length,keyAt:t=>e[t]?.key??(t>=0&&t<e.length?Nf(t):void 0),indexOf:t=>{let u=Mf(t);if(u!==null&&u<e.length&&!e[u])return u;if(!this.rowIndexCache){let r=new Map;for(let n=0;n<e.length;n++){let a=e[n];a&&!r.has(a.key)&&r.set(a.key,n)}this.rowIndexCache=r}return this.rowIndexCache.get(t)??-1}}}focusContext(){return{isFocusable:this.masterDetail!==null||this.editForm!==null||this.messageRows!==null?(e,t)=>{let u=this.viewNodes[t]?.kind;return u==="data"||u==="group"||u==="treePath"}:void 0,rows:this.rowAxis(),columnIds:this.getVisualColumnIds(),pageSize:Math.max(1,this.virtual.getWindow().rows.end-this.virtual.getWindow().rows.start-2),spanOf:ps(this.getColumnLayout())?this.focusSpanOf():void 0}}focusSpanOf(){let e=this.getVisualColumnIds(),t=new Map;return(u,r)=>{if(!t.has(u)){let i=this.getDataRowNode(u);t.set(u,i?this.planRowColSpans(i,null):null)}let n=t.get(u),a=e[r];if(!n||a===void 0)return{start:r,span:1};let o=n.covered.get(a)??a,l=o===a?r:e.indexOf(o);return{start:l===-1?r:l,span:n.spans.get(o)??1}}}planRowColSpans(e,t){let u=this.getColumnLayout();return ps(u)?lh(u,t,r=>{let n=r.state.id;try{return r.def.colSpan?.({row:e.data,value:this.columns.getCellValue(e.data,n),columnId:n,node:e})??1}catch(a){return this.debugMode&&console.error(`[datagrid] colSpan of "${n}" threw:`,a),1}}):null}emitSelectionChanged(){this.selectionVersion++;let e=this.getSelectedCount();if(!this.selection.isAllMatching()){this.events.emit("selectionChanged",{selectedKeys:this.selection.getSelectedKeys(),selectedCount:e});return}let t=null,u=()=>t??=this.getSelectedKeys();this.events.emit("selectionChanged",{get selectedKeys(){return u()},selectedCount:e})}emitFocusChanged(){let e=this.focus.get();this.events.emit("focusChanged",{focus:e});let t=e?.rowKey??null;if(t!==this.lastFocusedRowKey){let u=this.lastFocusedRowKey;this.lastFocusedRowKey=t,this.events.emit("focusedRowChanged",{rowKey:t,previousRowKey:u,row:t===null?void 0:this.getFocusedRow()})}}getFocusedRow(){let e=this.getFocusedNode();return e&&e.kind==="data"?e.data:void 0}toggleSort(e,t=!1){if(e===Lu){this.toggleGroupColumnSort();return}this.assertColumn(e)&&(this.store.toggleSort(e,t,this.getSortCycle(e)),this.emitSortChanged())}toggleGroupColumnSort(){let e=this.store.getState().groupBy;if(e.length===0)return;let t=this.store.getState().sort,u=(t.find(r=>r.columnId===e[0])?.direction??"asc")==="asc"?"desc":"asc";this.store.setGroupLevelSort(e.map(r=>({columnId:r,direction:u})),t.filter(r=>!e.includes(r.columnId))),this.emitSortChanged()}getSortCycle(e){let t=this.columns.getDef(e)?.sortCycle;return t?Js(t):this.sortCycle}setSort(e){this.store.setSort(e),this.emitSortChanged()}clearSort(){this.store.clearSort(),this.emitSortChanged()}setFilter(e){this.warnUnknownFilterOperators(e,"setFilter"),this.store.setFilter(So(e)),this.store.resetPage(),this.resetReveal(),this.emitFilterChanged()}setColumnFilter(e,t,u){this.assertColumn(e)&&(this.warnUnknownFilterOperators(t,"setColumnFilter"),this.store.setColumnFilter(e,So(t),u),this.store.resetPage(),this.resetReveal(),this.emitFilterChanged())}warnUnknownFilterOperators(e,t){if(!this.debugMode||!e||this.rowModel.mode==="remote")return;let u=z4(e,this.columns);u.length!==0&&console.warn(`[datagrid] ${t}: filter operator(s) not registered on the column \u2014 ${[...new Set(u)].join(", ")}. Such a condition matches no row; add the operator to the column \`filterOperators\`.`)}shadowWarned=new Set;warnShadowedFilterOperators(){for(let e of this.columns.getOrder()){let t=V4(this.columns.getDef(e)).filter(u=>!this.shadowWarned.has(`${e}::${u}`));if(t.length!==0){for(let u of t)this.shadowWarned.add(`${e}::${u}`);console.warn(`[datagrid] column "${e}": filterOperators ${t.map(u=>`"${u}"`).join(", ")} reuse a built-in operator id and are ignored \u2014 give them an id of their own.`)}}}getColumnFilter(e,t){return this.store.getColumnFilter(e,t)}clearColumnFilters(){this.store.clearColumnFilters(),this.emitFilterChanged()}getEffectiveFilter(){return this.store.effectiveFilter()}isFilterEnabled(){return this.store.getState().filterEnabled}runningFilter(){return this.isFilterEnabled()?zn(this.store.effectiveFilter()):null}setExternalFilter(e){this.externalFilter=e,this.events.emit("filterChanged",{filter:this.runningFilter(),searchText:this.store.getState().searchText}),this.recompute()}isExternalFilterPresent(){return this.externalFilter!==null}refreshExternalFilter(){this.externalFilter!==null&&this.recompute()}setFilterEnabled(e){this.isFilterEnabled()!==e&&(this.store.setFilterEnabled(e),this.resetReveal(),this.emitFilterChanged())}getDistinctValues(e,t=Fo){return this.getDistinctValueSet(e,t).entries}getDistinctValueSet(e,t=Fo){this.distinctEpoch!==this.dataEpoch&&(this.distinctCache.clear(),this.distinctTruncated.clear(),this.distinctEpoch=this.dataEpoch);let u=`${e} ${t}`,r=this.distinctCache.get(u);if(r)return{entries:r,truncated:this.distinctTruncated.has(u)};let n=this.rowModel.getSourceRows?.()??[],a=this.columns.getDef(e),o=new Map,l=!1;for(let s of n){let h=this.columns.getCellValue(s,e),m=h==null?e0:String(h),c=h==null?"":du(a,h,s);if(!o.has(m)&&(o.set(m,{value:h,label:c}),o.size>t)){o.delete(m),l=!0;break}}let i=[...o.values()].sort((s,h)=>this.compareDistinct(s,h));return this.distinctCache.set(u,i),l?this.distinctTruncated.add(u):this.distinctTruncated.delete(u),{entries:i,truncated:l}}searchDistinctValues(e,t,u=Fo){let r=Le(t.trim());if(!r)return this.getDistinctValueSet(e,u);let n=this.rowModel.getSourceRows?.()??[],a=this.columns.getDef(e),o=new Map,l=!1;for(let i of n){let s=this.columns.getCellValue(i,e),h=s==null?e0:String(s),m=s==null?"":du(a,s,i);if(!(!Le(m).includes(r)||o.has(h))&&(o.set(h,{value:s,label:m}),o.size>u)){o.delete(h),l=!0;break}}return{entries:[...o.values()].sort((i,s)=>this.compareDistinct(i,s)),truncated:l}}compareDistinct(e,t){let u=e.value==null,r=t.value==null;return u!==r?u?-1:1:this.collator().compare(e.label,t.label)}async getDistinctValueSetAsync(e,t){if(this.remote())return{entries:await this.getDistinctValuesAsync(e),truncated:!1};this.distinctEpoch!==this.dataEpoch&&(this.distinctCache.clear(),this.distinctTruncated.clear(),this.distinctEpoch=this.dataEpoch);let u=`${e} full`,r=this.distinctCache.get(u);if(r)return{entries:r,truncated:!1};let n=this.distinctFullInflight.get(e);if(!n){let a=this.dataEpoch;n=pf({rows:this.rowModel.getSourceRows?.()??[],getValue:o=>this.columns.getCellValue(o,e),labelOf:this.columnShowsOwnText(e)?(o,l)=>du(this.columns.getDef(e),o,l):void 0,collator:this.collator(),shouldAbort:()=>this.disposed,onProgress:t}).then(o=>(this.distinctFullInflight.delete(e),o===null?[]:(a===this.dataEpoch&&this.distinctEpoch===a&&(this.distinctCache.set(u,o),this.distinctTruncated.delete(u)),o))),this.distinctFullInflight.set(e,n)}return{entries:await n,truncated:!1}}canListDistinctValues(){let e=this.remote();return e===null||e.supportsDistinctValues()}async getDistinctValuesAsync(e,t=1e3){let u=this.remote();return u?u.supportsDistinctValues()?this.sortDistinctEntries(await u.loadDistinctValues(e,t)):[]:this.getDistinctValues(e,t)}sortDistinctEntries(e){return e.map(t=>({value:t.value,label:t.label??(t.value==null?"":String(t.value))})).sort((t,u)=>this.collator().compare(t.label,u.label))}openRemoteDistinct(e,t){let u=this.remote();if(!u||!u.supportsDistinctValues())return null;let r=this.columns.getDef(e),n=this.distinctFollowsSearch?()=>({filter:Rf(_o(this.runningFilter(),o=>o!==e)),searchText:this.store.getState().searchText}):void 0,a=n?JSON.stringify(n()):"";return new rh({columnId:e,rowHeight:t,load:o=>u.loadDistinctPage({columnId:e,...o}),formatLabel:o=>du(r,o),initialFilter:this.getColumnFilter(e,Pu)??this.getColumnFilter(e,cu),followContext:n,store:u.distinctStore(e,a)})}columnShowsOwnText(e){let t=this.columns.getDef(e);return!!t&&(!!t.lookup||Zo(t))}collator(){return this.localeCollator||(this.localeCollator=new Intl.Collator(this.locale,{numeric:!0,sensitivity:"base"})),this.localeCollator}bumpDataEpoch(){this.dataEpoch++,this.selectableCache=new WeakMap,this.sourceRowIndex=null,this.selectableCountCache=null,this.selectableDirty=!0}setSearchText(e){this.store.setSearchText(e),this.store.resetPage(),this.resetReveal(),this.emitFilterChanged()}emitFilterChanged(){this.events.emit("filterChanged",{filter:this.store.effectiveFilter(),searchText:this.store.getState().searchText})}setColumnWidth(e,t,u=!0){let r=this.columns.getState(e)?.width;this.columns.setFlex(e,0),this.columns.setWidth(e,t);let n=this.columns.getState(e);n&&r!==void 0&&(n.width!==r||u)&&this.events.emit("columnResized",{columnId:e,width:n.width,previousWidth:r,finished:u}),this.emitColumnStateChanged()}sizeColumnsToFit(e={}){let t=(e.width??this.viewportWidth)-this.leadWidth;if(!Number.isFinite(t)||t<=0)return;let u=new Set(e.skip??[]);for(let h of this.columns.getOrder())Be(h)&&u.add(h);for(let h of this.columns.getOrder())this.columns.isFlexing(h)&&u.add(h);let r=this.columns.getOrder().filter(h=>this.columns.getState(h)?.visible&&!u.has(h));if(r.length===0)return;let n=0;for(let h of this.columns.getOrder())!this.columns.getState(h)?.visible||!u.has(h)||(n+=this.columns.getState(h)?.width??0);let a=t-n;if(a<=0)return;let o=new Set(r),l=new Map;for(let h of r)l.set(h,this.columns.getState(h)?.width??0);for(let h=0;h<=r.length&&o.size>0;h++){let m=0;for(let C of o)m+=l.get(C)??0;if(m<=0)break;let c=a/m,f=!1;for(let C of[...o]){let A=(l.get(C)??0)*c,S=this.columns.getDef(C),F=S?.minWidth??Gf,x=S?.maxWidth??Number.POSITIVE_INFINITY;if(A<F||A>x){let k=Math.min(Math.max(A,F),x);l.set(C,k),o.delete(C),a-=k,f=!0}else l.set(C,A)}if(!f)break}let i=0;for(let h of r)i+=l.get(h)??0;let s=0;r.forEach((h,m)=>{let c=m===r.length-1?Math.round(i)-s:Math.round(l.get(h)??0);s+=c,this.columns.setWidth(h,c)}),this.emitColumnStateChanged()}setBandCollapsed(e,t){let u=typeof e=="string"?[e]:e;this.columns.setBandCollapsed(u,t)&&(this.events.emit("columnGroupOpened",{band:[...u],open:!t}),this.emitColumnStateChanged(),this.notifyViewStateChanged())}toggleBand(e){let t=typeof e=="string"?[e]:e;this.setBandCollapsed(t,!this.columns.isBandCollapsed(t))}isBandCollapsed(e){return this.columns.isBandCollapsed(typeof e=="string"?[e]:e)}isBandCollapsible(e){return this.columns.isBandCollapsible(typeof e=="string"?[e]:e)}setColumnPinned(e,t){let u=this.columns.getState(e)?.pinned;this.columns.setPinned(e,t);let r=this.columns.getState(e);r&&u!==void 0&&r.pinned!==u&&this.events.emit("columnPinned",{columnId:e,pinned:r.pinned,previous:u}),this.emitColumnStateChanged()}setColumnVisible(e,t){let u=this.columns.getState(e)?.visible;this.columns.setVisible(e,t);let r=this.columns.getState(e);r&&u!==void 0&&r.visible!==u&&this.events.emit("columnVisible",{columnId:e,visible:r.visible}),this.emitColumnStateChanged(),this.recompute()}setColumnHeaderName(e,t){this.requireEnterprise("Renaming columns in the grid","");let u=this.columns,r=this.headerNameOf(e);if(!u.setHeaderName(e,t))return;let n=this.headerNameOf(e);this.events.emit("columnRenamed",{columnId:e,headerName:n,previousHeaderName:r,custom:u.getState(e)?.headerName!==void 0}),this.emitColumnStateChanged()}headerNameOf(e){let t=this.columns.getDef(e);return t?.headerName??t?.field??e}moveColumn(e,t){let u=this.columns.getOrder().indexOf(e);this.columns.moveColumn(e,t);let r=this.columns.getOrder().indexOf(e);u!==-1&&r!==u&&this.events.emit("columnMoved",{columnId:e,fromIndex:u,toIndex:r}),this.emitColumnStateChanged()}applyColumnStates(e){this.columns.applyColumnStates(e),this.emitColumnStateChanged(),this.recompute()}resetColumnState(){this.columns.resetColumnStates(),this.emitColumnStateChanged(),this.recompute()}formulaMemo=null;formulaCompiled=new Map;formulaEvaluating=new Set;formulaRows=null;formulaData(){if(!this.formulaRows||this.formulaRows.epoch!==this.dataEpoch){let e=this.rowModel.mode==="client"?this.rowModel.getSourceRows?.()??[]:[],t=new Map;e.forEach((u,r)=>{let n=String(this.keyGetter(u));t.has(n)||t.set(n,r)}),this.formulaRows={epoch:this.dataEpoch,rows:e,byKey:t}}return this.formulaRows}resolveFormulaCell(e){let{rows:t,byKey:u}=this.formulaData();if(e.kind==="ref"){let n=u.get(e.rowKey);return n===void 0||!this.columns.getDef(e.columnId)?null:{row:n,columnId:e.columnId}}let r=this.columns.getDefinitionOrder().filter(n=>!Be(n))[e.col];return r===void 0||e.row>=t.length?null:{row:e.row,columnId:r}}readCellFormula(e,t,u){let r=this.dataEpoch;(!this.formulaMemo||this.formulaMemo.epoch!==r)&&(this.formulaMemo={epoch:r,values:new WeakMap});let n=this.formulaMemo.values,a=n.get(e)?.get(t);if(a!==void 0)return a;let o=`${String(this.keyGetter(e))}${t}`;if(this.formulaEvaluating.has(o))return ae.of("#CYCLE!");let l=this.formulaCompiled.get(u);if(l===void 0){let s=Io(u,{resolveColumn:h=>this.columns.resolveColumnName(h),allowCells:!0,locale:this.locale});l=s.ok?s.formula:null,this.formulaCompiled.size>5e3&&this.formulaCompiled.clear(),this.formulaCompiled.set(u,l)}let i;if(!l)i=ae.of("#NAME?");else{this.formulaEvaluating.add(o);try{let{rows:s}=this.formulaData(),h=m=>m?this.columns.getCellValue(s[m.row],m.columnId):ae.of("#REF!");i=l.evaluate({column:m=>this.columns.getCellValue(e,m),cell:m=>h(this.resolveFormulaCell(m)),range:(m,c)=>{let f=this.resolveFormulaCell(m),C=this.resolveFormulaCell(c);if(!f||!C)return[ae.of("#REF!")];let A=this.columns.getDefinitionOrder().filter(k=>!Be(k)),S=A.indexOf(f.columnId),F=A.indexOf(C.columnId),x=[];for(let k=Math.min(f.row,C.row);k<=Math.max(f.row,C.row);k++)for(let M=Math.min(S,F);M<=Math.max(S,F);M++)x.push(this.columns.getCellValue(s[k],A[M]));return x}})}finally{this.formulaEvaluating.delete(o)}}if(this.formulaEvaluating.size===0||!(i instanceof ae&&i.code==="#CYCLE!")){let s=n.get(e);s||n.set(e,s=new Map),s.set(t,i)}return i}referenceView(){let e=this.getVisualColumnIds().filter(a=>!Be(a)),t=this.columns.getDefinitionOrder().filter(a=>!Be(a)),u=[];for(let a of this.viewNodes)a?.kind==="data"&&u.push(String(a.key));let r=new Map(u.map((a,o)=>[a,o])),{byKey:n}=this.formulaData();return{columnAt:a=>e[a]??null,columnViewIndex:a=>e.indexOf(a),columnDataIndex:a=>t.indexOf(a),rowKeyAt:a=>u[a]??null,rowViewIndex:a=>r.get(a)??-1,rowDataIndex:a=>n.get(a)??-1}}isFormulaCell(e,t){return this.columns.getDef(e)?.allowFormulas===!0&&typeof t=="string"&&t.trimStart().startsWith("=")}formatCellForEdit(e,t){return this.isFormulaCell(e,t)?Mm(t,this.referenceView()):t}parseCellFromEdit(e,t,u){if(this.isFormulaCell(e,t))return Is(t,this.referenceView());if(u!==void 0&&(t=this.parseCellValue(u,e,t)),this.isFormulaCell(e,t))return Is(t,this.referenceView());let r=this.columns.getDef(e);if(r?.allowFormulas&&r.dataType==="number"&&typeof t=="string"&&t.trim()!==""){let n=Number(t);if(Number.isFinite(n))return n}return t}parseCellValue(e,t,u){if(!this.columns.getDef(t)?.valueParser)return u;let r=this.getRowByKey(e);if(r===void 0)return u;let n=this.columns.getStoredValue(r,t),a=this.pendingReaders?.effectiveValue,o=a?a(e,t,n):n;return this.columns.parseCellValue(r,t,u,o)}valueAfterWrite(e,t,u){if(!this.columns.getDef(t)?.valueSetter)return u;let r=this.getRowByKey(e);return r===void 0?u:this.columns.getStoredValue(r,t)}writeCellValue(e,t,u){let r=this.getRowByKey(e);if(r===void 0)return!1;let n=this.columns.setCellValue(r,t,u);return n&&this.columns.hasCellFormulas()&&this.invalidateCellFormulas(),n}shiftCellFormula(e,t,u,r){return this.isFormulaCell(e,t)?Im(t,u,r,this.referenceView()):t}invalidateCellFormulas(){this.formulaMemo=null}attachExcelFormulas(e){let t=e.columns.map(n=>{let a=this.columns.getDef(n.id);return a?typeof a.formula=="string"&&!a.allowFormulas&&!this.columns.getFormulaError(n.id)?"column":a.allowFormulas?"cell":null:null});if(!t.some(Boolean))return;let u=new Map,r=n=>{if(!u.has(n))try{u.set(n,ni(n))}catch{u.set(n,null)}return u.get(n)};for(let n of e.rows){if(n.kind!=="data"||!n.source)continue;let a=String(n.source.key),o=n.source.row;n.cells.forEach((l,i)=>{let s=t[i];if(!s)return;let h=e.columns[i].id,m=s==="column"?this.columns.getDef(h).formula:this.columns.getStoredValue(o,h);if(typeof m!="string"||s==="cell"&&!m.trimStart().startsWith("=")||l.value instanceof ae&&l.value.code==="#CYCLE!")return;let c=r(m);c&&(l.excelFormula=(f,C)=>Om(c,A=>this.excelLeaf(A,a,f,C),Of))})}}excelLeaf(e,t,u,r){let{rows:n}=this.formulaData(),a=A=>n[A]===void 0?null:String(this.keyGetter(n[A]));if(e.kind==="column"){let A=this.columns.resolveColumnName(e.name),S=A===null?null:u(t,A);return S?vr(S,r):null}if(e.kind==="cell"||e.kind==="ref"){let A=this.resolveFormulaCell(e),S=A?a(A.row):null,F=A&&S!==null?u(S,A.columnId):null;return F?vr(F,r):null}let o=this.resolveFormulaCell(e.from),l=this.resolveFormulaCell(e.to);if(!o||!l)return null;let i=this.columns.getDefinitionOrder().filter(A=>!Be(A)),s=i.indexOf(o.columnId),h=i.indexOf(l.columnId),m=[];for(let A=Math.min(o.row,l.row);A<=Math.max(o.row,l.row);A++){let S=a(A);if(S===null)return null;let F=[];for(let x=Math.min(s,h);x<=Math.max(s,h);x++){let k=u(S,i[x]);if(!k)return null;F.push(k)}m.push(F)}let c=m.flat(),f=c[0],C=c[c.length-1];return c.every(A=>A.sheet===f.sheet)&&m.every((A,S)=>A.every((F,x)=>F.row===f.row+S&&F.column===f.column+x))?`${vr(f,r)}:${vr({...C,sheet:r.sheet},r)}`:c.map(A=>vr(A,r)).join(",")}getCellFormula(e,t){let u=this.sourceRowByKey(e);if(!u)return null;let r=this.columns.getStoredValue(u,t);return this.isFormulaCell(t,r)?r:null}calculatedColumns=[];getFormulaError(e){return this.columns.getFormulaError(e)}getCalculatedColumns(){return this.calculatedColumns.map(e=>({...e}))}previewFormula(e,t=5){let u=Io(e,{resolveColumn:a=>this.columns.resolveColumnName(a),locale:this.locale});if(!u.ok)return u;let r=[];for(let a of this.viewNodes){if(r.length>=t)break;if(!a||a.kind!=="data")continue;let o=a.data;r.push(u.formula.evaluate({column:l=>this.columns.getCellValue(o,l)}))}let n=Rr(u.formula.tree,a=>{let o=this.columns.resolveColumnName(a);return o===null?void 0:this.columns.getDataType(o)});return{ok:!0,values:r,dataType:n}}addCalculatedColumn(e){this.requireEnterprise("Adding calculated columns at runtime"," (a `formula` in the column definitions is Community)");let t=new Set(this.columns.getOrder()),u=e.id??`calc_${e.headerName.toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_|_$/g,"")||"column"}`,r=u;for(let n=2;t.has(r);n++)r=`${u}_${n}`;if(this.calculatedColumns=[...this.calculatedColumns,{id:r,headerName:e.headerName,formula:e.formula,...e.dataType?{dataType:e.dataType}:{}}],this.rebuildCalculated(),e.after&&t.has(e.after)){let n=this.columns.getOrder(),a=n[n.indexOf(e.after)+1];a!==void 0&&a!==r&&this.columns.moveColumn(r,a),this.emitColumnStateChanged()}return r}updateCalculatedColumn(e,t){this.requireEnterprise("Editing calculated columns at runtime",""),this.calculatedColumns.some(u=>u.id===e)&&(this.calculatedColumns=this.calculatedColumns.map(u=>u.id===e?{...u,...t,id:e}:u),this.rebuildCalculated())}removeCalculatedColumn(e){if(this.requireEnterprise("Removing calculated columns at runtime",""),!this.calculatedColumns.some(n=>n.id===e))return;this.calculatedColumns=this.calculatedColumns.filter(n=>n.id!==e);let{sort:t,groupBy:u,columnFilters:r}=this.store.getState();t.some(n=>n.columnId===e)&&this.setSort(t.filter(n=>n.columnId!==e)),u.includes(e)&&this.groupBy(u.filter(n=>n!==e)),r[e]&&this.setColumnFilter(e,null),this.rebuildCalculated()}rebuildCalculated(){this.columns.setColumns(this.withGroupColumn(this.authorColumns,this.store.getState().groupBy)),this.bumpDataEpoch(),this.emitColumnStateChanged(),this.notifyViewStateChanged(),this.recompute()}setColumns(e){this.authorColumns=e,this.columns.setColumns(this.withGroupColumn(e,this.store.getState().groupBy)),this.warnShadowedFilterOperators(),this.bumpDataEpoch(),this.emitColumnStateChanged(),this.recompute()}getGroupLevels(){return this.store.getState().groupBy}getGroupDisplay(){return this.groupDisplay}withGroupColumn(e,t){let u=this.calculatedColumns.length===0?e:[...e,...this.calculatedColumns.map(a=>({id:a.id,headerName:a.headerName,formula:a.formula,...a.dataType?{dataType:a.dataType}:{}}))];if(this.groupDisplay!=="column")return u;let r=this.groupColumnConfig,n=r.headerName??t.map(a=>u.find((o,l)=>(o.id??o.field??String(l))===a)?.headerName??a).join(" \u203A ");return[...u,{id:Lu,headerName:n,width:r.width??200,minWidth:r.minWidth??80,pin:"left",sortable:!0,filterable:!1,groupable:!1,reorderable:!1,editable:!1,resizable:!0}]}refreshGroupColumn(){this.groupDisplay==="column"&&this.columns.setColumns(this.withGroupColumn(this.authorColumns,this.store.getState().groupBy))}getGroupSummaries(){return this.groupSummaries}setGroupSummaries(e){this.groupSummaries!==e&&(this.groupSummaries=e,this.groupTree=null,this.groupTreeSignature=null,this.reproject(),this.notifyViewStateChanged())}getGroupBy(){return this.store.getState().groupBy[0]??null}groupBy(e){let t=e==null?[]:typeof e=="string"?[e]:[...e];if(t.length>0&&!this.canGroup()){this.debugMode&&console.warn("[datagrid] grouping a server-side DataSource is an Enterprise feature (the server groups) \u2014 import EnterpriseDataGrid / createEnterpriseGrid to use it.");return}for(let r of t)if(!this.assertColumn(r))return;let u=this.store.getState().groupBy;t.length===u.length&&t.every((r,n)=>r===u[n])||(this.remote()?.setGrouping(t.map(r=>({columnId:r})),t),this.store.setGroupBy(t),this.refreshGroupColumn(),this.emitColumnStateChanged(),this.resetReveal(),this.events.emit("groupChanged",{groupBy:t[0]??null,levels:t}))}remote(){return this.rowModel instanceof Fs?this.rowModel:null}clearGrouping(){this.groupBy(null)}isGroupCollapsed(e){return this.store.isGroupCollapsed(e)}toggleGroup(e){let t=this.remote();if(t?.isGrouped()){t.toggleGroupPath(e)&&(this.recompute(),this.notifyViewStateChanged());return}this.store.toggleGroup(e)}expandAllGroups(){let e=this.remote();if(e?.isGrouped()){e.expandAllPaths(),this.recompute(),this.notifyViewStateChanged();return}this.store.setCollapsedGroups([])}collapseAllGroups(){let e=this.remote();if(e?.isGrouped()){e.setExpandedPaths([]),this.recompute(),this.notifyViewStateChanged();return}let t=this.store.getState().groupBy;t.length!==0&&this.store.setCollapsedGroups(E4(this.ensureGroupTree(t)))}setEditFormRow(e,t={}){let u=e===null?null:{rowKey:e,height:Math.max(1,t.height??260),atTop:t.atTop??!1},r=this.editForm;if(!(r?.rowKey===u?.rowKey&&r?.height===u?.height&&r?.atTop===u?.atTop)&&(this.editForm=u,this.reproject(),u?.atTop)){let n=this.ensureVisible(0);n&&this.events.emit("scrollRequested",n)}}setMessageRows(e,t){let u=new Set(e.map(a=>String(a))),r=Math.max(1,t),n=this.messageRows;u.size===0&&n===null||n!==null&&n.height===r&&n.keys.size===u.size&&[...u].every(a=>n.keys.has(a))||(this.messageRows=u.size===0?null:{keys:u,height:r},this.reproject())}getEditFormRow(){return this.editForm?.rowKey??null}getEditFormHeight(){return this.editForm?.height??0}isDebugMode(){return this.debugMode}hasTreePathRows(){return!!this.treeData?.getDataPath}hasMasterDetail(){return this.masterDetail!==null}getDetailHeight(){return this.masterDetail?.height??0}isDetailExpanded(e){let t=this.store.isDetailExpanded(e);return this.masterDetail?.expandedByDefault?!t:t}toggleDetail(e){this.masterDetail&&(this.store.toggleDetail(e),this.events.emit("detailToggled",{rowKey:e,expanded:this.isDetailExpanded(e)}))}collapseAllDetails(){this.masterDetail&&(this.masterDetail.expandedByDefault?this.store.setExpandedDetails(this.dataKeys()):this.store.setExpandedDetails([]),this.events.emit("detailToggled",{rowKey:null,expanded:!1}))}expandAllDetails(){this.masterDetail&&(this.masterDetail.expandedByDefault?this.store.setExpandedDetails([]):this.store.setExpandedDetails(this.dataKeys()),this.events.emit("detailToggled",{rowKey:null,expanded:!0}))}getDataRowCount(){return this.lastResult.visibleCount}getSummaries(){return this.summaryValues}getSummaryDefs(){return this.summaryDefs}setSummaryDefs(e){this.summaryDefs=e,this.groupTree=null,this.groupTreeSignature=null,this.summaryBasis=null,this.recompute(),this.notifyViewStateChanged()}getColumnSummary(e){return this.summaryDefs.find(t=>t.columnId===e)??null}setColumnSummary(e,t){let u=this.summaryDefs.filter(r=>r.columnId!==e);if(this.summaryDefs=t===null?u:[...u,{columnId:e,type:t}],this.notifyViewStateChanged(),this.groupSummaries&&this.store.getState().groupBy.length>0){this.recompute();return}if(this.remote()){this.recompute();return}this.recomputeSummaries(),this.emitColumnStateChanged()}setPendingValueReader(e){this.pendingReaders=e??void 0,this.recomputeSummaries(),this.emitColumnStateChanged()}refreshSummaries(){if(this.summaryDefs.length!==0){if(this.recomputeSummaries(),this.refreshGroupAggregates()){this.projectView();return}this.events.emit("contentReady",{rows:this.lastResult.nodes,totalCount:this.lastResult.totalCount,visibleCount:this.lastResult.visibleCount})}}currentSummaryBasis(e,t){let u=t?this.columns.runtime().map(r=>r.state.id).join(","):"";return[this.dataEpoch,t,u,JSON.stringify(e)].join(In)}async computeChartData(e,t={}){let u=t.source??e.source??"view",r=!!this.pendingReaders&&(this.pendingReaders.hasPending?.()??!0),n=r?this.pendingReaders:void 0;if(u==="selection"){let i=this.getSelectedKeys();if(i.length>0){let s=[];for(let h of i){let m=this.getDataRowNode(h);m&&s.push(m)}if(oo(e)){let h=new Map(this.dataNodes().map((m,c)=>[m.key,c]));s.sort((m,c)=>(h.get(m.key)??0)-(h.get(c.key)??0))}return br(s,this.columns,e,n)}}if(u==="range"&&e.rowRange)return br(this.chartRangeNodes(e.rowRange),this.columns,e,n);let a=u!=="all"&&this.chartExcludesFilter(e.excludeFilter),o=this.rowModel instanceof Tn?this.rowModel:null,l=u!=="all"&&this.externalFilter!==null;if(o?.usesWorker()&&T0(e)&&!r&&!l){let{searchText:i}=this.store.getState(),s=await o.aggregate(this.columns,{sort:oo(e)&&u!=="all"?this.store.getState().sort:[],filter:u==="all"?null:a?this.columnFiltersOnly():this.runningFilter(),searchText:u==="all"?"":i},e);if(s)return s}if(u==="all"){let i=this.rowModel.getSourceRows?.()??[],s=new Array(i.length);for(let h=0;h<i.length;h++)s[h]=Xe(i[h],this.keyGetter(i[h]),h);return br(s,this.columns,e,n)}return a?br(this.viewRowsWithoutFilter(oo(e)),this.columns,e,n):br(this.dataNodes(),this.columns,e,n)}chartExcludesFilter(e){return e===!0&&this.store.getState().filter!==null}columnFiltersOnly(){return this.isFilterEnabled()?zn(uo(...Object.values(this.store.getState().columnFilters))):null}viewRowsWithoutFilter(e){let t=this.rowModel.getSourceRows?.();if(!t)return this.dataNodes();let u=new Uint32Array(t.length);for(let l=0;l<t.length;l++)u[l]=l;let{searchText:r,sort:n}=this.store.getState(),a=E0(u,t,this.columns,this.columnFiltersOnly(),r,this.externalFilter);e&&(a=id(a,t,this.columns,n,{locale:this.locale}));let o=new Array(a.length);for(let l=0;l<a.length;l++){let i=a[l];o[l]=Xe(t[i],this.keyGetter(t[i]),i)}return o}async computeChartBoxData(e){return Dh(this.chartSourceNodes(e.source,e.rowRange,e.excludeFilter),this.columns,e)}chartRangeNodes(e){let t=this.getRows(),u=Math.max(0,Math.min(e.start,e.end)),r=Math.min(t.length-1,Math.max(e.start,e.end)),n=[];for(let a=u;a<=r;a++){let o=t[a];o&&o.kind==="data"&&n.push(o)}return n}chartSourceNodes(e,t,u){if(e==="range"&&t)return this.chartRangeNodes(t);if(e==="selection"){let r=this.getSelectedKeys();if(r.length>0){let n=[];for(let a of r){let o=this.getDataRowNode(a);o&&n.push(o)}return n}}if(e==="all"){let r=this.rowModel.getSourceRows?.()??[],n=new Array(r.length);for(let a=0;a<r.length;a++)n[a]=Xe(r[a],this.keyGetter(r[a]),a);return n}return this.chartExcludesFilter(u)?this.viewRowsWithoutFilter(!1):this.dataNodes()}async computeChartXYData(e){let t=e.source??"view";if(t==="range"&&e.rowRange)return Dn(this.chartRangeNodes(e.rowRange),this.columns,e);if(t==="selection"){let u=this.getSelectedKeys();if(u.length>0){let r=[];for(let n of u){let a=this.getDataRowNode(n);a&&r.push(a)}return Dn(r,this.columns,e)}}if(t==="all"){let u=this.rowModel.getSourceRows?.()??[],r=new Array(u.length);for(let n=0;n<u.length;n++)r[n]=Xe(u[n],this.keyGetter(u[n]),n);return Dn(r,this.columns,e)}return Dn(this.dataNodes(),this.columns,e)}chartBasis(e="view",t=!1){if(e==="all")return String(this.dataEpoch);if(t&&e!=="range")return[this.chartBasis(e),JSON.stringify(this.store.getState().sort)].join(In);if(e==="range"){let{sort:r,groupBy:n,collapsedGroups:a,page:o}=this.store.getState();return[this.chartBasis("view"),JSON.stringify(r),JSON.stringify(n),JSON.stringify(a),String(o)].join(In)}let{searchText:u}=this.store.getState();return[this.currentSummaryBasis(this.runningFilter(),u),this.lastResult.visibleCount].join(In)}runSummaryPass(e,t,u,r,n){let a=++this.summaryPassSeq;if(e.length<=1e5){this.busyDepth>0&&this.setBusy("aggregating",null);let m=p4(e,this.columns,t,this.pendingReaders);this.summaryValues=u?{...this.summaryValues,...m}:m,r!==null&&(this.summaryBasis=r);return}let o=f4(this.columns,t,this.pendingReaders),l=1e5,i=e.length,s=0,h=()=>{if(this.disposed||a!==this.summaryPassSeq||n!==this.computeToken)return;let m=Math.min(i,s+l);if(o.add(e,s,m),s=m,s<i){this.setBusy("aggregating",s/i),Ko(h);return}let c=o.finish();this.summaryValues=u?{...this.summaryValues,...c}:c,r!==null&&(this.summaryBasis=r),this.busyDepth===0&&this.setBusy(null,null),this.events.emit("summariesChanged",{values:this.summaryValues})};Ko(h)}recomputeSummaries(){this.summaryBasis=null;let e=this.remote();if(e){this.summaryValues=this.summaryDefs.length>0?e.getSummaries():{};return}this.summaryDefs.length>0&&this.rowModel.mode==="client"?this.runSummaryPass(this.lastResult.nodes,this.summaryDefs,!1,null,this.computeToken):this.summaryValues={}}refreshGroupAggregates(){let e=this.groupTree;if(!e||!this.groupSummaries||this.rowModel.mode!=="client")return!1;let t=this.pendingReaders&&(this.pendingReaders.hasPending?.()??!0)?this.pendingReaders:void 0,u=!1,r=n=>{for(let a of n)a.aggregates&&(a.aggregates=Qo(e.nodes,a.from,a.to,this.columns,this.summaryDefs,t),u=!0),a.children&&r(a.children)};return r(e.roots),u}isInfiniteScroll(){return this.infiniteScroll}getRevealedCount(){return this.infiniteScroll?this.viewNodes.length:this.allViewNodes.length}hasMoreRows(){return this.infiniteScroll&&this.viewNodes.length<this.allViewNodes.length}revealMore(){if(!this.infiniteScroll||!this.hasMoreRows())return!1;this.infiniteLimit=Math.min(this.allViewNodes.length,this.infiniteLimit+this.infinitePageSize),this.viewNodes=this.allViewNodes.slice(0,this.infiniteLimit),this.rowIndexCache=null;let e=this.virtual.setRowCount(this.viewNodes.length);return this.events.emit("contentReady",{rows:this.lastResult.nodes,totalCount:this.lastResult.totalCount,visibleCount:this.lastResult.visibleCount}),e&&!this.disposed&&this.events.emit("viewportChanged",{window:this.virtual.getWindow()}),!0}resetReveal(){this.infiniteScroll&&(this.infiniteLimit=this.infinitePageSize)}isPaginated(){return this.paginationEnabled}setPaginationEnabled(e){e!==this.paginationEnabled&&(this.paginationEnabled=e,this.store.resetPage(),this.recompute())}getPage(){return this.store.getState().page}getPageSize(){return this.store.getState().pageSize}getPageCount(){return this.paginationEnabled?Math.max(1,Math.ceil(this.allViewNodes.length/this.store.getState().pageSize)):1}setPage(e){this.store.setPage(Math.min(Math.max(0,e),this.getPageCount()-1))}setPageSize(e){this.store.setPageSize(e)}nextPage(){this.setPage(this.getPage()+1)}previousPage(){this.setPage(this.getPage()-1)}emitPaginationChanged(e){if(!this.paginationEnabled)return;let t=this.store.getState(),u=this.getPageCount();this.lastPagination&&this.lastPagination.page===t.page&&this.lastPagination.pageSize===t.pageSize&&this.lastPagination.pageCount===u||(this.lastPagination={page:t.page,pageSize:t.pageSize,pageCount:u},this.events.emit("paginationChanged",{page:t.page,pageSize:t.pageSize,pageCount:u,fromResultChange:e}))}buildExportModel(e={}){return this.buildExportModelFrom(this.allViewNodes,e)}buildExportModelFrom(e,t={}){return $m({nodes:e,columns:this.columns,options:{columnIds:this.layoutRuntime({includeScreenHidden:!0}).map(u=>u.state.id),...t},isSelected:u=>this.selection.isSelected(u),selectionCount:this.getSelectedCount(),summaries:this.summaryDefs.length>0?{defs:this.summaryDefs,values:this.summaryValues}:void 0})}async exportRows(){let e=this.remote();if(!e)return this.allViewNodes;if(!this.canExportAll())throw new Error("[datagrid] exporting from a server-side DataSource is an Enterprise feature: the file has to page through every row the server has. Build the file on the server, or import EnterpriseDataGrid / createEnterpriseGrid.");let t=++this.exportToken,{sort:u,searchText:r,groupBy:n}=this.store.getState(),a=await e.loadAllRows({sort:xn(u,n),filter:this.runningFilter(),searchText:r},{maxRows:this.exportMaxRows,pageSize:this.exportPageSize,isCancelled:()=>t!==this.exportToken||this.disposed,onProgress:(o,l)=>this.setBusy("exporting",l>0?Math.round(o/l*100):null)});return this.setBusy("exporting",null),a}setExportDefaults(e,t){if(typeof e!="string"){this.exportDefaults.excel={...e};return}this.exportDefaults[e]={...t??{}}}setEnterpriseEdition(e){this.enterpriseEdition=e,this.editionDeclared=!0,!e&&this.remote()&&this.store.getState().groupBy.length>0&&this.groupBy(null)}isEnterpriseEdition(){return this.enterpriseEdition}enterpriseEdition=!1;editionDeclared=!1;communityOnServer(){return this.editionDeclared&&!this.enterpriseEdition&&this.remote()!==null}onViewport(){return this.rowModel instanceof qs}canGroup(){return!this.communityOnServer()&&!this.onViewport()}canExportAll(){return!this.communityOnServer()&&!this.onViewport()}requireEnterprise(e,t=" (CSV export is available in Community)"){if(!this.enterpriseEdition)throw new Error(`[datagrid] ${e} is an Enterprise feature. Import EnterpriseDataGrid from @kanunilabs/datagrid-react-enterprise${t}.`)}async withExportSignal(e,t){if(e.signal)return this.withBusy("exporting",()=>t(e));let u=new AbortController;this.exportAbort=u;try{return await this.withBusy("exporting",()=>t({...e,signal:u.signal}))}finally{this.exportAbort===u&&(this.exportAbort=null)}}async*exportRowChunks(e,t,u){let r=this.remote();if(!r){let l=this.allViewNodes;for(let i=0;i<l.length;i+=5e3){if(e.aborted)throw new et;yield l.slice(i,i+5e3);let s=Math.min(l.length,i+5e3)/l.length;this.setBusy("exporting",Math.round(s*100)),u?.(s),await new Promise(h=>setTimeout(h,0))}return}if(!this.canExportAll())throw new Error("[datagrid] exporting from a server-side DataSource is an Enterprise feature: the file has to page through every row the server has. Build the file on the server, or import EnterpriseDataGrid / createEnterpriseGrid.");let{sort:n,searchText:a,groupBy:o}=this.store.getState();yield*r.streamRows({sort:xn(n,o),filter:this.runningFilter(),searchText:a},{maxRows:this.exportMaxRows,pageSize:this.exportPageSize,columnIds:t,signal:e,onProgress:(l,i)=>{this.setBusy("exporting",i?Math.round(l/i*100):null),i&&u?.(l/i)}})}async streamExport(e,t,u){let r=e.signal??new AbortController().signal,n={...e,details:void 0},a=this.buildExportModelFrom([],n).columns,o=a.map(A=>A.id),l=this.exportRowChunks(r,o,e.onProgress),i=this.buildExportModelFrom.bind(this),s=(async function*(){for await(let A of l)yield i(A,{...n,columnIds:o}).rows})(),h=[],m=e.writable?.getWriter(),c={write:A=>m?m.write(A):void h.push(A)},f;try{if(f=await u(c,a,s),r.aborted)throw new et;e.onProgress?.(1),m&&await m.close()}catch(A){throw m&&await m.abort(A).catch(()=>{}),A}let C=t==="csv"?"text/csv;charset=utf-8;":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";return{blob:new Blob(m?[]:h,{type:C}),fileName:Mn(e.fileName??this.gridId,t),rowCount:f}}async exportToCsv(e={}){let t={delimiter:Qm(this.locale),...this.exportDefaults.csv,...e};return this.withExportSignal(t,async u=>{if(u.stream)return this.streamExport(u,"csv",(n,a,o)=>Jm(n,a,o,u));let r=this.buildExportModelFrom(await this.exportRows(),u);return{blob:await Zm(r,u),fileName:Mn(u.fileName??this.gridId,"csv"),rowCount:r.rows.length}})}async exportModelWithDetails(e,t){let u=t.details??this.masterDetailExport??void 0,r=this.buildExportModelFrom(e,u?{...t,details:u}:t);if(!u)return r;let n=u.rows??"open",a=[];r.rows.forEach((i,s)=>{i.kind!=="data"||!i.source||(n==="all"||this.isDetailExpanded(i.source.key))&&a.push(s)});let o=new Map,l=8;for(let i=0;i<a.length;i+=l){if(t.signal?.aborted)throw new et;let s=a.slice(i,i+l);(await Promise.all(s.map(h=>{let m=r.rows[h].source;return u.get(m.row,m.key)}))).forEach((h,m)=>{h&&o.set(s[m],h)})}if(t.signal?.aborted)throw new et;return qm(r,o,this.locale)}async exportToExcel(e={}){this.requireEnterprise("Excel export");let t={sheetName:this.text.exportSheetName,...this.exportDefaults.excel,...e};return this.withExportSignal(t,async u=>{if(u.stream)return this.streamExport(u,"xlsx",(n,a,o)=>Ff(n,a,o,{sheetName:u.sheetName,maxRowsPerSheet:u.maxRowsPerSheet,includeHeaders:u.includeHeaders,freezeHeader:u.freezeHeader,autoFilter:u.autoFilter,raw:u.raw,signal:u.signal}));let r=await this.exportModelWithDetails(await this.exportRows(),u);return u.formulas!==!1&&this.attachExcelFormulas(r),{blob:await dp(r,{...u,onProgress:n=>{u.onProgress?.(n),n>=1&&this.setBusy("exporting",null,!1)}}),fileName:Mn(u.fileName??this.gridId,"xlsx"),rowCount:r.rows.filter(Ps).length}})}async exportToPdf(e={}){this.requireEnterprise("PDF export");let t={...this.exportDefaults.pdf,...e};return this.withExportSignal(t,async u=>{let r=await this.exportModelWithDetails(await this.exportRows(),u);return this.setBusy("exporting",null,!1),{blob:await Sp(r,u),fileName:Mn(u.fileName??this.gridId,"pdf"),rowCount:r.rows.filter(Ps).length}})}getViewState(e={}){let t=this.store.getState(),u=new Set(e.include??[]),r=this.remote();return{version:1,columns:this.columns.getColumnStates(),sort:t.sort,filter:t.filter,columnFilters:t.columnFilters,columnFilterParts:t.columnFilterParts,filterEnabled:t.filterEnabled,searchText:t.searchText,groupBy:t.groupBy,collapsedGroups:t.collapsedGroups,page:t.page,pageSize:t.pageSize,...this.treeData?{tree:{expandedByDefault:this.treeExpandedByDefault,toggled:[...this.treeToggled]}}:{},summaries:this.summaryDefs.filter(n=>n.type!=="custom").map(({columnId:n,type:a})=>({columnId:n,type:a})),groupSummaries:this.groupSummaries,collapsedBands:this.columns.getCollapsedBands().map(n=>n.split("\0")),...r?.isGrouped()?{remoteGroups:r.getExpansion()}:{},...this.calculatedColumns.length>0?{calculatedColumns:this.getCalculatedColumns()}:{},...this.pinned.top.length+this.pinned.bottom.length>0?{pinnedRows:this.getPinnedRowKeys()}:{},...u.has("selection")?{selection:this.selection.getSelectionDescriptor()}:{},...u.has("focus")?{focusedCell:this.getFocus()}:{},...u.has("scroll")?{scroll:{top:Math.max(0,this.lastScrollTop),left:Math.max(0,this.lastScrollLeft)}}:{},...u.has("details")?{details:[...t.expandedDetails]}:{},...this.viewStateParts.size>0||Object.keys(this.pendingViewStateParts).length>0?{parts:this.collectViewStateParts(u)}:{}}}collectViewStateParts(e){let t={};for(let[u,r]of this.viewStateParts)if(!(r.session&&!e.has(u)))try{t[u]=r.get()}catch{}for(let[u,r]of Object.entries(this.pendingViewStateParts))u in t||(t[u]=r);return t}registerViewStatePart(e,t){if(this.viewStateParts.set(e,t),e in this.pendingViewStateParts){let u=this.pendingViewStateParts[e];delete this.pendingViewStateParts[e];try{t.apply(u)}catch{}}return()=>{if(this.viewStateParts.get(e)===t&&(this.viewStateParts.delete(e),!t.session))try{this.pendingViewStateParts[e]=t.get()}catch{}}}getAiSchema(e={}){return this.requireEnterprise("The AI state schema",""),Nh(this.aiContext(e))}getAiState(e={}){this.requireEnterprise("The AI state schema","");let t=this.aiContext(e),u=this.store.getState(),r={},{features:n}=t;return n.has("filter")&&(r.filter=this.store.effectiveFilter()),n.has("sort")&&(r.sort=u.sort.map(a=>({...a}))),n.has("grouping")&&(r.groupBy=[...u.groupBy]),(n.has("columnVisibility")||n.has("columnSizing")||n.has("columnPinning"))&&(r.columns=t.columns.map(a=>{let o=this.columns.getState(a.id);return{columnId:a.id,...n.has("columnVisibility")?{visible:o.visible}:{},...n.has("columnSizing")?{width:o.width}:{},...n.has("columnPinning")?{pinned:o.pinned==="left"||o.pinned==="right"?o.pinned:null}:{}}})),n.has("search")&&(r.searchText=u.searchText),r}applyAiState(e,t={}){this.requireEnterprise("The AI state schema","");let u=this.aiContext(t),{state:r,dropped:n}=Ih(e,u),a=[],o=this.getViewState(),l=!1;if(r.filter!==void 0){let i=r.filter===null?[]:"nodes"in r.filter&&r.filter.logic==="and"?r.filter.nodes:[r.filter],s=new Map,h=[];for(let m of i){let c=P0(m);if(c.size===1){let[f]=c;s.set(f,[...s.get(f)??[],m])}else h.push(m)}o.filter=uo(...h),o.columnFilters={},o.columnFilterParts={};for(let[m,c]of s){let f=uo(...c);o.columnFilters[m]=f,o.columnFilterParts[m]={[cu]:f}}o.filterEnabled=!0,a.push("filter"),l=!0}if(r.sort!==void 0&&(o.sort=r.sort,a.push("sort")),r.groupBy!==void 0&&(o.groupBy=r.groupBy,o.collapsedGroups=[],a.push("grouping"),l=!0),r.columns!==void 0&&r.columns.length>0){let i=new Map(r.columns.map(m=>[m.columnId,m])),s=o.columns.map(m=>{let c=i.get(m.id);return c?{...m,...c.visible!==void 0?{visible:c.visible}:{},...typeof c.width=="number"?{width:c.width}:{},...c.pinned!==void 0?{pinned:c.pinned}:{}}:m});s.some(m=>m.visible&&!Be(m.id))?o.columns=s:(n.push("columns: the answer would hide every column"),o.columns=s.map((m,c)=>({...m,visible:o.columns[c].visible})));let h=m=>r.columns.some(c=>c[m]!==void 0);h("visible")&&a.push("columnVisibility"),r.columns.some(m=>typeof m.width=="number")&&a.push("columnSizing"),h("pinned")&&a.push("columnPinning")}return r.searchText!==void 0&&(o.searchText=r.searchText,a.push("search"),l=!0),l&&(o.page=0),a.length>0&&(this.applyViewState(o),r.sort!==void 0&&this.emitSortChanged()),n.length>0&&this.debugMode&&console.warn(`[datagrid] applyAiState left out: ${n.join("; ")}`),{applied:a,dropped:n}}aiContext(e){let t=new Set(e.exclude??[]),u=new Set(Sh.filter(a=>!t.has(a)));this.treeData&&u.delete("grouping");let r=Math.max(1,e.maxValues??100),n=[];for(let a of this.columns.getOrder()){if(Be(a))continue;let o=this.columns.getDef(a),l=e.columns?.[a];if(!o||l?.exclude)continue;let i=o.dataType??(o.lookup?"lookup":"string"),s,h=l?.description,m=jo(o);if(m&&l?.includeValues!==!1)s=m.filter(f=>["string","number","boolean"].includes(typeof f.value)).slice(0,r).map(f=>({value:f.value,label:f.label}));else if(l?.includeValues&&i!=="date"){let f=this.getDistinctValueSet(a,r);s=f.entries.filter(C=>["string","number","boolean"].includes(typeof C.value)).map(C=>({value:C.value,label:C.label})),f.truncated&&(h=`${h?`${h}. `:""}Only some of its values are listed`)}let c=Jn(o).map(f=>({id:f.id,label:f.label,operandType:f.operandType??"text"}));n.push({id:a,header:o.headerName??o.field??a,dataType:i,sortable:o.sortable!==!1,filterable:o.filterable!==!1,groupable:o.groupable!==!1,resizable:o.resizable!==!1,...h?{description:h}:{},...s?{values:s}:{},...c.length>0?{operators:c}:{}})}return{columns:n,features:u}}applyViewState(e){if(e.version!==1){this.debugMode&&console.error("[datagrid] unsupported view state version",e.version);return}Array.isArray(e.calculatedColumns)&&(this.enterpriseEdition||!this.editionDeclared)&&(this.calculatedColumns=e.calculatedColumns.filter(o=>o&&typeof o.id=="string"&&typeof o.formula=="string").map(o=>({id:o.id,headerName:String(o.headerName??o.id),formula:o.formula,...o.dataType?{dataType:o.dataType}:{}})),this.columns.setColumns(this.withGroupColumn(this.authorColumns,this.store.getState().groupBy)),this.bumpDataEpoch()),this.columns.applyColumnStates(e.columns??[]),Array.isArray(e.collapsedBands)&&this.columns.setCollapsedBands(e.collapsedBands.filter(o=>Array.isArray(o)).map(o=>Ju(o.map(String))));let t=new Set(this.columns.getOrder()),u=[],r=o=>t.has(o)?!0:(u.push(o),!1),n=this.canGroup()?If(e.groupBy).filter(r):[];this.remote()?.setGrouping(n.map(o=>({columnId:o})),n);let a=e.remoteGroups;if(a&&typeof a.expandedByDefault=="boolean"&&this.remote()?.setExpansion(a.expandedByDefault,Array.isArray(a.toggled)?a.toggled.map(String):[]),Array.isArray(e.summaries)){let o=new Set(["sum","avg","min","max","count","countDistinct"]),l=this.summaryDefs.filter(s=>s.type==="custom"),i=e.summaries.filter(s=>s&&o.has(s.type)&&r(s.columnId)).map(s=>this.summaryDefs.find(h=>h.columnId===s.columnId&&h.type===s.type)??{columnId:s.columnId,type:s.type});this.summaryDefs=[...l,...i],this.groupTree=null,this.groupTreeSignature=null,this.summaryBasis=null}typeof e.groupSummaries=="boolean"&&e.groupSummaries!==this.groupSummaries&&(this.groupSummaries=e.groupSummaries,this.groupTree=null,this.groupTreeSignature=null),this.store.applyState({sort:(e.sort??[]).filter(o=>r(o.columnId)),filter:_o(e.filter??null,r),columnFilters:Object.fromEntries(Object.entries(e.columnFilters??{}).filter(([o])=>r(o))),columnFilterParts:Object.fromEntries(Object.entries(e.columnFilterParts??Object.fromEntries(Object.entries(e.columnFilters??{}).map(([o,l])=>[o,{[cu]:l}]))).filter(([o])=>r(o))),filterEnabled:e.filterEnabled??!0,searchText:e.searchText??"",groupBy:n,collapsedGroups:e.collapsedGroups??[],expandedDetails:Array.isArray(e.details)?e.details.filter(Ln):[],page:e.page??0,pageSize:e.pageSize??this.store.getState().pageSize}),u.length>0&&this.debugMode&&console.warn(`[datagrid] saved view referenced unknown column(s): ${[...new Set(u)].join(", ")} \u2014 dropped.`),this.warnUnknownFilterOperators(this.store.effectiveFilter(),"saved view"),this.emitColumnStateChanged(),this.emitFilterChanged(),this.treeData&&e.tree&&typeof e.tree.expandedByDefault=="boolean"&&(this.treeExpandedByDefault=e.tree.expandedByDefault,this.treeToggled=new Set(Array.isArray(e.tree.toggled)?e.tree.toggled:[])),this.restoreSession(e),this.recompute();for(let[o,l]of Object.entries(e.parts??{})){let i=this.viewStateParts.get(o);if(!i){this.pendingViewStateParts[o]=l;continue}try{i.apply(l)}catch{}}}restoreSession(e){let t=e.selection;if(t&&Array.isArray(t.keys)){let u=this.selection.clear();if(t.allMatching)u=this.selection.selectAllMatching()||u,u=this.selection.setMany(t.keys,!1)||u;else{let r=this.rowModel.mode==="client"?this.rowModel.getSourceRows?.():void 0,n=t.keys;if(r&&r.length>0){let a=new Set(r.map(o=>this.keyGetter(o)));n=n.filter(o=>a.has(o))}u=this.selection.setSelectedKeys(n)||u}u&&this.emitSelectionChanged()}if(e.focusedCell===null?this.clearFocus():e.focusedCell&&typeof e.focusedCell.columnId=="string"&&(this.pendingFocus={rowKey:e.focusedCell.rowKey,columnId:e.focusedCell.columnId}),e.scroll&&Number.isFinite(e.scroll.top)&&Number.isFinite(e.scroll.left)&&(this.pendingScroll={top:Math.max(0,e.scroll.top),left:Math.max(0,e.scroll.left)}),e.pinnedRows&&Array.isArray(e.pinnedRows.top)&&Array.isArray(e.pinnedRows.bottom)){let u=n=>n.filter(Ln),r=u(e.pinnedRows.top);this.pinned={top:r,bottom:u(e.pinnedRows.bottom).filter(n=>!r.includes(n))},this.prunePinnedRows()||this.emitRowPinningChanged()}}setFindText(e){this.requireEnterprise("Find","");let t=Le(e.trim());if(t===""){this.clearFind();return}let u=this.findState?.matches[this.findState.active]??this.getFocus();this.findState={text:e,needle:t,matches:[],active:-1,index:new Map},this.recomputeFind(u),this.revealFindMatch(),this.emitFindChanged()}findNext(){this.stepFind(1)}findPrevious(){this.stepFind(-1)}clearFind(){this.findState&&(this.findState=null,this.emitFindChanged())}focusFindMatch(){let e=this.findState,t=e?.matches[e.active];t&&this.focusCell(t.rowKey,t.columnId)}getFindState(){let e=this.findState;return e?{text:e.text,count:e.matches.length,activeIndex:e.active,active:e.matches[e.active]??null}:{text:"",count:0,activeIndex:-1,active:null}}getFindNeedle(){return this.findState?.needle??""}getFindMatchKind(e,t){let u=this.findState;if(!u||!u.index.get(e)?.has(t))return null;let r=u.matches[u.active];return r&&r.rowKey===e&&r.columnId===t?"active":"match"}stepFind(e){let t=this.findState;!t||t.matches.length===0||(t.active=(t.active+e+t.matches.length)%t.matches.length,this.revealFindMatch(),this.emitFindChanged())}revealFindMatch(){let e=this.findState,t=e?.matches[e.active];t&&this.scrollToCell(t.rowKey,t.columnId)}recomputeFind(e){let t=this.findState;if(!t)return;let u=this.getVisualColumnIds().filter(i=>!Be(i)),r=this.getRows().filter(i=>i!==void 0&&i.kind==="data");t.matches=hh(r,u.map(i=>({id:i,def:this.columns.getDef(i)})),(i,s)=>this.columns.getCellValue(i,s),t.needle),t.index=new Map;for(let i of t.matches){let s=t.index.get(i.rowKey);s||t.index.set(i.rowKey,s=new Set),s.add(i.columnId)}if(t.active=t.matches.length===0?-1:0,!e||t.matches.length===0)return;let n=new Map(r.map((i,s)=>[i.key,s])),a=n.get(e.rowKey);if(a===void 0)return;let o=u.indexOf(e.columnId),l=t.matches.findIndex(i=>{let s=n.get(i.rowKey);return s>a||s===a&&u.indexOf(i.columnId)>=o});l!==-1&&(t.active=l)}emitFindChanged(){let e=this.getFindState();this.events.emit("findChanged",{text:e.text,count:e.count,activeIndex:e.activeIndex,active:e.active})}setRowPinning(e){this.rowPinning=e===!0?{}:e?{isRowPinnable:e.isRowPinnable}:null}isRowPinningEnabled(){return this.rowPinning!==null}canPinRow(e){if(!this.rowPinning)return!1;let t=this.pinnableRow(e);return t===void 0?!1:this.rowPinning.isRowPinnable?this.rowPinning.isRowPinnable(t)!==!1:!0}pinRow(e,t){if(this.getRowPinSide(e)===t)return!1;if(t!==null){let u=this.pinnableRow(e);if(u===void 0||this.rowPinning?.isRowPinnable&&this.rowPinning.isRowPinnable(u)===!1)return!1;this.pinnedSnapshot.set(e,u)}else this.pinnedSnapshot.delete(e);return this.pinned={top:this.pinned.top.filter(u=>u!==e),bottom:this.pinned.bottom.filter(u=>u!==e)},t&&(this.pinned[t]=[...this.pinned[t],e]),this.emitRowPinningChanged(),!0}getRowPinSide(e){return this.pinned.top.includes(e)?"top":this.pinned.bottom.includes(e)?"bottom":null}getPinnedRowKeys(){return{top:[...this.pinned.top],bottom:[...this.pinned.bottom]}}getPinnedRows(e){let t=[];for(let u of this.pinned[e]){let r=this.pinnableRow(u)??this.pinnedSnapshot.get(u);r!==void 0&&t.push({key:u,row:r})}return t}clearPinnedRows(){this.pinned.top.length===0&&this.pinned.bottom.length===0||(this.pinned={top:[],bottom:[]},this.pinnedSnapshot.clear(),this.emitRowPinningChanged())}pinnableRow(e){return this.sourceRowByKey(e)??this.getRowByKey(e)}prunePinnedRows(){if(this.rowModel.mode!=="client"||(this.rowModel.getSourceRows?.()??[]).length===0)return!1;let e=r=>this.sourceRowByKey(r)!==void 0,t=this.pinned.top.filter(e),u=this.pinned.bottom.filter(e);if(t.length===this.pinned.top.length&&u.length===this.pinned.bottom.length)return!1;for(let r of[...this.pinned.top,...this.pinned.bottom])e(r)||this.pinnedSnapshot.delete(r);return this.pinned={top:t,bottom:u},this.emitRowPinningChanged(),!0}emitRowPinningChanged(){this.events.emit("rowPinningChanged",this.getPinnedRowKeys())}flushPendingSession(){if(this.viewNodes.length!==0){if(this.pendingFocus){let{rowKey:e,columnId:t}=this.pendingFocus,u=this.rowAxis().indexOf(e)!==-1;!u&&this.rowModel.mode==="remote"||(this.pendingFocus=null,u&&this.columns.getOrder().includes(t)&&this.focusCell(e,t))}if(this.pendingScroll){let{top:e,left:t}=this.pendingScroll;this.pendingScroll=null,this.events.emit("scrollRequested",{scrollTop:e,scrollLeft:t})}}}notifyViewStateChanged(){this.disposed||this.events.emit("stateUpdated",{scope:"view",state:this.getViewState()})}setData(e){this.treeData?.childrenField&&(this.treeChildParents=new WeakMap,e=to(e,this.treeData.childrenField,this.treeChildParents).rows),this.rowModel.setData?.(e),this.bumpDataEpoch();let t=this.keyGetter,u=new Set(e.map(r=>t(r)));this.selection.retainKeys(u)&&this.emitSelectionChanged(),this.events.emit("dataUpdated",{totalCount:e.length}),this.recompute()}moveRow(e,t,u="before"){if(this.rowModel.mode==="remote")return this.debugMode&&console.warn("[datagrid] moveRow is a local operation \u2014 the server owns the order of a remote grid. Persist the move from rowDrag.onReorder and let the grid re-query."),!1;if(this.getSort().length>0)return this.debugMode&&console.warn("[datagrid] moveRow ignored: a sort is active, so the sort decides the row order and the move would be invisible. Clear the sort, or keep an order field and update it from rowDrag.onReorder."),!1;let r=this.rowModel.getSourceRows?.()??[],n=Tp(r,e,t,u,this.keyGetter);return n.moved?(this.rowModel.setData?.(n.rows),this.bumpDataEpoch(),this.events.emit("rowsChanged",{added:0,updated:0,removed:0}),this.events.emit("dataUpdated",{totalCount:n.rows.length}),this.recompute(),!0):!1}applyTransaction(e){this.treeData?.childrenField&&e.add&&e.add.length>0&&(e={...e,add:to(e.add,this.treeData.childrenField,this.treeChildParents).rows});let t=this.remote();if(t){let m=e.update??[];if(!((e.add?.length??0)>0||(e.remove?.length??0)>0)&&m.length>0&&this.remoteUpdateKeepsPlacement(m)){let c=t.patchRows(m);this.invalidateResultCaches(),this.events.emit("rowsChanged",{added:0,updated:c,removed:0}),this.events.emit("dataUpdated",{totalCount:t.getTotalCount()}),this.recompute(!0);return}t.invalidate(),this.recompute(!0),this.events.emit("rowsChanged",{added:0,updated:0,removed:0});return}let u=this.rowModel.getSourceRows?.()??[],r=this.keyGetter,n=new Set;if(e.update)for(let m of e.update)n.add(r(m));let a=new Map;if(n.size>0)for(let m=0;m<u.length;m++){let c=r(u[m]);n.has(c)&&a.set(c,m)}let o=u.slice(),l=0,i=0,s=[];if(e.update)for(let m of e.update){let c=a.get(r(m));c!==void 0&&(o[c]=m,s.push(c),l++)}if(e.remove&&e.remove.length>0){let m=new Set(e.remove.map(f=>Ln(f)?f:r(f))),c=o.filter(f=>!m.has(r(f)));i=o.length-c.length,o=c}let h=e.add?.length??0;if(h>0){let m=e.addBeforeKey===void 0?-1:o.findIndex(f=>r(f)===e.addBeforeKey),c=e.add;m>=0?o=o.slice(0,m).concat(c,o.slice(m)):e.addPosition==="first"?o=c.concat(o):o=o.concat(c)}if(!(i>0||h>0)&&this.rowModel.patchData&&!this.columns.hasCellFormulas()?this.rowModel.patchData(o,s,this.columns):this.rowModel.setData?.(o),this.bumpDataEpoch(),i>0){let m=new Set(o.map(c=>r(c)));this.selection.retainKeys(m)&&this.emitSelectionChanged()}this.events.emit("rowsChanged",{added:h,updated:l,removed:i}),this.events.emit("dataUpdated",{totalCount:o.length}),this.recompute(!0)}applyTransactionAsync(e,t){this.disposed||(this.asyncQueue.push(e),t&&this.asyncCallbacks.push(t),this.asyncTimer===null&&(this.asyncTimer=setTimeout(()=>{this.asyncTimer=null,this.flushAsyncTransactions()},this.asyncTransactionWait)))}flushAsyncTransactions(){if(this.asyncTimer!==null&&(clearTimeout(this.asyncTimer),this.asyncTimer=null),this.asyncQueue.length===0)return;let e=this.asyncQueue,t=this.asyncCallbacks;this.asyncQueue=[],this.asyncCallbacks=[];let u=b4(e,this.keyGetter);A4(u)||this.applyTransaction(u),this.events.emit("asyncTransactionsFlushed",{count:e.length});for(let r of t)r()}getPendingAsyncTransactionCount(){return this.asyncQueue.length}remoteUpdateKeepsPlacement(e){let{sort:t,searchText:u,groupBy:r}=this.store.getState(),n=Vo(this.columns,{sort:xn(t,r),filter:this.runningFilter(),searchText:u});if(n.length===0)return!0;for(let a of e){let o=this.getRowByKey(this.keyGetter(a));if(!o)return!1;for(let l of n){let i=this.columns.getCellValue(o,l),s=this.columns.getCellValue(a,l);if(!Object.is(i,s))return!1}}return!0}getRowKeyField(){return this.rowKeyField}getRowKey(e){return this.keyGetter(e)}invalidate(e={}){this.rowModel.invalidate?.(),this.bumpDataEpoch(),this.recompute(e.background===!0)}isRowLoadFailed(e){return this.remote()?.isLoadFailed(e)??!1}retryFailedLoads(){return this.remote()?.retryFailed()?(this.recompute(!0),!0):!1}isRemote(){return this.rowModel.mode==="remote"}refresh(){return this.recompute()}flashCells(e={}){this.events.emit("cellsFlashed",{rowKeys:[...e.rowKeys??[]],columnIds:[...e.columnIds??[]],duration:e.duration??700})}refreshCells(){this.cellRevision++,this.events.emit("cellsRefreshed",{revision:this.cellRevision})}isDisposed(){return this.disposed}dispose(){this.disposed||(this.events.emit("gridPreDestroyed",{state:this.getViewState()}),this.disposed=!0,this.unsubscribeStore(),this.scrollEndTimer!==null&&(clearTimeout(this.scrollEndTimer),this.scrollEndTimer=null),this.asyncTimer!==null&&(clearTimeout(this.asyncTimer),this.asyncTimer=null),this.asyncQueue=[],this.asyncCallbacks=[],this.rowModel.dispose?.(),this.events.clear(),this.lastResult={nodes:[],visibleCount:0,totalCount:0},this.viewNodes=[],this.allViewNodes=[],this.summaryValues={},this.rowIndexCache=null,this.invalidateResultCaches())}serverSummaryRequests(){if(this.summaryDefs.length===0)return;let e=[];for(let t of this.summaryDefs)t.type!=="custom"&&e.push({columnId:t.columnId,type:t.type});return e.length>0?e:void 0}neededRange(){if(this.paginationEnabled){let{page:u,pageSize:r}=this.store.getState(),n=u*r;return{start:n,end:n+r}}let e=this.virtual.getWindow().rows,t=Math.max(1,e.end-e.start);return{start:Math.max(0,e.start-t),end:e.end+t}}getBusy(){return this.busy}foregroundDepth=0;setBusy(e,t,u=!0){let r=e!==null,n=r&&u,a=r&&this.foregroundDepth===0;this.busy.busy===r&&this.busy.phase===e&&this.busy.progress===t&&this.busy.cancellable===n&&this.busy.background===a||(this.busy={busy:r,phase:e,progress:t,cancellable:n,background:a},this.events.emit("busyChanged",this.busy))}async withBusy(e,t,u=!1){this.busyDepth++,u||this.foregroundDepth++,this.setBusy(e,null);try{return await t()}finally{this.busyDepth--,u||this.foregroundDepth--,this.busyDepth===0&&this.setBusy(null,null)}}cancel(){this.disposed||(this.computeToken++,this.exportToken++,this.exportAbort?.abort(),this.exportAbort=null,this.rowModel instanceof Tn&&this.rowModel.cancel())}async recompute(e=!1){if(!this.disposed)return this.withBusy("computing",()=>this.recomputeInner(),e)}async recomputeInner(){let e=++this.computeToken,{sort:t,searchText:u,groupBy:r}=this.store.getState(),n=this.runningFilter(),a=xn(t,r),o,l=performance.now();try{o=await this.rowModel.getRows(this.columns,{sort:a,filter:n,searchText:u,externalFilter:this.externalFilter,absoluteSort:ad(this.columns,a,r),range:this.lastRemoteRange=this.neededRange(),summaries:this.serverSummaryRequests()})}catch(C){!(C instanceof St)&&!(C instanceof Gn)&&(this.events.emit("dataError",{error:C}),this.debugMode&&console.error("[datagrid] row model failed",C));return}if(e!==this.computeToken||this.disposed)return;this.postSort&&this.rowModel.mode==="client"&&(o=this.applyPostSort(o,t,r));let i=Math.round(performance.now()-l),s=performance.now(),h=this.remote();if(h)this.summaryValues=this.summaryDefs.length>0?h.getSummaries():{},this.summaryBasis=null;else if(this.summaryDefs.length>0){let C=this.currentSummaryBasis(n,u),A=this.summaryBasis===C,S=A?this.summaryDefs.filter(F=>F.type==="custom"&&F.dependsOnOrder!==!1):this.summaryDefs;S.length>0?this.runSummaryPass(o.nodes,S,A,C,e):this.summaryBasis=C}else this.summaryValues={},this.summaryBasis=null;let m=Math.round(performance.now()-s);this.lastResult=o,this.invalidateResultCaches(),this.reconcileSelectable();let c=performance.now();this.projectView();let f=this.rowModel.getLastTimings?.();this.lastComputeTimings={modelMs:i,summaryMs:m,projectViewMs:Math.round(performance.now()-c),...f}}applyPostSort(e,t,u){let r=this.postSort,n=e.nodes;if(!r||n.length===0)return e;let a=t.map(i=>({...i})),o=[];if(u.length>0&&!this.treeData){let i=es(n,this.columns,{columnIds:u,locale:this.locale}),s=h=>{for(let m of h)m.children?s(m.children):o.push({from:m.from,to:m.to,group:{key:m.key,columnId:m.columnId,value:m.value,label:m.label,level:m.level}})};s(i.roots)}else o.push({from:0,to:n.length,group:null});let l=null;for(let i of o){let s=n.slice(i.from,i.to),h=s.map(C=>C.data),m;try{m=r(h,{sort:a,group:i.group})}catch(C){this.warnPostSort("it threw",C);continue}let c=Array.isArray(m)?m:h,f=Tf(s,c);if(f===null){this.warnPostSort("it returned a different set of rows than it was given");continue}if(f!==s){l??=n.slice();for(let C=0;C<f.length;C++)l[i.from+C]=f[C]}}return l?{...e,nodes:l}:e}warnPostSort(e,t){this.warnedPostSort||(this.warnedPostSort=!0,console.warn(`[datagrid] sorting.postSort was ignored because ${e}. It may only rearrange the rows it is given \u2014 rearrange the array in place or return those same rows.`,...t===void 0?[]:[t]))}setPostSort(e){this.postSort=e,this.warnedPostSort=!1,this.recompute()}getComputeTimings(){return this.lastComputeTimings}projectView(){if(this.disposed)return;let e=this.store.getState(),t=e.groupBy,u=this.focus.getIndices(this.focusContext())?.rowIndex,r=this.treeView();r&&t.length>0&&!this.warnedTreeGrouping&&(this.warnedTreeGrouping=!0,this.debugMode&&console.warn("[datagrid] `tree` and grouping are mutually exclusive \u2014 grouping is ignored."));let n=r??(t.length>0&&this.rowModel.mode==="client"?w4(this.ensureGroupTree(t),{collapsedKeys:this.store.collapsedSet(),collapsedByDefault:this.collapsedByDefault}).nodes:this.lastResult.nodes),a=this.masterDetail?$h(n,{expandedKeys:this.store.expandedSet(),expandedByDefault:this.masterDetail.expandedByDefault,height:this.masterDetail.height}):n,o=this.editForm?Wh(a,{rowKey:this.editForm.rowKey,height:this.editForm.height,atTop:this.editForm.atTop}):a,l=this.messageRows?Uh(o,{rowKeys:this.messageRows.keys,height:this.messageRows.height}):o;if(this.allViewNodes=l,this.infiniteScroll)this.infiniteLimit=Math.min(this.infiniteLimit,Math.max(this.infinitePageSize,l.length)),this.viewNodes=l.slice(0,this.infiniteLimit);else if(this.paginationEnabled){let{pageSize:s}=e,h=this.store.clampPage(Math.ceil(l.length/s))*s;this.viewNodes=l.slice(h,h+s)}else this.viewNodes=l;this.rowIndexCache=null,this.rebuildRowHeights();let i=this.virtual.setRowCount(this.viewNodes.length);this.rowModel.mode==="remote"&&this.fetchUncoveredWindow(),this.focus.reconcile(this.focusContext(),u)&&this.emitFocusChanged(),this.events.emit("contentReady",{rows:this.lastResult.nodes,totalCount:this.lastResult.totalCount,visibleCount:this.lastResult.visibleCount}),this.emitPaginationChanged(!0),this.flushPendingSession(),!this.firstDataRenderedSent&&this.viewNodes.length>0&&(this.firstDataRenderedSent=!0,this.events.emit("firstDataRendered",{rowCount:this.viewNodes.length})),this.emitIfWindowChanged(i)}treeView(){if(!this.treeData||!this.treeParent||this.rowModel.mode!=="client")return null;let e=this.rowModel.getSourceRows?.();if(!e)return null;if(!this.treeIndex||this.treeIndexEpoch!==this.dataEpoch){let t=this.treeData.getDataPath;this.treeIndex=t?e4(e,this.keyGetter,t):u4(e,this.keyGetter,this.treeParent),this.treeIndexEpoch=this.dataEpoch}return n4(this.dataNodes(),{index:this.treeIndex,sourceRows:e,isExpanded:t=>this.isTreeRowExpanded(t)}).nodes}isTreeRowExpanded(e){return this.treeExpandedByDefault!==this.treeToggled.has(e)}expandTreeRow(e){this.setTreeRowExpanded(e,!0)}collapseTreeRow(e){this.setTreeRowExpanded(e,!1)}toggleTreeRow(e){this.setTreeRowExpanded(e,!this.isTreeRowExpanded(e))}setTreeRowExpanded(e,t){this.treeData&&this.isTreeRowExpanded(e)!==t&&(t===this.treeExpandedByDefault?this.treeToggled.delete(e):this.treeToggled.add(e),this.reprojectTree(),this.events.emit("treeRowToggled",{rowKey:e,expanded:t}))}expandAllTreeRows(){this.treeData&&(this.treeExpandedByDefault=!0,this.treeToggled.clear(),this.reprojectTree(),this.events.emit("treeRowToggled",{rowKey:null,expanded:!0}))}collapseAllTreeRows(){this.treeData&&(this.treeExpandedByDefault=!1,this.treeToggled.clear(),this.reprojectTree(),this.events.emit("treeRowToggled",{rowKey:null,expanded:!1}))}reprojectTree(){this.rowModel.isTree?.()?this.recompute():this.reproject()}reproject(){if(!this.disposed){this.busyDepth++,this.setBusy("projecting",null);try{this.projectView()}finally{this.busyDepth--,this.busyDepth===0&&this.setBusy(null,null)}}}emitSortChanged(){this.resetReveal(),this.events.emit("sortChanged",{sort:this.store.getState().sort})}layoutRuntime(e={}){let t=this.columns.runtime(e),u=this.store.getState().groupBy;if(this.groupDisplay==="column"){let r=t.find(n=>n.state.id===Lu);t=t.filter(n=>n.state.id!==Lu),r&&u.length>0&&(t=[r,...t])}return this.showGroupedColumns||u.length===0?t:t.filter(r=>!u.includes(r.state.id))}rebuildRowHeights(){let e=this.measuredRowHeights,t=this.masterDetail!==null||this.editForm!==null;if(!this.getRowHeightFn&&!t&&e.size===0&&this.dataRowHeight===null)return this.virtual.setRowHeights(null);let u=this.virtual.getRowHeight(),r=this.viewNodes,n=new Map;for(let a=0;a<r.length;a++){let o=r[a],l;o===void 0?l=this.dataRowHeight??void 0:o.kind==="detail"||o.kind==="editform"||o.kind==="message"?l=o.height:o.kind==="data"&&this.dataRowHeight!==null?l=this.dataRowHeight:l=e.get(o.key)??this.getRowHeightFn?.(o,a),l!==void 0&&l!==u&&n.set(a,Math.max(1,l))}return this.virtual.setRowHeights(n)}setMeasuredRowHeights(e){let t=e.size!==this.measuredRowHeights.size;if(!t){for(let[r,n]of e)if(this.measuredRowHeights.get(r)!==n){t=!0;break}}if(!t)return!1;this.measuredRowHeights=new Map(e);let u=this.rebuildRowHeights();return this.emitIfWindowChanged(u),u}getMeasuredRowHeights(){return this.measuredRowHeights}clearMeasuredRowHeights(){if(this.measuredRowHeights.size===0)return!1;this.measuredRowHeights=new Map;let e=this.rebuildRowHeights();return this.emitIfWindowChanged(e),e}getRowHeightAt(e){return this.virtual.getRowHeightAt(e)}getRowOffset(e){return this.virtual.getRowOffset(e)}getCellSpans(e){let t=this.columns.getDef(e)?.spanRows;if(!t)return Bf;this.spanCacheResult!==this.lastResult&&(this.spanCache.clear(),this.spanCacheResult=this.lastResult);let u=this.spanCache.get(e);if(u)return u;let r=oh(this.lastResult.nodes,n=>this.columns.getCellValue(n,e),typeof t=="function"?t:void 0);return this.spanCache.set(e,r),r}hasCellSpans(){return this.columns.runtime().some(e=>e.def.spanRows)}applyFlex(){if(!(this.viewportWidth>0))return!1;let e=this.layoutRuntime(),t=e.filter(i=>(i.state.flex??0)>0);if(t.length===0)return!1;let u=this.viewportWidth-this.leadWidth;for(let i of e)(i.state.flex??0)>0||(u-=i.state.width);let r=new Map,n=new Set(t);for(let i=0;i<=t.length&&n.size>0;i++){let s=0;for(let c of n)s+=c.state.flex??0;let h=Math.max(0,u)/s,m=!1;for(let c of[...n]){let f=(c.state.flex??0)*h,C=Math.max(c.def.minWidth??tr,tr),A=c.def.maxWidth??Number.POSITIVE_INFINITY;if(f<C||f>A){let S=Math.min(Math.max(f,C),A);r.set(c.state.id,S),n.delete(c),u-=S,m=!0}else r.set(c.state.id,f)}if(!m)break}let a=0;for(let i of t)a+=r.get(i.state.id)??0;let o=0,l=!1;return t.forEach((i,s)=>{let h=s===t.length-1?Math.round(a)-o:Math.round(r.get(i.state.id)??0);o+=h,h!==i.state.width&&(this.columns.setWidth(i.state.id,h),l=!0)}),l}emitColumnStateChanged(){this.applyFlex();let e=this.virtual.setColumnLayout(cs(this.layoutRuntime()));this.events.emit("columnStateChanged",{columns:this.columns.getColumnStates()}),this.emitIfWindowChanged(e)}emitIfWindowChanged(e){return e&&!this.disposed&&(this.events.emit("viewportChanged",{window:this.virtual.getWindow()}),this.maybeRevealMore()),e}maybeRevealMore(){if(!this.infiniteScroll||this.disposed)return;let e=this.virtual.getWindow().rows,t=Math.max(1,e.end-e.start);e.end+t<this.infiniteLimit||this.revealMore()}assertColumn(e){let t=!!this.columns.getState(e);return!t&&this.debugMode&&console.error(`[datagrid] unknown column id "${e}".`),t}};function Of(e){return e==="CONCAT"?"_xlfn.CONCAT":e}var pi={compact:24,normal:28,comfortable:36},Hf=["minimal","ledger","elevated","framed","kanuni","kanuni-midnight"];function fi(e){return e!==void 0&&Hf.includes(e)}var gi={minimal:{compact:26,normal:36,comfortable:44},ledger:{compact:20,normal:25,comfortable:32},elevated:{compact:32,normal:40,comfortable:52},framed:{compact:26,normal:34,comfortable:42},kanuni:{compact:24,normal:32,comfortable:40},"kanuni-midnight":{compact:24,normal:32,comfortable:40}};var md=["porcelain","ivory","stone","mist","glacier","slate","linen","sandstone","taupe","azure","indigo","teal","lagoon","emerald","orchid","rose","amber","coral","corporate","editorial","monochrome","contrast-light","charcoal","graphite","onyx","slate-night","steel","midnight","indigo-night","forest","deep-sea","aubergine","burgundy","ember","contrast-dark","terminal"];function ua(e,t,u){return fi(e)?gi[e][t??"normal"]:t?pi[t]:u}var Vf={today:"periodToday",yesterday:"periodYesterday",tomorrow:"periodTomorrow",thisWeek:"periodThisWeek",lastWeek:"periodLastWeek",nextWeek:"periodNextWeek",thisMonth:"periodThisMonth",lastMonth:"periodLastMonth",nextMonth:"periodNextMonth",thisQuarter:"periodThisQuarter",lastQuarter:"periodLastQuarter",nextQuarter:"periodNextQuarter",thisYear:"periodThisYear",lastYear:"periodLastYear",nextYear:"periodNextYear",yearToDate:"periodYearToDate",lastDays:"periodLastDays",nextDays:"periodNextDays"};function Ci(e){let t={};for(let u of Pr)t[u]=String(e[Vf[u]]);return t}var t0=Ci(ti),u0=e=>e.trim().replace(/\s+/g," ").toLocaleLowerCase();function zf(e,t){let u=u0(e);for(let r of t?[t,t0]:[t0])for(let n of Pr){let a=u0(r[n]);if(!a.includes("{n}")){if(u===a)return{period:n};continue}let[o,l]=a.split("{n}");if(u.startsWith(o)&&u.endsWith(l)){let i=u.slice(o.length,u.length-l.length).trim(),s=/^\d+$/.test(i)?Number(i):Number.NaN;if(Number.isInteger(s)&&s>=1)return{period:n,days:s}}}return null}function pd(e){let t=[];for(let u of Pr)if(u==="lastDays")for(let r of[7,30,90])t.push(e.lastDays.replace("{n}",String(r)));else if(u==="nextDays")for(let r of[7,30])t.push(e.nextDays.replace("{n}",String(r)));else t.push(e[u]);return t}var Kf=[">=","<=","<>",">","<","="],$f=/^[+-]?\d+$/;function fd(e,t,u,r){let n=t.trim();if(n==="")return null;if(u==="date"){let a=zf(n,r);if(a)return{columnId:e,operator:"period",value:a}}for(let a of Kf)if(n.startsWith(a)){let o=n.slice(a.length).trim();if(o==="")return null;let l=u==="number"?Number(o):Number.NaN;return{columnId:e,operator:a,value:Number.isNaN(l)?o:l}}if(u==="bigint")return $f.test(n)?{columnId:e,operator:"=",value:n}:{columnId:e,operator:"contains",value:n};if(u==="number"){let a=Number(n);return Number.isNaN(a)?{columnId:e,operator:"contains",value:n}:{columnId:e,operator:"=",value:a}}if(u==="boolean"){let a=n.toLowerCase();return a==="true"||a==="false"?{columnId:e,operator:"=",value:a==="true"}:{columnId:e,operator:"contains",value:n}}return u==="date"?{columnId:e,operator:"contains",value:n}:{columnId:e,operator:"contains",value:n}}function gd(e,t,u){return(u.operandType??"text")==="none"?{columnId:e,operator:u.id}:t.trim()===""?null:{columnId:e,operator:u.id,value:K4(u,t)}}function yi(e,t){if(!e||Je(e))return null;let u=mu(t,e.operator);if(!u)return null;let r=e.value;return(u.operandType??"text")==="none"||r===null||r===void 0?{operatorId:u.id,text:""}:{operatorId:u.id,text:typeof r=="object"?JSON.stringify(r):String(r)}}var Wf=24;var Eg={line:"",area:"",bars:[],baselineY:Wf/2,horizontal:!1,baselineX:0,last:null,lastValue:null,count:0,points:[],lone:[],first:null,min:null,max:null};function Cd(e,t){if(e.scrollHeight<1e6)return null;let u=e.scrollTop;e.scrollTop=1e8;let r=e.scrollTop;if(e.scrollTop=u,r<=0)return null;let n=t.getVirtualWindow().rows.totalHeight-e.clientHeight;return r>=n-4?null:(t.setMaxScrollOffset(r),r)}var yd="data-kanuni-portal";function _f(e){return(typeof e=="function"?e():e)??document.body}var r0=new WeakMap,qo=new Set,n0=!1;function Uf(){for(let e of qo)e.isConnected?wd(e):qo.delete(e)}function qt(e){let t=_f(e);if(t===document.body)return t;let u=r0.get(t);return(!u||u.parentNode!==t)&&(u=document.createElement("div"),u.className="kanuni-datagrid-portal-host",u.setAttribute(yd,"host"),u.style.cssText="position:fixed;left:0;top:0;width:100vw;height:100vh;overflow:visible;pointer-events:none;z-index:2147483000;",t.appendChild(u),r0.set(t,u),qo.add(u),!n0&&typeof window<"u"&&(n0=!0,window.addEventListener("resize",Uf))),wd(u),u}function wd(e){e.style.transform="none";let t=e.getBoundingClientRect();e.style.transform=`translate(${-t.left}px, ${-t.top}px)`}var qn=new WeakMap;function Ed(e,t){qn.set(e,t)}function nr(e){for(let t=e??null;t;t=t.parentElement)if(qn.has(t))return qn.get(t)}function jt(e,t,u="popup"){return e.setAttribute(yd,u),t!==void 0&&(qn.set(e,t),e.style.pointerEvents="auto"),e}function bd(e,t,u=7){let r=Number.isFinite(t)?Math.max(0,Math.floor(t)):0;if(r===0)return[];let n=Math.max(5,Number.isFinite(u)?Math.floor(u):7),a=Math.min(r-1,Math.max(0,Number.isFinite(e)?Math.floor(e):0)),o=(h,m)=>{let c=[];for(let f=h;f<=m;f++)c.push(f);return c};if(r<=n)return o(0,r-1);let l=r-1;if(a<=n-4)return[...o(0,n-3),"gapEnd",l];if(a>=l-(n-4))return[0,"gapStart",...o(l-(n-3),l)];let i=n-4,s=a-Math.floor((i-1)/2);return[0,"gapStart",...o(s,s+i-1),"gapEnd",l]}var qf=600,jf=21,Yf=22,Qf=20;function Ad(e){if(!e)return null;let t=e===!0?{}:e;return{breakpoint:typeof t.breakpoint=="number"&&t.breakpoint>0?t.breakpoint:qf,columns:Array.isArray(t.columns)&&t.columns.length?[...t.columns]:null}}function xd(e,t){return t!==null&&e>0&&e<t.breakpoint}function vd(e){let t=e.closest(".kanuni-datagrid-main");return t instanceof HTMLElement&&t.clientWidth>0?t.clientWidth:e.clientWidth}function Fd(e,t){let u=e.getOrder();return t.columns?t.columns.filter(r=>u.includes(r)):u.filter(r=>e.isShown(r))}function Dd(e){return jf+Yf+Math.max(0,e-1)*Qf}function Sd(e,t,u){return t.map(r=>{let n=e.getDef(r);return{columnId:r,label:n?.headerName??r,text:du(n,e.getCellValue(u,r),u)}})}function kd(e){let t=e.margin??8,{anchor:u,width:r,height:n,viewportWidth:a,viewportHeight:o}=e,l=r>0?Math.max(t,Math.min(u.left,a-r-t)):Math.max(t,u.left);if(n<=0)return{left:l,top:u.bottom,flipped:!1};let i=o-u.bottom-t,s=u.top-t;return n<=i?{left:l,top:u.bottom,flipped:!1}:n<=s?{left:l,top:u.top-n,flipped:!0}:{left:l,top:Math.max(t,Math.min(u.bottom,o-n-t)),flipped:!1}}function ra(e,t){let{controller:u,maxGroupLevels:r,t:n}=t,a=e.columnId,o=u.getColumnModel().getDef(a),l=u.getSort(),i=l.find(k=>k.columnId===a),s=u.getGroupLevels(),h=s.includes(a),m=o?.sortable!==!1,c=u.getColumnStates().find(k=>k.id===a)?.pinned??null,f=o?.groupable!==!1,C=u.canGroup(),A=[{id:"sort-asc",label:n.sortAsc,disabled:!m||i?.direction==="asc",onSelect:()=>u.setSort([{columnId:a,direction:"asc"}])},{id:"sort-desc",label:n.sortDesc,disabled:!m||i?.direction==="desc",onSelect:()=>u.setSort([{columnId:a,direction:"desc"}])},{id:"sort-clear",label:n.clearSort,disabled:!i,onSelect:()=>u.setSort(l.filter(k=>k.columnId!==a))},{id:"sep-1",separator:!0},{id:"group",label:h?n.ungroupColumn:n.groupByColumn,disabled:!f,onSelect:()=>{h?u.groupBy(s.filter(k=>k!==a)):u.groupBy([...s,a].slice(-r))}},{id:"group-panel",label:t.groupPanelVisible?n.hideGroupPanel:n.showGroupPanel,onSelect:t.onToggleGroupPanel},{id:"footer",label:t.footerVisible?n.hideFooter:n.showFooter,onSelect:t.onToggleFooter},{id:"sep-2",separator:!0},{id:"hide-column",label:n.hideColumn,disabled:u.getColumnStates().filter(k=>k.visible).length<=1,onSelect:()=>u.setColumnVisible(a,!1)},{id:"field-chooser",label:n.fieldChooser,onSelect:t.onOpenFieldChooser},{id:"sep-3",separator:!0},{id:"best-fit",label:n.bestFit,disabled:o?.resizable===!1,onSelect:()=>t.onBestFit(a)},{id:"best-fit-all",label:n.bestFitAll,onSelect:t.onBestFitAll}],S=u.getColumnStates().filter(k=>k.visible&&k.pinned===c).map(k=>k.id),F=S.indexOf(a),x=o?.reorderable!==!1&&F>=0;return A.push({id:"sep-4",separator:!0},{id:"move-left",label:n.moveLeft,disabled:!x||F<=0,onSelect:()=>u.moveColumn(a,S[F-1])},{id:"move-right",label:n.moveRight,disabled:!x||F<0||F>=S.length-1,onSelect:()=>u.moveColumn(a,S[F+2])},{id:"fixed-position",label:n.fixedPosition,items:[{id:"pin-left",label:n.pinLeft,disabled:c==="left",onSelect:()=>u.setColumnPinned(a,"left")},{id:"pin-right",label:n.pinRight,disabled:c==="right",onSelect:()=>u.setColumnPinned(a,"right")},{id:"pin-sticky",label:n.pinSticky,disabled:c==="sticky",onSelect:()=>u.setColumnPinned(a,"sticky")}]},{id:"unpin",label:n.unpin,disabled:c===null,onSelect:()=>u.setColumnPinned(a,null)}),C?A:A.filter(k=>k.id!=="group"&&k.id!=="group-panel")}async function wi(e,t){try{let u=t==="csv"?await e.exportToCsv():t==="excel"?await e.exportToExcel():t==="excel-selected"?await e.exportToExcel({selectedOnly:!0}):await e.exportToPdf();return ud(u.blob,u.fileName),{completed:!0}}catch(u){return u instanceof et?{completed:!1}:{completed:!1,error:u instanceof Error?u.message:String(u)}}}var Bd=null;function Xf(){return typeof document>"u"?null:(Bd??=document.createElement("canvas"),Bd.getContext("2d"))}function Td(e){let t=getComputedStyle(e);return`${t.fontStyle} ${t.fontWeight} ${t.fontSize} ${t.fontFamily}`}function Zf(e){for(let t=e.firstElementChild;t;t=t.nextElementSibling)if(t.tagName!=="MARK")return!0;return!1}function Jf(e){let t=e.map(r=>[r.style.width,r.style.minWidth,r.style.maxWidth]);for(let r of e)r.style.width="max-content",r.style.minWidth="0",r.style.maxWidth="none";let u=0;for(let r of e){let n=Math.ceil(r.getBoundingClientRect().width);n>u&&(u=n)}return e.forEach((r,n)=>{[r.style.width,r.style.minWidth,r.style.maxWidth]=t[n]}),u}function na(e,t){let u=Xf();if(!u)return null;let r=typeof CSS<"u"&&CSS.escape?CSS.escape(t):t.replace(/"/g,'\\"'),n=e.querySelector(`.kanuni-datagrid-header-cell[data-column-id="${r}"]`),a=e.querySelectorAll(`.kanuni-datagrid-cell[data-column-id="${r}"]`);if(!n&&a.length===0)return null;let o=0;if(n){let l=n.querySelector(".kanuni-datagrid-header-label")??n;u.font=Td(l),o=u.measureText(l.textContent??"").width+44}if(a.length>0){u.font=Td(a[0]);let l=[];for(let i=0;i<a.length;i++){if(Zf(a[i])){l.push(a[i]);continue}let s=a[i].textContent??"";if(s==="")continue;let h=u.measureText(s).width+20;h>o&&(o=h)}l.length>0&&(o=Math.max(o,Jf(l)))}return o===0?null:Math.round(Math.min(640,Math.max(48,o)))}function Nd(e){let t=Number(e.weekStartsOn);return Number.isInteger(t)&&t>=0&&t<=6?t:0}function eg(e){let t=[e.weekdaySu,e.weekdayMo,e.weekdayTu,e.weekdayWe,e.weekdayTh,e.weekdayFr,e.weekdaySa],u=Nd(e);return[...t.slice(u),...t.slice(0,u)]}function tg(e){return[e.monthJanuary,e.monthFebruary,e.monthMarch,e.monthApril,e.monthMay,e.monthJune,e.monthJuly,e.monthAugust,e.monthSeptember,e.monthOctober,e.monthNovember,e.monthDecember]}function ug(e,t){return!e||!t?!1:e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}var Rd="http://www.w3.org/2000/svg";function rg(){let e=document.createElementNS(Rd,"svg");e.setAttribute("width","14"),e.setAttribute("height","14"),e.setAttribute("viewBox","0 0 16 16"),e.setAttribute("aria-hidden","true"),e.setAttribute("focusable","false");let t=document.createElementNS(Rd,"path");return t.setAttribute("d","M3 4h10v9H3z M3 6.5h10 M5.5 2.5v2 M10.5 2.5v2"),t.setAttribute("fill","none"),t.setAttribute("stroke","currentColor"),t.setAttribute("stroke-width","1.3"),t.setAttribute("stroke-linecap","round"),e.appendChild(t),e}function fu(e){let{t,format:u=c0,autoFocus:r=!0}=e,n=tg(t),a=eg(t),o=document.createElement("span");o.className="kanuni-datagrid-date-editor";let l=document.createElement("input");l.type="text",l.inputMode="numeric",l.autocomplete="off",l.placeholder=u,e.ariaLabel&&l.setAttribute("aria-label",e.ariaLabel),e.testId&&l.setAttribute("data-testid",e.testId),e.columnId&&l.setAttribute("data-column-id",e.columnId),e.disabled&&(l.disabled=!0);let i=null,s=!1,h=null,m=Xn(e.value),c=m??new Date,f=()=>i===null?Tt(e.value,u):Lr(i,u),C=()=>i===null?null:h0(Lr(i,u),u),A=()=>i!==null&&i.length===Yn(u)&&C()===null,S=()=>{let j=A()||!!e.invalid;l.className=`kanuni-datagrid-editor${j?" kanuni-datagrid-editor--invalid":""}`,j?l.setAttribute("aria-invalid","true"):l.removeAttribute("aria-invalid")};l.value=f(),S();let F=j=>{if(j===null){e.onChange(null);return}e.onChange(e.value instanceof Date?j:Zn(j))},x=()=>{if(!h)return;if(!l.isConnected){O();return}let j=l.getBoundingClientRect(),J=kd({anchor:{left:j.left,top:j.top,bottom:j.bottom},width:h.offsetWidth,height:h.offsetHeight,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight});h.style.left=`${J.left}px`,h.style.top=`${J.top}px`},k=()=>x();function M(){if(!h)return;h.textContent="";let j=document.createElement("div");j.className="kanuni-datagrid-date-popup-head";let J=document.createElement("button");J.type="button",J.setAttribute("aria-label",t.datePreviousMonth),J.setAttribute("data-testid","dg-date-prev"),J.textContent="\u2039",J.addEventListener("click",()=>{c=new Date(c.getFullYear(),c.getMonth()-1,1),M()});let ee=document.createElement("span");ee.setAttribute("data-testid","dg-date-title"),ee.textContent=`${n[c.getMonth()]} ${c.getFullYear()}`;let re=document.createElement("button");re.type="button",re.setAttribute("aria-label",t.dateNextMonth),re.setAttribute("data-testid","dg-date-next"),re.textContent="\u203A",re.addEventListener("click",()=>{c=new Date(c.getFullYear(),c.getMonth()+1,1),M()}),j.append(J,ee,re);let B=document.createElement("div");B.className="kanuni-datagrid-date-popup-grid",B.setAttribute("role","grid");for(let me of a){let oe=document.createElement("span");oe.className="kanuni-datagrid-date-weekday",oe.setAttribute("role","columnheader"),oe.textContent=me,B.appendChild(oe)}let q=(new Date(c.getFullYear(),c.getMonth(),1).getDay()-Nd(t)+7)%7,Ce=Xo(c.getFullYear(),c.getMonth()+1);for(let me=0;me<42;me++){let oe=me-q+1,de=new Date(c.getFullYear(),c.getMonth(),oe),we=oe<1||oe>Ce,Fe=ug(de,C()??m),ie=document.createElement("button");ie.type="button",ie.setAttribute("role","gridcell"),ie.className=`kanuni-datagrid-date-day${we?" kanuni-datagrid-date-day--outside":""}${Fe?" kanuni-datagrid-date-day--selected":""}`,ie.setAttribute("aria-selected",String(Fe)),ie.setAttribute("data-testid","dg-date-day"),ie.setAttribute("data-date",Zn(de)),ie.textContent=String(de.getDate()),ie.addEventListener("click",()=>G(de)),B.appendChild(ie)}h.append(j,B)}function K(){if(s)return;s=!0,Y.setAttribute("aria-expanded","true"),c=C()??m??new Date,h=document.createElement("div"),h.className=`kanuni-datagrid-detached kanuni-datagrid-date-popup${e.surfaceClass?` ${e.surfaceClass}`:""}`,h.style.position="fixed",h.setAttribute("data-testid","dg-date-calendar"),h.setAttribute("role","dialog"),h.setAttribute("aria-label",e.ariaLabel?`${e.ariaLabel} ${t.dateCalendar}`:t.dateCalendar),h.addEventListener("mousedown",J=>J.preventDefault());let j=nr(o);qt(j).appendChild(jt(h,j)),window.addEventListener("scroll",k,!0),window.addEventListener("resize",k),e.onPortalOpen?.(O),M(),x()}function O(){s&&(s=!1,Y.setAttribute("aria-expanded","false"),window.removeEventListener("scroll",k,!0),window.removeEventListener("resize",k),h?.remove(),h=null)}function G(j){i=null,O(),F(j),l.value=Tt(e.value instanceof Date?j:Zn(j),u),S(),l.focus({preventScroll:!0})}function W(){if(i===null)return;if(i.length===0){F(null),i=null,l.value=f(),S();return}let j=C();j&&F(j),i=null,l.value=f(),S()}l.addEventListener("input",()=>{i=Qn(l.value,u),l.value=Lr(i,u),S()}),l.addEventListener("keydown",j=>{if(j.key==="Escape"){if(j.preventDefault(),j.stopPropagation(),s){O();return}i=null,e.onCancel();return}if(s){let J=j.key==="ArrowLeft"?-1:j.key==="ArrowRight"?1:j.key==="ArrowUp"?-7:j.key==="ArrowDown"?7:0;if(J!==0){j.preventDefault(),j.stopPropagation();let ee=C()??m??new Date,re=new Date(ee.getFullYear(),ee.getMonth(),ee.getDate()+J);i=Qn(Tt(re,u),u),l.value=Lr(i,u),c=re,M(),S();return}if(j.key==="Enter"){j.preventDefault(),j.stopPropagation();let ee=C();O(),ee&&G(ee);return}}if(j.key==="Enter"){j.preventDefault(),j.stopPropagation(),W(),e.onCommit();return}if(j.key==="Tab"){W(),O(),e.onTab&&(j.preventDefault(),j.stopPropagation(),e.onTab(j.shiftKey));return}if(j.key.length===1&&!j.ctrlKey&&!j.metaKey&&!/\d/.test(j.key)){j.preventDefault();return}j.stopPropagation()}),l.addEventListener("blur",()=>{s||W()});let Y=document.createElement("button");return Y.type="button",Y.className="kanuni-datagrid-date-button",Y.setAttribute("aria-label",e.ariaLabel?`${e.ariaLabel} \u2014 ${t.dateOpenCalendar}`:t.dateOpenCalendar),Y.setAttribute("aria-expanded","false"),Y.setAttribute("data-testid","dg-date-open"),e.disabled&&(Y.disabled=!0),Y.tabIndex=-1,Y.addEventListener("mousedown",j=>j.preventDefault()),Y.addEventListener("click",()=>{s?O():K(),l.focus({preventScroll:!0})}),Y.appendChild(rg()),o.append(l,Y),r&&queueMicrotask(()=>{l.isConnected&&(l.focus({preventScroll:!0}),l.select())}),o}function Md(e,t){return e==null?"":t==="date"&&e instanceof Date?e.toISOString().slice(0,10):String(e)}function Id(e,t){if(t){let u=document.createElement("span");u.id="kanuni-datagrid-editor-error",u.setAttribute("role","alert"),u.className="kanuni-datagrid-editor-error",u.textContent=t,e.appendChild(u)}return e}function aa(e){let{value:t,dataType:u,error:r,seeded:n=!1}=e,a=document.createDocumentFragment();if(e.options===null){let i=document.createElement("input");return i.type="text",i.value="\u2026",i.readOnly=!0,i.disabled=!0,i.className="kanuni-datagrid-editor",i.setAttribute("data-testid","dg-cell-editor"),a.appendChild(i),a}if(e.options&&e.options.length>0&&e.renderLookup)return a.appendChild(e.renderLookup({options:e.options,value:t,matchMode:e.matchMode,allowCustom:e.allowCustom,invalid:!!r,testId:"dg-cell-editor",ariaLabel:e.ariaLabel,surfaceClass:e.surfaceClass,onPortalOpen:e.onPortalOpen,noMatchText:e.t?.editNoMatch??"No match",onChange:e.onChange,onCommit:()=>e.onCommit("none"),onCancel:e.onCancel,onTab:i=>e.onTab(i?-1:1)})),Id(a,r);if(u==="date"&&e.t)return a.appendChild(fu({value:t,format:e.dateFormat,invalid:!!r,testId:"dg-cell-editor",ariaLabel:e.ariaLabel,surfaceClass:e.surfaceClass,onPortalOpen:e.onPortalOpen,t:e.t,onChange:e.onChange,onCommit:()=>e.onCommit("none"),onCancel:e.onCancel,onTab:i=>e.onTab(i?-1:1)})),Id(a,r);let o=document.createElement("input");o.className=`kanuni-datagrid-editor${r?" kanuni-datagrid-editor--invalid":""}`,o.setAttribute("data-testid","dg-cell-editor"),o.setAttribute("aria-invalid",String(!!r)),r&&o.setAttribute("aria-errormessage","kanuni-datagrid-editor-error");let l=!1;if(u==="boolean"?(o.type="checkbox",o.checked=t===!0,o.addEventListener("change",()=>e.onChange(o.checked))):u==="number"?(o.type=Number.isNaN(Number(t))&&t!==null&&t!==void 0&&t!==""?"text":"number",o.value=Md(t,u),o.addEventListener("input",()=>e.onChange(o.value===""?null:Number(o.value)))):(o.type="text",o.value=Md(t,u),o.addEventListener("input",()=>e.onChange(o.value))),o.addEventListener("keydown",i=>{i.isComposing||i.keyCode===229||(i.key==="Enter"?(i.preventDefault(),i.stopPropagation(),e.onCommit(i.shiftKey?"none":"down")):i.key==="Tab"?(i.preventDefault(),i.stopPropagation(),l=!0,e.onTab(i.shiftKey?-1:1)):i.key==="Escape"?(i.preventDefault(),i.stopPropagation(),e.onCancel()):i.stopPropagation())}),o.addEventListener("blur",()=>{l||e.onCommit("none")}),a.appendChild(o),r){let i=document.createElement("span");i.id="kanuni-datagrid-editor-error",i.setAttribute("role","alert"),i.className="kanuni-datagrid-editor-error",i.textContent=r,a.appendChild(i)}return queueMicrotask(()=>{if(o.isConnected&&(o.focus({preventScroll:!0}),o.type!=="checkbox"))if(n){if(o.type==="text"||o.type==="search"){let i=o.value.length;o.setSelectionRange(i,i)}}else o.select()}),a}var ng=0;function oa(e){return new Promise(t=>{let u=document.createElement("div");u.className=`kanuni-datagrid-detached kanuni-datagrid-dialog-root${e.surfaceClass?` ${e.surfaceClass}`:""}`,u.setAttribute("role","presentation");let r=document.activeElement,n=C=>{document.removeEventListener("keydown",a,!0);let A=u.contains(document.activeElement);u.remove(),A&&r?.isConnected&&r.focus({preventScroll:!0}),t(C)},a=C=>{if(C.key==="Escape"){C.stopPropagation(),n(!1);return}if(C.key==="Tab"){let A=Array.from(m.querySelectorAll("button:not([disabled])"));if(A.length===0)return;let S=A.indexOf(document.activeElement),F=C.shiftKey?S<=0?A.length-1:S-1:S===A.length-1?0:S+1;C.preventDefault(),C.stopPropagation(),A[F].focus()}};document.addEventListener("keydown",a,!0);let o=document.createElement("div");o.className="kanuni-datagrid-dialog-overlay",o.addEventListener("mousedown",()=>n(!1));let l=document.createElement("div");l.className="kanuni-datagrid-dialog",l.setAttribute("role","alertdialog"),l.setAttribute("aria-modal","true");let i=`dg-dialog-${++ng}`;l.setAttribute("aria-labelledby",`${i}-title`),l.setAttribute("aria-describedby",`${i}-message`),l.setAttribute("data-testid","dg-dialog");let s=document.createElement("div");s.className="kanuni-datagrid-dialog-title",s.id=`${i}-title`,s.textContent=e.title;let h=document.createElement("div");h.className="kanuni-datagrid-dialog-message",h.id=`${i}-message`,h.textContent=e.message;let m=document.createElement("div");if(m.className="kanuni-datagrid-dialog-actions",e.cancelLabel!==void 0){let C=document.createElement("button");C.type="button",C.setAttribute("data-testid","dg-dialog-cancel"),C.textContent=e.cancelLabel,C.addEventListener("click",()=>n(!1)),m.appendChild(C)}let c=document.createElement("button");c.type="button",c.className=`kanuni-datagrid-dialog-primary${e.danger?" kanuni-datagrid-dialog-primary--danger":""}`,c.setAttribute("data-testid","dg-dialog-confirm"),c.textContent=e.confirmLabel,c.addEventListener("click",()=>n(!0)),m.appendChild(c),l.append(s,h,m),u.append(o,l);let f=nr(e.anchor);qt(f).appendChild(jt(u,f)),c.focus()})}function ag(e,t){switch(e){case"number":return t==null||t===""||!Number.isNaN(Number(t))?"number":"text";case"boolean":return"checkbox";default:return"text"}}function og(e,t){if(t==="number"){if(e==="")return null;let u=Number(e);return Number.isNaN(u)?e:u}return e}function ia(e){let{t,popup:u=!1,inline:r=!1}=e,n=document.createElement("div");n.className=`kanuni-datagrid-edit-form${r?" kanuni-datagrid-edit-form--inline":""}`,n.setAttribute("data-testid","dg-edit-form"),n.setAttribute("data-row-key",String(e.rowKey)),u&&n.setAttribute("data-popup",""),n.setAttribute("role",u?"dialog":"group"),u&&n.setAttribute("aria-modal","true"),n.setAttribute("aria-label",e.isNew?t.formAddTitle:t.formEditTitle);let a=document.createElement("div");a.className="kanuni-datagrid-edit-form-header";let o=document.createElement("strong");o.textContent=e.isNew?t.formAddTitle:t.formEditTitle,a.appendChild(o);let l=document.createElement("div");l.className="kanuni-datagrid-edit-form-error",l.setAttribute("role","alert"),l.setAttribute("data-testid","dg-form-error"),l.style.display="none";let i=document.createElement("div");i.className="kanuni-datagrid-edit-form-fields";let s=new Map,h=(x,k)=>{let M=e.getValue(x.columnId),K=e.getSaving()||!x.editable,O=`dg-field-${String(e.rowKey)}-${x.columnId}`;if(x.lookup&&!e.renderLookup){let W=document.createElement("input");W.id=O,W.type="text",W.className="kanuni-datagrid-edit-form-input",W.setAttribute("data-testid",O),W.disabled=!0,W.readOnly=!0;let Y=x.lookup.options?.find(j=>Object.is(j.value,M));return W.value=Y?Y.label:M==null?"":String(M),W}if(x.lookup&&e.renderLookup){let W=document.createElement("div");if(W.className="kanuni-datagrid-edit-form-lookup",x.lookup.options===null){let Y=document.createElement("input");return Y.type="text",Y.value="\u2026",Y.readOnly=!0,Y.disabled=!0,Y.className="kanuni-datagrid-editor",Y.setAttribute("data-testid",O),W.appendChild(Y),W}return W.appendChild(e.renderLookup({options:x.lookup.options,value:M,matchMode:x.lookup.matchMode,allowCustom:x.lookup.allowCustom,invalid:!!k,autoFocus:!1,testId:O,columnId:x.columnId,ariaLabel:x.label,surfaceClass:e.surfaceClass,onPortalOpen:e.onPortalOpen,noMatchText:t.editNoMatch,onChange:Y=>e.onChange(x.columnId,Y),commitOnPick:!1,onCommit:()=>e.onSave(),onCancel:e.onCancel})),W}if(x.dataType==="date"){let W=document.createElement("div");return W.className="kanuni-datagrid-edit-form-lookup",W.appendChild(fu({value:M,format:x.dateFormat,invalid:!!k,disabled:K,autoFocus:!1,testId:O,columnId:x.columnId,ariaLabel:x.label,surfaceClass:e.surfaceClass,onPortalOpen:e.onPortalOpen,t,onChange:Y=>e.onChange(x.columnId,Y),onCommit:()=>e.onSave(),onCancel:e.onCancel})),W}let G=document.createElement("input");return G.id=O,G.className="kanuni-datagrid-edit-form-input",G.setAttribute("data-testid",O),G.disabled=K,x.dataType==="boolean"?(G.type="checkbox",G.checked=M===!0,G.addEventListener("change",()=>e.onChange(x.columnId,G.checked)),G):(G.type=ag(x.dataType,M),k&&G.setAttribute("aria-invalid","true"),G.value=M==null?"":String(M),G.addEventListener("input",()=>e.onChange(x.columnId,og(G.value,x.dataType))),G)},m=e.getErrors();for(let x of e.fields){let k=document.createElement("label");k.className="kanuni-datagrid-edit-form-field",k.setAttribute("data-field-id",x.columnId);let M=document.createElement("span");M.className="kanuni-datagrid-edit-form-label",M.textContent=x.label;let K=document.createElement("span");K.style.display="contents",K.appendChild(h(x,m[x.columnId]??null));let O=document.createElement("span");O.className="kanuni-datagrid-edit-form-message",O.setAttribute("role","alert"),O.style.display="none",k.append(M,K,O),i.appendChild(k),s.set(x.columnId,{wrap:k,message:O,controlHost:K,field:x})}let c=document.createElement("div");c.className="kanuni-datagrid-edit-form-footer";let f=typeof navigator<"u"&&/Mac|iP(hone|ad)/.test(navigator.platform??""),C=document.createElement("span");C.className="kanuni-datagrid-edit-form-hint",C.textContent=t.formShortcut.replace("{key}",f?"\u2318":"Ctrl");let A=document.createElement("button");A.type="button",A.setAttribute("data-testid","dg-form-cancel"),A.textContent=t.cancel,A.addEventListener("click",()=>e.onCancel());let S=document.createElement("button");S.type="button",S.className="kanuni-datagrid-edit-form-save",S.setAttribute("data-testid","dg-form-save"),S.textContent=t.save,S.addEventListener("click",()=>e.onSave()),c.append(C,A,S),n.append(a,l,i,c),n.addEventListener("keydown",x=>{if(x.key==="Escape"){x.preventDefault(),x.stopPropagation(),e.onCancel();return}if(x.key==="Enter"&&(x.ctrlKey||x.metaKey)){x.preventDefault(),x.stopPropagation(),e.onSave();return}if(x.key==="Enter"&&!(x.target instanceof HTMLButtonElement)){x.preventDefault();return}if(x.key!=="Tab"||!u)return;let k=Array.from(n.querySelectorAll("input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled])"));if(k.length===0)return;let M=k[0],K=k[k.length-1];!x.shiftKey&&document.activeElement===K?(x.preventDefault(),M.focus()):x.shiftKey&&document.activeElement===M&&(x.preventDefault(),K.focus())});let F=()=>{let x=e.getErrors(),k=e.getSaving(),M=e.getSaveError();l.textContent=M??"",l.style.display=M?"":"none",S.disabled=k,A.disabled=k,S.textContent=k?t.editSaving:t.save;for(let[O,G]of s){let W=x[O]??null;G.message.textContent=W??"",G.message.style.display=W?"":"none",W?G.wrap.setAttribute("data-invalid",""):G.wrap.removeAttribute("data-invalid");let Y=G.controlHost.querySelector("input, .kanuni-datagrid-editor");Y&&Y.classList.toggle("kanuni-datagrid-editor--invalid",!!W)}let K=Object.keys(x)[0];K&&s.get(K)?.wrap.querySelector("input:not([disabled])")?.focus()};return queueMicrotask(()=>{if(!n.isConnected)return;let x=n.querySelector("input:not([disabled]), select:not([disabled]), textarea:not([disabled])");x?.focus(),x instanceof HTMLInputElement&&x.type==="text"&&x.select(),e.onNaturalHeight&&e.onNaturalHeight(n.clientHeight-i.clientHeight+i.scrollHeight)}),{element:n,refresh:F,setLookupOptions:(x,k)=>{let M=s.get(x);if(!M)return;M.field.lookup={...M.field.lookup,options:k};let K=e.getErrors();M.controlHost.textContent="",M.controlHost.appendChild(h(M.field,K[x]??null))},dispose:()=>n.remove()}}function Ld(e){let{grid:t,engine:u,mode:r,t:n,extension:a}=e,o=t.controller,l=er(r),i=null,s=async()=>{i=null;let z=await u.saveChanges();if(z.saved||z.superseded){ie();return}i={message:z.error??n.editSaveFailed,rowKey:z.rowKey,columnId:z.columnId},ie(),z.rowKey!==void 0&&z.columnId!==void 0&&(o.revealRow(z.rowKey),o.focusCell(z.rowKey,z.columnId))},h=()=>{i=null,u.cancelChanges()},m=null,c=null,f=null,C=null,A=null,S=new Map,F=0,x=z=>(m=null,u.beginRowEdit(z)),k=null,M=(z,te,pe)=>!l||u.isEditingRow()||!u.canEditRow(z)||(o.scrollToCell(z,te),!x(z))?!1:(r==="row"&&pe!==void 0&&(k=te,u.setRowEditValue(te,pe)),!0),K=async()=>{if(!u.getRowSession())return!1;let te=await u.saveRowEdit(o.getVisualColumnIds());return m=te.saved?null:te.error??null,te.saved?e.focusGrid():Ee(),te.saved},O=()=>{m=null,u.cancelRowEdit(),e.focusGrid()},G=z=>{let te=o.getColumnLayout(),pe=o.getColumnModel(),Se=++F;return[...te.left,...te.center,...te.right].filter(Te=>!Be(Te.state.id)).map(Te=>{let De=Te.state.id,Ve=pe.getDef(De),Yt=a.formLookup?a.formLookup(z,De,tt=>{F===Se&&f?.setLookupOptions(De,tt)}):Ve?.lookup?{options:jo(Ve)??[]}:void 0;return{columnId:De,label:Ve?.headerName??Ve?.field??De,dataType:pe.getEditorDataType(De),editable:u.canUpdate(z,De),dateFormat:Ve?.dateFormat,lookup:Yt}})},W=()=>A??e.formHeight??O0,Y=(z,te)=>ia({rowKey:z,fields:G(z),getValue:pe=>u.rowEditValue(pe),getErrors:()=>u.getRowSession()?.errors??{},getSaving:()=>u.getRowSession()?.saving??!1,getSaveError:()=>m,isNew:u.getRowSession()?.isNew??!1,popup:!te,inline:te,surfaceClass:e.surfaceClass(),renderLookup:a.renderLookup,onPortalOpen:e.trackPortal,t:n,onNaturalHeight:te?pe=>{let Se=Math.ceil(pe);if(Se>0&&Se!==A){A=Se;let Te=u.getRowSession();Te&&r==="form"&&o.setEditFormRow(Te.rowKey,{height:W(),atTop:Te.isNew})}}:void 0,onChange:(pe,Se)=>u.setRowEditValue(pe,Se),onSave:()=>{K()},onCancel:O}),j=()=>{S.clear(),f?.dispose(),f=null,C?.remove(),C=null};function J(){if(!l)return;let z=u.getRowSession();if(z&&r!=="row"?t.element.setAttribute("data-row-session",r):t.element.removeAttribute("data-row-session"),!z){c!==null&&(c=null,A=null,j(),r==="form"&&o.setEditFormRow(null));return}if(c===z.rowKey){f?.refresh();return}if(j(),c=z.rowKey,r==="form"){o.setEditFormRow(z.rowKey,{height:W(),atTop:z.isNew}),o.revealRow(z.rowKey);return}if(r==="popup"){let te=e.surfaceClass();C=document.createElement("div"),C.className=`kanuni-datagrid-detached kanuni-datagrid-edit-popup${te?` ${te}`:""}`;let pe=document.createElement("div");pe.className="kanuni-datagrid-edit-popup-overlay",pe.addEventListener("mousedown",()=>O()),f=Y(z.rowKey,!1),C.append(pe,f.element);let Se=nr(e.barHost);qt(Se).appendChild(jt(C,Se));return}o.revealRow(z.rowKey),queueMicrotask(()=>{let te=u.getRowSession();if(!te||te.rowKey!==c)return;let pe=t.element.querySelectorAll('[data-testid="dg-row-editor"]');if(pe.length===0)return;let Se=o.getFocus(),De=(Se&&String(Se.rowKey)===String(te.rowKey)?t.element.querySelector(`[data-testid="dg-row-editor"][data-column-id="${CSS.escape(Se.columnId)}"]`):null)??pe[0],Ve=k!==null&&De.getAttribute("data-column-id")===k;k=null,De.focus({preventScroll:!0}),De instanceof HTMLInputElement&&(Ve?De.setSelectionRange(De.value.length,De.value.length):De.select())})}let ee=z=>{let te=S.get(z);if(te)return te;let pe=o.getColumnModel(),Se=pe.getDef(z),Te=pe.getEditorDataType(z),De=u.rowEditValue(z),Ve=u.getRowSession()?.errors[z]??null,Yt=Se?.headerName??z,tt,Qt=a.resolveLookup?.(c,z);if(Qt&&Qt.options!==void 0&&a.renderLookup)tt=a.renderLookup({options:Qt.options??[],value:De,matchMode:Qt.matchMode,allowCustom:Qt.allowCustom,invalid:!!Ve,autoFocus:!1,testId:"dg-row-editor",columnId:z,ariaLabel:Yt,surfaceClass:e.surfaceClass(),noMatchText:n.editNoMatch,onChange:Re=>u.setRowEditValue(z,Re),commitOnPick:!1,onCommit:()=>{K()},onCancel:O});else if(Te==="date")tt=fu({value:De,format:Se?.dateFormat,invalid:!!Ve,autoFocus:!1,testId:"dg-row-editor",columnId:z,ariaLabel:Yt,surfaceClass:e.surfaceClass(),onPortalOpen:e.trackPortal,t:n,onChange:Re=>u.setRowEditValue(z,Re),onCommit:()=>{K()},onCancel:O});else{let Re=document.createElement("input");Re.className=`kanuni-datagrid-editor${Ve?" kanuni-datagrid-editor--invalid":""}`,Re.setAttribute("data-testid","dg-row-editor"),Re.setAttribute("data-column-id",z),Re.setAttribute("aria-label",Yt),Ve&&(Re.title=Ve),Te==="boolean"?(Re.type="checkbox",Re.checked=De===!0,Re.addEventListener("change",()=>u.setRowEditValue(z,Re.checked))):(Re.type=Te==="number"?"number":"text",Re.value=De==null?"":String(De),Re.addEventListener("input",()=>{let ut=Re.value;u.setRowEditValue(z,Te==="number"?ut===""?null:Number(ut):ut)})),Re.addEventListener("keydown",ut=>{ut.key==="Enter"?(ut.preventDefault(),ut.stopPropagation(),K()):ut.key==="Escape"?(ut.preventDefault(),ut.stopPropagation(),O()):ut.stopPropagation()}),tt=Re}return S.set(z,tt),tt},re=document.createElement("div");re.className="kanuni-datagrid-filter-bar kanuni-datagrid-edit-bar",re.setAttribute("data-testid","dg-edit-bar"),a.decorateBar?.(re);let B=(z,te,pe,Se)=>{let Te=document.createElement("button");return Te.type="button",pe&&(Te.className="kanuni-datagrid-filter-primary"),Te.setAttribute("data-testid",z),Te.textContent=te,Te.addEventListener("click",Se),Te},U=z=>{let te=document.createElement("span");return te.className="kanuni-datagrid-edit-form-error",te.setAttribute("data-testid",z),te.style.display="none",te},q=null,Ce=null,me=null,oe=null,de=null,we=null,Fe=null;r==="batch"&&(q=B("dg-save-changes",n.editSaveChanges,!0,()=>{s()}),Ce=B("dg-discard-changes",n.editDiscardChanges,!1,h),me=U("dg-save-error"),re.append(q,Ce,me)),r==="row"&&(oe=document.createElement("span"),oe.setAttribute("data-testid","dg-row-editing"),oe.className="kanuni-datagrid-filter-active",oe.style.display="none",de=B("dg-save-row",n.editSaveRow,!0,()=>{K()}),de.style.display="none",we=B("dg-cancel-row",n.cancel,!1,O),we.style.display="none",Fe=U("dg-row-save-error"),re.append(oe,de,we,Fe)),re.childElementCount>0&&e.barHost?.appendChild(re);function ie(){let z=u.hasChanges();if(q&&(q.style.display=z?"":"none",q.textContent=n.editSaveCount.replace("{n}",String(u.getChanges().length)),q.disabled=u.isSaving()),Ce&&(Ce.style.display=z?"":"none"),me&&(me.textContent=i?.message??"",me.style.display=i?"":"none"),oe&&de&&we&&Fe){let te=u.getRowSession(),pe=te?"":"none";oe.style.display=pe,de.style.display=pe,we.style.display=pe,te&&(oe.textContent=te.isNew?n.formAddTitle:n.editEditingRow.replace("{row}",String(te.rowKey)),de.disabled=te.saving,de.textContent=te.saving?n.editSaving:n.editSaveRow,we.disabled=te.saving),Fe.textContent=m??"",Fe.style.display=te&&m?"":"none"}re.style.display=Array.from(re.children).some(te=>te.style.display!=="none")?"":"none"}ie();function Ee(){i=null,ie(),J()}return{rowModeActive:l,beginRowEdit:x,openRowFromKeys:M,saveRowEdit:K,cancelRowEdit:O,saveChanges:s,cancelChanges:h,renderRowCell:z=>{if(!(r!=="row"||z.node.kind!=="data"||Be(z.columnId))&&u.isEditingRow(z.node.key))return u.canUpdate(z.node.key,z.columnId)?ee(z.columnId):e.defaultContent(z,u.rowEditValue(z.columnId))},renderEditForm:z=>{if(r!=="form")return;let te=u.getRowSession();if(!(!te||te.rowKey!==z))return(!f||f.element.getAttribute("data-row-key")!==String(z))&&(f?.dispose(),f=Y(z,!0)),f.element},onCellDoubleClick:z=>l?(z.node.kind==="data"&&!u.isEditingRow()&&u.canEditRow(z.node.key)&&x(z.node.key),!0):!1,handleRowKeys:z=>!u.isEditingRow()||z.target?.closest?.('[data-testid="dg-edit-form"]')?!1:z.key==="Enter"?(z.preventDefault(),K(),!0):z.key==="Escape"?(z.preventDefault(),O(),!0):!1,sync:Ee,dispose:()=>{j(),r==="form"&&c!==null&&o.setEditFormRow(null),c=null,t.element.removeAttribute("data-row-session"),re.remove()}}}function la(e,t,u,r,n={}){let a=e.controller,o=t.mode??"cell";t.formLabels&&(u={...u,...t.formLabels});let l=n.isColumnEditable??(B=>a.getColumnModel().getDef(B)?.editable!==!1),i=()=>{a.refreshCells(),G.sync(),n.onChange?.(),s.schedule("footer",()=>a.refreshSummaries())},s=ta(150),h=B=>a.getRowByKey(B),m=new U0({mode:o,messages:u,onChange:i,onAutoSaveFailed:B=>A(B),onCellValueChanged:B=>a.notifyCellValueChanged(B),onEditingStarted:B=>a.notifyEditingStarted(B),onEditingStopped:B=>a.notifyEditingStopped(B),onRowEditingStarted:B=>a.notifyRowEditingStarted(B),onRowEditingStopped:B=>a.notifyRowEditingStopped(B),editableColumns:B=>{let U=a.getColumnLayout();return[...U.left,...U.center,...U.right].map(q=>q.state.id).filter(q=>!Be(q)&&m.canUpdate(B,q))},readValue:(B,U)=>{let q=h(B);return q?a.getColumnModel().getStoredValue(q,U):void 0},formatForEdit:(B,U,q)=>a.formatCellForEdit(U,q),parseFromEdit:(B,U,q)=>a.parseCellFromEdit(U,q,B),readRow:h,isColumnEditable:l,applyValue:(B,U,q)=>a.writeCellValue(B,U,q),storedValue:(B,U,q)=>a.valueAfterWrite(B,U,q),onSave:B=>t.onSave?.(B),...n.engine});a.setPendingValueReader({effectiveValue:(B,U,q)=>m.changes.effectiveValue(B,U,q),effectiveRow:(B,U)=>m.changes.applyPendingTo(B,U),hasPending:()=>m.changes.hasChanges()}),a.setEditingDelegate({startEditingCell:(B,U)=>(a.scrollToCell(B,U),m.beginEdit(B,U)),stopEditing:async B=>{if(m.isEditingRow())return B?(G.cancelRowEdit(),!0):G.saveRowEdit();if(!m.getSession())return!1;if(B)return m.cancelEdit(),C(),!0;let U=m.commitEdit();return U&&C(),U},getEditingCells:()=>{let B=m.getRowSession();if(B)return a.getVisualColumnIds().filter(q=>!Be(q)&&m.canUpdate(B.rowKey,q)).map(q=>({rowKey:B.rowKey,columnId:q}));let U=m.getSession();return U?[{rowKey:U.rowKey,columnId:U.columnId}]:[]}});let c=!1,f=[a.events.on("rowsChanged",B=>{c=B.removed===0}),a.events.on("dataUpdated",()=>{let B=c;c=!1,!B&&m.retainKeys(new Set(a.getDataRows().map(U=>U.key)))})];function C(){let B=e.element.querySelector(".kanuni-datagrid-scroller");(B&&B.tabIndex>=0?B:e.element).focus({preventScroll:!0})}function A(B){let U=B.columnId!==void 0?a.getColumnModel().getDef(B.columnId)?.headerName??B.columnId:null,q=B.error??u.editSaveFailed;oa({title:u.editCannotSave,message:U?`${U}: ${q}`:q,confirmLabel:u.ok,surfaceClass:r.surfaceClass(),anchor:e.element}),B.rowKey!==void 0&&B.columnId!==void 0&&(a.revealRow(B.rowKey),a.focusCell(B.rowKey,B.columnId))}let S=(B,U={})=>{let q=m.getSession(),Ce=q?{rowKey:q.rowKey,columnId:q.columnId}:a.getFocus();if(!Ce||!m.commitEdit())return!1;let me=a.getColumnModel().runtime().filter(ie=>ie.state.visible).map(ie=>ie.state.id);if(ri(me,l,1)===null)return!1;let oe=a.getRows(),de=oe.findIndex(ie=>ie.key===Ce.rowKey);if(de<0)return!1;let we=ui(me,l,Ce.columnId,B);if(we===null){if(U.cycle===!1)return!1;let ie=B;do de+=ie;while(de>=0&&de<oe.length&&oe[de]?.kind!=="data");if(de<0||de>=oe.length)return!1;we=ri(me,l,B)}let Fe=oe[de];return!Fe||Fe.kind!=="data"?!1:(a.focusCell(Fe.key,we),a.scrollToCell(Fe.key,we),U.open===!0?m.beginEdit(Fe.key,we):(C(),!0))},F=B=>{if(m.getSession())return!1;let U=a.getFocus();if(!U||!l(U.columnId))return!1;let q=a.getColumnModel().getEditorDataType(U.columnId);if(q==="boolean"||q==="date")return!1;let Ce=q==="number"?Number.isNaN(Number(B))?null:Number(B):B;return Ce===null?!1:G.rowModeActive?G.openRowFromKeys(U.rowKey,U.columnId,Ce):(a.scrollToCell(U.rowKey,U.columnId),m.beginEdit(U.rowKey,U.columnId,Ce))},x=null,k=new Set,M=B=>{let U=()=>{k.delete(U),B()};k.add(U)},K=()=>{for(let B of[...k])B();k.clear()},O=(B,U)=>{let q=a.getColumnModel().getDef(B.columnId),Ce=B.node.data;if(q?.renderCell)return q.renderCell({value:U,row:Ce,node:B.node,column:q});let me=Ut(q,U);if(me!==null)return me;if(q?.valueFormatter){let oe=q.valueFormatter(U,Ce);return typeof oe=="string"?oe:String(oe??"")}return q?.dateFormat&&q.dataType==="date"?Tt(U,q.dateFormat):U==null?"":String(U)},G=Ld({grid:e,engine:m,mode:o,t:u,formHeight:t.formHeight,surfaceClass:()=>r.surfaceClass(),barHost:r.barHost,focusGrid:C,trackPortal:M,defaultContent:O,extension:n}),W=B=>{if(B.node.kind!=="data")return;let U=G.renderRowCell(B);if(U!==void 0)return U;if(!m.isEditing(B.node.key,B.columnId)){x&&x.rowKey===B.node.key&&x.columnId===B.columnId&&(x=null);let ie=m.getMode()==="cell"?void 0:m.changes.get(B.node.key,B.columnId),Ee=n.cellAdornment?.(B)??null;if(!ie&&!Ee)return;let z=ie?ie.newValue:B.value,te=document.createElement("span");te.style.display="contents";let pe=O(B,z);return typeof pe=="string"?te.appendChild(document.createTextNode(pe)):te.appendChild(pe),Ee&&te.appendChild(Ee),te}let q=m.getSession();if(x&&x.rowKey===q.rowKey&&x.columnId===B.columnId)return x.setError(q.validation.message),x.container;let Ce=a.getColumnModel().getDef(B.columnId),me=n.resolveLookup?.(q.rowKey,B.columnId)??{options:void 0},oe=document.createElement("span");oe.style.display="contents";let de=n.customEditors?Ce?.renderEditor:void 0;if(de){let ie=new Set,Ee=de({value:m.getSession()?.value??q.value,row:m.effectiveRow(q.rowKey),columnId:B.columnId,error:q.validation.message,onErrorChange:z=>(ie.add(z),()=>ie.delete(z)),setValue:z=>m.setEditValue(z),commit:()=>{m.commitEdit()&&C()},cancel:()=>{m.cancelEdit(),C()}});return oe.appendChild(Ee),x={rowKey:q.rowKey,columnId:B.columnId,container:oe,setError:z=>{for(let te of ie)te(z)}},oe}let we=ie=>{oe.textContent="",oe.appendChild(aa({value:m.getSession()?.value??q.value,dataType:a.getColumnModel().getEditorDataType(B.columnId),error:ie,seeded:q.seeded,onPortalOpen:M,options:me.options,allowCustom:me.allowCustom,matchMode:me.matchMode,renderLookup:n.renderLookup,dateFormat:Ce?.dateFormat,ariaLabel:Ce?.headerName??B.columnId,surfaceClass:r.surfaceClass(),t:u,onChange:Ee=>m.setEditValue(Ee),onCommit:Ee=>{m.commitEdit()&&(Ee==="down"&&a.moveFocus("down"),C())},onTab:Ee=>{if(t.focusCellOnTab===!1){m.commitEdit();return}S(Ee,{open:n.keepEditingOnTab===!0,cycle:t.focusCellOnCycle!==!1})},onCancel:()=>{m.cancelEdit(),C()}}))};we(q.validation.message);let Fe=q.validation.message;if(x={rowKey:q.rowKey,columnId:B.columnId,container:oe,setError:ie=>{if(ie===Fe)return;Fe=ie,oe.querySelector(".kanuni-datagrid-editor")?.classList.toggle("kanuni-datagrid-editor--invalid",!!ie);let z=oe.querySelector(".kanuni-datagrid-editor-error");ie&&!z&&(z=document.createElement("span"),z.id="kanuni-datagrid-editor-error",z.setAttribute("role","alert"),z.className="kanuni-datagrid-editor-error",oe.appendChild(z)),z&&(z.textContent=ie??"",ie||z.remove())}},me.options===null&&n.resolveLookup){let ie=n.resolveLookup,Ee=()=>{let te=ie(q.rowKey,B.columnId);te.options!==null&&x&&x.rowKey===q.rowKey&&x.columnId===B.columnId&&m.isEditing(q.rowKey,B.columnId)&&(me.options=te.options,we(m.getSession()?.validation.message??null))},z=a.events.on("cellsRefreshed",()=>{Ee(),ie(q.rowKey,B.columnId).options!==null&&z()})}return oe},Y=B=>{if(B.node.kind!=="data")return;let U=[];return m.isEditing(B.node.key,B.columnId)&&U.push("kanuni-datagrid-cell--editing"),m.changes.isDirty(B.node.key,B.columnId)&&U.push("kanuni-datagrid-cell--dirty"),m.isRemoved(B.node.key)&&U.push("kanuni-datagrid-cell--removed"),U.length?U.join(" "):void 0},j=B=>{B.node.kind==="data"&&(G.onCellDoubleClick(B)||m.canUpdate(B.node.key,B.columnId)&&(a.scrollToCell(B.node.key,B.columnId),m.beginEdit(B.node.key,B.columnId)))},J=B=>{let U=B.target;return U?.closest?.('[data-testid="dg-edit-form"], [data-testid="dg-row-message"]')?!0:(B.key==="Tab"||B.key==="Enter"||B.key===" ")&&!!U?.closest?.('[data-testid="dg-edit-bar"]')},ee=B=>J(B)?!1:G.handleRowKeys(B)?!0:B.key==="Escape"&&m.getSession()?(B.preventDefault(),m.cancelEdit(),!0):B.key==="Tab"&&t.focusCellOnTab!==!1&&!m.getSession()&&a.getFocus()&&S(B.shiftKey?-1:1,{open:n.keepEditingOnTab===!0,cycle:t.focusCellOnCycle!==!1})?(B.preventDefault(),!0):!1,re=B=>{if(J(B))return!1;let U=B.ctrlKey||B.metaKey;if(B.key==="F2"){let q=a.getFocus();if(q)return B.preventDefault(),G.rowModeActive?(G.openRowFromKeys(q.rowKey,q.columnId),!0):(a.scrollToCell(q.rowKey,q.columnId),m.beginEdit(q.rowKey,q.columnId),!0)}return t.editOnKeyPress!==!1&&!U&&!B.altKey&&B.key.length===1&&B.key!==" "&&!m.getSession()&&F(B.key)?(B.preventDefault(),!0):!1};return{engine:m,renderCellContent:W,getCellClassName:Y,onCellDoubleClick:j,handleKeyDown:B=>ee(B)||re(B),handleSessionKeys:ee,handleOpenKeys:re,editAdjacentCell:S,focusGrid:C,trackPortal:M,defaultContent:O,renderEditForm:G.renderEditForm,beginRowEdit:G.beginRowEdit,saveRowEdit:G.saveRowEdit,cancelRowEdit:G.cancelRowEdit,saveChanges:G.saveChanges,cancelChanges:G.cancelChanges,dispose:()=>{K(),G.dispose(),m.dispose(),s.cancelAll(),f.forEach(B=>B()),a.setPendingValueReader(null),a.setEditingDelegate(null)}}}function Pd(e,t){return!e||Be(t)?!1:e.editable!==!1&&e.lookup==null&&e.renderEditor==null&&e.allowFormulas!==!0}var Gd=["rules","crud","allowAdding","allowUpdating","allowDeleting","onInitNewRow","onRowInserted","onRowUpdated","onRowRemoved","insertKey","appendOnArrowDown","newRowPosition","keepEditingOnTab","commandColumn","commandLabels","confirmDelete","confirmDeleteMessage","range"];var ar=60,Ei=24,ig=0,Vr=36,or=28,zr="application/x-kanuni-row",Hr=new Map,bi=new Set,Ai=5e3,Gu=0,lg=["columnStateChanged","sortChanged"],sg=["columnStateChanged"],dg=["contentReady","viewportChanged","filterChanged","selectionChanged","focusChanged","summariesChanged","cellsRefreshed","findChanged"],L=(e,t="div")=>{let u=document.createElement(t);return u.className=e,u},Kr="http://www.w3.org/2000/svg";function cg(e,t){let u=n=>{t&&console.warn(`[datagrid] ${n} is an Enterprise feature \u2014 use createEnterpriseGrid from @kanunilabs/datagrid-enterprise to use it.`)};if(e.viewportDatasource)throw new Error("[datagrid] viewportDatasource is an Enterprise feature \u2014 use createEnterpriseGrid from @kanunilabs/datagrid-enterprise to use it.");let r={...e};if(r.dataSource!=null&&!Array.isArray(r.dataSource)&&r.grouping&&(u("grouping a server-side DataSource is"),delete r.grouping),r.columns?.some(n=>n.spanRows)&&(u("cell span/merge (spanRows) is"),r={...r,columns:r.columns.map(n=>n.spanRows?{...n,spanRows:void 0}:n)}),r.tree&&(u("tree data is"),delete r.tree),r.masterDetail&&(u("master-detail is"),delete r.masterDetail),r.grouping){let{groupBy:n,groupSummaries:a}=r.grouping,o=n==null?[]:typeof n=="string"?[n]:n;(o.length>1||a)&&(u("multi-level grouping and group summaries are"),r={...r,grouping:{...r.grouping,groupBy:o.slice(0,1),groupSummaries:!1}})}return r}var hg={columnResize:"use `resizable`",columnReorder:"use `reorderable`",groupPanel:"use `grouping: { panel: true }`",autoColumns:"",loadingOverlay:"",onReady:"the controller is returned directly \u2014 use `grid.controller`",className:"style the host element you pass in",style:"style the host element you pass in",toolbarItemsBefore:"",renderRow:"",cardView:"",onCardViewChange:"",announcements:"",filterPanelLabels:"",filterIconMode:"",autoSizeStrategy:"",footerMenu:"",showRowCount:"",onOpenFilterBuilder:"",renderOverlay:"",cellMenu:""},da=new Set;function mg(e){for(let t of Object.keys(e)){let u=hg[t];u===void 0||u===""||da.has(t)||(da.add(t),console.warn(`[datagrid] \`${t}\` is a React-only option \u2014 ${u}.`))}}function pg(){let e=document.createElementNS("http://www.w3.org/2000/svg","svg");e.setAttribute("width","14"),e.setAttribute("height","14"),e.setAttribute("viewBox","0 0 16 16"),e.setAttribute("aria-hidden","true"),e.setAttribute("focusable","false");let t=document.createElementNS("http://www.w3.org/2000/svg","path");return t.setAttribute("d","M8 1v8m0 0L5 6m3 3 3-3M2 11v2a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-2"),t.setAttribute("fill","none"),t.setAttribute("stroke","currentColor"),t.setAttribute("stroke-width","1.5"),t.setAttribute("stroke-linecap","round"),t.setAttribute("stroke-linejoin","round"),e.appendChild(t),e}function fg(){let e=document.createElementNS(Kr,"svg");e.setAttribute("width","11"),e.setAttribute("height","11"),e.setAttribute("viewBox","0 0 16 16"),e.setAttribute("aria-hidden","true"),e.setAttribute("focusable","false");let t=document.createElementNS(Kr,"path");return t.setAttribute("d","M1.5 2.5h13L9.5 8.6v4.3l-3 1.6V8.6L1.5 2.5Z"),t.setAttribute("fill","currentColor"),t.setAttribute("stroke","currentColor"),t.setAttribute("stroke-width","0.6"),t.setAttribute("stroke-linejoin","round"),e.appendChild(t),e}function gg(e){let t=document.createElementNS(Kr,"svg");t.setAttribute("width","14"),t.setAttribute("height","14"),t.setAttribute("viewBox","0 0 16 16"),t.setAttribute("aria-hidden","true"),t.setAttribute("focusable","false");let u=document.createElementNS(Kr,"rect");u.setAttribute("x","2"),u.setAttribute("y","2"),u.setAttribute("width","12"),u.setAttribute("height","12"),u.setAttribute("rx","2"),u.setAttribute("fill","none"),u.setAttribute("stroke","currentColor"),u.setAttribute("stroke-width","1.3"),t.appendChild(u);let r=n=>{let a=document.createElementNS(Kr,"path");a.setAttribute("d",n),a.setAttribute("fill","none"),a.setAttribute("stroke","currentColor"),a.setAttribute("stroke-width","1.3"),a.setAttribute("stroke-linecap","round"),t.appendChild(a)};return r("M5 8h6"),e&&r("M8 5v6"),t}function Od(e,t){let u=e??(t==="number"||t==="bigint"?"right":"left");return u==="right"?"kanuni-datagrid-cell kanuni-datagrid-cell--number":u==="center"?"kanuni-datagrid-cell kanuni-datagrid-cell--center":"kanuni-datagrid-cell"}function sa(e){let t="kanuni-datagrid-root";return e.dark&&(t+=" kanuni-datagrid-dark"),e.theme&&(t+=` kanuni-datagrid-theme-${e.theme}`),e.palette&&(t+=` kanuni-datagrid-palette-${e.palette}`),e.density&&(t+=` kanuni-datagrid-density-${e.density}`),t}function Hd(e,t){let{theme:u,palette:r,density:n,dark:a,striped:o=!0,rowNumbers:l=!1,locale:i="en",footer:s=!1,footerMenu:h=!0,footerPosition:m="bottom",notes:c,pinnedTopRows:f=[],pinnedBottomRows:C=[],resizable:A=!0,reorderable:S=!0,autoHeaderHeight:F=!1,filterRow:x=!1,headerFilter:k=!1,filterIconMode:M="hover",filterPanel:K=!1,onOpenFilterBuilder:O,focusedRow:G=!1,focusedRowKey:W,onFocusedRowChanged:Y,onRowClick:j,onRowActivate:J,autoSizeStrategy:ee="none",renderRow:re,cardView:B,onCardViewChange:U,announcements:q=!0,filterPanelLabels:Ce,showRowCount:me=!1,toolbarColumnChooser:oe=!1,cellMenu:de=!0,rowMenu:we,headerMenu:Fe,rowDrag:ie,alignedGrids:Ee,printLayout:z,renderCellContent:te,getCellClassName:pe,getRowStatusSource:Se,rowStatus:Te,onCellPointerDown:De,onCellPointerEnter:Ve,onCellDoubleClick:Yt,editing:tt,onHeaderClick:Qt,getHeaderClassName:Re,renderHeaderLabel:ut,renderDetail:xi,renderEditForm:vi,enterpriseEdition:Xt=!1,stateStoring:Fi,tooltip:gt=!0,renderOverlay:ca,filterDebounce:zd,toolbar:Di=!1,highlightSearch:Kd=!0,sortable:Si=!0,toolbarItemsAfter:$d,toolbarItemsBefore:Wd,toolbarExcel:_d=!1,toolbarPdf:Ud=!1,searchDebounce:qd=200,...jd}=t;mg(t),me&&!da.has("showRowCount:deprecated")&&(da.add("showRowCount:deprecated"),console.warn("[datagrid] `showRowCount` was retired on 2026-08-15 and does nothing in either renderer. The row count lives in the status bar (Enterprise) or the pager."));let H=pu(i),{emptyText:Yd=H.noData,loadingText:Qd=H.busy,loadingOverlay:ha=!0,...mt}=jd,ki=typeof ha=="number"?ha:300,ma=li(H),Bi=Ci(H);if((!mt.columns||mt.columns.length===0)&&t.autoColumns!==!1){let d=Array.isArray(mt.dataSource)?mt.dataSource:[];mt.columns=s0(d,typeof t.autoColumns=="object"?t.autoColumns:{})}mt.rowHeight===void 0&&(mt.rowHeight=ua(u,n,28));let Xd=Xt?mt:cg(mt,!!t.debugMode),gu=Xt?c:void 0;!Xt&&c&&t.debugMode&&console.warn("[datagrid] cell notes are an Enterprise feature \u2014 use createEnterpriseGrid from @kanunilabs/datagrid-enterprise to show them.");let E=new hd(Xd);E.setEnterpriseEdition(Xt);let Cu=tt!=null&&typeof tt=="object"&&tt.enabled!==!1,pt=null;if(Cu&&t.debugMode)for(let d of Gd)tt[d]!==void 0&&console.warn(`[datagrid] editing.${d} is an Enterprise feature \u2014 use createEnterpriseGrid from @kanunilabs/datagrid-enterprise to use it.`);let ir=Cu?d=>pt?.renderCellContent(d)??te?.(d):te,pa=Cu?d=>{let p=pt?.getCellClassName(d),y=pe?.(d);return p&&y?`${p} ${y}`:p??y}:pe,Ti=Cu?d=>{Yt?.(d),pt?.onCellDoubleClick(d)}:Yt,Zd=Cu?(d,p)=>pt?.renderEditForm(d,p)??vi?.(d,p)??"":vi,bt=H0(Te);W!=null&&E.focusRow(W);let ne=L(sa(t));Ed(ne,t.portalContainer),ne.style.height="100%",ne.setAttribute("role","grid"),ne.setAttribute("aria-label",t.ariaLabel??t.gridId),ne.setAttribute("data-grid-id",t.gridId),k0(i)&&ne.setAttribute("dir","rtl"),u&&ne.setAttribute("data-theme",u),F&&ne.setAttribute("data-auto-header-height",""),ne.style.setProperty("--dg-row-height",`${E.getRowHeight()}px`);let ge=L("kanuni-datagrid-scroller"),ze=L("kanuni-datagrid-canvas"),Pe=L("kanuni-datagrid-header");Pe.setAttribute("role","row");let qe=L("kanuni-datagrid-rows");qe.style.position="relative";let Ae=L("kanuni-datagrid-viewport");qe.appendChild(Ae);let Ct=L("kanuni-datagrid-pinned-rows kanuni-datagrid-pinned-rows--top"),Zt=L("kanuni-datagrid-pinned-rows kanuni-datagrid-pinned-rows--bottom"),yu=()=>f.length+E.getPinnedRows("top").length,Ri=()=>C.length+E.getPinnedRows("bottom").length,rt=L("kanuni-datagrid-sticky-groups");rt.setAttribute("aria-hidden","true");let yt=s,Nt=m==="top",je=L(`kanuni-datagrid-footer-row kanuni-datagrid-footer-row--${Nt?"top":"bottom"}`);if(je.setAttribute("role","row"),je.setAttribute("aria-label",H.columnTotalsAria),h){let d=p=>{let g=p.target?.closest(".kanuni-datagrid-footer-cell")?.getAttribute("data-column-id");!g||Be(g)||(p.preventDefault(),Tc(g,{left:p.clientX,top:p.clientY}))};je.addEventListener("click",d),je.addEventListener("contextmenu",d)}let $r=L("kanuni-datagrid-bands-host");$r.style.display="contents";let Jt=L("kanuni-datagrid-filter-row");Jt.setAttribute("role","row"),ze.append($r,Pe),x&&ze.append(Jt);let wu=x?2:1,fa=0,ga=()=>fa+wu+yu();je.style.setProperty("--dg-pinned-gap",String(Nt?wu:0)),Ct.style.setProperty("--dg-pinned-gap",String(wu+(yt&&Nt?1:0))),yt&&Nt&&ze.append(je),yu()>0&&ze.append(Ct),E.hasStickyGroupHeaders()&&(rt.style.setProperty("--dg-pinned-gap",String(wu+(yt&&Nt?1:0))),rt.style.setProperty("--dg-sticky-below",`${yu()>0?yu()*E.getRowHeight()+1:0}px`),ze.append(rt)),ze.append(qe),Ri()>0&&ze.append(Zt),yt&&!Nt&&ze.append(je),ge.appendChild(ze);let Mt=L("kanuni-datagrid-toolbar"),wt=L("kanuni-datagrid-pager");wt.setAttribute("role","navigation"),wt.setAttribute("aria-label",H.pagerAria);let Eu=L("kanuni-datagrid-filter-panel"),bu=!!mt.grouping?.panel,nt=L("kanuni-datagrid-group-panel"),lr=Ad(B),sr=!1,Wr=[],eu=re,dr=L("kanuni-datagrid-cardbar");dr.hidden=!0;let Ni=L("kanuni-datagrid-cardbar-label","label"),Mi=L("","span");Mi.textContent=H.cardSortBy;let At=L("kanuni-datagrid-cardbar-select","select"),Au=L("kanuni-datagrid-cardbar-dir","button");Au.type="button",Ni.append(Mi,At),dr.append(Ni,Au),At.addEventListener("change",()=>{let d=E.getSort()[0];E.setSort(At.value?[{columnId:At.value,direction:d?.direction??"asc"}]:[])}),Au.addEventListener("click",()=>{let d=E.getSort()[0];d&&E.setSort([{columnId:d.columnId,direction:d.direction==="desc"?"asc":"desc"}])});let Jd=d=>{let[p,...y]=Sd(E.getColumnModel(),Wr,d.row),g=L("kanuni-datagrid-card");g.setAttribute("role","gridcell");let b=L("kanuni-datagrid-card-title");if(b.textContent=p?.text??"",g.appendChild(b),y.length){let v=L("kanuni-datagrid-card-fields","dl");for(let D of y){let w=L("kanuni-datagrid-card-field"),T=L("","dt");T.textContent=D.label;let R=L("","dd");R.textContent=D.text,w.append(T,R),v.appendChild(w)}g.appendChild(v)}return g},Ii=()=>{if(!sr||!lr)return;let d=E.getColumnModel(),p=Fd(d,lr);p.join("\0")!==Wr.join("\0")&&(Wr=p,E.setDataRowHeight(Dd(p.length)));let y=Si?d.getOrder().filter(D=>d.getState(D)?.visible!==!1&&d.getDef(D)?.sortable!==!1):[];dr.hidden=y.length===0;let g=["",...y].join("\0");if(At.dataset.ids!==g){At.dataset.ids=g,At.replaceChildren();let D=document.createElement("option");D.value="",D.textContent=H.none,At.appendChild(D);for(let w of y){let T=document.createElement("option");T.value=w,T.textContent=d.getDef(w)?.headerName??w,At.appendChild(T)}}let b=E.getSort()[0];At.value=b?.columnId??"",Au.hidden=!b;let v=b?.direction==="desc";Au.textContent=v?"\u2193":"\u2191",Au.setAttribute("aria-label",v?H.sortAsc:H.sortDesc),Au.title=v?H.sortAsc:H.sortDesc},Li=!1,ec=d=>{let p=xd(d,lr);if(p!==sr){for(sr=p,ne.classList.toggle("kanuni-datagrid-cards",p),eu=p?Jd:re,Wr=[],p?Ii():(dr.hidden=!0,E.setDataRowHeight(null));Pt.length;)Pt.pop().root.remove();un(),Li?U?.(p):queueMicrotask(()=>U?.(p))}};Di&&ne.appendChild(Mt),bu&&ne.appendChild(nt),lr&&ne.appendChild(dr),ne.appendChild(ge),K&&ne.appendChild(Eu);let _r=mt.pagination;_r&&_r.enabled!==!1&&ne.appendChild(wt);let cr=L("kanuni-datagrid-loading-overlay"),Pi=L("kanuni-datagrid-loading-card"),Gi=L("kanuni-datagrid-loading-spinner","span");Gi.setAttribute("aria-hidden","true");let Oi=L("kanuni-datagrid-loading-label","span");Oi.textContent=Qd,Pi.append(Gi,Oi),cr.appendChild(Pi),cr.style.display="none";let hr=L("kanuni-datagrid-sr-only","div");hr.setAttribute("role","status"),hr.setAttribute("aria-live","polite"),hr.setAttribute("aria-atomic","true");let Ur=L("kanuni-datagrid-empty");Ur.textContent=Yd,Ur.style.display="none",ne.append(cr,Ur),q&&ne.appendChild(hr),e.appendChild(ne);let mr=mt.selection,Ca=E.getGroupDisplay()!=="fullWidth",Hi=E.getGroupDisplay()==="column",Ou=(mr?.mode??"none")!=="none"&&(mr?.checkboxColumn??!1),tc=(mr?.rowClick??(Ou?"toggle":"replace"))==="toggle",Hu=E.hasMasterDetail()&&!!xi,ya=()=>(l?1:0)+(Hu?1:0)+(Ou?1:0),wa=bt?.icons===!0,Vi=wa?Ei:0,Ea=Vi,ba=Ea+(l?ar:0),zi=ba+(Hu?or:0),xt=Vi+(l?ar:0)+(Hu?or:0)+(Ou?Vr:0);E.setLeadWidth(xt);let pr=!!ie?.enabled,fr=ie?.group??null,Ki=ie?.allowReordering??!0,$i=ie?.allowDropInsert??fr!==null,It=null,qr=null,jr=!1,xu=null,tu=null;function Vu(d){xu=d;for(let p of Ae.querySelectorAll(".kanuni-datagrid-row")){let y=p.getAttribute("data-row-key"),g=d!==null&&y===String(d.key);p.classList.toggle("kanuni-datagrid-row--drop-before",g&&d.side==="before"),p.classList.toggle("kanuni-datagrid-row--drop-after",g&&d.side==="after")}}let Wi=(d,p)=>{let y=p.getBoundingClientRect();return d.clientY<y.top+y.height/2?"before":"after"},_i=d=>d.dataTransfer?.types.includes(zr)?It!==null?Ki:$i&&fr!==null:!1;function Ui(d,p,y){let g=null;try{let b=d.dataTransfer?.getData(zr);g=b?JSON.parse(b):null}catch{g=null}if(g){if(g.gridId===E.gridId){if(!Ki)return;if(ie?.onReorder){ie.onReorder({dragKey:g.rowKey,targetKey:p,position:y,row:E.getRowByKey(g.rowKey)});return}E.moveRow(g.rowKey,p,y);return}!$i||fr===null||g.group!==fr||ie?.onAdd?.({row:g.row,rowKey:g.rowKey,otherGridId:g.gridId,targetKey:p,position:y})}}let uc=d=>{let p=nu(d);if(!p||p.node.kind!=="data"||!d.dataTransfer)return;It=p.node.key,qr=p.node.key,jr=!1;let y={gridId:E.gridId,group:fr,rowKey:p.node.key,row:p.node.data};d.dataTransfer.setData(zr,JSON.stringify(y)),d.dataTransfer.setData("text/plain",String(p.node.key)),d.dataTransfer.effectAllowed="move",E.notifyRowDrag("enter",{rowKey:p.node.key})},rc=d=>{if(!_i(d))return;d.preventDefault(),d.dataTransfer&&(d.dataTransfer.dropEffect="move");let p=nu(d);if(!p||p.node.kind!=="data")return;if(It===p.node.key){tu=null,Vu(null);return}let y=d.target.closest(".kanuni-datagrid-row"),g=Wi(d,y),b=xu?.key!==p.node.key||xu.side!==g;tu={key:p.node.key,side:g},Vu({key:p.node.key,side:g}),b&&It!==null&&E.notifyRowDrag("move",{rowKey:It,overKey:p.node.key,position:g})},nc=d=>{if(!_i(d)){Vu(null);return}d.preventDefault();let p=nu(d);if(jr=!0,p&&p.node.kind==="data"){let y=d.target.closest(".kanuni-datagrid-row"),g=Wi(d,y);tu={key:p.node.key,side:g},Ui(d,p.node.key,g)}else tu=null,Ui(d,null,"after");It=null,Vu(null)},ac=()=>{qr!==null&&E.notifyRowDragEnd({rowKey:qr,dropped:jr,overKey:tu?.key??null,position:tu?.side??null}),jr=!1,qr=null,It=null,tu=null,Vu(null)},oc=d=>{let p=d.relatedTarget;p&&qe.contains(p)||It!==null&&(tu=null,Vu(null),E.notifyRowDrag("leave",{rowKey:It}))},vu=z===void 0||z===!1?null:(()=>{let d=z===!0?{}:z;return{always:d.always??!1,maxRows:d.maxRows??Ai,onLimit:d.onLimit}})(),zu=!1;function Aa(d){zu!==d&&(zu=d,ne.classList.toggle("kanuni-datagrid-print",d),d?(Gu++,document.documentElement.classList.add("kanuni-datagrid-printing")):(Gu--,Gu<=0&&(Gu=0,document.documentElement.classList.remove("kanuni-datagrid-printing"))),un())}let qi=null;if(vu&&!vu.always){let d=()=>{let y=E.getRows().length;if(y>vu.maxRows){E.isDebugMode()&&console.warn(`[datagrid] print layout skipped: ${y} rows exceeds maxRows (${vu.maxRows}). Printing the visible rows instead \u2014 use exportPdf() for the whole result.`),vu.onLimit?.({rows:y,maxRows:vu.maxRows});return}Aa(!0)},p=()=>Aa(!1);window.addEventListener("beforeprint",d),window.addEventListener("afterprint",p),qi=()=>{window.removeEventListener("beforeprint",d),window.removeEventListener("afterprint",p)}}let Lt=0,vt=[],at=0,xa=0;function va(){let d=E.getColumnLayout(),p=E.getVirtualWindow().columns,y=[],g=(v,D,w,T)=>{let R=v.def;y.push({def:R,id:v.state.id,width:v.state.width,pinned:D,inset:w,className:Od(R.align,R.dataType)+(D?" kanuni-datagrid-cell--pinned":"")+(R.autoHeight?" kanuni-datagrid-cell--wrap":""),visualIndex:T})};d.left.forEach((v,D)=>g(v,"left",d.leftOffsets[D]+xt,D));for(let v=p.start;v<p.end&&v<d.center.length;v++)g(d.center[v],null,0,d.left.length+v);d.right.forEach((v,D)=>g(v,"right",d.rightOffsets[D],d.left.length+d.center.length+D)),vt=y,at=p.offsetX;let b=(d.centerOffsets[Math.min(p.end,d.center.length)]??0)-(d.centerOffsets[Math.min(p.start,d.center.length)]??0);xa=Math.max(0,d.centerWidth-p.offsetX-b),ze.style.minWidth=`${d.totalWidth+xt}px`}let Yr=26;function ic(){let d=E.getColumnLayout(),p=E.getVirtualWindow().columns,y=[...d.left,...d.center.slice(p.start,Math.min(p.end,d.center.length)),...d.right],g=i0(y);if(fa=g,$r.textContent="",Pe.style.top=`${g*Yr}px`,ne.style.setProperty("--dg-band-offset",`${g*Yr}px`),g===0)return;l0(y,g).forEach((v,D)=>{let w=L("kanuni-datagrid-band-row");if(w.style.top=`${D*Yr}px`,w.style.height=`${Yr}px`,xt>0){let T=L("kanuni-datagrid-band-cell kanuni-datagrid-band-cell--spacer kanuni-datagrid-band-cell--pinned");T.style.width=`${xt}px`,T.style.flex="none",T.style.insetInlineStart="0px",w.appendChild(T)}if(at>0){let T=L("kanuni-datagrid-spacer");T.style.width=`${at}px`,T.style.flex="none",w.appendChild(T)}for(let T of v){let R=L(`kanuni-datagrid-band-cell${T.spacer?" kanuni-datagrid-band-cell--spacer":""}`);if(R.style.width=`${T.width}px`,R.style.flex="none",!T.spacer){if(T.columnIds.length>0){let I=_t(E.getColumnModel().getDef(T.columnIds[0])).slice(0,D+1);if(I.length===D+1&&E.isBandCollapsible(I)){let $=E.isBandCollapsed(I),X=document.createElement("button");X.type="button",X.className="kanuni-datagrid-band-toggle",X.setAttribute("aria-expanded",String(!$));let Z=$?H.expandColumnGroup:H.collapseColumnGroup;X.setAttribute("aria-label",Z),X.title=Z,X.appendChild(gg($)),X.addEventListener("click",Q=>{Q.stopPropagation(),E.toggleBand(I)}),R.appendChild(X)}}let V=L("kanuni-datagrid-band-label","span");V.textContent=T.label,R.appendChild(V)}w.appendChild(R)}$r.appendChild(w)})}let Ku=null,Qr=null;function Xr(d,p){Qr&&Qr!==d&&Qr.classList.remove("kanuni-datagrid-header-cell--drop-before","kanuni-datagrid-header-cell--drop-after"),Qr=d,d&&(d.classList.toggle("kanuni-datagrid-header-cell--drop-before",p==="before"),d.classList.toggle("kanuni-datagrid-header-cell--drop-after",p==="after"))}function ji(){if(!Ku)return;let d=E.getSelectedCount(),p=E.getSelectableCount(),y=p>0&&d>=p;Ku.checked=y,Ku.indeterminate=!y&&d>0,Ku.disabled=p===0&&d===0}let gr=null;function Yi(d){gr=d;for(let p of Array.from(Pe.querySelectorAll(".kanuni-datagrid-header-cell[data-column-id]")))p.tabIndex=p.getAttribute("data-column-id")===d?0:-1}function Fa(){ic();let d=document.activeElement,p=d&&Pe.contains(d)?d.closest("[data-column-id]")?.getAttribute("data-column-id")??null:null,y=E.getColumnLayout(),g=[...y.left,...y.center,...y.right].map(w=>w.state.id);(!gr||!g.includes(gr))&&(gr=g[0]??null);let b=E.getSort(),v=new Map(b.map((w,T)=>[w.columnId,{direction:w.direction,order:T}]));if(Pe.textContent="",Ku=null,wa){let w=L("kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-status-cell");w.setAttribute("role","presentation"),w.setAttribute("aria-hidden","true"),w.style.width=`${Ei}px`,w.style.flex="none",w.style.insetInlineStart="0px",Pe.appendChild(w)}if(l){let w=L("kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-rownum-cell");w.setAttribute("role","columnheader"),w.style.width=`${ar}px`,w.style.flex="none",w.style.insetInlineStart=`${Ea}px`,Pe.appendChild(w)}if(Hu){let w=L("kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-detail-toggle-cell");w.setAttribute("role","columnheader"),w.setAttribute("aria-label",H.detailsAria),w.style.width=`${or}px`,w.style.flex="none",w.style.insetInlineStart=`${ba}px`,Pe.appendChild(w)}if(Ou){let w=L("kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-select-cell");w.setAttribute("role","columnheader"),w.style.width=`${Vr}px`,w.style.flex="none",w.style.insetInlineStart=`${zi}px`;let T=document.createElement("input");T.type="checkbox",T.setAttribute("aria-label",H.selectAllRows),T.addEventListener("change",()=>{E.getSelectedCount()>0?E.clearSelection():E.selectAll()}),w.appendChild(T),Pe.appendChild(w),Ku=T,ji()}let D=!1;for(let w of vt){if(!w.pinned&&!D){if(at>0){let P=document.createElement("div");P.style.flex=`0 0 ${at}px`,Pe.appendChild(P)}D=!0}let T=Si&&w.def.sortable!==!1,R=w.id===Lu,V=v.get(R?E.getGroupLevels()[0]??w.id:w.id),I=L(`kanuni-datagrid-header-cell${T?" kanuni-datagrid-header-cell--sortable":""}${w.pinned?" kanuni-datagrid-header-cell--pinned":""}${w.def.wrapHeaderText?" kanuni-datagrid-header-cell--wrap":""}`);I.setAttribute("role","columnheader"),I.setAttribute("data-column-id",w.id),I.tabIndex=w.id===gr?0:-1,I.addEventListener("focus",()=>Yi(w.id)),I.setAttribute("aria-sort",V?V.direction==="asc"?"ascending":"descending":"none");let $=w.def.headerTooltip;$&&(I.title=$),I.style.width=`${w.width}px`,I.style.flex="none",w.pinned==="left"&&(I.style.insetInlineStart=`${w.inset}px`),w.pinned==="right"&&(I.style.insetInlineEnd=`${w.inset}px`);let X=L("kanuni-datagrid-header-label","span");X.id=`${encodeURIComponent(t.gridId)}-hdr-${encodeURIComponent(w.id)}`,I.setAttribute("aria-labelledby",X.id);let Z=ut?.(w.id);if(Z)X.appendChild(Z);else if(w.def.renderHeader){let P=w.def.renderHeader({column:w.def});typeof P=="string"?X.textContent=P:X.appendChild(P)}else X.textContent=w.def.headerName??w.id;if(I.appendChild(X),V){let P=L("kanuni-datagrid-sort-indicator","span");if(P.setAttribute("aria-hidden","true"),P.textContent=V.direction==="asc"?"\u25B2":"\u25BC",I.appendChild(P),b.length>1&&!R){let ue=L("kanuni-datagrid-sort-order","span");ue.setAttribute("aria-hidden","true"),ue.textContent=String(V.order+1),I.appendChild(ue)}}if(T||Qt){let P=w.id;I.addEventListener("click",ue=>{Qt?.(P,ue)||T&&E.toggleSort(P,ue.shiftKey)})}let Q=Fe!==!1&&!Be(w.id);if(Q){let P=w.id;I.addEventListener("contextmenu",ue=>{ue.preventDefault(),pl(P,{left:ue.clientX,top:ue.clientY})})}let N=null;if(k&&w.def.filterable!==!1){N=document.createElement("button"),N.type="button",N.tabIndex=-1;let P=E.getColumnFilter(w.id)!==null;N.className=`kanuni-datagrid-filter-button${P?" kanuni-datagrid-filter-button--active":""}${M==="always"?" kanuni-datagrid-filter-button--pinned":""}`,N.setAttribute("aria-haspopup","dialog"),N.setAttribute("aria-label",Et(H.filterPopupAria,{column:w.def.headerName??w.id})),N.appendChild(fg());let ue=N;N.addEventListener("click",se=>{se.stopPropagation(),hl(w.id,ue)}),I.appendChild(N)}if(I.addEventListener("keydown",P=>{let ue=g.indexOf(w.id),se;if(P.key==="ArrowRight")se=g[Math.min(g.length-1,ue+1)];else if(P.key==="ArrowLeft")se=g[Math.max(0,ue-1)];else if(P.key==="Home")se=g[0];else if(P.key==="End")se=g[g.length-1];else if(N&&P.altKey&&P.key==="ArrowDown")hl(w.id,N);else if(T&&(P.key==="Enter"||P.key===" "))E.toggleSort(w.id,P.shiftKey);else if(Q&&(P.key==="ContextMenu"||P.key==="F10"&&P.shiftKey)){let xe=I.getBoundingClientRect();pl(w.id,{left:xe.left,top:xe.bottom})}else return;P.preventDefault(),P.stopPropagation(),se&&se!==w.id&&(Yi(se),Ia(se)?.focus())}),S&&w.def.reorderable!==!1&&(I.draggable=!0,I.addEventListener("dragstart",P=>{P.dataTransfer?.setData("text/x-kanuni-column",w.id),P.dataTransfer&&(P.dataTransfer.effectAllowed="move")}),I.addEventListener("dragover",P=>{if(!P.dataTransfer?.types.includes("text/x-kanuni-column"))return;P.preventDefault();let ue=I.getBoundingClientRect(),se=P.clientX<ue.left+ue.width/2;Xr(I,se?"before":"after")}),I.addEventListener("dragleave",P=>{let ue=P.relatedTarget;(!ue||!I.contains(ue))&&Xr(null,"before")}),I.addEventListener("drop",P=>{Xr(null,"before");let ue=P.dataTransfer?.getData("text/x-kanuni-column");if(!ue||ue===w.id)return;P.preventDefault();let se=I.getBoundingClientRect();if(P.clientX<se.left+se.width/2)E.moveColumn(ue,w.id);else{let We=vt.findIndex(fe=>fe.id===w.id);E.moveColumn(ue,vt[We+1]?.id)}}),I.addEventListener("dragend",()=>Xr(null,"before"))),A&&w.def.resizable!==!1){let P=L("kanuni-datagrid-resize-handle","span");P.setAttribute("data-resize-handle",w.id),P.setAttribute("role","presentation"),P.addEventListener("click",ue=>ue.stopPropagation()),P.addEventListener("dblclick",ue=>{ue.stopPropagation(),Nc(w.id)}),P.addEventListener("pointerdown",ue=>{ue.preventDefault(),ue.stopPropagation();let se=ue.clientX,xe=w.width,We=getComputedStyle(I).direction==="rtl"?-1:1;I.draggable=!1;let fe=xe,ke=!1,Qe=Ft=>{ke=!0,fe=xe+(Ft.clientX-se)*We,E.setColumnWidth(w.id,fe,!1)},Ot=()=>{window.removeEventListener("pointermove",Qe),window.removeEventListener("pointerup",Ot),window.removeEventListener("pointercancel",Ot),ke&&E.setColumnWidth(w.id,fe,!0),I.draggable=S&&w.def.reorderable!==!1};window.addEventListener("pointermove",Qe),window.addEventListener("pointerup",Ot),window.addEventListener("pointercancel",Ot)}),I.appendChild(P)}Pe.appendChild(I)}p&&Ia(p)?.focus({preventScroll:!0})}let Qi=null,Zr=null;function lc(d){if(d===Qi)return;Qi=d;let p=[];for(let y=0;y<d.length;y++){let g=d[y];g&&g.kind!=="data"&&p.push(y)}Zr=p.length>0?p:null}function sc(d){if(!Zr)return d+1;let p=0,y=Zr.length;for(;p<y;){let g=p+y>>1;Zr[g]<=d?p=g+1:y=g}return d+1-p}let Pt=[];function Jr(d="data"){let p=L("kanuni-datagrid-row");if(p.setAttribute("role","row"),d==="loading"){p.classList.add("kanuni-datagrid-row--loading"),p.setAttribute("aria-busy","true");let R=L("kanuni-datagrid-cell kanuni-datagrid-loading-cell");return R.setAttribute("role","gridcell"),R.setAttribute("aria-colindex","1"),R.appendChild(L("kanuni-datagrid-loading-bar","span")),p.appendChild(R),{kind:d,root:p,cells:[],rowNumberCell:null,selectInput:null,detailToggle:null,leadingSpacer:null,trailingSpacer:null,epoch:Lt}}if(d==="data"&&Ca&&p.addEventListener("click",()=>{if(!p.classList.contains("kanuni-datagrid-group-row--aligned"))return;let R=p.getAttribute("data-group-key");R!==null&&E.toggleGroup(R)}),d==="panel"){let R=document.createElement("div");return R.setAttribute("role","gridcell"),R.setAttribute("aria-colindex","1"),p.appendChild(R),{kind:d,root:p,cells:[],rowNumberCell:null,selectInput:null,detailToggle:null,leadingSpacer:null,trailingSpacer:null,panelCell:R,epoch:Lt}}if(d==="group"){let R=L("kanuni-datagrid-group-cell");R.setAttribute("role","gridcell"),R.setAttribute("aria-colindex","1");let V=L("kanuni-datagrid-group-twisty","span");V.setAttribute("aria-hidden","true");let I=L("kanuni-datagrid-group-caption","span"),$=L("kanuni-datagrid-group-label","span"),X=L("kanuni-datagrid-group-count","span"),Z=L("kanuni-datagrid-group-aggregates","span"),Q=null;return Ou&&mr?.mode==="multiple"&&(Q=document.createElement("input"),Q.type="checkbox",Q.className="kanuni-datagrid-group-checkbox",Q.tabIndex=-1,Q.addEventListener("change",()=>{let N=p.getAttribute("data-group-key");N!==null&&E.toggleGroupSelection(N)}),Q.addEventListener("click",N=>N.stopPropagation()),Q.addEventListener("mousedown",N=>N.stopPropagation()),R.appendChild(Q)),R.append(V,I,$,X,Z),p.appendChild(R),p.addEventListener("click",()=>{let N=p.getAttribute("data-group-key");N!==null&&E.toggleGroup(N)}),{kind:d,root:p,cells:[],rowNumberCell:null,selectInput:null,detailToggle:null,leadingSpacer:null,trailingSpacer:null,group:{cell:R,check:Q,twisty:V,caption:I,label:$,count:X,aggregates:Z},epoch:Lt}}if(pr){let R=L("kanuni-datagrid-row-grip","span");R.setAttribute("aria-hidden","true"),R.title=H.dragToReorder??"Drag to reorder",R.innerHTML='<svg width="10" height="14" viewBox="0 0 10 14" focusable="false"><g fill="currentColor"><circle cx="3" cy="3" r="1.2"/><circle cx="7" cy="3" r="1.2"/><circle cx="3" cy="7" r="1.2"/><circle cx="7" cy="7" r="1.2"/><circle cx="3" cy="11" r="1.2"/><circle cx="7" cy="11" r="1.2"/></g></svg>',R.addEventListener("mouseenter",()=>{p.draggable=!0}),R.addEventListener("mouseleave",()=>{p.draggable=!1}),p.appendChild(R)}if(eu)return{kind:d,root:p,cells:[],rowNumberCell:null,selectInput:null,detailToggle:null,leadingSpacer:null,trailingSpacer:null,epoch:Lt};if(wa){let R=L("kanuni-datagrid-cell kanuni-datagrid-cell--pinned kanuni-datagrid-status-cell");R.setAttribute("role","presentation"),R.setAttribute("aria-hidden","true"),R.style.width=`${Ei}px`,R.style.flex="none",R.style.insetInlineStart="0px",R.appendChild(L("kanuni-datagrid-status-icon","span")),p.appendChild(R)}let y=null;l&&(y=L("kanuni-datagrid-cell kanuni-datagrid-cell--number kanuni-datagrid-cell--pinned kanuni-datagrid-rownum-cell"),y.setAttribute("role","gridcell"),y.setAttribute("aria-colindex","1"),y.style.width=`${ar}px`,y.style.flex="none",y.style.insetInlineStart=`${Ea}px`,p.appendChild(y));let g=null;if(Hu){let R=L("kanuni-datagrid-cell kanuni-datagrid-cell--center kanuni-datagrid-cell--pinned kanuni-datagrid-detail-toggle-cell");R.setAttribute("role","gridcell"),R.setAttribute("aria-colindex",String((l?1:0)+1)),R.style.width=`${or}px`,R.style.flex="none",R.style.insetInlineStart=`${ba}px`;let V=document.createElement("button");V.type="button",V.className="kanuni-datagrid-detail-toggle",V.tabIndex=-1,V.addEventListener("click",I=>{I.stopPropagation();let $=p.getAttribute("data-row-key");if($===null)return;let X=E.getRows().find(Z=>Z!==void 0&&String(Z.key)===$);X&&X.kind==="data"&&E.toggleDetail(X.key)}),V.addEventListener("mousedown",I=>I.stopPropagation()),R.appendChild(V),p.appendChild(R),g=V}let b=null;if(Ou){let R=L("kanuni-datagrid-cell kanuni-datagrid-cell--center kanuni-datagrid-cell--pinned kanuni-datagrid-select-cell");R.setAttribute("role","gridcell"),R.setAttribute("aria-colindex",String((l?1:0)+(Hu?1:0)+1)),R.style.width=`${Vr}px`,R.style.flex="none",R.style.insetInlineStart=`${zi}px`;let V=document.createElement("input");V.type="checkbox",V.tabIndex=-1;let I=()=>{let $=p.getAttribute("data-row-key");if($===null)return;let X=E.getRows().find(Z=>Z!==void 0&&String(Z.key)===$);X?.kind==="group"?E.toggleGroupSelection(String(X.key)):X&&E.toggleRow(X.key)};R.addEventListener("mousedown",$=>$.stopPropagation()),R.addEventListener("click",$=>{$.target.tagName!=="INPUT"&&($.stopPropagation(),I())}),V.addEventListener("change",I),V.addEventListener("click",$=>$.stopPropagation()),V.addEventListener("mousedown",$=>$.stopPropagation()),R.appendChild(V),p.appendChild(R),b=V}let v=[],D=null,w=!1;for(let R of vt){!R.pinned&&!w&&(D=document.createElement("div"),D.style.flex=`0 0 ${at}px`,p.appendChild(D),w=!0);let V=L(R.className);V.setAttribute("role","gridcell"),V.setAttribute("data-column-id",R.id),V.style.width=`${R.width}px`,V.style.flex="none",R.pinned==="left"&&(V.style.insetInlineStart=`${R.inset}px`),R.pinned==="right"&&(V.style.insetInlineEnd=`${R.inset}px`),p.appendChild(V),v.push({el:V,slot:R})}let T=document.createElement("div");return T.style.flex=`0 0 ${xa}px`,p.appendChild(T),{kind:d,root:p,cells:v,rowNumberCell:y,selectInput:b,detailToggle:g,leadingSpacer:D,trailingSpacer:T,epoch:Lt}}let $u="";function en(d,p){if($u===""||p===""){d.textContent=p;return}let y=Le(p),g=y.indexOf($u);if(g===-1){d.textContent=p;return}let b=[],v=0;for(;g!==-1;){g>v&&b.push(document.createTextNode(p.slice(v,g)));let w=document.createElement("mark");w.className="kanuni-datagrid-highlight",w.textContent=p.slice(g,g+$u.length),b.push(w),v=g+$u.length,g=y.indexOf($u,v)}v<p.length&&b.push(document.createTextNode(p.slice(v)));let D=document.createElement("span");D.className="kanuni-datagrid-cell-text",D.append(...b),d.replaceChildren(D)}function Xi(d,p,y){let g=E.getColumnModel().getCellValue(y.data,p.id),b=p.def;if(b.renderCell){let D=b.renderCell({value:g,row:y.data,node:y,column:b});typeof D=="string"?d.textContent=D:d.replaceChildren(D);return}let v=Ut(b,g);if(v!==null){en(d,v);return}if(b.valueFormatter){let D=b.valueFormatter(g,y.data);en(d,typeof D=="string"?D:String(D??""));return}if(b.dateFormat&&b.dataType==="date"){en(d,Tt(g,b.dateFormat));return}en(d,g==null?"":String(g))}function dc(d,p){return d.kind==="group"&&!p.group}function cc(d,p,y){let g=p?.lead??null;if(!g||!d.leadingSpacer||y.kind!=="data"){d.leadCell?.remove(),d.leadCell=null;return}let b=E.getColumnLayout(),v=g.column.def,D={def:v,id:g.column.state.id,width:g.width,pinned:null,inset:0,className:Od(v.align,v.dataType),visualIndex:b.left.length+b.center.indexOf(g.column)},w=d.leadCell??L(D.className);d.leadCell=w,w.className=D.className,w.setAttribute("role","gridcell"),w.setAttribute("data-column-id",D.id),w.setAttribute("aria-colspan",String(p.spans.get(D.id)??1)),w.setAttribute("aria-colindex",String(ya()+D.visualIndex+1)),w.id=`${t.gridId}-cell-${String(y.key)}-${D.id}`,w.style.width=`${g.width}px`,w.style.flex="none",d.leadingSpacer.nextSibling!==w&&d.leadingSpacer.after(w),Xi(w,D,y)}function hc(d){let p=document.createElement("div");p.className="kanuni-datagrid-row-message",p.setAttribute("data-testid","dg-row-message"),p.innerHTML='<svg class="kanuni-datagrid-row-message-icon" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"><path d="M8 1.5 15 14H1z" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round"/><path d="M8 6v3.5M8 11.6v.4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>';let y=document.createElement("span");y.className="kanuni-datagrid-row-message-text",y.textContent=d.text,y.title=d.text,p.appendChild(y);let g=(b,v,D)=>{let w=document.createElement("button");w.type="button",w.className="kanuni-datagrid-row-message-button",w.setAttribute("data-testid",b),w.textContent=v,w.addEventListener("click",D),p.appendChild(w)};return d.retry&&g("dg-row-retry",H.rowStatusRetry,d.retry),d.remove&&g("dg-row-delete",H.rowStatusDelete,d.remove),p}function Zi(){if(!bt?.messages)return;let d=pt?.engine??Se?.()??null,p=bt.get,y=z0(bt,d).filter(g=>{if(!p)return!0;let b=E.getDataRowNode(g)?.data;if(b===void 0)return!0;let v=p({row:b,rowKey:g});return v===void 0||v==="error"});E.setMessageRows(y,E.getRowHeight())}function Ji(d,p){let y=bt&&p?.kind==="data"?V0(bt,p.data,p.key,pt?.engine??Se?.()??null):null,g=d.getAttribute("data-row-status");if(g!==null&&d.classList.remove(`kanuni-datagrid-row--status-${g}`,"kanuni-datagrid-row--status-tint"),!y){if(g===null)return;d.removeAttribute("data-row-status"),d.removeAttribute("aria-description"),d.removeAttribute("aria-busy"),d.removeAttribute("aria-invalid");return}d.setAttribute("data-row-status",y.status),d.classList.add(...$0(y.status,bt.tint).split(" ")),d.setAttribute("aria-description",W0(y,H)),y.status==="saving"?d.setAttribute("aria-busy","true"):d.removeAttribute("aria-busy"),y.status==="error"?d.setAttribute("aria-invalid","true"):d.removeAttribute("aria-invalid")}function Da(d,p,y){let g=d.root;if(g.setAttribute("aria-rowindex",String(y+1+ga())),g.setAttribute("data-row-key",String(p.key)),p.kind==="message"){let N=d.panelCell;g.className="kanuni-datagrid-row kanuni-datagrid-message-row",g.style.height=`${p.height}px`,g.style.display="",g.setAttribute("data-message-for",String(p.parentKey)),g.removeAttribute("data-detail-for"),g.removeAttribute("data-editform-for"),g.removeAttribute("data-panel-for"),N.className="kanuni-datagrid-message-cell";let P=bt?K0(bt,p.parentKey,p.data,pt?.engine??Se?.()??null,H):null,ue=P?`${String(p.parentKey)}|${P.text}|${P.retry?1:0}${P.remove?1:0}`:"";g.getAttribute("data-message-sig")!==ue&&(g.setAttribute("data-message-sig",ue),N.textContent="",P&&N.appendChild(hc(P)));return}if(g.removeAttribute("data-message-for"),g.removeAttribute("data-message-sig"),p.kind==="detail"||p.kind==="editform"){let N=d.panelCell,P=p.kind==="detail";g.className=`kanuni-datagrid-row ${P?"kanuni-datagrid-detail-row":"kanuni-datagrid-editform-row"}`,g.style.height=`${p.height}px`,P?(g.setAttribute("data-detail-for",String(p.parentKey)),g.removeAttribute("data-editform-for")):(g.setAttribute("data-editform-for",p.parentKey===null?"":String(p.parentKey)),g.removeAttribute("data-detail-for")),N.className=P?"kanuni-datagrid-detail-cell":"kanuni-datagrid-editform-cell";let ue=`${p.kind}:${String(p.key)}`;if(g.getAttribute("data-panel-for")!==ue){g.setAttribute("data-panel-for",ue);let se=P?xi?.(p.data):p.parentKey===null?void 0:Zd?.(p.parentKey,p.data);N.textContent="",typeof se=="string"?N.textContent=se:se&&N.appendChild(se)}return}if(g.removeAttribute("data-panel-for"),g.removeAttribute("data-detail-for"),g.removeAttribute("data-editform-for"),p.kind==="filler"){g.style.display="none";return}g.style.display="";let b=p.kind==="data"?E.getDataRowHeight():null;g.style.height=el?"":`${b??E.getRowHeight()}px`;let v=p.kind==="group"&&!d.group?p:null;if(!d.group){g.classList.remove("kanuni-datagrid-group-row","kanuni-datagrid-group-row--aligned");for(let N of Array.from(g.classList))N.startsWith("kanuni-datagrid-group-row--level-")&&g.classList.remove(N);v?(g.classList.add("kanuni-datagrid-group-row","kanuni-datagrid-group-row--aligned",`kanuni-datagrid-group-row--level-${v.level}`),g.setAttribute("aria-expanded",String(v.expanded)),g.setAttribute("aria-level",String(v.level+1)),g.setAttribute("data-group-key",String(v.key)),g.setAttribute("data-group-level",String(v.level))):(g.removeAttribute("aria-expanded"),g.removeAttribute("aria-level"),g.removeAttribute("data-group-key"),g.removeAttribute("data-group-level"))}g.classList.toggle("kanuni-datagrid-row--odd",o&&y%2===1);let D=E.isRowSelected(p.key);g.classList.toggle("kanuni-datagrid-row--selected",D),p.kind==="data"&&E.getSelectionMode()!=="none"?g.setAttribute("aria-selected",String(D)):g.removeAttribute("aria-selected");let w=E.getFocus();g.classList.toggle("kanuni-datagrid-row--focused",G&&w!==null&&w.rowKey===p.key),Ji(g,p);let T=p.kind==="data"&&!dc(p,d)?E.planRowColSpans(p,E.getVirtualWindow().columns):null;if(d.leadingSpacer&&(d.leadingSpacer.style.flex=`0 0 ${Math.max(0,at-(T?.leadingDelta??0))}px`),d.trailingSpacer&&(d.trailingSpacer.style.flex=`0 0 ${Math.max(0,xa-(T?.trailingDelta??0))}px`),cc(d,T,p),pr){let N=xu!==null&&String(xu.key)===String(p.key);g.classList.toggle("kanuni-datagrid-row--drop-before",N&&xu.side==="before"),g.classList.toggle("kanuni-datagrid-row--drop-after",N&&xu.side==="after")}let R=p.kind==="treePath",V=R||v!==null;if(g.classList.toggle("kanuni-datagrid-row--tree-path",R),d.rowNumberCell&&(d.rowNumberCell.textContent=V?"":String(sc(y))),d.detailToggle&&(d.detailToggle.hidden=V),d.selectInput){let N=v!==null&&mr?.mode==="multiple";if(d.selectInput.hidden=R||v!==null&&!N,d.selectInput.classList.toggle("kanuni-datagrid-group-checkbox",N),N){let P=E.getGroupSelectionState(String(v.key));d.selectInput.checked=P==="all",d.selectInput.indeterminate=P==="some",d.selectInput.disabled=!1,d.selectInput.setAttribute("aria-label",H.selectGroupAria.replace("{count}",String(v.count)).replace("{group}",v.display??v.label))}else d.selectInput.indeterminate=!1,d.selectInput.checked=E.isRowSelected(p.key),d.selectInput.disabled=p.kind==="data"&&!E.isRowSelectable(p.key),d.selectInput.setAttribute("aria-label",H.selectRowAria.replace("{row}",String(p.key)))}if(d.detailToggle&&p.kind==="data"){let N=E.isDetailExpanded(p.key);d.detailToggle.textContent=N?"\u25BE":"\u25B8",d.detailToggle.setAttribute("aria-expanded",String(N)),d.detailToggle.setAttribute("aria-label",N?H.collapseDetails:H.expandDetails)}if(p.kind==="group"&&d.group){let N=p;g.className=`kanuni-datagrid-row kanuni-datagrid-group-row kanuni-datagrid-group-row--level-${N.level}`,g.setAttribute("aria-expanded",String(N.expanded)),g.setAttribute("aria-level",String(N.level+1)),g.setAttribute("data-group-key",String(N.key)),g.setAttribute("data-group-level",String(N.level)),d.group.cell.style.paddingLeft=N.level>0?`${8+N.level*18}px`:"",d.group.twisty.textContent=N.expanded?"\u25BE":"\u25B8";let P=E.getColumnModel().getDef(N.columnId),ue=P?.headerName??N.columnId;if(d.group.caption.textContent=`${ue}:`,d.group.label.textContent=Ut(P,N.value)??N.display??(N.label===""?H.filterBlank:N.label),d.group.count.textContent=`(${N.count})`,d.group.check){let xe=E.getGroupSelectionState(String(N.key));d.group.check.checked=xe==="all",d.group.check.indeterminate=xe==="some",d.group.check.setAttribute("aria-label",H.selectGroupAria.replace("{count}",String(N.count)).replace("{group}",d.group.label.textContent??""))}d.group.aggregates.textContent="";let se=N.aggregates??null;if(se)for(let xe of E.getSummaryDefs()){let We=L("kanuni-datagrid-group-aggregate","span"),fe=L("kanuni-datagrid-group-aggregate-label","span"),ke=E.getColumnModel().getDef(xe.columnId);fe.textContent=`${si(xe,ma)} ${ke?.headerName??xe.columnId}:`,We.append(fe,` ${Or(xe,se[hu(xe.columnId,xe.type)],ke)}`),d.group.aggregates.appendChild(We)}return}if(p.kind!=="data"&&!R&&!v){for(let{el:N}of d.cells)N.textContent="";return}if(eu&&V){let N=pr?1:0;for(;g.childNodes.length>N;)g.removeChild(g.lastChild);let P=L("kanuni-datagrid-cell");v?P.appendChild(tl(v)):(P.appendChild(ul(p)),Sa(P,p,p.tree)),g.appendChild(P);return}if(eu){let N=pr?1:0,P=eu({row:p.data,node:p,rowIndex:y,selected:E.isRowSelected(p.key),focused:G&&w!==null&&w.rowKey===p.key});if(P instanceof Node&&g.childNodes.length===N+1&&g.childNodes[N]===P)return;for(;g.childNodes.length>N;)g.removeChild(g.lastChild);typeof P=="string"?g.appendChild(document.createTextNode(P)):P&&g.appendChild(P);return}let I=w!==null&&w.rowKey===p.key?w.columnId:null,$=v?void 0:p.tree,X=v&&Hi?Lu:$||v?(()=>{let N=E.getColumnLayout();return(N.left[0]??N.center[0]??N.right[0])?.state.id??null})():null,Z=$?X:null,Q=E.hasCellSpans();for(let{el:N,slot:P}of d.cells){N.style.display=T?.covered.has(P.id)?"none":"",N.style.width=`${T?.widths.get(P.id)??P.width}px`;let ue=T?.spans.get(P.id);ue?N.setAttribute("aria-colspan",String(ue)):N.removeAttribute("aria-colspan");let se=(ir||pa)&&!V?{node:p,columnId:P.id,rowIndex:y,columnIndex:P.visualIndex,value:E.getColumnModel().getCellValue(p.data,P.id)}:null,xe=ir&&v&&P.id!==X?{node:p,columnId:P.id,rowIndex:y,columnIndex:P.visualIndex,value:void 0}:null,We=se&&ir?ir(se):xe?ir(xe):void 0,fe=!1;if(We!==void 0?We instanceof Node&&N.childNodes.length===1&&N.firstChild===We?fe=!0:typeof We=="string"?N.textContent=We:N.replaceChildren(We):v?P.id===X?N.replaceChildren(tl(v)):N.replaceChildren(...gc(v,P.id)):R?P.id===Z?(N.replaceChildren(ul(p)),Sa(N,p,$)):N.replaceChildren():(Xi(N,P,p),$&&P.id===Z&&Sa(N,p,$)),Q&&!fe){let Me=pc(y,P.id);N.classList.toggle("kanuni-datagrid-cell--span",Me?.kind==="draw"),N.classList.toggle("kanuni-datagrid-cell--span-covered",Me?.kind==="covered");let Ne=We!==void 0;if(Me?.kind==="covered"&&I!==P.id&&!Ne)N.replaceChildren();else if(Me?.kind==="draw"){let _u=L("kanuni-datagrid-span-box");_u.style.height=`${Me.height}px`,_u.append(...Array.from(N.childNodes)),N.appendChild(_u)}}else Q||N.classList.remove("kanuni-datagrid-cell--span","kanuni-datagrid-cell--span-covered");if(gu){let Me=!V&&!!ka(p.key,P.id,p.data);N.classList.toggle("kanuni-datagrid-cell--noted",Me)}N.id=`${t.gridId}-cell-${String(p.key)}-${P.id}`,N.setAttribute("aria-colindex",String(ya()+P.visualIndex+1)),N.classList.toggle("kanuni-datagrid-cell--focused",I===P.id);let ke=p.kind==="data"?E.getFindMatchKind(p.key,P.id):null;N.classList.toggle("kanuni-datagrid-cell--find-match",ke!==null),N.classList.toggle("kanuni-datagrid-cell--find-active",ke==="active");let Qe=N.getAttribute("data-slot-classes");if(Qe)for(let Me of Qe.split(" "))N.classList.remove(Me);let Ot=se&&pa?pa(se):void 0,Ft=P.def.cellClassName,ye=[V?void 0:typeof Ft=="function"?Ft({value:E.getColumnModel().getCellValue(p.data,P.id),row:p.data,node:p,column:P.def}):Ft,Ot].filter(Boolean).join(" ")||void 0;if(ye){for(let Me of ye.split(" "))N.classList.add(Me);N.setAttribute("data-slot-classes",ye)}else Qe&&N.removeAttribute("data-slot-classes")}}let el=t.columns.some(d=>d.autoHeight);function mc(){if(!el)return;let d=E.getVirtualWindow(),p=E.getRows(),y=new Map(E.getMeasuredRowHeights()),g=!1;for(let b=d.rows.start;b<d.rows.end&&b<p.length;b++){let v=p[b];if(!v||v.kind!=="data")continue;let D=b-d.rows.start,w=Pt[D]?.root;if(!w)continue;let T=w.getBoundingClientRect().height;T>0&&y.get(v.key)!==T&&(y.set(v.key,T),g=!0)}g&&E.setMeasuredRowHeights(y)}let tn={start:0,end:0};function pc(d,p){let y=E.getCellSpans(p);if(y.length===0)return null;let g=F0(y,d,tn.start,tn.end);if(!g)return null;if(g.role==="covered")return{kind:"covered"};let b=E.getRowOffset(g.drawStart);return{kind:"draw",height:E.getRowOffset(g.drawEnd)+E.getRowHeightAt(g.drawEnd)-b}}function fc(d,p){let y=E.isRowLoadFailed(p),g=y?"failed":"loading";if(d.dataset.holeState===g)return;d.dataset.holeState=g,d.classList.toggle("kanuni-datagrid-row--load-failed",y),y?d.removeAttribute("aria-busy"):d.setAttribute("aria-busy","true");let b=d.firstElementChild;if(!y)b.replaceChildren(L("kanuni-datagrid-loading-bar","span"));else{let v=L("kanuni-datagrid-load-failed-text","span");v.textContent=H.rowsLoadFailed;let D=document.createElement("button");D.className="kanuni-datagrid-retry-button",D.type="button",D.setAttribute("data-retry-load",""),D.textContent=H.retryLoad,D.addEventListener("click",()=>E.retryFailedLoads()),b.replaceChildren(v,D)}}function tl(d){let p=L("kanuni-datagrid-group-inline","span");p.style.paddingInlineStart=`${d.level*16}px`;let y=L("kanuni-datagrid-group-twisty","span");y.setAttribute("aria-hidden","true"),y.textContent=d.expanded?"\u25BE":"\u25B8";let g=E.getColumnModel().getDef(d.columnId),b=L("kanuni-datagrid-group-caption","span");b.textContent=`${g?.headerName??d.columnId}:`;let v=L("kanuni-datagrid-group-label","span");v.textContent=Ut(g,d.value)??d.display??(d.label===""?H.filterBlank:d.label);let D=L("kanuni-datagrid-group-count","span");return D.textContent=`(${d.count})`,Hi?p.append(y,v,D):p.append(y,b,v,D),p}function gc(d,p){if(!d.aggregates)return[];let y=E.getSummaryDefs().find(b=>b.columnId===p);if(!y)return[];let g=L("kanuni-datagrid-group-aggregate-value","span");return g.textContent=Or(y,d.aggregates[hu(y.columnId,y.type)],E.getColumnModel().getDef(p)),[g]}function ul(d){let p=L("kanuni-datagrid-tree-path-label","span");return p.textContent=d.label,p}function Sa(d,p,y){let g=L(`kanuni-datagrid-tree-cell${y.ancestorOnly?" kanuni-datagrid-tree-cell--ancestor":""}`,"span");if(g.style.paddingInlineStart=`${y.depth*16}px`,y.hasChildren){let b=document.createElement("button");b.type="button",b.className="kanuni-datagrid-tree-toggle",b.setAttribute("data-tree-toggle",""),b.setAttribute("aria-expanded",String(y.expanded)),b.setAttribute("aria-label",y.expanded?H.collapseTreeRow:H.expandTreeRow),b.textContent=y.expanded?"\u25BE":"\u25B8",b.addEventListener("mousedown",v=>v.stopPropagation()),b.addEventListener("click",v=>{v.stopPropagation(),E.toggleTreeRow(p.key)}),g.appendChild(b)}else g.appendChild(L("kanuni-datagrid-tree-toggle kanuni-datagrid-tree-toggle--leaf","span"));g.append(...Array.from(d.childNodes)),d.appendChild(g)}let ka=(d,p,y)=>gu?gu.get({rowKey:d,columnId:p,row:y})??null:null,rl=null,uu=ca?L("kanuni-datagrid-overlay"):null;uu&&(uu.style.position="absolute",uu.style.inset="0",uu.style.pointerEvents="none",qe.appendChild(uu));function Cc(){if(!ca||!uu)return;let d=ca();d!==rl&&(rl=d,d?uu.replaceChildren(d):uu.replaceChildren())}function yc(d){let p=E.getColumnLayout(),y=Array.from(Zt.children);ne.setAttribute("aria-rowcount",String(ga()+d+y.length)),ne.setAttribute("aria-colcount",String(ya()+p.left.length+p.center.length+p.right.length)),E.getSelectionMode()==="multiple"?ne.setAttribute("aria-multiselectable","true"):ne.removeAttribute("aria-multiselectable"),y.forEach((g,b)=>g.setAttribute("aria-rowindex",String(ga()+d+b+1)))}function un(){Cc(),sr&&Ii();let d=E.getVirtualWindow(),p=E.getRows(),y=zu?{...d,rows:{...d.rows,start:0,end:p.length,offsetY:0,totalHeight:0}}:d;lc(p),yc(p.length),qe.style.height=`${y.rows.totalHeight}px`,Ae.style.transform=`translateY(${y.rows.offsetY}px)`,$u=E.getFindNeedle()||(Kd?Mr(E.getSearchText()):"");let g=Math.max(0,Math.min(y.rows.end,p.length)-y.rows.start);for(tn.start=y.rows.start,tn.end=Math.min(y.rows.end,p.length)-1;Pt.length>g;)Pt.pop().root.remove();for(let b=0;b<g;b++){let v=y.rows.start+b,D=p[v];if(!D){let R=Pt[b];if(!R||R.kind!=="loading"){let V=Jr("loading");R?Ae.replaceChild(V.root,R.root):Ae.appendChild(V.root),Pt[b]=V,R=V}R.root.setAttribute("aria-rowindex",String(v+2)),R.root.style.height=`${E.getDataRowHeight()??E.getRowHeight()}px`,fc(R.root,v);continue}let w=D.kind==="data"?"data":D.kind==="group"?Ca?"data":"group":D.kind==="detail"||D.kind==="editform"||D.kind==="message"?"panel":"stub",T=Pt[b];if(!T||T.epoch!==Lt||T.kind!==w){let R=Jr(w);T?Ae.replaceChild(R.root,T.root):Ae.appendChild(R.root),Pt[b]=R,T=R}Da(T,D,v)}mc(),nl()}let rn=[];function nl(){if(!E.hasStickyGroupHeaders())return;let d=zu?[]:E.getStickyGroupRows();for(rt.style.width=`${E.getColumnLayout().totalWidth}px`;rn.length>d.length;)rn.pop().wrap.remove();let p=Ca?"data":"group";d.forEach((y,g)=>{let b=rn[g];if(!b||b.rs.epoch!==Lt||b.rs.kind!==p){let v=Jr(p),D=b?.wrap??L("kanuni-datagrid-sticky-group");D.textContent="",D.appendChild(v.root),b||rt.appendChild(D),b={wrap:D,rs:v},rn[g]=b}Da(b.rs,y.node,y.index),b.rs.root.removeAttribute("aria-rowindex"),b.wrap.style.top=`${y.offset}px`,b.wrap.style.height=`${y.height}px`,b.wrap.style.zIndex=String(d.length-g),b.wrap.classList.toggle("kanuni-datagrid-sticky-group--last",g===d.length-1),b.wrap.querySelectorAll("button, input, select, textarea, a[href], [tabindex]").forEach(v=>v.setAttribute("tabindex","-1"))})}rt.addEventListener("click",d=>{let y=d.target.closest("[data-group-key]")?.getAttribute("data-group-key");y&&E.scrollToRow(y)});let nn=ta(zd??(E.isRemote()?200:0));function al(d,p,y,g){let b=E.getColumnModel().getDef(p);if(!b?.renderFilter)return()=>{};let v=()=>y==="row"?E.getColumnFilter(p,rr):E.getColumnFilter(p,Pu)??E.getColumnFilter(p,cu),D=new Set,w=E.events.on("filterChanged",()=>{let R=v();D.forEach(V=>V(R))}),T=b.renderFilter(d,{columnId:p,column:b,surface:y,getValue:v,setValue:R=>E.setColumnFilter(p,R,y==="row"?rr:Pu),close:g,onValueChange:R=>(D.add(R),()=>D.delete(R))});return()=>{w(),D.clear(),typeof T=="function"&&T()}}let Cr=[],yr=new Map,Ba=!1;function wc(){!x||Ba||Jt.querySelectorAll("select[data-filter-operator-for]").forEach(d=>{let p=d.getAttribute("data-filter-operator-for");if(nn.isPending(p))return;let y=E.getColumnModel().getDef(p),g=E.getColumnFilter(p,rr),b=yr.get(p)??"",v=d.parentElement?.querySelector("input.kanuni-datagrid-filter-input"),D=b;if(g){let w=yi(g,y);D=w?.operatorId??"",w&&v&&(v.value=w.text)}else mu(y,b)?.operandType==="none"&&(D="");yr.set(p,D),d.value=D,v&&(v.disabled=mu(y,D)?.operandType==="none")})}function Ta(){if(!x)return;if(Cr.forEach(g=>g()),Cr=[],Jt.textContent="",xt>0){let g=L("kanuni-datagrid-filter-cell kanuni-datagrid-filter-cell--pinned");g.setAttribute("role","gridcell"),g.style.width=`${xt}px`,g.style.flex="none",g.style.insetInlineStart="0px",Jt.appendChild(g)}let d=!1,p=null,y=()=>{if(!p){p=document.createElement("datalist"),p.id=`${t.gridId}-filter-periods`;for(let g of pd(Bi)){let b=document.createElement("option");b.value=g,p.appendChild(b)}Jt.appendChild(p)}return p.id};for(let g of vt){if(!g.pinned&&!d){if(at>0){let D=L("kanuni-datagrid-spacer");D.style.width=`${at}px`,D.style.flex="none",Jt.appendChild(D)}d=!0}let b=L(`kanuni-datagrid-filter-cell${g.pinned?" kanuni-datagrid-filter-cell--pinned":""}`);b.setAttribute("role","gridcell"),b.style.width=`${g.width}px`,b.style.flex="none",g.pinned==="left"&&(b.style.insetInlineStart=`${g.inset}px`),g.pinned==="right"&&(b.style.insetInlineEnd=`${g.inset}px`);let v=g.def.renderFilter;if(g.def.filterable!==!1&&v){let D=L("kanuni-datagrid-filter-custom");D.setAttribute("data-filter-for",g.id),b.appendChild(D),Cr.push(al(D,g.id,"row",()=>{}))}else if(g.def.filterable!==!1){let D=document.createElement("input");D.className="kanuni-datagrid-filter-input",D.setAttribute("aria-label",Et(H.filterPopupAria,{column:g.def.headerName??g.id})),D.setAttribute("data-filter-for",g.id);let w=Jn(g.def),T=()=>mu(g.def,yr.get(g.id)??"");g.def.dataType==="date"&&!T()&&D.setAttribute("list",y());let R=()=>{let I=T();Ba=!0;try{E.setColumnFilter(g.id,I?gd(g.id,D.value,I):fd(g.id,D.value,g.def.dataType,Bi),rr)}finally{Ba=!1}};if(w.length>0){let I=document.createElement("select");I.className="kanuni-datagrid-filter-operator",I.setAttribute("aria-label",Et(H.filterOperatorAria,{column:g.def.headerName??g.id})),I.setAttribute("data-filter-operator-for",g.id);let $=[["",H.filterOperatorDefault],...w.map(Z=>[Z.id,Z.label])];for(let[Z,Q]of $){let N=document.createElement("option");N.value=Z,N.textContent=Q,I.appendChild(N)}let X=yi(E.getColumnFilter(g.id,rr),g.def);X&&(yr.set(g.id,X.operatorId),D.value=X.text),I.value=T()?.id??"",D.disabled=T()?.operandType==="none",I.addEventListener("change",()=>{yr.set(g.id,I.value),D.disabled=T()?.operandType==="none",T()?D.removeAttribute("list"):g.def.dataType==="date"&&D.setAttribute("list",y()),nn.cancel(g.id),R()}),b.appendChild(I)}D.addEventListener("input",()=>nn.schedule(g.id,R));let V=()=>{nn.cancel(g.id),R()};D.addEventListener("keydown",I=>{I.key==="Enter"&&V()}),D.addEventListener("blur",V),b.appendChild(D)}Jt.appendChild(b)}}let Ra=()=>{},ol=null;function Ec(){let d=a0(Di);if(!d.show)return;let p=d.search,y=document.createElement("input");y.type="search",y.className="kanuni-datagrid-toolbar-search",y.placeholder=p?.placeholder??H.toolbarSearch,y.setAttribute("aria-label",p?.ariaLabel??H.toolbarSearch),y.setAttribute("data-testid","dg-toolbar-search"),y.value=E.getSearchText(),p?.maxLength!==void 0&&(y.maxLength=p.maxLength);let g=L("kanuni-datagrid-toolbar-search-error","span");g.id=`kanuni-dg-search-error-${++ig}`,g.setAttribute("role","alert"),g.setAttribute("data-testid","dg-toolbar-search-error"),g.style.display="none";let b=()=>{let Q=p?.validate?.(y.value)??null;return g.textContent=Q??"",g.style.display=Q===null?"none":"",Q===null?(y.removeAttribute("aria-invalid"),y.removeAttribute("aria-describedby")):(y.setAttribute("aria-invalid","true"),y.setAttribute("aria-describedby",g.id)),Q===null},v=null,D=!1,w=()=>{v&&clearTimeout(v),v=null,D=!1;let Q=y.value.trim();b()&&E.getSearchText()!==Q&&E.setSearchText(Q)};ol=E.events.on("filterChanged",({searchText:Q})=>{D||y.value.trim()===Q||(y.value=Q,b())}),y.addEventListener("input",()=>{D=!0,v&&clearTimeout(v),v=null,b()&&(v=setTimeout(w,p?.debounce??qd))}),p?.applyOnBlur!==!1&&(y.addEventListener("blur",w),y.addEventListener("keydown",Q=>{Q.key==="Enter"&&w()}));let T=L("kanuni-datagrid-toolbar-spacer"),R=null;if(d.columns??oe){let Q=document.createElement("button");Q.type="button",S0(Q,"columns",H.toolbarColumns??"Columns"),Q.setAttribute("aria-haspopup","dialog"),Q.addEventListener("click",()=>{let N=Q.getBoundingClientRect();fl({left:N.left,top:N.bottom+2})}),R=Q}let V=Xt&&_d,I=Xt&&Ud,$=document.createElement("button");$.type="button",$.className="kanuni-datagrid-toolbar-icon-button",$.setAttribute("aria-haspopup","menu"),$.setAttribute("aria-label",H.exportMenu),$.setAttribute("data-testid","dg-export-menu"),$.title=H.exportMenu,$.appendChild(pg());let X=null;$.addEventListener("click",()=>{if(X)return;let Q=$.getBoundingClientRect();Gt({left:Q.right-190,top:Q.bottom+2},N=>{N.setAttribute("role","menu"),N.setAttribute("aria-label",H.exportMenu);let P=[{kind:"csv",label:H.exportCsv,testId:"dg-export-csv",on:E.canExportAll()},{kind:"excel",label:H.exportExcel,testId:"dg-export-excel",on:V},{kind:"excel-selected",label:H.exportExcelSelected,testId:"dg-export-excel-selected",on:V},{kind:"pdf",label:H.exportPdf,testId:"dg-export-pdf",on:I}];for(let ue of P){if(!ue.on)continue;let se=document.createElement("button");se.type="button",se.className="kanuni-datagrid-menu-item",se.setAttribute("role","menuitem"),se.setAttribute("data-testid",ue.testId),se.textContent=ue.label,ue.kind==="excel-selected"&&E.getSelectedCount()===0&&(se.disabled=!0),se.addEventListener("click",()=>{X=ue.kind,$.disabled=!0,Ke(),wi(E,ue.kind).then(xe=>{X=null,$.disabled=!1,xe.error&&Ra(xe.error)})}),N.appendChild(se)}},"kanuni-datagrid-filter-popup kanuni-datagrid-export-menu")});for(let Q of Wd??[])Mt.append(Q);p&&Mt.append(y,g),Mt.append(T),R&&Mt.append(R),d.export&&(E.canExportAll()||V||I)&&Mt.append($);for(let Q of $d??[])Mt.append(Q);let Z=L("kanuni-datagrid-toolbar-error","span");Z.setAttribute("role","alert"),Z.style.display="none",Mt.append(Z),Ra=Q=>{Z.textContent=Q,Z.style.display=""}}function il(){if(!wt.isConnected)return;let d=E.getPage(),p=E.getPageCount(),y=document.activeElement,g=y instanceof HTMLElement&&wt.contains(y)?y.getAttribute("data-pager"):null;wt.textContent="";let b=(T,R,V,I,$)=>{let X=document.createElement("button");return X.type="button",X.textContent=T,X.setAttribute("aria-label",R),X.setAttribute("data-pager",$),X.disabled=V,X.addEventListener("click",I),X},v=L("kanuni-datagrid-pager-buttons"),D=d<=0,w=d>=p-1;if(v.append(b("\xAB",H.pagerFirst??"First",D,()=>E.setPage(0),"first"),b("\u2039",H.pagerPrevious??"Previous",D,()=>E.setPage(d-1),"previous")),_r?.pageButtons)for(let T of bd(d,p,_r.maxPageButtons)){if(typeof T!="number"){let I=L("kanuni-datagrid-pager-gap","span");I.textContent="\u2026",I.setAttribute("aria-hidden","true"),v.append(I);continue}let R=String(T+1),V=b(R,H.pagerPageButton.replace("{n}",R),!1,()=>E.setPage(T),`page-${T}`);V.classList.add("kanuni-datagrid-pager-page"),T===d&&V.setAttribute("aria-current","page"),v.append(V)}else{let T=L("kanuni-datagrid-pager-current","span");T.textContent=`${d+1} / ${p}`,v.append(T)}if(v.append(b("\u203A",H.pagerNext??"Next",w,()=>E.setPage(d+1),"next"),b("\xBB",H.pagerLast??"Last",w,()=>E.setPage(p-1),"last")),wt.appendChild(v),g!==null){let T=wt.querySelector(`[data-pager="${g}"]`);(T&&!T.disabled?T:wt.querySelector('[aria-current="page"]')??wt.querySelector("button:not(:disabled)"))?.focus()}}function Na(){if(!yt)return;let d=E.getColumnLayout(),p=E.getSummaries(),y=new Map(E.getSummaryDefs().map(b=>[b.columnId,b]));if(je.textContent="",je.style.width=`${d.totalWidth+xt}px`,xt>0){let b=L("kanuni-datagrid-footer-cell kanuni-datagrid-footer-cell--pinned");b.style.width=`${xt}px`,b.style.insetInlineStart="0px",je.appendChild(b)}let g=!1;for(let b of vt){if(!b.pinned&&!g){if(at>0){let T=L("kanuni-datagrid-spacer");T.style.width=`${at}px`,je.appendChild(T)}g=!0}let v=y.get(b.id),D=b.def.dataType==="number"||b.def.dataType==="bigint",w=L(`kanuni-datagrid-footer-cell${b.pinned?" kanuni-datagrid-footer-cell--pinned":""}${D?" kanuni-datagrid-footer-cell--number":""}${v?" kanuni-datagrid-footer-cell--active":""}`);if(w.setAttribute("role","gridcell"),w.setAttribute("data-column-id",b.id),w.setAttribute("data-summary-type",v?.type??""),w.style.width=`${b.width}px`,b.pinned==="left"&&(w.style.insetInlineStart=`${b.inset}px`),b.pinned==="right"&&(w.style.insetInlineEnd=`${b.inset}px`),v){w.title=`${si(v,ma)} \u2014 ${b.def.headerName??b.id}`;let T=L("kanuni-datagrid-footer-value","span");T.textContent=Or(v,p[hu(v.columnId,v.type)],b.def),w.appendChild(T)}else{let T=L("kanuni-datagrid-footer-hint","span");T.textContent=h&&!Be(b.id)?"\xB7":"",w.appendChild(T)}je.appendChild(w)}}function bc(){yu()>0?Ct.isConnected||ze.insertBefore(Ct,rt.isConnected?rt:qe):Ct.remove(),Ri()>0?Zt.isConnected||ze.insertBefore(Zt,qe.nextSibling):Zt.remove(),rt.style.setProperty("--dg-sticky-below",`${yu()>0?yu()*E.getRowHeight()+1:0}px`)}function an(){let d=eu;eu=re;try{Ac()}finally{eu=d}}function Ac(){let d=(p,y,g,b)=>{p.textContent="",y.forEach((v,D)=>{let w=Jr("data");Da(w,{kind:"data",key:`__pinned-${g}-${D}`,sourceIndex:-1,data:v},D),w.root.classList.remove("kanuni-datagrid-row--odd"),w.root.setAttribute("aria-rowindex",String(fa+wu+D+1)),w.root.removeAttribute("aria-selected"),Ji(w.root,null),w.rowNumberCell&&(w.rowNumberCell.textContent="");let T=b[D-(y.length-b.length)];T!==void 0?w.root.setAttribute("data-pinned-row-key",String(T)):w.root.removeAttribute("data-pinned-row-key"),p.appendChild(w.root)})};for(let[p,y,g]of[["top",Ct,f],["bottom",Zt,C]]){let b=E.getPinnedRows(p);if(g.length+b.length===0){y.textContent="";continue}d(y,[...g,...b.map(v=>v.row)],p,b.map(v=>v.key))}}let on=d=>{let p=d.target.closest("[data-pinned-row-key]");if(!p)return;let y=p.getAttribute("data-pinned-row-key"),g=E.getPinnedRowKeys(),b=[...g.top,...g.bottom].find(T=>String(T)===y);if(b===void 0)return;let v=ll(b,!1);if(v.length===0)return;d.preventDefault();let D=E.getPinnedRows(E.getRowPinSide(b)??"top").find(T=>T.key===b)?.row,w={row:D,node:{kind:"data",key:b,sourceIndex:-1,data:D},rowIndex:-1,columnId:d.target.closest("[data-column-id]")?.getAttribute("data-column-id")??null,selectedKeys:E.getSelectedKeys()};Gt({left:d.clientX,top:d.clientY},T=>{T.setAttribute("role","menu"),sn(T,v,w)},"kanuni-datagrid-context-menu")};Ct.addEventListener("contextmenu",on),Zt.addEventListener("contextmenu",on);function ll(d,p){if(!E.isRowPinningEnabled()||!E.canPinRow(d))return[];let y=E.getRowPinSide(d),g=[];return y!=="top"&&g.push({id:"__dg-pin-top",label:H.pinRowTop,onSelect:()=>E.pinRow(d,"top")}),y!=="bottom"&&g.push({id:"__dg-pin-bottom",label:H.pinRowBottom,onSelect:()=>E.pinRow(d,"bottom")}),y&&g.push({id:"__dg-unpin",label:H.unpinRow,onSelect:()=>E.pinRow(d,null)}),p&&g.length>0?[{id:"__dg-sep-pin",separator:!0},...g]:g}let Fu=null,Du=null,Ma=null;function Ke(d=!0){Du?.(),Du=null,Fu?.remove(),Fu=null;let p=Ma;Ma=null,d&&p?.()}function Ia(d){return Pe.querySelector(`.kanuni-datagrid-header-cell[data-column-id="${CSS.escape(d)}"]`)}function sl(d,p){d.addEventListener("keydown",y=>{let g=Array.from(d.querySelectorAll('[role="menuitem"]:not(:disabled)'));if(g.length===0)return;let b=g.indexOf(document.activeElement),v=g[b],D;switch(y.key){case"ArrowDown":D=g[(b+1)%g.length];break;case"ArrowUp":D=g[b<=0?g.length-1:b-1];break;case"Home":D=g[0];break;case"End":D=g[g.length-1];break;case"ArrowRight":case"Enter":case" ":if(v?.getAttribute("aria-haspopup")!=="menu")return;v.click(),D=Fu?.querySelector('.kanuni-datagrid-submenu [role="menuitem"]:not(:disabled)')??void 0;break;case"ArrowLeft":if(!p)return;p();break;case"Tab":Ke();break;default:return}y.preventDefault(),y.stopPropagation(),D?.focus()})}function dl(d,p){let g=d.getBoundingClientRect();g.width===0&&g.height===0||(d.style.left=`${Math.max(8,Math.min(p.left,window.innerWidth-g.width-8))}px`,d.style.top=`${Math.max(8,Math.min(p.top,window.innerHeight-g.height-8))}px`)}function Gt(d,p,y="kanuni-datagrid-filter-popup",g){Ke(!1);let b=document.activeElement instanceof HTMLElement?document.activeElement:null,v=b&&(b===ne||!b.contains(ne))?b:null,D=(v&&Pe.contains(v)?v.closest("[data-column-id]")?.getAttribute("data-column-id")??null:null)??g??null;Fu=L(`${sa(t)} kanuni-datagrid-portal`);let w=L(y);w.style.position="fixed",w.style.left=`${d.left}px`,w.style.top=`${d.top}px`,w.style.zIndex="1000",p(w),Fu.appendChild(w),qt(t.portalContainer).appendChild(jt(Fu,t.portalContainer)),dl(w,d),Ma=()=>{let I=D?Ia(D):null,$=v?.isConnected?v:I;$?.focus({preventScroll:!0}),$&&document.activeElement!==$&&I&&I.focus({preventScroll:!0})},w.getAttribute("role")==="menu"&&(sl(w),w.querySelector('[role="menuitem"]:not(:disabled)')?.focus({preventScroll:!0}));let T=Fu,R=I=>{T.contains(I.target)||Ke(!1)},V=I=>{I.key==="Escape"&&Ke()};document.addEventListener("pointerdown",R,!0),document.addEventListener("keydown",V,!0),Du=()=>{document.removeEventListener("pointerdown",R,!0),document.removeEventListener("keydown",V,!0)}}let ru=25,cl=8,La=new Map,Pa=0;function hl(d,p){let y=p.getBoundingClientRect(),g=++Pa;if(E.getColumnModel().getDef(d)?.renderFilter){let D=null,w=null;Gt({left:y.left,top:y.bottom+2},V=>{w=V,V.classList.add("kanuni-datagrid-filter-popup--custom"),V.setAttribute("role","dialog"),V.setAttribute("aria-label",Et(H.filterPopupAria,{column:E.getColumnModel().getDef(d)?.headerName??d})),V.setAttribute("data-column-id",d),V.tabIndex=-1,D=al(V,d,"popup",()=>Ke())},void 0,d);let T=w;T&&(T.querySelector('input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), a[href], [tabindex]:not([tabindex="-1"])')??T).focus({preventScroll:!0});let R=Du;Du=()=>{R?.(),D?.(),D=null};return}let b=null;Gt({left:y.left,top:y.bottom+2},D=>{D.setAttribute("role","dialog"),D.setAttribute("aria-label",Et(H.filterPopupAria,{column:E.getColumnModel().getDef(d)?.headerName??d}));let w=[],T=!0,R=new Set,V=!1,I=0,$="",X=[],Z={value:void 0,label:""},Q=_=>_.value===null||_.value===void 0,N=[],P=_=>_===Z?ea:Rt(_),ue=_=>_===Z?H.filterNonBlank:ei(_,{filterBlank:H.filterBlank,filterEmptyText:H.filterEmptyText,filterSpace:H.filterSpace,filterSpaces:H.filterSpaces}),se=null,xe="",We=[],fe=null,ke=document.createElement("input");ke.type="search",ke.className="kanuni-datagrid-filter-search",ke.placeholder=H.search,ke.setAttribute("data-testid","dg-filter-search");let Qe=null;O&&(Qe=document.createElement("button"),Qe.type="button",Qe.className="kanuni-datagrid-filter-custom",Qe.setAttribute("data-testid","dg-filter-custom"),Qe.textContent=H.filterCustom,Qe.addEventListener("click",()=>{Ke(),O({columnId:d})}));let Ot=L("kanuni-datagrid-filter-actions"),Ft=document.createElement("button");Ft.type="button",Ft.textContent=H.filterSelectAll,Ft.addEventListener("click",()=>{if(fe)return fe.selectAll();if(V=!0,$.trim()==="")R=new Set(w.map(Rt));else for(let _ of X)R.add(Rt(_));lt()});let wr=document.createElement("button");wr.type="button",wr.textContent=H.clear,wr.addEventListener("click",()=>{if(fe)return fe.clear();if(V=!0,$.trim()==="")R=new Set;else for(let _ of X)R.delete(Rt(_));lt()}),Ot.append(Ft,wr);let ye=L("kanuni-datagrid-filter-list");ye.setAttribute("role","listbox"),ye.setAttribute("aria-multiselectable","true");let Me=document.createElement("div");Me.style.position="relative";let Ne=document.createElement("div");Me.appendChild(Ne),ye.appendChild(Me);let _u=()=>{let _=Le($.trim());if(!_){X=w;let le=w.findIndex(Q);N=le<0?w:[...w.slice(0,le+1),Z,...w.slice(le+1)];return}se||(se=w.map(le=>Le(le.label))),X=xe!==""&&_.includes(xe)?We.filter(le=>Le(le.label).includes(_)):w.filter((le,he)=>se[he].includes(_)),xe=_,We=X,N=X},Kc=_=>{let le=_.getRowCount(),he=_.isLoading();ye.setAttribute("aria-busy",String(he)),ye.setAttribute("aria-setsize",String(le));let ve=document.activeElement instanceof HTMLElement?document.activeElement.closest(".kanuni-datagrid-filter-item")?.getAttribute("data-index")??null:null;if(Ne.textContent="",he||le===0){Me.style.height="",Ne.style.transform="";let Ue=L("kanuni-datagrid-filter-empty");Ue.textContent=he?H.filterLoading:H.filterNoMatch,Ne.appendChild(Ue);return}Me.style.height=`${_.getWindow(ye.scrollTop,240).totalHeight}px`;let $e=_.getWindow(ye.scrollTop,Math.max(ye.clientHeight,150));Me.style.height=`${$e.totalHeight}px`,Ne.style.transform=`translateY(${$e.offsetY}px)`;for(let Ue=$e.start;Ue<$e.end;Ue++){let Ie=_.getRow(Ue),Ge=L("kanuni-datagrid-filter-item");if(Ge.setAttribute("role","option"),Ge.setAttribute("data-index",String(Ue)),!Ie){Ge.classList.add("kanuni-datagrid-filter-item--pending"),Ge.setAttribute("aria-selected","false"),Ge.setAttribute("aria-busy","true");let Vt=document.createElement("span");Vt.setAttribute("aria-hidden","true"),Vt.textContent="\u2026",Ge.appendChild(Vt),Ne.appendChild(Ge);continue}let Er=_.isChecked(Ie);Ge.setAttribute("aria-selected",String(Er)),Ge.tabIndex=-1,Ge.setAttribute("data-value",Ie.label),Ue===I&&Ge.classList.add("kanuni-datagrid-filter-item--active");let lu=document.createElement("input");lu.type="checkbox",lu.readOnly=!0,lu.checked=Er,lu.tabIndex=-1;let st=document.createElement("span");st.textContent=Ie.nonBlank?H.filterNonBlank:ei({value:Ie.blank?null:Ie.value,label:Ie.label},{filterBlank:H.filterBlank,filterEmptyText:H.filterEmptyText,filterSpace:H.filterSpace,filterSpaces:H.filterSpaces}),Ge.append(lu,st),Ge.addEventListener("click",()=>_.toggle(Ie)),Ge.addEventListener("focus",()=>{I=Ue,Cn()}),Ne.appendChild(Ge)}Cn(),_.ensure($e.start,$e.end),ve!==null&&Ne.querySelector(`[data-index="${I}"]`)?.focus({preventScroll:!0})},lt=()=>{if(fe&&!T)return Kc(fe);if(ye.setAttribute("aria-busy",String(T)),ye.setAttribute("aria-setsize",String(N.length)),T){Me.style.height="",Ne.textContent="";let Ie=L("kanuni-datagrid-filter-empty");Ie.textContent=H.filterLoading,Ne.appendChild(Ie);return}if(N.length===0){Me.style.height="",Ne.style.transform="",Ne.textContent="";let Ie=L("kanuni-datagrid-filter-empty");Ie.textContent=H.filterNoMatch,Ne.appendChild(Ie);return}let _=ye.clientHeight||240,le=Math.max(0,Math.floor(ye.scrollTop/ru)-cl),he=Math.ceil(_/ru)+cl*2,ve=Math.min(le,Math.max(0,N.length-1)),$e=Math.min(N.length,ve+he);Me.style.height=`${N.length*ru}px`,Ne.style.transform=`translateY(${ve*ru}px)`;let Ue=document.activeElement instanceof HTMLElement?document.activeElement.closest(".kanuni-datagrid-filter-item")?.getAttribute("data-index")??null:null;Ne.textContent="";for(let Ie=ve;Ie<$e;Ie++){let Ge=N[Ie],Er=P(Ge),lu=Ge===Z?Gr(w,R):R.has(Er),st=L("kanuni-datagrid-filter-item");st.setAttribute("role","option"),st.setAttribute("aria-selected",String(lu)),st.tabIndex=-1,st.setAttribute("data-value",Ge.label),st.setAttribute("data-index",String(Ie)),Ie===I&&st.classList.add("kanuni-datagrid-filter-item--active");let Vt=document.createElement("input");Vt.type="checkbox",Vt.readOnly=!0,Vt.checked=lu,Vt.tabIndex=-1;let Yl=document.createElement("span");Yl.textContent=ue(Ge),st.append(Vt,Yl),st.addEventListener("click",()=>_l(Er)),st.addEventListener("focus",()=>{I=Ie,Cn()}),Ne.appendChild(st)}Cn(),Ue!==null&&Ne.querySelector(`[data-index="${I}"]`)?.focus({preventScroll:!0})};function Cn(){let _=!1;for(let le of Array.from(Ne.querySelectorAll(".kanuni-datagrid-filter-item"))){if(le.getAttribute("aria-busy")==="true")continue;let he=Number(le.getAttribute("data-index"))===I;le.tabIndex=he?0:-1,le.classList.toggle("kanuni-datagrid-filter-item--active",he),_||=he}ye.tabIndex=_||!Ne.querySelector(".kanuni-datagrid-filter-item")?-1:0}let _l=_=>{if(V=!0,_===ea){let le=Gr(w,R);for(let he of w)Q(he)&&!le?R.delete(ft):R.add(Rt(he))}else R.has(_)?R.delete(_):R.add(_);for(let le of Ne.querySelectorAll(".kanuni-datagrid-filter-item")){let he=N[Number(le.getAttribute("data-index"))];if(!he)continue;let ve=he===Z?Gr(w,R):R.has(P(he));le.setAttribute("aria-selected",String(ve));let $e=le.querySelector("input");$e&&($e.checked=ve)}};ye.addEventListener("scroll",()=>{La.set(d,ye.scrollTop),lt()});let yn=null,Xa=()=>{if(I=0,fe){let _=fe;yn&&clearTimeout(yn),yn=setTimeout(()=>{yn=null,_.getSearch()!==$.trim()&&(_.setSearch($),ye.scrollTop=0,lt())},150);return}_u(),lt()};ke.addEventListener("input",()=>{$=ke.value,Xa()});let Za=_=>{if(fe){let ve=fe.getRowCount();if(ve===0)return;I=Math.max(0,Math.min(ve-1,_)),_<=0?ye.scrollTop=0:_>=ve-1&&(ye.scrollTop=ye.scrollHeight),lt();let $e=D.querySelector(`.kanuni-datagrid-filter-item[data-index="${I}"]`);$e?.focus(),$e?.scrollIntoView?.({block:"nearest"});return}if(N.length===0)return;I=Math.max(0,Math.min(N.length-1,_));let le=I*ru,he=ye.clientHeight||240;le<ye.scrollTop?ye.scrollTop=le:le+ru>ye.scrollTop+he&&(ye.scrollTop=le+ru-he),lt(),D.querySelector(`.kanuni-datagrid-filter-item[data-index="${I}"]`)?.focus()},Ul=()=>{if(T)return;if(fe){if(fe.isLoading())return;E.setColumnFilter(d,fe.buildFilter(d),Pu),Ke();return}let _;if(R.size===w.length)_=null;else if(Gr(w,R))_={columnId:d,operator:"isnotnull"};else{let le=R.has(ft),he=w.filter(ve=>!Q(ve)&&R.has(Rt(ve)));he.length===0?_=le?{columnId:d,operator:"isnull"}:null:le?_={logic:"or",nodes:[{columnId:d,operator:"in",value:he.map(ve=>ve.value)},{columnId:d,operator:"isnull"}]}:_={columnId:d,operator:"in",value:he.map(ve=>ve.value)}}E.setColumnFilter(d,_,Pu),Ke()};D.tabIndex=-1,D.addEventListener("keydown",_=>{let le=_.target===ke;if(!((_.key==="Enter"||_.key===" ")&&_.target instanceof HTMLButtonElement)){if(_.key==="Tab"){let he=Array.from(D.querySelectorAll('input:not([disabled]), button:not([disabled]), [tabindex="0"]')),ve=he[0],$e=he[he.length-1],Ue=document.activeElement;ve&&$e&&(!_.shiftKey&&(Ue===$e||Ue===D)?(_.preventDefault(),ve.focus()):_.shiftKey&&(Ue===ve||Ue===D)&&(_.preventDefault(),$e.focus()));return}if(_.key==="Backspace"&&!le){_.preventDefault(),ke.focus(),$=$.slice(0,-1),ke.value=$,Xa();return}if(_.key==="ArrowDown"){_.preventDefault(),Za(le?0:I+1);return}if(_.key==="ArrowUp"){_.preventDefault(),Za(le?fe?0:N.length-1:I-1);return}if(!le&&(_.key==="Home"||_.key==="End")){_.preventDefault(),Za(_.key==="Home"?0:(fe?fe.getRowCount():N.length)-1);return}if(_.key===" "&&!le){if(_.preventDefault(),fe){let ve=fe.getRow(I);ve&&fe.toggle(ve);return}let he=N[I];he&&_l(P(he));return}if(_.key==="Enter"){_.preventDefault(),Ul();return}!le&&_.key.length===1&&_.key!==" "&&!_.ctrlKey&&!_.metaKey&&!_.altKey&&(_.preventDefault(),ke.focus(),$+=_.key,ke.value=$,Xa())}});let ql=L("kanuni-datagrid-filter-footer"),wn=document.createElement("button");wn.type="button",wn.textContent=H.cancel,wn.addEventListener("click",()=>Ke());let Ht=document.createElement("button");Ht.type="button",Ht.className="kanuni-datagrid-filter-primary",Ht.setAttribute("data-testid","dg-filter-apply"),Ht.textContent=H.apply,Ht.disabled=!0,Ht.addEventListener("click",Ul),ql.append(wn,Ht),D.append(ke,...Qe?[Qe]:[],Ot,ye,ql),lt(),queueMicrotask(()=>{ke.isConnected&&ke.focus()});let jl=_=>{w=_,se=null,xe="",T=!1,Ht.disabled=!1;let le=v0(E.getColumnFilter(d,Pu)??E.getColumnFilter(d,cu),w,{text:E.getColumnModel().getDataType(d)==="string"});le?(V=!0,R=new Set(le)):V||(R=new Set(w.map(Rt))),_u();let he=La.get(d);lt(),he&&(ye.scrollTop=he,lt())},iu=E.openRemoteDistinct(d,ru);if(iu){fe=iu,b=iu,iu.subscribe(()=>{D.isConnected&&fe===iu&<()}),iu.start().then(_=>{if(Pa!==g||!D.isConnected){iu.dispose();return}if(_.kind==="paged"){T=!1,Ht.disabled=!1;let le=La.get(d);lt(),le&&(ye.scrollTop=le,lt());return}iu.dispose(),fe=null,b=null,jl(E.sortDistinctEntries(_.values))});return}E.getDistinctValueSetAsync(d).then(_=>{Pa!==g||!D.isConnected||jl(_.entries)})},void 0,d);let v=Du;Du=()=>{v?.(),b?.dispose(),b=null}}function ln(d={}){let p=E.getClipboardText(d);E.notifyClipboardGesture("copy",p?p.split(`
|
|
18
|
-
`).length:0,()=>E.writeClipboard(p,"copy"))}function xc(d){if(de===!1)return[];let p=de===!0?{}:de,y=[],g=v=>{d&&y.length===0&&y.push({separator:!0,id:"__dg-sep"}),y.push(v)};p.copy!==!1&&g({id:"__dg-copy",label:H.menuCopy,shortcut:`${Fc}C`,onSelect:()=>ln()}),p.copyWithHeaders!==!1&&g({id:"__dg-copy-headers",label:H.menuCopyWithHeaders,onSelect:()=>ln({includeHeaders:!0})}),p.copyWithGroupHeaders!==!1&&vc()&&g({id:"__dg-copy-group-headers",label:H.menuCopyWithGroupHeaders,onSelect:()=>ln({includeGroupHeaders:!0})});let b=(p.export===!1?[]:Array.isArray(p.export)?p.export:["csv","excel","excel-selected","pdf"]).filter(v=>v!=="csv"||E.canExportAll());if(b.length>0){let v=E.getSelectedCount()===0,D={csv:H.exportCsv,excel:H.exportExcel,"excel-selected":H.exportExcelSelected,pdf:H.exportPdf};g({id:"__dg-export",label:H.menuExport,items:b.map(w=>({id:`__dg-export-${w}`,label:D[w],disabled:w==="excel-selected"&&v,onSelect:()=>{wi(E,w).then(T=>{T.error&&Ra(T.error)})}}))})}return y}function vc(){let d=E.getColumnModel();return E.getVisualColumnIds().some(p=>{let y=d.getDef(p)?.band;return typeof y=="string"?y!=="":Array.isArray(y)&&y.length>0})}function yg(d,p,y){let g=L("kanuni-datagrid-menu-row"),b=document.createElement("button");b.type="button",b.className="kanuni-datagrid-menu-item";let v=L("kanuni-datagrid-menu-label","span");if(v.textContent=d,b.appendChild(v),p){let D=L("kanuni-datagrid-menu-shortcut","span");D.textContent=p,b.appendChild(D)}return b.addEventListener("click",()=>{y(),Ke()}),g.appendChild(b),g}let Fc=/Mac|iPhone|iPad|iPod/.test(navigator.platform??"")?"\u2318":"Ctrl+";function sn(d,p,y){let g=null,b=()=>{g?.remove(),g=null};p.forEach((v,D)=>{if(v.separator){let I=L("kanuni-datagrid-menu-separator");I.setAttribute("role","separator"),d.appendChild(I);return}let w=L("kanuni-datagrid-menu-row"),T=document.createElement("button");if(T.type="button",T.className="kanuni-datagrid-menu-item",T.setAttribute("role","menuitem"),T.setAttribute("data-item-index",String(D)),v.disabled&&(T.disabled=!0),v.icon!==void 0){let I=L("kanuni-datagrid-menu-icon","span");typeof v.icon=="string"?I.textContent=v.icon:I.appendChild(v.icon),T.appendChild(I)}let R=L("kanuni-datagrid-menu-label","span");if(R.textContent=v.label??"",T.appendChild(R),v.shortcut){let I=L("kanuni-datagrid-menu-shortcut","span");I.textContent=v.shortcut,T.appendChild(I)}let V=v.items??[];if(V.length>0){let I=L("kanuni-datagrid-menu-caret","span");I.textContent="\u203A",T.appendChild(I),T.setAttribute("aria-haspopup","menu"),T.setAttribute("aria-expanded","false");let $=()=>{b();let X=L("kanuni-datagrid-context-menu kanuni-datagrid-submenu");X.setAttribute("role","menu");let Z=T.getBoundingClientRect();X.style.left=`${Z.right}px`,X.style.top=`${Math.max(0,Z.top-4)}px`;for(let Q of V){if(Q.separator){let ue=L("kanuni-datagrid-menu-separator");ue.setAttribute("role","separator"),X.appendChild(ue);continue}let N=document.createElement("button");N.type="button",N.className="kanuni-datagrid-menu-item",N.setAttribute("role","menuitem"),Q.disabled&&(N.disabled=!0);let P=L("kanuni-datagrid-menu-label","span");P.textContent=Q.label??"",N.appendChild(P),N.addEventListener("click",()=>{Q.onSelect?.(y),Ke()}),X.appendChild(N)}d.parentElement?.appendChild(X),dl(X,{left:Z.right,top:Math.max(0,Z.top-4)}),g=X,T.setAttribute("aria-expanded","true"),sl(X,()=>{b(),T.setAttribute("aria-expanded","false"),T.focus()})};T.addEventListener("mouseenter",$),T.addEventListener("click",$)}else T.addEventListener("mouseenter",b),T.addEventListener("click",()=>{v.onSelect?.(y),Ke()});w.appendChild(T),d.appendChild(w)})}let ml=d=>{let y=d.target.closest(".kanuni-datagrid-row");if(!y||y.classList.contains("kanuni-datagrid-group-row"))return;let g=nu(d);if(g?.columnId&&E.notifyCell("cellContextMenu",g.node,g.rowIndex,g.columnId),!we&&!de&&!E.isRowPinningEnabled()||!g||g.node.kind!=="data")return;d.preventDefault(),E.isRowSelected(g.node.key)||E.handleRowClick(g.node.key,{}),g.columnId&&E.focusCell(g.node.key,g.columnId);let b={row:g.node.data,node:g.node,rowIndex:g.rowIndex,columnId:g.columnId,selectedKeys:E.getSelectedKeys()},v=(typeof we=="function"?we(b):we)??[],D=[...v,...Dc(b,v.length>0)],w=[...D,...ll(g.node.key,D.length>0)],T=xc(w.length>0);w.length===0&&T.length===0||Gt({left:d.clientX,top:d.clientY},R=>{R.setAttribute("role","menu"),sn(R,[...w,...T],b)},"kanuni-datagrid-context-menu")};function Dc(d,p){if(!gu?.onChange||gu.menu===!1)return[];let y=d.columnId;if(!y)return[];let g=d.node.key,b=ka(g,y,d.row),v=[];return p&&v.push({separator:!0,id:"__note-sep"}),v.push({id:"__note-edit",label:b?H.editNote:H.addNote,onSelect:()=>Sc(g,y,d.row,b??"")}),b&&v.push({id:"__note-delete",label:H.deleteNote,onSelect:()=>gu.onChange?.({rowKey:g,columnId:y,row:d.row,text:null})}),v}function Sc(d,p,y,g){let v=(ne.querySelector(`[data-row-key="${CSS.escape(String(d))}"] [data-column-id="${CSS.escape(p)}"]`)??ne).getBoundingClientRect();queueMicrotask(()=>{Gt({left:v.left,top:v.bottom+2},D=>{D.setAttribute("aria-label",H.noteEditorAria);let w=document.createElement("textarea");w.className="kanuni-datagrid-note-input",w.rows=4,w.value=g,w.setAttribute("aria-label",H.noteEditorAria),w.placeholder=H.notePlaceholder,w.setAttribute("data-testid","dg-note-input");let T=()=>{let $=w.value.trim();Ke(),gu?.onChange?.({rowKey:d,columnId:p,row:y,text:$===""?null:$})};w.addEventListener("keydown",$=>{$.key==="Enter"&&($.ctrlKey||$.metaKey)&&($.preventDefault(),T()),$.key==="Escape"&&($.preventDefault(),Ke())});let R=L("kanuni-datagrid-note-actions"),V=document.createElement("button");V.type="button",V.className="kanuni-datagrid-note-cancel",V.textContent=H.cancel,V.addEventListener("click",()=>Ke());let I=document.createElement("button");I.type="button",I.className="kanuni-datagrid-note-save",I.setAttribute("data-testid","dg-note-save"),I.textContent=H.save,I.addEventListener("click",T),R.append(V,I),D.append(w,R),queueMicrotask(()=>{w.focus(),w.select()})},"kanuni-datagrid-filter-popup kanuni-datagrid-note-editor")})}function kc(d){bu!==d&&(bu=d,d?(ne.insertBefore(nt,ge),Ha()):nt.remove())}function Bc(d){if(yt!==d){if(yt=d,d){if(Nt){let p=Ct.isConnected?Ct:rt.isConnected?rt:qe;ze.insertBefore(je,p)}else ze.append(je);Na()}else je.remove();Ct.style.setProperty("--dg-pinned-gap",String(wu+(yt&&Nt?1:0))),rt.style.setProperty("--dg-pinned-gap",String(wu+(yt&&Nt?1:0)))}}function Ga(d){let p=na(ne,d);p!==null&&E.setColumnWidth(d,p)}function pl(d,p){let y=E.getColumnModel().getDef(d),g={columnId:d,headerName:y?.headerName??d},b=ra(g,{controller:E,t:H,groupPanelVisible:bu,footerVisible:yt,onToggleGroupPanel:()=>kc(!bu),onToggleFooter:()=>Bc(!yt),onOpenFieldChooser:()=>fl(p),onBestFit:Ga,onBestFitAll:()=>{for(let D of E.getColumnStates())D.visible&&!D.flex&&Ga(D.id)},maxGroupLevels:Xt?Number.POSITIVE_INFINITY:1}),v=typeof Fe=="function"?Fe(g,b):b;v.length!==0&&Gt(p,D=>{D.setAttribute("role","menu"),sn(D,v,g)},"kanuni-datagrid-context-menu")}function Tc(d,p){let y=E.getColumnModel().getDef(d),g=E.getColumnSummary(d),b={columnId:d,headerName:y?.headerName??y?.field??d},v=[{id:"none",label:H.noTotal,disabled:g===null,onSelect:()=>E.setColumnSummary(d,null)},{id:"sep",separator:!0},...Y0(y?.dataType).map(D=>({id:D,label:ma[D],disabled:g?.type===D,onSelect:()=>E.setColumnSummary(d,D)}))];Gt(p,D=>{D.setAttribute("role","menu"),sn(D,v,b)},"kanuni-datagrid-context-menu")}function fl(d){Gt(d,p=>{p.setAttribute("role","dialog"),p.setAttribute("aria-label",H.columns);let y=L("kanuni-datagrid-chooser-title");y.textContent=H.columns,p.appendChild(y);let g=()=>E.getColumnStates().filter($=>!Be($.id)),b=()=>g().filter($=>!E.getColumnModel().getDef($.id)?.hideInChooser),v=$=>E.getColumnModel().getDef($)?.headerName??$,D="";if(b().length>8){let $=document.createElement("input");$.type="search",$.className="kanuni-datagrid-filter-search",$.placeholder=H.search,$.setAttribute("aria-label",H.search),$.addEventListener("input",()=>{D=$.value.trim().toLocaleLowerCase(),I()}),p.appendChild($)}let w=L("kanuni-datagrid-filter-list");p.appendChild(w);let T=L("kanuni-datagrid-filter-footer"),R=document.createElement("button");R.type="button",R.textContent=H.showAll,R.addEventListener("click",()=>{for(let $ of b())$.visible||E.setColumnVisible($.id,!0);I()});let V=document.createElement("button");V.type="button",V.className="kanuni-datagrid-filter-primary",V.textContent=H.ok,V.addEventListener("click",()=>Ke()),T.append(R,V),p.appendChild(T);function I(){let $=b(),X=g().filter(Q=>Q.visible).length;w.textContent="";let Z=D?$.filter(Q=>v(Q.id).toLocaleLowerCase().includes(D)):$;if(Z.length===0){let Q=L("kanuni-datagrid-chooser-empty");Q.textContent=H.noData,w.appendChild(Q)}for(let Q of Z){let N=document.createElement("label");N.className="kanuni-datagrid-filter-item";let P=document.createElement("input");P.type="checkbox",P.checked=Q.visible,P.disabled=Q.visible&&X===1,P.setAttribute("data-column-toggle",Q.id),P.addEventListener("change",()=>{E.setColumnVisible(Q.id,P.checked),I()});let ue=document.createElement("span");ue.textContent=v(Q.id),N.append(P,ue),w.appendChild(N)}R.disabled=X===$.length}I()},"kanuni-datagrid-filter-popup kanuni-datagrid-column-chooser")}let Su=null,Oa=null,dn=d=>{nt.classList.toggle("kanuni-datagrid-group-panel--over",d)};function gl(d,p,y){let g=E.getGroupLevels();if(d===p)return;let b=g.filter(w=>w!==d),v=b.indexOf(p);if(v<0)return;let D=y==="before"?v:v+1;Oa=d,E.groupBy([...b.slice(0,D),d,...b.slice(D)])}function Cl(d,p){let y=E.getGroupLevels(),g=y.indexOf(d),b=g+p;g<0||b<0||b>=y.length||gl(d,y[b],p===-1?"before":"after")}function yl(d,p){if(!d)return;let y=E.getGroupLevels();if(y.includes(d))return;let g=Xt?Number.POSITIVE_INFINITY:1;if(y.length>=g){E.groupBy([...y.slice(0,g-1),d]);return}let b=p??y.length;E.groupBy([...y.slice(0,b),d,...y.slice(b)])}function Ha(){if(!bu)return;nt.textContent="";let d=E.getGroupLevels();if(d.length===0){let T=L("kanuni-datagrid-group-panel-hint","span");T.textContent=H.groupPanelHint??"Drag a column header here to group by it",nt.appendChild(T);return}let p=T=>E.getColumnModel().getDef(T)?.headerName??T,y=L("kanuni-datagrid-group-levels"),g=(T,R)=>T<R.top+R.height/2?"before":"after",b=(T,R)=>{for(let V of nt.querySelectorAll(".kanuni-datagrid-group-level"))V.classList.remove("kanuni-datagrid-group-level--drop-before","kanuni-datagrid-group-level--drop-after");T&&R&&T.classList.add(`kanuni-datagrid-group-level--drop-${R}`)};d.forEach((T,R)=>{let V=L("kanuni-datagrid-group-level");V.style.setProperty("--dg-group-level",String(R)),V.setAttribute("data-group-level",String(R));let I=L("kanuni-datagrid-group-chip");if(I.setAttribute("role","button"),I.tabIndex=0,d.length>1&&(I.draggable=!0),I.setAttribute("aria-label",`${Et(H.groupLevelAria,{n:R+1})}: ${p(T)}`),I.addEventListener("dragstart",Z=>{Su=T,Z.dataTransfer&&(Z.dataTransfer.effectAllowed="move",Z.dataTransfer.setData("text/x-kanuni-column",T))}),I.addEventListener("dragend",()=>{Su=null,b(null,null)}),I.addEventListener("keydown",Z=>{let Q=Z.ctrlKey||Z.metaKey;Q&&(Z.key==="ArrowUp"||Z.key==="ArrowLeft")?(Z.preventDefault(),Cl(T,-1)):Q&&(Z.key==="ArrowDown"||Z.key==="ArrowRight")?(Z.preventDefault(),Cl(T,1)):(Z.key==="Delete"||Z.key==="Backspace")&&(Z.preventDefault(),E.groupBy(d.filter(N=>N!==T)))}),V.addEventListener("dragover",Z=>{!Su&&!(Z.dataTransfer?.types.includes("text/x-kanuni-column")??!1)||(Z.preventDefault(),Z.stopPropagation(),b(V,g(Z.clientY,V.getBoundingClientRect())))}),V.addEventListener("drop",Z=>{Z.preventDefault(),Z.stopPropagation();let Q=g(Z.clientY,V.getBoundingClientRect());b(null,null),dn(!1);let N=Su;if(Su=null,N){gl(N,T,Q);return}let P=Z.dataTransfer?.getData("text/x-kanuni-column");P&&yl(P,Q==="before"?R:R+1)}),d.length>1){let Z=L("kanuni-datagrid-group-chip-level","span");Z.textContent=String(R+1),I.appendChild(Z)}let $=document.createElement("span");$.textContent=p(T);let X=document.createElement("button");X.type="button",X.setAttribute("aria-label",Et(H.groupRemoveAria,{column:p(T)})),X.textContent="\xD7",X.addEventListener("click",()=>{E.groupBy(d.filter(Z=>Z!==T))}),X.draggable=!1,I.append($,X),V.appendChild(I),y.appendChild(V),Oa===T&&(Oa=null,queueMicrotask(()=>I.focus()))}),nt.appendChild(y);let v=L("kanuni-datagrid-group-panel-actions"),D=document.createElement("button");D.type="button",D.textContent=H.groupExpandAll,D.addEventListener("click",()=>E.expandAllGroups());let w=document.createElement("button");w.type="button",w.textContent=H.groupCollapseAll,w.addEventListener("click",()=>E.collapseAllGroups()),v.append(D,w),nt.appendChild(v)}if(bu){let d=p=>p.dataTransfer?.types.includes("text/x-kanuni-column")??!1;nt.addEventListener("dragover",p=>{d(p)&&(p.preventDefault(),dn(!0))}),nt.addEventListener("dragleave",p=>{let y=p.relatedTarget;y&&nt.contains(y)||dn(!1)}),nt.addEventListener("drop",p=>{dn(!1);let y=p.dataTransfer?.getData("text/x-kanuni-column");if(y){if(p.preventDefault(),Su){Su=null;return}yl(y)}})}let wl="";function El(){if(!q)return;let d=[Et(H.announceRows,{n:E.getVisibleCount()})],p=E.getSort();if(p.length>0){let b=p.map(v=>{let D=E.getColumnModel().getDef(v.columnId),w=D?.headerName??D?.field??v.columnId,T=v.direction==="desc"?H.announceDescending:H.announceAscending;return`${w} ${T}`}).join(", ");d.push(Et(H.announceSortedBy,{columns:b}))}let y=E.getSelectedCount();y>0&&d.push(Et(H.announceSelected,{n:y}));let g=d.join(", ");g!==wl&&(wl=g,hr.textContent=g)}function bl(){if(!K)return;Eu.textContent="";let d=rd(E.getEffectiveFilter(),E.getColumnModel(),{...Ce,labels:{...mi(H),...Ce?.labels}});if(!d&&K!=="always"){Eu.style.display="none";return}Eu.style.display="";let p=E.isFilterEnabled();Eu.className=`kanuni-datagrid-filter-panel${p?"":" kanuni-datagrid-filter-panel--suspended"}`;let y=document.createElement("button");y.type="button",y.className="kanuni-datagrid-filter-panel-clear",y.title=H.filterRemove,y.setAttribute("aria-label",H.filterRemove),y.setAttribute("data-testid","dg-filter-panel-clear"),y.disabled=d===null,y.textContent="\xD7",y.addEventListener("click",()=>{E.setFilter(null),E.clearColumnFilters(),E.setFilterEnabled(!0)});let g=document.createElement("input");g.type="checkbox",g.className="kanuni-datagrid-filter-panel-toggle",g.checked=p,g.disabled=d===null,g.title=H.filterToggle,g.setAttribute("aria-label",H.filterToggle),g.setAttribute("data-testid","dg-filter-panel-toggle"),g.addEventListener("change",()=>E.setFilterEnabled(g.checked));let b=L("kanuni-datagrid-filter-panel-text","span");if(b.setAttribute("data-testid","dg-filter-panel-text"),b.textContent=d??H.filterNone,d&&(b.title=d),Eu.append(y,g,b),O){let v=document.createElement("button");v.type="button",v.className="kanuni-datagrid-filter-panel-builder",v.title=H.filterEditBuilder,v.setAttribute("aria-label",H.filterEditBuilder),v.setAttribute("data-testid","dg-filter-panel-builder"),v.textContent="\u25BE",v.addEventListener("click",()=>O()),Eu.appendChild(v)}}let Va=new Set,Rc=E.events.on("cellsFlashed",({rowKeys:d,columnIds:p,duration:y})=>{let g=d.length?d.map(w=>`[data-row-key="${CSS.escape(String(w))}"]`).join(","):".kanuni-datagrid-row",b=p.length?p.map(w=>`[data-column-id="${CSS.escape(w)}"]`).join(","):"[data-column-id]",v=[];Ae.querySelectorAll(g).forEach(w=>{w.querySelectorAll(b).forEach(T=>v.push(T))});for(let w of v)w.classList.remove("kanuni-datagrid-cell--flash");ne.offsetWidth;for(let w of v)w.classList.add("kanuni-datagrid-cell--flash");let D=setTimeout(()=>{for(let w of v)w.classList.remove("kanuni-datagrid-cell--flash");Va.delete(D)},y);Va.add(D)});function nu(d){let p=d.target,y=p.closest(".kanuni-datagrid-row");if(!y||!Ae.contains(y))return null;let g=y.getAttribute("data-row-key");if(g===null)return null;let b=E.getRows(),v=b.findIndex(w=>w!==void 0&&String(w.key)===g);if(v===-1)return null;let D=p.closest(".kanuni-datagrid-cell")?.getAttribute("data-column-id")??null;return{node:b[v],rowIndex:v,columnId:D}}let Al=d=>{let p=nu(d);p&&(j?.(p.node),E.notifyRow("rowClicked",p.node,p.rowIndex),p.columnId&&E.notifyCell("cellClicked",p.node,p.rowIndex,p.columnId))},xl=d=>{let p=nu(d);if(p){if(Ti){let y=Ua(p,!0);y&&Ti(y)}J?.(p.node),E.notifyRow("rowDoubleClicked",p.node,p.rowIndex),p.columnId&&E.notifyCell("cellDoubleClicked",p.node,p.rowIndex,p.columnId)}};Ae.addEventListener("click",Al),Ae.addEventListener("dblclick",xl);function Nc(d){let p=0,y=Pe.querySelector(`[data-column-id="${CSS.escape(d)}"]`);y&&(p=y.scrollWidth),Ae.querySelectorAll(`[data-column-id="${CSS.escape(d)}"]`).forEach(g=>{g.scrollWidth>p&&(p=g.scrollWidth)}),p>0&&E.setColumnWidth(d,p+12,!0)}function Mc(){if(Re)for(let d of Pe.querySelectorAll('[role="columnheader"][data-column-id]')){let p=Re(d.getAttribute("data-column-id"))??"",y=d.dataset.slotClass??"";if(p!==y){for(let g of y.split(" "))g&&d.classList.remove(g);for(let g of p.split(" "))g&&d.classList.add(g);d.dataset.slotClass=p}}}function Ic(){if(k)for(let d of Pe.querySelectorAll(".kanuni-datagrid-filter-button")){let p=d.parentElement?.getAttribute("data-column-id");p&&d.classList.toggle("kanuni-datagrid-filter-button--active",E.getColumnFilter(p)!==null)}}let za=!1,vl=!1,Wu=null;function cn(){Wu!==null&&(clearTimeout(Wu),Wu=null)}function hn(d){cr.style.display=d?"":"none"}function mn(){let d=E.getOverlay();if(Ur.style.display=d==="noRows"?"":"none",ha===!1){cn(),hn(!1);return}if(!(d==="loading"&&(za||!vl))){cn(),hn(!1);return}if(za||ki<=0){cn(),hn(!0);return}Wu!==null||cr.style.display===""||(Wu=setTimeout(()=>{Wu=null,Ye||hn(!0)},ki))}let Fl=!1,Ka=!1,$a=!1,Wa=!1,Ye=!1,_a=new D0;function Lc(){if(Ka=!1,!Ye){if($a)$a=!1,Wa&&(Wa=!1,Lt++),va(),Fa(),Ta(),an();else{let d=at;va(),at!==d?(Lt++,Fa(),Ta(),an()):E.getPinnedRows("top").length+E.getPinnedRows("bottom").length>0&&an()}un(),E.getAnimateRows()&&_a.play(Ae),ji(),Na(),il(),Ic(),Mc(),Ha(),bl(),El(),mn()}}function pn(d){Ye||(d&&($a=!0),!Ka&&(Ka=!0,queueMicrotask(Lc)))}let Pc=[...Y?[E.events.on("focusedRowChanged",d=>Y({rowKey:d.rowKey,row:d.row}))]:[],...lg.map(d=>E.events.on(d,()=>pn(!0))),...sg.map(d=>E.events.on(d,()=>{Wa=!0})),...dg.map(d=>E.events.on(d,()=>pn(!1))),E.events.on("filterChanged",()=>wc()),...["sortChanged","filterChanged","groupChanged","dataUpdated"].map(d=>E.events.on(d,()=>{E.getAnimateRows()&&_a.capture(Ae)})),E.events.on("rowPinningChanged",()=>{Ye||(bc(),pn(!0))}),E.events.on("overlayChanged",d=>{za=d.manual===!0&&d.overlay==="loading",Ye||mn()}),E.events.on("busyChanged",d=>{vl=d.background===!0,Ye||mn()}),E.events.on("paginationChanged",()=>{Ye||pn(!1)}),E.events.on("bodyScroll",()=>{Ye||nl()}),E.events.on("cellsRefreshed",()=>{Ye||Zi()}),E.events.on("scrollRequested",d=>{if(Ye)return;d.scrollTop!==void 0&&(ge.scrollTop=d.scrollTop),d.scrollLeft!==void 0&&(ge.scrollLeft=d.scrollLeft),E.setScroll(ge.scrollTop,Math.abs(ge.scrollLeft));let p=d.scrollTop;p===void 0||Math.abs(ge.scrollTop-p)<=1||setTimeout(()=>{Ye||Math.abs(ge.scrollTop-p)<=1||(ge.scrollTop=p,E.setScroll(ge.scrollTop,Math.abs(ge.scrollLeft)))},0)}),...ee==="fitGrid"?[E.events.on("gridSizeChanged",()=>E.sizeColumnsToFit())]:[],...ee==="fitCells"?[E.events.on("firstDataRendered",()=>{Ye||Fl||(Fl=!0,queueMicrotask(()=>{if(!Ye)for(let d of E.getColumnStates())d.visible&&!d.flex&&Ga(d.id)}))})]:[]];ee==="fitGrid"&&E.sizeColumnsToFit();function Ua(d,p=!1){if(!d.columnId||d.node.kind!=="data"&&!(p&&d.node.kind==="group"))return null;let y=vt.find(g=>g.id===d.columnId);return y?{node:d.node,columnId:d.columnId,rowIndex:d.rowIndex,columnIndex:y.visualIndex,value:d.node.kind==="data"?E.getColumnModel().getCellValue(d.node.data,y.id):void 0}:null}let Dl=d=>{let p=d.target;if(De){let w=nu(d),T=w?Ua(w):null;T&&De(T,d)}let y=p.closest(".kanuni-datagrid-row");if(!y||y.classList.contains("kanuni-datagrid-group-row"))return;let g=y.getAttribute("data-row-key");if(g===null)return;let b=E.getRows().find(w=>w!==void 0&&String(w.key)===g);if(!b||b.kind!=="data")return;E.handleRowClick(b.key,{ctrlKey:d.ctrlKey||tc&&!d.shiftKey,metaKey:d.metaKey,shiftKey:d.shiftKey});let v=p.closest(".kanuni-datagrid-cell"),D=v?vt.find(w=>v.id.endsWith(`-${w.id}`))?.id:void 0;D&&E.focusCell(b.key,D)},Sl=d=>{if(!Ve)return;let y=d.target.closest(".kanuni-datagrid-cell");if(!y||!Ae.contains(y)||d.relatedTarget?.closest?.(".kanuni-datagrid-cell")===y)return;let b=nu(d),v=b?Ua(b):null;v&&Ve(v,d)};if(Ae.addEventListener("mousedown",Dl),Ae.addEventListener("contextmenu",ml),Ve&&Ae.addEventListener("mouseover",Sl),pr&&(qe.addEventListener("dragstart",uc),qe.addEventListener("dragover",rc),qe.addEventListener("drop",nc),qe.addEventListener("dragend",ac),qe.addEventListener("dragleave",oc)),ne.tabIndex=0,Cu){pt=la({controller:E,element:ne},tt,H,{surfaceClass:()=>sa(t).replace("kanuni-datagrid-root","").trim(),barHost:ne},{isColumnEditable:p=>Pd(E.getColumnModel().getDef(p),p)});let d=ne.querySelector(':scope > [data-testid="dg-edit-bar"]');d&&ne.insertBefore(d,ne.firstChild),pt.engine.setSavedDuration(bt?.savedDuration??0)}Zi();let kl=d=>{let p=pt;if(!p||sr)return;let y=d.target;if(!y||!(y===ne||y===ge||Ae.contains(y)))return;let g=y.tagName;g==="INPUT"||g==="TEXTAREA"||g==="SELECT"||y.isContentEditable||p.handleKeyDown(d)&&d.stopImmediatePropagation()};Cu&&ne.addEventListener("keydown",kl,!0);let Bl=d=>{let p=d.target;if(p.tagName==="INPUT"||p.tagName==="TEXTAREA"||p.isContentEditable||wt.contains(p)||Mt.contains(p)||p.closest?.('[data-testid="dg-edit-form"], [data-testid="dg-edit-bar"], [data-testid="dg-row-message"]')||Pe.contains(p))return;if((we||de||E.isRowPinningEnabled())&&(d.key==="ContextMenu"||d.key==="F10"&&d.shiftKey)){let v=E.getFocus(),D=v?Ae.querySelector(`[id="${CSS.escape(`${t.gridId}-cell-${String(v.rowKey)}-${v.columnId}`)}"]`):null;if(D){let w=D.getBoundingClientRect();D.dispatchEvent(new MouseEvent("contextmenu",{bubbles:!0,cancelable:!0,clientX:w.left+16,clientY:w.bottom})),d.preventDefault()}return}let y=dd({key:d.key,ctrlKey:d.ctrlKey,metaKey:d.metaKey,shiftKey:d.shiftKey,altKey:d.altKey});if(!y)return;if(y.type==="copy"){ln();return}if(y.type==="activate"){if(J){let v=E.getFocus(),D=v?E.getRows().find(w=>w!==void 0&&w.key===v.rowKey):void 0;D&&J(D)}y.preventDefault&&d.preventDefault();return}E.executeCommand(y),y.preventDefault&&d.preventDefault();let g=E.getFocusIndices();if(g){let D=E.getColumnLayout().center.findIndex(T=>T.state.id===E.getFocus()?.columnId),w=E.ensureVisible(g.rowIndex,D===-1?void 0:D);w&&(w.scrollTop!==void 0&&(ge.scrollTop=w.scrollTop),w.scrollLeft!==void 0&&(ge.scrollLeft=w.scrollLeft),E.setScroll(ge.scrollTop,Math.abs(ge.scrollLeft)))}let b=E.getFocus();ne.setAttribute("aria-activedescendant",b?`${t.gridId}-cell-${String(b.rowKey)}-${b.columnId}`:"")};ne.addEventListener("keydown",Bl);let Gc=Fi?nd(E,Fi):null,Tl=typeof gt=="object"?gt.delay??400:400,Rl=gt!==!1&&!(typeof gt=="object"&>.enabled===!1),Oc=typeof gt=="object"?gt.showOnTruncation!==!1:!0,Nl=typeof gt=="object"?gt.trigger??"hover":"hover",Ml=Rl&&Nl!=="focus",qa=Rl&&Nl!=="hover",fn=typeof gt=="object"&>.interactive===!0,Il=`${t.gridId}-tooltip`,ku=null,ot=null,it=null,Bu=null,ja=null;function au(){ot&&clearTimeout(ot),ot=null,Bu=null,Ya()}function Ya(){it&&clearTimeout(it),it=null,ja?.removeAttribute("aria-describedby"),ja=null,ku?.remove(),ku=null}let Hc=d=>d.scrollWidth>d.clientWidth+1||d.scrollHeight>d.clientHeight+1;function Vc(d){let y=d.closest(".kanuni-datagrid-row")?.getAttribute("data-row-key"),g=vt.find(R=>d.id.endsWith(`-${R.id}`));if(!y||!g)return null;let b=E.getRows().find(R=>R!==void 0&&String(R.key)===y);if(!b||b.kind!=="data")return null;let v=g.def,D=ka(b.key,g.id,b.data);if(D)return D;let w={value:E.getColumnModel().getCellValue(b.data,g.id),row:b.data,node:b,column:v},T=v.renderTooltip;if(T){let R=T(w);return R===void 0||R===""?null:R}if(typeof v.tooltip=="function")return v.tooltip(w)??null;if(typeof v.tooltip=="string")return v.tooltip;if(v.tooltipField){let R=b.data[v.tooltipField];return R==null?null:String(R)}return Oc&&Hc(d)?d.textContent??null:null}function Ll(d,p){let y=Vc(d);if(y===null||y==="")return;Ya();let g=d.getBoundingClientRect();ku=L(`${sa(t)} kanuni-datagrid-portal`);let b=L(fn?"kanuni-datagrid-tooltip kanuni-datagrid-tooltip--interactive":"kanuni-datagrid-tooltip");b.id=Il,b.setAttribute("role","tooltip"),typeof y=="string"?b.textContent=y:b.appendChild(y),b.style.position="fixed",b.style.left=`${g.left}px`,b.style.top=`${g.bottom+4}px`,b.style.zIndex="1001",fn&&(b.addEventListener("pointerenter",()=>{it&&clearTimeout(it),it=null,ot&&clearTimeout(ot),ot=null}),b.addEventListener("pointerleave",au)),ku.appendChild(b),qt(t.portalContainer).appendChild(jt(ku,t.portalContainer,"tooltip")),p&&(d.setAttribute("aria-describedby",Il),ja=d)}let Pl=d=>{if(!Ml)return;let p=d.target.closest(".kanuni-datagrid-cell");if(p&&p===Bu){it&&clearTimeout(it),it=null;return}fn&&ku&&it?(ot&&clearTimeout(ot),ot=null):au(),!(!p||!Ae.contains(p))&&(Bu=p,ot=setTimeout(()=>{ot=null,!(Bu!==p||!p.isConnected)&&Ll(p,!1)},Tl))},Gl=d=>{if(!Ml)return;let p=d.relatedTarget;if(!(Bu&&p&&Bu.contains(p))){if(!fn||!ku){au();return}it&&clearTimeout(it),it=setTimeout(Ya,150)}};ne.addEventListener("pointerover",Pl),ne.addEventListener("pointerout",Gl),ge.addEventListener("scroll",au,{passive:!0});let Ol=-1/0,Hl=()=>{Ol=Date.now()};qa&&ne.addEventListener("pointerdown",Hl);let zc=qa?E.events.on("focusChanged",()=>{au();let d=E.getFocus();d&&(ot=setTimeout(()=>{if(ot=null,!ne.contains(document.activeElement)&&Date.now()-Ol>1500)return;let p=document.getElementById(`${t.gridId}-cell-${String(d.rowKey)}-${d.columnId}`);!p||!Ae.contains(p)||(Bu=p,Ll(p,!0))},Tl))}):null,Vl=d=>{d.key==="Escape"&&au()};qa&&ne.addEventListener("keydown",Vl);let zl=()=>{if(E.setScroll(ge.scrollTop,Math.abs(ge.scrollLeft)),ou)for(let d of Kl())d.scroller.scrollLeft!==ge.scrollLeft&&(d.scroller.scrollLeft=ge.scrollLeft)};ge.addEventListener("scroll",zl,{passive:!0});let ou=null,Kl=()=>{if(!Ee||!ou)return[];let d=Hr.get(Ee);return d?[...d].filter(p=>p!==ou):[]},$l=null;if(Ee){ou={controller:E,scroller:ge};let d=Hr.get(Ee)??new Set;d.add(ou),Hr.set(Ee,d),$l=E.events.on("columnStateChanged",()=>{if(bi.has(Ee))return;let p=Kl();if(p.length===0)return;let y=E.getColumnStates();bi.add(Ee);try{for(let g of p)g.controller.applyColumnStates(y)}finally{bi.delete(Ee)}})}let Wl=()=>{E.setViewportSize(ge.clientWidth,ge.clientHeight),lr&&ec(vd(ge)),ge.style.setProperty("--dg-viewport-width",`${ge.clientWidth}px`);let d=qe.getBoundingClientRect(),p=ze.getBoundingClientRect();E.setChromeOffsets(d.top-p.top,p.bottom-d.bottom),Cd(ge,E)};Wl();let gn=null;typeof ResizeObserver<"u"&&(gn=new ResizeObserver(Wl),gn.observe(ge),gn.observe(ze)),va(),Fa(),Ta(),Ec(),an(),un(),Na(),il(),Ha(),bl(),El(),mn(),vu?.always&&Aa(!0);let Qa=null;if(F){let d=null,p=()=>{let y=Pe.offsetHeight,g=y>0?`${y}px`:null;g!==d&&(d=g,g?ze.style.setProperty("--dg-header-actual",g):ze.style.removeProperty("--dg-header-actual"))};p(),typeof ResizeObserver<"u"&&(Qa=new ResizeObserver(p),Qa.observe(Pe))}return Li=!0,{controller:E,element:ne,setData:d=>E.setData(d),setColumns:d=>E.setColumns(d),destroy:()=>{if(!Ye){if(Ye=!0,Pc.forEach(d=>d()),Cr.forEach(d=>d()),Cr=[],gn?.disconnect(),Qa?.disconnect(),qi?.(),zu&&(zu=!1,Gu--,Gu<=0&&(Gu=0,document.documentElement.classList.remove("kanuni-datagrid-printing"))),$l?.(),Ee&&ou){let d=Hr.get(Ee);d?.delete(ou),d&&d.size===0&&Hr.delete(Ee),ou=null}ge.removeEventListener("scroll",zl),Ae.removeEventListener("mousedown",Dl),Ae.removeEventListener("contextmenu",ml),Ct.removeEventListener("contextmenu",on),_a.dispose(),Zt.removeEventListener("contextmenu",on),Ve&&Ae.removeEventListener("mouseover",Sl),Ae.removeEventListener("click",Al),Ae.removeEventListener("dblclick",xl),Rc(),ol?.(),cn();for(let d of Va)clearTimeout(d);ne.removeEventListener("keydown",Bl),ne.removeEventListener("keydown",kl,!0),pt?.dispose(),pt=null,ne.removeEventListener("pointerover",Pl),ne.removeEventListener("pointerout",Gl),ne.removeEventListener("keydown",Vl),ne.removeEventListener("pointerdown",Hl),zc?.(),ge.removeEventListener("scroll",au),au(),Gc?.(),Ke(!1),E.dispose(),ne.remove()}}}}function Vd(e){let t=document.createElement("button");t.type="button";let u={...e},r=()=>{let{icon:n,label:a,shortcut:o,disabledReason:l,showLabel:i,testId:s}=u;if(t.className=`kanuni-datagrid-app-button${i?"":" kanuni-datagrid-toolbar-icon-button"}`,t.textContent="",typeof n=="string"?t.insertAdjacentHTML("afterbegin",n):t.appendChild(n),i){let m=document.createElement("span");m.textContent=a,t.appendChild(m),t.removeAttribute("aria-label")}else t.setAttribute("aria-label",a);let h=o?`${a} (${o})`:a;t.title=l!==void 0?`${h} \u2014 ${l}`:h,o?t.setAttribute("aria-keyshortcuts",o):t.removeAttribute("aria-keyshortcuts"),l!==void 0?(t.setAttribute("aria-disabled","true"),t.setAttribute("aria-description",l)):(t.removeAttribute("aria-disabled"),t.removeAttribute("aria-description")),s&&t.setAttribute("data-testid",s)};return t.addEventListener("click",n=>{if(u.disabledReason!==void 0){n.preventDefault();return}u.onClick?.()}),t.update=n=>{u={...u,...n},r()},r(),t}return Yc(Cg);})();
|
|
15
|
+
Cause:`,e))}var hp=1e5,mp=12,fp=2e3,pp=500,Ys=2e5;function Qs(){return new Promise(e=>{if(typeof MessageChannel>"u"){setTimeout(e,0);return}let t=new MessageChannel;t.port1.onmessage=()=>{t.port1.close(),e()},t.port2.postMessage(void 0)})}var St=class extends Error{constructor(e){super(`[datagrid] ${e}`),this.name="WorkerRequestAbandoned"}},Gn=class extends Error{constructor(){super("[datagrid] compute cancelled"),this.name="WorkerRequestCancelled"}};function gp(){return typeof Worker<"u"}function fd(e,t){if(e){if("nodes"in e){for(let u of e.nodes)fd(u,t);return}t.add(e.columnId)}}function zo(e,t){let u=new Set;for(let r of t.sort)u.add(r.columnId);if(fd(t.filter,u),(t.searchText??"").trim().length>0)for(let r of Io(e))u.add(r);return[...u].filter(r=>e.getState(ti(r)??r)!==void 0)}var Tn=class{mode="client";rows;options;fallback;threshold;worker=null;workerBroken=!1;dataVersion=0;encodeToken=0;encodeQueue=Promise.resolve();initializedVersion=-1;encodedColumns=new Set;lastTimings={encodeMs:0,workerMs:0,projectMs:0};getLastTimings(){return this.lastTimings}encodedMeta=new Map;requestCounter=0;pending=new Map;pendingAggregate=new Map;nodeCache=new $0;constructor(e,t){this.rows=e,this.options=t,this.threshold=t.threshold??dp,this.fallback=new op(e,{keyGetter:t.keyGetter,locale:t.locale,nodeCache:this.nodeCache})}getTotalCount(){return this.rows.length}setData(e){this.rows=e,this.fallback.setData(e),this.encodedMeta.clear(),this.nodeCache.invalidate(),this.dataVersion++,this.settlePending("data replaced while a worker request was in flight")}patchData(e,t,u){this.rows=e,this.fallback.patchData(e,t,u);let r=this.dataVersion;this.dataVersion++,this.tryPatchWorker(r,t,u),this.settlePending("data replaced while a worker request was in flight")}tryPatchWorker(e,t,u){if(!this.worker||this.workerBroken||!u||this.initializedVersion!==e)return;if(t.length===0){this.postPatch(e,[]);return}let r=[];for(let n of this.encodedColumns){let a=this.encodedMeta.get(n);if(!a)return;if(a.displaySource!==null){let i=a.displaySource,s=[],h=[];for(let m of t)h.push(E0(u,i,this.rows[m])),s.push(m);r.push({columnId:n,kind:"text",indices:s,labels:h});continue}let o=a.usesSortValue?i=>u.getSortValue(i,n):i=>u.getCellValue(i,n),l=[];if(a.kind==="numeric"){let i=a.dataType==="date"?A0:b0,s=[],h=a.hasSearch?[]:void 0;for(let m of t){let c=o(this.rows[m]);if(Hn(c))s.push(Number.NaN),h?.push(null);else{if(!a.hasSearch&&typeof c!="number")return;s.push(i(c)),h?.push(String(c))}l.push(m)}r.push({columnId:n,kind:"numeric",indices:l,numbers:s,labels:h})}else{let i=[];for(let s of t){let h=o(this.rows[s]);i.push(Hn(h)?null:String(h)),l.push(s)}r.push({columnId:n,kind:"text",indices:l,labels:i})}}this.postPatch(e,r)}postPatch(e,t){let u={action:"patchRows",gridId:this.options.gridId,fromVersion:e,toVersion:this.dataVersion,patches:t};this.worker.postMessage(u),this.initializedVersion=this.dataVersion}getSourceRows(){return this.rows}usesWorker(){return this.options.enabled!==!1&&!this.workerBroken&&gp()&&this.rows.length>=this.threshold}async getRows(e,t){if(!this.usesWorker()||up(e,t.sort)||typeof t.externalFilter=="function"||ko(t.filter))return this.fallback.compute(e,t);try{let u=performance.now(),r=await this.computeOnWorker(e,t);return this.lastTimings.workerMs=Math.round(performance.now()-u)-this.lastTimings.encodeMs,this.buildResult(r)}catch(u){if(u instanceof St||u instanceof Gn)throw u;return this.workerBroken=!0,this.teardownWorker(),cp(u,this.options.debugMode===!0),this.fallback.compute(e,t)}}buildResult(e){let t=performance.now(),u=this.nodeCache.project(e,this.rows,this.options.keyGetter);return this.lastTimings.projectMs=Math.round(performance.now()-t),{nodes:u,visibleCount:e.length,totalCount:this.rows.length}}ensureWorker(){if(this.worker)return this.worker;let e=this.options.workerUrl,t=e?new Worker(e,{type:"module"}):new Worker(lp());return t.onmessage=u=>this.onMessage(u.data),t.onerror=u=>{let r=new Error(`datagrid worker error: ${u.message??"unknown"}`);this.pending.forEach(n=>n.reject(r)),this.pending.clear(),this.pendingAggregate.forEach(n=>n.reject(r)),this.pendingAggregate.clear()},this.worker=t,t}onMessage(e){if(e.action==="result"){if(e.dataVersion!==this.dataVersion)return;let t=this.pending.get(e.requestId);if(!t)return;this.pending.delete(e.requestId),t.resolve(new Uint32Array(e.order))}else if(e.action==="aggregated"){if(e.dataVersion!==this.dataVersion)return;let t=this.pendingAggregate.get(e.requestId);if(!t)return;this.pendingAggregate.delete(e.requestId),t.resolve(e)}else if(e.action==="error"){let t=this.pending.get(e.requestId)??this.pendingAggregate.get(e.requestId);if(!t)return;this.pending.delete(e.requestId),this.pendingAggregate.delete(e.requestId),t.reject(new Error(e.message))}else if(e.action==="progress"){if(e.dataVersion!==this.dataVersion||!this.pending.has(e.requestId))return;this.options.onPhaseProgress?.(e.phase,e.fraction)}else if(e.action==="cancelled"){let t=this.pending.get(e.requestId);if(!t)return;this.pending.delete(e.requestId),t.reject(new Gn)}}cancel(){if(this.encodeToken++,!this.worker||this.pending.size===0)return;let e={action:"cancel",gridId:this.options.gridId};this.worker.postMessage(e)}async encodeOne(e,t,u,r,n,a){if(!r)return z4(this.rows,e,t,u);let o=x0(this.rows,e,t,u),l=fp;for(;;){let i=performance.now(),s=o.step(l),h=performance.now()-i;if(!s)break;let m=h>0?Math.round(l*mp/h):Ys;if(l=Math.min(Ys,Math.max(pp,m)),await Qs(),this.encodeToken!==a)throw new St("encode cancelled");n?.(o.done/o.total)}return o.finish()}toWire(e,t,u,r,n){let a=ti(t);return this.encodedMeta.set(t,{kind:r.kind,hasSearch:r.kind==="numeric"&&!!r.searchCodes,usesSortValue:u,dataType:a===null?e.getDataType(t):"string",displaySource:a}),sp(t,r,n)}enqueueEncode(e,t){let u=this.encodeQueue.then(()=>{if(this.encodeToken!==e)throw new St("encode cancelled");return t(e)});return this.encodeQueue=u.catch(()=>{}),u}async sendColumns(e,t,u,r,n=!1,a=this.encodeToken){let o=this.dataVersion,l=[],i=[],s=this.rows.length>=hp&&u.length>0;for(let m=0;m<u.length;m++){if(s){if(await Qs(),this.encodeToken!==a)throw new St("encode cancelled");n||this.options.onEncodeProgress?.(m/u.length)}let c=t.getDef(u[m])?.calculateSortValue!=null,p=await this.encodeOne(t,u[m],c,s,n?void 0:C=>this.options.onEncodeProgress?.((m+C)/u.length),a);l.push(this.toWire(t,u[m],c,p,i))}s&&!n&&this.options.onEncodeProgress?.(1);let h=r?{action:"init",gridId:this.options.gridId,dataVersion:o,rowCount:this.rows.length,columns:l}:{action:"addColumns",gridId:this.options.gridId,dataVersion:o,columns:l};if(e.postMessage(h,i),r)this.initializedVersion=o,this.encodedColumns=new Set(u);else for(let m of u)this.encodedColumns.add(m)}async computeOnWorker(e,t){let u=this.ensureWorker();this.lastTimings={encodeMs:0,workerMs:0,projectMs:0},await this.enqueueEncode(this.encodeToken,async l=>{let i=zo(e,t),s=this.initializedVersion!==this.dataVersion,h=s?i:i.filter(c=>!this.encodedColumns.has(c));if(!s&&h.length===0)return;let m=performance.now();if(await this.sendColumns(u,e,h,s,!1,l),this.lastTimings.encodeMs=Math.round(performance.now()-m),this.initializedVersion!==this.dataVersion)throw new St("data replaced while columns were being encoded")});let r=++this.requestCounter,n=Io(e),a=new Promise((l,i)=>{this.pending.set(r,{resolve:l,reject:i})}),o={action:"compute",gridId:this.options.gridId,dataVersion:this.dataVersion,requestId:r,sort:t.sort,filter:t.filter,searchText:t.searchText,searchColumns:n,searchLabelHits:fs(Mo(e,n,Ir(t.searchText))),locale:this.options.locale??"en",...t.absoluteSort&&t.absoluteSort.length>0?{absoluteSort:[...t.absoluteSort]}:{}};return u.postMessage(o),a}async aggregate(e,t,u){if(!this.usesWorker()||!P0(u)||ko(t.filter))return null;try{let r=this.ensureWorker(),n=new Set(zo(e,t));n.add(u.categoryColumnId);for(let c of u.series)n.add(c.columnId);if(this.initializedVersion!==this.dataVersion)return null;await this.enqueueEncode(this.encodeToken,async c=>{if(this.initializedVersion!==this.dataVersion)throw new St("data replaced while the chart waited to encode");let p=[...n].filter(C=>!this.encodedColumns.has(C));if(p.length!==0&&(await this.sendColumns(r,e,p,!1,!0,c),this.initializedVersion!==this.dataVersion))throw new St("data replaced while columns were being encoded")});let a=++this.requestCounter,o=Io(e),l=new Promise((c,p)=>{this.pendingAggregate.set(a,{resolve:c,reject:p})}),i={action:"aggregate",gridId:this.options.gridId,dataVersion:this.dataVersion,requestId:a,filter:t.filter,searchText:t.searchText,searchColumns:o,searchLabelHits:fs(Mo(e,o,Ir(t.searchText))),locale:this.options.locale??"en",categoryColumnId:u.categoryColumnId,series:u.series.map(c=>({columnId:c.columnId,aggregate:c.aggregate,label:c.label??e.getDef(c.columnId)?.headerName??c.columnId})),maxCategories:u.maxCategories,otherBucket:u.otherBucket,categoryOrder:u.categoryOrder,categoryBucket:u.categoryBucket,otherLabel:u.otherLabel};r.postMessage(i);let s=await l,h=s.categories.length,m=new Float64Array(s.values);return{categories:s.categories,series:u.series.map((c,p)=>({label:s.seriesLabels[p]??c.columnId,columnId:c.columnId,aggregate:c.aggregate,values:m.subarray(p*h,(p+1)*h)})),truncated:s.truncated,otherIndex:s.otherIndex,rowCount:s.rowCount,categoryCount:s.categoryCount,rankingExact:s.rankingExact,bucket:s.bucket,bucketStarts:s.bucketStarts?new Float64Array(s.bucketStarts):void 0,bucketEnds:s.bucketEnds?new Float64Array(s.bucketEnds):void 0}}catch(r){return r instanceof St||r instanceof Gn||this.options.debugMode&&console.error("[datagrid] worker chart aggregation failed, using main thread:",r),null}}teardownWorker(){if(this.worker){try{let e={action:"dispose",gridId:this.options.gridId};this.worker.postMessage(e)}catch{}this.worker.terminate(),this.worker=null,this.initializedVersion=-1,this.encodedColumns.clear()}}dispose(){this.settlePending("grid disposed while a worker request was in flight"),this.teardownWorker(),this.rows=[]}settlePending(e){if(this.pending.size===0&&this.pendingAggregate.size===0)return;let t=new St(e);this.pending.forEach(u=>u.reject(t)),this.pending.clear(),this.pendingAggregate.forEach(u=>u.reject(t)),this.pendingAggregate.clear()}};var Cp=class{mode;selected=new Set;allMatching=!1;anchor=null;selectable=null;constructor(e="none"){this.mode=e}setSelectable(e){this.selectable=e}canSelect(e){return this.selectable===null||this.selectable(e)}dropUnselectable(){if(this.selectable===null||this.allMatching)return!1;let e=!1;for(let t of[...this.selected])this.selectable(t)||(this.selected.delete(t),e=!0);return this.anchor!==null&&!this.selectable(this.anchor)&&(this.anchor=null),e}getMode(){return this.mode}setMode(e){if(e===this.mode)return!1;if(this.mode=e,e==="none")this.clear();else if(e==="single"&&this.allMatching)this.clear();else if(e==="single"&&this.selected.size>1){let t=this.selected.values().next().value;this.selected=new Set([t])}return!0}isSelected(e){return this.allMatching?!this.selected.has(e)&&this.canSelect(e):this.selected.has(e)}getSelectedKeys(){return[...this.selected]}getSelectionDescriptor(){return{allMatching:this.allMatching,keys:[...this.selected]}}isAllMatching(){return this.allMatching}getSelectedCount(e){return this.allMatching?e===void 0?0:Math.max(0,e-this.selected.size):this.selected.size}selectAllMatching(){return this.mode!=="multiple"||this.allMatching&&this.selected.size===0?!1:(this.allMatching=!0,this.selected=new Set,!0)}getAnchor(){return this.anchor}select(e){return this.mode==="none"||!this.canSelect(e)||!this.allMatching&&this.selected.size===1&&this.selected.has(e)?!1:(this.allMatching=!1,this.selected=new Set([e]),this.anchor=e,!0)}toggle(e){return this.mode==="none"?!1:this.isSelected(e)?(this.allMatching?this.selected.add(e):this.selected.delete(e),!0):this.canSelect(e)?(this.allMatching?this.selected.delete(e):this.mode==="single"?this.selected=new Set([e]):this.selected.add(e),this.anchor=e,!0):!1}selectRange(e,t,u=!1){if(this.mode!=="multiple")return this.select(e);let r=this.anchor??e,n=t.indexOf(r),a=t.indexOf(e);if(n===-1||a===-1)return this.select(e);let o=Math.min(n,a),l=Math.max(n,a),i=u&&!this.allMatching?new Set(this.selected):new Set;for(let s=o;s<=l;s++)this.canSelect(t[s])&&i.add(t[s]);return!this.allMatching&&vo(i,this.selected)?!1:(this.allMatching=!1,this.selected=i,!0)}selectAll(e){if(this.mode!=="multiple")return!1;let t=new Set(this.selectable===null?e:e.filter(u=>this.canSelect(u)));return!this.allMatching&&vo(t,this.selected)?!1:(this.allMatching=!1,this.selected=t,this.anchor=e[0]??null,!0)}setMany(e,t){if(this.mode!=="multiple")return!1;let u=!1;for(let r of e)this.isSelected(r)!==t&&(t&&!this.canSelect(r)||(this.allMatching===t?this.selected.delete(r):this.selected.add(r),u=!0));return u}clear(){return!this.allMatching&&this.selected.size===0?!1:(this.allMatching=!1,this.selected=new Set,!0)}setSelectedKeys(e){if(this.mode==="none")return!1;let t=this.selectable===null?e:e.filter(r=>this.canSelect(r)),u=new Set(this.mode==="single"?t.slice(0,1):t);return!this.allMatching&&vo(u,this.selected)?!1:(this.allMatching=!1,this.selected=u,this.anchor=u.size>0?[...u][u.size-1]:null,!0)}handleRowClick(e,t,u){if(this.mode==="none")return!1;let r=!!(t.ctrlKey||t.metaKey);return t.shiftKey&&this.mode==="multiple"?this.selectRange(e,u,r):r?this.toggle(e):this.select(e)}retainKeys(e){let t=!1;for(let u of this.selected)e.has(u)||(this.selected.delete(u),t=!0);return this.anchor!==null&&!e.has(this.anchor)&&(this.anchor=null),t}};function vo(e,t){if(e.size!==t.size)return!1;for(let u of e)if(!t.has(u))return!1;return!0}function wp(e){return{count:e.length,keyAt:t=>e[t],indexOf:t=>e.indexOf(t)}}function Ru(e,t,u){return e<t?t:e>u?u:e}function Fo(e){return e.rows??wp(e.rowKeys??[])}var yp=class{position=null;get(){return this.position}isFocused(e,t){return this.position?.rowKey===e&&this.position?.columnId===t}set(e){return e?.rowKey===this.position?.rowKey&&e?.columnId===this.position?.columnId?!1:(this.position=e,!0)}clear(){return this.set(null)}getIndices(e){if(!this.position)return null;let t=Fo(e).indexOf(this.position.rowKey),u=e.columnIds.indexOf(this.position.columnId);return t===-1||u===-1?null:{rowIndex:t,columnIndex:u}}move(e,t){let{columnIds:u}=t,r=Fo(t);if(r.count===0||u.length===0)return!1;let n=Math.max(1,t.pageSize??10),a=this.getIndices(t);if(!a){let p=r.keyAt(0);return p===void 0?!1:this.set({rowKey:p,columnId:u[0]})}let o=r.count-1,l=u.length-1,{rowIndex:i,columnIndex:s}=a,h=i,m=(p,C)=>{let E=r.keyAt(p);return t.spanOf&&E!==void 0?t.spanOf(E,C):{start:C,span:1}};switch(e){case"up":i=Ru(i-1,0,o);break;case"down":i=Ru(i+1,0,o);break;case"left":s=Ru(m(i,s).start-1,0,l);break;case"right":{let p=m(i,s);s=Ru(p.start+p.span,0,l);break}case"pageUp":i=Ru(i-n,0,o);break;case"pageDown":i=Ru(i+n,0,o);break;case"rowStart":s=0;break;case"rowEnd":s=l;break;case"gridStart":i=0,s=0;break;case"gridEnd":i=o,s=l;break}if(t.isFocusable){let p=i>h?1:i<h?-1:0;i=this.skipUnfocusable(r,i,p,t.isFocusable,h)}let c=r.keyAt(i);return c===void 0?!1:(t.spanOf&&(s=t.spanOf(c,s).start),this.set({rowKey:c,columnId:u[s]}))}skipUnfocusable(e,t,u,r,n){if(r(e.keyAt(t),t))return t;let a=u===0?-1:u;for(let o=t+a;o>=0&&o<e.count;o+=a)if(r(e.keyAt(o),o))return o;for(let o=t-a;o>=0&&o<e.count;o-=a)if(r(e.keyAt(o),o))return o;return n}reconcile(e,t){if(!this.position)return!1;let{columnIds:u}=e,r=Fo(e);if(r.count===0||u.length===0)return this.clear();let n=r.indexOf(this.position.rowKey)!==-1,a=u.includes(this.position.columnId)?this.position.columnId:u[0];if(n)return this.set({rowKey:this.position.rowKey,columnId:a});let o=Ru(t??0,0,r.count-1),l=r.keyAt(o);return l===void 0?this.clear():this.set({rowKey:l,columnId:a})}},dt=(e,t=!0)=>({type:e,preventDefault:t});function pd(e){let t=!!(e.ctrlKey||e.metaKey),u=!!e.shiftKey;switch(e.key){case"ArrowUp":return dt(u?"extendSelectionUp":"up");case"ArrowDown":return dt(u?"extendSelectionDown":"down");case"ArrowLeft":return dt("left");case"ArrowRight":return dt("right");case"PageUp":return dt("pageUp");case"PageDown":return dt("pageDown");case"Home":return dt(t?"gridStart":"rowStart");case"End":return dt(t?"gridEnd":"rowEnd");case" ":case"Spacebar":return dt("toggleSelection");case"Enter":return dt("activate");case"Escape":return dt("clearSelection");case"a":case"A":return t?dt("selectAll"):null;case"c":case"C":return t?dt("copy",!1):null;default:return null}}function Ep(e){return e==="up"||e==="down"||e==="left"||e==="right"||e==="pageUp"||e==="pageDown"||e==="rowStart"||e==="rowEnd"||e==="gridStart"||e==="gridEnd"}var bp="__dg_",Gu="__dg_group";function Be(e){return e.startsWith(bp)}function Ap(e){return e.filter(t=>!Be(t))}function $o(e){return e.replace(/[\t\r\n]+/g," ")}function xp(e,t,u,r){let n=u.getCellValue(e.data,t),a=cu(u.getDef(t),n,e.data);return $o(r.cell?r.cell(e,t,n,a):a)}function vp(e,t,u={},r={}){let n=u.columnIds??Ap(t.runtime().map(o=>o.state.id));if(n.length===0)return"";let a=[];if(u.includeGroupHeaders){let o=n.map(i=>_t(t.getDef(i))),l=o.reduce((i,s)=>Math.max(i,s.length),0);for(let i=0;i<l;i++){let s=null;a.push(o.map(h=>{let m=h[i]??"",c=m===""?null:h.slice(0,i+1).join("\0"),p=c!==null&&c===s;return s=c,p?"":$o(m)}).join(" "))}}(u.includeHeaders||u.includeGroupHeaders)&&a.push(n.map(o=>{let l=t.getDef(o)?.headerName??t.getDef(o)?.field??o;return $o(r.header?r.header(o,l):l)}).join(" "));for(let o of e)Bt(o)&&a.push(n.map(l=>xp(o,l,t,r)).join(" "));return a.join(`
|
|
16
|
+
`)}function Fp(e,t,u,r){if(!Number.isFinite(t)||e.length===0)return null;let n=e.filter(c=>c.writable);if(n.length===0)return null;let a=u==="avg"?t*e.length:t,o=e.reduce((c,p)=>p.writable?c:c+p.value,0),l=a-o,i=n.reduce((c,p)=>c+p.value,0),s=r==="proportional"&&i!==0?n.map(c=>c.value*l/i):n.map(()=>l/n.length),h=Number.isInteger(l)&&n.every(c=>Number.isInteger(c.value))?Dp(s,l):s,m=[];return n.forEach((c,p)=>{h[p]!==c.value&&m.push({key:c.key,value:h[p]})}),m}function Dp(e,t){let u=e.map(a=>Math.floor(a)),r=t-u.reduce((a,o)=>a+o,0),n=e.map((a,o)=>({i:o,fraction:a-Math.floor(a)})).sort((a,o)=>o.fraction-a.fraction||a.i-o.i);for(let{i:a}of n){if(r<=0)break;u[a]+=1,r-=1}return u}var Xs=class{constructor(e,t){this.source=e,this.options=t}source;options;mode="remote";rows=new Map;count=0;started=!1;disposed=!1;queryKey=null;range=null;sent=null;rangeTimer=null;start(){this.started||(this.started=!0,this.source.init({setRowCount:e=>{if(this.disposed)return;let t=Number.isFinite(e)?Math.max(0,Math.floor(e)):0;if(t!==this.count){this.count=t;for(let u of this.rows.keys())u>=t&&this.rows.delete(u);this.options.onChange()}},setRowData:e=>{if(this.disposed)return;let t=e instanceof Map?e.entries():Object.entries(e),u=!1;for(let[r,n]of t){let a=Number(r);!Number.isInteger(a)||a<0||a>=this.count||(this.rows.set(a,Xe(n,this.options.keyGetter(n),a)),u=!0)}u&&this.options.onChange()},getRow:e=>this.rows.get(e)?.data}))}async getRows(e,t){if(this.disposed)return{nodes:[],visibleCount:0,totalCount:0};this.start();let u=JSON.stringify({sort:t.sort,filter:t.filter,searchText:t.searchText});if(u!==this.queryKey){let n=this.queryKey===null;this.queryKey=u,n||(this.rows.clear(),this.range=null,this.sent=null),this.source.setQuery?.({sort:t.sort,filter:t.filter,searchText:t.searchText})}if(t.range&&this.count>0){let n=Math.min(Math.max(0,t.range.start),this.count-1),a=Math.min(Math.max(n,t.range.end-1),this.count-1);if(!this.range||this.range.first!==n||this.range.last!==a){this.range={first:n,last:a};for(let o of this.rows.keys())(o<n||o>a)&&this.rows.delete(o);this.sendRange()}}let r=new Array(this.count);for(let[n,a]of this.rows)r[n]=a;return{nodes:r,visibleCount:this.count,totalCount:this.count}}sendRange(){this.rangeTimer===null&&(this.rangeTimer=setTimeout(()=>{this.rangeTimer=null;let e=this.range;this.disposed||!e||this.sent&&this.sent.first===e.first&&this.sent.last===e.last||(this.sent={...e},this.source.setViewportRange(e.first,e.last))},0))}getTotalCount(){return this.count}invalidate(){this.rows.clear(),this.range=null,this.sent=null}dispose(){this.disposed||(this.disposed=!0,this.rangeTimer!==null&&clearTimeout(this.rangeTimer),this.rows.clear(),this.source.destroy?.())}};function Sp(e){let t=e.length,u=new Int32Array(t),r=new Int32Array(t),n=[];for(let a=0;a<t;a++){let o=e[a];if(o&&o.kind==="group"){for(;n.length>0&&e[n[n.length-1]].level>=o.level;)r[n.pop()]=a;u[a]=n.length>0?n[n.length-1]:-1,n.push(a)}else u[a]=n.length>0?n[n.length-1]:-1}for(;n.length>0;)r[n.pop()]=t;return{nodes:e,enclosing:u,end:r}}function gd(e,t){let u=[];if(t<0||t>=e.enclosing.length)return u;for(let r=e.enclosing[t];r>=0;r=e.enclosing[r])u.push(r);return u.reverse()}function kp(e,t){if(e.enclosing.length===0)return[];let u=t.indexAt(t.viewTop),r=[],n=gd(e,u),a=e.nodes[u];a&&a.kind==="group"&&t.offsetOf(u)<t.viewTop&&n.push(u);let o=0;for(let l of n){let i=t.heightOf(l),s=t.offsetOf(e.end[l])-t.viewTop-i,h=Math.min(o,s);if(h+i<=0)break;r.push({node:e.nodes[l],index:l,offset:h,height:i}),o+=i}return r}var Wo=(()=>{if(typeof MessageChannel>"u")return u=>{setTimeout(u,0)};let e=new MessageChannel,t=[];return e.port1.onmessage=()=>{let u=t.shift();u&&u()},e.port1.unref?.(),e.port2.unref?.(),u=>{t.push(u),e.port2.postMessage(null)}})();function Sr(){return new Promise(e=>Wo(e))}var Rn=1e5,Do=32768,Zs=65536;async function Bp(e){let{rows:t,getValue:u,labelOf:r,collator:n,shouldAbort:a,onProgress:o}=e,l=()=>a?a():!1,i=new Map,s,h=!1;for(let F=0;F<t.length;F+=Rn){if(l())return null;let x=Math.min(t.length,F+Rn);for(let k=F;k<x;k++){let M=t[k],z=u(M);if(z==null){h||(h=!0,s=z);continue}let O=r?r(z,M):String(z),G=i.get(O);if(!G)i.set(O,[z]);else if(r&&!(G.length===1&&Object.is(G[0],z))){let W=String(z);G.some(Y=>String(Y)===W)||G.push(z)}}o?.(x/t.length*.2),x<t.length&&await Sr()}let m=[...i.keys()],c=[];for(let F=0;F<m.length;F+=Do){if(l())return null;c.push(m.slice(F,F+Do).sort(n.compare)),o?.(.2+Math.min(m.length,F+Do)/Math.max(1,m.length)*.2),await Sr()}c.length===0&&(c=[[]]);let p=Math.max(1,Math.ceil(Math.log2(Math.max(2,c.length)))),C=0;for(;c.length>1;){let F=[];for(let x=0;x<c.length;x+=2){if(x+1===c.length){F.push(c[x]);continue}let k=c[x],M=c[x+1],z=new Array(k.length+M.length),O=0,G=0,W=0,Y=Zs;for(;O<k.length&&G<M.length;)if(n.compare(k[O],M[G])<=0?z[W++]=k[O++]:z[W++]=M[G++],--Y===0){if(l())return null;await Sr(),Y=Zs}for(;O<k.length;)z[W++]=k[O++];for(;G<M.length;)z[W++]=M[G++];if(F.push(z),l())return null;await Sr()}c=F,C++,o?.(.4+Math.min(1,C/p)*.5)}let E=c[0],D=[];h&&D.push({label:"",value:s});for(let F=0;F<E.length;F+=Rn){if(l())return null;let x=Math.min(E.length,F+Rn);for(let k=F;k<x;k++){let M=E[k];for(let z of i.get(M))D.push({label:M,value:z})}x<E.length&&await Sr()}return o?.(1),D}var Tp=(()=>{let e=new Uint32Array(256);for(let t=0;t<256;t++){let u=t;for(let r=0;r<8;r++)u=u&1?3988292384^u>>>1:u>>>1;e[t]=u>>>0}return e})();function Js(e,t=0){let u=~t>>>0;for(let r=0;r<e.length;r++)u=Tp[(u^e[r])&255]^u>>>8;return~u>>>0}var e0=4294967295;function Rp(){try{return typeof CompressionStream>"u"?!1:(new CompressionStream("deflate-raw"),!0)}catch{return!1}}function Np(e){return{time:e.getHours()<<11|e.getMinutes()<<5|Math.floor(e.getSeconds()/2),date:Math.max(1980,e.getFullYear())-1980<<9|e.getMonth()+1<<5|e.getDate()}}function Nn(e){let t=new Uint8Array(e),u=new DataView(t.buffer);return{bytes:t,u16:(r,n)=>u.setUint16(r,n,!0),u32:(r,n)=>u.setUint32(r,n>>>0,!0)}}var Mp=class{constructor(e,t={}){this.sink=e,this.deflate=t.compress!==!1&&Rp()}sink;entries=[];offset=0;deflate;encoder=new TextEncoder;stamp=Np(new Date);async put(e){if(e.length!==0){if(this.offset+=e.length,this.offset>e0)throw new Error("[datagrid] the export file passed 4 GB, more than a ZIP without ZIP64 can hold.");await this.sink.write(e)}}async addFile(e,t){let u=this.encoder.encode(e),r={name:u,method:this.deflate?8:0,crc:0,compressed:0,size:0,offset:this.offset,time:this.stamp.time,date:this.stamp.date},n=Nn(30);n.u32(0,67324752),n.u16(4,20),n.u16(6,2056),n.u16(8,r.method),n.u16(10,r.time),n.u16(12,r.date),n.u16(26,u.length),await this.put(n.bytes),await this.put(u);let a=l=>typeof l=="string"?this.encoder.encode(l):l;if(this.deflate){let l=new CompressionStream("deflate-raw"),i=l.writable.getWriter(),s=l.readable.getReader(),h=(async()=>{for(;;){let{done:m,value:c}=await s.read();if(m)return;r.compressed+=c.length,await this.put(c)}})();try{for await(let m of t){let c=a(m);if(c.length!==0){if(r.crc=Js(c,r.crc),r.size+=c.length,r.size>e0)throw new Error("[datagrid] one part of the export passed 4 GB.");await i.write(c)}}await i.close()}catch(m){throw await i.abort(m).catch(()=>{}),await h.catch(()=>{}),m}await h}else{for await(let l of t){let i=a(l);r.crc=Js(i,r.crc),r.size+=i.length,await this.put(i)}r.compressed=r.size}let o=Nn(16);o.u32(0,134695760),o.u32(4,r.crc),o.u32(8,r.compressed),o.u32(12,r.size),await this.put(o.bytes),this.entries.push(r)}async finish(){let e=this.offset;for(let u of this.entries){let r=Nn(46);r.u32(0,33639248),r.u16(4,20),r.u16(6,20),r.u16(8,2056),r.u16(10,u.method),r.u16(12,u.time),r.u16(14,u.date),r.u32(16,u.crc),r.u32(20,u.compressed),r.u32(24,u.size),r.u16(28,u.name.length),r.u32(42,u.offset),await this.put(r.bytes),await this.put(u.name)}let t=Nn(22);t.u32(0,101010256),t.u16(8,this.entries.length),t.u16(10,this.entries.length),t.u32(12,this.offset-e),t.u32(16,e),await this.put(t.bytes)}},t0=32767,Ip=864e5,Lp=25569,Ju=`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
17
|
+
`,_o="http://schemas.openxmlformats.org/spreadsheetml/2006/main",kr="http://schemas.openxmlformats.org/officeDocument/2006/relationships";function Un(e){let t=e.length>t0?e.slice(0,t0):e;return t=t.replace(/[\u0000-\u0008\u000B\u000C\u000E-\u001F\uFFFE\uFFFF]/g,""),t.replace(/[&<>"]/g,u=>u==="&"?"&":u==="<"?"<":u===">"?">":""")}function Pp(e){let t=e+1,u="";for(;t>0;){let r=(t-1)%26;u=String.fromCharCode(65+r)+u,t=Math.floor((t-1)/26)}return u}function Gp(e){let t=(e??"").replace(/[[\]:*?/\\]/g," ").trim().slice(0,31).trim();return t===""?"Data":t}var u0={General:0,0:1,"0.00":2,"#,##0":3,"#,##0.00":4,"0%":9,"0.00%":10};function Op(e){let t=new Map,u=o=>{if(!o||o==="General")return 0;if(o in u0)return u0[o];let l=t.get(o);return l===void 0&&(l=164+t.size,t.set(o,l)),l},r=['<xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0"/>','<xf numFmtId="0" fontId="1" fillId="0" borderId="0" xfId="0" applyFont="1"/>'],n=new Map([[0,0]]),a=o=>{let l=u(o),i=n.get(l);return i===void 0&&(i=r.length,r.push(`<xf numFmtId="${l}" fontId="0" fillId="0" borderId="0" xfId="0" applyNumberFormat="1"/>`),n.set(l,i)),i};return{columnStyle:e.map(o=>a(o.numFmt)),styleFor:a,headerStyle:1,xml:()=>{let o=t.size===0?"":`<numFmts count="${t.size}">${[...t].map(([l,i])=>`<numFmt numFmtId="${i}" formatCode="${Un(l)}"/>`).join("")}</numFmts>`;return`${Ju}<styleSheet xmlns="${_o}">${o}<fonts count="2"><font><sz val="11"/><name val="Calibri"/></font><font><b/><sz val="11"/><name val="Calibri"/></font></fonts><fills count="2"><fill><patternFill patternType="none"/></fill><fill><patternFill patternType="gray125"/></fill></fills><borders count="1"><border><left/><right/><top/><bottom/><diagonal/></border></borders><cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0"/></cellStyleXfs><cellXfs count="${r.length}">${r.join("")}</cellXfs><cellStyles count="1"><cellStyle name="Normal" xfId="0" builtinId="0"/></cellStyles></styleSheet>`}}}function Vp(e,t,u,r){let n=t?` s="${t}"`:"";if(u instanceof Date){let o=u.getTime()/Ip+Lp;return Number.isFinite(o)?`<c r="${e}"${n}><v>${o}</v></c>`:""}if(typeof u=="number")return Number.isFinite(u)?`<c r="${e}"${n}><v>${u}</v></c>`:"";if(typeof u=="boolean")return`<c r="${e}"${n} t="b"><v>${u?1:0}</v></c>`;let a=u==null?r:String(u);return a===""?"":`<c r="${e}"${n} t="inlineStr"><is><t xml:space="preserve">${Un(a)}</t></is></c>`}async function Hp(e,t,u,r={}){let n=new Mp(e,{compress:r.compress}),a=Op(t),o=t.map((G,W)=>Pp(W)),l=r.includeHeaders!==!1,i=Math.max(l?2:1,Math.min(Mr,r.maxRowsPerSheet??Mr)),s=!!r.raw,h=o[o.length-1]??"A",m=Gp(r.sheetName),c=[],p=new Set,C=0,E=t.length===0?"":`<cols>${t.map((G,W)=>`<col min="${W+1}" max="${W+1}" width="${Math.min(255,G.width)}" customWidth="1"/>`).join("")}</cols>`,D=l?`<row r="1">${t.map((G,W)=>`<c r="${o[W]}1" s="${a.headerStyle}" t="inlineStr"><is><t xml:space="preserve">${Un(G.header)}</t></is></c>`).join("")}</row>`:"",F=u[Symbol.asyncIterator](),x=[],k=0,M=!1,z=async()=>{for(;k>=x.length;){if(M)return null;if(r.signal?.aborted)throw new et;let G=await F.next();if(G.done)return M=!0,null;x=G.value,k=0}return x[k++]};async function*O(){let G=l&&r.freezeHeader!==!1;yield`${Ju}<worksheet xmlns="${_o}" xmlns:r="${kr}">`+(G?'<sheetViews><sheetView workbookViewId="0"><pane ySplit="1" topLeftCell="A2" activePane="bottomLeft" state="frozen"/></sheetView></sheetViews>':'<sheetViews><sheetView workbookViewId="0"/></sheetViews>')+`${E}<sheetData>${D}`;let W=l?1:0,Y="";for(;W<i;){let j=await z();if(!j)break;if(j.kind!=="data"&&j.kind!=="group")continue;W++,C++;let J="";for(let ee=0;ee<t.length;ee++){let re=j.cells[ee];if(!re)continue;let B=j.kind!=="data"?re.text:typeof re.value=="boolean"?re.value:Vo(re,t[ee],s,!0);if(j.kind==="data"&&B===null)continue;let U=j.kind==="data"&&!re.numFmt?ad(re.value,B,t[ee]):void 0,q=j.kind!=="data"?0:U?a.styleFor(U):a.columnStyle[ee];J+=Vp(`${o[ee]}${W}`,q,B,re.text)}Y+=`<row r="${W}">${J}</row>`,Y.length>256*1024&&(yield Y,Y="")}Y&&(yield Y),yield`</sheetData>${l&&r.autoFilter!==!1&&t.length>0?`<autoFilter ref="A1:${h}${Math.max(1,W)}"/>`:""}</worksheet>`}try{do{let W=c.length===0?m:rd(m,c.length+1,p);if(c.push(W),p.add(W.toLowerCase()),await n.addFile(`xl/worksheets/sheet${c.length}.xml`,O()),r.signal?.aborted)throw new et;if(!M){if(!await z())break;k--}}while(!M||k<x.length);let G=c.map((W,Y)=>Y+1);await n.addFile("xl/styles.xml",[a.xml()]),await n.addFile("xl/workbook.xml",[`${Ju}<workbook xmlns="${_o}" xmlns:r="${kr}"><sheets>`+c.map((W,Y)=>`<sheet name="${Un(W)}" sheetId="${Y+1}" r:id="rId${Y+1}"/>`).join("")+"</sheets></workbook>"]),await n.addFile("xl/_rels/workbook.xml.rels",[`${Ju}<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">`+G.map(W=>`<Relationship Id="rId${W}" Type="${kr}/worksheet" Target="worksheets/sheet${W}.xml"/>`).join("")+`<Relationship Id="rId${G.length+1}" Type="${kr}/styles" Target="styles.xml"/></Relationships>`]),await n.addFile("_rels/.rels",[`${Ju}<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="${kr}/officeDocument" Target="xl/workbook.xml"/></Relationships>`]),await n.addFile("[Content_Types].xml",[`${Ju}<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Default Extension="xml" ContentType="application/xml"/><Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/><Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"/>`+G.map(W=>`<Override PartName="/xl/worksheets/sheet${W}.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>`).join("")+"</Types>"]),await n.finish()}finally{M||await F.return?.(void 0)}return C}var Uo=["asc","desc",null];function r0(e){if(!Array.isArray(e))return Uo;let t=[];for(let u of e){let r=u==="asc"||u==="desc"?u:u===null?null:void 0;r!==void 0&&!t.includes(r)&&t.push(r)}return t.some(u=>u!==null)?t:Uo}function Kp(e,t){let u=t.indexOf(e);return u===-1?t[0]:t[(u+1)%t.length]}function zp(e){let t={};for(let[u,r]of Object.entries(e)){let n=Object.values(r);n.length!==0&&(t[u]=n.length===1?n[0]:{logic:"and",nodes:n})}return t}var $p=class{state={sort:[],filter:null,columnFilters:{},columnFilterParts:{},filterEnabled:!0,searchText:"",groupBy:[],collapsedGroups:[],expandedDetails:[],page:0,pageSize:50};listeners=new Set;version=0;multiSort;collapsedCache=null;expandedCache=null;constructor(e={}){this.multiSort=e.multiSort??!1}getState(){return this.state}getVersion(){return this.version}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}commit(e,t="data",u){e.collapsedGroups!==this.state.collapsedGroups&&(this.collapsedCache=u?.collapsed??null),e.expandedDetails!==this.state.expandedDetails&&(this.expandedCache=u?.expanded??null),this.state=e,this.version++,this.listeners.forEach(r=>r(this.state,t))}collapsedSet(){return this.collapsedCache||(this.collapsedCache=new Set(this.state.collapsedGroups)),this.collapsedCache}expandedSet(){return this.expandedCache||(this.expandedCache=new Set(this.state.expandedDetails)),this.expandedCache}commitCollapsed(e){this.commit({...this.state,collapsedGroups:[...e]},"view",{collapsed:e})}commitExpanded(e){this.commit({...this.state,expandedDetails:[...e]},"view",{expanded:e})}toggleSort(e,t=!1,u=Uo){let r=this.state.sort,n=r.find(l=>l.columnId===e),a=Kp(n?.direction??null,u),o;this.multiSort&&t?(o=r.filter(l=>l.columnId!==e),a&&o.push({columnId:e,direction:a})):o=a?[{columnId:e,direction:a}]:[],this.commit({...this.state,sort:o})}setSort(e){let t=this.multiSort?e.slice():e.slice(0,1);this.commit({...this.state,sort:t})}setGroupLevelSort(e,t){this.commit({...this.state,sort:this.multiSort?[...e,...t]:e})}clearSort(){this.state.sort.length!==0&&this.commit({...this.state,sort:[]})}setFilter(e){this.commit({...this.state,filter:e})}setFilterEnabled(e){e!==this.state.filterEnabled&&this.commit({...this.state,filterEnabled:e})}setColumnFilter(e,t,u){let r={...this.state.columnFilterParts};if(u===void 0)t?r[e]={[hu]:t}:delete r[e];else{let n={...r[e]??{}};delete n[hu],t?n[u]=t:delete n[u],Object.keys(n).length>0?r[e]=n:delete r[e]}this.commit({...this.state,columnFilterParts:r,columnFilters:zp(r)})}getColumnFilter(e,t){return t!==void 0?this.state.columnFilterParts[e]?.[t]??null:this.state.columnFilters[e]??null}clearColumnFilters(){Object.keys(this.state.columnFilters).length!==0&&this.commit({...this.state,columnFilters:{},columnFilterParts:{}})}effectiveFilter(){let e=[];this.state.filter&&e.push(this.state.filter);for(let t of Object.values(this.state.columnFilters))e.push(t);return e.length===0?null:e.length===1?e[0]:{logic:"and",nodes:e}}setSearchText(e){e!==this.state.searchText&&this.commit({...this.state,searchText:e})}setGroupBy(e){let t=e==null?[]:typeof e=="string"?[e]:[...e],u=this.state.groupBy;return t.length===u.length&&t.every((r,n)=>r===u[n])?!1:(this.commit({...this.state,groupBy:t,collapsedGroups:[]}),!0)}isGroupCollapsed(e){return this.collapsedSet().has(e)}toggleGroup(e){let t=this.collapsedSet(),u=new Set(t);u.delete(e)||u.add(e),this.commitCollapsed(u)}setCollapsedGroups(e){this.commitCollapsed(new Set(e))}isDetailExpanded(e){return this.expandedSet().has(e)}toggleDetail(e){let t=new Set(this.expandedSet());t.delete(e)||t.add(e),this.commitExpanded(t)}setExpandedDetails(e){this.commitExpanded(new Set(e))}setPage(e){let t=Math.max(0,Math.floor(e));t!==this.state.page&&this.commit({...this.state,page:t},"page")}setPageSize(e){let t=Math.max(1,Math.floor(e));t!==this.state.pageSize&&this.commit({...this.state,pageSize:t,page:0},"page")}clampPage(e){let t=Math.max(0,e-1);return this.state.page<=t?this.state.page:(this.state={...this.state,page:t},this.version++,t)}resetPage(){this.state.page!==0&&this.commit({...this.state,page:0},"page")}applyState(e){this.commit({...e})}reset(){this.commit({sort:[],filter:null,columnFilters:{},columnFilterParts:{},filterEnabled:!0,searchText:"",groupBy:[],collapsedGroups:[],expandedDetails:[],page:0,pageSize:this.state.pageSize})}};function Mn(e,t){return e.toLowerCase().endsWith(`.${t}`)?e:`${e}.${t}`}var Wp=[];function _p(e,t){if(t.length!==e.length)return null;let u=!1;for(let o=0;o<e.length&&!u;o++)u=e[o].data!==t[o];if(!u)return e;let r=new Map,n=new Int32Array(e.length).fill(-1);for(let o=e.length-1;o>=0;o--){let l=r.get(e[o].data);l!==void 0&&(n[o]=l),r.set(e[o].data,o)}let a=new Array(e.length);for(let o=0;o<t.length;o++){let l=r.get(t[o]);if(l===void 0)return null;n[l]===-1?r.delete(t[o]):r.set(t[o],n[l]),a[o]=e[l]}return a}function Up(e){let t=e;for(;t&&"nodes"in t&&t.nodes.length===1;)t=t.nodes[0];return t}function qo(e,t){if(!e)return null;if("nodes"in e){let u=e.nodes.map(r=>qo(r,t)).filter(r=>r!==null);return u.length===0?null:{logic:e.logic,nodes:u}}return t(e.columnId)?e:null}var jo="__dg_pending_row_",qp=e=>`${jo}${e}`,n0="\0nil";function jp(e){if(typeof e!="string"||!e.startsWith(jo))return null;let t=Number(e.slice(jo.length));return Number.isInteger(t)&&t>=0?t:null}function Yp(e){return e==null?[]:typeof e=="string"?[e]:[...e]}var Qp="\0",In="",So=1e3,Xp=150,Zp=60,Cd=class{gridId;events=new Fh;viewStateParts=new Map;pendingViewStateParts={};pendingFocus=null;pendingScroll=null;columns;store;rowModel;debugMode;unboundedWarned=!1;locale;text;virtual;selection;focus=new yp;keyGetter;rowKeyField;summaryDefs;pendingReaders;editingApi=null;historyDelegate;editingDelegate;summaryValues={};treeData;treeParent=null;treeChildParents=new WeakMap;treeIndex=null;treeIndexEpoch=-1;treeToggled=new Set;treeExpandedByDefault;warnedTreeGrouping=!1;lastPagination=null;firstDataRenderedSent=!1;cellRevision=0;collapsedByDefault;groupSummaries;groupDisplay;groupColumnConfig;authorColumns;stickyGroupHeaders;stickyIndex=null;showGroupedColumns;masterDetail;masterDetailExport;editForm=null;messageRows=null;getRowHeightFn;dataRowHeight=null;measuredRowHeights=new Map;lastResult={nodes:[],visibleCount:0,totalCount:0};spanCache=new Map;spanCacheResult=null;viewNodes=[];allViewNodes=[];paginationEnabled;infiniteScroll;infinitePageSize;infiniteLimit;exportDefaults={csv:{},excel:{},pdf:{}};exportPageSize;distinctFollowsSearch;exportMaxRows;exportToken=0;computeToken=0;lastComputeTimings={};summaryPassSeq=0;remoteFetchQueued=!1;viewportWidth=0;viewportHeight=0;leadWidth=0;externalFilter=null;sortCycle;postSort;warnedPostSort=!1;rowSelectableFn;selectableCache=new WeakMap;sourceRowIndex=null;animateRows=!1;findState=null;rowPinning=null;pinned={top:[],bottom:[]};pinnedSnapshot=new Map;selectableCountCache=null;selectableDirty=!1;asyncQueue=[];asyncCallbacks=[];asyncTimer=null;asyncTransactionWait;lastScrollTop=-1;lastScrollLeft=-1;scrollEndTimer=null;overlayOverride=null;lastFocusedRowKey=null;deferredSelection;rowIndexCache=null;dataNodeCache=null;dataKeyCache=null;nodeByKey=null;groupTree=null;groupTreeSignature=null;dataEpoch=0;distinctCache=new Map;distinctFullInflight=new Map;distinctTruncated=new Set;distinctEpoch=-1;localeCollator=null;summaryBasis=null;busy={busy:!1,progress:null,phase:null,cancellable:!1};exportAbort=null;busyDepth=0;unsubscribeStore;disposed=!1;constructor(e){this.gridId=e.gridId,this.asyncTransactionWait=e.asyncTransactionWait??50,this.debugMode=e.debugMode??!1,this.locale=e.locale??"en",this.text=pu(e.locale,e.messages),this.groupDisplay=e.grouping?.display==="aligned"||e.grouping?.display==="column"?e.grouping.display:"fullWidth",this.groupColumnConfig=e.grouping?.groupColumn??{},this.authorColumns=e.columns,this.columns=new Xf(this.withGroupColumn(e.columns,[]),{defaultColumnDef:e.defaultColumnDef,debugMode:this.debugMode,locale:this.locale}),this.columns.setCellFormulaReader((u,r,n)=>this.readCellFormula(u,r,n)),this.warnShadowedFilterOperators(),this.store=new $p({multiSort:e.sorting?.multi??!1}),this.sortCycle=r0(e.sorting?.cycle),this.postSort=e.sorting?.postSort??null,this.rowSelectableFn=e.selection?.isRowSelectable??null;let t=qh(e.rowKey);if(this.keyGetter=t,e.tree?.childrenField&&Array.isArray(e.dataSource)&&(e={...e,dataSource:uo(e.dataSource,e.tree.childrenField,this.treeChildParents).rows}),this.rowKeyField=typeof e.rowKey=="string"?e.rowKey:null,e.viewportDatasource)this.rowModel=new Xs(e.viewportDatasource,{keyGetter:t,onChange:()=>this.scheduleRemoteFetch()});else if(r4(e.dataSource)){let u=e.tree?.hasChildren;this.rowModel=new Ts(e.dataSource,{keyGetter:t,blockSize:e.remote?.blockSize,maxBlocks:e.remote?.maxBlocks,onError:r=>this.events.emit("dataError",{error:r}),debugMode:this.debugMode,...u?{tree:{hasChildren:u,isExpanded:r=>this.isTreeRowExpanded(r)}}:{}})}else this.rowModel=new Tn(e.dataSource,{gridId:e.gridId,keyGetter:t,locale:e.locale,enabled:e.worker?.enabled,threshold:e.worker?.threshold,workerUrl:e.worker?.url,debugMode:this.debugMode,onEncodeProgress:u=>u>=1?this.setBusy("computing",null):this.setBusy("encoding",Math.round(u*100)),onPhaseProgress:(u,r)=>this.setBusy(u,r===null?null:Math.round(r*100))});this.exportPageSize=Math.max(1,e.remote?.exportPageSize??1e3),this.distinctFollowsSearch=e.remote?.distinctFollowsSearch===!0,this.exportMaxRows=Math.max(1,e.remote?.exportMaxRows??1e5),this.selection=new Cp(e.selection?.mode??"none"),this.selection.setSelectable(this.rowSelectableFn?u=>this.isRowSelectable(u):null),this.deferredSelection=e.selection?.deferred??!1,this.postSort&&this.rowModel.mode==="remote"&&console.warn("[datagrid] `sorting.postSort` is ignored with a remote DataSource \u2014 the server decides the row order. Order the rows on the server, or load them into an array."),this.summaryDefs=e.summaries??[],this.setRowPinning(e.rowPinning),this.animateRows=e.animateRows===!0,this.events.on("dataUpdated",()=>this.prunePinnedRows());for(let u of["contentReady","columnStateChanged"])this.events.on(u,()=>{this.findState&&(this.recomputeFind(this.findState.matches[this.findState.active]??null),this.emitFindChanged())});if(this.treeData=e.tree??null,this.treeData&&(this.treeParent=this.treeData.childrenField?u=>{let r=u&&typeof u=="object"?this.treeChildParents.get(u):void 0;return r===void 0?null:t(r)}:o4(this.treeData)),this.treeData&&this.rowModel.mode==="remote"&&!this.treeData.hasChildren&&console.warn("[datagrid] `tree` needs the rows in memory and is ignored with a remote DataSource \u2014 the grid shows a flat list. Give `tree.hasChildren` to load the tree from the server one level at a time (`load({ parentKey })`), or load the rows into an array."),this.treeExpandedByDefault=this.treeData?.defaultExpanded??!1,this.collapsedByDefault=e.grouping?.collapsedByDefault??!1,this.groupSummaries=e.grouping?.groupSummaries??!1,this.stickyGroupHeaders=e.grouping?.stickyHeaders??!1,this.showGroupedColumns=e.grouping?.showGroupedColumns??!1,e.grouping?.groupBy){this.store.setGroupBy(e.grouping.groupBy);let u=this.store.getState().groupBy;this.refreshGroupColumn(),this.remote()?.setGrouping(u.map(r=>({columnId:r})),u)}this.paginationEnabled=e.pagination?e.pagination.enabled!==!1:!1,this.infiniteScroll=e.scrolling?.mode==="infinite",this.infinitePageSize=Math.max(1,e.scrolling?.pageSize??100),this.infiniteLimit=this.infinitePageSize,e.pagination?.pageSize&&this.store.setPageSize(e.pagination.pageSize),this.virtual=new S0({rowHeight:e.rowHeight,overscanY:e.virtualization?.overscanY,overscanX:e.virtualization?.overscanX}),this.virtual.setColumnLayout(gs(this.layoutRuntime())),this.getRowHeightFn=e.getRowHeight,this.masterDetail=e.masterDetail?{height:Math.max(1,e.masterDetail.height??160),expandedByDefault:e.masterDetail.expandedByDefault??!1}:null,this.masterDetailExport=e.masterDetail?.export??null,this.unsubscribeStore=this.store.subscribe((u,r)=>{this.events.emit("stateUpdated",{scope:r,state:this.getViewState()}),r==="page"&&this.emitPaginationChanged(!1),r==="view"||r==="page"&&this.rowModel.mode==="client"?this.reproject():this.recompute()}),this.recompute()}getRows(){return this.viewNodes}getDataRows(){return this.dataNodes()}getDataRowNode(e){if(!this.nodeByKey){let t=new Map,u=this.dataNodes();for(let r=0;r<u.length;r++)t.has(u[r].key)||t.set(u[r].key,u[r]);this.nodeByKey=t}return this.nodeByKey.get(e)}getRowByKey(e){return this.getDataRowNode(e)?.data}forEachNode(e){let t=this.rowModel.getSourceRows?.();if(!t){this.forEachNodeAfterFilterAndSort(e);return}for(let u=0;u<t.length;u++)e(Xe(t[u],this.keyGetter(t[u]),u),u)}forEachNodeAfterFilterAndSort(e){let t=this.dataNodes();for(let u=0;u<t.length;u++)e(t[u],u)}forEachDisplayedNode(e){let t=this.viewNodes;for(let u=0;u<t.length;u++)e(t[u],u)}dataNodes(){if(this.dataNodeCache)return this.dataNodeCache;let e=[];for(let t of this.lastResult.nodes)t&&t.kind==="data"&&e.push(t);return this.dataNodeCache=e,e}invalidateResultCaches(){this.dataNodeCache=null,this.dataKeyCache=null,this.nodeByKey=null,this.groupTree=null,this.groupTreeSignature=null,this.selectableCountCache=null}ensureGroupTree(e){let t=this.groupSummaries&&this.summaryDefs.length>0,u=`${e.join(Qp)}#${t?this.summaryDefs.map(r=>`${r.columnId}:${r.type}`).join(","):""}`;return this.groupTree&&this.groupTreeSignature===u?this.groupTree:(this.setBusy("grouping",null),this.groupTree=us(this.dataNodes(),this.columns,{columnIds:e,summaries:t?this.summaryDefs:void 0,locale:this.locale}),this.groupTreeSignature=u,this.groupTree)}getVisibleCount(){return this.lastResult.visibleCount}getTotalCount(){return this.rowModel.getTotalCount()}getColumnModel(){return this.columns}getColumnStates(){return this.columns.getColumnStates()}getSort(){return this.store.getState().sort}getFilter(){return this.store.getState().filter}getSearchText(){return this.store.getState().searchText}getVirtualWindow(){return this.virtual.getWindow()}getColumnLayout(){return this.virtual.getColumnLayout()}getVisualColumnIds(){let e=this.getColumnLayout(),t=[];for(let u of e.left)t.push(u.state.id);for(let u of e.center)t.push(u.state.id);for(let u of e.right)t.push(u.state.id);return t}getColumnIdAt(e){if(e<0)return null;let t=this.getColumnLayout();if(e<t.left.length)return t.left[e].state.id;let u=e-t.left.length;return u<t.center.length?t.center[u].state.id:t.right[u-t.center.length]?.state.id??null}getVisualColumnCount(){let e=this.getColumnLayout();return e.left.length+e.center.length+e.right.length}getAnimateRows(){return this.animateRows}setAnimateRows(e){this.animateRows=e}getRowHeight(){return this.virtual.getRowHeight()}isUsingWorker(){return this.rowModel instanceof Tn&&this.rowModel.usesWorker()}getVisibleCenterColumns(){return this.virtual.getVisibleCenterColumns()}warnIfUnbounded(e){if(this.unboundedWarned||typeof process<"u"&&process.env&&!this.debugMode)return;let t=this.lastResult.visibleCount;t<500||e<3e3||e<t*this.getRowHeight()*.9||(this.unboundedWarned=!0,console.warn(`[datagrid] "${this.gridId}" is ${Math.round(e)} px tall \u2014 as tall as its ${t} rows \u2014 so it draws every one of them instead of only the rows in view, and gets slower with each. Give the grid a height: \`style={{ height: 500 }}\` (React; there is no \`height\` prop), a CSS height on the grid's container, or a parent with a definite height (a flex child needs \`min-height: 0\`).`))}setViewportSize(e,t){let u=this.viewportWidth,r=this.viewportHeight,n=e!==u||t!==r;this.viewportWidth=e,this.viewportHeight=t,e!==u&&this.applyFlex()&&this.emitColumnStateChanged(),e!==u&&this.columns.setGridWidth(e)&&this.emitColumnStateChanged();let a=this.emitIfWindowChanged(this.virtual.setViewportSize(e,t));return a&&this.rowModel.mode==="remote"&&this.scheduleRemoteFetch(),n&&(this.events.emit("gridSizeChanged",{width:e,height:t,previousWidth:u,previousHeight:r}),this.warnIfUnbounded(t)),a}setMaxScrollOffset(e){return this.emitIfWindowChanged(this.virtual.setMaxScrollOffset(e))}setChromeOffsets(e,t){this.virtual.setChromeOffsets(e,t)}setLeadWidth(e){let t=e!==this.leadWidth;this.leadWidth=e,this.virtual.setLeadWidth(e),t&&this.applyFlex()&&this.emitColumnStateChanged()}setMaxCanvasHeight(e){return this.emitIfWindowChanged(this.virtual.setMaxCanvasHeight(e))}setScroll(e,t){let u=this.emitIfWindowChanged(this.virtual.setScroll(e,t));return u&&this.rowModel.mode==="remote"&&this.scheduleRemoteFetch(),this.publishScroll(e,t),u}publishScroll(e,t){if(e===this.lastScrollTop&&t===this.lastScrollLeft)return;this.lastScrollTop=e,this.lastScrollLeft=t;let u=this.virtual.getWindow(),r={scrollTop:e,scrollLeft:t,firstRow:u.rows.start,lastRow:u.rows.end};this.events.emit("bodyScroll",r),this.scrollEndTimer!==null&&clearTimeout(this.scrollEndTimer),this.scrollEndTimer=setTimeout(()=>{this.scrollEndTimer=null,!this.disposed&&this.events.emit("bodyScrollEnd",r)},Xp)}showLoadingOverlay(){this.setOverlayOverride("loading")}showNoRowsOverlay(){this.setOverlayOverride("noRows")}hideOverlay(){this.setOverlayOverride(null)}getOverlay(){return this.overlayOverride==="none"?null:this.overlayOverride!==null?this.overlayOverride:this.busy.busy?"loading":this.getVisibleCount()===0?"noRows":null}setOverlayOverride(e){this.overlayOverride!==e&&(this.overlayOverride=e,this.events.emit("overlayChanged",{overlay:this.getOverlay(),manual:e!==null}))}notifyRowDrag(e,t){let u=e==="enter"?"rowDragEnter":e==="move"?"rowDragMove":"rowDragLeave";this.events.emit(u,{rowKey:t.rowKey,row:this.getRowByKey(t.rowKey),overKey:t.overKey??null,position:t.position??null,fromGridId:t.fromGridId??this.gridId})}notifyRowDragEnd(e){this.events.emit("rowDragEnd",{rowKey:e.rowKey,row:this.getRowByKey(e.rowKey),overKey:e.overKey??null,position:e.position??null,fromGridId:e.fromGridId??this.gridId,dropped:e.dropped})}lastRemoteRange=null;fetchUncoveredWindow(){let e=this.lastRemoteRange;if(!e)return;let t=this.virtual.getWindow().rows,u=Math.min(t.end,this.viewNodes.length);for(let r=t.start;r<u;r++)if(this.viewNodes[r]===void 0&&(r<e.start||r>=e.end)){this.scheduleRemoteFetch();return}}scheduleRemoteFetch(){this.remoteFetchQueued||this.disposed||(this.remoteFetchQueued=!0,queueMicrotask(()=>{this.remoteFetchQueued=!1,this.disposed||this.recompute(!0)}))}setRowHeight(e){let t=this.virtual.setRowHeight(e);t&&this.measuredRowHeights.size>0&&(this.measuredRowHeights=new Map,this.rebuildRowHeights()),t?this.emitIfWindowChanged(!0):this.events.emit("viewportChanged",{window:this.virtual.getWindow()})}setDataRowHeight(e){let t=e!==null&&Number.isFinite(e)&&e>0?Math.round(e):null;t!==this.dataRowHeight&&(this.dataRowHeight=t,this.rebuildRowHeights()?this.emitIfWindowChanged(!0):this.events.emit("viewportChanged",{window:this.virtual.getWindow()}))}getDataRowHeight(){return this.dataRowHeight}ensureVisible(e,t){let u=0,r=this.stickyGroupIndex();if(r)for(let n of gd(r,e))u+=this.virtual.getRowHeightAt(n);return this.virtual.ensureVisible(e,t,u)}stickyGroupIndex(){return!this.stickyGroupHeaders||this.rowModel.mode!=="client"||this.store.getState().groupBy.length===0?null:(this.stickyIndex?.nodes!==this.viewNodes&&(this.stickyIndex=Sp(this.viewNodes)),this.stickyIndex)}getStickyGroupRows(){let e=this.stickyGroupIndex();if(!e)return[];let t=this.virtual;return kp(e,{viewTop:t.getViewTop(),indexAt:u=>t.indexAtOffset(u),offsetOf:u=>t.getRowOffset(u),heightOf:u=>t.getRowHeightAt(u)})}hasStickyGroupHeaders(){return this.stickyGroupHeaders&&this.rowModel.mode==="client"}getRowIndex(e){return this.rowAxis().indexOf(e)}openFilterBuilder(e){this.events.emit("filterBuilderRequested",e===void 0?{}:{columnId:e})}scrollToRow(e){let t=this.rowAxis().indexOf(e);if(t<0)return;let u=this.ensureVisible(t);u&&this.events.emit("scrollRequested",u)}revealRow(e,t=3){if(this.disposed)return;let u=()=>{if(!this.editForm?.atTop||String(this.editForm.rowKey)!==String(e))return!1;let a=this.ensureVisible(0);return a&&this.events.emit("scrollRequested",a),!0};if(u())return;if(this.rowAxis().indexOf(e)>=0){this.scrollToRow(e);return}let r=t,n=this.events.on("contentReady",()=>{if(this.disposed||this.rowAxis().indexOf(e)>=0){if(n(),this.disposed||u())return;this.scrollToRow(e);return}--r<=0&&n()})}scrollToCell(e,t){let u=this.rowAxis().indexOf(e);if(u<0)return;let r=this.getColumnLayout().center.findIndex(a=>a.state.id===t),n=this.ensureVisible(u,r===-1?void 0:r);n&&this.events.emit("scrollRequested",n)}getSelectionMode(){return this.selection.getMode()}setSelectionMode(e){this.selection.setMode(e)&&this.emitSelectionChanged()}isRowSelected(e){return this.selection.isSelected(e)}isRowSelectable(e){if(bn(e))return!1;let t=this.rowSelectableFn;if(!t)return!0;let u=this.getDataRowNode(e)?.data??this.sourceRowByKey(e);if(u===void 0)return!0;if(u===null||typeof u!="object")return!!t(u);let r=this.selectableCache.get(u);if(r!==void 0)return r;let n=!!t(u);return this.selectableCache.set(u,n),n}setRowSelectable(e){this.rowSelectableFn=e,this.selection.setSelectable(e?t=>this.isRowSelectable(t):null),this.selectableCache=new WeakMap,this.selectableCountCache=null,this.selectionVersion++,this.selection.dropUnselectable()&&this.emitSelectionChanged(),this.refreshCells()}getSelectableCount(){if(!this.rowSelectableFn||this.rowModel.mode!=="client")return this.lastResult.visibleCount;if(this.selectableCountCache===null){let e=0;for(let t of this.dataNodes())this.isRowSelectable(t.key)&&e++;this.selectableCountCache=e}return this.selectableCountCache}sourceRowByKey(e){if(this.rowModel.mode==="client"){if(!this.sourceRowIndex){let t=new Map,u=this.rowModel.getSourceRows?.()??[];for(let r of u){let n=this.keyGetter(r);t.has(n)||t.set(n,r)}this.sourceRowIndex=t}return this.sourceRowIndex.get(e)}}reconcileSelectable(){this.selectableDirty&&(this.selectableDirty=!1,this.rowSelectableFn&&this.selection.dropUnselectable()&&this.emitSelectionChanged())}getSelectedKeys(){return this.selection.isAllMatching()?this.dataNodes().filter(e=>this.selection.isSelected(e.key)).map(e=>e.key):this.selection.getSelectedKeys()}getSelectionDescriptor(){let e=this.selection.getSelectionDescriptor();if(e.allMatching&&this.rowSelectableFn&&this.rowModel.mode==="client"){let t=new Set(e.keys);for(let u of this.dataNodes())!t.has(u.key)&&!this.isRowSelectable(u.key)&&e.keys.push(u.key)}return e}getSelectedCount(){if(!this.selection.isAllMatching())return this.selection.getSelectedCount();let{keys:e}=this.selection.getSelectionDescriptor(),t=e.length;if(this.rowModel.mode==="client"&&t>0){t=0;for(let u of e)this.getDataRowNode(u)&&this.isRowSelectable(u)&&t++}return Math.max(0,this.getSelectableCount()-t)}isAllMatchingSelected(){return this.selection.isAllMatching()}getSelectedRows(){return this.dataNodes().filter(e=>this.selection.isSelected(e.key)).map(e=>e.data)}getFocusedNode(){let e=this.focus.get();if(!e)return;let t=this.rowAxis().indexOf(e.rowKey);return t>=0?this.viewNodes[t]:void 0}getFocusedRowKey(){return this.focus.get()?.rowKey??null}getFocusedRowIndex(){let e=this.getFocusedRowKey();return e===null?-1:this.rowAxis().indexOf(e)}focusRow(e){let t=this.focus.get()?.columnId??this.layoutRuntime()[0]?.state.id;t&&this.focus.set({rowKey:e,columnId:t})&&(this.emitFocusChanged(),this.scrollToRow(e))}selectRow(e){bn(e)||this.selection.select(e)&&this.emitSelectionChanged()}toggleRow(e){bn(e)||this.selection.toggle(e)&&this.emitSelectionChanged()}setSelectedKeys(e){this.selection.setSelectedKeys(e)&&this.emitSelectionChanged()}selectionVersion=0;groupSelectionCache=new Map;groupSelectionCacheKey=null;findGroup(e){let t=this.groupTree;if(!t)return null;let u=[...t.roots];for(;u.length>0;){let r=u.pop();if(r.key===e)return r;r.children&&e.startsWith(`${r.key}|`)&&u.push(...r.children)}return null}getGroupEditAggregate(e){if(!this.enterpriseEdition||this.getGroupDisplay()==="fullWidth"||!this.getGroupSummaries()||!this.columns.getDef(e)?.groupEdit)return null;let t=this.getSummaryDefs().find(u=>u.columnId===e);return t&&(t.type==="sum"||t.type==="avg")?t.type:null}planGroupEdit(e,t,u,r,n){this.requireEnterprise("Editing a group total","");let a=this.getGroupEditAggregate(t),o=this.columns.getDef(t)?.groupEdit;if(!a||!o||!Number.isFinite(u))return null;let l=this.getGroupRowKeys(e);if(l.length===0)return null;if(typeof o=="function"){let h=l.map(m=>({rowKey:m,row:this.getRowByKey(m),value:r(m),writable:n(m)}));return o({groupKey:e,columnId:t,aggregate:a,target:u,rows:h}).filter(m=>n(m.rowKey))}let i=l.map(h=>{let m=Number(r(h));return{key:h,value:Number.isFinite(m)?m:0,writable:n(h)}}),s=Fp(i,u,a,o);return s?s.map(h=>({rowKey:h.key,value:h.value})):null}getGroupRowKeys(e){let t=this.findGroup(e);if(!t||!this.groupTree)return[];let u=this.groupTree.nodes,r=[];for(let n=t.from;n<t.to;n++)r.push(u[n].key);return r}getGroupSelectionState(e){let t=this.groupSelectionCacheKey;(!t||t.tree!==this.groupTree||t.version!==this.selectionVersion)&&(this.groupSelectionCache.clear(),this.groupSelectionCacheKey={tree:this.groupTree,version:this.selectionVersion});let u=this.groupSelectionCache.get(e);if(u)return u;let r=0,n=0,a=this.findGroup(e);if(a&&this.groupTree){let l=this.groupTree.nodes,i=this.rowSelectableFn!==null;for(let s=a.from;s<a.to&&!(r>0&&n>0);s++)this.selection.isSelected(l[s].key)?r++:(!i||this.isRowSelectable(l[s].key))&&n++}let o=r>0&&n>0?"some":r>0?"all":"none";return this.groupSelectionCache.set(e,o),o}setGroupSelected(e,t){this.selection.setMany(this.getGroupRowKeys(e),t)&&this.emitSelectionChanged()}toggleGroupSelection(e){this.setGroupSelected(e,this.getGroupSelectionState(e)!=="all")}selectAll(){(this.deferredSelection?this.selection.selectAllMatching():this.selection.selectAll(this.dataKeys()))&&this.emitSelectionChanged()}clearSelection(){this.selection.clear()&&this.emitSelectionChanged()}handleRowClick(e,t={}){bn(e)||this.selection.handleRowClick(e,t,this.dataKeys())&&this.emitSelectionChanged()}notifyCell(e,t,u,r){let n=t.kind==="data"?t.data:void 0;this.events.emit(e,{rowKey:t.key,rowIndex:u,columnId:r,value:n===void 0?void 0:this.columns.getCellValue(n,r),row:n,node:t})}notifyCellValueChanged(e){this.events.emit("cellValueChanged",{...e,row:this.getRowByKey(e.rowKey)})}notifyEditingStarted(e){this.events.emit("cellEditingStarted",e)}notifyEditingStopped(e){this.events.emit("cellEditingStopped",e)}notifyRowEditingStarted(e){this.events.emit("rowEditingStarted",{...e,row:this.getRowByKey(e.rowKey)})}notifyRowEditingStopped(e){this.events.emit("rowEditingStopped",{...e,row:this.getRowByKey(e.rowKey)})}notifyChangesChanged(e){this.events.emit("changesChanged",{dirty:e.dirty,count:e.count})}get editing(){return this.editingApi}setEditingApi(e){this.editingApi=e}notifyHistoryStarted(e,t){this.events.emit(e==="undo"?"undoStarted":"redoStarted",{label:t})}notifyHistoryEnded(e,t){this.events.emit(e==="undo"?"undoEnded":"redoEnded",t)}setHistoryDelegate(e){this.historyDelegate=e??void 0}undo(){return this.historyDelegate?.undo()??!1}redo(){return this.historyDelegate?.redo()??!1}canUndo(){return this.historyDelegate?.canUndo()??!1}canRedo(){return this.historyDelegate?.canRedo()??!1}getHistoryDepth(){return this.historyDelegate?.depth()??{undo:0,redo:0}}setEditingDelegate(e){this.editingDelegate=e??void 0}startEditingCell(e,t){return this.editingDelegate?.startEditingCell(e,t)??!1}stopEditing(e){return this.editingDelegate?.stopEditing(e?.cancel??!1)??Promise.resolve(!1)}getEditingCells(){return this.editingDelegate?.getEditingCells()??[]}isEditing(){return this.getEditingCells().length>0}notifyRow(e,t,u){this.events.emit(e,{rowKey:t.key,rowIndex:u,row:t.kind==="data"?t.data:void 0,node:t})}getFocus(){return this.focus.get()}isCellFocused(e,t){return this.focus.isFocused(e,t)}focusCell(e,t){this.pendingFocus=null,this.focus.set({rowKey:e,columnId:t})&&this.emitFocusChanged()}clearFocus(){this.pendingFocus=null,this.focus.clear()&&this.emitFocusChanged()}moveFocus(e){this.pendingFocus=null;let t=this.focus.move(e,this.focusContext());return t&&this.emitFocusChanged(),t}getFocusIndices(){return this.focus.getIndices(this.focusContext())}executeCommand(e){let{type:t}=e;if((t==="left"||t==="right")&&this.expandCollapseByKey(t))return!0;if(Ep(t))return this.moveFocus(t);switch(t){case"toggleSelection":{let u=this.getFocusedNode();return u?(u.kind==="group"?this.toggleGroup(String(u.key)):u.kind==="treePath"?this.toggleTreeRow(u.key):u.kind==="data"&&this.toggleRow(u.key),!0):!1}case"extendSelectionUp":case"extendSelectionDown":{let u=this.moveFocus(t==="extendSelectionUp"?"up":"down"),r=this.focus.get();return r&&this.selection.getMode()==="multiple"&&this.selection.selectRange(r.rowKey,this.dataKeys(),!1)&&this.emitSelectionChanged(),u}case"selectAll":return this.selectAll(),!0;case"clearSelection":return this.clearSelection(),!0;case"activate":return!1;case"copy":return!1;default:return!1}}expandCollapseByKey(e){let t=this.getFocusedNode(),u=this.focus.get();if(!t||!u)return!1;if(t.kind==="group")return(e==="right"?t.expanded:!t.expanded)?!1:(this.toggleGroup(String(t.key)),!0);if(t.kind!=="data"&&t.kind!=="treePath"||!t.tree)return!1;let r=this.getVisualColumnIds().find(i=>!Be(i));if(u.columnId!==r)return!1;let{hasChildren:n,expanded:a,depth:o}=t.tree;if(e==="right")return!n||a?!1:(this.expandTreeRow(t.key),!0);if(n&&a)return this.collapseTreeRow(t.key),!0;let l=o>0?this.treeIndex?.parentOf.get(t.key)??null:null;return l===null||this.rowAxis().indexOf(l)<0?!1:(this.focusCell(l,u.columnId),!0)}getClipboardText(e={}){let t=this.lastResult.nodes.filter(u=>this.selection.isSelected(u.key));if(t.length===0){let u=this.focus.get();if(!u)return"";t=this.lastResult.nodes.filter(r=>r.key===u.rowKey)}return t.length===0?"":vp(t,this.columns,e,this.clipboardTextHooks())}clipboardHooks=null;setClipboardHooks(e){e&&this.requireEnterprise("Clipboard callbacks",""),this.clipboardHooks=e}clipboardTextHooks(){let e=this.clipboardHooks;if(!e)return{};let t=e.processCellForClipboard,u=e.processHeaderForClipboard;return{cell:t?(r,n,a,o)=>t({row:r.data,rowKey:r.key,columnId:n,value:a,text:o}):void 0,header:u?(r,n)=>u({columnId:r,text:n}):void 0}}clipboardCellText(e,t,u,r){let n=this.clipboardHooks?.processCellForClipboard;return n?n({row:e.data,rowKey:e.key,columnId:t,value:u,text:r}):r}writeClipboard(e,t="copy"){if(!e)return!1;let u=this.clipboardHooks?.sendToClipboard;if(u)return u({text:e,kind:t}),!0;let r=typeof navigator>"u"?void 0:navigator.clipboard;return r?.writeText?(r.writeText(e).catch(()=>{}),!0):!1}processPastedTable(e){let t=this.clipboardHooks?.processDataFromClipboard;return t?t({data:e}):e}pastedCellValue(e,t,u,r){if(this.columns.getDef(t)?.valueParser&&!this.isFormulaCell(t,u))r=this.parseCellValue(e,t,u);else{let o=this.columns.getNumberFormat(t),l=o?O4(u,o):void 0;l!==void 0&&(r=l)}let n=this.clipboardHooks?.processCellFromClipboard;if(!n)return r;let a=this.getRowByKey(e);return a===void 0?r:n({row:a,rowKey:e,columnId:t,value:r,text:u})}notifyClipboardGesture(e,t,u){let r=`${e}Start`,n=`${e}End`;this.events.emit(r,{cellCount:t});let a=!1;try{return a=u(),a}finally{this.events.emit(n,{cellCount:t,performed:a})}}dataKeys(){if(this.dataKeyCache)return this.dataKeyCache;let e=this.dataNodes(),t=new Array(e.length);for(let u=0;u<e.length;u++)t[u]=e[u].key;return this.dataKeyCache=t,t}rowAxis(){let e=this.viewNodes;return{count:e.length,keyAt:t=>e[t]?.key??(t>=0&&t<e.length?qp(t):void 0),indexOf:t=>{let u=jp(t);if(u!==null&&u<e.length&&!e[u])return u;if(!this.rowIndexCache){let r=new Map;for(let n=0;n<e.length;n++){let a=e[n];a&&!r.has(a.key)&&r.set(a.key,n)}this.rowIndexCache=r}return this.rowIndexCache.get(t)??-1}}}focusContext(){return{isFocusable:this.masterDetail!==null||this.editForm!==null||this.messageRows!==null?(e,t)=>{let u=this.viewNodes[t]?.kind;return u==="data"||u==="group"||u==="treePath"}:void 0,rows:this.rowAxis(),columnIds:this.getVisualColumnIds(),pageSize:Math.max(1,this.virtual.getWindow().rows.end-this.virtual.getWindow().rows.start-2),spanOf:ys(this.getColumnLayout())?this.focusSpanOf():void 0}}focusSpanOf(){let e=this.getVisualColumnIds(),t=new Map;return(u,r)=>{if(!t.has(u)){let i=this.getDataRowNode(u);t.set(u,i?this.planRowColSpans(i,null):null)}let n=t.get(u),a=e[r];if(!n||a===void 0)return{start:r,span:1};let o=n.covered.get(a)??a,l=o===a?r:e.indexOf(o);return{start:l===-1?r:l,span:n.spans.get(o)??1}}}planRowColSpans(e,t){let u=this.getColumnLayout();return ys(u)?Eh(u,t,r=>{let n=r.state.id;try{return r.def.colSpan?.({row:e.data,value:this.columns.getCellValue(e.data,n),columnId:n,node:e})??1}catch(a){return this.debugMode&&console.error(`[datagrid] colSpan of "${n}" threw:`,a),1}}):null}emitSelectionChanged(){this.selectionVersion++;let e=this.getSelectedCount();if(!this.selection.isAllMatching()){this.events.emit("selectionChanged",{selectedKeys:this.selection.getSelectedKeys(),selectedCount:e});return}let t=null,u=()=>t??=this.getSelectedKeys();this.events.emit("selectionChanged",{get selectedKeys(){return u()},selectedCount:e})}emitFocusChanged(){let e=this.focus.get();this.events.emit("focusChanged",{focus:e});let t=e?.rowKey??null;if(t!==this.lastFocusedRowKey){let u=this.lastFocusedRowKey;this.lastFocusedRowKey=t,this.events.emit("focusedRowChanged",{rowKey:t,previousRowKey:u,row:t===null?void 0:this.getFocusedRow()})}}getFocusedRow(){let e=this.getFocusedNode();return e&&e.kind==="data"?e.data:void 0}toggleSort(e,t=!1){if(e===Gu){this.toggleGroupColumnSort();return}this.assertColumn(e)&&(this.store.toggleSort(e,t,this.getSortCycle(e)),this.emitSortChanged())}toggleGroupColumnSort(){let e=this.store.getState().groupBy;if(e.length===0)return;let t=this.store.getState().sort,u=(t.find(r=>r.columnId===e[0])?.direction??"asc")==="asc"?"desc":"asc";this.store.setGroupLevelSort(e.map(r=>({columnId:r,direction:u})),t.filter(r=>!e.includes(r.columnId))),this.emitSortChanged()}getSortCycle(e){let t=this.columns.getDef(e)?.sortCycle;return t?r0(t):this.sortCycle}setSort(e){this.store.setSort(e),this.emitSortChanged()}clearSort(){this.store.clearSort(),this.emitSortChanged()}setFilter(e){this.warnUnknownFilterOperators(e,"setFilter"),this.store.setFilter(Bo(e)),this.store.resetPage(),this.resetReveal(),this.emitFilterChanged()}setColumnFilter(e,t,u){this.assertColumn(e)&&(this.warnUnknownFilterOperators(t,"setColumnFilter"),this.store.setColumnFilter(e,Bo(t),u),this.store.resetPage(),this.resetReveal(),this.emitFilterChanged())}warnUnknownFilterOperators(e,t){if(!this.debugMode||!e||this.rowModel.mode==="remote")return;let u=J4(e,this.columns);u.length!==0&&console.warn(`[datagrid] ${t}: filter operator(s) not registered on the column \u2014 ${[...new Set(u)].join(", ")}. Such a condition matches no row; add the operator to the column \`filterOperators\`.`)}shadowWarned=new Set;warnShadowedFilterOperators(){for(let e of this.columns.getOrder()){let t=Z4(this.columns.getDef(e)).filter(u=>!this.shadowWarned.has(`${e}::${u}`));if(t.length!==0){for(let u of t)this.shadowWarned.add(`${e}::${u}`);console.warn(`[datagrid] column "${e}": filterOperators ${t.map(u=>`"${u}"`).join(", ")} reuse a built-in operator id and are ignored \u2014 give them an id of their own.`)}}}getColumnFilter(e,t){return this.store.getColumnFilter(e,t)}clearColumnFilters(){this.store.clearColumnFilters(),this.emitFilterChanged()}getEffectiveFilter(){return this.store.effectiveFilter()}isFilterEnabled(){return this.store.getState().filterEnabled}runningFilter(){return this.isFilterEnabled()?Kn(this.store.effectiveFilter()):null}setExternalFilter(e){this.externalFilter=e,this.events.emit("filterChanged",{filter:this.runningFilter(),searchText:this.store.getState().searchText}),this.recompute()}isExternalFilterPresent(){return this.externalFilter!==null}refreshExternalFilter(){this.externalFilter!==null&&this.recompute()}setFilterEnabled(e){this.isFilterEnabled()!==e&&(this.store.setFilterEnabled(e),this.resetReveal(),this.emitFilterChanged())}getDistinctValues(e,t=So){return this.getDistinctValueSet(e,t).entries}getDistinctValueSet(e,t=So){this.distinctEpoch!==this.dataEpoch&&(this.distinctCache.clear(),this.distinctTruncated.clear(),this.distinctEpoch=this.dataEpoch);let u=`${e} ${t}`,r=this.distinctCache.get(u);if(r)return{entries:r,truncated:this.distinctTruncated.has(u)};let n=this.rowModel.getSourceRows?.()??[],a=this.columns.getDef(e),o=new Map,l=!1;for(let s of n){let h=this.columns.getCellValue(s,e),m=h==null?n0:String(h),c=h==null?"":cu(a,h,s);if(!o.has(m)&&(o.set(m,{value:h,label:c}),o.size>t)){o.delete(m),l=!0;break}}let i=[...o.values()].sort((s,h)=>this.compareDistinct(s,h));return this.distinctCache.set(u,i),l?this.distinctTruncated.add(u):this.distinctTruncated.delete(u),{entries:i,truncated:l}}searchDistinctValues(e,t,u=So){let r=Le(t.trim());if(!r)return this.getDistinctValueSet(e,u);let n=this.rowModel.getSourceRows?.()??[],a=this.columns.getDef(e),o=new Map,l=!1;for(let i of n){let s=this.columns.getCellValue(i,e),h=s==null?n0:String(s),m=s==null?"":cu(a,s,i);if(!(!Le(m).includes(r)||o.has(h))&&(o.set(h,{value:s,label:m}),o.size>u)){o.delete(h),l=!0;break}}return{entries:[...o.values()].sort((i,s)=>this.compareDistinct(i,s)),truncated:l}}compareDistinct(e,t){let u=e.value==null,r=t.value==null;return u!==r?u?-1:1:this.collator().compare(e.label,t.label)}async getDistinctValueSetAsync(e,t){if(this.remote())return{entries:await this.getDistinctValuesAsync(e),truncated:!1};this.distinctEpoch!==this.dataEpoch&&(this.distinctCache.clear(),this.distinctTruncated.clear(),this.distinctEpoch=this.dataEpoch);let u=`${e} full`,r=this.distinctCache.get(u);if(r)return{entries:r,truncated:!1};let n=this.distinctFullInflight.get(e);if(!n){let a=this.dataEpoch;n=Bp({rows:this.rowModel.getSourceRows?.()??[],getValue:o=>this.columns.getCellValue(o,e),labelOf:this.columnShowsOwnText(e)?(o,l)=>cu(this.columns.getDef(e),o,l):void 0,collator:this.collator(),shouldAbort:()=>this.disposed,onProgress:t}).then(o=>(this.distinctFullInflight.delete(e),o===null?[]:(a===this.dataEpoch&&this.distinctEpoch===a&&(this.distinctCache.set(u,o),this.distinctTruncated.delete(u)),o))),this.distinctFullInflight.set(e,n)}return{entries:await n,truncated:!1}}canListDistinctValues(){let e=this.remote();return e===null||e.supportsDistinctValues()}async getDistinctValuesAsync(e,t=1e3){let u=this.remote();return u?u.supportsDistinctValues()?this.sortDistinctEntries(await u.loadDistinctValues(e,t)):[]:this.getDistinctValues(e,t)}sortDistinctEntries(e){return e.map(t=>({value:t.value,label:t.label??(t.value==null?"":String(t.value))})).sort((t,u)=>this.collator().compare(t.label,u.label))}openRemoteDistinct(e,t){let u=this.remote();if(!u||!u.supportsDistinctValues())return null;let r=this.columns.getDef(e),n=this.distinctFollowsSearch?()=>({filter:Up(qo(this.runningFilter(),o=>o!==e)),searchText:this.store.getState().searchText}):void 0,a=n?JSON.stringify(n()):"";return new ph({columnId:e,rowHeight:t,load:o=>u.loadDistinctPage({columnId:e,...o}),formatLabel:o=>cu(r,o),initialFilter:this.getColumnFilter(e,Ou)??this.getColumnFilter(e,hu),followContext:n,store:u.distinctStore(e,a)})}columnShowsOwnText(e){let t=this.columns.getDef(e);return!!t&&(!!t.lookup||ei(t))}collator(){return this.localeCollator||(this.localeCollator=new Intl.Collator(this.locale,{numeric:!0,sensitivity:"base"})),this.localeCollator}bumpDataEpoch(){this.dataEpoch++,this.selectableCache=new WeakMap,this.sourceRowIndex=null,this.selectableCountCache=null,this.selectableDirty=!0}setSearchText(e){this.store.setSearchText(e),this.store.resetPage(),this.resetReveal(),this.emitFilterChanged()}emitFilterChanged(){this.events.emit("filterChanged",{filter:this.store.effectiveFilter(),searchText:this.store.getState().searchText})}setColumnWidth(e,t,u=!0){let r=this.columns.getState(e)?.width;this.columns.setFlex(e,0),this.columns.setWidth(e,t);let n=this.columns.getState(e);n&&r!==void 0&&(n.width!==r||u)&&this.events.emit("columnResized",{columnId:e,width:n.width,previousWidth:r,finished:u}),this.emitColumnStateChanged()}sizeColumnsToFit(e={}){let t=(e.width??this.viewportWidth)-this.leadWidth;if(!Number.isFinite(t)||t<=0)return;let u=new Set(e.skip??[]);for(let h of this.columns.getOrder())Be(h)&&u.add(h);for(let h of this.columns.getOrder())this.columns.isFlexing(h)&&u.add(h);let r=this.columns.getOrder().filter(h=>this.columns.getState(h)?.visible&&!u.has(h));if(r.length===0)return;let n=0;for(let h of this.columns.getOrder())!this.columns.getState(h)?.visible||!u.has(h)||(n+=this.columns.getState(h)?.width??0);let a=t-n;if(a<=0)return;let o=new Set(r),l=new Map;for(let h of r)l.set(h,this.columns.getState(h)?.width??0);for(let h=0;h<=r.length&&o.size>0;h++){let m=0;for(let C of o)m+=l.get(C)??0;if(m<=0)break;let c=a/m,p=!1;for(let C of[...o]){let E=(l.get(C)??0)*c,D=this.columns.getDef(C),F=D?.minWidth??Zp,x=D?.maxWidth??Number.POSITIVE_INFINITY;if(E<F||E>x){let k=Math.min(Math.max(E,F),x);l.set(C,k),o.delete(C),a-=k,p=!0}else l.set(C,E)}if(!p)break}let i=0;for(let h of r)i+=l.get(h)??0;let s=0;r.forEach((h,m)=>{let c=m===r.length-1?Math.round(i)-s:Math.round(l.get(h)??0);s+=c,this.columns.setWidth(h,c)}),this.emitColumnStateChanged()}setBandCollapsed(e,t){let u=typeof e=="string"?[e]:e;this.columns.setBandCollapsed(u,t)&&(this.events.emit("columnGroupOpened",{band:[...u],open:!t}),this.emitColumnStateChanged(),this.notifyViewStateChanged())}toggleBand(e){let t=typeof e=="string"?[e]:e;this.setBandCollapsed(t,!this.columns.isBandCollapsed(t))}isBandCollapsed(e){return this.columns.isBandCollapsed(typeof e=="string"?[e]:e)}isBandCollapsible(e){return this.columns.isBandCollapsible(typeof e=="string"?[e]:e)}setColumnPinned(e,t){let u=this.columns.getState(e)?.pinned;this.columns.setPinned(e,t);let r=this.columns.getState(e);r&&u!==void 0&&r.pinned!==u&&this.events.emit("columnPinned",{columnId:e,pinned:r.pinned,previous:u}),this.emitColumnStateChanged()}setColumnVisible(e,t){let u=this.columns.getState(e)?.visible;this.columns.setVisible(e,t);let r=this.columns.getState(e);r&&u!==void 0&&r.visible!==u&&this.events.emit("columnVisible",{columnId:e,visible:r.visible}),this.emitColumnStateChanged(),this.recompute()}setColumnHeaderName(e,t){this.requireEnterprise("Renaming columns in the grid","");let u=this.columns,r=this.headerNameOf(e);if(!u.setHeaderName(e,t))return;let n=this.headerNameOf(e);this.events.emit("columnRenamed",{columnId:e,headerName:n,previousHeaderName:r,custom:u.getState(e)?.headerName!==void 0}),this.emitColumnStateChanged()}headerNameOf(e){let t=this.columns.getDef(e);return t?.headerName??t?.field??e}moveColumn(e,t){let u=this.columns.getOrder().indexOf(e);this.columns.moveColumn(e,t);let r=this.columns.getOrder().indexOf(e);u!==-1&&r!==u&&this.events.emit("columnMoved",{columnId:e,fromIndex:u,toIndex:r}),this.emitColumnStateChanged()}applyColumnStates(e){this.columns.applyColumnStates(e),this.emitColumnStateChanged(),this.recompute()}resetColumnState(){this.columns.resetColumnStates(),this.emitColumnStateChanged(),this.recompute()}formulaMemo=null;formulaCompiled=new Map;formulaEvaluating=new Set;formulaRows=null;formulaData(){if(!this.formulaRows||this.formulaRows.epoch!==this.dataEpoch){let e=this.rowModel.mode==="client"?this.rowModel.getSourceRows?.()??[]:[],t=new Map;e.forEach((u,r)=>{let n=String(this.keyGetter(u));t.has(n)||t.set(n,r)}),this.formulaRows={epoch:this.dataEpoch,rows:e,byKey:t}}return this.formulaRows}resolveFormulaCell(e){let{rows:t,byKey:u}=this.formulaData();if(e.kind==="ref"){let n=u.get(e.rowKey);return n===void 0||!this.columns.getDef(e.columnId)?null:{row:n,columnId:e.columnId}}let r=this.columns.getDefinitionOrder().filter(n=>!Be(n))[e.col];return r===void 0||e.row>=t.length?null:{row:e.row,columnId:r}}readCellFormula(e,t,u){let r=this.dataEpoch;(!this.formulaMemo||this.formulaMemo.epoch!==r)&&(this.formulaMemo={epoch:r,values:new WeakMap});let n=this.formulaMemo.values,a=n.get(e)?.get(t);if(a!==void 0)return a;let o=`${String(this.keyGetter(e))}${t}`;if(this.formulaEvaluating.has(o))return ae.of("#CYCLE!");let l=this.formulaCompiled.get(u);if(l===void 0){let s=Po(u,{resolveColumn:h=>this.columns.resolveColumnName(h),allowCells:!0,locale:this.locale});l=s.ok?s.formula:null,this.formulaCompiled.size>5e3&&this.formulaCompiled.clear(),this.formulaCompiled.set(u,l)}let i;if(!l)i=ae.of("#NAME?");else{this.formulaEvaluating.add(o);try{let{rows:s}=this.formulaData(),h=m=>m?this.columns.getCellValue(s[m.row],m.columnId):ae.of("#REF!");i=l.evaluate({column:m=>this.columns.getCellValue(e,m),cell:m=>h(this.resolveFormulaCell(m)),range:(m,c)=>{let p=this.resolveFormulaCell(m),C=this.resolveFormulaCell(c);if(!p||!C)return[ae.of("#REF!")];let E=this.columns.getDefinitionOrder().filter(k=>!Be(k)),D=E.indexOf(p.columnId),F=E.indexOf(C.columnId),x=[];for(let k=Math.min(p.row,C.row);k<=Math.max(p.row,C.row);k++)for(let M=Math.min(D,F);M<=Math.max(D,F);M++)x.push(this.columns.getCellValue(s[k],E[M]));return x}})}finally{this.formulaEvaluating.delete(o)}}if(this.formulaEvaluating.size===0||!(i instanceof ae&&i.code==="#CYCLE!")){let s=n.get(e);s||n.set(e,s=new Map),s.set(t,i)}return i}referenceView(){let e=this.getVisualColumnIds().filter(a=>!Be(a)),t=this.columns.getDefinitionOrder().filter(a=>!Be(a)),u=[];for(let a of this.viewNodes)a?.kind==="data"&&u.push(String(a.key));let r=new Map(u.map((a,o)=>[a,o])),{byKey:n}=this.formulaData();return{columnAt:a=>e[a]??null,columnViewIndex:a=>e.indexOf(a),columnDataIndex:a=>t.indexOf(a),rowKeyAt:a=>u[a]??null,rowViewIndex:a=>r.get(a)??-1,rowDataIndex:a=>n.get(a)??-1}}isFormulaCell(e,t){return this.columns.getDef(e)?.allowFormulas===!0&&typeof t=="string"&&t.trimStart().startsWith("=")}formatCellForEdit(e,t){return this.isFormulaCell(e,t)?jm(t,this.referenceView()):t}parseCellFromEdit(e,t,u){if(this.isFormulaCell(e,t))return Os(t,this.referenceView());if(u!==void 0&&(t=this.parseCellValue(u,e,t)),this.isFormulaCell(e,t))return Os(t,this.referenceView());let r=this.columns.getDef(e);if(r?.allowFormulas&&r.dataType==="number"&&typeof t=="string"&&t.trim()!==""){let n=Number(t);if(Number.isFinite(n))return n}return t}parseCellValue(e,t,u){if(!this.columns.getDef(t)?.valueParser)return u;let r=this.getRowByKey(e);if(r===void 0)return u;let n=this.columns.getStoredValue(r,t),a=this.pendingReaders?.effectiveValue,o=a?a(e,t,n):n;return this.columns.parseCellValue(r,t,u,o)}valueAfterWrite(e,t,u){if(!this.columns.getDef(t)?.valueSetter)return u;let r=this.getRowByKey(e);return r===void 0?u:this.columns.getStoredValue(r,t)}writeCellValue(e,t,u){let r=this.getRowByKey(e);if(r===void 0)return!1;let n=this.columns.setCellValue(r,t,u);return n&&this.columns.hasCellFormulas()&&this.invalidateCellFormulas(),n}shiftCellFormula(e,t,u,r){return this.isFormulaCell(e,t)?Ym(t,u,r,this.referenceView()):t}invalidateCellFormulas(){this.formulaMemo=null}attachExcelFormulas(e){let t=e.columns.map(n=>{let a=this.columns.getDef(n.id);return a?typeof a.formula=="string"&&!a.allowFormulas&&!this.columns.getFormulaError(n.id)?"column":a.allowFormulas?"cell":null:null});if(!t.some(Boolean))return;let u=new Map,r=n=>{if(!u.has(n))try{u.set(n,oi(n))}catch{u.set(n,null)}return u.get(n)};for(let n of e.rows){if(n.kind!=="data"||!n.source)continue;let a=String(n.source.key),o=n.source.row;n.cells.forEach((l,i)=>{let s=t[i];if(!s)return;let h=e.columns[i].id,m=s==="column"?this.columns.getDef(h).formula:this.columns.getStoredValue(o,h);if(typeof m!="string"||s==="cell"&&!m.trimStart().startsWith("=")||l.value instanceof ae&&l.value.code==="#CYCLE!")return;let c=r(m);c&&(l.excelFormula=(p,C)=>Jm(c,E=>this.excelLeaf(E,a,p,C),Jp))})}}excelLeaf(e,t,u,r){let{rows:n}=this.formulaData(),a=E=>n[E]===void 0?null:String(this.keyGetter(n[E]));if(e.kind==="column"){let E=this.columns.resolveColumnName(e.name),D=E===null?null:u(t,E);return D?Fr(D,r):null}if(e.kind==="cell"||e.kind==="ref"){let E=this.resolveFormulaCell(e),D=E?a(E.row):null,F=E&&D!==null?u(D,E.columnId):null;return F?Fr(F,r):null}let o=this.resolveFormulaCell(e.from),l=this.resolveFormulaCell(e.to);if(!o||!l)return null;let i=this.columns.getDefinitionOrder().filter(E=>!Be(E)),s=i.indexOf(o.columnId),h=i.indexOf(l.columnId),m=[];for(let E=Math.min(o.row,l.row);E<=Math.max(o.row,l.row);E++){let D=a(E);if(D===null)return null;let F=[];for(let x=Math.min(s,h);x<=Math.max(s,h);x++){let k=u(D,i[x]);if(!k)return null;F.push(k)}m.push(F)}let c=m.flat(),p=c[0],C=c[c.length-1];return c.every(E=>E.sheet===p.sheet)&&m.every((E,D)=>E.every((F,x)=>F.row===p.row+D&&F.column===p.column+x))?`${Fr(p,r)}:${Fr({...C,sheet:r.sheet},r)}`:c.map(E=>Fr(E,r)).join(",")}getCellFormula(e,t){let u=this.sourceRowByKey(e);if(!u)return null;let r=this.columns.getStoredValue(u,t);return this.isFormulaCell(t,r)?r:null}calculatedColumns=[];getFormulaError(e){return this.columns.getFormulaError(e)}getCalculatedColumns(){return this.calculatedColumns.map(e=>({...e}))}previewFormula(e,t=5){let u=Po(e,{resolveColumn:a=>this.columns.resolveColumnName(a),locale:this.locale});if(!u.ok)return u;let r=[];for(let a of this.viewNodes){if(r.length>=t)break;if(!a||a.kind!=="data")continue;let o=a.data;r.push(u.formula.evaluate({column:l=>this.columns.getCellValue(o,l)}))}let n=Nr(u.formula.tree,a=>{let o=this.columns.resolveColumnName(a);return o===null?void 0:this.columns.getDataType(o)});return{ok:!0,values:r,dataType:n}}addCalculatedColumn(e){this.requireEnterprise("Adding calculated columns at runtime"," (a `formula` in the column definitions is Community)");let t=new Set(this.columns.getOrder()),u=e.id??`calc_${e.headerName.toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_|_$/g,"")||"column"}`,r=u;for(let n=2;t.has(r);n++)r=`${u}_${n}`;if(this.calculatedColumns=[...this.calculatedColumns,{id:r,headerName:e.headerName,formula:e.formula,...e.dataType?{dataType:e.dataType}:{}}],this.rebuildCalculated(),e.after&&t.has(e.after)){let n=this.columns.getOrder(),a=n[n.indexOf(e.after)+1];a!==void 0&&a!==r&&this.columns.moveColumn(r,a),this.emitColumnStateChanged()}return r}updateCalculatedColumn(e,t){this.requireEnterprise("Editing calculated columns at runtime",""),this.calculatedColumns.some(u=>u.id===e)&&(this.calculatedColumns=this.calculatedColumns.map(u=>u.id===e?{...u,...t,id:e}:u),this.rebuildCalculated())}removeCalculatedColumn(e){if(this.requireEnterprise("Removing calculated columns at runtime",""),!this.calculatedColumns.some(n=>n.id===e))return;this.calculatedColumns=this.calculatedColumns.filter(n=>n.id!==e);let{sort:t,groupBy:u,columnFilters:r}=this.store.getState();t.some(n=>n.columnId===e)&&this.setSort(t.filter(n=>n.columnId!==e)),u.includes(e)&&this.groupBy(u.filter(n=>n!==e)),r[e]&&this.setColumnFilter(e,null),this.rebuildCalculated()}rebuildCalculated(){this.columns.setColumns(this.withGroupColumn(this.authorColumns,this.store.getState().groupBy)),this.bumpDataEpoch(),this.emitColumnStateChanged(),this.notifyViewStateChanged(),this.recompute()}setColumns(e){this.authorColumns=e,this.columns.setColumns(this.withGroupColumn(e,this.store.getState().groupBy)),this.warnShadowedFilterOperators(),this.bumpDataEpoch(),this.emitColumnStateChanged(),this.recompute()}getGroupLevels(){return this.store.getState().groupBy}getGroupDisplay(){return this.groupDisplay}withGroupColumn(e,t){let u=this.calculatedColumns.length===0?e:[...e,...this.calculatedColumns.map(a=>({id:a.id,headerName:a.headerName,formula:a.formula,...a.dataType?{dataType:a.dataType}:{}}))];if(this.groupDisplay!=="column")return u;let r=this.groupColumnConfig,n=r.headerName??t.map(a=>u.find((o,l)=>(o.id??o.field??String(l))===a)?.headerName??a).join(" \u203A ");return[...u,{id:Gu,headerName:n,width:r.width??200,minWidth:r.minWidth??80,pin:"left",sortable:!0,filterable:!1,groupable:!1,reorderable:!1,editable:!1,resizable:!0}]}refreshGroupColumn(){this.groupDisplay==="column"&&this.columns.setColumns(this.withGroupColumn(this.authorColumns,this.store.getState().groupBy))}getGroupSummaries(){return this.groupSummaries}setGroupSummaries(e){this.groupSummaries!==e&&(this.groupSummaries=e,this.groupTree=null,this.groupTreeSignature=null,this.reproject(),this.notifyViewStateChanged())}getGroupBy(){return this.store.getState().groupBy[0]??null}groupBy(e){let t=e==null?[]:typeof e=="string"?[e]:[...e];if(t.length>0&&!this.canGroup()){this.debugMode&&console.warn("[datagrid] grouping a server-side DataSource is an Enterprise feature (the server groups) \u2014 import EnterpriseDataGrid / createEnterpriseGrid to use it.");return}for(let r of t)if(!this.assertColumn(r))return;let u=this.store.getState().groupBy;t.length===u.length&&t.every((r,n)=>r===u[n])||(this.remote()?.setGrouping(t.map(r=>({columnId:r})),t),this.store.setGroupBy(t),this.refreshGroupColumn(),this.emitColumnStateChanged(),this.resetReveal(),this.events.emit("groupChanged",{groupBy:t[0]??null,levels:t}))}remote(){return this.rowModel instanceof Ts?this.rowModel:null}clearGrouping(){this.groupBy(null)}isGroupCollapsed(e){return this.store.isGroupCollapsed(e)}toggleGroup(e){let t=this.remote();if(t?.isGrouped()){t.toggleGroupPath(e)&&(this.recompute(),this.notifyViewStateChanged());return}this.store.toggleGroup(e)}expandAllGroups(){let e=this.remote();if(e?.isGrouped()){e.expandAllPaths(),this.recompute(),this.notifyViewStateChanged();return}this.store.setCollapsedGroups([])}collapseAllGroups(){let e=this.remote();if(e?.isGrouped()){e.setExpandedPaths([]),this.recompute(),this.notifyViewStateChanged();return}let t=this.store.getState().groupBy;t.length!==0&&this.store.setCollapsedGroups(F4(this.ensureGroupTree(t)))}setEditFormRow(e,t={}){let u=e===null?null:{rowKey:e,height:Math.max(1,t.height??260),atTop:t.atTop??!1},r=this.editForm;if(!(r?.rowKey===u?.rowKey&&r?.height===u?.height&&r?.atTop===u?.atTop)&&(this.editForm=u,this.reproject(),u?.atTop)){let n=this.ensureVisible(0);n&&this.events.emit("scrollRequested",n)}}setMessageRows(e,t){let u=new Set(e.map(a=>String(a))),r=Math.max(1,t),n=this.messageRows;u.size===0&&n===null||n!==null&&n.height===r&&n.keys.size===u.size&&[...u].every(a=>n.keys.has(a))||(this.messageRows=u.size===0?null:{keys:u,height:r},this.reproject())}getEditFormRow(){return this.editForm?.rowKey??null}getEditFormHeight(){return this.editForm?.height??0}isDebugMode(){return this.debugMode}hasTreePathRows(){return!!this.treeData?.getDataPath}hasMasterDetail(){return this.masterDetail!==null}getDetailHeight(){return this.masterDetail?.height??0}isDetailExpanded(e){let t=this.store.isDetailExpanded(e);return this.masterDetail?.expandedByDefault?!t:t}toggleDetail(e){this.masterDetail&&(this.store.toggleDetail(e),this.events.emit("detailToggled",{rowKey:e,expanded:this.isDetailExpanded(e)}))}collapseAllDetails(){this.masterDetail&&(this.masterDetail.expandedByDefault?this.store.setExpandedDetails(this.dataKeys()):this.store.setExpandedDetails([]),this.events.emit("detailToggled",{rowKey:null,expanded:!1}))}expandAllDetails(){this.masterDetail&&(this.masterDetail.expandedByDefault?this.store.setExpandedDetails([]):this.store.setExpandedDetails(this.dataKeys()),this.events.emit("detailToggled",{rowKey:null,expanded:!0}))}getDataRowCount(){return this.lastResult.visibleCount}getSummaries(){return this.summaryValues}getSummaryDefs(){return this.summaryDefs}setSummaryDefs(e){this.summaryDefs=e,this.groupTree=null,this.groupTreeSignature=null,this.summaryBasis=null,this.recompute(),this.notifyViewStateChanged()}getColumnSummary(e){return this.summaryDefs.find(t=>t.columnId===e)??null}setColumnSummary(e,t){let u=this.summaryDefs.filter(r=>r.columnId!==e);if(this.summaryDefs=t===null?u:[...u,{columnId:e,type:t}],this.notifyViewStateChanged(),this.groupSummaries&&this.store.getState().groupBy.length>0){this.recompute();return}if(this.remote()){this.recompute();return}this.recomputeSummaries(),this.emitColumnStateChanged()}setPendingValueReader(e){this.pendingReaders=e??void 0,this.recomputeSummaries(),this.emitColumnStateChanged()}refreshSummaries(){if(this.summaryDefs.length!==0){if(this.recomputeSummaries(),this.refreshGroupAggregates()){this.projectView();return}this.events.emit("contentReady",{rows:this.lastResult.nodes,totalCount:this.lastResult.totalCount,visibleCount:this.lastResult.visibleCount})}}currentSummaryBasis(e,t){let u=t?this.columns.runtime().map(r=>r.state.id).join(","):"";return[this.dataEpoch,t,u,JSON.stringify(e)].join(In)}async computeChartData(e,t={}){let u=t.source??e.source??"view",r=!!this.pendingReaders&&(this.pendingReaders.hasPending?.()??!0),n=r?this.pendingReaders:void 0;if(u==="selection"){let i=this.getSelectedKeys();if(i.length>0){let s=[];for(let h of i){let m=this.getDataRowNode(h);m&&s.push(m)}if(io(e)){let h=new Map(this.dataNodes().map((m,c)=>[m.key,c]));s.sort((m,c)=>(h.get(m.key)??0)-(h.get(c.key)??0))}return Ar(s,this.columns,e,n)}}if(u==="range"&&e.rowRange)return Ar(this.chartRangeNodes(e.rowRange),this.columns,e,n);let a=u!=="all"&&this.chartExcludesFilter(e.excludeFilter),o=this.rowModel instanceof Tn?this.rowModel:null,l=u!=="all"&&this.externalFilter!==null;if(o?.usesWorker()&&P0(e)&&!r&&!l){let{searchText:i}=this.store.getState(),s=await o.aggregate(this.columns,{sort:io(e)&&u!=="all"?this.store.getState().sort:[],filter:u==="all"?null:a?this.columnFiltersOnly():this.runningFilter(),searchText:u==="all"?"":i},e);if(s)return s}if(u==="all"){let i=this.rowModel.getSourceRows?.()??[],s=new Array(i.length);for(let h=0;h<i.length;h++)s[h]=Xe(i[h],this.keyGetter(i[h]),h);return Ar(s,this.columns,e,n)}return a?Ar(this.viewRowsWithoutFilter(io(e)),this.columns,e,n):Ar(this.dataNodes(),this.columns,e,n)}chartExcludesFilter(e){return e===!0&&this.store.getState().filter!==null}columnFiltersOnly(){return this.isFilterEnabled()?Kn(ro(...Object.values(this.store.getState().columnFilters))):null}viewRowsWithoutFilter(e){let t=this.rowModel.getSourceRows?.();if(!t)return this.dataNodes();let u=new Uint32Array(t.length);for(let l=0;l<t.length;l++)u[l]=l;let{searchText:r,sort:n}=this.store.getState(),a=D0(u,t,this.columns,this.columnFiltersOnly(),r,this.externalFilter);e&&(a=hd(a,t,this.columns,n,{locale:this.locale}));let o=new Array(a.length);for(let l=0;l<a.length;l++){let i=a[l];o[l]=Xe(t[i],this.keyGetter(t[i]),i)}return o}async computeChartBoxData(e){return Oh(this.chartSourceNodes(e.source,e.rowRange,e.excludeFilter),this.columns,e)}chartRangeNodes(e){let t=this.getRows(),u=Math.max(0,Math.min(e.start,e.end)),r=Math.min(t.length-1,Math.max(e.start,e.end)),n=[];for(let a=u;a<=r;a++){let o=t[a];o&&o.kind==="data"&&n.push(o)}return n}chartSourceNodes(e,t,u){if(e==="range"&&t)return this.chartRangeNodes(t);if(e==="selection"){let r=this.getSelectedKeys();if(r.length>0){let n=[];for(let a of r){let o=this.getDataRowNode(a);o&&n.push(o)}return n}}if(e==="all"){let r=this.rowModel.getSourceRows?.()??[],n=new Array(r.length);for(let a=0;a<r.length;a++)n[a]=Xe(r[a],this.keyGetter(r[a]),a);return n}return this.chartExcludesFilter(u)?this.viewRowsWithoutFilter(!1):this.dataNodes()}async computeChartXYData(e){let t=e.source??"view";if(t==="range"&&e.rowRange)return Dn(this.chartRangeNodes(e.rowRange),this.columns,e);if(t==="selection"){let u=this.getSelectedKeys();if(u.length>0){let r=[];for(let n of u){let a=this.getDataRowNode(n);a&&r.push(a)}return Dn(r,this.columns,e)}}if(t==="all"){let u=this.rowModel.getSourceRows?.()??[],r=new Array(u.length);for(let n=0;n<u.length;n++)r[n]=Xe(u[n],this.keyGetter(u[n]),n);return Dn(r,this.columns,e)}return Dn(this.dataNodes(),this.columns,e)}chartBasis(e="view",t=!1){if(e==="all")return String(this.dataEpoch);if(t&&e!=="range")return[this.chartBasis(e),JSON.stringify(this.store.getState().sort)].join(In);if(e==="range"){let{sort:r,groupBy:n,collapsedGroups:a,page:o}=this.store.getState();return[this.chartBasis("view"),JSON.stringify(r),JSON.stringify(n),JSON.stringify(a),String(o)].join(In)}let{searchText:u}=this.store.getState();return[this.currentSummaryBasis(this.runningFilter(),u),this.lastResult.visibleCount].join(In)}runSummaryPass(e,t,u,r,n){let a=++this.summaryPassSeq;if(e.length<=1e5){this.busyDepth>0&&this.setBusy("aggregating",null);let m=y4(e,this.columns,t,this.pendingReaders);this.summaryValues=u?{...this.summaryValues,...m}:m,r!==null&&(this.summaryBasis=r);return}let o=E4(this.columns,t,this.pendingReaders),l=1e5,i=e.length,s=0,h=()=>{if(this.disposed||a!==this.summaryPassSeq||n!==this.computeToken)return;let m=Math.min(i,s+l);if(o.add(e,s,m),s=m,s<i){this.setBusy("aggregating",s/i),Wo(h);return}let c=o.finish();this.summaryValues=u?{...this.summaryValues,...c}:c,r!==null&&(this.summaryBasis=r),this.busyDepth===0&&this.setBusy(null,null),this.events.emit("summariesChanged",{values:this.summaryValues})};Wo(h)}recomputeSummaries(){this.summaryBasis=null;let e=this.remote();if(e){this.summaryValues=this.summaryDefs.length>0?e.getSummaries():{};return}this.summaryDefs.length>0&&this.rowModel.mode==="client"?this.runSummaryPass(this.lastResult.nodes,this.summaryDefs,!1,null,this.computeToken):this.summaryValues={}}refreshGroupAggregates(){let e=this.groupTree;if(!e||!this.groupSummaries||this.rowModel.mode!=="client")return!1;let t=this.pendingReaders&&(this.pendingReaders.hasPending?.()??!0)?this.pendingReaders:void 0,u=!1,r=n=>{for(let a of n)a.aggregates&&(a.aggregates=Zo(e.nodes,a.from,a.to,this.columns,this.summaryDefs,t),u=!0),a.children&&r(a.children)};return r(e.roots),u}isInfiniteScroll(){return this.infiniteScroll}getRevealedCount(){return this.infiniteScroll?this.viewNodes.length:this.allViewNodes.length}hasMoreRows(){return this.infiniteScroll&&this.viewNodes.length<this.allViewNodes.length}revealMore(){if(!this.infiniteScroll||!this.hasMoreRows())return!1;this.infiniteLimit=Math.min(this.allViewNodes.length,this.infiniteLimit+this.infinitePageSize),this.viewNodes=this.allViewNodes.slice(0,this.infiniteLimit),this.rowIndexCache=null;let e=this.virtual.setRowCount(this.viewNodes.length);return this.events.emit("contentReady",{rows:this.lastResult.nodes,totalCount:this.lastResult.totalCount,visibleCount:this.lastResult.visibleCount}),e&&!this.disposed&&this.events.emit("viewportChanged",{window:this.virtual.getWindow()}),!0}resetReveal(){this.infiniteScroll&&(this.infiniteLimit=this.infinitePageSize)}isPaginated(){return this.paginationEnabled}setPaginationEnabled(e){e!==this.paginationEnabled&&(this.paginationEnabled=e,this.store.resetPage(),this.recompute())}getPage(){return this.store.getState().page}getPageSize(){return this.store.getState().pageSize}getPageCount(){return this.paginationEnabled?Math.max(1,Math.ceil(this.allViewNodes.length/this.store.getState().pageSize)):1}setPage(e){this.store.setPage(Math.min(Math.max(0,e),this.getPageCount()-1))}setPageSize(e){this.store.setPageSize(e)}nextPage(){this.setPage(this.getPage()+1)}previousPage(){this.setPage(this.getPage()-1)}emitPaginationChanged(e){if(!this.paginationEnabled)return;let t=this.store.getState(),u=this.getPageCount();this.lastPagination&&this.lastPagination.page===t.page&&this.lastPagination.pageSize===t.pageSize&&this.lastPagination.pageCount===u||(this.lastPagination={page:t.page,pageSize:t.pageSize,pageCount:u},this.events.emit("paginationChanged",{page:t.page,pageSize:t.pageSize,pageCount:u,fromResultChange:e}))}buildExportModel(e={}){return this.buildExportModelFrom(this.allViewNodes,e)}buildExportModelFrom(e,t={}){return nf({nodes:e,columns:this.columns,options:{columnIds:this.layoutRuntime({includeScreenHidden:!0}).map(u=>u.state.id),...t},isSelected:u=>this.selection.isSelected(u),selectionCount:this.getSelectedCount(),summaries:this.summaryDefs.length>0?{defs:this.summaryDefs,values:this.summaryValues}:void 0})}async exportRows(){let e=this.remote();if(!e)return this.allViewNodes;if(!this.canExportAll())throw new Error("[datagrid] exporting from a server-side DataSource is an Enterprise feature: the file has to page through every row the server has. Build the file on the server, or import EnterpriseDataGrid / createEnterpriseGrid.");let t=++this.exportToken,{sort:u,searchText:r,groupBy:n}=this.store.getState(),a=await e.loadAllRows({sort:xn(u,n),filter:this.runningFilter(),searchText:r},{maxRows:this.exportMaxRows,pageSize:this.exportPageSize,isCancelled:()=>t!==this.exportToken||this.disposed,onProgress:(o,l)=>this.setBusy("exporting",l>0?Math.round(o/l*100):null)});return this.setBusy("exporting",null),a}setExportDefaults(e,t){if(typeof e!="string"){this.exportDefaults.excel={...e};return}this.exportDefaults[e]={...t??{}}}setEnterpriseEdition(e){this.enterpriseEdition=e,this.editionDeclared=!0,!e&&this.remote()&&this.store.getState().groupBy.length>0&&this.groupBy(null)}isEnterpriseEdition(){return this.enterpriseEdition}enterpriseEdition=!1;editionDeclared=!1;communityOnServer(){return this.editionDeclared&&!this.enterpriseEdition&&this.remote()!==null}onViewport(){return this.rowModel instanceof Xs}canGroup(){return!this.communityOnServer()&&!this.onViewport()}canExportAll(){return!this.communityOnServer()&&!this.onViewport()}requireEnterprise(e,t=" (CSV export is available in Community)"){if(!this.enterpriseEdition)throw new Error(`[datagrid] ${e} is an Enterprise feature. Import EnterpriseDataGrid from @kanunilabs/datagrid-react-enterprise${t}.`)}async withExportSignal(e,t){if(e.signal)return this.withBusy("exporting",()=>t(e));let u=new AbortController;this.exportAbort=u;try{return await this.withBusy("exporting",()=>t({...e,signal:u.signal}))}finally{this.exportAbort===u&&(this.exportAbort=null)}}async*exportRowChunks(e,t,u){let r=this.remote();if(!r){let l=this.allViewNodes;for(let i=0;i<l.length;i+=5e3){if(e.aborted)throw new et;yield l.slice(i,i+5e3);let s=Math.min(l.length,i+5e3)/l.length;this.setBusy("exporting",Math.round(s*100)),u?.(s),await new Promise(h=>setTimeout(h,0))}return}if(!this.canExportAll())throw new Error("[datagrid] exporting from a server-side DataSource is an Enterprise feature: the file has to page through every row the server has. Build the file on the server, or import EnterpriseDataGrid / createEnterpriseGrid.");let{sort:n,searchText:a,groupBy:o}=this.store.getState();yield*r.streamRows({sort:xn(n,o),filter:this.runningFilter(),searchText:a},{maxRows:this.exportMaxRows,pageSize:this.exportPageSize,columnIds:t,signal:e,onProgress:(l,i)=>{this.setBusy("exporting",i?Math.round(l/i*100):null),i&&u?.(l/i)}})}async streamExport(e,t,u){let r=e.signal??new AbortController().signal,n={...e,details:void 0},a=this.buildExportModelFrom([],n).columns,o=a.map(E=>E.id),l=this.exportRowChunks(r,o,e.onProgress),i=this.buildExportModelFrom.bind(this),s=(async function*(){for await(let E of l)yield i(E,{...n,columnIds:o}).rows})(),h=[],m=e.writable?.getWriter(),c={write:E=>m?m.write(E):void h.push(E)},p;try{if(p=await u(c,a,s),r.aborted)throw new et;e.onProgress?.(1),m&&await m.close()}catch(E){throw m&&await m.abort(E).catch(()=>{}),E}let C=t==="csv"?"text/csv;charset=utf-8;":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";return{blob:new Blob(m?[]:h,{type:C}),fileName:Mn(e.fileName??this.gridId,t),rowCount:p}}async exportToCsv(e={}){let t={delimiter:hf(this.locale),...this.exportDefaults.csv,...e};return this.withExportSignal(t,async u=>{if(u.stream)return this.streamExport(u,"csv",(n,a,o)=>pf(n,a,o,u));let r=this.buildExportModelFrom(await this.exportRows(),u);return{blob:await ff(r,u),fileName:Mn(u.fileName??this.gridId,"csv"),rowCount:r.rows.length}})}async exportModelWithDetails(e,t){let u=t.details??this.masterDetailExport??void 0,r=this.buildExportModelFrom(e,u?{...t,details:u}:t);if(!u)return r;let n=u.rows??"open",a=[];r.rows.forEach((i,s)=>{i.kind!=="data"||!i.source||(n==="all"||this.isDetailExpanded(i.source.key))&&a.push(s)});let o=new Map,l=8;for(let i=0;i<a.length;i+=l){if(t.signal?.aborted)throw new et;let s=a.slice(i,i+l);(await Promise.all(s.map(h=>{let m=r.rows[h].source;return u.get(m.row,m.key)}))).forEach((h,m)=>{h&&o.set(s[m],h)})}if(t.signal?.aborted)throw new et;return sf(r,o,this.locale)}async exportToExcel(e={}){this.requireEnterprise("Excel export");let t={sheetName:this.text.exportSheetName,...this.exportDefaults.excel,...e};return this.withExportSignal(t,async u=>{if(u.stream)return this.streamExport(u,"xlsx",(n,a,o)=>Hp(n,a,o,{sheetName:u.sheetName,maxRowsPerSheet:u.maxRowsPerSheet,includeHeaders:u.includeHeaders,freezeHeader:u.freezeHeader,autoFilter:u.autoFilter,raw:u.raw,signal:u.signal}));let r=await this.exportModelWithDetails(await this.exportRows(),u);return u.formulas!==!1&&this.attachExcelFormulas(r),{blob:await Df(r,{...u,onProgress:n=>{u.onProgress?.(n),n>=1&&this.setBusy("exporting",null,!1)}}),fileName:Mn(u.fileName??this.gridId,"xlsx"),rowCount:r.rows.filter(Hs).length}})}async exportToPdf(e={}){this.requireEnterprise("PDF export");let t={...this.exportDefaults.pdf,...e};return this.withExportSignal(t,async u=>{let r=await this.exportModelWithDetails(await this.exportRows(),u);return this.setBusy("exporting",null,!1),{blob:await $f(r,u),fileName:Mn(u.fileName??this.gridId,"pdf"),rowCount:r.rows.filter(Hs).length}})}getViewState(e={}){let t=this.store.getState(),u=new Set(e.include??[]),r=this.remote();return{version:1,columns:this.columns.getColumnStates(),sort:t.sort,filter:t.filter,columnFilters:t.columnFilters,columnFilterParts:t.columnFilterParts,filterEnabled:t.filterEnabled,searchText:t.searchText,groupBy:t.groupBy,collapsedGroups:t.collapsedGroups,page:t.page,pageSize:t.pageSize,...this.treeData?{tree:{expandedByDefault:this.treeExpandedByDefault,toggled:[...this.treeToggled]}}:{},summaries:this.summaryDefs.filter(n=>n.type!=="custom").map(({columnId:n,type:a})=>({columnId:n,type:a})),groupSummaries:this.groupSummaries,collapsedBands:this.columns.getCollapsedBands().map(n=>n.split("\0")),...r?.isGrouped()?{remoteGroups:r.getExpansion()}:{},...this.calculatedColumns.length>0?{calculatedColumns:this.getCalculatedColumns()}:{},...this.pinned.top.length+this.pinned.bottom.length>0?{pinnedRows:this.getPinnedRowKeys()}:{},...u.has("selection")?{selection:this.selection.getSelectionDescriptor()}:{},...u.has("focus")?{focusedCell:this.getFocus()}:{},...u.has("scroll")?{scroll:{top:Math.max(0,this.lastScrollTop),left:Math.max(0,this.lastScrollLeft)}}:{},...u.has("details")?{details:[...t.expandedDetails]}:{},...this.viewStateParts.size>0||Object.keys(this.pendingViewStateParts).length>0?{parts:this.collectViewStateParts(u)}:{}}}collectViewStateParts(e){let t={};for(let[u,r]of this.viewStateParts)if(!(r.session&&!e.has(u)))try{t[u]=r.get()}catch{}for(let[u,r]of Object.entries(this.pendingViewStateParts))u in t||(t[u]=r);return t}registerViewStatePart(e,t){if(this.viewStateParts.set(e,t),e in this.pendingViewStateParts){let u=this.pendingViewStateParts[e];delete this.pendingViewStateParts[e];try{t.apply(u)}catch{}}return()=>{if(this.viewStateParts.get(e)===t&&(this.viewStateParts.delete(e),!t.session))try{this.pendingViewStateParts[e]=t.get()}catch{}}}getAiSchema(e={}){return this.requireEnterprise("The AI state schema",""),Wh(this.aiContext(e))}getAiState(e={}){this.requireEnterprise("The AI state schema","");let t=this.aiContext(e),u=this.store.getState(),r={},{features:n}=t;return n.has("filter")&&(r.filter=this.store.effectiveFilter()),n.has("sort")&&(r.sort=u.sort.map(a=>({...a}))),n.has("grouping")&&(r.groupBy=[...u.groupBy]),(n.has("columnVisibility")||n.has("columnSizing")||n.has("columnPinning"))&&(r.columns=t.columns.map(a=>{let o=this.columns.getState(a.id);return{columnId:a.id,...n.has("columnVisibility")?{visible:o.visible}:{},...n.has("columnSizing")?{width:o.width}:{},...n.has("columnPinning")?{pinned:o.pinned==="left"||o.pinned==="right"?o.pinned:null}:{}}})),n.has("search")&&(r.searchText=u.searchText),r}applyAiState(e,t={}){this.requireEnterprise("The AI state schema","");let u=this.aiContext(t),{state:r,dropped:n}=Uh(e,u),a=[],o=this.getViewState(),l=!1;if(r.filter!==void 0){let i=r.filter===null?[]:"nodes"in r.filter&&r.filter.logic==="and"?r.filter.nodes:[r.filter],s=new Map,h=[];for(let m of i){let c=z0(m);if(c.size===1){let[p]=c;s.set(p,[...s.get(p)??[],m])}else h.push(m)}o.filter=ro(...h),o.columnFilters={},o.columnFilterParts={};for(let[m,c]of s){let p=ro(...c);o.columnFilters[m]=p,o.columnFilterParts[m]={[hu]:p}}o.filterEnabled=!0,a.push("filter"),l=!0}if(r.sort!==void 0&&(o.sort=r.sort,a.push("sort")),r.groupBy!==void 0&&(o.groupBy=r.groupBy,o.collapsedGroups=[],a.push("grouping"),l=!0),r.columns!==void 0&&r.columns.length>0){let i=new Map(r.columns.map(m=>[m.columnId,m])),s=o.columns.map(m=>{let c=i.get(m.id);return c?{...m,...c.visible!==void 0?{visible:c.visible}:{},...typeof c.width=="number"?{width:c.width}:{},...c.pinned!==void 0?{pinned:c.pinned}:{}}:m});s.some(m=>m.visible&&!Be(m.id))?o.columns=s:(n.push("columns: the answer would hide every column"),o.columns=s.map((m,c)=>({...m,visible:o.columns[c].visible})));let h=m=>r.columns.some(c=>c[m]!==void 0);h("visible")&&a.push("columnVisibility"),r.columns.some(m=>typeof m.width=="number")&&a.push("columnSizing"),h("pinned")&&a.push("columnPinning")}return r.searchText!==void 0&&(o.searchText=r.searchText,a.push("search"),l=!0),l&&(o.page=0),a.length>0&&(this.applyViewState(o),r.sort!==void 0&&this.emitSortChanged()),n.length>0&&this.debugMode&&console.warn(`[datagrid] applyAiState left out: ${n.join("; ")}`),{applied:a,dropped:n}}aiContext(e){let t=new Set(e.exclude??[]),u=new Set(Vh.filter(a=>!t.has(a)));this.treeData&&u.delete("grouping");let r=Math.max(1,e.maxValues??100),n=[];for(let a of this.columns.getOrder()){if(Be(a))continue;let o=this.columns.getDef(a),l=e.columns?.[a];if(!o||l?.exclude)continue;let i=o.dataType??(o.lookup?"lookup":"string"),s,h=l?.description,m=Qo(o);if(m&&l?.includeValues!==!1)s=m.filter(p=>["string","number","boolean"].includes(typeof p.value)).slice(0,r).map(p=>({value:p.value,label:p.label}));else if(l?.includeValues&&i!=="date"){let p=this.getDistinctValueSet(a,r);s=p.entries.filter(C=>["string","number","boolean"].includes(typeof C.value)).map(C=>({value:C.value,label:C.label})),p.truncated&&(h=`${h?`${h}. `:""}Only some of its values are listed`)}let c=ea(o).map(p=>({id:p.id,label:p.label,operandType:p.operandType??"text"}));n.push({id:a,header:o.headerName??o.field??a,dataType:i,sortable:o.sortable!==!1,filterable:o.filterable!==!1,groupable:o.groupable!==!1,resizable:o.resizable!==!1,...h?{description:h}:{},...s?{values:s}:{},...c.length>0?{operators:c}:{}})}return{columns:n,features:u}}applyViewState(e){if(e.version!==1){this.debugMode&&console.error("[datagrid] unsupported view state version",e.version);return}Array.isArray(e.calculatedColumns)&&(this.enterpriseEdition||!this.editionDeclared)&&(this.calculatedColumns=e.calculatedColumns.filter(o=>o&&typeof o.id=="string"&&typeof o.formula=="string").map(o=>({id:o.id,headerName:String(o.headerName??o.id),formula:o.formula,...o.dataType?{dataType:o.dataType}:{}})),this.columns.setColumns(this.withGroupColumn(this.authorColumns,this.store.getState().groupBy)),this.bumpDataEpoch()),this.columns.applyColumnStates(e.columns??[]),Array.isArray(e.collapsedBands)&&this.columns.setCollapsedBands(e.collapsedBands.filter(o=>Array.isArray(o)).map(o=>er(o.map(String))));let t=new Set(this.columns.getOrder()),u=[],r=o=>t.has(o)?!0:(u.push(o),!1),n=this.canGroup()?Yp(e.groupBy).filter(r):[];this.remote()?.setGrouping(n.map(o=>({columnId:o})),n);let a=e.remoteGroups;if(a&&typeof a.expandedByDefault=="boolean"&&this.remote()?.setExpansion(a.expandedByDefault,Array.isArray(a.toggled)?a.toggled.map(String):[]),Array.isArray(e.summaries)){let o=new Set(["sum","avg","min","max","count","countDistinct"]),l=this.summaryDefs.filter(s=>s.type==="custom"),i=e.summaries.filter(s=>s&&o.has(s.type)&&r(s.columnId)).map(s=>this.summaryDefs.find(h=>h.columnId===s.columnId&&h.type===s.type)??{columnId:s.columnId,type:s.type});this.summaryDefs=[...l,...i],this.groupTree=null,this.groupTreeSignature=null,this.summaryBasis=null}typeof e.groupSummaries=="boolean"&&e.groupSummaries!==this.groupSummaries&&(this.groupSummaries=e.groupSummaries,this.groupTree=null,this.groupTreeSignature=null),this.store.applyState({sort:(e.sort??[]).filter(o=>r(o.columnId)),filter:qo(e.filter??null,r),columnFilters:Object.fromEntries(Object.entries(e.columnFilters??{}).filter(([o])=>r(o))),columnFilterParts:Object.fromEntries(Object.entries(e.columnFilterParts??Object.fromEntries(Object.entries(e.columnFilters??{}).map(([o,l])=>[o,{[hu]:l}]))).filter(([o])=>r(o))),filterEnabled:e.filterEnabled??!0,searchText:e.searchText??"",groupBy:n,collapsedGroups:e.collapsedGroups??[],expandedDetails:Array.isArray(e.details)?e.details.filter(Ln):[],page:e.page??0,pageSize:e.pageSize??this.store.getState().pageSize}),u.length>0&&this.debugMode&&console.warn(`[datagrid] saved view referenced unknown column(s): ${[...new Set(u)].join(", ")} \u2014 dropped.`),this.warnUnknownFilterOperators(this.store.effectiveFilter(),"saved view"),this.emitColumnStateChanged(),this.emitFilterChanged(),this.treeData&&e.tree&&typeof e.tree.expandedByDefault=="boolean"&&(this.treeExpandedByDefault=e.tree.expandedByDefault,this.treeToggled=new Set(Array.isArray(e.tree.toggled)?e.tree.toggled:[])),this.restoreSession(e),this.recompute();for(let[o,l]of Object.entries(e.parts??{})){let i=this.viewStateParts.get(o);if(!i){this.pendingViewStateParts[o]=l;continue}try{i.apply(l)}catch{}}}restoreSession(e){let t=e.selection;if(t&&Array.isArray(t.keys)){let u=this.selection.clear();if(t.allMatching)u=this.selection.selectAllMatching()||u,u=this.selection.setMany(t.keys,!1)||u;else{let r=this.rowModel.mode==="client"?this.rowModel.getSourceRows?.():void 0,n=t.keys;if(r&&r.length>0){let a=new Set(r.map(o=>this.keyGetter(o)));n=n.filter(o=>a.has(o))}u=this.selection.setSelectedKeys(n)||u}u&&this.emitSelectionChanged()}if(e.focusedCell===null?this.clearFocus():e.focusedCell&&typeof e.focusedCell.columnId=="string"&&(this.pendingFocus={rowKey:e.focusedCell.rowKey,columnId:e.focusedCell.columnId}),e.scroll&&Number.isFinite(e.scroll.top)&&Number.isFinite(e.scroll.left)&&(this.pendingScroll={top:Math.max(0,e.scroll.top),left:Math.max(0,e.scroll.left)}),e.pinnedRows&&Array.isArray(e.pinnedRows.top)&&Array.isArray(e.pinnedRows.bottom)){let u=n=>n.filter(Ln),r=u(e.pinnedRows.top);this.pinned={top:r,bottom:u(e.pinnedRows.bottom).filter(n=>!r.includes(n))},this.prunePinnedRows()||this.emitRowPinningChanged()}}setFindText(e){this.requireEnterprise("Find","");let t=Le(e.trim());if(t===""){this.clearFind();return}let u=this.findState?.matches[this.findState.active]??this.getFocus();this.findState={text:e,needle:t,matches:[],active:-1,index:new Map},this.recomputeFind(u),this.revealFindMatch(),this.emitFindChanged()}findNext(){this.stepFind(1)}findPrevious(){this.stepFind(-1)}clearFind(){this.findState&&(this.findState=null,this.emitFindChanged())}focusFindMatch(){let e=this.findState,t=e?.matches[e.active];t&&this.focusCell(t.rowKey,t.columnId)}getFindState(){let e=this.findState;return e?{text:e.text,count:e.matches.length,activeIndex:e.active,active:e.matches[e.active]??null}:{text:"",count:0,activeIndex:-1,active:null}}getFindNeedle(){return this.findState?.needle??""}getFindMatchKind(e,t){let u=this.findState;if(!u||!u.index.get(e)?.has(t))return null;let r=u.matches[u.active];return r&&r.rowKey===e&&r.columnId===t?"active":"match"}stepFind(e){let t=this.findState;!t||t.matches.length===0||(t.active=(t.active+e+t.matches.length)%t.matches.length,this.revealFindMatch(),this.emitFindChanged())}revealFindMatch(){let e=this.findState,t=e?.matches[e.active];t&&this.scrollToCell(t.rowKey,t.columnId)}recomputeFind(e){let t=this.findState;if(!t)return;let u=this.getVisualColumnIds().filter(i=>!Be(i)),r=this.getRows().filter(i=>i!==void 0&&i.kind==="data");t.matches=vh(r,u.map(i=>({id:i,def:this.columns.getDef(i)})),(i,s)=>this.columns.getCellValue(i,s),t.needle),t.index=new Map;for(let i of t.matches){let s=t.index.get(i.rowKey);s||t.index.set(i.rowKey,s=new Set),s.add(i.columnId)}if(t.active=t.matches.length===0?-1:0,!e||t.matches.length===0)return;let n=new Map(r.map((i,s)=>[i.key,s])),a=n.get(e.rowKey);if(a===void 0)return;let o=u.indexOf(e.columnId),l=t.matches.findIndex(i=>{let s=n.get(i.rowKey);return s>a||s===a&&u.indexOf(i.columnId)>=o});l!==-1&&(t.active=l)}emitFindChanged(){let e=this.getFindState();this.events.emit("findChanged",{text:e.text,count:e.count,activeIndex:e.activeIndex,active:e.active})}setRowPinning(e){this.rowPinning=e===!0?{}:e?{isRowPinnable:e.isRowPinnable}:null}isRowPinningEnabled(){return this.rowPinning!==null}canPinRow(e){if(!this.rowPinning)return!1;let t=this.pinnableRow(e);return t===void 0?!1:this.rowPinning.isRowPinnable?this.rowPinning.isRowPinnable(t)!==!1:!0}pinRow(e,t){if(this.getRowPinSide(e)===t)return!1;if(t!==null){let u=this.pinnableRow(e);if(u===void 0||this.rowPinning?.isRowPinnable&&this.rowPinning.isRowPinnable(u)===!1)return!1;this.pinnedSnapshot.set(e,u)}else this.pinnedSnapshot.delete(e);return this.pinned={top:this.pinned.top.filter(u=>u!==e),bottom:this.pinned.bottom.filter(u=>u!==e)},t&&(this.pinned[t]=[...this.pinned[t],e]),this.emitRowPinningChanged(),!0}getRowPinSide(e){return this.pinned.top.includes(e)?"top":this.pinned.bottom.includes(e)?"bottom":null}getPinnedRowKeys(){return{top:[...this.pinned.top],bottom:[...this.pinned.bottom]}}getPinnedRows(e){let t=[];for(let u of this.pinned[e]){let r=this.pinnableRow(u)??this.pinnedSnapshot.get(u);r!==void 0&&t.push({key:u,row:r})}return t}clearPinnedRows(){this.pinned.top.length===0&&this.pinned.bottom.length===0||(this.pinned={top:[],bottom:[]},this.pinnedSnapshot.clear(),this.emitRowPinningChanged())}pinnableRow(e){return this.sourceRowByKey(e)??this.getRowByKey(e)}prunePinnedRows(){if(this.rowModel.mode!=="client"||(this.rowModel.getSourceRows?.()??[]).length===0)return!1;let e=r=>this.sourceRowByKey(r)!==void 0,t=this.pinned.top.filter(e),u=this.pinned.bottom.filter(e);if(t.length===this.pinned.top.length&&u.length===this.pinned.bottom.length)return!1;for(let r of[...this.pinned.top,...this.pinned.bottom])e(r)||this.pinnedSnapshot.delete(r);return this.pinned={top:t,bottom:u},this.emitRowPinningChanged(),!0}emitRowPinningChanged(){this.events.emit("rowPinningChanged",this.getPinnedRowKeys())}flushPendingSession(){if(this.viewNodes.length!==0){if(this.pendingFocus){let{rowKey:e,columnId:t}=this.pendingFocus,u=this.rowAxis().indexOf(e)!==-1;!u&&this.rowModel.mode==="remote"||(this.pendingFocus=null,u&&this.columns.getOrder().includes(t)&&this.focusCell(e,t))}if(this.pendingScroll){let{top:e,left:t}=this.pendingScroll;this.pendingScroll=null,this.events.emit("scrollRequested",{scrollTop:e,scrollLeft:t})}}}notifyViewStateChanged(){this.disposed||this.events.emit("stateUpdated",{scope:"view",state:this.getViewState()})}setData(e){this.treeData?.childrenField&&(this.treeChildParents=new WeakMap,e=uo(e,this.treeData.childrenField,this.treeChildParents).rows),this.rowModel.setData?.(e),this.bumpDataEpoch();let t=this.keyGetter,u=new Set(e.map(r=>t(r)));this.selection.retainKeys(u)&&this.emitSelectionChanged(),this.events.emit("dataUpdated",{totalCount:e.length}),this.recompute()}moveRow(e,t,u="before"){if(this.rowModel.mode==="remote")return this.debugMode&&console.warn("[datagrid] moveRow is a local operation \u2014 the server owns the order of a remote grid. Persist the move from rowDrag.onReorder and let the grid re-query."),!1;if(this.getSort().length>0)return this.debugMode&&console.warn("[datagrid] moveRow ignored: a sort is active, so the sort decides the row order and the move would be invisible. Clear the sort, or keep an order field and update it from rowDrag.onReorder."),!1;let r=this.rowModel.getSourceRows?.()??[],n=Uf(r,e,t,u,this.keyGetter);return n.moved?(this.rowModel.setData?.(n.rows),this.bumpDataEpoch(),this.events.emit("rowsChanged",{added:0,updated:0,removed:0}),this.events.emit("dataUpdated",{totalCount:n.rows.length}),this.recompute(),!0):!1}applyTransaction(e){this.treeData?.childrenField&&e.add&&e.add.length>0&&(e={...e,add:uo(e.add,this.treeData.childrenField,this.treeChildParents).rows});let t=this.remote();if(t){let m=e.update??[];if(!((e.add?.length??0)>0||(e.remove?.length??0)>0)&&m.length>0&&this.remoteUpdateKeepsPlacement(m)){let c=t.patchRows(m);this.invalidateResultCaches(),this.events.emit("rowsChanged",{added:0,updated:c,removed:0}),this.events.emit("dataUpdated",{totalCount:t.getTotalCount()}),this.recompute(!0);return}t.invalidate(),this.recompute(!0),this.events.emit("rowsChanged",{added:0,updated:0,removed:0});return}let u=this.rowModel.getSourceRows?.()??[],r=this.keyGetter,n=new Set;if(e.update)for(let m of e.update)n.add(r(m));let a=new Map;if(n.size>0)for(let m=0;m<u.length;m++){let c=r(u[m]);n.has(c)&&a.set(c,m)}let o=u.slice(),l=0,i=0,s=[];if(e.update)for(let m of e.update){let c=a.get(r(m));c!==void 0&&(o[c]=m,s.push(c),l++)}if(e.remove&&e.remove.length>0){let m=new Set(e.remove.map(p=>Ln(p)?p:r(p))),c=o.filter(p=>!m.has(r(p)));i=o.length-c.length,o=c}let h=e.add?.length??0;if(h>0){let m=e.addBeforeKey===void 0?-1:o.findIndex(p=>r(p)===e.addBeforeKey),c=e.add;m>=0?o=o.slice(0,m).concat(c,o.slice(m)):e.addPosition==="first"?o=c.concat(o):o=o.concat(c)}if(!(i>0||h>0)&&this.rowModel.patchData&&!this.columns.hasCellFormulas()?this.rowModel.patchData(o,s,this.columns):this.rowModel.setData?.(o),this.bumpDataEpoch(),i>0){let m=new Set(o.map(c=>r(c)));this.selection.retainKeys(m)&&this.emitSelectionChanged()}this.events.emit("rowsChanged",{added:h,updated:l,removed:i}),this.events.emit("dataUpdated",{totalCount:o.length}),this.recompute(!0)}applyTransactionAsync(e,t){this.disposed||(this.asyncQueue.push(e),t&&this.asyncCallbacks.push(t),this.asyncTimer===null&&(this.asyncTimer=setTimeout(()=>{this.asyncTimer=null,this.flushAsyncTransactions()},this.asyncTransactionWait)))}flushAsyncTransactions(){if(this.asyncTimer!==null&&(clearTimeout(this.asyncTimer),this.asyncTimer=null),this.asyncQueue.length===0)return;let e=this.asyncQueue,t=this.asyncCallbacks;this.asyncQueue=[],this.asyncCallbacks=[];let u=D4(e,this.keyGetter);S4(u)||this.applyTransaction(u),this.events.emit("asyncTransactionsFlushed",{count:e.length});for(let r of t)r()}getPendingAsyncTransactionCount(){return this.asyncQueue.length}remoteUpdateKeepsPlacement(e){let{sort:t,searchText:u,groupBy:r}=this.store.getState(),n=zo(this.columns,{sort:xn(t,r),filter:this.runningFilter(),searchText:u});if(n.length===0)return!0;for(let a of e){let o=this.getRowByKey(this.keyGetter(a));if(!o)return!1;for(let l of n){let i=this.columns.getCellValue(o,l),s=this.columns.getCellValue(a,l);if(!Object.is(i,s))return!1}}return!0}getRowKeyField(){return this.rowKeyField}getRowKey(e){return this.keyGetter(e)}invalidate(e={}){this.rowModel.invalidate?.(),this.bumpDataEpoch(),this.recompute(e.background===!0)}isRowLoadFailed(e){return this.remote()?.isLoadFailed(e)??!1}retryFailedLoads(){return this.remote()?.retryFailed()?(this.recompute(!0),!0):!1}isRemote(){return this.rowModel.mode==="remote"}refresh(){return this.recompute()}flashCells(e={}){this.events.emit("cellsFlashed",{rowKeys:[...e.rowKeys??[]],columnIds:[...e.columnIds??[]],duration:e.duration??700})}refreshCells(){this.cellRevision++,this.events.emit("cellsRefreshed",{revision:this.cellRevision})}isDisposed(){return this.disposed}dispose(){this.disposed||(this.events.emit("gridPreDestroyed",{state:this.getViewState()}),this.disposed=!0,this.unsubscribeStore(),this.scrollEndTimer!==null&&(clearTimeout(this.scrollEndTimer),this.scrollEndTimer=null),this.asyncTimer!==null&&(clearTimeout(this.asyncTimer),this.asyncTimer=null),this.asyncQueue=[],this.asyncCallbacks=[],this.rowModel.dispose?.(),this.events.clear(),this.lastResult={nodes:[],visibleCount:0,totalCount:0},this.viewNodes=[],this.allViewNodes=[],this.summaryValues={},this.rowIndexCache=null,this.invalidateResultCaches())}serverSummaryRequests(){if(this.summaryDefs.length===0)return;let e=[];for(let t of this.summaryDefs)t.type!=="custom"&&e.push({columnId:t.columnId,type:t.type});return e.length>0?e:void 0}neededRange(){if(this.paginationEnabled){let{page:u,pageSize:r}=this.store.getState(),n=u*r;return{start:n,end:n+r}}let e=this.virtual.getWindow().rows,t=Math.max(1,e.end-e.start);return{start:Math.max(0,e.start-t),end:e.end+t}}getBusy(){return this.busy}foregroundDepth=0;setBusy(e,t,u=!0){let r=e!==null,n=r&&u,a=r&&this.foregroundDepth===0;this.busy.busy===r&&this.busy.phase===e&&this.busy.progress===t&&this.busy.cancellable===n&&this.busy.background===a||(this.busy={busy:r,phase:e,progress:t,cancellable:n,background:a},this.events.emit("busyChanged",this.busy))}async withBusy(e,t,u=!1){this.busyDepth++,u||this.foregroundDepth++,this.setBusy(e,null);try{return await t()}finally{this.busyDepth--,u||this.foregroundDepth--,this.busyDepth===0&&this.setBusy(null,null)}}cancel(){this.disposed||(this.computeToken++,this.exportToken++,this.exportAbort?.abort(),this.exportAbort=null,this.rowModel instanceof Tn&&this.rowModel.cancel())}async recompute(e=!1){if(!this.disposed)return this.withBusy("computing",()=>this.recomputeInner(),e)}async recomputeInner(){let e=++this.computeToken,{sort:t,searchText:u,groupBy:r}=this.store.getState(),n=this.runningFilter(),a=xn(t,r),o,l=performance.now();try{o=await this.rowModel.getRows(this.columns,{sort:a,filter:n,searchText:u,externalFilter:this.externalFilter,absoluteSort:dd(this.columns,a,r),range:this.lastRemoteRange=this.neededRange(),summaries:this.serverSummaryRequests()})}catch(C){!(C instanceof St)&&!(C instanceof Gn)&&(this.events.emit("dataError",{error:C}),this.debugMode&&console.error("[datagrid] row model failed",C));return}if(e!==this.computeToken||this.disposed)return;this.postSort&&this.rowModel.mode==="client"&&(o=this.applyPostSort(o,t,r));let i=Math.round(performance.now()-l),s=performance.now(),h=this.remote();if(h)this.summaryValues=this.summaryDefs.length>0?h.getSummaries():{},this.summaryBasis=null;else if(this.summaryDefs.length>0){let C=this.currentSummaryBasis(n,u),E=this.summaryBasis===C,D=E?this.summaryDefs.filter(F=>F.type==="custom"&&F.dependsOnOrder!==!1):this.summaryDefs;D.length>0?this.runSummaryPass(o.nodes,D,E,C,e):this.summaryBasis=C}else this.summaryValues={},this.summaryBasis=null;let m=Math.round(performance.now()-s);this.lastResult=o,this.invalidateResultCaches(),this.reconcileSelectable();let c=performance.now();this.projectView();let p=this.rowModel.getLastTimings?.();this.lastComputeTimings={modelMs:i,summaryMs:m,projectViewMs:Math.round(performance.now()-c),...p}}applyPostSort(e,t,u){let r=this.postSort,n=e.nodes;if(!r||n.length===0)return e;let a=t.map(i=>({...i})),o=[];if(u.length>0&&!this.treeData){let i=us(n,this.columns,{columnIds:u,locale:this.locale}),s=h=>{for(let m of h)m.children?s(m.children):o.push({from:m.from,to:m.to,group:{key:m.key,columnId:m.columnId,value:m.value,label:m.label,level:m.level}})};s(i.roots)}else o.push({from:0,to:n.length,group:null});let l=null;for(let i of o){let s=n.slice(i.from,i.to),h=s.map(C=>C.data),m;try{m=r(h,{sort:a,group:i.group})}catch(C){this.warnPostSort("it threw",C);continue}let c=Array.isArray(m)?m:h,p=_p(s,c);if(p===null){this.warnPostSort("it returned a different set of rows than it was given");continue}if(p!==s){l??=n.slice();for(let C=0;C<p.length;C++)l[i.from+C]=p[C]}}return l?{...e,nodes:l}:e}warnPostSort(e,t){this.warnedPostSort||(this.warnedPostSort=!0,console.warn(`[datagrid] sorting.postSort was ignored because ${e}. It may only rearrange the rows it is given \u2014 rearrange the array in place or return those same rows.`,...t===void 0?[]:[t]))}setPostSort(e){this.postSort=e,this.warnedPostSort=!1,this.recompute()}getComputeTimings(){return this.lastComputeTimings}projectView(){if(this.disposed)return;let e=this.store.getState(),t=e.groupBy,u=this.focus.getIndices(this.focusContext())?.rowIndex,r=this.treeView();r&&t.length>0&&!this.warnedTreeGrouping&&(this.warnedTreeGrouping=!0,this.debugMode&&console.warn("[datagrid] `tree` and grouping are mutually exclusive \u2014 grouping is ignored."));let n=r??(t.length>0&&this.rowModel.mode==="client"?v4(this.ensureGroupTree(t),{collapsedKeys:this.store.collapsedSet(),collapsedByDefault:this.collapsedByDefault}).nodes:this.lastResult.nodes),a=this.masterDetail?tm(n,{expandedKeys:this.store.expandedSet(),expandedByDefault:this.masterDetail.expandedByDefault,height:this.masterDetail.height}):n,o=this.editForm?um(a,{rowKey:this.editForm.rowKey,height:this.editForm.height,atTop:this.editForm.atTop}):a,l=this.messageRows?nm(o,{rowKeys:this.messageRows.keys,height:this.messageRows.height}):o;if(this.allViewNodes=l,this.infiniteScroll)this.infiniteLimit=Math.min(this.infiniteLimit,Math.max(this.infinitePageSize,l.length)),this.viewNodes=l.slice(0,this.infiniteLimit);else if(this.paginationEnabled){let{pageSize:s}=e,h=this.store.clampPage(Math.ceil(l.length/s))*s;this.viewNodes=l.slice(h,h+s)}else this.viewNodes=l;this.rowIndexCache=null,this.rebuildRowHeights();let i=this.virtual.setRowCount(this.viewNodes.length);this.rowModel.mode==="remote"&&this.fetchUncoveredWindow(),this.focus.reconcile(this.focusContext(),u)&&this.emitFocusChanged(),this.events.emit("contentReady",{rows:this.lastResult.nodes,totalCount:this.lastResult.totalCount,visibleCount:this.lastResult.visibleCount}),this.emitPaginationChanged(!0),this.flushPendingSession(),!this.firstDataRenderedSent&&this.viewNodes.length>0&&(this.firstDataRenderedSent=!0,this.events.emit("firstDataRendered",{rowCount:this.viewNodes.length})),this.emitIfWindowChanged(i)}treeView(){if(!this.treeData||!this.treeParent||this.rowModel.mode!=="client")return null;let e=this.rowModel.getSourceRows?.();if(!e)return null;if(!this.treeIndex||this.treeIndexEpoch!==this.dataEpoch){let t=this.treeData.getDataPath;this.treeIndex=t?a4(e,this.keyGetter,t):i4(e,this.keyGetter,this.treeParent),this.treeIndexEpoch=this.dataEpoch}return s4(this.dataNodes(),{index:this.treeIndex,sourceRows:e,isExpanded:t=>this.isTreeRowExpanded(t)}).nodes}isTreeRowExpanded(e){return this.treeExpandedByDefault!==this.treeToggled.has(e)}expandTreeRow(e){this.setTreeRowExpanded(e,!0)}collapseTreeRow(e){this.setTreeRowExpanded(e,!1)}toggleTreeRow(e){this.setTreeRowExpanded(e,!this.isTreeRowExpanded(e))}setTreeRowExpanded(e,t){this.treeData&&this.isTreeRowExpanded(e)!==t&&(t===this.treeExpandedByDefault?this.treeToggled.delete(e):this.treeToggled.add(e),this.reprojectTree(),this.events.emit("treeRowToggled",{rowKey:e,expanded:t}))}expandAllTreeRows(){this.treeData&&(this.treeExpandedByDefault=!0,this.treeToggled.clear(),this.reprojectTree(),this.events.emit("treeRowToggled",{rowKey:null,expanded:!0}))}collapseAllTreeRows(){this.treeData&&(this.treeExpandedByDefault=!1,this.treeToggled.clear(),this.reprojectTree(),this.events.emit("treeRowToggled",{rowKey:null,expanded:!1}))}reprojectTree(){this.rowModel.isTree?.()?this.recompute():this.reproject()}reproject(){if(!this.disposed){this.busyDepth++,this.setBusy("projecting",null);try{this.projectView()}finally{this.busyDepth--,this.busyDepth===0&&this.setBusy(null,null)}}}emitSortChanged(){this.resetReveal(),this.events.emit("sortChanged",{sort:this.store.getState().sort})}layoutRuntime(e={}){let t=this.columns.runtime(e),u=this.store.getState().groupBy;if(this.groupDisplay==="column"){let r=t.find(n=>n.state.id===Gu);t=t.filter(n=>n.state.id!==Gu),r&&u.length>0&&(t=[r,...t])}return this.showGroupedColumns||u.length===0?t:t.filter(r=>!u.includes(r.state.id))}rebuildRowHeights(){let e=this.measuredRowHeights,t=this.masterDetail!==null||this.editForm!==null;if(!this.getRowHeightFn&&!t&&e.size===0&&this.dataRowHeight===null)return this.virtual.setRowHeights(null);let u=this.virtual.getRowHeight(),r=this.viewNodes,n=new Map;for(let a=0;a<r.length;a++){let o=r[a],l;o===void 0?l=this.dataRowHeight??void 0:o.kind==="detail"||o.kind==="editform"||o.kind==="message"?l=o.height:o.kind==="data"&&this.dataRowHeight!==null?l=this.dataRowHeight:l=e.get(o.key)??this.getRowHeightFn?.(o,a),l!==void 0&&l!==u&&n.set(a,Math.max(1,l))}return this.virtual.setRowHeights(n)}setMeasuredRowHeights(e){let t=e.size!==this.measuredRowHeights.size;if(!t){for(let[r,n]of e)if(this.measuredRowHeights.get(r)!==n){t=!0;break}}if(!t)return!1;this.measuredRowHeights=new Map(e);let u=this.rebuildRowHeights();return this.emitIfWindowChanged(u),u}getMeasuredRowHeights(){return this.measuredRowHeights}clearMeasuredRowHeights(){if(this.measuredRowHeights.size===0)return!1;this.measuredRowHeights=new Map;let e=this.rebuildRowHeights();return this.emitIfWindowChanged(e),e}getRowHeightAt(e){return this.virtual.getRowHeightAt(e)}getRowOffset(e){return this.virtual.getRowOffset(e)}getCellSpans(e){let t=this.columns.getDef(e)?.spanRows;if(!t)return Wp;this.spanCacheResult!==this.lastResult&&(this.spanCache.clear(),this.spanCacheResult=this.lastResult);let u=this.spanCache.get(e);if(u)return u;let r=wh(this.lastResult.nodes,n=>this.columns.getCellValue(n,e),typeof t=="function"?t:void 0);return this.spanCache.set(e,r),r}hasCellSpans(){return this.columns.runtime().some(e=>e.def.spanRows)}applyFlex(){if(!(this.viewportWidth>0))return!1;let e=this.layoutRuntime(),t=e.filter(i=>(i.state.flex??0)>0);if(t.length===0)return!1;let u=this.viewportWidth-this.leadWidth;for(let i of e)(i.state.flex??0)>0||(u-=i.state.width);let r=new Map,n=new Set(t);for(let i=0;i<=t.length&&n.size>0;i++){let s=0;for(let c of n)s+=c.state.flex??0;let h=Math.max(0,u)/s,m=!1;for(let c of[...n]){let p=(c.state.flex??0)*h,C=Math.max(c.def.minWidth??tr,tr),E=c.def.maxWidth??Number.POSITIVE_INFINITY;if(p<C||p>E){let D=Math.min(Math.max(p,C),E);r.set(c.state.id,D),n.delete(c),u-=D,m=!0}else r.set(c.state.id,p)}if(!m)break}let a=0;for(let i of t)a+=r.get(i.state.id)??0;let o=0,l=!1;return t.forEach((i,s)=>{let h=s===t.length-1?Math.round(a)-o:Math.round(r.get(i.state.id)??0);o+=h,h!==i.state.width&&(this.columns.setWidth(i.state.id,h),l=!0)}),l}emitColumnStateChanged(){this.applyFlex();let e=this.virtual.setColumnLayout(gs(this.layoutRuntime()));this.events.emit("columnStateChanged",{columns:this.columns.getColumnStates()}),this.emitIfWindowChanged(e)}emitIfWindowChanged(e){return e&&!this.disposed&&(this.events.emit("viewportChanged",{window:this.virtual.getWindow()}),this.maybeRevealMore()),e}maybeRevealMore(){if(!this.infiniteScroll||this.disposed)return;let e=this.virtual.getWindow().rows,t=Math.max(1,e.end-e.start);e.end+t<this.infiniteLimit||this.revealMore()}assertColumn(e){let t=!!this.columns.getState(e);return!t&&this.debugMode&&console.error(`[datagrid] unknown column id "${e}".`),t}};function Jp(e){return e==="CONCAT"?"_xlfn.CONCAT":e}var gi={compact:24,normal:28,comfortable:36},eg=["minimal","ledger","elevated","framed","kanuni","kanuni-midnight"];function Ci(e){return e!==void 0&&eg.includes(e)}var wi={minimal:{compact:26,normal:36,comfortable:44},ledger:{compact:20,normal:25,comfortable:32},elevated:{compact:32,normal:40,comfortable:52},framed:{compact:26,normal:34,comfortable:42},kanuni:{compact:24,normal:32,comfortable:40},"kanuni-midnight":{compact:24,normal:32,comfortable:40}};var wd=["porcelain","ivory","stone","mist","glacier","slate","linen","sandstone","taupe","azure","indigo","teal","lagoon","emerald","orchid","rose","amber","coral","corporate","editorial","monochrome","contrast-light","charcoal","graphite","onyx","slate-night","steel","midnight","indigo-night","forest","deep-sea","aubergine","burgundy","ember","contrast-dark","terminal"];function ra(e,t,u){return Ci(e)?wi[e][t??"normal"]:t?gi[t]:u}var tg={today:"periodToday",yesterday:"periodYesterday",tomorrow:"periodTomorrow",thisWeek:"periodThisWeek",lastWeek:"periodLastWeek",nextWeek:"periodNextWeek",thisMonth:"periodThisMonth",lastMonth:"periodLastMonth",nextMonth:"periodNextMonth",thisQuarter:"periodThisQuarter",lastQuarter:"periodLastQuarter",nextQuarter:"periodNextQuarter",thisYear:"periodThisYear",lastYear:"periodLastYear",nextYear:"periodNextYear",yearToDate:"periodYearToDate",lastDays:"periodLastDays",nextDays:"periodNextDays"};function yi(e){let t={};for(let u of Gr)t[u]=String(e[tg[u]]);return t}var a0=yi(ri),o0=e=>e.trim().replace(/\s+/g," ").toLocaleLowerCase();function ug(e,t){let u=o0(e);for(let r of t?[t,a0]:[a0])for(let n of Gr){let a=o0(r[n]);if(!a.includes("{n}")){if(u===a)return{period:n};continue}let[o,l]=a.split("{n}");if(u.startsWith(o)&&u.endsWith(l)){let i=u.slice(o.length,u.length-l.length).trim(),s=/^\d+$/.test(i)?Number(i):Number.NaN;if(Number.isInteger(s)&&s>=1)return{period:n,days:s}}}return null}function yd(e){let t=[];for(let u of Gr)if(u==="lastDays")for(let r of[7,30,90])t.push(e.lastDays.replace("{n}",String(r)));else if(u==="nextDays")for(let r of[7,30])t.push(e.nextDays.replace("{n}",String(r)));else t.push(e[u]);return t}var rg=[">=","<=","<>",">","<","="],ng=/^[+-]?\d+$/;function Ed(e,t,u,r){let n=t.trim();if(n==="")return null;if(u==="date"){let a=ug(n,r);if(a)return{columnId:e,operator:"period",value:a}}for(let a of rg)if(n.startsWith(a)){let o=n.slice(a.length).trim();if(o==="")return null;let l=u==="number"?Number(o):Number.NaN;return{columnId:e,operator:a,value:Number.isNaN(l)?o:l}}if(u==="bigint")return ng.test(n)?{columnId:e,operator:"=",value:n}:{columnId:e,operator:"contains",value:n};if(u==="number"){let a=Number(n);return Number.isNaN(a)?{columnId:e,operator:"contains",value:n}:{columnId:e,operator:"=",value:a}}if(u==="boolean"){let a=n.toLowerCase();return a==="true"||a==="false"?{columnId:e,operator:"=",value:a==="true"}:{columnId:e,operator:"contains",value:n}}return u==="date"?{columnId:e,operator:"contains",value:n}:{columnId:e,operator:"contains",value:n}}function bd(e,t,u){return(u.operandType??"text")==="none"?{columnId:e,operator:u.id}:t.trim()===""?null:{columnId:e,operator:u.id,value:eh(u,t)}}function Ei(e,t){if(!e||Je(e))return null;let u=fu(t,e.operator);if(!u)return null;let r=e.value;return(u.operandType??"text")==="none"||r===null||r===void 0?{operatorId:u.id,text:""}:{operatorId:u.id,text:typeof r=="object"?JSON.stringify(r):String(r)}}var ag=24;var Pg={line:"",area:"",bars:[],baselineY:ag/2,horizontal:!1,baselineX:0,last:null,lastValue:null,count:0,points:[],lone:[],first:null,min:null,max:null};function Ad(e,t){if(e.scrollHeight<1e6)return null;let u=e.scrollTop;e.scrollTop=1e8;let r=e.scrollTop;if(e.scrollTop=u,r<=0)return null;let n=t.getVirtualWindow().rows.totalHeight-e.clientHeight;return r>=n-4?null:(t.setMaxScrollOffset(r),r)}var xd="data-kanuni-portal";function og(e){return(typeof e=="function"?e():e)??document.body}var i0=new WeakMap,Yo=new Set,l0=!1;function ig(){for(let e of Yo)e.isConnected?vd(e):Yo.delete(e)}function qt(e){let t=og(e);if(t===document.body)return t;let u=i0.get(t);return(!u||u.parentNode!==t)&&(u=document.createElement("div"),u.className="kanuni-datagrid-portal-host",u.setAttribute(xd,"host"),u.style.cssText="position:fixed;left:0;top:0;width:100vw;height:100vh;overflow:visible;pointer-events:none;z-index:2147483000;",t.appendChild(u),i0.set(t,u),Yo.add(u),!l0&&typeof window<"u"&&(l0=!0,window.addEventListener("resize",ig))),vd(u),u}function vd(e){e.style.transform="none";let t=e.getBoundingClientRect();e.style.transform=`translate(${-t.left}px, ${-t.top}px)`}var qn=new WeakMap;function Fd(e,t){qn.set(e,t)}function nr(e){for(let t=e??null;t;t=t.parentElement)if(qn.has(t))return qn.get(t)}function jt(e,t,u="popup"){return e.setAttribute(xd,u),t!==void 0&&(qn.set(e,t),e.style.pointerEvents="auto"),e}function Dd(e,t,u=7){let r=Number.isFinite(t)?Math.max(0,Math.floor(t)):0;if(r===0)return[];let n=Math.max(5,Number.isFinite(u)?Math.floor(u):7),a=Math.min(r-1,Math.max(0,Number.isFinite(e)?Math.floor(e):0)),o=(h,m)=>{let c=[];for(let p=h;p<=m;p++)c.push(p);return c};if(r<=n)return o(0,r-1);let l=r-1;if(a<=n-4)return[...o(0,n-3),"gapEnd",l];if(a>=l-(n-4))return[0,"gapStart",...o(l-(n-3),l)];let i=n-4,s=a-Math.floor((i-1)/2);return[0,"gapStart",...o(s,s+i-1),"gapEnd",l]}var lg=600,sg=21,dg=22,cg=20;function Sd(e){if(!e)return null;let t=e===!0?{}:e;return{breakpoint:typeof t.breakpoint=="number"&&t.breakpoint>0?t.breakpoint:lg,columns:Array.isArray(t.columns)&&t.columns.length?[...t.columns]:null}}function kd(e,t){return t!==null&&e>0&&e<t.breakpoint}function Bd(e){let t=e.closest(".kanuni-datagrid-main");return t instanceof HTMLElement&&t.clientWidth>0?t.clientWidth:e.clientWidth}function Td(e,t){let u=e.getOrder();return t.columns?t.columns.filter(r=>u.includes(r)):u.filter(r=>e.isShown(r))}var hg=44;function Rd(e){return Math.max(hg,sg+dg+Math.max(0,e-1)*cg)}function Nd(e,t,u){return t.map(r=>{let n=e.getDef(r);return{columnId:r,label:n?.headerName??r,text:cu(n,e.getCellValue(u,r),u)}})}function Md(e){let t=e.margin??8,{anchor:u,width:r,height:n,viewportWidth:a,viewportHeight:o}=e,l=r>0?Math.max(t,Math.min(u.left,a-r-t)):Math.max(t,u.left);if(n<=0)return{left:l,top:u.bottom,flipped:!1};let i=o-u.bottom-t,s=u.top-t;return n<=i?{left:l,top:u.bottom,flipped:!1}:n<=s?{left:l,top:u.top-n,flipped:!0}:{left:l,top:Math.max(t,Math.min(u.bottom,o-n-t)),flipped:!1}}function na(e,t){let{controller:u,maxGroupLevels:r,t:n}=t,a=e.columnId,o=u.getColumnModel().getDef(a),l=u.getSort(),i=l.find(k=>k.columnId===a),s=u.getGroupLevels(),h=s.includes(a),m=o?.sortable!==!1,c=u.getColumnStates().find(k=>k.id===a)?.pinned??null,p=o?.groupable!==!1,C=u.canGroup(),E=[{id:"sort-asc",label:n.sortAsc,disabled:!m||i?.direction==="asc",onSelect:()=>u.setSort([{columnId:a,direction:"asc"}])},{id:"sort-desc",label:n.sortDesc,disabled:!m||i?.direction==="desc",onSelect:()=>u.setSort([{columnId:a,direction:"desc"}])},{id:"sort-clear",label:n.clearSort,disabled:!i,onSelect:()=>u.setSort(l.filter(k=>k.columnId!==a))},{id:"sep-1",separator:!0},{id:"group",label:h?n.ungroupColumn:n.groupByColumn,disabled:!p,onSelect:()=>{h?u.groupBy(s.filter(k=>k!==a)):u.groupBy([...s,a].slice(-r))}},{id:"group-panel",label:t.groupPanelVisible?n.hideGroupPanel:n.showGroupPanel,onSelect:t.onToggleGroupPanel},{id:"footer",label:t.footerVisible?n.hideFooter:n.showFooter,onSelect:t.onToggleFooter},{id:"sep-2",separator:!0},{id:"hide-column",label:n.hideColumn,disabled:u.getColumnStates().filter(k=>k.visible).length<=1,onSelect:()=>u.setColumnVisible(a,!1)},{id:"field-chooser",label:n.fieldChooser,onSelect:t.onOpenFieldChooser},{id:"sep-3",separator:!0},{id:"best-fit",label:n.bestFit,disabled:o?.resizable===!1,onSelect:()=>t.onBestFit(a)},{id:"best-fit-all",label:n.bestFitAll,onSelect:t.onBestFitAll}],D=u.getColumnStates().filter(k=>k.visible&&k.pinned===c).map(k=>k.id),F=D.indexOf(a),x=o?.reorderable!==!1&&F>=0;return E.push({id:"sep-4",separator:!0},{id:"move-left",label:n.moveLeft,disabled:!x||F<=0,onSelect:()=>u.moveColumn(a,D[F-1])},{id:"move-right",label:n.moveRight,disabled:!x||F<0||F>=D.length-1,onSelect:()=>u.moveColumn(a,D[F+2])},{id:"fixed-position",label:n.fixedPosition,items:[{id:"pin-left",label:n.pinLeft,disabled:c==="left",onSelect:()=>u.setColumnPinned(a,"left")},{id:"pin-right",label:n.pinRight,disabled:c==="right",onSelect:()=>u.setColumnPinned(a,"right")},{id:"pin-sticky",label:n.pinSticky,disabled:c==="sticky",onSelect:()=>u.setColumnPinned(a,"sticky")}]},{id:"unpin",label:n.unpin,disabled:c===null,onSelect:()=>u.setColumnPinned(a,null)}),C?E:E.filter(k=>k.id!=="group"&&k.id!=="group-panel")}async function bi(e,t){try{let u=t==="csv"?await e.exportToCsv():t==="excel"?await e.exportToExcel():t==="excel-selected"?await e.exportToExcel({selectedOnly:!0}):await e.exportToPdf();return id(u.blob,u.fileName),{completed:!0}}catch(u){return u instanceof et?{completed:!1}:{completed:!1,error:u instanceof Error?u.message:String(u)}}}var Id=null;function mg(){return typeof document>"u"?null:(Id??=document.createElement("canvas"),Id.getContext("2d"))}function Ld(e){let t=getComputedStyle(e);return`${t.fontStyle} ${t.fontWeight} ${t.fontSize} ${t.fontFamily}`}function fg(e){for(let t=e.firstElementChild;t;t=t.nextElementSibling)if(t.tagName!=="MARK")return!0;return!1}function pg(e){let t=e.map(r=>[r.style.width,r.style.minWidth,r.style.maxWidth]);for(let r of e)r.style.width="max-content",r.style.minWidth="0",r.style.maxWidth="none";let u=0;for(let r of e){let n=Math.ceil(r.getBoundingClientRect().width);n>u&&(u=n)}return e.forEach((r,n)=>{[r.style.width,r.style.minWidth,r.style.maxWidth]=t[n]}),u}function aa(e,t){let u=mg();if(!u)return null;let r=typeof CSS<"u"&&CSS.escape?CSS.escape(t):t.replace(/"/g,'\\"'),n=e.querySelector(`.kanuni-datagrid-header-cell[data-column-id="${r}"]`),a=e.querySelectorAll(`.kanuni-datagrid-cell[data-column-id="${r}"]`);if(!n&&a.length===0)return null;let o=0;if(n){let l=n.querySelector(".kanuni-datagrid-header-label")??n;u.font=Ld(l),o=u.measureText(l.textContent??"").width+44}if(a.length>0){u.font=Ld(a[0]);let l=[];for(let i=0;i<a.length;i++){if(fg(a[i])){l.push(a[i]);continue}let s=a[i].textContent??"";if(s==="")continue;let h=u.measureText(s).width+20;h>o&&(o=h)}l.length>0&&(o=Math.max(o,pg(l)))}return o===0?null:Math.round(Math.min(640,Math.max(48,o)))}function Gd(e){let t=Number(e.weekStartsOn);return Number.isInteger(t)&&t>=0&&t<=6?t:0}function gg(e){let t=[e.weekdaySu,e.weekdayMo,e.weekdayTu,e.weekdayWe,e.weekdayTh,e.weekdayFr,e.weekdaySa],u=Gd(e);return[...t.slice(u),...t.slice(0,u)]}function Cg(e){return[e.monthJanuary,e.monthFebruary,e.monthMarch,e.monthApril,e.monthMay,e.monthJune,e.monthJuly,e.monthAugust,e.monthSeptember,e.monthOctober,e.monthNovember,e.monthDecember]}function wg(e,t){return!e||!t?!1:e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}var Pd="http://www.w3.org/2000/svg";function yg(){let e=document.createElementNS(Pd,"svg");e.setAttribute("width","14"),e.setAttribute("height","14"),e.setAttribute("viewBox","0 0 16 16"),e.setAttribute("aria-hidden","true"),e.setAttribute("focusable","false");let t=document.createElementNS(Pd,"path");return t.setAttribute("d","M3 4h10v9H3z M3 6.5h10 M5.5 2.5v2 M10.5 2.5v2"),t.setAttribute("fill","none"),t.setAttribute("stroke","currentColor"),t.setAttribute("stroke-width","1.3"),t.setAttribute("stroke-linecap","round"),e.appendChild(t),e}function gu(e){let{t,format:u=p0,autoFocus:r=!0}=e,n=Cg(t),a=gg(t),o=document.createElement("span");o.className="kanuni-datagrid-date-editor";let l=document.createElement("input");l.type="text",l.inputMode="numeric",l.autocomplete="off",l.placeholder=u,e.ariaLabel&&l.setAttribute("aria-label",e.ariaLabel),e.testId&&l.setAttribute("data-testid",e.testId),e.columnId&&l.setAttribute("data-column-id",e.columnId),e.disabled&&(l.disabled=!0);let i=null,s=!1,h=null,m=Xn(e.value),c=m??new Date,p=()=>i===null?Tt(e.value,u):Pr(i,u),C=()=>i===null?null:g0(Pr(i,u),u),E=()=>i!==null&&i.length===Yn(u)&&C()===null,D=()=>{let j=E()||!!e.invalid;l.className=`kanuni-datagrid-editor${j?" kanuni-datagrid-editor--invalid":""}`,j?l.setAttribute("aria-invalid","true"):l.removeAttribute("aria-invalid")};l.value=p(),D();let F=j=>{if(j===null){e.onChange(null);return}e.onChange(e.value instanceof Date?j:Zn(j))},x=()=>{if(!h)return;if(!l.isConnected){O();return}let j=l.getBoundingClientRect(),J=Md({anchor:{left:j.left,top:j.top,bottom:j.bottom},width:h.offsetWidth,height:h.offsetHeight,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight});h.style.left=`${J.left}px`,h.style.top=`${J.top}px`},k=()=>x();function M(){if(!h)return;h.textContent="";let j=document.createElement("div");j.className="kanuni-datagrid-date-popup-head";let J=document.createElement("button");J.type="button",J.setAttribute("aria-label",t.datePreviousMonth),J.setAttribute("data-testid","dg-date-prev"),J.textContent="\u2039",J.addEventListener("click",()=>{c=new Date(c.getFullYear(),c.getMonth()-1,1),M()});let ee=document.createElement("span");ee.setAttribute("data-testid","dg-date-title"),ee.textContent=`${n[c.getMonth()]} ${c.getFullYear()}`;let re=document.createElement("button");re.type="button",re.setAttribute("aria-label",t.dateNextMonth),re.setAttribute("data-testid","dg-date-next"),re.textContent="\u203A",re.addEventListener("click",()=>{c=new Date(c.getFullYear(),c.getMonth()+1,1),M()}),j.append(J,ee,re);let B=document.createElement("div");B.className="kanuni-datagrid-date-popup-grid",B.setAttribute("role","grid");for(let me of a){let oe=document.createElement("span");oe.className="kanuni-datagrid-date-weekday",oe.setAttribute("role","columnheader"),oe.textContent=me,B.appendChild(oe)}let q=(new Date(c.getFullYear(),c.getMonth(),1).getDay()-Gd(t)+7)%7,Ce=Jo(c.getFullYear(),c.getMonth()+1);for(let me=0;me<42;me++){let oe=me-q+1,de=new Date(c.getFullYear(),c.getMonth(),oe),ye=oe<1||oe>Ce,Fe=wg(de,C()??m),ie=document.createElement("button");ie.type="button",ie.setAttribute("role","gridcell"),ie.className=`kanuni-datagrid-date-day${ye?" kanuni-datagrid-date-day--outside":""}${Fe?" kanuni-datagrid-date-day--selected":""}`,ie.setAttribute("aria-selected",String(Fe)),ie.setAttribute("data-testid","dg-date-day"),ie.setAttribute("data-date",Zn(de)),ie.textContent=String(de.getDate()),ie.addEventListener("click",()=>G(de)),B.appendChild(ie)}h.append(j,B)}function z(){if(s)return;s=!0,Y.setAttribute("aria-expanded","true"),c=C()??m??new Date,h=document.createElement("div"),h.className=`kanuni-datagrid-detached kanuni-datagrid-date-popup${e.surfaceClass?` ${e.surfaceClass}`:""}`,h.style.position="fixed",h.setAttribute("data-testid","dg-date-calendar"),h.setAttribute("role","dialog"),h.setAttribute("aria-label",e.ariaLabel?`${e.ariaLabel} ${t.dateCalendar}`:t.dateCalendar),h.addEventListener("mousedown",J=>J.preventDefault());let j=nr(o);qt(j).appendChild(jt(h,j)),window.addEventListener("scroll",k,!0),window.addEventListener("resize",k),e.onPortalOpen?.(O),M(),x()}function O(){s&&(s=!1,Y.setAttribute("aria-expanded","false"),window.removeEventListener("scroll",k,!0),window.removeEventListener("resize",k),h?.remove(),h=null)}function G(j){i=null,O(),F(j),l.value=Tt(e.value instanceof Date?j:Zn(j),u),D(),l.focus({preventScroll:!0})}function W(){if(i===null)return;if(i.length===0){F(null),i=null,l.value=p(),D();return}let j=C();j&&F(j),i=null,l.value=p(),D()}l.addEventListener("input",()=>{i=Qn(l.value,u),l.value=Pr(i,u),D()}),l.addEventListener("keydown",j=>{if(j.key==="Escape"){if(j.preventDefault(),j.stopPropagation(),s){O();return}i=null,e.onCancel();return}if(s){let J=j.key==="ArrowLeft"?-1:j.key==="ArrowRight"?1:j.key==="ArrowUp"?-7:j.key==="ArrowDown"?7:0;if(J!==0){j.preventDefault(),j.stopPropagation();let ee=C()??m??new Date,re=new Date(ee.getFullYear(),ee.getMonth(),ee.getDate()+J);i=Qn(Tt(re,u),u),l.value=Pr(i,u),c=re,M(),D();return}if(j.key==="Enter"){j.preventDefault(),j.stopPropagation();let ee=C();O(),ee&&G(ee);return}}if(j.key==="Enter"){j.preventDefault(),j.stopPropagation(),W(),e.onCommit();return}if(j.key==="Tab"){W(),O(),e.onTab&&(j.preventDefault(),j.stopPropagation(),e.onTab(j.shiftKey));return}if(j.key.length===1&&!j.ctrlKey&&!j.metaKey&&!/\d/.test(j.key)){j.preventDefault();return}j.stopPropagation()}),l.addEventListener("blur",()=>{s||W()});let Y=document.createElement("button");return Y.type="button",Y.className="kanuni-datagrid-date-button",Y.setAttribute("aria-label",e.ariaLabel?`${e.ariaLabel} \u2014 ${t.dateOpenCalendar}`:t.dateOpenCalendar),Y.setAttribute("aria-expanded","false"),Y.setAttribute("data-testid","dg-date-open"),e.disabled&&(Y.disabled=!0),Y.tabIndex=-1,Y.addEventListener("mousedown",j=>j.preventDefault()),Y.addEventListener("click",()=>{s?O():z(),l.focus({preventScroll:!0})}),Y.appendChild(yg()),o.append(l,Y),r&&queueMicrotask(()=>{l.isConnected&&(l.focus({preventScroll:!0}),l.select())}),o}function Od(e,t){return e==null?"":t==="date"&&e instanceof Date?e.toISOString().slice(0,10):String(e)}function Vd(e,t){if(t){let u=document.createElement("span");u.id="kanuni-datagrid-editor-error",u.setAttribute("role","alert"),u.className="kanuni-datagrid-editor-error",u.textContent=t,e.appendChild(u)}return e}function oa(e){let{value:t,dataType:u,error:r,seeded:n=!1}=e,a=document.createDocumentFragment();if(e.options===null){let i=document.createElement("input");return i.type="text",i.value="\u2026",i.readOnly=!0,i.disabled=!0,i.className="kanuni-datagrid-editor",i.setAttribute("data-testid","dg-cell-editor"),a.appendChild(i),a}if(e.options&&e.options.length>0&&e.renderLookup)return a.appendChild(e.renderLookup({options:e.options,value:t,matchMode:e.matchMode,allowCustom:e.allowCustom,invalid:!!r,testId:"dg-cell-editor",ariaLabel:e.ariaLabel,surfaceClass:e.surfaceClass,onPortalOpen:e.onPortalOpen,noMatchText:e.t?.editNoMatch??"No match",onChange:e.onChange,onCommit:()=>e.onCommit("none"),onCancel:e.onCancel,onTab:i=>e.onTab(i?-1:1)})),Vd(a,r);if(u==="date"&&e.t)return a.appendChild(gu({value:t,format:e.dateFormat,invalid:!!r,testId:"dg-cell-editor",ariaLabel:e.ariaLabel,surfaceClass:e.surfaceClass,onPortalOpen:e.onPortalOpen,t:e.t,onChange:e.onChange,onCommit:()=>e.onCommit("none"),onCancel:e.onCancel,onTab:i=>e.onTab(i?-1:1)})),Vd(a,r);let o=document.createElement("input");o.className=`kanuni-datagrid-editor${r?" kanuni-datagrid-editor--invalid":""}`,o.setAttribute("data-testid","dg-cell-editor"),o.setAttribute("aria-invalid",String(!!r)),r&&o.setAttribute("aria-errormessage","kanuni-datagrid-editor-error");let l=!1;if(u==="boolean"?(o.type="checkbox",o.checked=t===!0,o.addEventListener("change",()=>e.onChange(o.checked))):u==="number"?(o.type=Number.isNaN(Number(t))&&t!==null&&t!==void 0&&t!==""?"text":"number",o.value=Od(t,u),o.addEventListener("input",()=>e.onChange(o.value===""?null:Number(o.value)))):(o.type="text",o.value=Od(t,u),o.addEventListener("input",()=>e.onChange(o.value))),o.addEventListener("keydown",i=>{i.isComposing||i.keyCode===229||(i.key==="Enter"?(i.preventDefault(),i.stopPropagation(),e.onCommit(i.shiftKey?"none":"down")):i.key==="Tab"?(i.preventDefault(),i.stopPropagation(),l=!0,e.onTab(i.shiftKey?-1:1)):i.key==="Escape"?(i.preventDefault(),i.stopPropagation(),e.onCancel()):i.stopPropagation())}),o.addEventListener("blur",()=>{l||e.onCommit("none")}),a.appendChild(o),r){let i=document.createElement("span");i.id="kanuni-datagrid-editor-error",i.setAttribute("role","alert"),i.className="kanuni-datagrid-editor-error",i.textContent=r,a.appendChild(i)}return queueMicrotask(()=>{if(o.isConnected&&(o.focus({preventScroll:!0}),o.type!=="checkbox"))if(n){if(o.type==="text"||o.type==="search"){let i=o.value.length;o.setSelectionRange(i,i)}}else o.select()}),a}var Eg=0;function ia(e){return new Promise(t=>{let u=document.createElement("div");u.className=`kanuni-datagrid-detached kanuni-datagrid-dialog-root${e.surfaceClass?` ${e.surfaceClass}`:""}`,u.setAttribute("role","presentation");let r=document.activeElement,n=C=>{document.removeEventListener("keydown",a,!0);let E=u.contains(document.activeElement);u.remove(),E&&r?.isConnected&&r.focus({preventScroll:!0}),t(C)},a=C=>{if(C.key==="Escape"){C.stopPropagation(),n(!1);return}if(C.key==="Tab"){let E=Array.from(m.querySelectorAll("button:not([disabled])"));if(E.length===0)return;let D=E.indexOf(document.activeElement),F=C.shiftKey?D<=0?E.length-1:D-1:D===E.length-1?0:D+1;C.preventDefault(),C.stopPropagation(),E[F].focus()}};document.addEventListener("keydown",a,!0);let o=document.createElement("div");o.className="kanuni-datagrid-dialog-overlay",o.addEventListener("mousedown",()=>n(!1));let l=document.createElement("div");l.className="kanuni-datagrid-dialog",l.setAttribute("role","alertdialog"),l.setAttribute("aria-modal","true");let i=`dg-dialog-${++Eg}`;l.setAttribute("aria-labelledby",`${i}-title`),l.setAttribute("aria-describedby",`${i}-message`),l.setAttribute("data-testid","dg-dialog");let s=document.createElement("div");s.className="kanuni-datagrid-dialog-title",s.id=`${i}-title`,s.textContent=e.title;let h=document.createElement("div");h.className="kanuni-datagrid-dialog-message",h.id=`${i}-message`,h.textContent=e.message;let m=document.createElement("div");if(m.className="kanuni-datagrid-dialog-actions",e.cancelLabel!==void 0){let C=document.createElement("button");C.type="button",C.setAttribute("data-testid","dg-dialog-cancel"),C.textContent=e.cancelLabel,C.addEventListener("click",()=>n(!1)),m.appendChild(C)}let c=document.createElement("button");c.type="button",c.className=`kanuni-datagrid-dialog-primary${e.danger?" kanuni-datagrid-dialog-primary--danger":""}`,c.setAttribute("data-testid","dg-dialog-confirm"),c.textContent=e.confirmLabel,c.addEventListener("click",()=>n(!0)),m.appendChild(c),l.append(s,h,m),u.append(o,l);let p=nr(e.anchor);qt(p).appendChild(jt(u,p)),c.focus()})}function bg(e,t){switch(e){case"number":return t==null||t===""||!Number.isNaN(Number(t))?"number":"text";case"boolean":return"checkbox";default:return"text"}}function Ag(e,t){if(t==="number"){if(e==="")return null;let u=Number(e);return Number.isNaN(u)?e:u}return e}function la(e){let{t,popup:u=!1,inline:r=!1}=e,n=document.createElement("div");n.className=`kanuni-datagrid-edit-form${r?" kanuni-datagrid-edit-form--inline":""}`,n.setAttribute("data-testid","dg-edit-form"),n.setAttribute("data-row-key",String(e.rowKey)),u&&n.setAttribute("data-popup",""),n.setAttribute("role",u?"dialog":"group"),u&&n.setAttribute("aria-modal","true"),n.setAttribute("aria-label",e.isNew?t.formAddTitle:t.formEditTitle);let a=document.createElement("div");a.className="kanuni-datagrid-edit-form-header";let o=document.createElement("strong");o.textContent=e.isNew?t.formAddTitle:t.formEditTitle,a.appendChild(o);let l=document.createElement("div");l.className="kanuni-datagrid-edit-form-error",l.setAttribute("role","alert"),l.setAttribute("data-testid","dg-form-error"),l.style.display="none";let i=document.createElement("div");i.className="kanuni-datagrid-edit-form-fields";let s=new Map,h=(x,k)=>{let M=e.getValue(x.columnId),z=e.getSaving()||!x.editable,O=`dg-field-${String(e.rowKey)}-${x.columnId}`;if(x.lookup&&!e.renderLookup){let W=document.createElement("input");W.id=O,W.type="text",W.className="kanuni-datagrid-edit-form-input",W.setAttribute("data-testid",O),W.disabled=!0,W.readOnly=!0;let Y=x.lookup.options?.find(j=>Object.is(j.value,M));return W.value=Y?Y.label:M==null?"":String(M),W}if(x.lookup&&e.renderLookup){let W=document.createElement("div");if(W.className="kanuni-datagrid-edit-form-lookup",x.lookup.options===null){let Y=document.createElement("input");return Y.type="text",Y.value="\u2026",Y.readOnly=!0,Y.disabled=!0,Y.className="kanuni-datagrid-editor",Y.setAttribute("data-testid",O),W.appendChild(Y),W}return W.appendChild(e.renderLookup({options:x.lookup.options,value:M,matchMode:x.lookup.matchMode,allowCustom:x.lookup.allowCustom,invalid:!!k,autoFocus:!1,testId:O,columnId:x.columnId,ariaLabel:x.label,surfaceClass:e.surfaceClass,onPortalOpen:e.onPortalOpen,noMatchText:t.editNoMatch,onChange:Y=>e.onChange(x.columnId,Y),commitOnPick:!1,onCommit:()=>e.onSave(),onCancel:e.onCancel})),W}if(x.dataType==="date"){let W=document.createElement("div");return W.className="kanuni-datagrid-edit-form-lookup",W.appendChild(gu({value:M,format:x.dateFormat,invalid:!!k,disabled:z,autoFocus:!1,testId:O,columnId:x.columnId,ariaLabel:x.label,surfaceClass:e.surfaceClass,onPortalOpen:e.onPortalOpen,t,onChange:Y=>e.onChange(x.columnId,Y),onCommit:()=>e.onSave(),onCancel:e.onCancel})),W}let G=document.createElement("input");return G.id=O,G.className="kanuni-datagrid-edit-form-input",G.setAttribute("data-testid",O),G.disabled=z,x.dataType==="boolean"?(G.type="checkbox",G.checked=M===!0,G.addEventListener("change",()=>e.onChange(x.columnId,G.checked)),G):(G.type=bg(x.dataType,M),k&&G.setAttribute("aria-invalid","true"),G.value=M==null?"":String(M),G.addEventListener("input",()=>e.onChange(x.columnId,Ag(G.value,x.dataType))),G)},m=e.getErrors();for(let x of e.fields){let k=document.createElement("label");k.className="kanuni-datagrid-edit-form-field",k.setAttribute("data-field-id",x.columnId);let M=document.createElement("span");M.className="kanuni-datagrid-edit-form-label",M.textContent=x.label;let z=document.createElement("span");z.style.display="contents",z.appendChild(h(x,m[x.columnId]??null));let O=document.createElement("span");O.className="kanuni-datagrid-edit-form-message",O.setAttribute("role","alert"),O.style.display="none",k.append(M,z,O),i.appendChild(k),s.set(x.columnId,{wrap:k,message:O,controlHost:z,field:x})}let c=document.createElement("div");c.className="kanuni-datagrid-edit-form-footer";let p=typeof navigator<"u"&&/Mac|iP(hone|ad)/.test(navigator.platform??""),C=document.createElement("span");C.className="kanuni-datagrid-edit-form-hint",C.textContent=t.formShortcut.replace("{key}",p?"\u2318":"Ctrl");let E=document.createElement("button");E.type="button",E.setAttribute("data-testid","dg-form-cancel"),E.textContent=t.cancel,E.addEventListener("click",()=>e.onCancel());let D=document.createElement("button");D.type="button",D.className="kanuni-datagrid-edit-form-save",D.setAttribute("data-testid","dg-form-save"),D.textContent=t.save,D.addEventListener("click",()=>e.onSave()),c.append(C,E,D),n.append(a,l,i,c),n.addEventListener("keydown",x=>{if(x.key==="Escape"){x.preventDefault(),x.stopPropagation(),e.onCancel();return}if(x.key==="Enter"&&(x.ctrlKey||x.metaKey)){x.preventDefault(),x.stopPropagation(),e.onSave();return}if(x.key==="Enter"&&!(x.target instanceof HTMLButtonElement)){x.preventDefault();return}if(x.key!=="Tab"||!u)return;let k=Array.from(n.querySelectorAll("input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled])"));if(k.length===0)return;let M=k[0],z=k[k.length-1];!x.shiftKey&&document.activeElement===z?(x.preventDefault(),M.focus()):x.shiftKey&&document.activeElement===M&&(x.preventDefault(),z.focus())});let F=()=>{let x=e.getErrors(),k=e.getSaving(),M=e.getSaveError();l.textContent=M??"",l.style.display=M?"":"none",D.disabled=k,E.disabled=k,D.textContent=k?t.editSaving:t.save;for(let[O,G]of s){let W=x[O]??null;G.message.textContent=W??"",G.message.style.display=W?"":"none",W?G.wrap.setAttribute("data-invalid",""):G.wrap.removeAttribute("data-invalid");let Y=G.controlHost.querySelector("input, .kanuni-datagrid-editor");Y&&Y.classList.toggle("kanuni-datagrid-editor--invalid",!!W)}let z=Object.keys(x)[0];z&&s.get(z)?.wrap.querySelector("input:not([disabled])")?.focus()};return queueMicrotask(()=>{if(!n.isConnected)return;let x=n.querySelector("input:not([disabled]), select:not([disabled]), textarea:not([disabled])");x?.focus(),x instanceof HTMLInputElement&&x.type==="text"&&x.select(),e.onNaturalHeight&&e.onNaturalHeight(n.clientHeight-i.clientHeight+i.scrollHeight)}),{element:n,refresh:F,setLookupOptions:(x,k)=>{let M=s.get(x);if(!M)return;M.field.lookup={...M.field.lookup,options:k};let z=e.getErrors();M.controlHost.textContent="",M.controlHost.appendChild(h(M.field,z[x]??null))},dispose:()=>n.remove()}}function Hd(e){let{grid:t,engine:u,mode:r,t:n,extension:a}=e,o=t.controller,l=su(r),i=null,s=async()=>{i=null;let K=await u.saveChanges();if(K.saved||K.superseded){ie();return}i={message:K.error??n.editSaveFailed,rowKey:K.rowKey,columnId:K.columnId},ie(),K.rowKey!==void 0&&K.columnId!==void 0&&(o.revealRow(K.rowKey),o.focusCell(K.rowKey,K.columnId))},h=()=>{i=null,u.cancelChanges()},m=null,c=null,p=null,C=null,E=null,D=new Map,F=0,x=K=>(m=null,u.beginRowEdit(K)),k=null,M=(K,te,fe)=>!l||u.isEditingRow()||!u.canEditRow(K)||(o.scrollToCell(K,te),!x(K))?!1:(r==="row"&&fe!==void 0&&(k=te,u.setRowEditValue(te,fe)),!0),z=async()=>{if(!u.getRowSession())return!1;let te=await u.saveRowEdit(o.getVisualColumnIds());return m=te.saved?null:te.error??null,te.saved?e.focusGrid():Ee(),te.saved},O=()=>{m=null,u.cancelRowEdit(),e.focusGrid()},G=K=>{let te=o.getColumnLayout(),fe=o.getColumnModel(),Se=++F;return[...te.left,...te.center,...te.right].filter(Te=>!Be(Te.state.id)).map(Te=>{let De=Te.state.id,He=fe.getDef(De),Yt=a.formLookup?a.formLookup(K,De,tt=>{F===Se&&p?.setLookupOptions(De,tt)}):He?.lookup?{options:Qo(He)??[]}:void 0;return{columnId:De,label:He?.headerName??He?.field??De,dataType:fe.getEditorDataType(De),editable:u.canUpdate(K,De),dateFormat:He?.dateFormat,lookup:Yt}})},W=()=>E??e.formHeight??W0,Y=(K,te)=>la({rowKey:K,fields:G(K),getValue:fe=>u.rowEditValue(fe),getErrors:()=>u.getRowSession()?.errors??{},getSaving:()=>u.getRowSession()?.saving??!1,getSaveError:()=>m,isNew:u.getRowSession()?.isNew??!1,popup:!te,inline:te,surfaceClass:e.surfaceClass(),renderLookup:a.renderLookup,onPortalOpen:e.trackPortal,t:n,onNaturalHeight:te?fe=>{let Se=Math.ceil(fe);if(Se>0&&Se!==E){E=Se;let Te=u.getRowSession();Te&&r==="form"&&o.setEditFormRow(Te.rowKey,{height:W(),atTop:Te.isNew})}}:void 0,onChange:(fe,Se)=>u.setRowEditValue(fe,Se),onSave:()=>{z()},onCancel:O}),j=()=>{D.clear(),p?.dispose(),p=null,C?.remove(),C=null};function J(){if(!l)return;let K=u.getRowSession();if(K&&r!=="row"?t.element.setAttribute("data-row-session",r):t.element.removeAttribute("data-row-session"),!K){c!==null&&(c=null,E=null,j(),r==="form"&&o.setEditFormRow(null));return}if(c===K.rowKey){p?.refresh();return}if(j(),c=K.rowKey,r==="form"){o.setEditFormRow(K.rowKey,{height:W(),atTop:K.isNew}),o.revealRow(K.rowKey);return}if(r==="popup"){let te=e.surfaceClass();C=document.createElement("div"),C.className=`kanuni-datagrid-detached kanuni-datagrid-edit-popup${te?` ${te}`:""}`;let fe=document.createElement("div");fe.className="kanuni-datagrid-edit-popup-overlay",fe.addEventListener("mousedown",()=>O()),p=Y(K.rowKey,!1),C.append(fe,p.element);let Se=nr(e.barHost);qt(Se).appendChild(jt(C,Se));return}o.revealRow(K.rowKey),queueMicrotask(()=>{let te=u.getRowSession();if(!te||te.rowKey!==c)return;let fe=t.element.querySelectorAll('[data-testid="dg-row-editor"]');if(fe.length===0)return;let Se=o.getFocus(),De=(Se&&String(Se.rowKey)===String(te.rowKey)?t.element.querySelector(`[data-testid="dg-row-editor"][data-column-id="${CSS.escape(Se.columnId)}"]`):null)??fe[0],He=k!==null&&De.getAttribute("data-column-id")===k;k=null,De.focus({preventScroll:!0}),De instanceof HTMLInputElement&&(He?De.setSelectionRange(De.value.length,De.value.length):De.select())})}let ee=K=>{let te=D.get(K);if(te)return te;let fe=o.getColumnModel(),Se=fe.getDef(K),Te=fe.getEditorDataType(K),De=u.rowEditValue(K),He=u.getRowSession()?.errors[K]??null,Yt=Se?.headerName??K,tt,Qt=a.resolveLookup?.(c,K);if(Qt&&Qt.options!==void 0&&a.renderLookup)tt=a.renderLookup({options:Qt.options??[],value:De,matchMode:Qt.matchMode,allowCustom:Qt.allowCustom,invalid:!!He,autoFocus:!1,testId:"dg-row-editor",columnId:K,ariaLabel:Yt,surfaceClass:e.surfaceClass(),noMatchText:n.editNoMatch,onChange:Re=>u.setRowEditValue(K,Re),commitOnPick:!1,onCommit:()=>{z()},onCancel:O});else if(Te==="date")tt=gu({value:De,format:Se?.dateFormat,invalid:!!He,autoFocus:!1,testId:"dg-row-editor",columnId:K,ariaLabel:Yt,surfaceClass:e.surfaceClass(),onPortalOpen:e.trackPortal,t:n,onChange:Re=>u.setRowEditValue(K,Re),onCommit:()=>{z()},onCancel:O});else{let Re=document.createElement("input");Re.className=`kanuni-datagrid-editor${He?" kanuni-datagrid-editor--invalid":""}`,Re.setAttribute("data-testid","dg-row-editor"),Re.setAttribute("data-column-id",K),Re.setAttribute("aria-label",Yt),He&&(Re.title=He),Te==="boolean"?(Re.type="checkbox",Re.checked=De===!0,Re.addEventListener("change",()=>u.setRowEditValue(K,Re.checked))):(Re.type=Te==="number"?"number":"text",Re.value=De==null?"":String(De),Re.addEventListener("input",()=>{let ut=Re.value;u.setRowEditValue(K,Te==="number"?ut===""?null:Number(ut):ut)})),Re.addEventListener("keydown",ut=>{ut.key==="Enter"?(ut.preventDefault(),ut.stopPropagation(),z()):ut.key==="Escape"?(ut.preventDefault(),ut.stopPropagation(),O()):ut.stopPropagation()}),tt=Re}return D.set(K,tt),tt},re=document.createElement("div");re.className="kanuni-datagrid-filter-bar kanuni-datagrid-edit-bar",re.setAttribute("data-testid","dg-edit-bar"),a.decorateBar?.(re);let B=(K,te,fe,Se)=>{let Te=document.createElement("button");return Te.type="button",fe&&(Te.className="kanuni-datagrid-filter-primary"),Te.setAttribute("data-testid",K),Te.textContent=te,Te.addEventListener("click",Se),Te},U=K=>{let te=document.createElement("span");return te.className="kanuni-datagrid-edit-form-error",te.setAttribute("data-testid",K),te.style.display="none",te},q=null,Ce=null,me=null,oe=null,de=null,ye=null,Fe=null;r==="batch"&&(q=B("dg-save-changes",n.editSaveChanges,!0,()=>{s()}),Ce=B("dg-discard-changes",n.editDiscardChanges,!1,h),me=U("dg-save-error"),re.append(q,Ce,me)),r==="row"&&(oe=document.createElement("span"),oe.setAttribute("data-testid","dg-row-editing"),oe.className="kanuni-datagrid-filter-active",oe.style.display="none",de=B("dg-save-row",n.editSaveRow,!0,()=>{z()}),de.style.display="none",ye=B("dg-cancel-row",n.cancel,!1,O),ye.style.display="none",Fe=U("dg-row-save-error"),re.append(oe,de,ye,Fe)),re.childElementCount>0&&e.barHost?.appendChild(re);function ie(){let K=u.hasChanges();if(q&&(q.style.display=K?"":"none",q.textContent=n.editSaveCount.replace("{n}",String(u.getChanges().length)),q.disabled=u.isSaving()),Ce&&(Ce.style.display=K?"":"none"),me&&(me.textContent=i?.message??"",me.style.display=i?"":"none"),oe&&de&&ye&&Fe){let te=u.getRowSession(),fe=te?"":"none";oe.style.display=fe,de.style.display=fe,ye.style.display=fe,te&&(oe.textContent=te.isNew?n.formAddTitle:n.editEditingRow.replace("{row}",String(te.rowKey)),de.disabled=te.saving,de.textContent=te.saving?n.editSaving:n.editSaveRow,ye.disabled=te.saving),Fe.textContent=m??"",Fe.style.display=te&&m?"":"none"}re.style.display=Array.from(re.children).some(te=>te.style.display!=="none")?"":"none"}ie();function Ee(){i=null,ie(),J()}return{rowModeActive:l,beginRowEdit:x,openRowFromKeys:M,saveRowEdit:z,cancelRowEdit:O,saveChanges:s,cancelChanges:h,renderRowCell:K=>{if(!(r!=="row"||K.node.kind!=="data"||Be(K.columnId))&&u.isEditingRow(K.node.key))return u.canUpdate(K.node.key,K.columnId)?ee(K.columnId):e.defaultContent(K,u.rowEditValue(K.columnId))},renderEditForm:K=>{if(r!=="form")return;let te=u.getRowSession();if(!(!te||te.rowKey!==K))return(!p||p.element.getAttribute("data-row-key")!==String(K))&&(p?.dispose(),p=Y(K,!0)),p.element},onCellDoubleClick:K=>l?(K.node.kind==="data"&&!u.isEditingRow()&&u.canEditRow(K.node.key)&&x(K.node.key),!0):!1,handleRowKeys:K=>!u.isEditingRow()||K.target?.closest?.('[data-testid="dg-edit-form"]')?!1:K.key==="Enter"?(K.preventDefault(),z(),!0):K.key==="Escape"?(K.preventDefault(),O(),!0):!1,sync:Ee,dispose:()=>{j(),r==="form"&&c!==null&&o.setEditFormRow(null),c=null,t.element.removeAttribute("data-row-session"),re.remove()}}}function sa(e,t,u,r,n={}){let a=e.controller,o=t.mode??"cell";t.formLabels&&(u={...u,...t.formLabels});let l=n.isColumnEditable??(B=>a.getColumnModel().getDef(B)?.editable!==!1),i=()=>{a.refreshCells(),G.sync(),n.onChange?.(),s.schedule("footer",()=>a.refreshSummaries())},s=ua(150),h=B=>a.getRowByKey(B),m=new X0({mode:o,messages:u,onChange:i,onAutoSaveFailed:B=>E(B),onCellValueChanged:B=>a.notifyCellValueChanged(B),onEditingStarted:B=>a.notifyEditingStarted(B),onEditingStopped:B=>a.notifyEditingStopped(B),onRowEditingStarted:B=>a.notifyRowEditingStarted(B),onRowEditingStopped:B=>a.notifyRowEditingStopped(B),onChangesChanged:B=>a.notifyChangesChanged(B),editableColumns:B=>{let U=a.getColumnLayout();return[...U.left,...U.center,...U.right].map(q=>q.state.id).filter(q=>!Be(q)&&m.canUpdate(B,q))},readValue:(B,U)=>{let q=h(B);return q?a.getColumnModel().getStoredValue(q,U):void 0},formatForEdit:(B,U,q)=>a.formatCellForEdit(U,q),parseFromEdit:(B,U,q)=>a.parseCellFromEdit(U,q,B),readRow:h,isColumnEditable:l,applyValue:(B,U,q)=>a.writeCellValue(B,U,q),storedValue:(B,U,q)=>a.valueAfterWrite(B,U,q),onSave:B=>t.onSave?.(B),...n.engine});a.setPendingValueReader({effectiveValue:(B,U,q)=>m.changes.effectiveValue(B,U,q),effectiveRow:(B,U)=>m.changes.applyPendingTo(B,U),hasPending:()=>m.changes.hasChanges()}),a.setEditingDelegate({startEditingCell:(B,U)=>(a.scrollToCell(B,U),m.beginEdit(B,U)),stopEditing:async B=>{if(m.isEditingRow())return B?(G.cancelRowEdit(),!0):G.saveRowEdit();if(!m.getSession())return!1;if(B)return m.cancelEdit(),C(),!0;let U=m.commitEdit();return U&&C(),U},getEditingCells:()=>{let B=m.getRowSession();if(B)return a.getVisualColumnIds().filter(q=>!Be(q)&&m.canUpdate(B.rowKey,q)).map(q=>({rowKey:B.rowKey,columnId:q}));let U=m.getSession();return U?[{rowKey:U.rowKey,columnId:U.columnId}]:[]}});let c=!1,p=[a.events.on("rowsChanged",B=>{c=B.removed===0}),a.events.on("dataUpdated",()=>{let B=c;c=!1,!B&&m.retainKeys(new Set(a.getDataRows().map(U=>U.key)))})];function C(){let B=e.element.querySelector(".kanuni-datagrid-scroller");(B&&B.tabIndex>=0?B:e.element).focus({preventScroll:!0})}function E(B){let U=B.columnId!==void 0?a.getColumnModel().getDef(B.columnId)?.headerName??B.columnId:null,q=B.error??u.editSaveFailed;ia({title:u.editCannotSave,message:U?`${U}: ${q}`:q,confirmLabel:u.ok,surfaceClass:r.surfaceClass(),anchor:e.element}),B.rowKey!==void 0&&B.columnId!==void 0&&(a.revealRow(B.rowKey),a.focusCell(B.rowKey,B.columnId))}let D=(B,U={})=>{let q=m.getSession(),Ce=q?{rowKey:q.rowKey,columnId:q.columnId}:a.getFocus();if(!Ce||!m.commitEdit())return!1;let me=a.getColumnModel().runtime().filter(ie=>ie.state.visible).map(ie=>ie.state.id);if(ai(me,l,1)===null)return!1;let oe=a.getRows(),de=oe.findIndex(ie=>ie.key===Ce.rowKey);if(de<0)return!1;let ye=ni(me,l,Ce.columnId,B);if(ye===null){if(U.cycle===!1)return!1;let ie=B;do de+=ie;while(de>=0&&de<oe.length&&oe[de]?.kind!=="data");if(de<0||de>=oe.length)return!1;ye=ai(me,l,B)}let Fe=oe[de];return!Fe||Fe.kind!=="data"?!1:(a.focusCell(Fe.key,ye),a.scrollToCell(Fe.key,ye),U.open===!0?m.beginEdit(Fe.key,ye):(C(),!0))},F=B=>{if(m.getSession())return!1;let U=a.getFocus();if(!U||!l(U.columnId))return!1;let q=a.getColumnModel().getEditorDataType(U.columnId);if(q==="boolean"||q==="date")return!1;let Ce=q==="number"?Number.isNaN(Number(B))?null:Number(B):B;return Ce===null?!1:G.rowModeActive?G.openRowFromKeys(U.rowKey,U.columnId,Ce):(a.scrollToCell(U.rowKey,U.columnId),m.beginEdit(U.rowKey,U.columnId,Ce))},x=null,k=new Set,M=B=>{let U=()=>{k.delete(U),B()};k.add(U)},z=()=>{for(let B of[...k])B();k.clear()},O=(B,U)=>{let q=a.getColumnModel().getDef(B.columnId),Ce=B.node.data;if(q?.renderCell)return q.renderCell({value:U,row:Ce,node:B.node,column:q});let me=Ut(q,U);if(me!==null)return me;if(q?.valueFormatter){let oe=q.valueFormatter(U,Ce);return typeof oe=="string"?oe:String(oe??"")}return q?.dateFormat&&q.dataType==="date"?Tt(U,q.dateFormat):U==null?"":String(U)},G=Hd({grid:e,engine:m,mode:o,t:u,formHeight:t.formHeight,surfaceClass:()=>r.surfaceClass(),barHost:r.barHost,focusGrid:C,trackPortal:M,defaultContent:O,extension:n}),W=B=>{if(B.node.kind!=="data")return;let U=G.renderRowCell(B);if(U!==void 0)return U;if(!m.isEditing(B.node.key,B.columnId)){x&&x.rowKey===B.node.key&&x.columnId===B.columnId&&(x=null);let ie=m.getMode()==="cell"?void 0:m.changes.get(B.node.key,B.columnId),Ee=n.cellAdornment?.(B)??null;if(!ie&&!Ee)return;let K=ie?ie.newValue:B.value,te=document.createElement("span");te.style.display="contents";let fe=O(B,K);return typeof fe=="string"?te.appendChild(document.createTextNode(fe)):te.appendChild(fe),Ee&&te.appendChild(Ee),te}let q=m.getSession();if(x&&x.rowKey===q.rowKey&&x.columnId===B.columnId)return x.setError(q.validation.message),x.container;let Ce=a.getColumnModel().getDef(B.columnId),me=n.resolveLookup?.(q.rowKey,B.columnId)??{options:void 0},oe=document.createElement("span");oe.style.display="contents";let de=n.customEditors?Ce?.renderEditor:void 0;if(de){let ie=new Set,Ee=de({value:m.getSession()?.value??q.value,row:m.effectiveRow(q.rowKey),columnId:B.columnId,error:q.validation.message,onErrorChange:K=>(ie.add(K),()=>ie.delete(K)),setValue:K=>m.setEditValue(K),commit:()=>{m.commitEdit()&&C()},cancel:()=>{m.cancelEdit(),C()}});return oe.appendChild(Ee),x={rowKey:q.rowKey,columnId:B.columnId,container:oe,setError:K=>{for(let te of ie)te(K)}},oe}let ye=ie=>{oe.textContent="",oe.appendChild(oa({value:m.getSession()?.value??q.value,dataType:a.getColumnModel().getEditorDataType(B.columnId),error:ie,seeded:q.seeded,onPortalOpen:M,options:me.options,allowCustom:me.allowCustom,matchMode:me.matchMode,renderLookup:n.renderLookup,dateFormat:Ce?.dateFormat,ariaLabel:Ce?.headerName??B.columnId,surfaceClass:r.surfaceClass(),t:u,onChange:Ee=>m.setEditValue(Ee),onCommit:Ee=>{m.commitEdit()&&(Ee==="down"&&a.moveFocus("down"),C())},onTab:Ee=>{if(t.focusCellOnTab===!1){m.commitEdit();return}D(Ee,{open:n.keepEditingOnTab===!0,cycle:t.focusCellOnCycle!==!1})},onCancel:()=>{m.cancelEdit(),C()}}))};ye(q.validation.message);let Fe=q.validation.message;if(x={rowKey:q.rowKey,columnId:B.columnId,container:oe,setError:ie=>{if(ie===Fe)return;Fe=ie,oe.querySelector(".kanuni-datagrid-editor")?.classList.toggle("kanuni-datagrid-editor--invalid",!!ie);let K=oe.querySelector(".kanuni-datagrid-editor-error");ie&&!K&&(K=document.createElement("span"),K.id="kanuni-datagrid-editor-error",K.setAttribute("role","alert"),K.className="kanuni-datagrid-editor-error",oe.appendChild(K)),K&&(K.textContent=ie??"",ie||K.remove())}},me.options===null&&n.resolveLookup){let ie=n.resolveLookup,Ee=()=>{let te=ie(q.rowKey,B.columnId);te.options!==null&&x&&x.rowKey===q.rowKey&&x.columnId===B.columnId&&m.isEditing(q.rowKey,B.columnId)&&(me.options=te.options,ye(m.getSession()?.validation.message??null))},K=a.events.on("cellsRefreshed",()=>{Ee(),ie(q.rowKey,B.columnId).options!==null&&K()})}return oe},Y=B=>{if(B.node.kind!=="data")return;let U=[];return m.isEditing(B.node.key,B.columnId)&&U.push("kanuni-datagrid-cell--editing"),m.changes.isDirty(B.node.key,B.columnId)&&U.push("kanuni-datagrid-cell--dirty"),m.isRemoved(B.node.key)&&U.push("kanuni-datagrid-cell--removed"),U.length?U.join(" "):void 0},j=B=>{B.node.kind==="data"&&(G.onCellDoubleClick(B)||m.canUpdate(B.node.key,B.columnId)&&(a.scrollToCell(B.node.key,B.columnId),m.beginEdit(B.node.key,B.columnId)))},J=B=>{let U=B.target;return U?.closest?.('[data-testid="dg-edit-form"], [data-testid="dg-row-message"]')?!0:(B.key==="Tab"||B.key==="Enter"||B.key===" ")&&!!U?.closest?.('[data-testid="dg-edit-bar"]')},ee=B=>J(B)?!1:G.handleRowKeys(B)?!0:B.key==="Escape"&&m.getSession()?(B.preventDefault(),m.cancelEdit(),!0):B.key==="Tab"&&t.focusCellOnTab!==!1&&!m.getSession()&&a.getFocus()&&D(B.shiftKey?-1:1,{open:n.keepEditingOnTab===!0,cycle:t.focusCellOnCycle!==!1})?(B.preventDefault(),!0):!1,re=B=>{if(J(B))return!1;let U=B.ctrlKey||B.metaKey;if(B.key==="F2"){let q=a.getFocus();if(q)return B.preventDefault(),G.rowModeActive?(G.openRowFromKeys(q.rowKey,q.columnId),!0):(a.scrollToCell(q.rowKey,q.columnId),m.beginEdit(q.rowKey,q.columnId),!0)}return t.editOnKeyPress!==!1&&!U&&!B.altKey&&B.key.length===1&&B.key!==" "&&!m.getSession()&&F(B.key)?(B.preventDefault(),!0):!1};return{engine:m,renderCellContent:W,getCellClassName:Y,onCellDoubleClick:j,handleKeyDown:B=>ee(B)||re(B),handleSessionKeys:ee,handleOpenKeys:re,editAdjacentCell:D,focusGrid:C,trackPortal:M,defaultContent:O,renderEditForm:G.renderEditForm,beginRowEdit:G.beginRowEdit,saveRowEdit:G.saveRowEdit,cancelRowEdit:G.cancelRowEdit,saveChanges:G.saveChanges,cancelChanges:G.cancelChanges,dispose:()=>{z(),G.dispose(),m.dispose(),s.cancelAll(),p.forEach(B=>B()),a.setPendingValueReader(null),a.setEditingDelegate(null)}}}function Kd(e,t){return!e||Be(t)?!1:e.editable!==!1&&e.lookup==null&&e.renderEditor==null&&e.allowFormulas!==!0}var zd=["rules","crud","allowAdding","allowUpdating","allowDeleting","onInitNewRow","onRowInserted","onRowUpdated","onRowRemoved","insertKey","appendOnArrowDown","newRowPosition","keepEditingOnTab","commandColumn","commandLabels","confirmDelete","confirmDeleteMessage","range"];var ar=60,Ai=24,xg=0,Kr=36,or=28,zr="application/x-kanuni-row",Hr=new Map,xi=new Set,vi=5e3,Vu=0,vg=["columnStateChanged","sortChanged"],Fg=["columnStateChanged"],Dg=["contentReady","viewportChanged","filterChanged","selectionChanged","focusChanged","summariesChanged","cellsRefreshed","findChanged"],L=(e,t="div")=>{let u=document.createElement(t);return u.className=e,u},$r="http://www.w3.org/2000/svg";function Sg(e,t){let u=n=>{t&&console.warn(`[datagrid] ${n} is an Enterprise feature \u2014 use createEnterpriseGrid from @kanunilabs/datagrid-enterprise to use it.`)};if(e.viewportDatasource)throw new Error("[datagrid] viewportDatasource is an Enterprise feature \u2014 use createEnterpriseGrid from @kanunilabs/datagrid-enterprise to use it.");let r={...e};if(r.dataSource!=null&&!Array.isArray(r.dataSource)&&r.grouping&&(u("grouping a server-side DataSource is"),delete r.grouping),r.columns?.some(n=>n.spanRows)&&(u("cell span/merge (spanRows) is"),r={...r,columns:r.columns.map(n=>n.spanRows?{...n,spanRows:void 0}:n)}),r.tree&&(u("tree data is"),delete r.tree),r.masterDetail&&(u("master-detail is"),delete r.masterDetail),r.grouping){let{groupBy:n,groupSummaries:a}=r.grouping,o=n==null?[]:typeof n=="string"?[n]:n;(o.length>1||a)&&(u("multi-level grouping and group summaries are"),r={...r,grouping:{...r.grouping,groupBy:o.slice(0,1),groupSummaries:!1}})}return r}var kg={columnResize:"use `resizable`",columnReorder:"use `reorderable`",groupPanel:"use `grouping: { panel: true }`",autoColumns:"",loadingOverlay:"",onReady:"the controller is returned directly \u2014 use `grid.controller`",className:"style the host element you pass in",style:"style the host element you pass in",toolbarItemsBefore:"",renderRow:"",cardView:"",onCardViewChange:"",announcements:"",filterPanelLabels:"",filterIconMode:"",autoSizeStrategy:"",footerMenu:"",showRowCount:"",onOpenFilterBuilder:"",renderOverlay:"",cellMenu:""},ca=new Set;function Bg(e){for(let t of Object.keys(e)){let u=kg[t];u===void 0||u===""||ca.has(t)||(ca.add(t),console.warn(`[datagrid] \`${t}\` is a React-only option \u2014 ${u}.`))}}function Tg(){let e=document.createElementNS("http://www.w3.org/2000/svg","svg");e.setAttribute("width","14"),e.setAttribute("height","14"),e.setAttribute("viewBox","0 0 16 16"),e.setAttribute("aria-hidden","true"),e.setAttribute("focusable","false");let t=document.createElementNS("http://www.w3.org/2000/svg","path");return t.setAttribute("d","M8 1v8m0 0L5 6m3 3 3-3M2 11v2a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-2"),t.setAttribute("fill","none"),t.setAttribute("stroke","currentColor"),t.setAttribute("stroke-width","1.5"),t.setAttribute("stroke-linecap","round"),t.setAttribute("stroke-linejoin","round"),e.appendChild(t),e}function Rg(){let e=document.createElementNS($r,"svg");e.setAttribute("width","11"),e.setAttribute("height","11"),e.setAttribute("viewBox","0 0 16 16"),e.setAttribute("aria-hidden","true"),e.setAttribute("focusable","false");let t=document.createElementNS($r,"path");return t.setAttribute("d","M1.5 2.5h13L9.5 8.6v4.3l-3 1.6V8.6L1.5 2.5Z"),t.setAttribute("fill","currentColor"),t.setAttribute("stroke","currentColor"),t.setAttribute("stroke-width","0.6"),t.setAttribute("stroke-linejoin","round"),e.appendChild(t),e}function Ng(e){let t=document.createElementNS($r,"svg");t.setAttribute("width","14"),t.setAttribute("height","14"),t.setAttribute("viewBox","0 0 16 16"),t.setAttribute("aria-hidden","true"),t.setAttribute("focusable","false");let u=document.createElementNS($r,"rect");u.setAttribute("x","2"),u.setAttribute("y","2"),u.setAttribute("width","12"),u.setAttribute("height","12"),u.setAttribute("rx","2"),u.setAttribute("fill","none"),u.setAttribute("stroke","currentColor"),u.setAttribute("stroke-width","1.3"),t.appendChild(u);let r=n=>{let a=document.createElementNS($r,"path");a.setAttribute("d",n),a.setAttribute("fill","none"),a.setAttribute("stroke","currentColor"),a.setAttribute("stroke-width","1.3"),a.setAttribute("stroke-linecap","round"),t.appendChild(a)};return r("M5 8h6"),e&&r("M8 5v6"),t}function $d(e,t){let u=e??(t==="number"||t==="bigint"?"right":"left");return u==="right"?"kanuni-datagrid-cell kanuni-datagrid-cell--number":u==="center"?"kanuni-datagrid-cell kanuni-datagrid-cell--center":"kanuni-datagrid-cell"}function da(e){let t="kanuni-datagrid-root";return e.dark&&(t+=" kanuni-datagrid-dark"),e.theme&&(t+=` kanuni-datagrid-theme-${e.theme}`),e.palette&&(t+=` kanuni-datagrid-palette-${e.palette}`),e.density&&(t+=` kanuni-datagrid-density-${e.density}`),t}function Wd(e,t){let{theme:u,palette:r,density:n,dark:a,striped:o=!0,rowNumbers:l=!1,locale:i="en",footer:s=!1,footerMenu:h=!0,footerPosition:m="bottom",notes:c,pinnedTopRows:p=[],pinnedBottomRows:C=[],resizable:E=!0,reorderable:D=!0,autoHeaderHeight:F=!1,filterRow:x=!1,headerFilter:k=!1,filterIconMode:M="hover",filterPanel:z=!1,onOpenFilterBuilder:O,focusedRow:G=!1,focusedRowKey:W,onFocusedRowChanged:Y,onRowClick:j,onRowActivate:J,autoSizeStrategy:ee="none",renderRow:re,cardView:B,onCardViewChange:U,announcements:q=!0,filterPanelLabels:Ce,showRowCount:me=!1,toolbarColumnChooser:oe=!1,cellMenu:de=!0,rowMenu:ye,headerMenu:Fe,rowDrag:ie,alignedGrids:Ee,printLayout:K,renderCellContent:te,getCellClassName:fe,getRowStatusSource:Se,rowStatus:Te,onCellPointerDown:De,onCellPointerEnter:He,onCellDoubleClick:Yt,editing:tt,onHeaderClick:Qt,getHeaderClassName:Re,renderHeaderLabel:ut,renderDetail:Fi,renderEditForm:Di,enterpriseEdition:Xt=!1,stateStoring:Si,tooltip:gt=!0,renderOverlay:ha,filterDebounce:Ud,toolbar:ki=!1,highlightSearch:qd=!0,sortable:Bi=!0,toolbarItemsAfter:jd,toolbarItemsBefore:Yd,toolbarExcel:Qd=!1,toolbarPdf:Xd=!1,searchDebounce:Zd=200,...Jd}=t;Bg(t),me&&!ca.has("showRowCount:deprecated")&&(ca.add("showRowCount:deprecated"),console.warn("[datagrid] `showRowCount` was retired on 2026-08-15 and does nothing in either renderer. The row count lives in the status bar (Enterprise) or the pager."));let V=pu(i),{emptyText:ec=V.noData,loadingText:tc=V.busy,loadingOverlay:ma=!0,...mt}=Jd,Ti=typeof ma=="number"?ma:300,fa=di(V),Ri=yi(V);if((!mt.columns||mt.columns.length===0)&&t.autoColumns!==!1){let d=Array.isArray(mt.dataSource)?mt.dataSource:[];mt.columns=m0(d,typeof t.autoColumns=="object"?t.autoColumns:{})}mt.rowHeight===void 0&&(mt.rowHeight=ra(u,n,28));let uc=Xt?mt:Sg(mt,!!t.debugMode),Cu=Xt?c:void 0;!Xt&&c&&t.debugMode&&console.warn("[datagrid] cell notes are an Enterprise feature \u2014 use createEnterpriseGrid from @kanunilabs/datagrid-enterprise to show them.");let b=new Cd(uc);b.setEnterpriseEdition(Xt);let wu=tt!=null&&typeof tt=="object"&&tt.enabled!==!1,ft=null;if(wu&&t.debugMode)for(let d of zd)tt[d]!==void 0&&console.warn(`[datagrid] editing.${d} is an Enterprise feature \u2014 use createEnterpriseGrid from @kanunilabs/datagrid-enterprise to use it.`);let ir=wu?d=>ft?.renderCellContent(d)??te?.(d):te,pa=wu?d=>{let f=ft?.getCellClassName(d),w=fe?.(d);return f&&w?`${f} ${w}`:f??w}:fe,Ni=wu?d=>{Yt?.(d),ft?.onCellDoubleClick(d)}:Yt,rc=wu?(d,f)=>ft?.renderEditForm(d,f)??Di?.(d,f)??"":Di,Ct=_0(Te);W!=null&&b.focusRow(W);let ne=L(da(t));Fd(ne,t.portalContainer),ne.style.height="100%",ne.setAttribute("role","grid"),ne.setAttribute("aria-label",t.ariaLabel??t.gridId),ne.setAttribute("data-grid-id",t.gridId),I0(i)&&ne.setAttribute("dir","rtl"),u&&ne.setAttribute("data-theme",u),F&&ne.setAttribute("data-auto-header-height",""),ne.style.setProperty("--dg-row-height",`${b.getRowHeight()}px`);let ge=L("kanuni-datagrid-scroller"),Ke=L("kanuni-datagrid-canvas"),Pe=L("kanuni-datagrid-header");Pe.setAttribute("role","row");let qe=L("kanuni-datagrid-rows");qe.style.position="relative";let Ae=L("kanuni-datagrid-viewport");qe.appendChild(Ae);let wt=L("kanuni-datagrid-pinned-rows kanuni-datagrid-pinned-rows--top"),Zt=L("kanuni-datagrid-pinned-rows kanuni-datagrid-pinned-rows--bottom"),yu=()=>p.length+b.getPinnedRows("top").length,Mi=()=>C.length+b.getPinnedRows("bottom").length,rt=L("kanuni-datagrid-sticky-groups");rt.setAttribute("aria-hidden","true");let yt=s,Nt=m==="top",je=L(`kanuni-datagrid-footer-row kanuni-datagrid-footer-row--${Nt?"top":"bottom"}`);if(je.setAttribute("role","row"),je.setAttribute("aria-label",V.columnTotalsAria),h){let d=f=>{let g=f.target?.closest(".kanuni-datagrid-footer-cell")?.getAttribute("data-column-id");!g||Be(g)||(f.preventDefault(),Lc(g,{left:f.clientX,top:f.clientY}))};je.addEventListener("click",d),je.addEventListener("contextmenu",d)}let Wr=L("kanuni-datagrid-bands-host");Wr.style.display="contents";let Jt=L("kanuni-datagrid-filter-row");Jt.setAttribute("role","row"),Ke.append(Wr,Pe),x&&Ke.append(Jt);let Eu=x?2:1,ga=0,Ca=()=>ga+Eu+yu();je.style.setProperty("--dg-pinned-gap",String(Nt?Eu:0)),wt.style.setProperty("--dg-pinned-gap",String(Eu+(yt&&Nt?1:0))),yt&&Nt&&Ke.append(je),yu()>0&&Ke.append(wt),b.hasStickyGroupHeaders()&&(rt.style.setProperty("--dg-pinned-gap",String(Eu+(yt&&Nt?1:0))),rt.style.setProperty("--dg-sticky-below",`${yu()>0?yu()*b.getRowHeight()+1:0}px`),Ke.append(rt)),Ke.append(qe),Mi()>0&&Ke.append(Zt),yt&&!Nt&&Ke.append(je),ge.appendChild(Ke);let Mt=L("kanuni-datagrid-toolbar"),Et=L("kanuni-datagrid-pager");Et.setAttribute("role","navigation"),Et.setAttribute("aria-label",V.pagerAria);let bu=L("kanuni-datagrid-filter-panel"),Au=!!mt.grouping?.panel,nt=L("kanuni-datagrid-group-panel"),lr=Sd(B),sr=!1,_r=[],eu=re,dr=L("kanuni-datagrid-cardbar");dr.hidden=!0;let Ii=L("kanuni-datagrid-cardbar-label","label"),Li=L("","span");Li.textContent=V.cardSortBy;let At=L("kanuni-datagrid-cardbar-select","select"),xu=L("kanuni-datagrid-cardbar-dir","button");xu.type="button",Ii.append(Li,At),dr.append(Ii,xu),At.addEventListener("change",()=>{let d=b.getSort()[0];b.setSort(At.value?[{columnId:At.value,direction:d?.direction??"asc"}]:[])}),xu.addEventListener("click",()=>{let d=b.getSort()[0];d&&b.setSort([{columnId:d.columnId,direction:d.direction==="desc"?"asc":"desc"}])});let nc=d=>{let[f,...w]=Nd(b.getColumnModel(),_r,d.row),g=L("kanuni-datagrid-card");g.setAttribute("role","gridcell");let A=L("kanuni-datagrid-card-title");if(A.textContent=f?.text??"",g.appendChild(A),w.length){let v=L("kanuni-datagrid-card-fields","dl");for(let S of w){let y=L("kanuni-datagrid-card-field"),T=L("","dt");T.textContent=S.label;let R=L("","dd");R.textContent=S.text,y.append(T,R),v.appendChild(y)}g.appendChild(v)}return g},Pi=()=>{if(!sr||!lr)return;let d=b.getColumnModel(),f=Td(d,lr);f.join("\0")!==_r.join("\0")&&(_r=f,b.setDataRowHeight(Rd(f.length)));let w=Bi?d.getOrder().filter(S=>d.getState(S)?.visible!==!1&&d.getDef(S)?.sortable!==!1):[];dr.hidden=w.length===0;let g=["",...w].join("\0");if(At.dataset.ids!==g){At.dataset.ids=g,At.replaceChildren();let S=document.createElement("option");S.value="",S.textContent=V.none,At.appendChild(S);for(let y of w){let T=document.createElement("option");T.value=y,T.textContent=d.getDef(y)?.headerName??y,At.appendChild(T)}}let A=b.getSort()[0];At.value=A?.columnId??"",xu.hidden=!A;let v=A?.direction==="desc";xu.textContent=v?"\u2193":"\u2191",xu.setAttribute("aria-label",v?V.sortAsc:V.sortDesc),xu.title=v?V.sortAsc:V.sortDesc},Gi=!1,ac=d=>{let f=kd(d,lr);if(f!==sr){for(sr=f,ne.classList.toggle("kanuni-datagrid-cards",f),eu=f?nc:re,_r=[],f?Pi():(dr.hidden=!0,b.setDataRowHeight(null));Pt.length;)Pt.pop().root.remove();un(),Gi?U?.(f):queueMicrotask(()=>U?.(f))}};ki&&ne.appendChild(Mt),Au&&ne.appendChild(nt),lr&&ne.appendChild(dr),ne.appendChild(ge),z&&ne.appendChild(bu);let Ur=mt.pagination;Ur&&Ur.enabled!==!1&&ne.appendChild(Et);let cr=L("kanuni-datagrid-loading-overlay"),Oi=L("kanuni-datagrid-loading-card"),Vi=L("kanuni-datagrid-loading-spinner","span");Vi.setAttribute("aria-hidden","true");let Hi=L("kanuni-datagrid-loading-label","span");Hi.textContent=tc,Oi.append(Vi,Hi),cr.appendChild(Oi),cr.style.display="none";let hr=L("kanuni-datagrid-sr-only","div");hr.setAttribute("role","status"),hr.setAttribute("aria-live","polite"),hr.setAttribute("aria-atomic","true");let qr=L("kanuni-datagrid-empty");qr.textContent=ec,qr.style.display="none",ne.append(cr,qr),q&&ne.appendChild(hr),e.appendChild(ne);let mr=mt.selection,wa=b.getGroupDisplay()!=="fullWidth",Ki=b.getGroupDisplay()==="column",Hu=(mr?.mode??"none")!=="none"&&(mr?.checkboxColumn??!1),oc=(mr?.rowClick??(Hu?"toggle":"replace"))==="toggle",Ku=b.hasMasterDetail()&&!!Fi,ya=()=>(l?1:0)+(Ku?1:0)+(Hu?1:0),Ea=Ct?.icons===!0,zi=Ea?Ai:0,ba=zi,Aa=ba+(l?ar:0),$i=Aa+(Ku?or:0),xt=zi+(l?ar:0)+(Ku?or:0)+(Hu?Kr:0);b.setLeadWidth(xt);let fr=!!ie?.enabled,pr=ie?.group??null,Wi=ie?.allowReordering??!0,_i=ie?.allowDropInsert??pr!==null,It=null,jr=null,Yr=!1,vu=null,tu=null;function zu(d){vu=d;for(let f of Ae.querySelectorAll(".kanuni-datagrid-row")){let w=f.getAttribute("data-row-key"),g=d!==null&&w===String(d.key);f.classList.toggle("kanuni-datagrid-row--drop-before",g&&d.side==="before"),f.classList.toggle("kanuni-datagrid-row--drop-after",g&&d.side==="after")}}let Ui=(d,f)=>{let w=f.getBoundingClientRect();return d.clientY<w.top+w.height/2?"before":"after"},qi=d=>d.dataTransfer?.types.includes(zr)?It!==null?Wi:_i&&pr!==null:!1;function ji(d,f,w){let g=null;try{let A=d.dataTransfer?.getData(zr);g=A?JSON.parse(A):null}catch{g=null}if(g){if(g.gridId===b.gridId){if(!Wi)return;if(ie?.onReorder){ie.onReorder({dragKey:g.rowKey,targetKey:f,position:w,row:b.getRowByKey(g.rowKey)});return}b.moveRow(g.rowKey,f,w);return}!_i||pr===null||g.group!==pr||ie?.onAdd?.({row:g.row,rowKey:g.rowKey,otherGridId:g.gridId,targetKey:f,position:w})}}let ic=d=>{let f=nu(d);if(!f||f.node.kind!=="data"||!d.dataTransfer)return;It=f.node.key,jr=f.node.key,Yr=!1;let w={gridId:b.gridId,group:pr,rowKey:f.node.key,row:f.node.data};d.dataTransfer.setData(zr,JSON.stringify(w)),d.dataTransfer.setData("text/plain",String(f.node.key)),d.dataTransfer.effectAllowed="move",b.notifyRowDrag("enter",{rowKey:f.node.key})},lc=d=>{if(!qi(d))return;d.preventDefault(),d.dataTransfer&&(d.dataTransfer.dropEffect="move");let f=nu(d);if(!f||f.node.kind!=="data")return;if(It===f.node.key){tu=null,zu(null);return}let w=d.target.closest(".kanuni-datagrid-row"),g=Ui(d,w),A=vu?.key!==f.node.key||vu.side!==g;tu={key:f.node.key,side:g},zu({key:f.node.key,side:g}),A&&It!==null&&b.notifyRowDrag("move",{rowKey:It,overKey:f.node.key,position:g})},sc=d=>{if(!qi(d)){zu(null);return}d.preventDefault();let f=nu(d);if(Yr=!0,f&&f.node.kind==="data"){let w=d.target.closest(".kanuni-datagrid-row"),g=Ui(d,w);tu={key:f.node.key,side:g},ji(d,f.node.key,g)}else tu=null,ji(d,null,"after");It=null,zu(null)},dc=()=>{jr!==null&&b.notifyRowDragEnd({rowKey:jr,dropped:Yr,overKey:tu?.key??null,position:tu?.side??null}),Yr=!1,jr=null,It=null,tu=null,zu(null)},cc=d=>{let f=d.relatedTarget;f&&qe.contains(f)||It!==null&&(tu=null,zu(null),b.notifyRowDrag("leave",{rowKey:It}))},Fu=K===void 0||K===!1?null:(()=>{let d=K===!0?{}:K;return{always:d.always??!1,maxRows:d.maxRows??vi,onLimit:d.onLimit}})(),$u=!1;function xa(d){$u!==d&&($u=d,ne.classList.toggle("kanuni-datagrid-print",d),d?(Vu++,document.documentElement.classList.add("kanuni-datagrid-printing")):(Vu--,Vu<=0&&(Vu=0,document.documentElement.classList.remove("kanuni-datagrid-printing"))),un())}let Yi=null;if(Fu&&!Fu.always){let d=()=>{let w=b.getRows().length;if(w>Fu.maxRows){b.isDebugMode()&&console.warn(`[datagrid] print layout skipped: ${w} rows exceeds maxRows (${Fu.maxRows}). Printing the visible rows instead \u2014 use exportPdf() for the whole result.`),Fu.onLimit?.({rows:w,maxRows:Fu.maxRows});return}xa(!0)},f=()=>xa(!1);window.addEventListener("beforeprint",d),window.addEventListener("afterprint",f),Yi=()=>{window.removeEventListener("beforeprint",d),window.removeEventListener("afterprint",f)}}let Lt=0,vt=[],at=0,va=0;function Fa(){let d=b.getColumnLayout(),f=b.getVirtualWindow().columns,w=[],g=(v,S,y,T)=>{let R=v.def;w.push({def:R,id:v.state.id,width:v.state.width,pinned:S,inset:y,className:$d(R.align,R.dataType)+(S?" kanuni-datagrid-cell--pinned":"")+(R.autoHeight?" kanuni-datagrid-cell--wrap":""),visualIndex:T})};d.left.forEach((v,S)=>g(v,"left",d.leftOffsets[S]+xt,S));for(let v=f.start;v<f.end&&v<d.center.length;v++)g(d.center[v],null,0,d.left.length+v);d.right.forEach((v,S)=>g(v,"right",d.rightOffsets[S],d.left.length+d.center.length+S)),vt=w,at=f.offsetX;let A=(d.centerOffsets[Math.min(f.end,d.center.length)]??0)-(d.centerOffsets[Math.min(f.start,d.center.length)]??0);va=Math.max(0,d.centerWidth-f.offsetX-A),Ke.style.minWidth=`${d.totalWidth+xt}px`}let Qr=26;function hc(){let d=b.getColumnLayout(),f=b.getVirtualWindow().columns,w=[...d.left,...d.center.slice(f.start,Math.min(f.end,d.center.length)),...d.right],g=c0(w);if(ga=g,Wr.textContent="",Pe.style.top=`${g*Qr}px`,ne.style.setProperty("--dg-band-offset",`${g*Qr}px`),g===0)return;h0(w,g).forEach((v,S)=>{let y=L("kanuni-datagrid-band-row");if(y.style.top=`${S*Qr}px`,y.style.height=`${Qr}px`,xt>0){let T=L("kanuni-datagrid-band-cell kanuni-datagrid-band-cell--spacer kanuni-datagrid-band-cell--pinned");T.style.width=`${xt}px`,T.style.flex="none",T.style.insetInlineStart="0px",y.appendChild(T)}if(at>0){let T=L("kanuni-datagrid-spacer");T.style.width=`${at}px`,T.style.flex="none",y.appendChild(T)}for(let T of v){let R=L(`kanuni-datagrid-band-cell${T.spacer?" kanuni-datagrid-band-cell--spacer":""}`);if(R.style.width=`${T.width}px`,R.style.flex="none",!T.spacer){if(T.columnIds.length>0){let I=_t(b.getColumnModel().getDef(T.columnIds[0])).slice(0,S+1);if(I.length===S+1&&b.isBandCollapsible(I)){let $=b.isBandCollapsed(I),X=document.createElement("button");X.type="button",X.className="kanuni-datagrid-band-toggle",X.setAttribute("aria-expanded",String(!$));let Z=$?V.expandColumnGroup:V.collapseColumnGroup;X.setAttribute("aria-label",Z),X.title=Z,X.appendChild(Ng($)),X.addEventListener("click",Q=>{Q.stopPropagation(),b.toggleBand(I)}),R.appendChild(X)}}let H=L("kanuni-datagrid-band-label","span");H.textContent=T.label,R.appendChild(H)}y.appendChild(R)}Wr.appendChild(y)})}let Wu=null,Xr=null;function Zr(d,f){Xr&&Xr!==d&&Xr.classList.remove("kanuni-datagrid-header-cell--drop-before","kanuni-datagrid-header-cell--drop-after"),Xr=d,d&&(d.classList.toggle("kanuni-datagrid-header-cell--drop-before",f==="before"),d.classList.toggle("kanuni-datagrid-header-cell--drop-after",f==="after"))}function Qi(){if(!Wu)return;let d=b.getSelectedCount(),f=b.getSelectableCount(),w=f>0&&d>=f;Wu.checked=w,Wu.indeterminate=!w&&d>0,Wu.disabled=f===0&&d===0}let gr=null;function Xi(d){gr=d;for(let f of Array.from(Pe.querySelectorAll(".kanuni-datagrid-header-cell[data-column-id]")))f.tabIndex=f.getAttribute("data-column-id")===d?0:-1}function Da(){hc();let d=document.activeElement,f=d&&Pe.contains(d)?d.closest("[data-column-id]")?.getAttribute("data-column-id")??null:null,w=b.getColumnLayout(),g=[...w.left,...w.center,...w.right].map(y=>y.state.id);(!gr||!g.includes(gr))&&(gr=g[0]??null);let A=b.getSort(),v=new Map(A.map((y,T)=>[y.columnId,{direction:y.direction,order:T}]));if(Pe.textContent="",Wu=null,Ea){let y=L("kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-status-cell");y.setAttribute("role","presentation"),y.setAttribute("aria-hidden","true"),y.style.width=`${Ai}px`,y.style.flex="none",y.style.insetInlineStart="0px",Pe.appendChild(y)}if(l){let y=L("kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-rownum-cell");y.setAttribute("role","columnheader"),y.style.width=`${ar}px`,y.style.flex="none",y.style.insetInlineStart=`${ba}px`,Pe.appendChild(y)}if(Ku){let y=L("kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-detail-toggle-cell");y.setAttribute("role","columnheader"),y.setAttribute("aria-label",V.detailsAria),y.style.width=`${or}px`,y.style.flex="none",y.style.insetInlineStart=`${Aa}px`,Pe.appendChild(y)}if(Hu){let y=L("kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-select-cell");y.setAttribute("role","columnheader"),y.style.width=`${Kr}px`,y.style.flex="none",y.style.insetInlineStart=`${$i}px`;let T=document.createElement("input");T.type="checkbox",T.setAttribute("aria-label",V.selectAllRows),T.addEventListener("change",()=>{b.getSelectedCount()>0?b.clearSelection():b.selectAll()}),y.appendChild(T),Pe.appendChild(y),Wu=T,Qi()}let S=!1;for(let y of vt){if(!y.pinned&&!S){if(at>0){let P=document.createElement("div");P.style.flex=`0 0 ${at}px`,Pe.appendChild(P)}S=!0}let T=Bi&&y.def.sortable!==!1,R=y.id===Gu,H=v.get(R?b.getGroupLevels()[0]??y.id:y.id),I=L(`kanuni-datagrid-header-cell${T?" kanuni-datagrid-header-cell--sortable":""}${y.pinned?" kanuni-datagrid-header-cell--pinned":""}${y.def.wrapHeaderText?" kanuni-datagrid-header-cell--wrap":""}`);I.setAttribute("role","columnheader"),I.setAttribute("data-column-id",y.id),I.tabIndex=y.id===gr?0:-1,I.addEventListener("focus",()=>Xi(y.id)),I.setAttribute("aria-sort",H?H.direction==="asc"?"ascending":"descending":"none");let $=y.def.headerTooltip;$&&(I.title=$),I.style.width=`${y.width}px`,I.style.flex="none",y.pinned==="left"&&(I.style.insetInlineStart=`${y.inset}px`),y.pinned==="right"&&(I.style.insetInlineEnd=`${y.inset}px`);let X=L("kanuni-datagrid-header-label","span");X.id=`${encodeURIComponent(t.gridId)}-hdr-${encodeURIComponent(y.id)}`,I.setAttribute("aria-labelledby",X.id);let Z=ut?.(y.id);if(Z)X.appendChild(Z);else if(y.def.renderHeader){let P=y.def.renderHeader({column:y.def});typeof P=="string"?X.textContent=P:X.appendChild(P)}else X.textContent=y.def.headerName??y.id;if(I.appendChild(X),H){let P=L("kanuni-datagrid-sort-indicator","span");if(P.setAttribute("aria-hidden","true"),P.textContent=H.direction==="asc"?"\u25B2":"\u25BC",I.appendChild(P),A.length>1&&!R){let ue=L("kanuni-datagrid-sort-order","span");ue.setAttribute("aria-hidden","true"),ue.textContent=String(H.order+1),I.appendChild(ue)}}if(T||Qt){let P=y.id;I.addEventListener("click",ue=>{Qt?.(P,ue)||T&&b.toggleSort(P,ue.shiftKey)})}let Q=Fe!==!1&&!Be(y.id);if(Q){let P=y.id;I.addEventListener("contextmenu",ue=>{ue.preventDefault(),gl(P,{left:ue.clientX,top:ue.clientY})})}let N=null;if(k&&y.def.filterable!==!1){N=document.createElement("button"),N.type="button",N.tabIndex=-1;let P=b.getColumnFilter(y.id)!==null;N.className=`kanuni-datagrid-filter-button${P?" kanuni-datagrid-filter-button--active":""}${M==="always"?" kanuni-datagrid-filter-button--pinned":""}`,N.setAttribute("aria-haspopup","dialog"),N.setAttribute("aria-label",bt(V.filterPopupAria,{column:y.def.headerName??y.id})),N.appendChild(Rg());let ue=N;N.addEventListener("click",se=>{se.stopPropagation(),fl(y.id,ue)}),I.appendChild(N)}if(I.addEventListener("keydown",P=>{let ue=g.indexOf(y.id),se;if(P.key==="ArrowRight")se=g[Math.min(g.length-1,ue+1)];else if(P.key==="ArrowLeft")se=g[Math.max(0,ue-1)];else if(P.key==="Home")se=g[0];else if(P.key==="End")se=g[g.length-1];else if(N&&P.altKey&&P.key==="ArrowDown")fl(y.id,N);else if(T&&(P.key==="Enter"||P.key===" "))b.toggleSort(y.id,P.shiftKey);else if(Q&&(P.key==="ContextMenu"||P.key==="F10"&&P.shiftKey)){let xe=I.getBoundingClientRect();gl(y.id,{left:xe.left,top:xe.bottom})}else return;P.preventDefault(),P.stopPropagation(),se&&se!==y.id&&(Xi(se),La(se)?.focus())}),D&&y.def.reorderable!==!1&&(I.draggable=!0,I.addEventListener("dragstart",P=>{P.dataTransfer?.setData("text/x-kanuni-column",y.id),P.dataTransfer&&(P.dataTransfer.effectAllowed="move")}),I.addEventListener("dragover",P=>{if(!P.dataTransfer?.types.includes("text/x-kanuni-column"))return;P.preventDefault();let ue=I.getBoundingClientRect(),se=P.clientX<ue.left+ue.width/2;Zr(I,se?"before":"after")}),I.addEventListener("dragleave",P=>{let ue=P.relatedTarget;(!ue||!I.contains(ue))&&Zr(null,"before")}),I.addEventListener("drop",P=>{Zr(null,"before");let ue=P.dataTransfer?.getData("text/x-kanuni-column");if(!ue||ue===y.id)return;P.preventDefault();let se=I.getBoundingClientRect();if(P.clientX<se.left+se.width/2)b.moveColumn(ue,y.id);else{let We=vt.findIndex(pe=>pe.id===y.id);b.moveColumn(ue,vt[We+1]?.id)}}),I.addEventListener("dragend",()=>Zr(null,"before"))),E&&y.def.resizable!==!1){let P=L("kanuni-datagrid-resize-handle","span");P.setAttribute("data-resize-handle",y.id),P.setAttribute("role","presentation"),P.addEventListener("click",ue=>ue.stopPropagation()),P.addEventListener("dblclick",ue=>{ue.stopPropagation(),Gc(y.id)}),P.addEventListener("pointerdown",ue=>{ue.preventDefault(),ue.stopPropagation();let se=ue.clientX,xe=y.width,We=getComputedStyle(I).direction==="rtl"?-1:1;I.draggable=!1;let pe=xe,ke=!1,Qe=Ft=>{ke=!0,pe=xe+(Ft.clientX-se)*We,b.setColumnWidth(y.id,pe,!1)},Ot=()=>{window.removeEventListener("pointermove",Qe),window.removeEventListener("pointerup",Ot),window.removeEventListener("pointercancel",Ot),ke&&b.setColumnWidth(y.id,pe,!0),I.draggable=D&&y.def.reorderable!==!1};window.addEventListener("pointermove",Qe),window.addEventListener("pointerup",Ot),window.addEventListener("pointercancel",Ot)}),I.appendChild(P)}Pe.appendChild(I)}f&&La(f)?.focus({preventScroll:!0})}let Zi=null,Jr=null;function mc(d){if(d===Zi)return;Zi=d;let f=[];for(let w=0;w<d.length;w++){let g=d[w];g&&g.kind!=="data"&&f.push(w)}Jr=f.length>0?f:null}function fc(d){if(!Jr)return d+1;let f=0,w=Jr.length;for(;f<w;){let g=f+w>>1;Jr[g]<=d?f=g+1:w=g}return d+1-f}let Pt=[];function en(d="data"){let f=L("kanuni-datagrid-row");if(f.setAttribute("role","row"),d==="loading"){f.classList.add("kanuni-datagrid-row--loading"),f.setAttribute("aria-busy","true");let R=L("kanuni-datagrid-cell kanuni-datagrid-loading-cell");return R.setAttribute("role","gridcell"),R.setAttribute("aria-colindex","1"),R.appendChild(L("kanuni-datagrid-loading-bar","span")),f.appendChild(R),{kind:d,root:f,cells:[],rowNumberCell:null,selectInput:null,detailToggle:null,leadingSpacer:null,trailingSpacer:null,epoch:Lt}}if(d==="data"&&wa&&f.addEventListener("click",()=>{if(!f.classList.contains("kanuni-datagrid-group-row--aligned"))return;let R=f.getAttribute("data-group-key");R!==null&&b.toggleGroup(R)}),d==="panel"){let R=document.createElement("div");return R.setAttribute("role","gridcell"),R.setAttribute("aria-colindex","1"),f.appendChild(R),{kind:d,root:f,cells:[],rowNumberCell:null,selectInput:null,detailToggle:null,leadingSpacer:null,trailingSpacer:null,panelCell:R,epoch:Lt}}if(d==="group"){let R=L("kanuni-datagrid-group-cell");R.setAttribute("role","gridcell"),R.setAttribute("aria-colindex","1");let H=L("kanuni-datagrid-group-twisty","span");H.setAttribute("aria-hidden","true");let I=L("kanuni-datagrid-group-caption","span"),$=L("kanuni-datagrid-group-label","span"),X=L("kanuni-datagrid-group-count","span"),Z=L("kanuni-datagrid-group-aggregates","span"),Q=null;return Hu&&mr?.mode==="multiple"&&(Q=document.createElement("input"),Q.type="checkbox",Q.className="kanuni-datagrid-group-checkbox",Q.tabIndex=-1,Q.addEventListener("change",()=>{let N=f.getAttribute("data-group-key");N!==null&&b.toggleGroupSelection(N)}),Q.addEventListener("click",N=>N.stopPropagation()),Q.addEventListener("mousedown",N=>N.stopPropagation()),R.appendChild(Q)),R.append(H,I,$,X,Z),f.appendChild(R),f.addEventListener("click",()=>{let N=f.getAttribute("data-group-key");N!==null&&b.toggleGroup(N)}),{kind:d,root:f,cells:[],rowNumberCell:null,selectInput:null,detailToggle:null,leadingSpacer:null,trailingSpacer:null,group:{cell:R,check:Q,twisty:H,caption:I,label:$,count:X,aggregates:Z},epoch:Lt}}if(fr){let R=L("kanuni-datagrid-row-grip","span");R.setAttribute("aria-hidden","true"),R.title=V.dragToReorder??"Drag to reorder",R.innerHTML='<svg width="10" height="14" viewBox="0 0 10 14" focusable="false"><g fill="currentColor"><circle cx="3" cy="3" r="1.2"/><circle cx="7" cy="3" r="1.2"/><circle cx="3" cy="7" r="1.2"/><circle cx="7" cy="7" r="1.2"/><circle cx="3" cy="11" r="1.2"/><circle cx="7" cy="11" r="1.2"/></g></svg>',R.addEventListener("mouseenter",()=>{f.draggable=!0}),R.addEventListener("mouseleave",()=>{f.draggable=!1}),f.appendChild(R)}if(eu)return{kind:d,root:f,cells:[],rowNumberCell:null,selectInput:null,detailToggle:null,leadingSpacer:null,trailingSpacer:null,epoch:Lt};if(Ea){let R=L("kanuni-datagrid-cell kanuni-datagrid-cell--pinned kanuni-datagrid-status-cell");R.setAttribute("role","presentation"),R.setAttribute("aria-hidden","true"),R.style.width=`${Ai}px`,R.style.flex="none",R.style.insetInlineStart="0px",R.appendChild(L("kanuni-datagrid-status-icon","span")),f.appendChild(R)}let w=null;l&&(w=L("kanuni-datagrid-cell kanuni-datagrid-cell--number kanuni-datagrid-cell--pinned kanuni-datagrid-rownum-cell"),w.setAttribute("role","gridcell"),w.setAttribute("aria-colindex","1"),w.style.width=`${ar}px`,w.style.flex="none",w.style.insetInlineStart=`${ba}px`,f.appendChild(w));let g=null;if(Ku){let R=L("kanuni-datagrid-cell kanuni-datagrid-cell--center kanuni-datagrid-cell--pinned kanuni-datagrid-detail-toggle-cell");R.setAttribute("role","gridcell"),R.setAttribute("aria-colindex",String((l?1:0)+1)),R.style.width=`${or}px`,R.style.flex="none",R.style.insetInlineStart=`${Aa}px`;let H=document.createElement("button");H.type="button",H.className="kanuni-datagrid-detail-toggle",H.tabIndex=-1,H.addEventListener("click",I=>{I.stopPropagation();let $=f.getAttribute("data-row-key");if($===null)return;let X=b.getRows().find(Z=>Z!==void 0&&String(Z.key)===$);X&&X.kind==="data"&&b.toggleDetail(X.key)}),H.addEventListener("mousedown",I=>I.stopPropagation()),R.appendChild(H),f.appendChild(R),g=H}let A=null;if(Hu){let R=L("kanuni-datagrid-cell kanuni-datagrid-cell--center kanuni-datagrid-cell--pinned kanuni-datagrid-select-cell");R.setAttribute("role","gridcell"),R.setAttribute("aria-colindex",String((l?1:0)+(Ku?1:0)+1)),R.style.width=`${Kr}px`,R.style.flex="none",R.style.insetInlineStart=`${$i}px`;let H=document.createElement("input");H.type="checkbox",H.tabIndex=-1;let I=()=>{let $=f.getAttribute("data-row-key");if($===null)return;let X=b.getRows().find(Z=>Z!==void 0&&String(Z.key)===$);X?.kind==="group"?b.toggleGroupSelection(String(X.key)):X&&b.toggleRow(X.key)};R.addEventListener("mousedown",$=>$.stopPropagation()),R.addEventListener("click",$=>{$.target.tagName!=="INPUT"&&($.stopPropagation(),I())}),H.addEventListener("change",I),H.addEventListener("click",$=>$.stopPropagation()),H.addEventListener("mousedown",$=>$.stopPropagation()),R.appendChild(H),f.appendChild(R),A=H}let v=[],S=null,y=!1;for(let R of vt){!R.pinned&&!y&&(S=document.createElement("div"),S.style.flex=`0 0 ${at}px`,f.appendChild(S),y=!0);let H=L(R.className);H.setAttribute("role","gridcell"),H.setAttribute("data-column-id",R.id),H.style.width=`${R.width}px`,H.style.flex="none",R.pinned==="left"&&(H.style.insetInlineStart=`${R.inset}px`),R.pinned==="right"&&(H.style.insetInlineEnd=`${R.inset}px`),f.appendChild(H),v.push({el:H,slot:R})}let T=document.createElement("div");return T.style.flex=`0 0 ${va}px`,f.appendChild(T),{kind:d,root:f,cells:v,rowNumberCell:w,selectInput:A,detailToggle:g,leadingSpacer:S,trailingSpacer:T,epoch:Lt}}let _u="";function Cr(d,f){if(_u===""||f===""){d.textContent=f;return}let w=Le(f),g=w.indexOf(_u);if(g===-1){d.textContent=f;return}let A=[],v=0;for(;g!==-1;){g>v&&A.push(document.createTextNode(f.slice(v,g)));let y=document.createElement("mark");y.className="kanuni-datagrid-highlight",y.textContent=f.slice(g,g+_u.length),A.push(y),v=g+_u.length,g=w.indexOf(_u,v)}v<f.length&&A.push(document.createTextNode(f.slice(v)));let S=document.createElement("span");S.className="kanuni-datagrid-cell-text",S.append(...A),d.replaceChildren(S)}function Ji(d,f,w){let g=b.getColumnModel().getCellValue(w.data,f.id),A=f.def;if(A.renderCell){let y=A.renderCell({value:g,row:w.data,node:w,column:A});typeof y=="string"?d.textContent=y:d.replaceChildren(y);return}let v=Ut(A,g);if(v!==null){Cr(d,v);return}if(A.valueFormatter){let y=A.valueFormatter(g,w.data);Cr(d,typeof y=="string"?y:String(y??""));return}if(A.dateFormat&&A.dataType==="date"){Cr(d,Tt(g,A.dateFormat));return}let S=Jn(A,g);if(S!==null){Cr(d,S);return}Cr(d,g==null?"":String(g))}function pc(d,f){return d.kind==="group"&&!f.group}function gc(d,f,w){let g=f?.lead??null;if(!g||!d.leadingSpacer||w.kind!=="data"){d.leadCell?.remove(),d.leadCell=null;return}let A=b.getColumnLayout(),v=g.column.def,S={def:v,id:g.column.state.id,width:g.width,pinned:null,inset:0,className:$d(v.align,v.dataType),visualIndex:A.left.length+A.center.indexOf(g.column)},y=d.leadCell??L(S.className);d.leadCell=y,y.className=S.className,y.setAttribute("role","gridcell"),y.setAttribute("data-column-id",S.id),y.setAttribute("aria-colspan",String(f.spans.get(S.id)??1)),y.setAttribute("aria-colindex",String(ya()+S.visualIndex+1)),y.id=`${t.gridId}-cell-${String(w.key)}-${S.id}`,y.style.width=`${g.width}px`,y.style.flex="none",d.leadingSpacer.nextSibling!==y&&d.leadingSpacer.after(y),Ji(y,S,w)}function Cc(d){let f=document.createElement("div");f.className="kanuni-datagrid-row-message",f.setAttribute("data-testid","dg-row-message"),f.innerHTML='<svg class="kanuni-datagrid-row-message-icon" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"><path d="M8 1.5 15 14H1z" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round"/><path d="M8 6v3.5M8 11.6v.4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>';let w=document.createElement("span");w.className="kanuni-datagrid-row-message-text",w.textContent=d.text,w.title=d.text,f.appendChild(w);let g=(A,v,S)=>{let y=document.createElement("button");y.type="button",y.className="kanuni-datagrid-row-message-button",y.setAttribute("data-testid",A),y.textContent=v,y.addEventListener("click",S),f.appendChild(y)};return d.retry&&g("dg-row-retry",V.rowStatusRetry,d.retry),d.remove&&g("dg-row-delete",V.rowStatusDelete,d.remove),f}function el(){if(!Ct?.messages)return;let d=ft?.engine??Se?.()??null,f=Ct.get,w=q0(Ct,d).filter(g=>{if(!f)return!0;let A=b.getDataRowNode(g)?.data;if(A===void 0)return!0;let v=f({row:A,rowKey:g});return v===void 0||v==="error"});b.setMessageRows(w,b.getRowHeight())}function tl(d,f){let w=Ct&&f?.kind==="data"?U0(Ct,f.data,f.key,ft?.engine??Se?.()??null):null,g=d.getAttribute("data-row-status");if(g!==null&&d.classList.remove(`kanuni-datagrid-row--status-${g}`,"kanuni-datagrid-row--status-tint","kanuni-datagrid-row--status-strike"),!w){if(g===null)return;d.removeAttribute("data-row-status"),d.removeAttribute("aria-description"),d.removeAttribute("aria-busy"),d.removeAttribute("aria-invalid");return}d.setAttribute("data-row-status",w.status),d.classList.add(...Y0(w.status,Ct.tint,Ct.strike).split(" ")),d.setAttribute("aria-description",Q0(w,V)),w.status==="saving"?d.setAttribute("aria-busy","true"):d.removeAttribute("aria-busy"),w.status==="error"?d.setAttribute("aria-invalid","true"):d.removeAttribute("aria-invalid")}function Sa(d,f,w){let g=d.root;if(g.setAttribute("aria-rowindex",String(w+1+Ca())),g.setAttribute("data-row-key",String(f.key)),f.kind==="message"){let N=d.panelCell;g.className="kanuni-datagrid-row kanuni-datagrid-message-row",g.style.height=`${f.height}px`,g.style.display="",g.setAttribute("data-message-for",String(f.parentKey)),g.removeAttribute("data-detail-for"),g.removeAttribute("data-editform-for"),g.removeAttribute("data-panel-for"),N.className="kanuni-datagrid-message-cell";let P=Ct?j0(Ct,f.parentKey,f.data,ft?.engine??Se?.()??null,V):null,ue=P?`${String(f.parentKey)}|${P.text}|${P.retry?1:0}${P.remove?1:0}`:"";g.getAttribute("data-message-sig")!==ue&&(g.setAttribute("data-message-sig",ue),N.textContent="",P&&N.appendChild(Cc(P)));return}if(g.removeAttribute("data-message-for"),g.removeAttribute("data-message-sig"),f.kind==="detail"||f.kind==="editform"){let N=d.panelCell,P=f.kind==="detail";g.className=`kanuni-datagrid-row ${P?"kanuni-datagrid-detail-row":"kanuni-datagrid-editform-row"}`,g.style.height=`${f.height}px`,P?(g.setAttribute("data-detail-for",String(f.parentKey)),g.removeAttribute("data-editform-for")):(g.setAttribute("data-editform-for",f.parentKey===null?"":String(f.parentKey)),g.removeAttribute("data-detail-for")),N.className=P?"kanuni-datagrid-detail-cell":"kanuni-datagrid-editform-cell";let ue=`${f.kind}:${String(f.key)}`;if(g.getAttribute("data-panel-for")!==ue){g.setAttribute("data-panel-for",ue);let se=P?Fi?.(f.data):f.parentKey===null?void 0:rc?.(f.parentKey,f.data);N.textContent="",typeof se=="string"?N.textContent=se:se&&N.appendChild(se)}return}if(g.removeAttribute("data-panel-for"),g.removeAttribute("data-detail-for"),g.removeAttribute("data-editform-for"),f.kind==="filler"){g.style.display="none";return}g.style.display="";let A=f.kind==="data"?b.getDataRowHeight():null;g.style.height=ul?"":`${A??b.getRowHeight()}px`;let v=f.kind==="group"&&!d.group?f:null;if(!d.group){g.classList.remove("kanuni-datagrid-group-row","kanuni-datagrid-group-row--aligned");for(let N of Array.from(g.classList))N.startsWith("kanuni-datagrid-group-row--level-")&&g.classList.remove(N);v?(g.classList.add("kanuni-datagrid-group-row","kanuni-datagrid-group-row--aligned",`kanuni-datagrid-group-row--level-${v.level}`),g.setAttribute("aria-expanded",String(v.expanded)),g.setAttribute("aria-level",String(v.level+1)),g.setAttribute("data-group-key",String(v.key)),g.setAttribute("data-group-level",String(v.level))):(g.removeAttribute("aria-expanded"),g.removeAttribute("aria-level"),g.removeAttribute("data-group-key"),g.removeAttribute("data-group-level"))}g.classList.toggle("kanuni-datagrid-row--odd",o&&w%2===1);let S=b.isRowSelected(f.key);g.classList.toggle("kanuni-datagrid-row--selected",S),f.kind==="data"&&b.getSelectionMode()!=="none"?g.setAttribute("aria-selected",String(S)):g.removeAttribute("aria-selected");let y=b.getFocus();g.classList.toggle("kanuni-datagrid-row--focused",G&&y!==null&&y.rowKey===f.key),tl(g,f);let T=f.kind==="data"&&!pc(f,d)?b.planRowColSpans(f,b.getVirtualWindow().columns):null;if(d.leadingSpacer&&(d.leadingSpacer.style.flex=`0 0 ${Math.max(0,at-(T?.leadingDelta??0))}px`),d.trailingSpacer&&(d.trailingSpacer.style.flex=`0 0 ${Math.max(0,va-(T?.trailingDelta??0))}px`),gc(d,T,f),fr){let N=vu!==null&&String(vu.key)===String(f.key);g.classList.toggle("kanuni-datagrid-row--drop-before",N&&vu.side==="before"),g.classList.toggle("kanuni-datagrid-row--drop-after",N&&vu.side==="after")}let R=f.kind==="treePath",H=R||v!==null;if(g.classList.toggle("kanuni-datagrid-row--tree-path",R),d.rowNumberCell&&(d.rowNumberCell.textContent=H?"":String(fc(w))),d.detailToggle&&(d.detailToggle.hidden=H),d.selectInput){let N=v!==null&&mr?.mode==="multiple";if(d.selectInput.hidden=R||v!==null&&!N,d.selectInput.classList.toggle("kanuni-datagrid-group-checkbox",N),N){let P=b.getGroupSelectionState(String(v.key));d.selectInput.checked=P==="all",d.selectInput.indeterminate=P==="some",d.selectInput.disabled=!1,d.selectInput.setAttribute("aria-label",V.selectGroupAria.replace("{count}",String(v.count)).replace("{group}",v.display??v.label))}else d.selectInput.indeterminate=!1,d.selectInput.checked=b.isRowSelected(f.key),d.selectInput.disabled=f.kind==="data"&&!b.isRowSelectable(f.key),d.selectInput.setAttribute("aria-label",V.selectRowAria.replace("{row}",String(f.key)))}if(d.detailToggle&&f.kind==="data"){let N=b.isDetailExpanded(f.key);d.detailToggle.textContent=N?"\u25BE":"\u25B8",d.detailToggle.setAttribute("aria-expanded",String(N)),d.detailToggle.setAttribute("aria-label",N?V.collapseDetails:V.expandDetails)}if(f.kind==="group"&&d.group){let N=f;g.className=`kanuni-datagrid-row kanuni-datagrid-group-row kanuni-datagrid-group-row--level-${N.level}`,g.setAttribute("aria-expanded",String(N.expanded)),g.setAttribute("aria-level",String(N.level+1)),g.setAttribute("data-group-key",String(N.key)),g.setAttribute("data-group-level",String(N.level)),d.group.cell.style.paddingLeft=N.level>0?`${8+N.level*18}px`:"",d.group.twisty.textContent=N.expanded?"\u25BE":"\u25B8";let P=b.getColumnModel().getDef(N.columnId),ue=P?.headerName??N.columnId;if(d.group.caption.textContent=`${ue}:`,d.group.label.textContent=Ut(P,N.value)??N.display??(N.label===""?V.filterBlank:N.label),d.group.count.textContent=`(${N.count})`,d.group.check){let xe=b.getGroupSelectionState(String(N.key));d.group.check.checked=xe==="all",d.group.check.indeterminate=xe==="some",d.group.check.setAttribute("aria-label",V.selectGroupAria.replace("{count}",String(N.count)).replace("{group}",d.group.label.textContent??""))}d.group.aggregates.textContent="";let se=N.aggregates??null;if(se)for(let xe of b.getSummaryDefs()){let We=L("kanuni-datagrid-group-aggregate","span"),pe=L("kanuni-datagrid-group-aggregate-label","span"),ke=b.getColumnModel().getDef(xe.columnId);pe.textContent=`${ci(xe,fa)} ${ke?.headerName??xe.columnId}:`,We.append(pe,` ${Vr(xe,se[mu(xe.columnId,xe.type)],ke)}`),d.group.aggregates.appendChild(We)}return}if(f.kind!=="data"&&!R&&!v){for(let{el:N}of d.cells)N.textContent="";return}if(eu&&H){let N=fr?1:0;for(;g.childNodes.length>N;)g.removeChild(g.lastChild);let P=L("kanuni-datagrid-cell");v?P.appendChild(rl(v)):(P.appendChild(nl(f)),ka(P,f,f.tree)),g.appendChild(P);return}if(eu){let N=fr?1:0,P=eu({row:f.data,node:f,rowIndex:w,selected:b.isRowSelected(f.key),focused:G&&y!==null&&y.rowKey===f.key});if(P instanceof Node&&g.childNodes.length===N+1&&g.childNodes[N]===P)return;for(;g.childNodes.length>N;)g.removeChild(g.lastChild);typeof P=="string"?g.appendChild(document.createTextNode(P)):P&&g.appendChild(P);return}let I=y!==null&&y.rowKey===f.key?y.columnId:null,$=v?void 0:f.tree,X=v&&Ki?Gu:$||v?(()=>{let N=b.getColumnLayout();return(N.left[0]??N.center[0]??N.right[0])?.state.id??null})():null,Z=$?X:null,Q=b.hasCellSpans();for(let{el:N,slot:P}of d.cells){N.style.display=T?.covered.has(P.id)?"none":"",N.style.width=`${T?.widths.get(P.id)??P.width}px`;let ue=T?.spans.get(P.id);ue?N.setAttribute("aria-colspan",String(ue)):N.removeAttribute("aria-colspan");let se=(ir||pa)&&!H?{node:f,columnId:P.id,rowIndex:w,columnIndex:P.visualIndex,value:b.getColumnModel().getCellValue(f.data,P.id)}:null,xe=ir&&v&&P.id!==X?{node:f,columnId:P.id,rowIndex:w,columnIndex:P.visualIndex,value:void 0}:null,We=se&&ir?ir(se):xe?ir(xe):void 0,pe=!1;if(We!==void 0?We instanceof Node&&N.childNodes.length===1&&N.firstChild===We?pe=!0:typeof We=="string"?N.textContent=We:N.replaceChildren(We):v?P.id===X?N.replaceChildren(rl(v)):N.replaceChildren(...bc(v,P.id)):R?P.id===Z?(N.replaceChildren(nl(f)),ka(N,f,$)):N.replaceChildren():(Ji(N,P,f),$&&P.id===Z&&ka(N,f,$)),Q&&!pe){let Me=yc(w,P.id);N.classList.toggle("kanuni-datagrid-cell--span",Me?.kind==="draw"),N.classList.toggle("kanuni-datagrid-cell--span-covered",Me?.kind==="covered");let Ne=We!==void 0;if(Me?.kind==="covered"&&I!==P.id&&!Ne)N.replaceChildren();else if(Me?.kind==="draw"){let qu=L("kanuni-datagrid-span-box");qu.style.height=`${Me.height}px`,qu.append(...Array.from(N.childNodes)),N.appendChild(qu)}}else Q||N.classList.remove("kanuni-datagrid-cell--span","kanuni-datagrid-cell--span-covered");if(Cu){let Me=!H&&!!Ba(f.key,P.id,f.data);N.classList.toggle("kanuni-datagrid-cell--noted",Me)}N.id=`${t.gridId}-cell-${String(f.key)}-${P.id}`,N.setAttribute("aria-colindex",String(ya()+P.visualIndex+1)),N.classList.toggle("kanuni-datagrid-cell--focused",I===P.id);let ke=f.kind==="data"?b.getFindMatchKind(f.key,P.id):null;N.classList.toggle("kanuni-datagrid-cell--find-match",ke!==null),N.classList.toggle("kanuni-datagrid-cell--find-active",ke==="active");let Qe=N.getAttribute("data-slot-classes");if(Qe)for(let Me of Qe.split(" "))N.classList.remove(Me);let Ot=se&&pa?pa(se):void 0,Ft=P.def.cellClassName,we=[H?void 0:typeof Ft=="function"?Ft({value:b.getColumnModel().getCellValue(f.data,P.id),row:f.data,node:f,column:P.def}):Ft,Ot].filter(Boolean).join(" ")||void 0;if(we){for(let Me of we.split(" "))N.classList.add(Me);N.setAttribute("data-slot-classes",we)}else Qe&&N.removeAttribute("data-slot-classes")}}let ul=t.columns.some(d=>d.autoHeight);function wc(){if(!ul)return;let d=b.getVirtualWindow(),f=b.getRows(),w=new Map(b.getMeasuredRowHeights()),g=!1;for(let A=d.rows.start;A<d.rows.end&&A<f.length;A++){let v=f[A];if(!v||v.kind!=="data")continue;let S=A-d.rows.start,y=Pt[S]?.root;if(!y)continue;let T=y.getBoundingClientRect().height;T>0&&w.get(v.key)!==T&&(w.set(v.key,T),g=!0)}g&&b.setMeasuredRowHeights(w)}let tn={start:0,end:0};function yc(d,f){let w=b.getCellSpans(f);if(w.length===0)return null;let g=R0(w,d,tn.start,tn.end);if(!g)return null;if(g.role==="covered")return{kind:"covered"};let A=b.getRowOffset(g.drawStart);return{kind:"draw",height:b.getRowOffset(g.drawEnd)+b.getRowHeightAt(g.drawEnd)-A}}function Ec(d,f){let w=b.isRowLoadFailed(f),g=w?"failed":"loading";if(d.dataset.holeState===g)return;d.dataset.holeState=g,d.classList.toggle("kanuni-datagrid-row--load-failed",w),w?d.removeAttribute("aria-busy"):d.setAttribute("aria-busy","true");let A=d.firstElementChild;if(!w)A.replaceChildren(L("kanuni-datagrid-loading-bar","span"));else{let v=L("kanuni-datagrid-load-failed-text","span");v.textContent=V.rowsLoadFailed;let S=document.createElement("button");S.className="kanuni-datagrid-retry-button",S.type="button",S.setAttribute("data-retry-load",""),S.textContent=V.retryLoad,S.addEventListener("click",()=>b.retryFailedLoads()),A.replaceChildren(v,S)}}function rl(d){let f=L("kanuni-datagrid-group-inline","span");f.style.paddingInlineStart=`${d.level*16}px`;let w=L("kanuni-datagrid-group-twisty","span");w.setAttribute("aria-hidden","true"),w.textContent=d.expanded?"\u25BE":"\u25B8";let g=b.getColumnModel().getDef(d.columnId),A=L("kanuni-datagrid-group-caption","span");A.textContent=`${g?.headerName??d.columnId}:`;let v=L("kanuni-datagrid-group-label","span");v.textContent=Ut(g,d.value)??d.display??(d.label===""?V.filterBlank:d.label);let S=L("kanuni-datagrid-group-count","span");return S.textContent=`(${d.count})`,Ki?f.append(w,v,S):f.append(w,A,v,S),f}function bc(d,f){if(!d.aggregates)return[];let w=b.getSummaryDefs().find(A=>A.columnId===f);if(!w)return[];let g=L("kanuni-datagrid-group-aggregate-value","span");return g.textContent=Vr(w,d.aggregates[mu(w.columnId,w.type)],b.getColumnModel().getDef(f)),[g]}function nl(d){let f=L("kanuni-datagrid-tree-path-label","span");return f.textContent=d.label,f}function ka(d,f,w){let g=L(`kanuni-datagrid-tree-cell${w.ancestorOnly?" kanuni-datagrid-tree-cell--ancestor":""}`,"span");if(g.style.paddingInlineStart=`${w.depth*16}px`,w.hasChildren){let A=document.createElement("button");A.type="button",A.className="kanuni-datagrid-tree-toggle",A.setAttribute("data-tree-toggle",""),A.setAttribute("aria-expanded",String(w.expanded)),A.setAttribute("aria-label",w.expanded?V.collapseTreeRow:V.expandTreeRow),A.textContent=w.expanded?"\u25BE":"\u25B8",A.addEventListener("mousedown",v=>v.stopPropagation()),A.addEventListener("click",v=>{v.stopPropagation(),b.toggleTreeRow(f.key)}),g.appendChild(A)}else g.appendChild(L("kanuni-datagrid-tree-toggle kanuni-datagrid-tree-toggle--leaf","span"));g.append(...Array.from(d.childNodes)),d.appendChild(g)}let Ba=(d,f,w)=>Cu?Cu.get({rowKey:d,columnId:f,row:w})??null:null,al=null,uu=ha?L("kanuni-datagrid-overlay"):null;uu&&(uu.style.position="absolute",uu.style.inset="0",uu.style.pointerEvents="none",qe.appendChild(uu));function Ac(){if(!ha||!uu)return;let d=ha();d!==al&&(al=d,d?uu.replaceChildren(d):uu.replaceChildren())}function xc(d){let f=b.getColumnLayout(),w=Array.from(Zt.children);ne.setAttribute("aria-rowcount",String(Ca()+d+w.length)),ne.setAttribute("aria-colcount",String(ya()+f.left.length+f.center.length+f.right.length)),b.getSelectionMode()==="multiple"?ne.setAttribute("aria-multiselectable","true"):ne.removeAttribute("aria-multiselectable"),w.forEach((g,A)=>g.setAttribute("aria-rowindex",String(Ca()+d+A+1)))}function un(){Ac(),sr&&Pi();let d=b.getVirtualWindow(),f=b.getRows(),w=$u?{...d,rows:{...d.rows,start:0,end:f.length,offsetY:0,totalHeight:0}}:d;mc(f),xc(f.length),qe.style.height=`${w.rows.totalHeight}px`,Ae.style.transform=`translateY(${w.rows.offsetY}px)`,_u=b.getFindNeedle()||(qd?Ir(b.getSearchText()):"");let g=Math.max(0,Math.min(w.rows.end,f.length)-w.rows.start);for(tn.start=w.rows.start,tn.end=Math.min(w.rows.end,f.length)-1;Pt.length>g;)Pt.pop().root.remove();for(let A=0;A<g;A++){let v=w.rows.start+A,S=f[v];if(!S){let R=Pt[A];if(!R||R.kind!=="loading"){let H=en("loading");R?Ae.replaceChild(H.root,R.root):Ae.appendChild(H.root),Pt[A]=H,R=H}R.root.setAttribute("aria-rowindex",String(v+2)),R.root.style.height=`${b.getDataRowHeight()??b.getRowHeight()}px`,Ec(R.root,v);continue}let y=S.kind==="data"?"data":S.kind==="group"?wa?"data":"group":S.kind==="detail"||S.kind==="editform"||S.kind==="message"?"panel":"stub",T=Pt[A];if(!T||T.epoch!==Lt||T.kind!==y){let R=en(y);T?Ae.replaceChild(R.root,T.root):Ae.appendChild(R.root),Pt[A]=R,T=R}Sa(T,S,v)}wc(),ol()}let rn=[];function ol(){if(!b.hasStickyGroupHeaders())return;let d=$u?[]:b.getStickyGroupRows();for(rt.style.width=`${b.getColumnLayout().totalWidth}px`;rn.length>d.length;)rn.pop().wrap.remove();let f=wa?"data":"group";d.forEach((w,g)=>{let A=rn[g];if(!A||A.rs.epoch!==Lt||A.rs.kind!==f){let v=en(f),S=A?.wrap??L("kanuni-datagrid-sticky-group");S.textContent="",S.appendChild(v.root),A||rt.appendChild(S),A={wrap:S,rs:v},rn[g]=A}Sa(A.rs,w.node,w.index),A.rs.root.removeAttribute("aria-rowindex"),A.wrap.style.top=`${w.offset}px`,A.wrap.style.height=`${w.height}px`,A.wrap.style.zIndex=String(d.length-g),A.wrap.classList.toggle("kanuni-datagrid-sticky-group--last",g===d.length-1),A.wrap.querySelectorAll("button, input, select, textarea, a[href], [tabindex]").forEach(v=>v.setAttribute("tabindex","-1"))})}rt.addEventListener("click",d=>{let w=d.target.closest("[data-group-key]")?.getAttribute("data-group-key");w&&b.scrollToRow(w)});let nn=ua(Ud??(b.isRemote()?200:0));function il(d,f,w,g){let A=b.getColumnModel().getDef(f);if(!A?.renderFilter)return()=>{};let v=()=>w==="row"?b.getColumnFilter(f,rr):b.getColumnFilter(f,Ou)??b.getColumnFilter(f,hu),S=new Set,y=b.events.on("filterChanged",()=>{let R=v();S.forEach(H=>H(R))}),T=A.renderFilter(d,{columnId:f,column:A,surface:w,getValue:v,setValue:R=>b.setColumnFilter(f,R,w==="row"?rr:Ou),close:g,onValueChange:R=>(S.add(R),()=>S.delete(R))});return()=>{y(),S.clear(),typeof T=="function"&&T()}}let wr=[],yr=new Map,Ta=!1;function vc(){!x||Ta||Jt.querySelectorAll("select[data-filter-operator-for]").forEach(d=>{let f=d.getAttribute("data-filter-operator-for");if(nn.isPending(f))return;let w=b.getColumnModel().getDef(f),g=b.getColumnFilter(f,rr),A=yr.get(f)??"",v=d.parentElement?.querySelector("input.kanuni-datagrid-filter-input"),S=A;if(g){let y=Ei(g,w);S=y?.operatorId??"",y&&v&&(v.value=y.text)}else fu(w,A)?.operandType==="none"&&(S="");yr.set(f,S),d.value=S,v&&(v.disabled=fu(w,S)?.operandType==="none")})}function Ra(){if(!x)return;if(wr.forEach(g=>g()),wr=[],Jt.textContent="",xt>0){let g=L("kanuni-datagrid-filter-cell kanuni-datagrid-filter-cell--pinned");g.setAttribute("role","gridcell"),g.style.width=`${xt}px`,g.style.flex="none",g.style.insetInlineStart="0px",Jt.appendChild(g)}let d=!1,f=null,w=()=>{if(!f){f=document.createElement("datalist"),f.id=`${t.gridId}-filter-periods`;for(let g of yd(Ri)){let A=document.createElement("option");A.value=g,f.appendChild(A)}Jt.appendChild(f)}return f.id};for(let g of vt){if(!g.pinned&&!d){if(at>0){let S=L("kanuni-datagrid-spacer");S.style.width=`${at}px`,S.style.flex="none",Jt.appendChild(S)}d=!0}let A=L(`kanuni-datagrid-filter-cell${g.pinned?" kanuni-datagrid-filter-cell--pinned":""}`);A.setAttribute("role","gridcell"),A.style.width=`${g.width}px`,A.style.flex="none",g.pinned==="left"&&(A.style.insetInlineStart=`${g.inset}px`),g.pinned==="right"&&(A.style.insetInlineEnd=`${g.inset}px`);let v=g.def.renderFilter;if(g.def.filterable!==!1&&v){let S=L("kanuni-datagrid-filter-custom");S.setAttribute("data-filter-for",g.id),A.appendChild(S),wr.push(il(S,g.id,"row",()=>{}))}else if(g.def.filterable!==!1){let S=document.createElement("input");S.className="kanuni-datagrid-filter-input",S.setAttribute("aria-label",bt(V.filterPopupAria,{column:g.def.headerName??g.id})),S.setAttribute("data-filter-for",g.id);let y=ea(g.def),T=()=>fu(g.def,yr.get(g.id)??"");g.def.dataType==="date"&&!T()&&S.setAttribute("list",w());let R=()=>{let I=T();Ta=!0;try{b.setColumnFilter(g.id,I?bd(g.id,S.value,I):Ed(g.id,S.value,g.def.dataType,Ri),rr)}finally{Ta=!1}};if(y.length>0){let I=document.createElement("select");I.className="kanuni-datagrid-filter-operator",I.setAttribute("aria-label",bt(V.filterOperatorAria,{column:g.def.headerName??g.id})),I.setAttribute("data-filter-operator-for",g.id);let $=[["",V.filterOperatorDefault],...y.map(Z=>[Z.id,Z.label])];for(let[Z,Q]of $){let N=document.createElement("option");N.value=Z,N.textContent=Q,I.appendChild(N)}let X=Ei(b.getColumnFilter(g.id,rr),g.def);X&&(yr.set(g.id,X.operatorId),S.value=X.text),I.value=T()?.id??"",S.disabled=T()?.operandType==="none",I.addEventListener("change",()=>{yr.set(g.id,I.value),S.disabled=T()?.operandType==="none",T()?S.removeAttribute("list"):g.def.dataType==="date"&&S.setAttribute("list",w()),nn.cancel(g.id),R()}),A.appendChild(I)}S.addEventListener("input",()=>nn.schedule(g.id,R));let H=()=>{nn.cancel(g.id),R()};S.addEventListener("keydown",I=>{I.key==="Enter"&&H()}),S.addEventListener("blur",H),A.appendChild(S)}Jt.appendChild(A)}}let Na=()=>{},ll=null;function Fc(){let d=s0(ki);if(!d.show)return;let f=d.search,w=document.createElement("input");w.type="search",w.className="kanuni-datagrid-toolbar-search",w.placeholder=f?.placeholder??V.toolbarSearch,w.setAttribute("aria-label",f?.ariaLabel??V.toolbarSearch),w.setAttribute("data-testid","dg-toolbar-search"),w.value=b.getSearchText(),f?.maxLength!==void 0&&(w.maxLength=f.maxLength);let g=L("kanuni-datagrid-toolbar-search-error","span");g.id=`kanuni-dg-search-error-${++xg}`,g.setAttribute("role","alert"),g.setAttribute("data-testid","dg-toolbar-search-error"),g.style.display="none";let A=()=>{let Q=f?.validate?.(w.value)??null;return g.textContent=Q??"",g.style.display=Q===null?"none":"",Q===null?(w.removeAttribute("aria-invalid"),w.removeAttribute("aria-describedby")):(w.setAttribute("aria-invalid","true"),w.setAttribute("aria-describedby",g.id)),Q===null},v=null,S=!1,y=()=>{v&&clearTimeout(v),v=null,S=!1;let Q=w.value.trim();A()&&b.getSearchText()!==Q&&b.setSearchText(Q)};ll=b.events.on("filterChanged",({searchText:Q})=>{S||w.value.trim()===Q||(w.value=Q,A())}),w.addEventListener("input",()=>{S=!0,v&&clearTimeout(v),v=null,A()&&(v=setTimeout(y,f?.debounce??Zd))}),f?.applyOnBlur!==!1&&(w.addEventListener("blur",y),w.addEventListener("keydown",Q=>{Q.key==="Enter"&&y()}));let T=L("kanuni-datagrid-toolbar-spacer"),R=null;if(d.columns??oe){let Q=document.createElement("button");Q.type="button",M0(Q,"columns",V.toolbarColumns??"Columns"),Q.setAttribute("aria-haspopup","dialog"),Q.addEventListener("click",()=>{let N=Q.getBoundingClientRect();Cl({left:N.left,top:N.bottom+2})}),R=Q}let H=Xt&&Qd,I=Xt&&Xd,$=document.createElement("button");$.type="button",$.className="kanuni-datagrid-toolbar-icon-button",$.setAttribute("aria-haspopup","menu"),$.setAttribute("aria-label",V.exportMenu),$.setAttribute("data-testid","dg-export-menu"),$.title=V.exportMenu,$.appendChild(Tg());let X=null;$.addEventListener("click",()=>{if(X)return;let Q=$.getBoundingClientRect();Gt({left:Q.right-190,top:Q.bottom+2},N=>{N.setAttribute("role","menu"),N.setAttribute("aria-label",V.exportMenu);let P=[{kind:"csv",label:V.exportCsv,testId:"dg-export-csv",on:b.canExportAll()},{kind:"excel",label:V.exportExcel,testId:"dg-export-excel",on:H},{kind:"excel-selected",label:V.exportExcelSelected,testId:"dg-export-excel-selected",on:H},{kind:"pdf",label:V.exportPdf,testId:"dg-export-pdf",on:I}];for(let ue of P){if(!ue.on)continue;let se=document.createElement("button");se.type="button",se.className="kanuni-datagrid-menu-item",se.setAttribute("role","menuitem"),se.setAttribute("data-testid",ue.testId),se.textContent=ue.label,ue.kind==="excel-selected"&&b.getSelectedCount()===0&&(se.disabled=!0),se.addEventListener("click",()=>{X=ue.kind,$.disabled=!0,ze(),bi(b,ue.kind).then(xe=>{X=null,$.disabled=!1,xe.error&&Na(xe.error)})}),N.appendChild(se)}},"kanuni-datagrid-filter-popup kanuni-datagrid-export-menu")});for(let Q of Yd??[])Mt.append(Q);f&&Mt.append(w,g),Mt.append(T),R&&Mt.append(R),d.export&&(b.canExportAll()||H||I)&&Mt.append($);for(let Q of jd??[])Mt.append(Q);let Z=L("kanuni-datagrid-toolbar-error","span");Z.setAttribute("role","alert"),Z.style.display="none",Mt.append(Z),Na=Q=>{Z.textContent=Q,Z.style.display=""}}function sl(){if(!Et.isConnected)return;let d=b.getPage(),f=b.getPageCount(),w=document.activeElement,g=w instanceof HTMLElement&&Et.contains(w)?w.getAttribute("data-pager"):null;Et.textContent="";let A=(T,R,H,I,$)=>{let X=document.createElement("button");return X.type="button",X.textContent=T,X.setAttribute("aria-label",R),X.setAttribute("data-pager",$),X.disabled=H,X.addEventListener("click",I),X},v=L("kanuni-datagrid-pager-buttons"),S=d<=0,y=d>=f-1;if(v.append(A("\xAB",V.pagerFirst??"First",S,()=>b.setPage(0),"first"),A("\u2039",V.pagerPrevious??"Previous",S,()=>b.setPage(d-1),"previous")),Ur?.pageButtons)for(let T of Dd(d,f,Ur.maxPageButtons)){if(typeof T!="number"){let I=L("kanuni-datagrid-pager-gap","span");I.textContent="\u2026",I.setAttribute("aria-hidden","true"),v.append(I);continue}let R=String(T+1),H=A(R,V.pagerPageButton.replace("{n}",R),!1,()=>b.setPage(T),`page-${T}`);H.classList.add("kanuni-datagrid-pager-page"),T===d&&H.setAttribute("aria-current","page"),v.append(H)}else{let T=L("kanuni-datagrid-pager-current","span");T.textContent=`${d+1} / ${f}`,v.append(T)}if(v.append(A("\u203A",V.pagerNext??"Next",y,()=>b.setPage(d+1),"next"),A("\xBB",V.pagerLast??"Last",y,()=>b.setPage(f-1),"last")),Et.appendChild(v),g!==null){let T=Et.querySelector(`[data-pager="${g}"]`);(T&&!T.disabled?T:Et.querySelector('[aria-current="page"]')??Et.querySelector("button:not(:disabled)"))?.focus()}}function Ma(){if(!yt)return;let d=b.getColumnLayout(),f=b.getSummaries(),w=new Map(b.getSummaryDefs().map(A=>[A.columnId,A]));if(je.textContent="",je.style.width=`${d.totalWidth+xt}px`,xt>0){let A=L("kanuni-datagrid-footer-cell kanuni-datagrid-footer-cell--pinned");A.style.width=`${xt}px`,A.style.insetInlineStart="0px",je.appendChild(A)}let g=!1;for(let A of vt){if(!A.pinned&&!g){if(at>0){let T=L("kanuni-datagrid-spacer");T.style.width=`${at}px`,je.appendChild(T)}g=!0}let v=w.get(A.id),S=A.def.dataType==="number"||A.def.dataType==="bigint",y=L(`kanuni-datagrid-footer-cell${A.pinned?" kanuni-datagrid-footer-cell--pinned":""}${S?" kanuni-datagrid-footer-cell--number":""}${v?" kanuni-datagrid-footer-cell--active":""}`);if(y.setAttribute("role","gridcell"),y.setAttribute("data-column-id",A.id),y.setAttribute("data-summary-type",v?.type??""),y.style.width=`${A.width}px`,A.pinned==="left"&&(y.style.insetInlineStart=`${A.inset}px`),A.pinned==="right"&&(y.style.insetInlineEnd=`${A.inset}px`),v){y.title=`${ci(v,fa)} \u2014 ${A.def.headerName??A.id}`;let T=L("kanuni-datagrid-footer-value","span");T.textContent=Vr(v,f[mu(v.columnId,v.type)],A.def),y.appendChild(T)}else{let T=L("kanuni-datagrid-footer-hint","span");T.textContent=h&&!Be(A.id)?"\xB7":"",y.appendChild(T)}je.appendChild(y)}}function Dc(){yu()>0?wt.isConnected||Ke.insertBefore(wt,rt.isConnected?rt:qe):wt.remove(),Mi()>0?Zt.isConnected||Ke.insertBefore(Zt,qe.nextSibling):Zt.remove(),rt.style.setProperty("--dg-sticky-below",`${yu()>0?yu()*b.getRowHeight()+1:0}px`)}function an(){let d=eu;eu=re;try{Sc()}finally{eu=d}}function Sc(){let d=(f,w,g,A)=>{f.textContent="",w.forEach((v,S)=>{let y=en("data");Sa(y,{kind:"data",key:`__pinned-${g}-${S}`,sourceIndex:-1,data:v},S),y.root.classList.remove("kanuni-datagrid-row--odd"),y.root.setAttribute("aria-rowindex",String(ga+Eu+S+1)),y.root.removeAttribute("aria-selected"),tl(y.root,null),y.rowNumberCell&&(y.rowNumberCell.textContent="");let T=A[S-(w.length-A.length)];T!==void 0?y.root.setAttribute("data-pinned-row-key",String(T)):y.root.removeAttribute("data-pinned-row-key"),f.appendChild(y.root)})};for(let[f,w,g]of[["top",wt,p],["bottom",Zt,C]]){let A=b.getPinnedRows(f);if(g.length+A.length===0){w.textContent="";continue}d(w,[...g,...A.map(v=>v.row)],f,A.map(v=>v.key))}}let on=d=>{let f=d.target.closest("[data-pinned-row-key]");if(!f)return;let w=f.getAttribute("data-pinned-row-key"),g=b.getPinnedRowKeys(),A=[...g.top,...g.bottom].find(T=>String(T)===w);if(A===void 0)return;let v=dl(A,!1);if(v.length===0)return;d.preventDefault();let S=b.getPinnedRows(b.getRowPinSide(A)??"top").find(T=>T.key===A)?.row,y={row:S,node:{kind:"data",key:A,sourceIndex:-1,data:S},rowIndex:-1,columnId:d.target.closest("[data-column-id]")?.getAttribute("data-column-id")??null,selectedKeys:b.getSelectedKeys()};Gt({left:d.clientX,top:d.clientY},T=>{T.setAttribute("role","menu"),sn(T,v,y)},"kanuni-datagrid-context-menu")};wt.addEventListener("contextmenu",on),Zt.addEventListener("contextmenu",on);function dl(d,f){if(!b.isRowPinningEnabled()||!b.canPinRow(d))return[];let w=b.getRowPinSide(d),g=[];return w!=="top"&&g.push({id:"__dg-pin-top",label:V.pinRowTop,onSelect:()=>b.pinRow(d,"top")}),w!=="bottom"&&g.push({id:"__dg-pin-bottom",label:V.pinRowBottom,onSelect:()=>b.pinRow(d,"bottom")}),w&&g.push({id:"__dg-unpin",label:V.unpinRow,onSelect:()=>b.pinRow(d,null)}),f&&g.length>0?[{id:"__dg-sep-pin",separator:!0},...g]:g}let Du=null,Su=null,Ia=null;function ze(d=!0){Su?.(),Su=null,Du?.remove(),Du=null;let f=Ia;Ia=null,d&&f?.()}function La(d){return Pe.querySelector(`.kanuni-datagrid-header-cell[data-column-id="${CSS.escape(d)}"]`)}function cl(d,f){d.addEventListener("keydown",w=>{let g=Array.from(d.querySelectorAll('[role="menuitem"]:not(:disabled)'));if(g.length===0)return;let A=g.indexOf(document.activeElement),v=g[A],S;switch(w.key){case"ArrowDown":S=g[(A+1)%g.length];break;case"ArrowUp":S=g[A<=0?g.length-1:A-1];break;case"Home":S=g[0];break;case"End":S=g[g.length-1];break;case"ArrowRight":case"Enter":case" ":if(v?.getAttribute("aria-haspopup")!=="menu")return;v.click(),S=Du?.querySelector('.kanuni-datagrid-submenu [role="menuitem"]:not(:disabled)')??void 0;break;case"ArrowLeft":if(!f)return;f();break;case"Tab":ze();break;default:return}w.preventDefault(),w.stopPropagation(),S?.focus()})}function hl(d,f){let g=d.getBoundingClientRect();g.width===0&&g.height===0||(d.style.left=`${Math.max(8,Math.min(f.left,window.innerWidth-g.width-8))}px`,d.style.top=`${Math.max(8,Math.min(f.top,window.innerHeight-g.height-8))}px`)}function Gt(d,f,w="kanuni-datagrid-filter-popup",g){ze(!1);let A=document.activeElement instanceof HTMLElement?document.activeElement:null,v=A&&(A===ne||!A.contains(ne))?A:null,S=(v&&Pe.contains(v)?v.closest("[data-column-id]")?.getAttribute("data-column-id")??null:null)??g??null;Du=L(`${da(t)} kanuni-datagrid-portal`);let y=L(w);y.style.position="fixed",y.style.left=`${d.left}px`,y.style.top=`${d.top}px`,y.style.zIndex="1000",f(y),Du.appendChild(y),qt(t.portalContainer).appendChild(jt(Du,t.portalContainer)),hl(y,d),Ia=()=>{let I=S?La(S):null,$=v?.isConnected?v:I;$?.focus({preventScroll:!0}),$&&document.activeElement!==$&&I&&I.focus({preventScroll:!0})},y.getAttribute("role")==="menu"&&(cl(y),y.querySelector('[role="menuitem"]:not(:disabled)')?.focus({preventScroll:!0}));let T=Du,R=I=>{T.contains(I.target)||ze(!1)},H=I=>{I.key==="Escape"&&ze()};document.addEventListener("pointerdown",R,!0),document.addEventListener("keydown",H,!0),Su=()=>{document.removeEventListener("pointerdown",R,!0),document.removeEventListener("keydown",H,!0)}}let ru=25,ml=8,Pa=new Map,Ga=0;function fl(d,f){let w=f.getBoundingClientRect(),g=++Ga;if(b.getColumnModel().getDef(d)?.renderFilter){let S=null,y=null;Gt({left:w.left,top:w.bottom+2},H=>{y=H,H.classList.add("kanuni-datagrid-filter-popup--custom"),H.setAttribute("role","dialog"),H.setAttribute("aria-label",bt(V.filterPopupAria,{column:b.getColumnModel().getDef(d)?.headerName??d})),H.setAttribute("data-column-id",d),H.tabIndex=-1,S=il(H,d,"popup",()=>ze())},void 0,d);let T=y;T&&(T.querySelector('input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), a[href], [tabindex]:not([tabindex="-1"])')??T).focus({preventScroll:!0});let R=Su;Su=()=>{R?.(),S?.(),S=null};return}let A=null;Gt({left:w.left,top:w.bottom+2},S=>{S.setAttribute("role","dialog"),S.setAttribute("aria-label",bt(V.filterPopupAria,{column:b.getColumnModel().getDef(d)?.headerName??d}));let y=[],T=!0,R=new Set,H=!1,I=0,$="",X=[],Z={value:void 0,label:""},Q=_=>_.value===null||_.value===void 0,N=[],P=_=>_===Z?ta:Rt(_),ue=_=>_===Z?V.filterNonBlank:ui(_,{filterBlank:V.filterBlank,filterEmptyText:V.filterEmptyText,filterSpace:V.filterSpace,filterSpaces:V.filterSpaces}),se=null,xe="",We=[],pe=null,ke=document.createElement("input");ke.type="search",ke.className="kanuni-datagrid-filter-search",ke.placeholder=V.search,ke.setAttribute("data-testid","dg-filter-search");let Qe=null;O&&(Qe=document.createElement("button"),Qe.type="button",Qe.className="kanuni-datagrid-filter-custom",Qe.setAttribute("data-testid","dg-filter-custom"),Qe.textContent=V.filterCustom,Qe.addEventListener("click",()=>{ze(),O({columnId:d})}));let Ot=L("kanuni-datagrid-filter-actions"),Ft=document.createElement("button");Ft.type="button",Ft.textContent=V.filterSelectAll,Ft.addEventListener("click",()=>{if(pe)return pe.selectAll();if(H=!0,$.trim()==="")R=new Set(y.map(Rt));else for(let _ of X)R.add(Rt(_));lt()});let Er=document.createElement("button");Er.type="button",Er.textContent=V.clear,Er.addEventListener("click",()=>{if(pe)return pe.clear();if(H=!0,$.trim()==="")R=new Set;else for(let _ of X)R.delete(Rt(_));lt()}),Ot.append(Ft,Er);let we=L("kanuni-datagrid-filter-list");we.setAttribute("role","listbox"),we.setAttribute("aria-multiselectable","true");let Me=document.createElement("div");Me.style.position="relative";let Ne=document.createElement("div");Me.appendChild(Ne),we.appendChild(Me);let qu=()=>{let _=Le($.trim());if(!_){X=y;let le=y.findIndex(Q);N=le<0?y:[...y.slice(0,le+1),Z,...y.slice(le+1)];return}se||(se=y.map(le=>Le(le.label))),X=xe!==""&&_.includes(xe)?We.filter(le=>Le(le.label).includes(_)):y.filter((le,he)=>se[he].includes(_)),xe=_,We=X,N=X},qc=_=>{let le=_.getRowCount(),he=_.isLoading();we.setAttribute("aria-busy",String(he)),we.setAttribute("aria-setsize",String(le));let ve=document.activeElement instanceof HTMLElement?document.activeElement.closest(".kanuni-datagrid-filter-item")?.getAttribute("data-index")??null:null;if(Ne.textContent="",he||le===0){Me.style.height="",Ne.style.transform="";let Ue=L("kanuni-datagrid-filter-empty");Ue.textContent=he?V.filterLoading:V.filterNoMatch,Ne.appendChild(Ue);return}Me.style.height=`${_.getWindow(we.scrollTop,240).totalHeight}px`;let $e=_.getWindow(we.scrollTop,Math.max(we.clientHeight,150));Me.style.height=`${$e.totalHeight}px`,Ne.style.transform=`translateY(${$e.offsetY}px)`;for(let Ue=$e.start;Ue<$e.end;Ue++){let Ie=_.getRow(Ue),Ge=L("kanuni-datagrid-filter-item");if(Ge.setAttribute("role","option"),Ge.setAttribute("data-index",String(Ue)),!Ie){Ge.classList.add("kanuni-datagrid-filter-item--pending"),Ge.setAttribute("aria-selected","false"),Ge.setAttribute("aria-busy","true");let Ht=document.createElement("span");Ht.setAttribute("aria-hidden","true"),Ht.textContent="\u2026",Ge.appendChild(Ht),Ne.appendChild(Ge);continue}let br=_.isChecked(Ie);Ge.setAttribute("aria-selected",String(br)),Ge.tabIndex=-1,Ge.setAttribute("data-value",Ie.label),Ue===I&&Ge.classList.add("kanuni-datagrid-filter-item--active");let lu=document.createElement("input");lu.type="checkbox",lu.readOnly=!0,lu.checked=br,lu.tabIndex=-1;let st=document.createElement("span");st.textContent=Ie.nonBlank?V.filterNonBlank:ui({value:Ie.blank?null:Ie.value,label:Ie.label},{filterBlank:V.filterBlank,filterEmptyText:V.filterEmptyText,filterSpace:V.filterSpace,filterSpaces:V.filterSpaces}),Ge.append(lu,st),Ge.addEventListener("click",()=>_.toggle(Ie)),Ge.addEventListener("focus",()=>{I=Ue,Cn()}),Ne.appendChild(Ge)}Cn(),_.ensure($e.start,$e.end),ve!==null&&Ne.querySelector(`[data-index="${I}"]`)?.focus({preventScroll:!0})},lt=()=>{if(pe&&!T)return qc(pe);if(we.setAttribute("aria-busy",String(T)),we.setAttribute("aria-setsize",String(N.length)),T){Me.style.height="",Ne.textContent="";let Ie=L("kanuni-datagrid-filter-empty");Ie.textContent=V.filterLoading,Ne.appendChild(Ie);return}if(N.length===0){Me.style.height="",Ne.style.transform="",Ne.textContent="";let Ie=L("kanuni-datagrid-filter-empty");Ie.textContent=V.filterNoMatch,Ne.appendChild(Ie);return}let _=we.clientHeight||240,le=Math.max(0,Math.floor(we.scrollTop/ru)-ml),he=Math.ceil(_/ru)+ml*2,ve=Math.min(le,Math.max(0,N.length-1)),$e=Math.min(N.length,ve+he);Me.style.height=`${N.length*ru}px`,Ne.style.transform=`translateY(${ve*ru}px)`;let Ue=document.activeElement instanceof HTMLElement?document.activeElement.closest(".kanuni-datagrid-filter-item")?.getAttribute("data-index")??null:null;Ne.textContent="";for(let Ie=ve;Ie<$e;Ie++){let Ge=N[Ie],br=P(Ge),lu=Ge===Z?Or(y,R):R.has(br),st=L("kanuni-datagrid-filter-item");st.setAttribute("role","option"),st.setAttribute("aria-selected",String(lu)),st.tabIndex=-1,st.setAttribute("data-value",Ge.label),st.setAttribute("data-index",String(Ie)),Ie===I&&st.classList.add("kanuni-datagrid-filter-item--active");let Ht=document.createElement("input");Ht.type="checkbox",Ht.readOnly=!0,Ht.checked=lu,Ht.tabIndex=-1;let Xl=document.createElement("span");Xl.textContent=ue(Ge),st.append(Ht,Xl),st.addEventListener("click",()=>ql(br)),st.addEventListener("focus",()=>{I=Ie,Cn()}),Ne.appendChild(st)}Cn(),Ue!==null&&Ne.querySelector(`[data-index="${I}"]`)?.focus({preventScroll:!0})};function Cn(){let _=!1;for(let le of Array.from(Ne.querySelectorAll(".kanuni-datagrid-filter-item"))){if(le.getAttribute("aria-busy")==="true")continue;let he=Number(le.getAttribute("data-index"))===I;le.tabIndex=he?0:-1,le.classList.toggle("kanuni-datagrid-filter-item--active",he),_||=he}we.tabIndex=_||!Ne.querySelector(".kanuni-datagrid-filter-item")?-1:0}let ql=_=>{if(H=!0,_===ta){let le=Or(y,R);for(let he of y)Q(he)&&!le?R.delete(pt):R.add(Rt(he))}else R.has(_)?R.delete(_):R.add(_);for(let le of Ne.querySelectorAll(".kanuni-datagrid-filter-item")){let he=N[Number(le.getAttribute("data-index"))];if(!he)continue;let ve=he===Z?Or(y,R):R.has(P(he));le.setAttribute("aria-selected",String(ve));let $e=le.querySelector("input");$e&&($e.checked=ve)}};we.addEventListener("scroll",()=>{Pa.set(d,we.scrollTop),lt()});let wn=null,Za=()=>{if(I=0,pe){let _=pe;wn&&clearTimeout(wn),wn=setTimeout(()=>{wn=null,_.getSearch()!==$.trim()&&(_.setSearch($),we.scrollTop=0,lt())},150);return}qu(),lt()};ke.addEventListener("input",()=>{$=ke.value,Za()});let Ja=_=>{if(pe){let ve=pe.getRowCount();if(ve===0)return;I=Math.max(0,Math.min(ve-1,_)),_<=0?we.scrollTop=0:_>=ve-1&&(we.scrollTop=we.scrollHeight),lt();let $e=S.querySelector(`.kanuni-datagrid-filter-item[data-index="${I}"]`);$e?.focus(),$e?.scrollIntoView?.({block:"nearest"});return}if(N.length===0)return;I=Math.max(0,Math.min(N.length-1,_));let le=I*ru,he=we.clientHeight||240;le<we.scrollTop?we.scrollTop=le:le+ru>we.scrollTop+he&&(we.scrollTop=le+ru-he),lt(),S.querySelector(`.kanuni-datagrid-filter-item[data-index="${I}"]`)?.focus()},jl=()=>{if(T)return;if(pe){if(pe.isLoading())return;b.setColumnFilter(d,pe.buildFilter(d),Ou),ze();return}let _;if(R.size===y.length)_=null;else if(Or(y,R))_={columnId:d,operator:"isnotnull"};else{let le=R.has(pt),he=y.filter(ve=>!Q(ve)&&R.has(Rt(ve)));he.length===0?_=le?{columnId:d,operator:"isnull"}:null:le?_={logic:"or",nodes:[{columnId:d,operator:"in",value:he.map(ve=>ve.value)},{columnId:d,operator:"isnull"}]}:_={columnId:d,operator:"in",value:he.map(ve=>ve.value)}}b.setColumnFilter(d,_,Ou),ze()};S.tabIndex=-1,S.addEventListener("keydown",_=>{let le=_.target===ke;if(!((_.key==="Enter"||_.key===" ")&&_.target instanceof HTMLButtonElement)){if(_.key==="Tab"){let he=Array.from(S.querySelectorAll('input:not([disabled]), button:not([disabled]), [tabindex="0"]')),ve=he[0],$e=he[he.length-1],Ue=document.activeElement;ve&&$e&&(!_.shiftKey&&(Ue===$e||Ue===S)?(_.preventDefault(),ve.focus()):_.shiftKey&&(Ue===ve||Ue===S)&&(_.preventDefault(),$e.focus()));return}if(_.key==="Backspace"&&!le){_.preventDefault(),ke.focus(),$=$.slice(0,-1),ke.value=$,Za();return}if(_.key==="ArrowDown"){_.preventDefault(),Ja(le?0:I+1);return}if(_.key==="ArrowUp"){_.preventDefault(),Ja(le?pe?0:N.length-1:I-1);return}if(!le&&(_.key==="Home"||_.key==="End")){_.preventDefault(),Ja(_.key==="Home"?0:(pe?pe.getRowCount():N.length)-1);return}if(_.key===" "&&!le){if(_.preventDefault(),pe){let ve=pe.getRow(I);ve&&pe.toggle(ve);return}let he=N[I];he&&ql(P(he));return}if(_.key==="Enter"){_.preventDefault(),jl();return}!le&&_.key.length===1&&_.key!==" "&&!_.ctrlKey&&!_.metaKey&&!_.altKey&&(_.preventDefault(),ke.focus(),$+=_.key,ke.value=$,Za())}});let Yl=L("kanuni-datagrid-filter-footer"),yn=document.createElement("button");yn.type="button",yn.textContent=V.cancel,yn.addEventListener("click",()=>ze());let Vt=document.createElement("button");Vt.type="button",Vt.className="kanuni-datagrid-filter-primary",Vt.setAttribute("data-testid","dg-filter-apply"),Vt.textContent=V.apply,Vt.disabled=!0,Vt.addEventListener("click",jl),Yl.append(yn,Vt),S.append(ke,...Qe?[Qe]:[],Ot,we,Yl),lt(),queueMicrotask(()=>{ke.isConnected&&ke.focus()});let Ql=_=>{y=_,se=null,xe="",T=!1,Vt.disabled=!1;let le=T0(b.getColumnFilter(d,Ou)??b.getColumnFilter(d,hu),y,{text:b.getColumnModel().getDataType(d)==="string"});le?(H=!0,R=new Set(le)):H||(R=new Set(y.map(Rt))),qu();let he=Pa.get(d);lt(),he&&(we.scrollTop=he,lt())},iu=b.openRemoteDistinct(d,ru);if(iu){pe=iu,A=iu,iu.subscribe(()=>{S.isConnected&&pe===iu&<()}),iu.start().then(_=>{if(Ga!==g||!S.isConnected){iu.dispose();return}if(_.kind==="paged"){T=!1,Vt.disabled=!1;let le=Pa.get(d);lt(),le&&(we.scrollTop=le,lt());return}iu.dispose(),pe=null,A=null,Ql(b.sortDistinctEntries(_.values))});return}b.getDistinctValueSetAsync(d).then(_=>{Ga!==g||!S.isConnected||Ql(_.entries)})},void 0,d);let v=Su;Su=()=>{v?.(),A?.dispose(),A=null}}function ln(d={}){let f=b.getClipboardText(d);b.notifyClipboardGesture("copy",f?f.split(`
|
|
18
|
+
`).length:0,()=>b.writeClipboard(f,"copy"))}function kc(d){if(de===!1)return[];let f=de===!0?{}:de,w=[],g=v=>{d&&w.length===0&&w.push({separator:!0,id:"__dg-sep"}),w.push(v)};f.copy!==!1&&g({id:"__dg-copy",label:V.menuCopy,shortcut:`${Tc}C`,onSelect:()=>ln()}),f.copyWithHeaders!==!1&&g({id:"__dg-copy-headers",label:V.menuCopyWithHeaders,onSelect:()=>ln({includeHeaders:!0})}),f.copyWithGroupHeaders!==!1&&Bc()&&g({id:"__dg-copy-group-headers",label:V.menuCopyWithGroupHeaders,onSelect:()=>ln({includeGroupHeaders:!0})});let A=(f.export===!1?[]:Array.isArray(f.export)?f.export:["csv","excel","excel-selected","pdf"]).filter(v=>v!=="csv"||b.canExportAll());if(A.length>0){let v=b.getSelectedCount()===0,S={csv:V.exportCsv,excel:V.exportExcel,"excel-selected":V.exportExcelSelected,pdf:V.exportPdf};g({id:"__dg-export",label:V.menuExport,items:A.map(y=>({id:`__dg-export-${y}`,label:S[y],disabled:y==="excel-selected"&&v,onSelect:()=>{bi(b,y).then(T=>{T.error&&Na(T.error)})}}))})}return w}function Bc(){let d=b.getColumnModel();return b.getVisualColumnIds().some(f=>{let w=d.getDef(f)?.band;return typeof w=="string"?w!=="":Array.isArray(w)&&w.length>0})}function Ig(d,f,w){let g=L("kanuni-datagrid-menu-row"),A=document.createElement("button");A.type="button",A.className="kanuni-datagrid-menu-item";let v=L("kanuni-datagrid-menu-label","span");if(v.textContent=d,A.appendChild(v),f){let S=L("kanuni-datagrid-menu-shortcut","span");S.textContent=f,A.appendChild(S)}return A.addEventListener("click",()=>{w(),ze()}),g.appendChild(A),g}let Tc=/Mac|iPhone|iPad|iPod/.test(navigator.platform??"")?"\u2318":"Ctrl+";function sn(d,f,w){let g=null,A=()=>{g?.remove(),g=null};f.forEach((v,S)=>{if(v.separator){let I=L("kanuni-datagrid-menu-separator");I.setAttribute("role","separator"),d.appendChild(I);return}let y=L("kanuni-datagrid-menu-row"),T=document.createElement("button");if(T.type="button",T.className="kanuni-datagrid-menu-item",T.setAttribute("role","menuitem"),T.setAttribute("data-item-index",String(S)),v.disabled&&(T.disabled=!0),v.icon!==void 0){let I=L("kanuni-datagrid-menu-icon","span");typeof v.icon=="string"?I.textContent=v.icon:I.appendChild(v.icon),T.appendChild(I)}let R=L("kanuni-datagrid-menu-label","span");if(R.textContent=v.label??"",T.appendChild(R),v.shortcut){let I=L("kanuni-datagrid-menu-shortcut","span");I.textContent=v.shortcut,T.appendChild(I)}let H=v.items??[];if(H.length>0){let I=L("kanuni-datagrid-menu-caret","span");I.textContent="\u203A",T.appendChild(I),T.setAttribute("aria-haspopup","menu"),T.setAttribute("aria-expanded","false");let $=()=>{A();let X=L("kanuni-datagrid-context-menu kanuni-datagrid-submenu");X.setAttribute("role","menu");let Z=T.getBoundingClientRect();X.style.left=`${Z.right}px`,X.style.top=`${Math.max(0,Z.top-4)}px`;for(let Q of H){if(Q.separator){let ue=L("kanuni-datagrid-menu-separator");ue.setAttribute("role","separator"),X.appendChild(ue);continue}let N=document.createElement("button");N.type="button",N.className="kanuni-datagrid-menu-item",N.setAttribute("role","menuitem"),Q.disabled&&(N.disabled=!0);let P=L("kanuni-datagrid-menu-label","span");P.textContent=Q.label??"",N.appendChild(P),N.addEventListener("click",()=>{Q.onSelect?.(w),ze()}),X.appendChild(N)}d.parentElement?.appendChild(X),hl(X,{left:Z.right,top:Math.max(0,Z.top-4)}),g=X,T.setAttribute("aria-expanded","true"),cl(X,()=>{A(),T.setAttribute("aria-expanded","false"),T.focus()})};T.addEventListener("mouseenter",$),T.addEventListener("click",$)}else T.addEventListener("mouseenter",A),T.addEventListener("click",()=>{v.onSelect?.(w),ze()});y.appendChild(T),d.appendChild(y)})}let pl=d=>{let w=d.target.closest(".kanuni-datagrid-row");if(!w||w.classList.contains("kanuni-datagrid-group-row"))return;let g=nu(d);if(g?.columnId&&b.notifyCell("cellContextMenu",g.node,g.rowIndex,g.columnId),!ye&&!de&&!b.isRowPinningEnabled()||!g||g.node.kind!=="data")return;d.preventDefault(),b.isRowSelected(g.node.key)||b.handleRowClick(g.node.key,{}),g.columnId&&b.focusCell(g.node.key,g.columnId);let A={row:g.node.data,node:g.node,rowIndex:g.rowIndex,columnId:g.columnId,selectedKeys:b.getSelectedKeys()},v=(typeof ye=="function"?ye(A):ye)??[],S=[...v,...Rc(A,v.length>0)],y=[...S,...dl(g.node.key,S.length>0)],T=kc(y.length>0);y.length===0&&T.length===0||Gt({left:d.clientX,top:d.clientY},R=>{R.setAttribute("role","menu"),sn(R,[...y,...T],A)},"kanuni-datagrid-context-menu")};function Rc(d,f){if(!Cu?.onChange||Cu.menu===!1)return[];let w=d.columnId;if(!w)return[];let g=d.node.key,A=Ba(g,w,d.row),v=[];return f&&v.push({separator:!0,id:"__note-sep"}),v.push({id:"__note-edit",label:A?V.editNote:V.addNote,onSelect:()=>Nc(g,w,d.row,A??"")}),A&&v.push({id:"__note-delete",label:V.deleteNote,onSelect:()=>Cu.onChange?.({rowKey:g,columnId:w,row:d.row,text:null})}),v}function Nc(d,f,w,g){let v=(ne.querySelector(`[data-row-key="${CSS.escape(String(d))}"] [data-column-id="${CSS.escape(f)}"]`)??ne).getBoundingClientRect();queueMicrotask(()=>{Gt({left:v.left,top:v.bottom+2},S=>{S.setAttribute("aria-label",V.noteEditorAria);let y=document.createElement("textarea");y.className="kanuni-datagrid-note-input",y.rows=4,y.value=g,y.setAttribute("aria-label",V.noteEditorAria),y.placeholder=V.notePlaceholder,y.setAttribute("data-testid","dg-note-input");let T=()=>{let $=y.value.trim();ze(),Cu?.onChange?.({rowKey:d,columnId:f,row:w,text:$===""?null:$})};y.addEventListener("keydown",$=>{$.key==="Enter"&&($.ctrlKey||$.metaKey)&&($.preventDefault(),T()),$.key==="Escape"&&($.preventDefault(),ze())});let R=L("kanuni-datagrid-note-actions"),H=document.createElement("button");H.type="button",H.className="kanuni-datagrid-note-cancel",H.textContent=V.cancel,H.addEventListener("click",()=>ze());let I=document.createElement("button");I.type="button",I.className="kanuni-datagrid-note-save",I.setAttribute("data-testid","dg-note-save"),I.textContent=V.save,I.addEventListener("click",T),R.append(H,I),S.append(y,R),queueMicrotask(()=>{y.focus(),y.select()})},"kanuni-datagrid-filter-popup kanuni-datagrid-note-editor")})}function Mc(d){Au!==d&&(Au=d,d?(ne.insertBefore(nt,ge),Ha()):nt.remove())}function Ic(d){if(yt!==d){if(yt=d,d){if(Nt){let f=wt.isConnected?wt:rt.isConnected?rt:qe;Ke.insertBefore(je,f)}else Ke.append(je);Ma()}else je.remove();wt.style.setProperty("--dg-pinned-gap",String(Eu+(yt&&Nt?1:0))),rt.style.setProperty("--dg-pinned-gap",String(Eu+(yt&&Nt?1:0)))}}function Oa(d){let f=aa(ne,d);f!==null&&b.setColumnWidth(d,f)}function gl(d,f){let w=b.getColumnModel().getDef(d),g={columnId:d,headerName:w?.headerName??d},A=na(g,{controller:b,t:V,groupPanelVisible:Au,footerVisible:yt,onToggleGroupPanel:()=>Mc(!Au),onToggleFooter:()=>Ic(!yt),onOpenFieldChooser:()=>Cl(f),onBestFit:Oa,onBestFitAll:()=>{for(let S of b.getColumnStates())S.visible&&!S.flex&&Oa(S.id)},maxGroupLevels:Xt?Number.POSITIVE_INFINITY:1}),v=typeof Fe=="function"?Fe(g,A):A;v.length!==0&&Gt(f,S=>{S.setAttribute("role","menu"),sn(S,v,g)},"kanuni-datagrid-context-menu")}function Lc(d,f){let w=b.getColumnModel().getDef(d),g=b.getColumnSummary(d),A={columnId:d,headerName:w?.headerName??w?.field??d},v=[{id:"none",label:V.noTotal,disabled:g===null,onSelect:()=>b.setColumnSummary(d,null)},{id:"sep",separator:!0},...ed(w?.dataType).map(S=>({id:S,label:fa[S],disabled:g?.type===S,onSelect:()=>b.setColumnSummary(d,S)}))];Gt(f,S=>{S.setAttribute("role","menu"),sn(S,v,A)},"kanuni-datagrid-context-menu")}function Cl(d){Gt(d,f=>{f.setAttribute("role","dialog"),f.setAttribute("aria-label",V.columns);let w=L("kanuni-datagrid-chooser-title");w.textContent=V.columns,f.appendChild(w);let g=()=>b.getColumnStates().filter($=>!Be($.id)),A=()=>g().filter($=>!b.getColumnModel().getDef($.id)?.hideInChooser),v=$=>b.getColumnModel().getDef($)?.headerName??$,S="";if(A().length>8){let $=document.createElement("input");$.type="search",$.className="kanuni-datagrid-filter-search",$.placeholder=V.search,$.setAttribute("aria-label",V.search),$.addEventListener("input",()=>{S=$.value.trim().toLocaleLowerCase(),I()}),f.appendChild($)}let y=L("kanuni-datagrid-filter-list");f.appendChild(y);let T=L("kanuni-datagrid-filter-footer"),R=document.createElement("button");R.type="button",R.textContent=V.showAll,R.addEventListener("click",()=>{for(let $ of A())$.visible||b.setColumnVisible($.id,!0);I()});let H=document.createElement("button");H.type="button",H.className="kanuni-datagrid-filter-primary",H.textContent=V.ok,H.addEventListener("click",()=>ze()),T.append(R,H),f.appendChild(T);function I(){let $=A(),X=g().filter(Q=>Q.visible).length;y.textContent="";let Z=S?$.filter(Q=>v(Q.id).toLocaleLowerCase().includes(S)):$;if(Z.length===0){let Q=L("kanuni-datagrid-chooser-empty");Q.textContent=V.noData,y.appendChild(Q)}for(let Q of Z){let N=document.createElement("label");N.className="kanuni-datagrid-filter-item";let P=document.createElement("input");P.type="checkbox",P.checked=Q.visible,P.disabled=Q.visible&&X===1,P.setAttribute("data-column-toggle",Q.id),P.addEventListener("change",()=>{b.setColumnVisible(Q.id,P.checked),I()});let ue=document.createElement("span");ue.textContent=v(Q.id),N.append(P,ue),y.appendChild(N)}R.disabled=X===$.length}I()},"kanuni-datagrid-filter-popup kanuni-datagrid-column-chooser")}let ku=null,Va=null,dn=d=>{nt.classList.toggle("kanuni-datagrid-group-panel--over",d)};function wl(d,f,w){let g=b.getGroupLevels();if(d===f)return;let A=g.filter(y=>y!==d),v=A.indexOf(f);if(v<0)return;let S=w==="before"?v:v+1;Va=d,b.groupBy([...A.slice(0,S),d,...A.slice(S)])}function yl(d,f){let w=b.getGroupLevels(),g=w.indexOf(d),A=g+f;g<0||A<0||A>=w.length||wl(d,w[A],f===-1?"before":"after")}function El(d,f){if(!d)return;let w=b.getGroupLevels();if(w.includes(d))return;let g=Xt?Number.POSITIVE_INFINITY:1;if(w.length>=g){b.groupBy([...w.slice(0,g-1),d]);return}let A=f??w.length;b.groupBy([...w.slice(0,A),d,...w.slice(A)])}function Ha(){if(!Au)return;nt.textContent="";let d=b.getGroupLevels();if(d.length===0){let T=L("kanuni-datagrid-group-panel-hint","span");T.textContent=V.groupPanelHint??"Drag a column header here to group by it",nt.appendChild(T);return}let f=T=>b.getColumnModel().getDef(T)?.headerName??T,w=L("kanuni-datagrid-group-levels"),g=(T,R)=>T<R.top+R.height/2?"before":"after",A=(T,R)=>{for(let H of nt.querySelectorAll(".kanuni-datagrid-group-level"))H.classList.remove("kanuni-datagrid-group-level--drop-before","kanuni-datagrid-group-level--drop-after");T&&R&&T.classList.add(`kanuni-datagrid-group-level--drop-${R}`)};d.forEach((T,R)=>{let H=L("kanuni-datagrid-group-level");H.style.setProperty("--dg-group-level",String(R)),H.setAttribute("data-group-level",String(R));let I=L("kanuni-datagrid-group-chip");if(I.setAttribute("role","button"),I.tabIndex=0,d.length>1&&(I.draggable=!0),I.setAttribute("aria-label",`${bt(V.groupLevelAria,{n:R+1})}: ${f(T)}`),I.addEventListener("dragstart",Z=>{ku=T,Z.dataTransfer&&(Z.dataTransfer.effectAllowed="move",Z.dataTransfer.setData("text/x-kanuni-column",T))}),I.addEventListener("dragend",()=>{ku=null,A(null,null)}),I.addEventListener("keydown",Z=>{let Q=Z.ctrlKey||Z.metaKey;Q&&(Z.key==="ArrowUp"||Z.key==="ArrowLeft")?(Z.preventDefault(),yl(T,-1)):Q&&(Z.key==="ArrowDown"||Z.key==="ArrowRight")?(Z.preventDefault(),yl(T,1)):(Z.key==="Delete"||Z.key==="Backspace")&&(Z.preventDefault(),b.groupBy(d.filter(N=>N!==T)))}),H.addEventListener("dragover",Z=>{!ku&&!(Z.dataTransfer?.types.includes("text/x-kanuni-column")??!1)||(Z.preventDefault(),Z.stopPropagation(),A(H,g(Z.clientY,H.getBoundingClientRect())))}),H.addEventListener("drop",Z=>{Z.preventDefault(),Z.stopPropagation();let Q=g(Z.clientY,H.getBoundingClientRect());A(null,null),dn(!1);let N=ku;if(ku=null,N){wl(N,T,Q);return}let P=Z.dataTransfer?.getData("text/x-kanuni-column");P&&El(P,Q==="before"?R:R+1)}),d.length>1){let Z=L("kanuni-datagrid-group-chip-level","span");Z.textContent=String(R+1),I.appendChild(Z)}let $=document.createElement("span");$.textContent=f(T);let X=document.createElement("button");X.type="button",X.setAttribute("aria-label",bt(V.groupRemoveAria,{column:f(T)})),X.textContent="\xD7",X.addEventListener("click",()=>{b.groupBy(d.filter(Z=>Z!==T))}),X.draggable=!1,I.append($,X),H.appendChild(I),w.appendChild(H),Va===T&&(Va=null,queueMicrotask(()=>I.focus()))}),nt.appendChild(w);let v=L("kanuni-datagrid-group-panel-actions"),S=document.createElement("button");S.type="button",S.textContent=V.groupExpandAll,S.addEventListener("click",()=>b.expandAllGroups());let y=document.createElement("button");y.type="button",y.textContent=V.groupCollapseAll,y.addEventListener("click",()=>b.collapseAllGroups()),v.append(S,y),nt.appendChild(v)}if(Au){let d=f=>f.dataTransfer?.types.includes("text/x-kanuni-column")??!1;nt.addEventListener("dragover",f=>{d(f)&&(f.preventDefault(),dn(!0))}),nt.addEventListener("dragleave",f=>{let w=f.relatedTarget;w&&nt.contains(w)||dn(!1)}),nt.addEventListener("drop",f=>{dn(!1);let w=f.dataTransfer?.getData("text/x-kanuni-column");if(w){if(f.preventDefault(),ku){ku=null;return}El(w)}})}let bl="";function Al(){if(!q)return;let d=[bt(V.announceRows,{n:b.getVisibleCount()})],f=b.getSort();if(f.length>0){let A=f.map(v=>{let S=b.getColumnModel().getDef(v.columnId),y=S?.headerName??S?.field??v.columnId,T=v.direction==="desc"?V.announceDescending:V.announceAscending;return`${y} ${T}`}).join(", ");d.push(bt(V.announceSortedBy,{columns:A}))}let w=b.getSelectedCount();w>0&&d.push(bt(V.announceSelected,{n:w}));let g=d.join(", ");g!==bl&&(bl=g,hr.textContent=g)}function xl(){if(!z)return;bu.textContent="";let d=ld(b.getEffectiveFilter(),b.getColumnModel(),{...Ce,labels:{...pi(V),...Ce?.labels}});if(!d&&z!=="always"){bu.style.display="none";return}bu.style.display="";let f=b.isFilterEnabled();bu.className=`kanuni-datagrid-filter-panel${f?"":" kanuni-datagrid-filter-panel--suspended"}`;let w=document.createElement("button");w.type="button",w.className="kanuni-datagrid-filter-panel-clear",w.title=V.filterRemove,w.setAttribute("aria-label",V.filterRemove),w.setAttribute("data-testid","dg-filter-panel-clear"),w.disabled=d===null,w.textContent="\xD7",w.addEventListener("click",()=>{b.setFilter(null),b.clearColumnFilters(),b.setFilterEnabled(!0)});let g=document.createElement("input");g.type="checkbox",g.className="kanuni-datagrid-filter-panel-toggle",g.checked=f,g.disabled=d===null,g.title=V.filterToggle,g.setAttribute("aria-label",V.filterToggle),g.setAttribute("data-testid","dg-filter-panel-toggle"),g.addEventListener("change",()=>b.setFilterEnabled(g.checked));let A=L("kanuni-datagrid-filter-panel-text","span");if(A.setAttribute("data-testid","dg-filter-panel-text"),A.textContent=d??V.filterNone,d&&(A.title=d),bu.append(w,g,A),O){let v=document.createElement("button");v.type="button",v.className="kanuni-datagrid-filter-panel-builder",v.title=V.filterEditBuilder,v.setAttribute("aria-label",V.filterEditBuilder),v.setAttribute("data-testid","dg-filter-panel-builder"),v.textContent="\u25BE",v.addEventListener("click",()=>O()),bu.appendChild(v)}}let Ka=new Set,Pc=b.events.on("cellsFlashed",({rowKeys:d,columnIds:f,duration:w})=>{let g=d.length?d.map(y=>`[data-row-key="${CSS.escape(String(y))}"]`).join(","):".kanuni-datagrid-row",A=f.length?f.map(y=>`[data-column-id="${CSS.escape(y)}"]`).join(","):"[data-column-id]",v=[];Ae.querySelectorAll(g).forEach(y=>{y.querySelectorAll(A).forEach(T=>v.push(T))});for(let y of v)y.classList.remove("kanuni-datagrid-cell--flash");ne.offsetWidth;for(let y of v)y.classList.add("kanuni-datagrid-cell--flash");let S=setTimeout(()=>{for(let y of v)y.classList.remove("kanuni-datagrid-cell--flash");Ka.delete(S)},w);Ka.add(S)});function nu(d){let f=d.target,w=f.closest(".kanuni-datagrid-row");if(!w||!Ae.contains(w))return null;let g=w.getAttribute("data-row-key");if(g===null)return null;let A=b.getRows(),v=A.findIndex(y=>y!==void 0&&String(y.key)===g);if(v===-1)return null;let S=f.closest(".kanuni-datagrid-cell")?.getAttribute("data-column-id")??null;return{node:A[v],rowIndex:v,columnId:S}}let vl=d=>{let f=nu(d);f&&(j?.(f.node),b.notifyRow("rowClicked",f.node,f.rowIndex),f.columnId&&b.notifyCell("cellClicked",f.node,f.rowIndex,f.columnId))},Fl=d=>{let f=nu(d);if(f){if(Ni){let w=qa(f,!0);w&&Ni(w)}J?.(f.node),b.notifyRow("rowDoubleClicked",f.node,f.rowIndex),f.columnId&&b.notifyCell("cellDoubleClicked",f.node,f.rowIndex,f.columnId)}};Ae.addEventListener("click",vl),Ae.addEventListener("dblclick",Fl);function Gc(d){let f=0,w=Pe.querySelector(`[data-column-id="${CSS.escape(d)}"]`);w&&(f=w.scrollWidth),Ae.querySelectorAll(`[data-column-id="${CSS.escape(d)}"]`).forEach(g=>{g.scrollWidth>f&&(f=g.scrollWidth)}),f>0&&b.setColumnWidth(d,f+12,!0)}function Oc(){if(Re)for(let d of Pe.querySelectorAll('[role="columnheader"][data-column-id]')){let f=Re(d.getAttribute("data-column-id"))??"",w=d.dataset.slotClass??"";if(f!==w){for(let g of w.split(" "))g&&d.classList.remove(g);for(let g of f.split(" "))g&&d.classList.add(g);d.dataset.slotClass=f}}}function Vc(){if(k)for(let d of Pe.querySelectorAll(".kanuni-datagrid-filter-button")){let f=d.parentElement?.getAttribute("data-column-id");f&&d.classList.toggle("kanuni-datagrid-filter-button--active",b.getColumnFilter(f)!==null)}}let za=!1,Dl=!1,Uu=null;function cn(){Uu!==null&&(clearTimeout(Uu),Uu=null)}function hn(d){cr.style.display=d?"":"none"}function mn(){let d=b.getOverlay();if(qr.style.display=d==="noRows"?"":"none",ma===!1){cn(),hn(!1);return}if(!(d==="loading"&&(za||!Dl))){cn(),hn(!1);return}if(za||Ti<=0){cn(),hn(!0);return}Uu!==null||cr.style.display===""||(Uu=setTimeout(()=>{Uu=null,Ye||hn(!0)},Ti))}let Sl=!1,$a=!1,Wa=!1,_a=!1,Ye=!1,Ua=new N0;function Hc(){if($a=!1,!Ye){if(Wa)Wa=!1,_a&&(_a=!1,Lt++),Fa(),Da(),Ra(),an();else{let d=at;Fa(),at!==d?(Lt++,Da(),Ra(),an()):b.getPinnedRows("top").length+b.getPinnedRows("bottom").length>0&&an()}un(),b.getAnimateRows()&&Ua.play(Ae),Qi(),Ma(),sl(),Vc(),Oc(),Ha(),xl(),Al(),mn()}}function fn(d){Ye||(d&&(Wa=!0),!$a&&($a=!0,queueMicrotask(Hc)))}let Kc=[...Y?[b.events.on("focusedRowChanged",d=>Y({rowKey:d.rowKey,row:d.row}))]:[],...vg.map(d=>b.events.on(d,()=>fn(!0))),...Fg.map(d=>b.events.on(d,()=>{_a=!0})),...Dg.map(d=>b.events.on(d,()=>fn(!1))),b.events.on("filterChanged",()=>vc()),...["sortChanged","filterChanged","groupChanged","dataUpdated"].map(d=>b.events.on(d,()=>{b.getAnimateRows()&&Ua.capture(Ae)})),b.events.on("rowPinningChanged",()=>{Ye||(Dc(),fn(!0))}),b.events.on("overlayChanged",d=>{za=d.manual===!0&&d.overlay==="loading",Ye||mn()}),b.events.on("busyChanged",d=>{Dl=d.background===!0,Ye||mn()}),b.events.on("paginationChanged",()=>{Ye||fn(!1)}),b.events.on("bodyScroll",()=>{Ye||ol()}),b.events.on("cellsRefreshed",()=>{Ye||el()}),b.events.on("scrollRequested",d=>{if(Ye)return;d.scrollTop!==void 0&&(ge.scrollTop=d.scrollTop),d.scrollLeft!==void 0&&(ge.scrollLeft=d.scrollLeft),b.setScroll(ge.scrollTop,Math.abs(ge.scrollLeft));let f=d.scrollTop;f===void 0||Math.abs(ge.scrollTop-f)<=1||setTimeout(()=>{Ye||Math.abs(ge.scrollTop-f)<=1||(ge.scrollTop=f,b.setScroll(ge.scrollTop,Math.abs(ge.scrollLeft)))},0)}),...ee==="fitGrid"?[b.events.on("gridSizeChanged",()=>b.sizeColumnsToFit())]:[],...ee==="fitCells"?[b.events.on("firstDataRendered",()=>{Ye||Sl||(Sl=!0,queueMicrotask(()=>{if(!Ye)for(let d of b.getColumnStates())d.visible&&!d.flex&&Oa(d.id)}))})]:[]];ee==="fitGrid"&&b.sizeColumnsToFit();function qa(d,f=!1){if(!d.columnId||d.node.kind!=="data"&&!(f&&d.node.kind==="group"))return null;let w=vt.find(g=>g.id===d.columnId);return w?{node:d.node,columnId:d.columnId,rowIndex:d.rowIndex,columnIndex:w.visualIndex,value:d.node.kind==="data"?b.getColumnModel().getCellValue(d.node.data,w.id):void 0}:null}let kl=d=>{let f=d.target;if(De){let y=nu(d),T=y?qa(y):null;T&&De(T,d)}let w=f.closest(".kanuni-datagrid-row");if(!w||w.classList.contains("kanuni-datagrid-group-row"))return;let g=w.getAttribute("data-row-key");if(g===null)return;let A=b.getRows().find(y=>y!==void 0&&String(y.key)===g);if(!A||A.kind!=="data")return;b.handleRowClick(A.key,{ctrlKey:d.ctrlKey||oc&&!d.shiftKey,metaKey:d.metaKey,shiftKey:d.shiftKey});let v=f.closest(".kanuni-datagrid-cell"),S=v?vt.find(y=>v.id.endsWith(`-${y.id}`))?.id:void 0;S&&b.focusCell(A.key,S)},Bl=d=>{if(!He)return;let w=d.target.closest(".kanuni-datagrid-cell");if(!w||!Ae.contains(w)||d.relatedTarget?.closest?.(".kanuni-datagrid-cell")===w)return;let A=nu(d),v=A?qa(A):null;v&&He(v,d)};if(Ae.addEventListener("mousedown",kl),Ae.addEventListener("contextmenu",pl),He&&Ae.addEventListener("mouseover",Bl),fr&&(qe.addEventListener("dragstart",ic),qe.addEventListener("dragover",lc),qe.addEventListener("drop",sc),qe.addEventListener("dragend",dc),qe.addEventListener("dragleave",cc)),ne.tabIndex=0,wu){ft=sa({controller:b,element:ne},tt,V,{surfaceClass:()=>da(t).replace("kanuni-datagrid-root","").trim(),barHost:ne},{isColumnEditable:f=>Kd(b.getColumnModel().getDef(f),f)});let d=ne.querySelector(':scope > [data-testid="dg-edit-bar"]');d&&ne.insertBefore(d,ne.firstChild),ft.engine.setSavedDuration(Ct?.savedDuration??0)}el();let Tl=d=>{let f=ft;if(!f||sr)return;let w=d.target;if(!w||!(w===ne||w===ge||Ae.contains(w)))return;let g=w.tagName;g==="INPUT"||g==="TEXTAREA"||g==="SELECT"||w.isContentEditable||f.handleKeyDown(d)&&d.stopImmediatePropagation()};wu&&ne.addEventListener("keydown",Tl,!0);let Rl=d=>{let f=d.target;if(f.tagName==="INPUT"||f.tagName==="TEXTAREA"||f.isContentEditable||Et.contains(f)||Mt.contains(f)||f.closest?.('[data-testid="dg-edit-form"], [data-testid="dg-edit-bar"], [data-testid="dg-row-message"]')||Pe.contains(f))return;if((ye||de||b.isRowPinningEnabled())&&(d.key==="ContextMenu"||d.key==="F10"&&d.shiftKey)){let v=b.getFocus(),S=v?Ae.querySelector(`[id="${CSS.escape(`${t.gridId}-cell-${String(v.rowKey)}-${v.columnId}`)}"]`):null;if(S){let y=S.getBoundingClientRect();S.dispatchEvent(new MouseEvent("contextmenu",{bubbles:!0,cancelable:!0,clientX:y.left+16,clientY:y.bottom})),d.preventDefault()}return}let w=pd({key:d.key,ctrlKey:d.ctrlKey,metaKey:d.metaKey,shiftKey:d.shiftKey,altKey:d.altKey});if(!w)return;if(w.type==="copy"){ln();return}if(w.type==="activate"){if(J){let v=b.getFocus(),S=v?b.getRows().find(y=>y!==void 0&&y.key===v.rowKey):void 0;S&&J(S)}w.preventDefault&&d.preventDefault();return}b.executeCommand(w),w.preventDefault&&d.preventDefault();let g=b.getFocusIndices();if(g){let S=b.getColumnLayout().center.findIndex(T=>T.state.id===b.getFocus()?.columnId),y=b.ensureVisible(g.rowIndex,S===-1?void 0:S);y&&(y.scrollTop!==void 0&&(ge.scrollTop=y.scrollTop),y.scrollLeft!==void 0&&(ge.scrollLeft=y.scrollLeft),b.setScroll(ge.scrollTop,Math.abs(ge.scrollLeft)))}let A=b.getFocus();ne.setAttribute("aria-activedescendant",A?`${t.gridId}-cell-${String(A.rowKey)}-${A.columnId}`:"")};ne.addEventListener("keydown",Rl);let zc=Si?sd(b,Si):null,Nl=typeof gt=="object"?gt.delay??400:400,Ml=gt!==!1&&!(typeof gt=="object"&>.enabled===!1),$c=typeof gt=="object"?gt.showOnTruncation!==!1:!0,Il=typeof gt=="object"?gt.trigger??"hover":"hover",Ll=Ml&&Il!=="focus",ja=Ml&&Il!=="hover",pn=typeof gt=="object"&>.interactive===!0,Pl=`${t.gridId}-tooltip`,Bu=null,ot=null,it=null,Tu=null,Ya=null;function au(){ot&&clearTimeout(ot),ot=null,Tu=null,Qa()}function Qa(){it&&clearTimeout(it),it=null,Ya?.removeAttribute("aria-describedby"),Ya=null,Bu?.remove(),Bu=null}let Wc=d=>d.scrollWidth>d.clientWidth+1||d.scrollHeight>d.clientHeight+1;function _c(d){let w=d.closest(".kanuni-datagrid-row")?.getAttribute("data-row-key"),g=vt.find(R=>d.id.endsWith(`-${R.id}`));if(!w||!g)return null;let A=b.getRows().find(R=>R!==void 0&&String(R.key)===w);if(!A||A.kind!=="data")return null;let v=g.def,S=Ba(A.key,g.id,A.data);if(S)return S;let y={value:b.getColumnModel().getCellValue(A.data,g.id),row:A.data,node:A,column:v},T=v.renderTooltip;if(T){let R=T(y);return R===void 0||R===""?null:R}if(typeof v.tooltip=="function")return v.tooltip(y)??null;if(typeof v.tooltip=="string")return v.tooltip;if(v.tooltipField){let R=A.data[v.tooltipField];return R==null?null:String(R)}return $c&&Wc(d)?d.textContent??null:null}function Gl(d,f){let w=_c(d);if(w===null||w==="")return;Qa();let g=d.getBoundingClientRect();Bu=L(`${da(t)} kanuni-datagrid-portal`);let A=L(pn?"kanuni-datagrid-tooltip kanuni-datagrid-tooltip--interactive":"kanuni-datagrid-tooltip");A.id=Pl,A.setAttribute("role","tooltip"),typeof w=="string"?A.textContent=w:A.appendChild(w),A.style.position="fixed",A.style.left=`${g.left}px`,A.style.top=`${g.bottom+4}px`,A.style.zIndex="1001",pn&&(A.addEventListener("pointerenter",()=>{it&&clearTimeout(it),it=null,ot&&clearTimeout(ot),ot=null}),A.addEventListener("pointerleave",au)),Bu.appendChild(A),qt(t.portalContainer).appendChild(jt(Bu,t.portalContainer,"tooltip")),f&&(d.setAttribute("aria-describedby",Pl),Ya=d)}let Ol=d=>{if(!Ll)return;let f=d.target.closest(".kanuni-datagrid-cell");if(f&&f===Tu){it&&clearTimeout(it),it=null;return}pn&&Bu&&it?(ot&&clearTimeout(ot),ot=null):au(),!(!f||!Ae.contains(f))&&(Tu=f,ot=setTimeout(()=>{ot=null,!(Tu!==f||!f.isConnected)&&Gl(f,!1)},Nl))},Vl=d=>{if(!Ll)return;let f=d.relatedTarget;if(!(Tu&&f&&Tu.contains(f))){if(!pn||!Bu){au();return}it&&clearTimeout(it),it=setTimeout(Qa,150)}};ne.addEventListener("pointerover",Ol),ne.addEventListener("pointerout",Vl),ge.addEventListener("scroll",au,{passive:!0});let Hl=-1/0,Kl=()=>{Hl=Date.now()};ja&&ne.addEventListener("pointerdown",Kl);let Uc=ja?b.events.on("focusChanged",()=>{au();let d=b.getFocus();d&&(ot=setTimeout(()=>{if(ot=null,!ne.contains(document.activeElement)&&Date.now()-Hl>1500)return;let f=document.getElementById(`${t.gridId}-cell-${String(d.rowKey)}-${d.columnId}`);!f||!Ae.contains(f)||(Tu=f,Gl(f,!0))},Nl))}):null,zl=d=>{d.key==="Escape"&&au()};ja&&ne.addEventListener("keydown",zl);let $l=()=>{if(b.setScroll(ge.scrollTop,Math.abs(ge.scrollLeft)),ou)for(let d of Wl())d.scroller.scrollLeft!==ge.scrollLeft&&(d.scroller.scrollLeft=ge.scrollLeft)};ge.addEventListener("scroll",$l,{passive:!0});let ou=null,Wl=()=>{if(!Ee||!ou)return[];let d=Hr.get(Ee);return d?[...d].filter(f=>f!==ou):[]},_l=null;if(Ee){ou={controller:b,scroller:ge};let d=Hr.get(Ee)??new Set;d.add(ou),Hr.set(Ee,d),_l=b.events.on("columnStateChanged",()=>{if(xi.has(Ee))return;let f=Wl();if(f.length===0)return;let w=b.getColumnStates();xi.add(Ee);try{for(let g of f)g.controller.applyColumnStates(w)}finally{xi.delete(Ee)}})}let Ul=()=>{b.setViewportSize(ge.clientWidth,ge.clientHeight),lr&&ac(Bd(ge)),ge.style.setProperty("--dg-viewport-width",`${ge.clientWidth}px`);let d=qe.getBoundingClientRect(),f=Ke.getBoundingClientRect();b.setChromeOffsets(d.top-f.top,f.bottom-d.bottom),Ad(ge,b)};Ul();let gn=null;typeof ResizeObserver<"u"&&(gn=new ResizeObserver(Ul),gn.observe(ge),gn.observe(Ke)),Fa(),Da(),Ra(),Fc(),an(),un(),Ma(),sl(),Ha(),xl(),Al(),mn(),Fu?.always&&xa(!0);let Xa=null;if(F){let d=null,f=()=>{let w=Pe.offsetHeight,g=w>0?`${w}px`:null;g!==d&&(d=g,g?Ke.style.setProperty("--dg-header-actual",g):Ke.style.removeProperty("--dg-header-actual"))};f(),typeof ResizeObserver<"u"&&(Xa=new ResizeObserver(f),Xa.observe(Pe))}return Gi=!0,{controller:b,element:ne,setData:d=>b.setData(d),setColumns:d=>b.setColumns(d),destroy:()=>{if(!Ye){if(Ye=!0,Kc.forEach(d=>d()),wr.forEach(d=>d()),wr=[],gn?.disconnect(),Xa?.disconnect(),Yi?.(),$u&&($u=!1,Vu--,Vu<=0&&(Vu=0,document.documentElement.classList.remove("kanuni-datagrid-printing"))),_l?.(),Ee&&ou){let d=Hr.get(Ee);d?.delete(ou),d&&d.size===0&&Hr.delete(Ee),ou=null}ge.removeEventListener("scroll",$l),Ae.removeEventListener("mousedown",kl),Ae.removeEventListener("contextmenu",pl),wt.removeEventListener("contextmenu",on),Ua.dispose(),Zt.removeEventListener("contextmenu",on),He&&Ae.removeEventListener("mouseover",Bl),Ae.removeEventListener("click",vl),Ae.removeEventListener("dblclick",Fl),Pc(),ll?.(),cn();for(let d of Ka)clearTimeout(d);ne.removeEventListener("keydown",Rl),ne.removeEventListener("keydown",Tl,!0),ft?.dispose(),ft=null,ne.removeEventListener("pointerover",Ol),ne.removeEventListener("pointerout",Vl),ne.removeEventListener("keydown",zl),ne.removeEventListener("pointerdown",Kl),Uc?.(),ge.removeEventListener("scroll",au),au(),zc?.(),ze(!1),b.dispose(),ne.remove()}}}}function _d(e){let t=document.createElement("button");t.type="button";let u={...e},r=()=>{let{icon:n,label:a,shortcut:o,disabledReason:l,showLabel:i,testId:s}=u;if(t.className=`kanuni-datagrid-app-button${i?"":" kanuni-datagrid-toolbar-icon-button"}`,t.textContent="",typeof n=="string"?t.insertAdjacentHTML("afterbegin",n):t.appendChild(n),i){let m=document.createElement("span");m.textContent=a,t.appendChild(m),t.removeAttribute("aria-label")}else t.setAttribute("aria-label",a);let h=o?`${a} (${o})`:a;t.title=l!==void 0?`${h} \u2014 ${l}`:h,o?t.setAttribute("aria-keyshortcuts",o):t.removeAttribute("aria-keyshortcuts"),l!==void 0?(t.setAttribute("aria-disabled","true"),t.setAttribute("aria-description",l)):(t.removeAttribute("aria-disabled"),t.removeAttribute("aria-description")),s&&t.setAttribute("data-testid",s)};return t.addEventListener("click",n=>{if(u.disabledReason!==void 0){n.preventDefault();return}u.onClick?.()}),t.update=n=>{u={...u,...n},r()},r(),t}return e4(Mg);})();
|