@toolbox-web/grid 1.23.3 → 1.24.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.
Files changed (236) hide show
  1. package/README.md +35 -6
  2. package/all.d.ts +2 -2
  3. package/all.d.ts.map +1 -1
  4. package/all.js +2 -2
  5. package/all.js.map +1 -1
  6. package/index.js +1 -1
  7. package/index.js.map +1 -1
  8. package/lib/core/grid.d.ts +28 -0
  9. package/lib/core/grid.d.ts.map +1 -1
  10. package/lib/core/internal/feature-hook.d.ts +8 -0
  11. package/lib/core/internal/feature-hook.d.ts.map +1 -0
  12. package/lib/core/plugin/base-plugin.d.ts +14 -2
  13. package/lib/core/plugin/base-plugin.d.ts.map +1 -1
  14. package/lib/core/plugin/types.d.ts +2 -1
  15. package/lib/core/plugin/types.d.ts.map +1 -1
  16. package/lib/core/types.d.ts +68 -2
  17. package/lib/core/types.d.ts.map +1 -1
  18. package/lib/features/clipboard.d.ts +8 -0
  19. package/lib/features/clipboard.d.ts.map +1 -0
  20. package/lib/features/clipboard.js +2 -0
  21. package/lib/features/clipboard.js.map +1 -0
  22. package/lib/features/column-virtualization.d.ts +8 -0
  23. package/lib/features/column-virtualization.d.ts.map +1 -0
  24. package/lib/features/column-virtualization.js +2 -0
  25. package/lib/features/column-virtualization.js.map +1 -0
  26. package/lib/features/context-menu.d.ts +8 -0
  27. package/lib/features/context-menu.d.ts.map +1 -0
  28. package/lib/features/context-menu.js +2 -0
  29. package/lib/features/context-menu.js.map +1 -0
  30. package/lib/features/editing.d.ts +8 -0
  31. package/lib/features/editing.d.ts.map +1 -0
  32. package/lib/features/editing.js +2 -0
  33. package/lib/features/editing.js.map +1 -0
  34. package/lib/features/export.d.ts +8 -0
  35. package/lib/features/export.d.ts.map +1 -0
  36. package/lib/features/export.js +2 -0
  37. package/lib/features/export.js.map +1 -0
  38. package/lib/features/filtering.d.ts +8 -0
  39. package/lib/features/filtering.d.ts.map +1 -0
  40. package/lib/features/filtering.js +2 -0
  41. package/lib/features/filtering.js.map +1 -0
  42. package/lib/features/grouping-columns.d.ts +8 -0
  43. package/lib/features/grouping-columns.d.ts.map +1 -0
  44. package/lib/features/grouping-columns.js +2 -0
  45. package/lib/features/grouping-columns.js.map +1 -0
  46. package/lib/features/grouping-rows.d.ts +8 -0
  47. package/lib/features/grouping-rows.d.ts.map +1 -0
  48. package/lib/features/grouping-rows.js +2 -0
  49. package/lib/features/grouping-rows.js.map +1 -0
  50. package/lib/features/magic-string.es-CkyDP9Ir.mjs.map +1 -0
  51. package/lib/features/master-detail.d.ts +8 -0
  52. package/lib/features/master-detail.d.ts.map +1 -0
  53. package/lib/features/master-detail.js +2 -0
  54. package/lib/features/master-detail.js.map +1 -0
  55. package/lib/features/multi-sort.d.ts +10 -0
  56. package/lib/features/multi-sort.d.ts.map +1 -0
  57. package/lib/features/multi-sort.js +2 -0
  58. package/lib/features/multi-sort.js.map +1 -0
  59. package/lib/features/pinned-columns.d.ts +18 -0
  60. package/lib/features/pinned-columns.d.ts.map +1 -0
  61. package/lib/features/pinned-columns.js +2 -0
  62. package/lib/features/pinned-columns.js.map +1 -0
  63. package/lib/features/pinned-rows.d.ts +8 -0
  64. package/lib/features/pinned-rows.d.ts.map +1 -0
  65. package/lib/features/pinned-rows.js +2 -0
  66. package/lib/features/pinned-rows.js.map +1 -0
  67. package/lib/features/pivot.d.ts +8 -0
  68. package/lib/features/pivot.d.ts.map +1 -0
  69. package/lib/features/pivot.js +2 -0
  70. package/lib/features/pivot.js.map +1 -0
  71. package/lib/features/print.d.ts +8 -0
  72. package/lib/features/print.d.ts.map +1 -0
  73. package/lib/features/print.js +2 -0
  74. package/lib/features/print.js.map +1 -0
  75. package/lib/features/registry.d.ts +50 -0
  76. package/lib/features/registry.d.ts.map +1 -0
  77. package/lib/features/registry.js +2 -0
  78. package/lib/features/registry.js.map +1 -0
  79. package/lib/features/registry.spec.js +5 -0
  80. package/lib/features/registry.spec.js.map +1 -0
  81. package/lib/features/reorder-columns.d.ts +10 -0
  82. package/lib/features/reorder-columns.d.ts.map +1 -0
  83. package/lib/features/reorder-columns.js +2 -0
  84. package/lib/features/reorder-columns.js.map +1 -0
  85. package/lib/features/reorder-rows.d.ts +10 -0
  86. package/lib/features/reorder-rows.d.ts.map +1 -0
  87. package/lib/features/reorder-rows.js +2 -0
  88. package/lib/features/reorder-rows.js.map +1 -0
  89. package/lib/features/responsive.d.ts +8 -0
  90. package/lib/features/responsive.d.ts.map +1 -0
  91. package/lib/features/responsive.js +2 -0
  92. package/lib/features/responsive.js.map +1 -0
  93. package/lib/features/selection.d.ts +8 -0
  94. package/lib/features/selection.d.ts.map +1 -0
  95. package/lib/features/selection.js +2 -0
  96. package/lib/features/selection.js.map +1 -0
  97. package/lib/features/server-side.d.ts +8 -0
  98. package/lib/features/server-side.d.ts.map +1 -0
  99. package/lib/features/server-side.js +2 -0
  100. package/lib/features/server-side.js.map +1 -0
  101. package/lib/features/tree.d.ts +8 -0
  102. package/lib/features/tree.d.ts.map +1 -0
  103. package/lib/features/tree.js +2 -0
  104. package/lib/features/tree.js.map +1 -0
  105. package/lib/features/undo-redo.d.ts +8 -0
  106. package/lib/features/undo-redo.d.ts.map +1 -0
  107. package/lib/features/undo-redo.js +2 -0
  108. package/lib/features/undo-redo.js.map +1 -0
  109. package/lib/features/visibility.d.ts +8 -0
  110. package/lib/features/visibility.d.ts.map +1 -0
  111. package/lib/features/visibility.js +2 -0
  112. package/lib/features/visibility.js.map +1 -0
  113. package/lib/plugins/clipboard/ClipboardPlugin.d.ts +3 -3
  114. package/lib/plugins/clipboard/index.js +1 -1
  115. package/lib/plugins/clipboard/index.js.map +1 -1
  116. package/lib/plugins/clipboard/types.d.ts +1 -1
  117. package/lib/plugins/column-virtualization/index.js +1 -1
  118. package/lib/plugins/column-virtualization/index.js.map +1 -1
  119. package/lib/plugins/column-virtualization/types.d.ts +24 -2
  120. package/lib/plugins/column-virtualization/types.d.ts.map +1 -1
  121. package/lib/plugins/context-menu/index.js +1 -1
  122. package/lib/plugins/context-menu/index.js.map +1 -1
  123. package/lib/plugins/editing/index.js +1 -1
  124. package/lib/plugins/editing/index.js.map +1 -1
  125. package/lib/plugins/editing/types.d.ts +1 -1
  126. package/lib/plugins/export/ExportPlugin.d.ts +1 -1
  127. package/lib/plugins/export/index.js +1 -1
  128. package/lib/plugins/export/index.js.map +1 -1
  129. package/lib/plugins/export/types.d.ts +9 -1
  130. package/lib/plugins/export/types.d.ts.map +1 -1
  131. package/lib/plugins/filtering/index.js +1 -1
  132. package/lib/plugins/filtering/index.js.map +1 -1
  133. package/lib/plugins/filtering/types.d.ts +586 -29
  134. package/lib/plugins/filtering/types.d.ts.map +1 -1
  135. package/lib/plugins/grouping-columns/index.d.ts +1 -1
  136. package/lib/plugins/grouping-columns/index.js +1 -1
  137. package/lib/plugins/grouping-columns/index.js.map +1 -1
  138. package/lib/plugins/grouping-rows/index.d.ts +2 -2
  139. package/lib/plugins/grouping-rows/index.d.ts.map +1 -1
  140. package/lib/plugins/grouping-rows/index.js +1 -1
  141. package/lib/plugins/grouping-rows/index.js.map +1 -1
  142. package/lib/plugins/grouping-rows/types.d.ts +48 -3
  143. package/lib/plugins/grouping-rows/types.d.ts.map +1 -1
  144. package/lib/plugins/master-detail/MasterDetailPlugin.d.ts +2 -2
  145. package/lib/plugins/master-detail/index.js +1 -1
  146. package/lib/plugins/master-detail/index.js.map +1 -1
  147. package/lib/plugins/multi-sort/index.js +1 -1
  148. package/lib/plugins/multi-sort/index.js.map +1 -1
  149. package/lib/plugins/multi-sort/types.d.ts +40 -6
  150. package/lib/plugins/multi-sort/types.d.ts.map +1 -1
  151. package/lib/plugins/pinned-columns/index.js +1 -1
  152. package/lib/plugins/pinned-columns/index.js.map +1 -1
  153. package/lib/plugins/pinned-columns/types.d.ts +3 -3
  154. package/lib/plugins/pinned-rows/index.js +1 -1
  155. package/lib/plugins/pinned-rows/index.js.map +1 -1
  156. package/lib/plugins/pinned-rows/types.d.ts +42 -4
  157. package/lib/plugins/pinned-rows/types.d.ts.map +1 -1
  158. package/lib/plugins/pivot/index.js +1 -1
  159. package/lib/plugins/pivot/index.js.map +1 -1
  160. package/lib/plugins/pivot/types.d.ts +66 -1
  161. package/lib/plugins/pivot/types.d.ts.map +1 -1
  162. package/lib/plugins/print/PrintPlugin.d.ts +1 -1
  163. package/lib/plugins/print/index.js +1 -1
  164. package/lib/plugins/print/index.js.map +1 -1
  165. package/lib/plugins/print/types.d.ts +9 -1
  166. package/lib/plugins/print/types.d.ts.map +1 -1
  167. package/lib/plugins/{reorder → reorder-columns}/ReorderPlugin.d.ts +5 -3
  168. package/lib/plugins/reorder-columns/ReorderPlugin.d.ts.map +1 -0
  169. package/lib/plugins/reorder-columns/column-drag.d.ts.map +1 -0
  170. package/lib/plugins/{reorder → reorder-columns}/index.d.ts +2 -2
  171. package/lib/plugins/reorder-columns/index.d.ts.map +1 -0
  172. package/lib/plugins/reorder-columns/index.js +2 -0
  173. package/lib/plugins/reorder-columns/index.js.map +1 -0
  174. package/lib/plugins/{reorder → reorder-columns}/types.d.ts +17 -1
  175. package/lib/plugins/reorder-columns/types.d.ts.map +1 -0
  176. package/lib/plugins/{row-reorder → reorder-rows}/RowReorderPlugin.d.ts +5 -3
  177. package/lib/plugins/reorder-rows/RowReorderPlugin.d.ts.map +1 -0
  178. package/lib/plugins/{row-reorder → reorder-rows}/index.d.ts +2 -2
  179. package/lib/plugins/reorder-rows/index.d.ts.map +1 -0
  180. package/lib/plugins/reorder-rows/index.js +2 -0
  181. package/lib/plugins/reorder-rows/index.js.map +1 -0
  182. package/lib/plugins/{row-reorder → reorder-rows}/types.d.ts +5 -0
  183. package/lib/plugins/reorder-rows/types.d.ts.map +1 -0
  184. package/lib/plugins/responsive/ResponsivePlugin.d.ts +2 -2
  185. package/lib/plugins/responsive/index.js +1 -1
  186. package/lib/plugins/responsive/index.js.map +1 -1
  187. package/lib/plugins/selection/SelectionPlugin.d.ts +5 -5
  188. package/lib/plugins/selection/index.js +1 -1
  189. package/lib/plugins/selection/index.js.map +1 -1
  190. package/lib/plugins/server-side/index.js +1 -1
  191. package/lib/plugins/server-side/index.js.map +1 -1
  192. package/lib/plugins/server-side/types.d.ts +82 -0
  193. package/lib/plugins/server-side/types.d.ts.map +1 -1
  194. package/lib/plugins/tree/index.js +1 -1
  195. package/lib/plugins/tree/index.js.map +1 -1
  196. package/lib/plugins/undo-redo/index.js +1 -1
  197. package/lib/plugins/undo-redo/index.js.map +1 -1
  198. package/lib/plugins/visibility/VisibilityPlugin.d.ts +2 -2
  199. package/lib/plugins/visibility/index.js +1 -1
  200. package/lib/plugins/visibility/index.js.map +1 -1
  201. package/lib/plugins/visibility/types.d.ts +16 -2
  202. package/lib/plugins/visibility/types.d.ts.map +1 -1
  203. package/package.json +17 -2
  204. package/public.d.ts +9 -2
  205. package/public.d.ts.map +1 -1
  206. package/umd/grid.all.umd.js +1 -1
  207. package/umd/grid.all.umd.js.map +1 -1
  208. package/umd/grid.umd.js +1 -1
  209. package/umd/grid.umd.js.map +1 -1
  210. package/umd/plugins/clipboard.umd.js.map +1 -1
  211. package/umd/plugins/export.umd.js.map +1 -1
  212. package/umd/plugins/master-detail.umd.js.map +1 -1
  213. package/umd/plugins/print.umd.js.map +1 -1
  214. package/umd/plugins/reorder-columns.umd.js +2 -0
  215. package/umd/plugins/reorder-columns.umd.js.map +1 -0
  216. package/umd/plugins/reorder-rows.umd.js +2 -0
  217. package/umd/plugins/reorder-rows.umd.js.map +1 -0
  218. package/umd/plugins/responsive.umd.js.map +1 -1
  219. package/umd/plugins/selection.umd.js.map +1 -1
  220. package/umd/plugins/visibility.umd.js.map +1 -1
  221. package/lib/plugins/reorder/ReorderPlugin.d.ts.map +0 -1
  222. package/lib/plugins/reorder/column-drag.d.ts.map +0 -1
  223. package/lib/plugins/reorder/index.d.ts.map +0 -1
  224. package/lib/plugins/reorder/index.js +0 -2
  225. package/lib/plugins/reorder/index.js.map +0 -1
  226. package/lib/plugins/reorder/types.d.ts.map +0 -1
  227. package/lib/plugins/row-reorder/RowReorderPlugin.d.ts.map +0 -1
  228. package/lib/plugins/row-reorder/index.d.ts.map +0 -1
  229. package/lib/plugins/row-reorder/index.js +0 -2
  230. package/lib/plugins/row-reorder/index.js.map +0 -1
  231. package/lib/plugins/row-reorder/types.d.ts.map +0 -1
  232. package/umd/plugins/reorder.umd.js +0 -2
  233. package/umd/plugins/reorder.umd.js.map +0 -1
  234. package/umd/plugins/row-reorder.umd.js +0 -2
  235. package/umd/plugins/row-reorder.umd.js.map +0 -1
  236. /package/lib/plugins/{reorder → reorder-columns}/column-drag.d.ts +0 -0
@@ -1,2 +1,2 @@
1
- const e='<svg viewBox="0 0 16 16" width="12" height="12"><path fill="currentColor" d="M6 10.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5zm-2-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm-2-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5z"/></svg>',t={expand:"▶",collapse:"▼",sortAsc:"▲",sortDesc:"▼",sortNone:"⇅",submenuArrow:"▶",dragHandle:"⋮⋮",toolPanel:"☰",filter:e,filterActive:e,print:"🖨️"};class o{static dependencies;static manifest;version="undefined"!=typeof __GRID_VERSION__?__GRID_VERSION__:"dev";styles;cellRenderers;headerRenderers;cellEditors;grid;config;userConfig;#e;get defaultConfig(){return{}}constructor(e={}){this.userConfig=e}attach(e){this.#e?.abort(),this.#e=new AbortController,this.grid=e,this.config={...this.defaultConfig,...this.userConfig}}detach(){this.#e?.abort(),this.#e=void 0}getPlugin(e){return this.grid?.getPlugin(e)}emit(e,t){this.grid?.dispatchEvent?.(new CustomEvent(e,{detail:t,bubbles:!0}))}emitCancelable(e,t){const o=new CustomEvent(e,{detail:t,bubbles:!0,cancelable:!0});return this.grid?.dispatchEvent?.(o),o.defaultPrevented}on(e,t){this.grid?._pluginManager?.subscribe(this,e,t)}off(e){this.grid?._pluginManager?.unsubscribe(this,e)}emitPluginEvent(e,t){this.grid?._pluginManager?.emitPluginEvent(e,t)}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.#e?.signal??this.grid?.disconnectSignal}get gridIcons(){const e=this.grid?.gridConfig?.icons??{};return{...t,...e}}get isAnimationEnabled(){const e=this.grid?.effectiveConfig?.animation?.mode??"reduced-motion";if(!1===e||"off"===e)return!1;if(!0===e||"on"===e)return!0;const t=this.gridElement;if(t){return"0"!==getComputedStyle(t).getPropertyValue("--tbw-animation-enabled").trim()}return!0}get animationDuration(){const e=this.gridElement;if(e){const t=getComputedStyle(e).getPropertyValue("--tbw-animation-duration").trim(),o=parseInt(t,10);if(!isNaN(o))return o}return 200}resolveIcon(e,t){return void 0!==t?t:this.gridIcons[e]}setIcon(e,t){"string"==typeof t?e.innerHTML=t:t instanceof HTMLElement&&(e.innerHTML="",e.appendChild(t.cloneNode(!0)))}warn(e){console.warn(`[tbw-grid:${this.name}] ${e}`)}}function i(e,t){return Math.floor(e/t)}async function r(e,t,o,i){const r=function(e,t){return{start:e*t,end:(e+1)*t}}(t,o);return e.getRows({startRow:r.start,endRow:r.end,sortModel:i.sortModel,filterModel:i.filterModel})}function s(e,t,o){const r=i(e,t),s=o.get(r);if(!s)return;return s[e%t]}class n extends o{name="serverSide";get defaultConfig(){return{pageSize:100,cacheBlockSize:100,maxConcurrentRequests:2}}dataSource=null;totalRowCount=0;loadedBlocks=/* @__PURE__ */new Map;loadingBlocks=/* @__PURE__ */new Set;lastRequestId=0;scrollDebounceTimer;detach(){this.dataSource=null,this.totalRowCount=0,this.loadedBlocks.clear(),this.loadingBlocks.clear(),this.lastRequestId=0,this.scrollDebounceTimer&&(clearTimeout(this.scrollDebounceTimer),this.scrollDebounceTimer=void 0)}loadRequiredBlocks(){if(!this.dataSource)return;const e=this.grid,t=this.config.cacheBlockSize??100,o={startRow:e._virtualization.start,endRow:e._virtualization.end},s=function(e,t,o){const r=i(e,o),s=i(t-1,o),n=[];for(let i=r;i<=s;i++)n.push(i);return n}(o.startRow,o.endRow,t);for(const i of s)if(!this.loadedBlocks.has(i)&&!this.loadingBlocks.has(i)){if(this.loadingBlocks.size>=(this.config.maxConcurrentRequests??2))break;this.loadingBlocks.add(i),r(this.dataSource,i,t,{}).then(e=>{this.loadedBlocks.set(i,e.rows),this.totalRowCount=e.totalRowCount,this.loadingBlocks.delete(i),this.requestRender(),this.loadRequiredBlocks()}).catch(()=>{this.loadingBlocks.delete(i)})}}processRows(e){if(!this.dataSource)return[...e];const t=[];for(let o=0;o<this.totalRowCount;o++){const e=s(o,this.config.cacheBlockSize??100,this.loadedBlocks);t.push(e??{__loading:!0,__index:o})}return t}onScroll(e){this.dataSource&&(this.loadRequiredBlocks(),this.scrollDebounceTimer&&clearTimeout(this.scrollDebounceTimer),this.scrollDebounceTimer=setTimeout(()=>{this.loadRequiredBlocks()},100))}setDataSource(e){this.dataSource=e,this.loadedBlocks.clear(),this.loadingBlocks.clear();r(e,0,this.config.cacheBlockSize??100,{}).then(e=>{this.loadedBlocks.set(0,e.rows),this.totalRowCount=e.totalRowCount,this.requestRender()})}refresh(){this.dataSource&&(this.loadedBlocks.clear(),this.loadingBlocks.clear(),this.requestRender())}purgeCache(){this.loadedBlocks.clear()}getTotalRowCount(){return this.totalRowCount}isRowLoaded(e){const t=i(e,this.config.cacheBlockSize??100);return this.loadedBlocks.has(t)}getLoadedBlockCount(){return this.loadedBlocks.size}}export{n as ServerSidePlugin};
1
+ const e='<svg viewBox="0 0 16 16" width="12" height="12"><path fill="currentColor" d="M6 10.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5zm-2-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm-2-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5z"/></svg>',t={expand:"▶",collapse:"▼",sortAsc:"▲",sortDesc:"▼",sortNone:"⇅",submenuArrow:"▶",dragHandle:"⋮⋮",toolPanel:"☰",filter:e,filterActive:e,print:"🖨️"};class o{static dependencies;static manifest;aliases;version="undefined"!=typeof __GRID_VERSION__?__GRID_VERSION__:"dev";styles;cellRenderers;headerRenderers;cellEditors;grid;config;userConfig;#e;get defaultConfig(){return{}}constructor(e={}){this.userConfig=e}attach(e){this.#e?.abort(),this.#e=new AbortController,this.grid=e,this.config={...this.defaultConfig,...this.userConfig}}detach(){this.#e?.abort(),this.#e=void 0}getPlugin(e){return this.grid?.getPlugin(e)}emit(e,t){this.grid?.dispatchEvent?.(new CustomEvent(e,{detail:t,bubbles:!0}))}emitCancelable(e,t){const o=new CustomEvent(e,{detail:t,bubbles:!0,cancelable:!0});return this.grid?.dispatchEvent?.(o),o.defaultPrevented}on(e,t){this.grid?._pluginManager?.subscribe(this,e,t)}off(e){this.grid?._pluginManager?.unsubscribe(this,e)}emitPluginEvent(e,t){this.grid?._pluginManager?.emitPluginEvent(e,t)}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.#e?.signal??this.grid?.disconnectSignal}get gridIcons(){const e=this.grid?.gridConfig?.icons??{};return{...t,...e}}get isAnimationEnabled(){const e=this.grid?.effectiveConfig?.animation?.mode??"reduced-motion";if(!1===e||"off"===e)return!1;if(!0===e||"on"===e)return!0;const t=this.gridElement;if(t){return"0"!==getComputedStyle(t).getPropertyValue("--tbw-animation-enabled").trim()}return!0}get animationDuration(){const e=this.gridElement;if(e){const t=getComputedStyle(e).getPropertyValue("--tbw-animation-duration").trim(),o=parseInt(t,10);if(!isNaN(o))return o}return 200}resolveIcon(e,t){return void 0!==t?t:this.gridIcons[e]}setIcon(e,t){"string"==typeof t?e.innerHTML=t:t instanceof HTMLElement&&(e.innerHTML="",e.appendChild(t.cloneNode(!0)))}warn(e){console.warn(`[tbw-grid:${this.name}] ${e}`)}}function i(e,t){return Math.floor(e/t)}async function r(e,t,o,i){const r=function(e,t){return{start:e*t,end:(e+1)*t}}(t,o);return e.getRows({startRow:r.start,endRow:r.end,sortModel:i.sortModel,filterModel:i.filterModel})}function s(e,t,o){const r=i(e,t),s=o.get(r);if(!s)return;return s[e%t]}class n extends o{name="serverSide";get defaultConfig(){return{pageSize:100,cacheBlockSize:100,maxConcurrentRequests:2}}dataSource=null;totalRowCount=0;loadedBlocks=/* @__PURE__ */new Map;loadingBlocks=/* @__PURE__ */new Set;lastRequestId=0;scrollDebounceTimer;detach(){this.dataSource=null,this.totalRowCount=0,this.loadedBlocks.clear(),this.loadingBlocks.clear(),this.lastRequestId=0,this.scrollDebounceTimer&&(clearTimeout(this.scrollDebounceTimer),this.scrollDebounceTimer=void 0)}loadRequiredBlocks(){if(!this.dataSource)return;const e=this.grid,t=this.config.cacheBlockSize??100,o={startRow:e._virtualization.start,endRow:e._virtualization.end},s=function(e,t,o){const r=i(e,o),s=i(t-1,o),n=[];for(let i=r;i<=s;i++)n.push(i);return n}(o.startRow,o.endRow,t);for(const i of s)if(!this.loadedBlocks.has(i)&&!this.loadingBlocks.has(i)){if(this.loadingBlocks.size>=(this.config.maxConcurrentRequests??2))break;this.loadingBlocks.add(i),r(this.dataSource,i,t,{}).then(e=>{this.loadedBlocks.set(i,e.rows),this.totalRowCount=e.totalRowCount,this.loadingBlocks.delete(i),this.requestRender(),this.loadRequiredBlocks()}).catch(()=>{this.loadingBlocks.delete(i)})}}processRows(e){if(!this.dataSource)return[...e];const t=[];for(let o=0;o<this.totalRowCount;o++){const e=s(o,this.config.cacheBlockSize??100,this.loadedBlocks);t.push(e??{__loading:!0,__index:o})}return t}onScroll(e){this.dataSource&&(this.loadRequiredBlocks(),this.scrollDebounceTimer&&clearTimeout(this.scrollDebounceTimer),this.scrollDebounceTimer=setTimeout(()=>{this.loadRequiredBlocks()},100))}setDataSource(e){this.dataSource=e,this.loadedBlocks.clear(),this.loadingBlocks.clear();r(e,0,this.config.cacheBlockSize??100,{}).then(e=>{this.loadedBlocks.set(0,e.rows),this.totalRowCount=e.totalRowCount,this.requestRender()})}refresh(){this.dataSource&&(this.loadedBlocks.clear(),this.loadingBlocks.clear(),this.requestRender())}purgeCache(){this.loadedBlocks.clear()}getTotalRowCount(){return this.totalRowCount}isRowLoaded(e){const t=i(e,this.config.cacheBlockSize??100);return this.loadedBlocks.has(t)}getLoadedBlockCount(){return this.loadedBlocks.size}}export{n as ServerSidePlugin};
2
2
  //# sourceMappingURL=index.js.map