@toolbox-web/grid 1.14.1 → 1.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -1
- package/all.js +1985 -1558
- package/all.js.map +1 -1
- package/index.js +46 -20
- package/index.js.map +1 -1
- package/lib/core/grid.d.ts.map +1 -1
- package/lib/core/internal/validate-config.d.ts.map +1 -1
- package/lib/plugins/column-virtualization/ColumnVirtualizationPlugin.d.ts.map +1 -1
- package/lib/plugins/column-virtualization/index.js +1 -1
- package/lib/plugins/column-virtualization/index.js.map +1 -1
- package/lib/plugins/context-menu/ContextMenuPlugin.d.ts +20 -1
- package/lib/plugins/context-menu/ContextMenuPlugin.d.ts.map +1 -1
- package/lib/plugins/context-menu/index.d.ts +1 -1
- package/lib/plugins/context-menu/index.d.ts.map +1 -1
- package/lib/plugins/context-menu/index.js +153 -70
- package/lib/plugins/context-menu/index.js.map +1 -1
- package/lib/plugins/context-menu/menu.d.ts +7 -0
- package/lib/plugins/context-menu/menu.d.ts.map +1 -1
- package/lib/plugins/context-menu/types.d.ts +46 -0
- package/lib/plugins/context-menu/types.d.ts.map +1 -1
- package/lib/plugins/editing/EditingPlugin.d.ts.map +1 -1
- package/lib/plugins/editing/index.js +214 -197
- package/lib/plugins/editing/index.js.map +1 -1
- package/lib/plugins/filtering/FilteringPlugin.d.ts +7 -1
- package/lib/plugins/filtering/FilteringPlugin.d.ts.map +1 -1
- package/lib/plugins/filtering/index.js +169 -133
- package/lib/plugins/filtering/index.js.map +1 -1
- package/lib/plugins/grouping-columns/GroupingColumnsPlugin.d.ts +5 -1
- package/lib/plugins/grouping-columns/GroupingColumnsPlugin.d.ts.map +1 -1
- package/lib/plugins/grouping-columns/index.js +242 -109
- package/lib/plugins/grouping-columns/index.js.map +1 -1
- package/lib/plugins/grouping-columns/types.d.ts +7 -0
- package/lib/plugins/grouping-columns/types.d.ts.map +1 -1
- package/lib/plugins/pinned-columns/PinnedColumnsPlugin.d.ts +11 -1
- package/lib/plugins/pinned-columns/PinnedColumnsPlugin.d.ts.map +1 -1
- package/lib/plugins/pinned-columns/index.d.ts +1 -1
- package/lib/plugins/pinned-columns/index.d.ts.map +1 -1
- package/lib/plugins/pinned-columns/index.js +174 -79
- package/lib/plugins/pinned-columns/index.js.map +1 -1
- package/lib/plugins/pinned-columns/pinned-columns.d.ts +23 -4
- package/lib/plugins/pinned-columns/pinned-columns.d.ts.map +1 -1
- package/lib/plugins/pinned-columns/types.d.ts +21 -9
- package/lib/plugins/pinned-columns/types.d.ts.map +1 -1
- package/lib/plugins/visibility/VisibilityPlugin.d.ts +42 -2
- package/lib/plugins/visibility/VisibilityPlugin.d.ts.map +1 -1
- package/lib/plugins/visibility/index.d.ts +1 -1
- package/lib/plugins/visibility/index.d.ts.map +1 -1
- package/lib/plugins/visibility/index.js +219 -59
- package/lib/plugins/visibility/index.js.map +1 -1
- package/lib/plugins/visibility/types.d.ts +25 -0
- package/lib/plugins/visibility/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/umd/grid.all.umd.js +25 -25
- package/umd/grid.all.umd.js.map +1 -1
- package/umd/grid.umd.js +2 -2
- package/umd/grid.umd.js.map +1 -1
- package/umd/plugins/column-virtualization.umd.js +1 -1
- package/umd/plugins/column-virtualization.umd.js.map +1 -1
- package/umd/plugins/context-menu.umd.js +1 -1
- package/umd/plugins/context-menu.umd.js.map +1 -1
- package/umd/plugins/editing.umd.js +1 -1
- package/umd/plugins/editing.umd.js.map +1 -1
- package/umd/plugins/filtering.umd.js +1 -1
- package/umd/plugins/filtering.umd.js.map +1 -1
- package/umd/plugins/grouping-columns.umd.js +1 -1
- package/umd/plugins/grouping-columns.umd.js.map +1 -1
- package/umd/plugins/pinned-columns.umd.js +1 -1
- package/umd/plugins/pinned-columns.umd.js.map +1 -1
- package/umd/plugins/visibility.umd.js +1 -1
- package/umd/plugins/visibility.umd.js.map +1 -1
package/umd/grid.umd.js
CHANGED
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
|
|
30
30
|
/* Plugin Styles */
|
|
31
31
|
${e}`}function Ci(t){let e=!1;for(const{name:i,styles:o}of t)me.has(i)||(me.set(i,o),e=!0);return e&&ve(),e}function yi(){try{for(const t of Array.from(document.styleSheets))try{const i=Array.from(t.cssRules||[]).map(o=>o.cssText).join(`
|
|
32
|
-
`);if(i.includes(".tbw-grid-root")&&i.includes("tbw-grid"))return i}catch{continue}}catch(t){console.warn("[tbw-grid] Failed to extract grid.css from document stylesheets:",t)}return null}async function _i(t){if(ne)return;if(typeof t=="string"&&t.length>0){ne=t,ve();return}await new Promise(i=>setTimeout(i,50));const e=yi();e?(ne=e,ve()):(typeof process>"u"||process.env?.NODE_ENV!=="test")&&console.warn("[tbw-grid] Could not find grid.css in document.styleSheets. Grid styling will not work.","Available stylesheets:",Array.from(document.styleSheets).map(i=>i.href||"(inline)"))}function Ei(){return{startY:null,startX:null,scrollTop:null,scrollLeft:null,lastY:null,lastX:null,lastTime:null,velocityY:0,velocityX:0,momentumRaf:0}}function Si(t){t.startY=null,t.startX=null,t.scrollTop=null,t.scrollLeft=null,t.lastY=null,t.lastX=null,t.lastTime=null}function lt(t){t.momentumRaf&&(cancelAnimationFrame(t.momentumRaf),t.momentumRaf=0)}function Ri(t,e,i){if(t.touches.length!==1)return;lt(e);const o=t.touches[0];e.startY=o.clientY,e.startX=o.clientX,e.lastY=o.clientY,e.lastX=o.clientX,e.lastTime=performance.now(),e.scrollTop=i.fauxScrollbar.scrollTop,e.scrollLeft=i.scrollArea?.scrollLeft??0,e.velocityY=0,e.velocityX=0}function Ai(t,e,i){if(t.touches.length!==1||e.startY===null||e.startX===null||e.scrollTop===null||e.scrollLeft===null)return!1;const o=t.touches[0],n=o.clientY,r=o.clientX,s=performance.now(),l=e.startY-n,a=e.startX-r;if(e.lastTime!==null&&e.lastY!==null&&e.lastX!==null){const h=s-e.lastTime;h>0&&(e.velocityY=(e.lastY-n)/h,e.velocityX=(e.lastX-r)/h)}e.lastY=n,e.lastX=r,e.lastTime=s;const{scrollTop:c,scrollHeight:d,clientHeight:f}=i.fauxScrollbar,u=d-f,g=l>0&&c<u||l<0&&c>0;let p=!1;if(i.scrollArea){const{scrollLeft:h,scrollWidth:w,clientWidth:C}=i.scrollArea,m=w-C;p=a>0&&h<m||a<0&&h>0}return g&&(i.fauxScrollbar.scrollTop=e.scrollTop+l),p&&i.scrollArea&&(i.scrollArea.scrollLeft=e.scrollLeft+a),g||p}function Ti(t,e){(Math.abs(t.velocityY)>.1||Math.abs(t.velocityX)>.1)&&xi(t,e),Si(t)}function xi(t,e){const n=()=>{t.velocityY*=.95,t.velocityX*=.95;const r=t.velocityY*16,s=t.velocityX*16;Math.abs(t.velocityY)>.01&&(e.fauxScrollbar.scrollTop+=r),Math.abs(t.velocityX)>.01&&e.scrollArea&&(e.scrollArea.scrollLeft+=s),Math.abs(t.velocityY)>.01||Math.abs(t.velocityX)>.01?t.momentumRaf=requestAnimationFrame(n):t.momentumRaf=0};t.momentumRaf=requestAnimationFrame(n)}function Hi(t,e,i,o){t.addEventListener("touchstart",n=>Ri(n,e,i),{passive:!0,signal:o}),t.addEventListener("touchmove",n=>{Ai(n,e,i)&&n.preventDefault()},{passive:!1,signal:o}),t.addEventListener("touchend",()=>Ti(e,i),{passive:!0,signal:o})}const Li=[{property:"editable",pluginName:"editing",level:"column",description:'the "editable" column property',isUsed:t=>t===!0},{property:"editor",pluginName:"editing",level:"column",description:'the "editor" column property'},{property:"editorParams",pluginName:"editing",level:"column",description:'the "editorParams" column property'},{property:"group",pluginName:"groupingColumns",level:"column",description:'the "group" column property'},{property:"sticky",pluginName:"pinnedColumns",level:"column",description:'the "sticky" column property',isUsed:t=>t==="left"||t==="right"||t==="start"||t==="end"}],Pi=[{property:"columnGroups",pluginName:"groupingColumns",level:"config",description:'the "columnGroups" config property',isUsed:t=>Array.isArray(t)&&t.length>0}];function zi(t){return t.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}function Ce(t){return`import { ${D(t)}Plugin } from '@toolbox-web/grid/plugins/${zi(t)}';`}function D(t){return t.charAt(0).toUpperCase()+t.slice(1)}function at(t,e){return t.some(i=>i.name===e)}function Di(t,e){const i=Li,o=Pi,n=new Map;function r(l,a,c,d,f=!1){n.has(l)||n.set(l,{description:a,importHint:c,fields:[],isConfigProperty:f});const u=n.get(l);u.fields.includes(d)||u.fields.push(d)}for(const l of o){const a=t[l.property];(l.isUsed?l.isUsed(a):a!==void 0)&&!at(e,l.pluginName)&&r(l.pluginName,l.description,Ce(l.pluginName),l.property,!0)}const s=t.columns;if(s&&s.length>0)for(const l of s)for(const a of i){const c=l[a.property];if((a.isUsed?a.isUsed(c):c!==void 0)&&!at(e,a.pluginName)){const f=l.field||"<unknown>";r(a.pluginName,a.description,Ce(a.pluginName),f)}}if(n.size>0){const l=[];for(const[a,{description:c,importHint:d,fields:f,isConfigProperty:u}]of n)if(u)l.push(`Config uses ${c}, but the required plugin is not loaded.
|
|
32
|
+
`);if(i.includes(".tbw-grid-root")&&i.includes("tbw-grid"))return i}catch{continue}}catch(t){console.warn("[tbw-grid] Failed to extract grid.css from document stylesheets:",t)}return null}async function _i(t){if(ne)return;if(typeof t=="string"&&t.length>0){ne=t,ve();return}await new Promise(i=>setTimeout(i,50));const e=yi();e?(ne=e,ve()):(typeof process>"u"||process.env?.NODE_ENV!=="test")&&console.warn("[tbw-grid] Could not find grid.css in document.styleSheets. Grid styling will not work.","Available stylesheets:",Array.from(document.styleSheets).map(i=>i.href||"(inline)"))}function Ei(){return{startY:null,startX:null,scrollTop:null,scrollLeft:null,lastY:null,lastX:null,lastTime:null,velocityY:0,velocityX:0,momentumRaf:0}}function Si(t){t.startY=null,t.startX=null,t.scrollTop=null,t.scrollLeft=null,t.lastY=null,t.lastX=null,t.lastTime=null}function lt(t){t.momentumRaf&&(cancelAnimationFrame(t.momentumRaf),t.momentumRaf=0)}function Ri(t,e,i){if(t.touches.length!==1)return;lt(e);const o=t.touches[0];e.startY=o.clientY,e.startX=o.clientX,e.lastY=o.clientY,e.lastX=o.clientX,e.lastTime=performance.now(),e.scrollTop=i.fauxScrollbar.scrollTop,e.scrollLeft=i.scrollArea?.scrollLeft??0,e.velocityY=0,e.velocityX=0}function Ai(t,e,i){if(t.touches.length!==1||e.startY===null||e.startX===null||e.scrollTop===null||e.scrollLeft===null)return!1;const o=t.touches[0],n=o.clientY,r=o.clientX,s=performance.now(),l=e.startY-n,a=e.startX-r;if(e.lastTime!==null&&e.lastY!==null&&e.lastX!==null){const h=s-e.lastTime;h>0&&(e.velocityY=(e.lastY-n)/h,e.velocityX=(e.lastX-r)/h)}e.lastY=n,e.lastX=r,e.lastTime=s;const{scrollTop:c,scrollHeight:d,clientHeight:f}=i.fauxScrollbar,u=d-f,g=l>0&&c<u||l<0&&c>0;let p=!1;if(i.scrollArea){const{scrollLeft:h,scrollWidth:w,clientWidth:C}=i.scrollArea,m=w-C;p=a>0&&h<m||a<0&&h>0}return g&&(i.fauxScrollbar.scrollTop=e.scrollTop+l),p&&i.scrollArea&&(i.scrollArea.scrollLeft=e.scrollLeft+a),g||p}function Ti(t,e){(Math.abs(t.velocityY)>.1||Math.abs(t.velocityX)>.1)&&xi(t,e),Si(t)}function xi(t,e){const n=()=>{t.velocityY*=.95,t.velocityX*=.95;const r=t.velocityY*16,s=t.velocityX*16;Math.abs(t.velocityY)>.01&&(e.fauxScrollbar.scrollTop+=r),Math.abs(t.velocityX)>.01&&e.scrollArea&&(e.scrollArea.scrollLeft+=s),Math.abs(t.velocityY)>.01||Math.abs(t.velocityX)>.01?t.momentumRaf=requestAnimationFrame(n):t.momentumRaf=0};t.momentumRaf=requestAnimationFrame(n)}function Hi(t,e,i,o){t.addEventListener("touchstart",n=>Ri(n,e,i),{passive:!0,signal:o}),t.addEventListener("touchmove",n=>{Ai(n,e,i)&&n.preventDefault()},{passive:!1,signal:o}),t.addEventListener("touchend",()=>Ti(e,i),{passive:!0,signal:o})}const Li=[{property:"editable",pluginName:"editing",level:"column",description:'the "editable" column property',isUsed:t=>t===!0},{property:"editor",pluginName:"editing",level:"column",description:'the "editor" column property'},{property:"editorParams",pluginName:"editing",level:"column",description:'the "editorParams" column property'},{property:"group",pluginName:"groupingColumns",level:"column",description:'the "group" column property'},{property:"pinned",pluginName:"pinnedColumns",level:"column",description:'the "pinned" column property',isUsed:t=>t==="left"||t==="right"||t==="start"||t==="end"},{property:"sticky",pluginName:"pinnedColumns",level:"column",description:'the "sticky" column property (deprecated, use "pinned")',isUsed:t=>t==="left"||t==="right"||t==="start"||t==="end"}],Pi=[{property:"columnGroups",pluginName:"groupingColumns",level:"config",description:'the "columnGroups" config property',isUsed:t=>Array.isArray(t)&&t.length>0}];function zi(t){return t.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}function Ce(t){return`import { ${D(t)}Plugin } from '@toolbox-web/grid/plugins/${zi(t)}';`}function D(t){return t.charAt(0).toUpperCase()+t.slice(1)}function at(t,e){return t.some(i=>i.name===e)}function Di(t,e){const i=Li,o=Pi,n=new Map;function r(l,a,c,d,f=!1){n.has(l)||n.set(l,{description:a,importHint:c,fields:[],isConfigProperty:f});const u=n.get(l);u.fields.includes(d)||u.fields.push(d)}for(const l of o){const a=t[l.property];(l.isUsed?l.isUsed(a):a!==void 0)&&!at(e,l.pluginName)&&r(l.pluginName,l.description,Ce(l.pluginName),l.property,!0)}const s=t.columns;if(s&&s.length>0)for(const l of s)for(const a of i){const c=l[a.property];if((a.isUsed?a.isUsed(c):c!==void 0)&&!at(e,a.pluginName)){const f=l.field||"<unknown>";r(a.pluginName,a.description,Ce(a.pluginName),f)}}if(n.size>0){const l=[];for(const[a,{description:c,importHint:d,fields:f,isConfigProperty:u}]of n)if(u)l.push(`Config uses ${c}, but the required plugin is not loaded.
|
|
33
33
|
→ Add the plugin to your gridConfig.plugins array:
|
|
34
34
|
${d}
|
|
35
35
|
plugins: [new ${D(a)}Plugin(), ...]`);else{const g=f.slice(0,3).join(", ")+(f.length>3?`, ... (${f.length} total)`:"");l.push(`Column(s) [${g}] use ${c}, but the required plugin is not loaded.
|
|
@@ -87,5 +87,5 @@ ${D(o.name)}Plugin and ${D(s.name)}Plugin are both loaded, but they are currentl
|
|
|
87
87
|
@layer tbw-base{.tbw-loading-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:light-dark(rgba(255,255,255,.7),rgba(0,0,0,.5));z-index:1000;pointer-events:all;animation:tbw-fade-in .15s ease-out}.tbw-spinner{--tbw-spinner-size: 48px;--tbw-spinner-border-width: 3px;--tbw-spinner-color: var(--tbw-color-accent);--tbw-spinner-track-color: var(--tbw-color-border);width:var(--tbw-spinner-size);height:var(--tbw-spinner-size);border:var(--tbw-spinner-border-width) solid var(--tbw-spinner-track-color);border-top-color:var(--tbw-spinner-color);border-radius:50%;animation:tbw-spin .8s linear infinite}.tbw-spinner--large{--tbw-spinner-size: min(48px, calc(100% - 16px) )}.tbw-spinner--small{--tbw-spinner-size: calc(var(--tbw-row-height, 28px) * .6);--tbw-spinner-border-width: 2px}.data-grid-row.tbw-row-loading{position:relative;pointer-events:none}.tbw-row-loading-overlay{position:absolute;inset:0;background:light-dark(rgba(255,255,255,.7),rgba(0,0,0,.5));z-index:26;animation:tbw-fade-in .15s ease-out;pointer-events:none;display:flex;align-items:center}.tbw-row-loading-spinner{--_spinner-size: calc(var(--tbw-row-height, 28px) * .6);margin-left:var(--tbw-spacing-md);width:var(--_spinner-size);height:var(--_spinner-size);border:2px solid var(--tbw-spinner-track-color, var(--tbw-color-border));border-top-color:var(--tbw-spinner-color, var(--tbw-color-accent));border-radius:50%;animation:tbw-spin .8s linear infinite}.cell.tbw-cell-loading{position:relative;pointer-events:none}.cell.tbw-cell-loading:before{content:"";position:absolute;inset:0;background:light-dark(rgba(255,255,255,.7),rgba(0,0,0,.5));z-index:26;animation:tbw-fade-in .15s ease-out}.cell.tbw-cell-loading:after{--_spinner-size: calc(var(--tbw-row-height, 28px) * .5);content:"";position:absolute;left:var(--tbw-spacing-sm);top:0;bottom:0;margin:auto 0;width:var(--_spinner-size);height:var(--_spinner-size);border:2px solid var(--tbw-spinner-track-color, var(--tbw-color-border));border-top-color:var(--tbw-spinner-color, var(--tbw-color-accent));border-radius:50%;animation:tbw-spin .8s linear infinite;z-index:27}}
|
|
88
88
|
@layer tbw-base{tbw-grid .tbw-expanding{animation:tbw-expand var(--tbw-animation-duration) var(--tbw-animation-easing) forwards;overflow:hidden}tbw-grid .tbw-collapsing{animation:tbw-collapse var(--tbw-animation-duration) var(--tbw-animation-easing) forwards;overflow:hidden}tbw-grid[data-animation-mode=off]{--tbw-animation-enabled: 0;--tbw-animation-duration: 0ms}tbw-grid[data-animation-mode=off] .data-grid-row[data-animating]{animation:none}tbw-grid .data-grid-row[data-animating=change]{animation:tbw-row-change var(--tbw-row-change-duration) ease-out}tbw-grid .data-grid-row[data-animating=insert]{animation:tbw-row-insert var(--tbw-row-insert-duration) ease-out;will-change:max-height,opacity}tbw-grid .data-grid-row[data-animating=remove]{animation:tbw-row-remove var(--tbw-row-remove-duration) ease-out forwards;will-change:max-height,opacity,transform;pointer-events:none}}@keyframes tbw-expand{0%{opacity:0;max-height:0;transform:translateY(-8px)}to{opacity:1;max-height:500px;transform:translateY(0)}}@keyframes tbw-collapse{0%{opacity:1;max-height:500px;transform:translateY(0)}to{opacity:0;max-height:0;transform:translateY(-8px)}}@keyframes tbw-row-change{0%{background-color:transparent}20%{background-color:var(--tbw-row-change-color)}to{background-color:transparent}}@keyframes tbw-row-insert{0%{opacity:0;max-height:0;overflow:hidden}to{opacity:1;max-height:var(--tbw-row-height, 28px);overflow:hidden}}@keyframes tbw-row-remove{0%{opacity:1;transform:translateY(0);max-height:var(--tbw-row-height, 28px)}to{opacity:0;max-height:0;transform:translateY(-8px)}}@keyframes tbw-spin{to{transform:rotate(360deg)}}@keyframes tbw-fade-in{0%{opacity:0}to{opacity:1}}
|
|
89
89
|
@layer tbw-base{@media(forced-colors:active){tbw-grid{--tbw-color-border: CanvasText;--tbw-color-border-strong: CanvasText;--tbw-color-border-cell: CanvasText;--tbw-color-border-header: CanvasText;--tbw-color-fg: CanvasText;--tbw-color-bg: Canvas;--tbw-color-panel-bg: Canvas;--tbw-color-header-bg: Canvas;--tbw-color-header-fg: CanvasText;--tbw-color-accent: Highlight;--tbw-color-accent-fg: HighlightText;--tbw-color-selection: Highlight;--tbw-color-row-hover: Highlight;--tbw-focus-outline: 2px solid Highlight;--tbw-range-border-color: Highlight}tbw-grid .cell:focus,tbw-grid .cell.active-cell{outline:2px solid Highlight!important;outline-offset:-2px}tbw-grid .data-grid-row[aria-selected=true]{background:Highlight!important;color:HighlightText!important}}@media(prefers-reduced-motion:reduce){tbw-grid[data-animation-mode=reduced-motion]{--tbw-animation-enabled: 0;--tbw-animation-duration: 0ms}tbw-grid[data-animation-mode=reduced-motion] .data-grid-row[data-animating]{animation:none}}}
|
|
90
|
-
`;class k extends HTMLElement{static tagName="tbw-grid";static version=typeof __GRID_VERSION__<"u"?__GRID_VERSION__:"dev";static#l=0;static adapters=[];static registerAdapter(e){this.adapters.push(e)}static getAdapters(){return this.adapters}static clearAdapters(){this.adapters=[]}static get observedAttributes(){return["rows","columns","grid-config","fit-mode","loading"]}get#n(){return this}#u=!1;#d;#h;#a=[];get#o(){return this.#t?.effective??{}}#f=!1;#w=!1;#v={rows:!1,columns:!1,gridConfig:!1,fitMode:!1};#s;#C=0;#r=null;#g=!1;#x=!1;#m=0;#z;#I=Ei();#b;#y;#p;#S;#J={scrollTop:0,scrollLeft:0,scrollHeight:0,scrollWidth:0,clientHeight:0,clientWidth:0};#e;#_;#N=!1;#D;#V;#O;#t;#i=di();#c;#q;#M=!1;#E=new Set;#H=new Map;#$;#R=new Map;_rows=[];#G=[];get _columns(){return this.#o.columns??[]}set _columns(e){this.#o.columns=e}get _visibleColumns(){return this._columns.filter(e=>!e.hidden)}_headerRowEl;_bodyEl;_rowPool=[];_resizeController;_virtualization={enabled:!0,rowHeight:28,bypassThreshold:24,start:0,end:0,container:null,viewportEl:null,totalHeightEl:null,positionCache:null,heightCache:{byKey:new Map,byRef:new WeakMap},averageHeight:28,measuredCount:0,variableHeights:!1,cachedViewportHeight:0,cachedFauxHeight:0,cachedScrollAreaHeight:0,scrollAreaEl:null};_focusRow=0;_focusCol=0;_restoreFocusAfterRender=!1;_sortState=null;_gridTemplate="";__rowRenderEpoch=0;__didInitialAutoSize=!1;get __lightDomColumnsCache(){return this.#t?.lightDomColumnsCache}set __lightDomColumnsCache(e){this.#t&&(this.#t.lightDomColumnsCache=e)}get __originalColumnNodes(){return this.#t?.originalColumnNodes}set __originalColumnNodes(e){this.#t&&(this.#t.originalColumnNodes=e)}__originalOrder=[];__frameworkAdapter;__rowsBodyEl=null;get rows(){return this._rows}set rows(e){const i=this.#a;this.#a=e,i!==e&&this.#U("rows")}get sourceRows(){return this.#a}get columns(){return[...this._columns]}set columns(e){const i=this.#t?.getColumns();this.#t?.setColumns(e),i!==e&&this.#U("columns")}get gridConfig(){return this.#o}set gridConfig(e){const i=this.#t?.getGridConfig();this.#t?.setGridConfig(e),i!==e&&(this.#t.clearLightDomCache(),this.#U("gridConfig"))}get fitMode(){return this.#o.fitMode??"stretch"}set fitMode(e){const i=this.#t?.getFitMode();this.#t?.setFitMode(e),i!==e&&this.#U("fitMode")}get loading(){return this.#M}set loading(e){const i=this.#M;this.#M=e,e?this.setAttribute("loading",""):this.removeAttribute("loading"),i!==e&&this.#he()}setRowLoading(e,i){const o=this.#E.has(e);i?this.#E.add(e):this.#E.delete(e),o!==i&&this.#j(e,i)}setCellLoading(e,i,o){let n=this.#H.get(e);const r=n?.has(i)??!1;o?(n||(n=new Set,this.#H.set(e,n)),n.add(i)):(n?.delete(i),n?.size===0&&this.#H.delete(e)),r!==o&&this.#ue(e,i,o)}isRowLoading(e){return this.#E.has(e)}isCellLoading(e,i){return this.#H.get(e)?.has(i)??!1}clearAllLoading(){this.loading=!1;for(const e of this.#E)this.#j(e,!1);this.#E.clear();for(const[e,i]of this.#H)for(const o of i)this.#ue(e,o,!1);this.#H.clear()}get effectiveConfig(){return this.#o}get disconnectSignal(){return this.#b||(this.#b=new AbortController),this.#b.signal}constructor(){super(),this.#be(),this.#d=new Promise(e=>this.#h=e),this.#s=new ei({mergeConfig:()=>{this.#t.parseLightDomColumns(this),this.#t.merge(),this.#te(),Di(this.#o,this.#e?.getPlugins()??[]),Oi(this.#e?.getPlugins()??[]),ki(this.#e?.getPlugins()??[]),this.#Pe(),this.#G=[...this._columns]},processColumns:()=>this.#xe(),processRows:()=>this.#He(),renderHeader:()=>ie(this),updateTemplate:()=>V(this),renderVirtualWindow:()=>this.refreshVirtualWindow(!0,!0),afterRender:()=>{this.#e?.afterRender(),this._virtualization.enabled&&this._virtualization.totalHeightEl&&queueMicrotask(()=>{if(!this._virtualization.totalHeightEl)return;const i=this.#T(this._rows.length);this._virtualization.totalHeightEl.style.height=`${i}px`}),this.#o.fitMode==="fixed"&&!this.__didInitialAutoSize&&(this.__didInitialAutoSize=!0,xe(this)),this._restoreFocusAfterRender&&(this._restoreFocusAfterRender=!1,F(this)),this._virtualization.enabled&&!this.#F&&this.#Ce(),this.#x&&(this.#x=!1,requestAnimationFrame(()=>{requestAnimationFrame(()=>{this.#ve()})})),this.#M&&this.#he()},isConnected:()=>this.isConnected&&this.#f}),this.#s.setInitialReadyResolver(()=>this.#h?.()),this.#c=wi(this.#i,{getShadow:()=>this.#n,getShellConfig:()=>this.#o?.shell,getAccordionIcons:()=>({expand:this.#o?.icons?.expand??M.expand,collapse:this.#o?.icons?.collapse??M.collapse}),emit:(e,i)=>this.#L(e,i),refreshShellHeader:()=>this.refreshShellHeader()}),this.#t=new Pt({getRows:()=>this.#a,getSortState:()=>this._sortState,setSortState:e=>{this._sortState=e},onConfigChange:()=>{this.#s.requestPhase(H.FULL,"configChange")},emit:(e,i)=>this.#L(e,i),clearRowPool:()=>{this._rowPool.length=0,this._bodyEl&&(this._bodyEl.innerHTML=""),this.__rowRenderEpoch++},setup:()=>this.#P(),renderHeader:()=>ie(this),updateTemplate:()=>V(this),refreshVirtualWindow:()=>this.#s.requestPhase(H.VIRTUALIZATION,"configManager"),getVirtualization:()=>this._virtualization,setRowHeight:e=>{this._virtualization.rowHeight=e},applyAnimationConfig:e=>this.#Le(e),getShellLightDomTitle:()=>this.#i.lightDomTitle,getShellToolPanels:()=>this.#i.toolPanels,getShellHeaderContents:()=>this.#i.headerContents,getShellToolbarContents:()=>this.#i.toolbarContents,getShellLightDomHeaderContent:()=>this.#i.lightDomHeaderContent,getShellHasToolButtonsContainer:()=>this.#i.hasToolButtonsContainer})}async#be(){await _i(Gi)}getPlugin(e){return this.#e?.getPlugin(e)}getPluginByName(e){return this.#e?.getPluginByName(e)}requestRender(){this.#s.requestPhase(H.ROWS,"plugin:requestRender")}requestColumnsRender(){this.#s.requestPhase(H.COLUMNS,"plugin:requestColumnsRender")}requestRenderWithFocus(){this._restoreFocusAfterRender=!0,this.#s.requestPhase(H.ROWS,"plugin:requestRenderWithFocus")}updateTemplate(){V(this)}requestAfterRender(){this.#s.requestPhase(H.STYLE,"plugin:requestAfterRender")}#ee(){this.#e=new X(this);const e=this.#o?.plugins,i=Array.isArray(e)?e:[];this.#e.attachAll(i)}#W(){const e=this.#e?.getPluginStyles()??[];Ci(e)}#te(){const e=this.#o?.plugins,i=Array.isArray(e)?e:[];if(this.#_===i)return;if(this.#_&&this.#_.length===i.length&&this.#_.every((n,r)=>n===i[r])){this.#_=i;return}this.#e&&this.#e.detachAll();for(const n of this.#i.toolPanels.keys()){const r=this.#i.lightDomToolPanelIds.has(n),s=this.#i.apiToolPanelIds.has(n);if(!r&&!s){const l=this.#i.panelCleanups.get(n);l&&(l(),this.#i.panelCleanups.delete(n)),this.#i.toolPanels.delete(n)}}for(const n of this.#i.headerContents.keys()){const r=this.#i.headerContentCleanups.get(n);r&&(r(),this.#i.headerContentCleanups.delete(n)),this.#i.headerContents.delete(n)}this.#ee(),this.#W(),this.#_=i,this.#re(),this.#ie();const o=this.#g;if(this.#g=this.#e?.getAll().some(n=>n.onScroll)??!1,!o&&this.#g){const r=this.#n.querySelector(".tbw-grid-content")??this.#n.querySelector(".tbw-grid-root");this.#B(r)}}#me(){this.#e?.detachAll()}#ie(){if(!this.#e)return;const e=this.#e.getToolPanels();for(const{panel:o}of e)this.#i.toolPanels.has(o.id)||this.#i.toolPanels.set(o.id,o);const i=this.#e.getHeaderContents();for(const{content:o}of i)this.#i.headerContents.has(o.id)||this.#i.headerContents.set(o.id,o)}#oe(){const e=k.getAdapters();if(e.length===0&&!this.__frameworkAdapter)return;const i=this.__frameworkAdapter;return o=>{if(i?.createToolPanelRenderer){const n=i.createToolPanelRenderer(o);if(n)return n}for(const n of e)if(n.createToolPanelRenderer){const r=n.createToolPanelRenderer(o);if(r)return r}}}connectedCallback(){this.hasAttribute("tabindex")||(this.tabIndex=0),this.hasAttribute("version")||this.setAttribute("version",k.version),this.id||(this.id=`tbw-grid-${++k.#l}`),this._rows=Array.isArray(this.#a)?[...this.#a]:[],this.#b&&(this.#b.abort(),this.#N=!1),this.#b=new AbortController,this.#S&&(Ye(this.#S),this.#S=void 0),this.#k(),this.#t.parseLightDomColumns(this),this.#t.merge(),this.#ee();const e=this.#o?.plugins;this.#_=Array.isArray(e)?e:[],this.#ie(),this.#u||(this.#Z(),this.#W(),this.#u=!0),this.#ne(),this.#S=Bt(()=>{this.#Me()},{timeout:100})}disconnectedCallback(){this.#S&&(Ye(this.#S),this.#S=void 0),this.#m&&(clearTimeout(this.#m),this.#m=0),this.#me(),pi(this.#i),this.#c.setInitialized(!1),this.#q?.(),this.#q=void 0,lt(this.#I),this.#b&&(this.#b.abort(),this.#b=void 0),this.#D?.abort(),this.#D=void 0,this.#N=!1,this._resizeController&&this._resizeController.dispose(),this.#y&&(this.#y.disconnect(),this.#y=void 0),this.#p&&(this.#p.disconnect(),this.#p=void 0,this.#F=!1),K(this),this.#A.clear(),this.#_=void 0;for(const e of this._rowPool)e.remove();this._rowPool.length=0,this.__rowsBodyEl=null,this.#f=!1}attributeChangedCallback(e,i,o){if(e==="loading"){const n=o!==null&&o!=="false";this.loading!==n&&(this.loading=n);return}if(!(i===o||!o||o==="null"||o==="undefined"))if(e==="rows"||e==="columns"||e==="grid-config")try{const n=JSON.parse(o);e==="rows"?this.rows=n:e==="columns"?this.columns=n:e==="grid-config"&&(this.gridConfig=n)}catch{console.warn(`[tbw-grid] Invalid JSON for '${e}' attribute:`,o)}else e==="fit-mode"&&(this.fitMode=o)}#ne(){const i=this.#n.querySelector(".tbw-grid-content")??this.#n.querySelector(".tbw-grid-root");if(this._headerRowEl=i?.querySelector(".header-row"),this._virtualization.totalHeightEl=i?.querySelector(".faux-vscroll-spacer"),this._virtualization.viewportEl=i?.querySelector(".rows-viewport"),this._bodyEl=i?.querySelector(".rows"),this.__rowsBodyEl=i?.querySelector(".rows-body"),this.#c.isInitialized){pe(this.#n,this.#i),ge(this.#n,this.#o?.shell,this.#i);const n=this.#o?.shell?.toolPanel?.defaultOpen;n&&this.#i.toolPanels.has(n)&&(this.openToolPanel(),this.#i.expandedSections.add(n))}if(this.setAttribute("data-upgraded",""),this.#f=!0,this._resizeController=je(this),this.#P(),this.#B(i),this.#N)return;this.#N=!0;const o=this.disconnectSignal;Ut(this,this,this.#n,o),this.#re(),queueMicrotask(()=>this.#ye()),this.#s.requestPhase(H.FULL,"afterConnect")}#re(){const e=this.#o.rowHeight,i=this.#e.hasRowHeightPlugin();typeof e=="function"||i?this._virtualization.variableHeights||(this._virtualization.variableHeights=!0,this._virtualization.rowHeight=typeof e=="number"&&e>0?e:this._virtualization.rowHeight||28,this.#Q(),typeof e!="function"&&(this.#x=!0)):!i&&typeof e!="function"&&this._virtualization.variableHeights?(this._virtualization.variableHeights=!1,this._virtualization.positionCache=null):typeof e=="number"&&e>0?(this._virtualization.rowHeight=e,this._virtualization.variableHeights=!1):requestAnimationFrame(()=>this.#se())}#se(){if(this.#e.hasExtraHeight())return;const e=this._bodyEl?.querySelector(".data-grid-row");if(!e)return;const i=e.querySelectorAll(".cell");let o=0;i.forEach(s=>{const l=s.offsetHeight;l>o&&(o=l)});const n=e.getBoundingClientRect(),r=Math.max(n.height,o);r>0&&Math.abs(r-this._virtualization.rowHeight)>1&&(this._virtualization.rowHeight=r,this.#s.requestPhase(H.VIRTUALIZATION,"measureRowHeight"))}#ve(){const e=this._bodyEl?.querySelector(".data-grid-row");if(!e)return;const i=e.querySelectorAll(".cell");let o=0;i.forEach(s=>{const l=s.offsetHeight;l>o&&(o=l)});const n=e.getBoundingClientRect(),r=Math.max(n.height,o);if(r>0&&(Math.abs(r-this._virtualization.rowHeight)>1&&(this._virtualization.rowHeight=r),this.#Q(),this._virtualization.totalHeightEl)){const l=this.#T(this._rows.length);this._virtualization.totalHeightEl.style.height=`${l}px`}}#B(e){this.#D?.abort(),this.#D=new AbortController;const i=this.#D.signal,o=e?.querySelector(".faux-vscroll"),n=e?.querySelector(".rows");if(this._virtualization.container=o??this,this.#g=this.#e?.getAll().some(r=>r.onScroll)??!1,o&&n){o.addEventListener("scroll",()=>{if(!this._virtualization.enabled&&!this.#g)return;const a=o.scrollTop,c=this._virtualization.rowHeight;if(this._rows.length<=this._virtualization.bypassThreshold)n.style.transform=`translateY(${-a}px)`;else{const d=this._virtualization.positionCache;let f,u;if(this._virtualization.variableHeights&&d&&d.length>0){f=dt(d,a),f===-1&&(f=0);const p=f-f%2;u=d[p]?.offset??p*c}else f=Math.floor(a/c),u=(f-f%2)*c;const g=-(a-u);n.style.transform=`translateY(${g}px)`}this.#r=a,this.#C||(this.#C=requestAnimationFrame(()=>{this.#C=0,this.#r!==null&&(this.#ze(this.#r),this.#r=null)}))},{passive:!0,signal:i});const r=this.#n.querySelector(".tbw-scroll-area");this.#V=r,this._virtualization.scrollAreaEl=r,r&&this.#g&&r.addEventListener("scroll",()=>{const a=this.#J;a.scrollTop=o.scrollTop,a.scrollLeft=r.scrollLeft,a.scrollHeight=o.scrollHeight,a.scrollWidth=r.scrollWidth,a.clientHeight=o.clientHeight,a.clientWidth=r.clientWidth,this.#e?.onScroll(a)},{passive:!0,signal:i});const s=this.#n.querySelector(".tbw-grid-content"),l=this.#V;s&&(s.addEventListener("wheel",a=>{const c=a.shiftKey||Math.abs(a.deltaX)>Math.abs(a.deltaY);if(c&&l){const d=a.shiftKey?a.deltaY:a.deltaX,{scrollLeft:f,scrollWidth:u,clientWidth:g}=l;(d>0&&f<u-g||d<0&&f>0)&&(a.preventDefault(),l.scrollLeft+=d)}else if(!c){const{scrollTop:d,scrollHeight:f,clientHeight:u}=o;(a.deltaY>0&&d<f-u||a.deltaY<0&&d>0)&&(a.preventDefault(),o.scrollTop+=a.deltaY)}},{passive:!1,signal:i}),Hi(s,this.#I,{fauxScrollbar:o,scrollArea:l},i))}this._bodyEl&&Ft(this,this._bodyEl,i),this.#y?.disconnect(),this._virtualization.viewportEl&&(this.#y=new ResizeObserver(()=>{this.#ke(),this.#s.requestPhase(H.VIRTUALIZATION,"resize-observer")}),this.#y.observe(this._virtualization.viewportEl)),this.#n.addEventListener("focusin",()=>{this.dataset.hasFocus=""},{signal:i}),this.#n.addEventListener("focusout",r=>{const s=r.relatedTarget;(!s||!this.#n.contains(s))&&delete this.dataset.hasFocus},{signal:i})}#F=!1;#Ce(){if(this.#F)return;const e=this._bodyEl?.querySelector(".data-grid-row");e&&(this.#F=!0,this.#p?.disconnect(),this.#p=new ResizeObserver(()=>{this.#se()}),this.#p.observe(e))}addEventListener(e,i,o){super.addEventListener(e,i,o)}removeEventListener(e,i,o){super.removeEventListener(e,i,o)}#L(e,i){this.dispatchEvent(new CustomEvent(e,{detail:i,bubbles:!0,composed:!0}))}#ye(){this._bodyEl?.querySelectorAll(".data-grid-row")?.forEach((i,o)=>{const n=o===this._focusRow;i.setAttribute("aria-selected",String(n)),i.querySelectorAll(".cell").forEach((r,s)=>{r.setAttribute("aria-selected",String(n&&s===this._focusCol))})})}#U(e){this.#v[e]=!0,!this.#w&&(this.#w=!0,queueMicrotask(()=>this.#_e()))}#_e(){if(!this.#w||!this.#f){this.#w=!1;return}const e=this.#v;if(this.#w=!1,this.#v={rows:!1,columns:!1,gridConfig:!1,fitMode:!1},e.gridConfig){this.#Ae(),e.rows&&this.#le();return}e.columns&&this.#Se(),e.rows&&this.#le(),e.fitMode&&this.#Re()}#le(){this._rows=Array.isArray(this.#a)?[...this.#a]:[],this.#X(),this.#s.requestPhase(H.ROWS,"applyRowsUpdate")}#X(){this.#R.clear();const e=this.#o.getRowId;this._rows.forEach((i,o)=>{const n=this.#ae(i,e);n!==void 0&&this.#R.set(n,{row:i,index:o})})}#ae(e,i){if(i)return i(e);const o=e;if("id"in o&&o.id!=null)return String(o.id);if("_id"in o&&o._id!=null)return String(o._id)}#Ee(e,i){const o=this.#ae(e,i);if(o===void 0)throw new Error('[tbw-grid] Cannot determine row ID. Configure getRowId in gridConfig or ensure rows have an "id" property.');return o}#Se(){K(this),this.#t.merge(),this.#P()}#Re(){this.#t.merge(),this.#o.fitMode==="fixed"?(this.__didInitialAutoSize=!1,xe(this)):(this._columns.forEach(i=>{!i.__userResized&&i.__autoSized&&delete i.width}),V(this))}#Ae(){tt(this,this.#i),it(this,this.#i);const e=!!this.#n.querySelector(".has-shell"),i=!!this.#n.querySelector(".tbw-tool-panel"),o=this.#n.querySelectorAll(".tbw-accordion-section").length;this.#t.parseLightDomColumns(this),this.#t.merge(),this.#te(),ot(this,this.#i,this.#oe()),this.#t.markSourcesChanged(),this.#t.merge();const n=et(this.#o?.shell),r=(this.#o?.shell?.toolPanels?.length??0)>0,s=this.#o?.shell?.toolPanels?.length??0;if(e!==n||!i&&r||i&&s!==o){we(this.#i),this.#Z(),this.#W(),this.#ne(),this.#X();return}e&&this.#Te(),this.#X(),this.#s.requestPhase(H.COLUMNS,"applyGridConfigUpdate")}#Te(){const e=this.#n.querySelector(".tbw-shell-header");if(!e)return;const i=this.#o.shell?.header?.title??this.#i.lightDomTitle;let o=e.querySelector(".tbw-shell-title");i?(o||(o=document.createElement("h2"),o.className="tbw-shell-title",o.setAttribute("part","shell-title"),e.insertBefore(o,e.firstChild)),o.textContent=i):o&&o.remove()}#xe(){if(this.#e){const e=this.#G.length>0?this.#G:this._columns,i=e.filter(r=>!r.hidden),o=e.filter(r=>r.hidden),n=this.#e.processColumns([...i]);if(n!==i){const r=new Set(n.map(l=>l.field));!i.some(l=>r.has(l.field))&&n.length>0?this._columns=[...n,...o]:this._columns=[...n,...o]}else this._columns=[...e]}}#He(){K(this);const e=Array.isArray(this.#a)?[...this.#a]:[],i=this.#e?.processRows(e)??e;this._rows=i,this._virtualization.variableHeights&&this.#Q()}#Le(e){const i={...Se,...e.animation},o=i.mode??"reduced-motion";let n=1;o===!1||o==="off"?n=0:(o===!0||o==="on")&&(n=1),this.style.setProperty("--tbw-animation-duration",`${i.duration}ms`),this.style.setProperty("--tbw-animation-easing",i.easing??"ease-out"),this.style.setProperty("--tbw-animation-enabled",String(n)),this.dataset.animationMode=typeof o=="boolean"?o?"on":"off":o}#Y(e,i,o=this.__rowRenderEpoch){if(this.#z||(this.#z=(n,r,s)=>this.#e?.renderRow(n,r,s)??!1),kt(this,e,i,o,this.#z),this.#E.size>0)for(const n of this.#E)this.#j(n,!0)}#ce=U();#de(e,i){ft(this.#ce,this.__rowsBodyEl,this._bodyEl,e,i)}#Pe(){pt(this.#ce,this.__rowsBodyEl,this.#o,this.#i)}#he(){const e=this.querySelector(".tbw-grid-root");e&&(this.#M?(this.#$||(this.#$=jt(this.#o?.loadingRenderer)),Kt(e,this.#$)):Qt(this.#$))}#j(e,i){const o=this.#R.get(e);if(!o)return;const n=this.findRenderedRowElement?.(o.index);n&&Zt(n,i)}#ue(e,i,o){const n=this.#R.get(e);if(!n)return;const r=this.findRenderedRowElement?.(n.index);if(!r)return;const s=this._visibleColumns.findIndex(a=>a.field===i);if(s<0)return;const l=r.children[s];l&&Jt(l,o)}#P(){if(this.isConnected&&!(!this._headerRowEl||!this._bodyEl)){if(this.#t.parseLightDomColumns(this),this.#O){const e=this.#O;this.#O=void 0,this.#t.merge();const i=this.#e?.getAll()??[];this.#t.applyState(e,i)}this._bodyEl&&(this._bodyEl.style.display="",this._bodyEl.style.gridTemplateColumns=""),this.#s.requestPhase(H.FULL,"setup")}}#ze(e){let i=0,o=0,n=0,r=0,s=0;if(this.#g){const a=this._virtualization.container,c=this.#V;i=c?.scrollLeft??0,o=a?.scrollHeight??0,n=c?.scrollWidth??0,r=a?.clientHeight??0,s=c?.clientWidth??0}if(this.refreshVirtualWindow(!1)&&this.#e?.onScrollRender(),this._virtualization.variableHeights&&(this.#m&&clearTimeout(this.#m),this.#m=window.setTimeout(()=>{this.#m=0,this.#pe(this._virtualization.start,this._virtualization.end)},100)),this.#g){const a=this.#J;a.scrollTop=e,a.scrollLeft=i,a.scrollHeight=o,a.scrollWidth=n,a.clientHeight=r,a.clientWidth=s,this.#e?.onScroll(a)}}findHeaderRow(){return this.#n.querySelector(".header-row")}findRenderedRowElement(e){return Array.from(this._bodyEl.querySelectorAll(".data-grid-row")).find(i=>{const o=i.querySelector(".cell[data-row]");return o&&Number(o.getAttribute("data-row"))===e})||null}_dispatchCellClick(e,i,o,n){const r=this._rows[i],s=this._columns[o];if(!r||!s)return!1;const l=s.field,a=r[l],c=new CustomEvent("cell-activate",{cancelable:!0,bubbles:!0,composed:!0,detail:{rowIndex:i,colIndex:o,field:l,value:a,row:r,cellEl:n,trigger:"pointer",originalEvent:e}});if(this.dispatchEvent(c),c.defaultPrevented)return!0;const d={row:r,rowIndex:i,colIndex:o,field:l,value:a,cellEl:n,originalEvent:e},f=this.#e?.onCellClick(d)??!1;return this.#L("cell-click",d),f}_dispatchRowClick(e,i,o,n){if(!o)return!1;const r={rowIndex:i,row:o,rowEl:n,originalEvent:e},s=this.#e?.onRowClick(r)??!1;return this.#L("row-click",r),s}_dispatchHeaderClick(e,i,o){const n=this._columns[i];if(!n)return!1;const r={colIndex:i,field:n.field,column:n,headerEl:o,originalEvent:e};return this.#e?.onHeaderClick(r)??!1}_dispatchKeyDown(e){return this.#e?.onKeyDown(e)??!1}_getHorizontalScrollOffsets(e,i){return this.#e?.getHorizontalScrollOffsets(e,i)??{left:0,right:0}}queryPlugins(e){return this.#e?.queryPlugins(e)??[]}query(e,i){return this.#e?.queryPlugins({type:e,context:i})??[]}_dispatchCellMouseDown(e){return this.#e?.onCellMouseDown(e)??!1}_dispatchCellMouseMove(e){this.#e?.onCellMouseMove(e)}_dispatchCellMouseUp(e){this.#e?.onCellMouseUp(e)}_afterCellRender(e){this.#e?.afterCellRender(e)}_hasAfterCellRenderHook(){return this.#e?.hasAfterCellRenderHook()??!1}_afterRowRender(e){this.#e?.afterRowRender(e)}_hasAfterRowRenderHook(){return this.#e?.hasAfterRowRenderHook()??!1}async ready(){return this.#d}async forceLayout(){return this.#s.requestPhase(H.FULL,"forceLayout"),this.#s.whenReady()}async getConfig(){return Object.freeze({...this.#o||{}})}getRowId(e){return this.#Ee(e,this.#o.getRowId)}getRow(e){return this.#R.get(e)?.row}updateRow(e,i,o="api"){const n=this.#R.get(e);if(!n)throw new Error(`[tbw-grid] Row with ID "${e}" not found. Ensure the row exists and getRowId is correctly configured.`);const{row:r,index:s}=n,l=[];for(const[a,c]of Object.entries(i)){const d=r[a];d!==c&&(l.push({field:a,oldValue:d,newValue:c}),r[a]=c)}for(const{field:a,oldValue:c,newValue:d}of l)this.#L("cell-change",{row:r,rowId:e,rowIndex:s,field:a,oldValue:c,newValue:d,changes:i,source:o});l.length>0&&this.#s.requestPhase(H.ROWS,"updateRow")}updateRows(e,i="api"){let o=!1;for(const{id:n,changes:r}of e){const s=this.#R.get(n);if(!s)throw new Error(`[tbw-grid] Row with ID "${n}" not found. Ensure the row exists and getRowId is correctly configured.`);const{row:l,index:a}=s;for(const[c,d]of Object.entries(r)){const f=l[c];f!==d&&(o=!0,l[c]=d,this.#L("cell-change",{row:l,rowId:n,rowIndex:a,field:c,oldValue:f,newValue:d,changes:r,source:i}))}}o&&this.#s.requestPhase(H.ROWS,"updateRows")}animateRow(e,i){fe(this,e,i)}animateRows(e,i){si(this,e,i)}animateRowById(e,i){return li(this,e,i)}setColumnVisible(e,i){const o=this.#t.setColumnVisible(e,i);return o&&this.requestStateChange(),o}toggleColumnVisibility(e){const i=this.#t.toggleColumnVisibility(e);return i&&this.requestStateChange(),i}isColumnVisible(e){return this.#t.isColumnVisible(e)}showAllColumns(){this.#t.showAllColumns(),this.requestStateChange()}getAllColumns(){return this.#t.getAllColumns()}setColumnOrder(e){this.#t.setColumnOrder(e),this.requestStateChange()}getColumnOrder(){return this.#t.getColumnOrder()}getColumnState(){const e=this.#e?.getAll()??[];return this.#t.collectState(e)}set columnState(e){e&&(this.#O=e,this.#t.initialColumnState=e,this.#u&&this.#De(e))}get columnState(){return this.getColumnState()}#De(e){const i=this.#e?.getAll()??[];this.#t.applyState(e,i),this.#P()}requestStateChange(){const e=this.#e?.getAll()??[];this.#t.requestStateChange(e)}resetColumnState(){this.#O=void 0,this.__originalOrder=[];const e=this.#e?.getAll()??[];this.#t.resetState(e),this.#t.merge(),this.#P()}get isToolPanelOpen(){return this.#c.isPanelOpen}get defaultRowHeight(){return this._virtualization.rowHeight}get expandedToolPanelSections(){return this.#c.expandedSections}openToolPanel(){this.#c.openToolPanel()}closeToolPanel(){this.#c.closeToolPanel()}toggleToolPanel(){this.#c.toggleToolPanel()}toggleToolPanelSection(e){this.#c.toggleToolPanelSection(e)}getToolPanels(){return this.#c.getToolPanels()}registerToolPanel(e){this.#i.apiToolPanelIds.add(e.id),this.#c.registerToolPanel(e)}unregisterToolPanel(e){this.#i.apiToolPanelIds.delete(e),this.#c.unregisterToolPanel(e)}getHeaderContents(){return this.#c.getHeaderContents()}registerHeaderContent(e){this.#c.registerHeaderContent(e)}unregisterHeaderContent(e){this.#c.unregisterHeaderContent(e)}getToolbarContents(){return this.#c.getToolbarContents()}registerToolbarContent(e){this.#c.registerToolbarContent(e)}unregisterToolbarContent(e){this.#c.unregisterToolbarContent(e)}#K=!1;refreshShellHeader(){this.#K||(this.#K=!0,queueMicrotask(()=>{this.#K=!1,this.isConnected&&(this.#k(),this.#t.markSourcesChanged(),this.#t.merge(),we(this.#i),this.#Z(),this.#W(),this.#Oe())}))}#Oe(){const i=this.#n.querySelector(".tbw-grid-content")??this.#n.querySelector(".tbw-grid-root");if(this._headerRowEl=i?.querySelector(".header-row"),this._virtualization.totalHeightEl=i?.querySelector(".faux-vscroll-spacer"),this._virtualization.viewportEl=i?.querySelector(".rows-viewport"),this._bodyEl=i?.querySelector(".rows"),this.__rowsBodyEl=i?.querySelector(".rows-body"),this.#c.isInitialized){pe(this.#n,this.#i),ge(this.#n,this.#o?.shell,this.#i);const o=this.#o?.shell?.toolPanel?.defaultOpen;o&&this.#i.toolPanels.has(o)&&(this.openToolPanel(),this.#i.expandedSections.add(o))}this._resizeController=je(this),this.#B(i),this.#s.requestPhase(H.COLUMNS,"shellRefresh")}#A=new Map;registerStyles(e,i){let o=this.#A.get(e);o||(o=new CSSStyleSheet,this.#A.set(e,o)),o.replaceSync(i),this.#fe()}unregisterStyles(e){this.#A.delete(e)&&this.#fe()}getRegisteredStyles(){return Array.from(this.#A.keys())}#fe(){const e=Array.from(this.#A.values()),i=document.adoptedStyleSheets.filter(o=>!Array.from(this.#A.values()).includes(o));document.adoptedStyleSheets=[...i,...e]}#k(){tt(this,this.#i),it(this,this.#i),ot(this,this.#i,this.#oe())}#ge(){const e=this.#n.querySelector(".tbw-shell-header");if(!e)return;we(this.#i);const i=hi(this.#o.shell,this.#i,this.#o.icons?.toolPanel),o=document.createElement("div");o.innerHTML=i;const n=o.firstElementChild;n&&(e.replaceWith(n),this.#we(),ge(this.#n,this.#o?.shell,this.#i))}#Me(){const e=()=>{const o=this.#i.lightDomTitle,n=this.#i.hasToolButtonsContainer;this.#k();const r=this.#i.lightDomTitle,s=this.#i.hasToolButtonsContainer;(r&&!o||s&&!n)&&(this.#t.markSourcesChanged(),this.#t.merge(),this.#ge())},i=()=>{this.__lightDomColumnsCache=void 0,this.#P()};this.#t.registerLightDomHandler("tbw-grid-header",e),this.#t.registerLightDomHandler("tbw-grid-tool-buttons",e),this.#t.registerLightDomHandler("tbw-grid-tool-panel",e),this.#t.registerLightDomHandler("tbw-grid-column",i),this.#t.registerLightDomHandler("tbw-grid-detail",i),this.#t.observeLightDOM(this)}refreshColumns(){this.__lightDomColumnsCache=void 0,K(this),this.#t.parseLightDomColumns(this);const e=this.#i.lightDomTitle,i=this.#i.hasToolButtonsContainer;this.#k();const o=this.#i.lightDomTitle,n=this.#i.hasToolButtonsContainer;(o&&!e||n&&!i)&&(this.#t.markSourcesChanged(),this.#t.merge(),this.#ge()),this.#s.requestPhase(H.COLUMNS,"refreshColumns")}#ke(){const e=this._virtualization.container,i=this._virtualization.viewportEl??e;i&&(this._virtualization.cachedViewportHeight=i.clientHeight),e&&(this._virtualization.cachedFauxHeight=e.clientHeight);const o=this._virtualization.scrollAreaEl;o&&(this._virtualization.cachedScrollAreaHeight=o.clientHeight)}#T(e,i=!1){const o=this._virtualization;let n,r,s;if(i){const u=o.container??this,g=o.viewportEl??u,p=o.scrollAreaEl;n=u.clientHeight,r=g.clientHeight,s=p?p.clientHeight:n,o.cachedFauxHeight=n,o.cachedViewportHeight=r,o.cachedScrollAreaHeight=s}else n=o.cachedFauxHeight,r=o.cachedViewportHeight,s=o.cachedScrollAreaHeight||n;const l=s-r,a=Math.max(0,n-s);let c,d=0;return o.variableHeights&&o.positionCache?c=$i(o.positionCache):(c=e*o.rowHeight,d=this.#e?.getExtraHeight()??0),c+l+d+a}#Q(){if(!this._virtualization.variableHeights)return;const e=this._rows,i=this._virtualization.rowHeight||28,o=this.#o.rowHeight,n=this.#o.getRowId,r=n?l=>n(l):void 0;this._virtualization.positionCache=qi(e,this._virtualization.heightCache,i,{rowId:r},(l,a)=>{const c=this.#e?.getRowHeight?.(l,a);if(c!==void 0)return c;if(o){const d=o(l,a);if(d!==void 0&&d>0)return d}});const s=Vi(this._virtualization.positionCache,e,i,(l,a)=>this.#e?.getRowHeight?.(l,a));this._virtualization.measuredCount=s.measuredCount,s.measuredCount>0&&(this._virtualization.averageHeight=s.averageHeight)}invalidateRowHeight(e,i){if(!this._virtualization.variableHeights||!this._virtualization.positionCache||e<0||e>=this._rows.length)return;const o=this._virtualization.positionCache,n=this._rows[e];let r=i;r===void 0&&(r=this.#e?.getRowHeight?.(n,e)),r===void 0&&(r=this._virtualization.rowHeight);const s=o[e];if(!(!s||Math.abs(s.height-r)<1)&&(ye(o,e,r),this._virtualization.totalHeightEl)){const l=this.#T(this._rows.length);this._virtualization.totalHeightEl.style.height=`${l}px`}}#pe(e,i){if(!this._virtualization.variableHeights||!this._virtualization.positionCache||!this._bodyEl)return;const o=this._bodyEl.querySelectorAll(".data-grid-row"),n=this.#o.getRowId,r=Ui({positionCache:this._virtualization.positionCache,heightCache:this._virtualization.heightCache,rows:this._rows,defaultHeight:this._virtualization.rowHeight,start:e,end:i,getPluginHeight:(s,l)=>this.#e?.getRowHeight?.(s,l),getRowId:n?s=>n(s):void 0},o);if(r.hasChanges&&(this._virtualization.measuredCount=r.measuredCount,this._virtualization.averageHeight=r.averageHeight,this._virtualization.totalHeightEl)){const s=this.#T(this._rows.length);this._virtualization.totalHeightEl.style.height=`${s}px`}}refreshVirtualWindow(e=!1,i=!1){if(!this._bodyEl)return!1;const o=this._rows.length;if(!this._virtualization.enabled)return this.#Y(0,o),i||this.#e?.afterRender(),!0;if(this._rows.length<=this._virtualization.bypassThreshold)return this._virtualization.start=0,this._virtualization.end=o,e&&(this._bodyEl.style.transform="translateY(0px)"),this.#Y(0,o,e?++this.__rowRenderEpoch:this.__rowRenderEpoch),e&&this._virtualization.totalHeightEl&&(this._virtualization.totalHeightEl.style.height=`${this.#T(o,!0)}px`),this.#de(o,this._visibleColumns.length),i||this.#e?.afterRender(),!0;const n=this._virtualization.container??this,r=this._virtualization.viewportEl??n,s=e?this._virtualization.cachedViewportHeight=r.clientHeight:this._virtualization.cachedViewportHeight||(this._virtualization.cachedViewportHeight=r.clientHeight),l=this._virtualization.rowHeight,a=n.scrollTop;let c;const d=this._virtualization.positionCache;if(this._virtualization.variableHeights&&d&&d.length>0)c=dt(d,a),c===-1&&(c=0);else{c=Math.floor(a/l);let m=0;const _=10;for(;m<_;){const R=this.#e?.getExtraHeightBefore?.(c)??0,T=Math.floor((a-R)/l);if(T>=c||T<0)break;c=T,m++}}c=c-c%2,c<0&&(c=0);const f=this.#e?.adjustVirtualStart(c,a,l);f!==void 0&&f<c&&(c=f,c=c-c%2,c<0&&(c=0));let u;if(this._virtualization.variableHeights&&d&&d.length>0){const m=s+l*3;let _=0;for(u=c;u<o&&_<m;)_+=d[u].height,u++;const R=Math.ceil(s/l)+3;u-c<R&&(u=Math.min(c+R,o))}else{const m=Math.ceil(s/l)+3;u=c+m}u>o&&(u=o);const g=this._virtualization.start,p=this._virtualization.end;if(!e&&c===g&&u===p)return!1;this._virtualization.start=c,this._virtualization.end=u;const h=e?this._virtualization.cachedFauxHeight=n.clientHeight:this._virtualization.cachedFauxHeight||(this._virtualization.cachedFauxHeight=n.clientHeight);if(e){const m=this._virtualization.scrollAreaEl;m&&(this._virtualization.cachedScrollAreaHeight=m.clientHeight)}if(h===0&&s>0)return this.#s.requestPhase(H.VIRTUALIZATION,"stale-refs-retry"),!1;if(e&&this._virtualization.totalHeightEl){const m=this.#T(o);this._virtualization.totalHeightEl.style.height=`${m}px`}let w;if(this._virtualization.variableHeights&&d&&d[c])w=d[c].offset;else{const m=this.#e?.getExtraHeightBefore?.(c)??0;w=c*l+m}const C=-(a-w);return this._bodyEl.style.transform=`translateY(${C}px)`,this.#Y(c,u,e?++this.__rowRenderEpoch:this.__rowRenderEpoch),e&&this._virtualization.variableHeights&&this.#pe(c,u),this.#de(o,this._visibleColumns.length),e&&!i&&(this.#e?.afterRender(),queueMicrotask(()=>{if(!this._virtualization.totalHeightEl)return;const m=this.#T(o);this._virtualization.cachedFauxHeight===0&&this._virtualization.cachedViewportHeight>0||(this._virtualization.totalHeightEl.style.height=`${m}px`)})),!0}#Z(){this.#k(),this.#t.markSourcesChanged(),this.#t.merge();const e=this.#o?.shell;mi(this.#n,e,{isPanelOpen:this.#i.isPanelOpen,expandedSections:this.#i.expandedSections},this.#o?.icons)&&(this.#we(),this.#c.setInitialized(!0))}#we(){ui(this.#n,this.#o?.shell,this.#i,{onPanelToggle:()=>this.toggleToolPanel(),onSectionToggle:e=>this.toggleToolPanelSection(e)}),this.#q?.(),this.#q=fi(this.#n,this.#o?.shell,e=>{this.style.setProperty("--tbw-tool-panel-width",`${e}px`)})}}customElements.get(k.tagName)||customElements.define(k.tagName,k),globalThis.DataGridElement=k;const Bi={CAN_MOVE_COLUMN:"canMoveColumn",GET_CONTEXT_MENU_ITEMS:"getContextMenuItems"};class Xi{static dependencies;static manifest;version=typeof __GRID_VERSION__<"u"?__GRID_VERSION__:"dev";styles;cellRenderers;headerRenderers;cellEditors;grid;config;userConfig;#l;get defaultConfig(){return{}}constructor(e={}){this.userConfig=e}attach(e){this.#l?.abort(),this.#l=new AbortController,this.grid=e,this.config={...this.defaultConfig,...this.userConfig}}detach(){this.#l?.abort(),this.#l=void 0}getPlugin(e){return this.grid?.getPlugin(e)}emit(e,i){this.grid?.dispatchEvent?.(new CustomEvent(e,{detail:i,bubbles:!0}))}emitCancelable(e,i){const o=new CustomEvent(e,{detail:i,bubbles:!0,cancelable:!0});return this.grid?.dispatchEvent?.(o),o.defaultPrevented}on(e,i){this.grid?._pluginManager?.subscribe(this,e,i)}off(e){this.grid?._pluginManager?.unsubscribe(this,e)}emitPluginEvent(e,i){this.grid?._pluginManager?.emitPluginEvent(e,i)}requestRender(){this.grid?.requestRender?.()}requestColumnsRender(){this.grid?.requestColumnsRender?.()}requestRenderWithFocus(){this.grid?.requestRenderWithFocus?.()}requestAfterRender(){this.grid?.requestAfterRender?.()}get rows(){return this.grid?.rows??[]}get sourceRows(){return this.grid?.sourceRows??[]}get columns(){return this.grid?.columns??[]}get visibleColumns(){return this.grid?._visibleColumns??[]}get gridElement(){return this.grid}get disconnectSignal(){return this.#l?.signal??this.grid?.disconnectSignal}get gridIcons(){const e=this.grid?.gridConfig?.icons??{};return{...M,...e}}get isAnimationEnabled(){const e=this.grid?.effectiveConfig?.animation?.mode??"reduced-motion";if(e===!1||e==="off")return!1;if(e===!0||e==="on")return!0;const i=this.gridElement;return i?getComputedStyle(i).getPropertyValue("--tbw-animation-enabled").trim()!=="0":!0}get animationDuration(){const e=this.gridElement;if(e){const i=getComputedStyle(e).getPropertyValue("--tbw-animation-duration").trim(),o=parseInt(i,10);if(!isNaN(o))return o}return 200}resolveIcon(e,i){return i!==void 0?i:this.gridIcons[e]}setIcon(e,i){typeof i=="string"?e.innerHTML=i:i instanceof HTMLElement&&(e.innerHTML="",e.appendChild(i.cloneNode(!0)))}warn(e){console.warn(`[tbw-grid:${this.name}] ${e}`)}}const L={ROOT:"tbw-grid-root",HEADER:"header",HEADER_ROW:"header-row",HEADER_CELL:"header-cell",ROWS_VIEWPORT:"rows-viewport",ROWS_SPACER:"rows-spacer",ROWS_CONTAINER:"rows",DATA_ROW:"data-row",GROUP_ROW:"group-row",DATA_CELL:"data-cell",SELECTED:"selected",FOCUSED:"focused",EDITING:"editing",EXPANDED:"expanded",COLLAPSED:"collapsed",DRAGGING:"dragging",RESIZING:"resizing",SORTABLE:"sortable",SORTED_ASC:"sorted-asc",SORTED_DESC:"sorted-desc",HIDDEN:"hidden",STICKY_LEFT:"sticky-left",STICKY_RIGHT:"sticky-right",PINNED_TOP:"pinned-top",PINNED_BOTTOM:"pinned-bottom",TREE_TOGGLE:"tree-toggle",TREE_INDENT:"tree-indent",GROUP_TOGGLE:"group-toggle",GROUP_LABEL:"group-label",GROUP_COUNT:"group-count",RANGE_SELECTION:"range-selection",SELECTION_OVERLAY:"selection-overlay"},Y={ROW_INDEX:"data-row-index",COL_INDEX:"data-col-index",FIELD:"data-field",GROUP_KEY:"data-group-key",TREE_LEVEL:"data-tree-level",STICKY:"data-sticky"},Yi={ROOT:`.${L.ROOT}`,HEADER:`.${L.HEADER}`,HEADER_ROW:`.${L.HEADER_ROW}`,HEADER_CELL:`.${L.HEADER_CELL}`,ROWS_VIEWPORT:`.${L.ROWS_VIEWPORT}`,ROWS_CONTAINER:`.${L.ROWS_CONTAINER}`,DATA_ROW:`.${L.DATA_ROW}`,DATA_CELL:`.${L.DATA_CELL}`,GROUP_ROW:`.${L.GROUP_ROW}`,ROW_BY_INDEX:t=>`.${L.DATA_ROW}[${Y.ROW_INDEX}="${t}"]`,CELL_BY_FIELD:t=>`.${L.DATA_CELL}[${Y.FIELD}="${t}"]`,CELL_AT:(t,e)=>`.${L.DATA_ROW}[${Y.ROW_INDEX}="${t}"] .${L.DATA_CELL}[${Y.COL_INDEX}="${e}"]`,SELECTED_ROWS:`.${L.DATA_ROW}.${L.SELECTED}`,EDITING_CELL:`.${L.DATA_CELL}.${L.EDITING}`},ji={COLOR_BG:"--tbw-color-bg",COLOR_FG:"--tbw-color-fg",COLOR_FG_MUTED:"--tbw-color-fg-muted",COLOR_BORDER:"--tbw-color-border",COLOR_ACCENT:"--tbw-color-accent",COLOR_HEADER_BG:"--tbw-color-header-bg",COLOR_HEADER_FG:"--tbw-color-header-fg",COLOR_SELECTION:"--tbw-color-selection",COLOR_ROW_HOVER:"--tbw-color-row-hover",COLOR_ROW_ALT:"--tbw-color-row-alt",ROW_HEIGHT:"--tbw-row-height",HEADER_HEIGHT:"--tbw-header-height",CELL_PADDING:"--tbw-cell-padding",FONT_FAMILY:"--tbw-font-family",FONT_SIZE:"--tbw-font-size",BORDER_RADIUS:"--tbw-border-radius",FOCUS_OUTLINE:"--tbw-focus-outline"};function Ki(t){const e=document.createElement("tbw-grid");return t&&(e.gridConfig=t),e}function Qi(t,e=document){return e.querySelector(t)}const Zi={CELL_CHANGE:"cell-change",CELL_COMMIT:"cell-commit",ROW_COMMIT:"row-commit",EDIT_OPEN:"edit-open",EDIT_CLOSE:"edit-close",CHANGED_ROWS_RESET:"changed-rows-reset",MOUNT_EXTERNAL_VIEW:"mount-external-view",MOUNT_EXTERNAL_EDITOR:"mount-external-editor",SORT_CHANGE:"sort-change",COLUMN_RESIZE:"column-resize",ACTIVATE_CELL:"activate-cell",CELL_ACTIVATE:"cell-activate",GROUP_TOGGLE:"group-toggle",COLUMN_STATE_CHANGE:"column-state-change"},Ji={SELECTION_CHANGE:"selection-change",TREE_EXPAND:"tree-expand",FILTER_CHANGE:"filter-change",SORT_MODEL_CHANGE:"sort-model-change",EXPORT_START:"export-start",EXPORT_COMPLETE:"export-complete",CLIPBOARD_COPY:"clipboard-copy",CLIPBOARD_PASTE:"clipboard-paste",CONTEXT_MENU_OPEN:"context-menu-open",CONTEXT_MENU_CLOSE:"context-menu-close",HISTORY_CHANGE:"history-change",SERVER_LOADING:"server-loading",SERVER_ERROR:"server-error",COLUMN_VISIBILITY_CHANGE:"column-visibility-change",COLUMN_REORDER:"column-reorder",DETAIL_EXPAND:"detail-expand",GROUP_EXPAND:"group-expand"},_e={sum:(t,e)=>t.reduce((i,o)=>i+(Number(o[e])||0),0),avg:(t,e)=>{const i=t.reduce((o,n)=>o+(Number(n[e])||0),0);return t.length?i/t.length:0},count:t=>t.length,min:(t,e)=>t.length?Math.min(...t.map(i=>Number(i[e])||1/0)):0,max:(t,e)=>t.length?Math.max(...t.map(i=>Number(i[e])||-1/0)):0,first:(t,e)=>t[0]?.[e],last:(t,e)=>t[t.length-1]?.[e]},j=new Map,O={register(t,e){j.set(t,e)},unregister(t){j.delete(t)},get(t){if(t!==void 0)return typeof t=="function"?t:j.get(t)??_e[t]},run(t,e,i,o){const n=this.get(t);return n?n(e,i,o):void 0},has(t){return j.has(t)||t in _e},list(){return[...Object.keys(_e),...j.keys()]}},ht={sum:t=>t.reduce((e,i)=>e+i,0),avg:t=>t.length?t.reduce((e,i)=>e+i,0)/t.length:0,count:t=>t.length,min:t=>t.length?Math.min(...t):0,max:t=>t.length?Math.max(...t):0,first:t=>t[0]??0,last:t=>t[t.length-1]??0};function ut(t){return ht[t]??ht.sum}function eo(t,e){return ut(t)(e)}const to=O.register.bind(O),io=O.unregister.bind(O),oo=O.get.bind(O),no=O.run.bind(O),ro=O.list.bind(O);y.BaseGridPlugin=Xi,y.DEFAULT_ANIMATION_CONFIG=Se,y.DEFAULT_GRID_ICONS=M,y.DGEvents=Zi,y.DataGridElement=k,y.FitModeEnum=$,y.GridCSSVars=ji,y.GridClasses=L,y.GridDataAttrs=Y,y.GridElement=k,y.GridSelectors=Yi,y.PLUGIN_QUERIES=Bi,y.PluginEvents=Ji,y.PluginManager=X,y.RenderPhase=H,y.aggregatorRegistry=O,y.builtInSort=Ue,y.createGrid=Ki,y.defaultComparator=Fe,y.getAggregator=oo,y.getValueAggregator=ut,y.listAggregators=ro,y.queryGrid=Qi,y.registerAggregator=to,y.runAggregator=no,y.runValueAggregator=eo,y.unregisterAggregator=io,Object.defineProperty(y,Symbol.toStringTag,{value:"Module"})}));
|
|
90
|
+
`;class k extends HTMLElement{static tagName="tbw-grid";static version=typeof __GRID_VERSION__<"u"?__GRID_VERSION__:"dev";static#l=0;static adapters=[];static registerAdapter(e){this.adapters.push(e)}static getAdapters(){return this.adapters}static clearAdapters(){this.adapters=[]}static get observedAttributes(){return["rows","columns","grid-config","fit-mode","loading"]}get#n(){return this}#u=!1;#d;#h;#a=[];get#o(){return this.#t?.effective??{}}#f=!1;#w=!1;#v={rows:!1,columns:!1,gridConfig:!1,fitMode:!1};#s;#C=0;#r=null;#g=!1;#x=!1;#m=0;#z;#I=Ei();#b;#y;#p;#S;#J={scrollTop:0,scrollLeft:0,scrollHeight:0,scrollWidth:0,clientHeight:0,clientWidth:0};#e;#_;#N=!1;#D;#V;#O;#t;#i=di();#c;#q;#M=!1;#E=new Set;#H=new Map;#$;#R=new Map;_rows=[];#G=[];get _columns(){return this.#o.columns??[]}set _columns(e){this.#o.columns=e}get _visibleColumns(){return this._columns.filter(e=>!e.hidden)}_headerRowEl;_bodyEl;_rowPool=[];_resizeController;_virtualization={enabled:!0,rowHeight:28,bypassThreshold:24,start:0,end:0,container:null,viewportEl:null,totalHeightEl:null,positionCache:null,heightCache:{byKey:new Map,byRef:new WeakMap},averageHeight:28,measuredCount:0,variableHeights:!1,cachedViewportHeight:0,cachedFauxHeight:0,cachedScrollAreaHeight:0,scrollAreaEl:null};_focusRow=0;_focusCol=0;_restoreFocusAfterRender=!1;_sortState=null;_gridTemplate="";__rowRenderEpoch=0;__didInitialAutoSize=!1;get __lightDomColumnsCache(){return this.#t?.lightDomColumnsCache}set __lightDomColumnsCache(e){this.#t&&(this.#t.lightDomColumnsCache=e)}get __originalColumnNodes(){return this.#t?.originalColumnNodes}set __originalColumnNodes(e){this.#t&&(this.#t.originalColumnNodes=e)}__originalOrder=[];__frameworkAdapter;__rowsBodyEl=null;get rows(){return this._rows}set rows(e){const i=this.#a;this.#a=e,i!==e&&this.#U("rows")}get sourceRows(){return this.#a}get columns(){return[...this._columns]}set columns(e){const i=this.#t?.getColumns();this.#t?.setColumns(e),i!==e&&this.#U("columns")}get gridConfig(){return this.#o}set gridConfig(e){const i=this.#t?.getGridConfig();this.#t?.setGridConfig(e),i!==e&&(this.#t.clearLightDomCache(),this.#U("gridConfig"))}get fitMode(){return this.#o.fitMode??"stretch"}set fitMode(e){const i=this.#t?.getFitMode();this.#t?.setFitMode(e),i!==e&&this.#U("fitMode")}get loading(){return this.#M}set loading(e){const i=this.#M;this.#M=e,e?this.setAttribute("loading",""):this.removeAttribute("loading"),i!==e&&this.#he()}setRowLoading(e,i){const o=this.#E.has(e);i?this.#E.add(e):this.#E.delete(e),o!==i&&this.#j(e,i)}setCellLoading(e,i,o){let n=this.#H.get(e);const r=n?.has(i)??!1;o?(n||(n=new Set,this.#H.set(e,n)),n.add(i)):(n?.delete(i),n?.size===0&&this.#H.delete(e)),r!==o&&this.#ue(e,i,o)}isRowLoading(e){return this.#E.has(e)}isCellLoading(e,i){return this.#H.get(e)?.has(i)??!1}clearAllLoading(){this.loading=!1;for(const e of this.#E)this.#j(e,!1);this.#E.clear();for(const[e,i]of this.#H)for(const o of i)this.#ue(e,o,!1);this.#H.clear()}get effectiveConfig(){return this.#o}get disconnectSignal(){return this.#b||(this.#b=new AbortController),this.#b.signal}constructor(){super(),this.#be(),this.#d=new Promise(e=>this.#h=e),this.#s=new ei({mergeConfig:()=>{this.#t.parseLightDomColumns(this),this.#t.merge(),this.#te(),Di(this.#o,this.#e?.getPlugins()??[]),Oi(this.#e?.getPlugins()??[]),ki(this.#e?.getPlugins()??[]),this.#ze(),this.#G=[...this._columns]},processColumns:()=>this.#xe(),processRows:()=>this.#Le(),renderHeader:()=>ie(this),updateTemplate:()=>V(this),renderVirtualWindow:()=>this.refreshVirtualWindow(!0,!0),afterRender:()=>{this.#e?.afterRender(),this._virtualization.enabled&&this._virtualization.totalHeightEl&&queueMicrotask(()=>{if(!this._virtualization.totalHeightEl)return;const i=this.#T(this._rows.length);this._virtualization.totalHeightEl.style.height=`${i}px`}),this.#o.fitMode==="fixed"&&!this.__didInitialAutoSize&&(this.__didInitialAutoSize=!0,xe(this)),this._restoreFocusAfterRender&&(this._restoreFocusAfterRender=!1,F(this)),this._virtualization.enabled&&!this.#F&&this.#Ce(),this.#x&&(this.#x=!1,requestAnimationFrame(()=>{requestAnimationFrame(()=>{this.#ve()})})),this.#M&&this.#he()},isConnected:()=>this.isConnected&&this.#f}),this.#s.setInitialReadyResolver(()=>this.#h?.()),this.#c=wi(this.#i,{getShadow:()=>this.#n,getShellConfig:()=>this.#o?.shell,getAccordionIcons:()=>({expand:this.#o?.icons?.expand??M.expand,collapse:this.#o?.icons?.collapse??M.collapse}),emit:(e,i)=>this.#L(e,i),refreshShellHeader:()=>this.refreshShellHeader()}),this.#t=new Pt({getRows:()=>this.#a,getSortState:()=>this._sortState,setSortState:e=>{this._sortState=e},onConfigChange:()=>{this.#s.requestPhase(H.FULL,"configChange")},emit:(e,i)=>this.#L(e,i),clearRowPool:()=>{this._rowPool.length=0,this._bodyEl&&(this._bodyEl.innerHTML=""),this.__rowRenderEpoch++},setup:()=>this.#P(),renderHeader:()=>ie(this),updateTemplate:()=>V(this),refreshVirtualWindow:()=>this.#s.requestPhase(H.VIRTUALIZATION,"configManager"),getVirtualization:()=>this._virtualization,setRowHeight:e=>{this._virtualization.rowHeight=e},applyAnimationConfig:e=>this.#Pe(e),getShellLightDomTitle:()=>this.#i.lightDomTitle,getShellToolPanels:()=>this.#i.toolPanels,getShellHeaderContents:()=>this.#i.headerContents,getShellToolbarContents:()=>this.#i.toolbarContents,getShellLightDomHeaderContent:()=>this.#i.lightDomHeaderContent,getShellHasToolButtonsContainer:()=>this.#i.hasToolButtonsContainer})}async#be(){await _i(Gi)}getPlugin(e){return this.#e?.getPlugin(e)}getPluginByName(e){return this.#e?.getPluginByName(e)}requestRender(){this.#s.requestPhase(H.ROWS,"plugin:requestRender")}requestColumnsRender(){this.#s.requestPhase(H.COLUMNS,"plugin:requestColumnsRender")}requestRenderWithFocus(){this._restoreFocusAfterRender=!0,this.#s.requestPhase(H.ROWS,"plugin:requestRenderWithFocus")}updateTemplate(){V(this)}requestAfterRender(){this.#s.requestPhase(H.STYLE,"plugin:requestAfterRender")}#ee(){this.#e=new X(this);const e=this.#o?.plugins,i=Array.isArray(e)?e:[];this.#e.attachAll(i)}#W(){const e=this.#e?.getPluginStyles()??[];Ci(e)}#te(){const e=this.#o?.plugins,i=Array.isArray(e)?e:[];if(this.#_===i)return;if(this.#_&&this.#_.length===i.length&&this.#_.every((n,r)=>n===i[r])){this.#_=i;return}this.#e&&this.#e.detachAll();for(const n of this.#i.toolPanels.keys()){const r=this.#i.lightDomToolPanelIds.has(n),s=this.#i.apiToolPanelIds.has(n);if(!r&&!s){const l=this.#i.panelCleanups.get(n);l&&(l(),this.#i.panelCleanups.delete(n)),this.#i.toolPanels.delete(n)}}for(const n of this.#i.headerContents.keys()){const r=this.#i.headerContentCleanups.get(n);r&&(r(),this.#i.headerContentCleanups.delete(n)),this.#i.headerContents.delete(n)}this.#ee(),this.#W(),this.#_=i,this.#re(),this.#ie();const o=this.#g;if(this.#g=this.#e?.getAll().some(n=>n.onScroll)??!1,!o&&this.#g){const r=this.#n.querySelector(".tbw-grid-content")??this.#n.querySelector(".tbw-grid-root");this.#B(r)}}#me(){this.#e?.detachAll()}#ie(){if(!this.#e)return;const e=this.#e.getToolPanels();for(const{panel:o}of e)this.#i.toolPanels.has(o.id)||this.#i.toolPanels.set(o.id,o);const i=this.#e.getHeaderContents();for(const{content:o}of i)this.#i.headerContents.has(o.id)||this.#i.headerContents.set(o.id,o)}#oe(){const e=k.getAdapters();if(e.length===0&&!this.__frameworkAdapter)return;const i=this.__frameworkAdapter;return o=>{if(i?.createToolPanelRenderer){const n=i.createToolPanelRenderer(o);if(n)return n}for(const n of e)if(n.createToolPanelRenderer){const r=n.createToolPanelRenderer(o);if(r)return r}}}connectedCallback(){this.hasAttribute("tabindex")||(this.tabIndex=0),this.hasAttribute("version")||this.setAttribute("version",k.version),this.id||(this.id=`tbw-grid-${++k.#l}`),this._rows=Array.isArray(this.#a)?[...this.#a]:[],this.#b&&(this.#b.abort(),this.#N=!1),this.#b=new AbortController,this.#S&&(Ye(this.#S),this.#S=void 0),this.#k(),this.#t.parseLightDomColumns(this),this.#t.merge(),this.#ee();const e=this.#o?.plugins;this.#_=Array.isArray(e)?e:[],this.#ie(),this.#u||(this.#Z(),this.#W(),this.#u=!0),this.#ne(),this.#S=Bt(()=>{this.#ke()},{timeout:100})}disconnectedCallback(){this.#S&&(Ye(this.#S),this.#S=void 0),this.#m&&(clearTimeout(this.#m),this.#m=0),this.#me(),pi(this.#i),this.#c.setInitialized(!1),this.#q?.(),this.#q=void 0,lt(this.#I),this.#b&&(this.#b.abort(),this.#b=void 0),this.#D?.abort(),this.#D=void 0,this.#N=!1,this._resizeController&&this._resizeController.dispose(),this.#y&&(this.#y.disconnect(),this.#y=void 0),this.#p&&(this.#p.disconnect(),this.#p=void 0,this.#F=!1),K(this),this.#A.clear(),this.#_=void 0;for(const e of this._rowPool)e.remove();this._rowPool.length=0,this.__rowsBodyEl=null,this.#f=!1}attributeChangedCallback(e,i,o){if(e==="loading"){const n=o!==null&&o!=="false";this.loading!==n&&(this.loading=n);return}if(!(i===o||!o||o==="null"||o==="undefined"))if(e==="rows"||e==="columns"||e==="grid-config")try{const n=JSON.parse(o);e==="rows"?this.rows=n:e==="columns"?this.columns=n:e==="grid-config"&&(this.gridConfig=n)}catch{console.warn(`[tbw-grid] Invalid JSON for '${e}' attribute:`,o)}else e==="fit-mode"&&(this.fitMode=o)}#ne(){const i=this.#n.querySelector(".tbw-grid-content")??this.#n.querySelector(".tbw-grid-root");if(this._headerRowEl=i?.querySelector(".header-row"),this._virtualization.totalHeightEl=i?.querySelector(".faux-vscroll-spacer"),this._virtualization.viewportEl=i?.querySelector(".rows-viewport"),this._bodyEl=i?.querySelector(".rows"),this.__rowsBodyEl=i?.querySelector(".rows-body"),this.#c.isInitialized){pe(this.#n,this.#i),ge(this.#n,this.#o?.shell,this.#i);const n=this.#o?.shell?.toolPanel?.defaultOpen;n&&this.#i.toolPanels.has(n)&&(this.openToolPanel(),this.#i.expandedSections.add(n))}if(this.setAttribute("data-upgraded",""),this.#f=!0,this._resizeController=je(this),this.#P(),this.#B(i),this.#N)return;this.#N=!0;const o=this.disconnectSignal;Ut(this,this,this.#n,o),this.#re(),queueMicrotask(()=>this.#ye()),this.#s.requestPhase(H.FULL,"afterConnect")}#re(){const e=this.#o.rowHeight,i=this.#e.hasRowHeightPlugin();typeof e=="function"||i?this._virtualization.variableHeights||(this._virtualization.variableHeights=!0,this._virtualization.rowHeight=typeof e=="number"&&e>0?e:this._virtualization.rowHeight||28,this.#Q(),typeof e!="function"&&(this.#x=!0)):!i&&typeof e!="function"&&this._virtualization.variableHeights?(this._virtualization.variableHeights=!1,this._virtualization.positionCache=null):typeof e=="number"&&e>0?(this._virtualization.rowHeight=e,this._virtualization.variableHeights=!1):requestAnimationFrame(()=>this.#se())}#se(){if(this.#e.hasExtraHeight())return;const e=this._bodyEl?.querySelector(".data-grid-row");if(!e)return;const i=e.querySelectorAll(".cell");let o=0;i.forEach(s=>{const l=s.offsetHeight;l>o&&(o=l)});const n=e.getBoundingClientRect(),r=Math.max(n.height,o);r>0&&Math.abs(r-this._virtualization.rowHeight)>1&&(this._virtualization.rowHeight=r,this.#s.requestPhase(H.VIRTUALIZATION,"measureRowHeight"))}#ve(){const e=this._bodyEl?.querySelector(".data-grid-row");if(!e)return;const i=e.querySelectorAll(".cell");let o=0;i.forEach(s=>{const l=s.offsetHeight;l>o&&(o=l)});const n=e.getBoundingClientRect(),r=Math.max(n.height,o);if(r>0&&(Math.abs(r-this._virtualization.rowHeight)>1&&(this._virtualization.rowHeight=r),this.#Q(),this._virtualization.totalHeightEl)){const l=this.#T(this._rows.length);this._virtualization.totalHeightEl.style.height=`${l}px`}}#B(e){this.#D?.abort(),this.#D=new AbortController;const i=this.#D.signal,o=e?.querySelector(".faux-vscroll"),n=e?.querySelector(".rows");if(this._virtualization.container=o??this,this.#g=this.#e?.getAll().some(r=>r.onScroll)??!1,o&&n){o.addEventListener("scroll",()=>{if(!this._virtualization.enabled&&!this.#g)return;const a=o.scrollTop,c=this._virtualization.rowHeight;if(this._rows.length<=this._virtualization.bypassThreshold)n.style.transform=`translateY(${-a}px)`;else{const d=this._virtualization.positionCache;let f,u;if(this._virtualization.variableHeights&&d&&d.length>0){f=dt(d,a),f===-1&&(f=0);const p=f-f%2;u=d[p]?.offset??p*c}else f=Math.floor(a/c),u=(f-f%2)*c;const g=-(a-u);n.style.transform=`translateY(${g}px)`}this.#r=a,this.#C||(this.#C=requestAnimationFrame(()=>{this.#C=0,this.#r!==null&&(this.#De(this.#r),this.#r=null)}))},{passive:!0,signal:i});const r=this.#n.querySelector(".tbw-scroll-area");this.#V=r,this._virtualization.scrollAreaEl=r,r&&this.#g&&r.addEventListener("scroll",()=>{const a=this.#J;a.scrollTop=o.scrollTop,a.scrollLeft=r.scrollLeft,a.scrollHeight=o.scrollHeight,a.scrollWidth=r.scrollWidth,a.clientHeight=o.clientHeight,a.clientWidth=r.clientWidth,this.#e?.onScroll(a)},{passive:!0,signal:i});const s=this.#n.querySelector(".tbw-grid-content"),l=this.#V;s&&(s.addEventListener("wheel",a=>{const c=a.shiftKey||Math.abs(a.deltaX)>Math.abs(a.deltaY);if(c&&l){const d=a.shiftKey?a.deltaY:a.deltaX,{scrollLeft:f,scrollWidth:u,clientWidth:g}=l;(d>0&&f<u-g||d<0&&f>0)&&(a.preventDefault(),l.scrollLeft+=d)}else if(!c){const{scrollTop:d,scrollHeight:f,clientHeight:u}=o;(a.deltaY>0&&d<f-u||a.deltaY<0&&d>0)&&(a.preventDefault(),o.scrollTop+=a.deltaY)}},{passive:!1,signal:i}),Hi(s,this.#I,{fauxScrollbar:o,scrollArea:l},i))}this._bodyEl&&Ft(this,this._bodyEl,i),this.#y?.disconnect(),this._virtualization.viewportEl&&(this.#y=new ResizeObserver(()=>{this.#Ie(),this.#s.requestPhase(H.VIRTUALIZATION,"resize-observer")}),this.#y.observe(this._virtualization.viewportEl)),this.#n.addEventListener("focusin",()=>{this.dataset.hasFocus=""},{signal:i}),this.#n.addEventListener("focusout",r=>{const s=r.relatedTarget;(!s||!this.#n.contains(s))&&delete this.dataset.hasFocus},{signal:i})}#F=!1;#Ce(){if(this.#F)return;const e=this._bodyEl?.querySelector(".data-grid-row");e&&(this.#F=!0,this.#p?.disconnect(),this.#p=new ResizeObserver(()=>{this.#se()}),this.#p.observe(e))}addEventListener(e,i,o){super.addEventListener(e,i,o)}removeEventListener(e,i,o){super.removeEventListener(e,i,o)}#L(e,i){this.dispatchEvent(new CustomEvent(e,{detail:i,bubbles:!0,composed:!0}))}#ye(){this._bodyEl?.querySelectorAll(".data-grid-row")?.forEach((i,o)=>{const n=o===this._focusRow;i.setAttribute("aria-selected",String(n)),i.querySelectorAll(".cell").forEach((r,s)=>{r.setAttribute("aria-selected",String(n&&s===this._focusCol))})})}#U(e){this.#v[e]=!0,!this.#w&&(this.#w=!0,queueMicrotask(()=>this.#_e()))}#_e(){if(!this.#w||!this.#f){this.#w=!1;return}const e=this.#v;if(this.#w=!1,this.#v={rows:!1,columns:!1,gridConfig:!1,fitMode:!1},e.gridConfig){this.#Ae(),e.rows&&this.#le();return}e.columns&&this.#Se(),e.rows&&this.#le(),e.fitMode&&this.#Re()}#le(){this._rows=Array.isArray(this.#a)?[...this.#a]:[],this.#X(),this.#s.requestPhase(H.ROWS,"applyRowsUpdate")}#X(){this.#R.clear();const e=this.#o.getRowId;this._rows.forEach((i,o)=>{const n=this.#ae(i,e);n!==void 0&&this.#R.set(n,{row:i,index:o})})}#ae(e,i){if(i)return i(e);const o=e;if("id"in o&&o.id!=null)return String(o.id);if("_id"in o&&o._id!=null)return String(o._id)}#Ee(e,i){const o=this.#ae(e,i);if(o===void 0)throw new Error('[tbw-grid] Cannot determine row ID. Configure getRowId in gridConfig or ensure rows have an "id" property.');return o}#Se(){K(this),this.#t.merge(),this.#P()}#Re(){this.#t.merge(),this.#o.fitMode==="fixed"?(this.__didInitialAutoSize=!1,xe(this)):(this._columns.forEach(i=>{!i.__userResized&&i.__autoSized&&delete i.width}),V(this))}#Ae(){tt(this,this.#i),it(this,this.#i);const e=!!this.#n.querySelector(".has-shell"),i=!!this.#n.querySelector(".tbw-tool-panel"),o=this.#n.querySelectorAll(".tbw-accordion-section").length;this.#t.parseLightDomColumns(this),this.#t.merge(),this.#te(),ot(this,this.#i,this.#oe()),this.#t.markSourcesChanged(),this.#t.merge();const n=et(this.#o?.shell),r=(this.#o?.shell?.toolPanels?.length??0)>0,s=this.#o?.shell?.toolPanels?.length??0;if(e!==n||!i&&r||i&&s!==o){we(this.#i),this.#Z(),this.#W(),this.#ne(),this.#X();return}e&&this.#Te(),this.#X(),this.#s.requestPhase(H.COLUMNS,"applyGridConfigUpdate")}#Te(){const e=this.#n.querySelector(".tbw-shell-header");if(!e)return;const i=this.#o.shell?.header?.title??this.#i.lightDomTitle;let o=e.querySelector(".tbw-shell-title");i?(o||(o=document.createElement("h2"),o.className="tbw-shell-title",o.setAttribute("part","shell-title"),e.insertBefore(o,e.firstChild)),o.textContent=i):o&&o.remove()}#xe(){if(this.#e){const e=this.#G.length>0?this.#G:this._columns,i=e.filter(r=>!r.hidden),o=e.filter(r=>r.hidden),n=this.#e.processColumns([...i]);if(n!==i){const r=new Set(n.map(l=>l.field));!i.some(l=>r.has(l.field))&&n.length>0?this._columns=[...n,...o]:this._columns=this.#He(e,n,o)}else this._columns=[...e]}}#He(e,i,o){if(o.length===0)return i;const n=new Map;for(const a of i)n.set(a.field,a);const r=new Set(e.map(a=>a.field)),s=[];for(const a of i)r.has(a.field)||s.push(a);const l=[];for(const a of e){const c=n.get(a.field);c?l.push(c):a.hidden&&l.push(a)}return l.push(...s),l}#Le(){K(this);const e=Array.isArray(this.#a)?[...this.#a]:[],i=this.#e?.processRows(e)??e;this._rows=i,this._virtualization.variableHeights&&this.#Q()}#Pe(e){const i={...Se,...e.animation},o=i.mode??"reduced-motion";let n=1;o===!1||o==="off"?n=0:(o===!0||o==="on")&&(n=1),this.style.setProperty("--tbw-animation-duration",`${i.duration}ms`),this.style.setProperty("--tbw-animation-easing",i.easing??"ease-out"),this.style.setProperty("--tbw-animation-enabled",String(n)),this.dataset.animationMode=typeof o=="boolean"?o?"on":"off":o}#Y(e,i,o=this.__rowRenderEpoch){if(this.#z||(this.#z=(n,r,s)=>this.#e?.renderRow(n,r,s)??!1),kt(this,e,i,o,this.#z),this.#E.size>0)for(const n of this.#E)this.#j(n,!0)}#ce=U();#de(e,i){ft(this.#ce,this.__rowsBodyEl,this._bodyEl,e,i)}#ze(){pt(this.#ce,this.__rowsBodyEl,this.#o,this.#i)}#he(){const e=this.querySelector(".tbw-grid-root");e&&(this.#M?(this.#$||(this.#$=jt(this.#o?.loadingRenderer)),Kt(e,this.#$)):Qt(this.#$))}#j(e,i){const o=this.#R.get(e);if(!o)return;const n=this.findRenderedRowElement?.(o.index);n&&Zt(n,i)}#ue(e,i,o){const n=this.#R.get(e);if(!n)return;const r=this.findRenderedRowElement?.(n.index);if(!r)return;const s=this._visibleColumns.findIndex(a=>a.field===i);if(s<0)return;const l=r.children[s];l&&Jt(l,o)}#P(){if(this.isConnected&&!(!this._headerRowEl||!this._bodyEl)){if(this.#t.parseLightDomColumns(this),this.#O){const e=this.#O;this.#O=void 0,this.#t.merge();const i=this.#e?.getAll()??[];this.#t.applyState(e,i)}this._bodyEl&&(this._bodyEl.style.display="",this._bodyEl.style.gridTemplateColumns=""),this.#s.requestPhase(H.FULL,"setup")}}#De(e){let i=0,o=0,n=0,r=0,s=0;if(this.#g){const a=this._virtualization.container,c=this.#V;i=c?.scrollLeft??0,o=a?.scrollHeight??0,n=c?.scrollWidth??0,r=a?.clientHeight??0,s=c?.clientWidth??0}if(this.refreshVirtualWindow(!1)&&this.#e?.onScrollRender(),this._virtualization.variableHeights&&(this.#m&&clearTimeout(this.#m),this.#m=window.setTimeout(()=>{this.#m=0,this.#pe(this._virtualization.start,this._virtualization.end)},100)),this.#g){const a=this.#J;a.scrollTop=e,a.scrollLeft=i,a.scrollHeight=o,a.scrollWidth=n,a.clientHeight=r,a.clientWidth=s,this.#e?.onScroll(a)}}findHeaderRow(){return this.#n.querySelector(".header-row")}findRenderedRowElement(e){return Array.from(this._bodyEl.querySelectorAll(".data-grid-row")).find(i=>{const o=i.querySelector(".cell[data-row]");return o&&Number(o.getAttribute("data-row"))===e})||null}_dispatchCellClick(e,i,o,n){const r=this._rows[i],s=this._columns[o];if(!r||!s)return!1;const l=s.field,a=r[l],c=new CustomEvent("cell-activate",{cancelable:!0,bubbles:!0,composed:!0,detail:{rowIndex:i,colIndex:o,field:l,value:a,row:r,cellEl:n,trigger:"pointer",originalEvent:e}});if(this.dispatchEvent(c),c.defaultPrevented)return!0;const d={row:r,rowIndex:i,colIndex:o,field:l,value:a,cellEl:n,originalEvent:e},f=this.#e?.onCellClick(d)??!1;return this.#L("cell-click",d),f}_dispatchRowClick(e,i,o,n){if(!o)return!1;const r={rowIndex:i,row:o,rowEl:n,originalEvent:e},s=this.#e?.onRowClick(r)??!1;return this.#L("row-click",r),s}_dispatchHeaderClick(e,i,o){const n=this._columns[i];if(!n)return!1;const r={colIndex:i,field:n.field,column:n,headerEl:o,originalEvent:e};return this.#e?.onHeaderClick(r)??!1}_dispatchKeyDown(e){return this.#e?.onKeyDown(e)??!1}_getHorizontalScrollOffsets(e,i){return this.#e?.getHorizontalScrollOffsets(e,i)??{left:0,right:0}}queryPlugins(e){return this.#e?.queryPlugins(e)??[]}query(e,i){return this.#e?.queryPlugins({type:e,context:i})??[]}_dispatchCellMouseDown(e){return this.#e?.onCellMouseDown(e)??!1}_dispatchCellMouseMove(e){this.#e?.onCellMouseMove(e)}_dispatchCellMouseUp(e){this.#e?.onCellMouseUp(e)}_afterCellRender(e){this.#e?.afterCellRender(e)}_hasAfterCellRenderHook(){return this.#e?.hasAfterCellRenderHook()??!1}_afterRowRender(e){this.#e?.afterRowRender(e)}_hasAfterRowRenderHook(){return this.#e?.hasAfterRowRenderHook()??!1}async ready(){return this.#d}async forceLayout(){return this.#s.requestPhase(H.FULL,"forceLayout"),this.#s.whenReady()}async getConfig(){return Object.freeze({...this.#o||{}})}getRowId(e){return this.#Ee(e,this.#o.getRowId)}getRow(e){return this.#R.get(e)?.row}updateRow(e,i,o="api"){const n=this.#R.get(e);if(!n)throw new Error(`[tbw-grid] Row with ID "${e}" not found. Ensure the row exists and getRowId is correctly configured.`);const{row:r,index:s}=n,l=[];for(const[a,c]of Object.entries(i)){const d=r[a];d!==c&&(l.push({field:a,oldValue:d,newValue:c}),r[a]=c)}for(const{field:a,oldValue:c,newValue:d}of l)this.#L("cell-change",{row:r,rowId:e,rowIndex:s,field:a,oldValue:c,newValue:d,changes:i,source:o});l.length>0&&this.#s.requestPhase(H.ROWS,"updateRow")}updateRows(e,i="api"){let o=!1;for(const{id:n,changes:r}of e){const s=this.#R.get(n);if(!s)throw new Error(`[tbw-grid] Row with ID "${n}" not found. Ensure the row exists and getRowId is correctly configured.`);const{row:l,index:a}=s;for(const[c,d]of Object.entries(r)){const f=l[c];f!==d&&(o=!0,l[c]=d,this.#L("cell-change",{row:l,rowId:n,rowIndex:a,field:c,oldValue:f,newValue:d,changes:r,source:i}))}}o&&this.#s.requestPhase(H.ROWS,"updateRows")}animateRow(e,i){fe(this,e,i)}animateRows(e,i){si(this,e,i)}animateRowById(e,i){return li(this,e,i)}setColumnVisible(e,i){const o=this.#t.setColumnVisible(e,i);return o&&this.requestStateChange(),o}toggleColumnVisibility(e){const i=this.#t.toggleColumnVisibility(e);return i&&this.requestStateChange(),i}isColumnVisible(e){return this.#t.isColumnVisible(e)}showAllColumns(){this.#t.showAllColumns(),this.requestStateChange()}getAllColumns(){return this.#t.getAllColumns()}setColumnOrder(e){this.#t.setColumnOrder(e),this.requestStateChange()}getColumnOrder(){return this.#t.getColumnOrder()}getColumnState(){const e=this.#e?.getAll()??[];return this.#t.collectState(e)}set columnState(e){e&&(this.#O=e,this.#t.initialColumnState=e,this.#u&&this.#Oe(e))}get columnState(){return this.getColumnState()}#Oe(e){const i=this.#e?.getAll()??[];this.#t.applyState(e,i),this.#P()}requestStateChange(){const e=this.#e?.getAll()??[];this.#t.requestStateChange(e)}resetColumnState(){this.#O=void 0,this.__originalOrder=[];const e=this.#e?.getAll()??[];this.#t.resetState(e),this.#t.merge(),this.#P()}get isToolPanelOpen(){return this.#c.isPanelOpen}get defaultRowHeight(){return this._virtualization.rowHeight}get expandedToolPanelSections(){return this.#c.expandedSections}openToolPanel(){this.#c.openToolPanel()}closeToolPanel(){this.#c.closeToolPanel()}toggleToolPanel(){this.#c.toggleToolPanel()}toggleToolPanelSection(e){this.#c.toggleToolPanelSection(e)}getToolPanels(){return this.#c.getToolPanels()}registerToolPanel(e){this.#i.apiToolPanelIds.add(e.id),this.#c.registerToolPanel(e)}unregisterToolPanel(e){this.#i.apiToolPanelIds.delete(e),this.#c.unregisterToolPanel(e)}getHeaderContents(){return this.#c.getHeaderContents()}registerHeaderContent(e){this.#c.registerHeaderContent(e)}unregisterHeaderContent(e){this.#c.unregisterHeaderContent(e)}getToolbarContents(){return this.#c.getToolbarContents()}registerToolbarContent(e){this.#c.registerToolbarContent(e)}unregisterToolbarContent(e){this.#c.unregisterToolbarContent(e)}#K=!1;refreshShellHeader(){this.#K||(this.#K=!0,queueMicrotask(()=>{this.#K=!1,this.isConnected&&(this.#k(),this.#t.markSourcesChanged(),this.#t.merge(),we(this.#i),this.#Z(),this.#W(),this.#Me())}))}#Me(){const i=this.#n.querySelector(".tbw-grid-content")??this.#n.querySelector(".tbw-grid-root");if(this._headerRowEl=i?.querySelector(".header-row"),this._virtualization.totalHeightEl=i?.querySelector(".faux-vscroll-spacer"),this._virtualization.viewportEl=i?.querySelector(".rows-viewport"),this._bodyEl=i?.querySelector(".rows"),this.__rowsBodyEl=i?.querySelector(".rows-body"),this.#c.isInitialized){pe(this.#n,this.#i),ge(this.#n,this.#o?.shell,this.#i);const o=this.#o?.shell?.toolPanel?.defaultOpen;o&&this.#i.toolPanels.has(o)&&(this.openToolPanel(),this.#i.expandedSections.add(o))}this._resizeController=je(this),this.#B(i),this.#s.requestPhase(H.COLUMNS,"shellRefresh")}#A=new Map;registerStyles(e,i){let o=this.#A.get(e);o||(o=new CSSStyleSheet,this.#A.set(e,o)),o.replaceSync(i),this.#fe()}unregisterStyles(e){this.#A.delete(e)&&this.#fe()}getRegisteredStyles(){return Array.from(this.#A.keys())}#fe(){const e=Array.from(this.#A.values()),i=document.adoptedStyleSheets.filter(o=>!Array.from(this.#A.values()).includes(o));document.adoptedStyleSheets=[...i,...e]}#k(){tt(this,this.#i),it(this,this.#i),ot(this,this.#i,this.#oe())}#ge(){const e=this.#n.querySelector(".tbw-shell-header");if(!e)return;we(this.#i);const i=hi(this.#o.shell,this.#i,this.#o.icons?.toolPanel),o=document.createElement("div");o.innerHTML=i;const n=o.firstElementChild;n&&(e.replaceWith(n),this.#we(),ge(this.#n,this.#o?.shell,this.#i))}#ke(){const e=()=>{const o=this.#i.lightDomTitle,n=this.#i.hasToolButtonsContainer;this.#k();const r=this.#i.lightDomTitle,s=this.#i.hasToolButtonsContainer;(r&&!o||s&&!n)&&(this.#t.markSourcesChanged(),this.#t.merge(),this.#ge())},i=()=>{this.__lightDomColumnsCache=void 0,this.#P()};this.#t.registerLightDomHandler("tbw-grid-header",e),this.#t.registerLightDomHandler("tbw-grid-tool-buttons",e),this.#t.registerLightDomHandler("tbw-grid-tool-panel",e),this.#t.registerLightDomHandler("tbw-grid-column",i),this.#t.registerLightDomHandler("tbw-grid-detail",i),this.#t.observeLightDOM(this)}refreshColumns(){this.__lightDomColumnsCache=void 0,K(this),this.#t.parseLightDomColumns(this);const e=this.#i.lightDomTitle,i=this.#i.hasToolButtonsContainer;this.#k();const o=this.#i.lightDomTitle,n=this.#i.hasToolButtonsContainer;(o&&!e||n&&!i)&&(this.#t.markSourcesChanged(),this.#t.merge(),this.#ge()),this.#s.requestPhase(H.COLUMNS,"refreshColumns")}#Ie(){const e=this._virtualization.container,i=this._virtualization.viewportEl??e;i&&(this._virtualization.cachedViewportHeight=i.clientHeight),e&&(this._virtualization.cachedFauxHeight=e.clientHeight);const o=this._virtualization.scrollAreaEl;o&&(this._virtualization.cachedScrollAreaHeight=o.clientHeight)}#T(e,i=!1){const o=this._virtualization;let n,r,s;if(i){const u=o.container??this,g=o.viewportEl??u,p=o.scrollAreaEl;n=u.clientHeight,r=g.clientHeight,s=p?p.clientHeight:n,o.cachedFauxHeight=n,o.cachedViewportHeight=r,o.cachedScrollAreaHeight=s}else n=o.cachedFauxHeight,r=o.cachedViewportHeight,s=o.cachedScrollAreaHeight||n;const l=s-r,a=Math.max(0,n-s);let c,d=0;return o.variableHeights&&o.positionCache?c=$i(o.positionCache):(c=e*o.rowHeight,d=this.#e?.getExtraHeight()??0),c+l+d+a}#Q(){if(!this._virtualization.variableHeights)return;const e=this._rows,i=this._virtualization.rowHeight||28,o=this.#o.rowHeight,n=this.#o.getRowId,r=n?l=>n(l):void 0;this._virtualization.positionCache=qi(e,this._virtualization.heightCache,i,{rowId:r},(l,a)=>{const c=this.#e?.getRowHeight?.(l,a);if(c!==void 0)return c;if(o){const d=o(l,a);if(d!==void 0&&d>0)return d}});const s=Vi(this._virtualization.positionCache,e,i,(l,a)=>this.#e?.getRowHeight?.(l,a));this._virtualization.measuredCount=s.measuredCount,s.measuredCount>0&&(this._virtualization.averageHeight=s.averageHeight)}invalidateRowHeight(e,i){if(!this._virtualization.variableHeights||!this._virtualization.positionCache||e<0||e>=this._rows.length)return;const o=this._virtualization.positionCache,n=this._rows[e];let r=i;r===void 0&&(r=this.#e?.getRowHeight?.(n,e)),r===void 0&&(r=this._virtualization.rowHeight);const s=o[e];if(!(!s||Math.abs(s.height-r)<1)&&(ye(o,e,r),this._virtualization.totalHeightEl)){const l=this.#T(this._rows.length);this._virtualization.totalHeightEl.style.height=`${l}px`}}#pe(e,i){if(!this._virtualization.variableHeights||!this._virtualization.positionCache||!this._bodyEl)return;const o=this._bodyEl.querySelectorAll(".data-grid-row"),n=this.#o.getRowId,r=Ui({positionCache:this._virtualization.positionCache,heightCache:this._virtualization.heightCache,rows:this._rows,defaultHeight:this._virtualization.rowHeight,start:e,end:i,getPluginHeight:(s,l)=>this.#e?.getRowHeight?.(s,l),getRowId:n?s=>n(s):void 0},o);if(r.hasChanges&&(this._virtualization.measuredCount=r.measuredCount,this._virtualization.averageHeight=r.averageHeight,this._virtualization.totalHeightEl)){const s=this.#T(this._rows.length);this._virtualization.totalHeightEl.style.height=`${s}px`}}refreshVirtualWindow(e=!1,i=!1){if(!this._bodyEl)return!1;const o=this._rows.length;if(!this._virtualization.enabled)return this.#Y(0,o),i||this.#e?.afterRender(),!0;if(this._rows.length<=this._virtualization.bypassThreshold)return this._virtualization.start=0,this._virtualization.end=o,e&&(this._bodyEl.style.transform="translateY(0px)"),this.#Y(0,o,e?++this.__rowRenderEpoch:this.__rowRenderEpoch),e&&this._virtualization.totalHeightEl&&(this._virtualization.totalHeightEl.style.height=`${this.#T(o,!0)}px`),this.#de(o,this._visibleColumns.length),i||this.#e?.afterRender(),!0;const n=this._virtualization.container??this,r=this._virtualization.viewportEl??n,s=e?this._virtualization.cachedViewportHeight=r.clientHeight:this._virtualization.cachedViewportHeight||(this._virtualization.cachedViewportHeight=r.clientHeight),l=this._virtualization.rowHeight,a=n.scrollTop;let c;const d=this._virtualization.positionCache;if(this._virtualization.variableHeights&&d&&d.length>0)c=dt(d,a),c===-1&&(c=0);else{c=Math.floor(a/l);let m=0;const _=10;for(;m<_;){const R=this.#e?.getExtraHeightBefore?.(c)??0,T=Math.floor((a-R)/l);if(T>=c||T<0)break;c=T,m++}}c=c-c%2,c<0&&(c=0);const f=this.#e?.adjustVirtualStart(c,a,l);f!==void 0&&f<c&&(c=f,c=c-c%2,c<0&&(c=0));let u;if(this._virtualization.variableHeights&&d&&d.length>0){const m=s+l*3;let _=0;for(u=c;u<o&&_<m;)_+=d[u].height,u++;const R=Math.ceil(s/l)+3;u-c<R&&(u=Math.min(c+R,o))}else{const m=Math.ceil(s/l)+3;u=c+m}u>o&&(u=o);const g=this._virtualization.start,p=this._virtualization.end;if(!e&&c===g&&u===p)return!1;this._virtualization.start=c,this._virtualization.end=u;const h=e?this._virtualization.cachedFauxHeight=n.clientHeight:this._virtualization.cachedFauxHeight||(this._virtualization.cachedFauxHeight=n.clientHeight);if(e){const m=this._virtualization.scrollAreaEl;m&&(this._virtualization.cachedScrollAreaHeight=m.clientHeight)}if(h===0&&s>0)return this.#s.requestPhase(H.VIRTUALIZATION,"stale-refs-retry"),!1;if(e&&this._virtualization.totalHeightEl){const m=this.#T(o);this._virtualization.totalHeightEl.style.height=`${m}px`}let w;if(this._virtualization.variableHeights&&d&&d[c])w=d[c].offset;else{const m=this.#e?.getExtraHeightBefore?.(c)??0;w=c*l+m}const C=-(a-w);return this._bodyEl.style.transform=`translateY(${C}px)`,this.#Y(c,u,e?++this.__rowRenderEpoch:this.__rowRenderEpoch),e&&this._virtualization.variableHeights&&this.#pe(c,u),this.#de(o,this._visibleColumns.length),e&&!i&&(this.#e?.afterRender(),queueMicrotask(()=>{if(!this._virtualization.totalHeightEl)return;const m=this.#T(o);this._virtualization.cachedFauxHeight===0&&this._virtualization.cachedViewportHeight>0||(this._virtualization.totalHeightEl.style.height=`${m}px`)})),!0}#Z(){this.#k(),this.#t.markSourcesChanged(),this.#t.merge();const e=this.#o?.shell;mi(this.#n,e,{isPanelOpen:this.#i.isPanelOpen,expandedSections:this.#i.expandedSections},this.#o?.icons)&&(this.#we(),this.#c.setInitialized(!0))}#we(){ui(this.#n,this.#o?.shell,this.#i,{onPanelToggle:()=>this.toggleToolPanel(),onSectionToggle:e=>this.toggleToolPanelSection(e)}),this.#q?.(),this.#q=fi(this.#n,this.#o?.shell,e=>{this.style.setProperty("--tbw-tool-panel-width",`${e}px`)})}}customElements.get(k.tagName)||customElements.define(k.tagName,k),globalThis.DataGridElement=k;const Bi={CAN_MOVE_COLUMN:"canMoveColumn",GET_CONTEXT_MENU_ITEMS:"getContextMenuItems"};class Xi{static dependencies;static manifest;version=typeof __GRID_VERSION__<"u"?__GRID_VERSION__:"dev";styles;cellRenderers;headerRenderers;cellEditors;grid;config;userConfig;#l;get defaultConfig(){return{}}constructor(e={}){this.userConfig=e}attach(e){this.#l?.abort(),this.#l=new AbortController,this.grid=e,this.config={...this.defaultConfig,...this.userConfig}}detach(){this.#l?.abort(),this.#l=void 0}getPlugin(e){return this.grid?.getPlugin(e)}emit(e,i){this.grid?.dispatchEvent?.(new CustomEvent(e,{detail:i,bubbles:!0}))}emitCancelable(e,i){const o=new CustomEvent(e,{detail:i,bubbles:!0,cancelable:!0});return this.grid?.dispatchEvent?.(o),o.defaultPrevented}on(e,i){this.grid?._pluginManager?.subscribe(this,e,i)}off(e){this.grid?._pluginManager?.unsubscribe(this,e)}emitPluginEvent(e,i){this.grid?._pluginManager?.emitPluginEvent(e,i)}requestRender(){this.grid?.requestRender?.()}requestColumnsRender(){this.grid?.requestColumnsRender?.()}requestRenderWithFocus(){this.grid?.requestRenderWithFocus?.()}requestAfterRender(){this.grid?.requestAfterRender?.()}get rows(){return this.grid?.rows??[]}get sourceRows(){return this.grid?.sourceRows??[]}get columns(){return this.grid?.columns??[]}get visibleColumns(){return this.grid?._visibleColumns??[]}get gridElement(){return this.grid}get disconnectSignal(){return this.#l?.signal??this.grid?.disconnectSignal}get gridIcons(){const e=this.grid?.gridConfig?.icons??{};return{...M,...e}}get isAnimationEnabled(){const e=this.grid?.effectiveConfig?.animation?.mode??"reduced-motion";if(e===!1||e==="off")return!1;if(e===!0||e==="on")return!0;const i=this.gridElement;return i?getComputedStyle(i).getPropertyValue("--tbw-animation-enabled").trim()!=="0":!0}get animationDuration(){const e=this.gridElement;if(e){const i=getComputedStyle(e).getPropertyValue("--tbw-animation-duration").trim(),o=parseInt(i,10);if(!isNaN(o))return o}return 200}resolveIcon(e,i){return i!==void 0?i:this.gridIcons[e]}setIcon(e,i){typeof i=="string"?e.innerHTML=i:i instanceof HTMLElement&&(e.innerHTML="",e.appendChild(i.cloneNode(!0)))}warn(e){console.warn(`[tbw-grid:${this.name}] ${e}`)}}const L={ROOT:"tbw-grid-root",HEADER:"header",HEADER_ROW:"header-row",HEADER_CELL:"header-cell",ROWS_VIEWPORT:"rows-viewport",ROWS_SPACER:"rows-spacer",ROWS_CONTAINER:"rows",DATA_ROW:"data-row",GROUP_ROW:"group-row",DATA_CELL:"data-cell",SELECTED:"selected",FOCUSED:"focused",EDITING:"editing",EXPANDED:"expanded",COLLAPSED:"collapsed",DRAGGING:"dragging",RESIZING:"resizing",SORTABLE:"sortable",SORTED_ASC:"sorted-asc",SORTED_DESC:"sorted-desc",HIDDEN:"hidden",STICKY_LEFT:"sticky-left",STICKY_RIGHT:"sticky-right",PINNED_TOP:"pinned-top",PINNED_BOTTOM:"pinned-bottom",TREE_TOGGLE:"tree-toggle",TREE_INDENT:"tree-indent",GROUP_TOGGLE:"group-toggle",GROUP_LABEL:"group-label",GROUP_COUNT:"group-count",RANGE_SELECTION:"range-selection",SELECTION_OVERLAY:"selection-overlay"},Y={ROW_INDEX:"data-row-index",COL_INDEX:"data-col-index",FIELD:"data-field",GROUP_KEY:"data-group-key",TREE_LEVEL:"data-tree-level",STICKY:"data-sticky"},Yi={ROOT:`.${L.ROOT}`,HEADER:`.${L.HEADER}`,HEADER_ROW:`.${L.HEADER_ROW}`,HEADER_CELL:`.${L.HEADER_CELL}`,ROWS_VIEWPORT:`.${L.ROWS_VIEWPORT}`,ROWS_CONTAINER:`.${L.ROWS_CONTAINER}`,DATA_ROW:`.${L.DATA_ROW}`,DATA_CELL:`.${L.DATA_CELL}`,GROUP_ROW:`.${L.GROUP_ROW}`,ROW_BY_INDEX:t=>`.${L.DATA_ROW}[${Y.ROW_INDEX}="${t}"]`,CELL_BY_FIELD:t=>`.${L.DATA_CELL}[${Y.FIELD}="${t}"]`,CELL_AT:(t,e)=>`.${L.DATA_ROW}[${Y.ROW_INDEX}="${t}"] .${L.DATA_CELL}[${Y.COL_INDEX}="${e}"]`,SELECTED_ROWS:`.${L.DATA_ROW}.${L.SELECTED}`,EDITING_CELL:`.${L.DATA_CELL}.${L.EDITING}`},ji={COLOR_BG:"--tbw-color-bg",COLOR_FG:"--tbw-color-fg",COLOR_FG_MUTED:"--tbw-color-fg-muted",COLOR_BORDER:"--tbw-color-border",COLOR_ACCENT:"--tbw-color-accent",COLOR_HEADER_BG:"--tbw-color-header-bg",COLOR_HEADER_FG:"--tbw-color-header-fg",COLOR_SELECTION:"--tbw-color-selection",COLOR_ROW_HOVER:"--tbw-color-row-hover",COLOR_ROW_ALT:"--tbw-color-row-alt",ROW_HEIGHT:"--tbw-row-height",HEADER_HEIGHT:"--tbw-header-height",CELL_PADDING:"--tbw-cell-padding",FONT_FAMILY:"--tbw-font-family",FONT_SIZE:"--tbw-font-size",BORDER_RADIUS:"--tbw-border-radius",FOCUS_OUTLINE:"--tbw-focus-outline"};function Ki(t){const e=document.createElement("tbw-grid");return t&&(e.gridConfig=t),e}function Qi(t,e=document){return e.querySelector(t)}const Zi={CELL_CHANGE:"cell-change",CELL_COMMIT:"cell-commit",ROW_COMMIT:"row-commit",EDIT_OPEN:"edit-open",EDIT_CLOSE:"edit-close",CHANGED_ROWS_RESET:"changed-rows-reset",MOUNT_EXTERNAL_VIEW:"mount-external-view",MOUNT_EXTERNAL_EDITOR:"mount-external-editor",SORT_CHANGE:"sort-change",COLUMN_RESIZE:"column-resize",ACTIVATE_CELL:"activate-cell",CELL_ACTIVATE:"cell-activate",GROUP_TOGGLE:"group-toggle",COLUMN_STATE_CHANGE:"column-state-change"},Ji={SELECTION_CHANGE:"selection-change",TREE_EXPAND:"tree-expand",FILTER_CHANGE:"filter-change",SORT_MODEL_CHANGE:"sort-model-change",EXPORT_START:"export-start",EXPORT_COMPLETE:"export-complete",CLIPBOARD_COPY:"clipboard-copy",CLIPBOARD_PASTE:"clipboard-paste",CONTEXT_MENU_OPEN:"context-menu-open",CONTEXT_MENU_CLOSE:"context-menu-close",HISTORY_CHANGE:"history-change",SERVER_LOADING:"server-loading",SERVER_ERROR:"server-error",COLUMN_VISIBILITY_CHANGE:"column-visibility-change",COLUMN_REORDER:"column-reorder",DETAIL_EXPAND:"detail-expand",GROUP_EXPAND:"group-expand"},_e={sum:(t,e)=>t.reduce((i,o)=>i+(Number(o[e])||0),0),avg:(t,e)=>{const i=t.reduce((o,n)=>o+(Number(n[e])||0),0);return t.length?i/t.length:0},count:t=>t.length,min:(t,e)=>t.length?Math.min(...t.map(i=>Number(i[e])||1/0)):0,max:(t,e)=>t.length?Math.max(...t.map(i=>Number(i[e])||-1/0)):0,first:(t,e)=>t[0]?.[e],last:(t,e)=>t[t.length-1]?.[e]},j=new Map,O={register(t,e){j.set(t,e)},unregister(t){j.delete(t)},get(t){if(t!==void 0)return typeof t=="function"?t:j.get(t)??_e[t]},run(t,e,i,o){const n=this.get(t);return n?n(e,i,o):void 0},has(t){return j.has(t)||t in _e},list(){return[...Object.keys(_e),...j.keys()]}},ht={sum:t=>t.reduce((e,i)=>e+i,0),avg:t=>t.length?t.reduce((e,i)=>e+i,0)/t.length:0,count:t=>t.length,min:t=>t.length?Math.min(...t):0,max:t=>t.length?Math.max(...t):0,first:t=>t[0]??0,last:t=>t[t.length-1]??0};function ut(t){return ht[t]??ht.sum}function eo(t,e){return ut(t)(e)}const to=O.register.bind(O),io=O.unregister.bind(O),oo=O.get.bind(O),no=O.run.bind(O),ro=O.list.bind(O);y.BaseGridPlugin=Xi,y.DEFAULT_ANIMATION_CONFIG=Se,y.DEFAULT_GRID_ICONS=M,y.DGEvents=Zi,y.DataGridElement=k,y.FitModeEnum=$,y.GridCSSVars=ji,y.GridClasses=L,y.GridDataAttrs=Y,y.GridElement=k,y.GridSelectors=Yi,y.PLUGIN_QUERIES=Bi,y.PluginEvents=Ji,y.PluginManager=X,y.RenderPhase=H,y.aggregatorRegistry=O,y.builtInSort=Ue,y.createGrid=Ki,y.defaultComparator=Fe,y.getAggregator=oo,y.getValueAggregator=ut,y.listAggregators=ro,y.queryGrid=Qi,y.registerAggregator=to,y.runAggregator=no,y.runValueAggregator=eo,y.unregisterAggregator=io,Object.defineProperty(y,Symbol.toStringTag,{value:"Module"})}));
|
|
91
91
|
//# sourceMappingURL=grid.umd.js.map
|