@toolbox-web/grid 1.25.0 → 1.25.2

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 (101) hide show
  1. package/all.js +2 -2
  2. package/all.js.map +1 -1
  3. package/index.js +1 -1
  4. package/index.js.map +1 -1
  5. package/lib/core/grid.d.ts +18 -2
  6. package/lib/core/internal/diagnostics.d.ts +164 -0
  7. package/lib/core/internal/sorting.d.ts +53 -4
  8. package/lib/core/internal/utils.d.ts +0 -8
  9. package/lib/core/plugin/base-plugin.d.ts +18 -2
  10. package/lib/core/plugin/plugin-manager.d.ts +6 -4
  11. package/lib/core/types.d.ts +3 -2
  12. package/lib/features/registry.js +1 -1
  13. package/lib/features/registry.js.map +1 -1
  14. package/lib/plugins/clipboard/index.js +1 -1
  15. package/lib/plugins/clipboard/index.js.map +1 -1
  16. package/lib/plugins/column-virtualization/index.js +1 -1
  17. package/lib/plugins/column-virtualization/index.js.map +1 -1
  18. package/lib/plugins/context-menu/index.js +1 -1
  19. package/lib/plugins/context-menu/index.js.map +1 -1
  20. package/lib/plugins/editing/index.js +1 -1
  21. package/lib/plugins/editing/index.js.map +1 -1
  22. package/lib/plugins/editing/types.d.ts +3 -1
  23. package/lib/plugins/export/ExportPlugin.d.ts +2 -2
  24. package/lib/plugins/export/index.js +1 -1
  25. package/lib/plugins/export/index.js.map +1 -1
  26. package/lib/plugins/filtering/FilteringPlugin.d.ts +2 -2
  27. package/lib/plugins/filtering/index.js +1 -1
  28. package/lib/plugins/filtering/index.js.map +1 -1
  29. package/lib/plugins/grouping-columns/grouping-columns.d.ts +15 -1
  30. package/lib/plugins/grouping-columns/index.d.ts +1 -0
  31. package/lib/plugins/grouping-columns/index.js +1 -1
  32. package/lib/plugins/grouping-columns/index.js.map +1 -1
  33. package/lib/plugins/grouping-columns/types.d.ts +98 -8
  34. package/lib/plugins/grouping-rows/GroupingRowsPlugin.d.ts +2 -2
  35. package/lib/plugins/grouping-rows/index.js +2 -2
  36. package/lib/plugins/grouping-rows/index.js.map +1 -1
  37. package/lib/plugins/master-detail/index.js +1 -1
  38. package/lib/plugins/master-detail/index.js.map +1 -1
  39. package/lib/plugins/multi-sort/MultiSortPlugin.d.ts +2 -2
  40. package/lib/plugins/multi-sort/index.js +1 -1
  41. package/lib/plugins/multi-sort/index.js.map +1 -1
  42. package/lib/plugins/pinned-columns/PinnedColumnsPlugin.d.ts +2 -2
  43. package/lib/plugins/pinned-columns/index.js +1 -1
  44. package/lib/plugins/pinned-columns/index.js.map +1 -1
  45. package/lib/plugins/pinned-rows/index.js +1 -1
  46. package/lib/plugins/pinned-rows/index.js.map +1 -1
  47. package/lib/plugins/pivot/index.js +1 -1
  48. package/lib/plugins/pivot/index.js.map +1 -1
  49. package/lib/plugins/print/PrintPlugin.d.ts +2 -1
  50. package/lib/plugins/print/index.js +1 -1
  51. package/lib/plugins/print/index.js.map +1 -1
  52. package/lib/plugins/print/print-isolated.d.ts +2 -1
  53. package/lib/plugins/reorder-columns/ReorderPlugin.d.ts +2 -2
  54. package/lib/plugins/reorder-columns/index.js +1 -1
  55. package/lib/plugins/reorder-columns/index.js.map +1 -1
  56. package/lib/plugins/reorder-rows/RowReorderPlugin.d.ts +2 -2
  57. package/lib/plugins/reorder-rows/index.js +1 -1
  58. package/lib/plugins/reorder-rows/index.js.map +1 -1
  59. package/lib/plugins/responsive/index.js +1 -1
  60. package/lib/plugins/responsive/index.js.map +1 -1
  61. package/lib/plugins/selection/index.js +1 -1
  62. package/lib/plugins/selection/index.js.map +1 -1
  63. package/lib/plugins/server-side/index.js +1 -1
  64. package/lib/plugins/server-side/index.js.map +1 -1
  65. package/lib/plugins/tree/TreePlugin.d.ts +2 -2
  66. package/lib/plugins/tree/index.js +1 -1
  67. package/lib/plugins/tree/index.js.map +1 -1
  68. package/lib/plugins/undo-redo/UndoRedoPlugin.d.ts +2 -2
  69. package/lib/plugins/undo-redo/index.js +1 -1
  70. package/lib/plugins/undo-redo/index.js.map +1 -1
  71. package/lib/plugins/visibility/VisibilityPlugin.d.ts +2 -2
  72. package/lib/plugins/visibility/index.js +1 -1
  73. package/lib/plugins/visibility/index.js.map +1 -1
  74. package/package.json +1 -1
  75. package/umd/grid.all.umd.js +1 -1
  76. package/umd/grid.all.umd.js.map +1 -1
  77. package/umd/grid.umd.js +1 -1
  78. package/umd/grid.umd.js.map +1 -1
  79. package/umd/plugins/clipboard.umd.js +1 -1
  80. package/umd/plugins/clipboard.umd.js.map +1 -1
  81. package/umd/plugins/context-menu.umd.js +1 -1
  82. package/umd/plugins/context-menu.umd.js.map +1 -1
  83. package/umd/plugins/editing.umd.js +1 -1
  84. package/umd/plugins/editing.umd.js.map +1 -1
  85. package/umd/plugins/export.umd.js.map +1 -1
  86. package/umd/plugins/filtering.umd.js.map +1 -1
  87. package/umd/plugins/grouping-columns.umd.js +1 -1
  88. package/umd/plugins/grouping-columns.umd.js.map +1 -1
  89. package/umd/plugins/grouping-rows.umd.js.map +1 -1
  90. package/umd/plugins/multi-sort.umd.js.map +1 -1
  91. package/umd/plugins/pinned-columns.umd.js.map +1 -1
  92. package/umd/plugins/print.umd.js +1 -1
  93. package/umd/plugins/print.umd.js.map +1 -1
  94. package/umd/plugins/reorder-columns.umd.js.map +1 -1
  95. package/umd/plugins/reorder-rows.umd.js.map +1 -1
  96. package/umd/plugins/responsive.umd.js +1 -1
  97. package/umd/plugins/responsive.umd.js.map +1 -1
  98. package/umd/plugins/tree.umd.js.map +1 -1
  99. package/umd/plugins/undo-redo.umd.js +1 -1
  100. package/umd/plugins/undo-redo.umd.js.map +1 -1
  101. package/umd/plugins/visibility.umd.js.map +1 -1
@@ -377,7 +377,9 @@ export interface EditingConfig {
377
377
  *
378
378
  * @example
379
379
  * ```typescript
380
- * const grid = document.querySelector('tbw-grid');
380
+ * import { queryGrid } from '@toolbox-web/grid';
381
+ *
382
+ * const grid = queryGrid('tbw-grid');
381
383
  * grid.gridConfig = {
382
384
  * getRowId: (r) => r.id,
383
385
  * columns: [...],
@@ -41,10 +41,10 @@ import { ExportConfig, ExportFormat, ExportParams } from './types';
41
41
  *
42
42
  * @example Basic Export with Button
43
43
  * ```ts
44
- * import '@toolbox-web/grid';
44
+ * import { queryGrid } from '@toolbox-web/grid';
45
45
  * import { ExportPlugin } from '@toolbox-web/grid/plugins/export';
46
46
  *
47
- * const grid = document.querySelector('tbw-grid');
47
+ * const grid = queryGrid('tbw-grid');
48
48
  * grid.gridConfig = {
49
49
  * columns: [
50
50
  * { field: 'name', header: 'Name' },
@@ -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 r{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 r=new CustomEvent(e,{detail:t,bubbles:!0,cancelable:!0});return this.grid?.dispatchEvent?.(r),r.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?.()}requestVirtualRefresh(){this.grid?.requestVirtualRefresh?.()}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?._hostElement}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(),r=parseInt(t,10);if(!isNaN(r))return r}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){var t,r;console.warn(`${t=this.gridElement.id,r=this.name,`[tbw-grid${t?`#${t}`:""}${r?`:${r}`:""}]`} ${e}`)}}function n(e,t){return t?.length?[...t].sort((e,t)=>e-t).map(t=>e[t]).filter(e=>null!=e):e}function s(e,t=!0){if(null==e)return"";if(e instanceof Date)return e.toISOString();if("object"==typeof e)return JSON.stringify(e);const r=String(e);return t&&(r.includes(",")||r.includes('"')||r.includes("\n")||r.includes("\r"))?`"${r.replace(/"/g,'""')}"`:r}function i(e,t){const r=URL.createObjectURL(e),n=document.createElement("a");n.href=r,n.download=t,n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(r)}function o(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;")}class l extends r{name="export";get defaultConfig(){return{fileName:"export",includeHeaders:!0,onlyVisible:!0,onlySelected:!1}}isExportingFlag=!1;lastExportInfo=null;performExport(e,t){const r=this.config,l={format:e,fileName:t?.fileName??r.fileName??"export",includeHeaders:t?.includeHeaders??r.includeHeaders,processCell:t?.processCell,processHeader:t?.processHeader,columns:t?.columns,rowIndices:t?.rowIndices},a=function(e,t,r=!0){let n=e;if(r&&(n=n.filter(e=>!e.hidden&&!e.field.startsWith("__")&&!0!==e.meta?.utility)),t?.length){const e=new Set(t);n=n.filter(t=>e.has(t.field))}return n}(this.columns,t?.columns,r.onlyVisible);let c;if(t?.rowIndices)c=n(this.rows,t.rowIndices);else if(r.onlySelected){const e=this.getSelectionState();c=e?.selected?.size?n(this.rows,[...e.selected]):[...this.rows]}else c=[...this.rows];this.isExportingFlag=!0;let d=l.fileName;try{switch(e){case"csv":{const e=function(e,t,r,n={}){const i=n.delimiter??",",o=n.newline??"\n",l=[],a=n.bom?"\ufeff":"";if(!1!==r.includeHeaders){const e=t.map(e=>{const t=e.header||e.field;return s(r.processHeader?r.processHeader(t,e.field):t)});l.push(e.join(i))}for(const c of e){const e=t.map(e=>{let t=c[e.field];return r.processCell&&(t=r.processCell(t,e.field,c)),s(t)});l.push(e.join(i))}return a+l.join(o)}(c,a,l,{bom:!0});d=d.endsWith(".csv")?d:`${d}.csv`,function(e,t){i(new Blob([e],{type:"text/csv;charset=utf-8;"}),t)}(e,d);break}case"excel":{const e=function(e,t,r){let n='<?xml version="1.0" encoding="UTF-8"?>\n<?mso-application progid="Excel.Sheet"?>\n<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"\n xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">\n<Worksheet ss:Name="Sheet1">\n<Table>';if(!1!==r.includeHeaders){n+="\n<Row>";for(const e of t){const t=e.header||e.field;n+=`<Cell><Data ss:Type="String">${o(r.processHeader?r.processHeader(t,e.field):t)}</Data></Cell>`}n+="</Row>"}for(const s of e){n+="\n<Row>";for(const e of t){let t=s[e.field];r.processCell&&(t=r.processCell(t,e.field,s));let i="String",l="";null==t?l="":"number"!=typeof t||isNaN(t)?t instanceof Date?(i="DateTime",l=t.toISOString()):l=o(String(t)):(i="Number",l=String(t)),n+=`<Cell><Data ss:Type="${i}">${l}</Data></Cell>`}n+="</Row>"}return n+="\n</Table>\n</Worksheet>\n</Workbook>",n}(c,a,l);d=d.endsWith(".xls")?d:`${d}.xls`,function(e,t){const r=t.endsWith(".xls")?t:`${t}.xls`;i(new Blob([e],{type:"application/vnd.ms-excel;charset=utf-8;"}),r)}(e,d);break}case"json":{const e=c.map(e=>{const t={};for(const r of a){let n=e[r.field];l.processCell&&(n=l.processCell(n,r.field,e)),t[r.field]=n}return t}),t=JSON.stringify(e,null,2);d=d.endsWith(".json")?d:`${d}.json`;i(new Blob([t],{type:"application/json"}),d);break}}this.lastExportInfo={format:e,timestamp:/* @__PURE__ */new Date},this.emit("export-complete",{format:e,fileName:d,rowCount:c.length,columnCount:a.length})}finally{this.isExportingFlag=!1}}getSelectionState(){try{return this.grid?.getPluginState?.("selection")??null}catch{return null}}exportCsv(e){this.performExport("csv",e)}exportExcel(e){this.performExport("excel",e)}exportJson(e){this.performExport("json",e)}isExporting(){return this.isExportingFlag}getLastExport(){return this.lastExportInfo}}export{l as ExportPlugin};
1
+ function e(e,t){return`[tbw-grid${e?`#${e}`:""}${t?`:${t}`:""}]`}function t(t,r,n,i){return`${e(n,i)} ${t}: ${r}\n\n → More info: ${function(e){return`https://toolboxjs.com/grid/errors#${e.toLowerCase()}`}(t)}`}const r='<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>',n={expand:"▶",collapse:"▼",sortAsc:"▲",sortDesc:"▼",sortNone:"⇅",submenuArrow:"▶",dragHandle:"⋮⋮",toolPanel:"☰",filter:r,filterActive:r,print:"🖨️"};class i{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 r=new CustomEvent(e,{detail:t,bubbles:!0,cancelable:!0});return this.grid?.dispatchEvent?.(r),r.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?.()}requestVirtualRefresh(){this.grid?.requestVirtualRefresh?.()}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?._hostElement}get disconnectSignal(){return this.#e?.signal??this.grid?.disconnectSignal}get gridIcons(){const e=this.grid?.gridConfig?.icons??{};return{...n,...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(),r=parseInt(t,10);if(!isNaN(r))return r}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(r,n){void 0!==n?console.warn(t(r,n,this.gridElement.id,this.name)):console.warn(`${e(this.gridElement.id,this.name)} ${r}`)}throwDiagnostic(e,r){throw new Error(t(e,r,this.gridElement.id,this.name))}}function s(e,t){return t?.length?[...t].sort((e,t)=>e-t).map(t=>e[t]).filter(e=>null!=e):e}function o(e,t=!0){if(null==e)return"";if(e instanceof Date)return e.toISOString();if("object"==typeof e)return JSON.stringify(e);const r=String(e);return t&&(r.includes(",")||r.includes('"')||r.includes("\n")||r.includes("\r"))?`"${r.replace(/"/g,'""')}"`:r}function l(e,t){const r=URL.createObjectURL(e),n=document.createElement("a");n.href=r,n.download=t,n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(r)}function a(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;")}class c extends i{name="export";get defaultConfig(){return{fileName:"export",includeHeaders:!0,onlyVisible:!0,onlySelected:!1}}isExportingFlag=!1;lastExportInfo=null;performExport(e,t){const r=this.config,n={format:e,fileName:t?.fileName??r.fileName??"export",includeHeaders:t?.includeHeaders??r.includeHeaders,processCell:t?.processCell,processHeader:t?.processHeader,columns:t?.columns,rowIndices:t?.rowIndices},i=function(e,t,r=!0){let n=e;if(r&&(n=n.filter(e=>!e.hidden&&!e.field.startsWith("__")&&!0!==e.meta?.utility)),t?.length){const e=new Set(t);n=n.filter(t=>e.has(t.field))}return n}(this.columns,t?.columns,r.onlyVisible);let c;if(t?.rowIndices)c=s(this.rows,t.rowIndices);else if(r.onlySelected){const e=this.getSelectionState();c=e?.selected?.size?s(this.rows,[...e.selected]):[...this.rows]}else c=[...this.rows];this.isExportingFlag=!0;let d=n.fileName;try{switch(e){case"csv":{const e=function(e,t,r,n={}){const i=n.delimiter??",",s=n.newline??"\n",l=[],a=n.bom?"\ufeff":"";if(!1!==r.includeHeaders){const e=t.map(e=>{const t=e.header||e.field;return o(r.processHeader?r.processHeader(t,e.field):t)});l.push(e.join(i))}for(const c of e){const e=t.map(e=>{let t=c[e.field];return r.processCell&&(t=r.processCell(t,e.field,c)),o(t)});l.push(e.join(i))}return a+l.join(s)}(c,i,n,{bom:!0});d=d.endsWith(".csv")?d:`${d}.csv`,function(e,t){l(new Blob([e],{type:"text/csv;charset=utf-8;"}),t)}(e,d);break}case"excel":{const e=function(e,t,r){let n='<?xml version="1.0" encoding="UTF-8"?>\n<?mso-application progid="Excel.Sheet"?>\n<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"\n xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">\n<Worksheet ss:Name="Sheet1">\n<Table>';if(!1!==r.includeHeaders){n+="\n<Row>";for(const e of t){const t=e.header||e.field;n+=`<Cell><Data ss:Type="String">${a(r.processHeader?r.processHeader(t,e.field):t)}</Data></Cell>`}n+="</Row>"}for(const i of e){n+="\n<Row>";for(const e of t){let t=i[e.field];r.processCell&&(t=r.processCell(t,e.field,i));let s="String",o="";null==t?o="":"number"!=typeof t||isNaN(t)?t instanceof Date?(s="DateTime",o=t.toISOString()):o=a(String(t)):(s="Number",o=String(t)),n+=`<Cell><Data ss:Type="${s}">${o}</Data></Cell>`}n+="</Row>"}return n+="\n</Table>\n</Worksheet>\n</Workbook>",n}(c,i,n);d=d.endsWith(".xls")?d:`${d}.xls`,function(e,t){const r=t.endsWith(".xls")?t:`${t}.xls`;l(new Blob([e],{type:"application/vnd.ms-excel;charset=utf-8;"}),r)}(e,d);break}case"json":{const e=c.map(e=>{const t={};for(const r of i){let i=e[r.field];n.processCell&&(i=n.processCell(i,r.field,e)),t[r.field]=i}return t}),t=JSON.stringify(e,null,2);d=d.endsWith(".json")?d:`${d}.json`;l(new Blob([t],{type:"application/json"}),d);break}}this.lastExportInfo={format:e,timestamp:/* @__PURE__ */new Date},this.emit("export-complete",{format:e,fileName:d,rowCount:c.length,columnCount:i.length})}finally{this.isExportingFlag=!1}}getSelectionState(){try{return this.grid?.getPluginState?.("selection")??null}catch{return null}}exportCsv(e){this.performExport("csv",e)}exportExcel(e){this.performExport("excel",e)}exportJson(e){this.performExport("json",e)}isExporting(){return this.isExportingFlag}getLastExport(){return this.lastExportInfo}}export{c as ExportPlugin};
2
2
  //# sourceMappingURL=index.js.map