@toolbox-web/grid 1.28.0 → 1.28.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 (86) 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/types.d.ts +6 -0
  6. package/lib/features/clipboard.d.ts +2 -0
  7. package/lib/features/clipboard.js.map +1 -1
  8. package/lib/features/column-virtualization.d.ts +2 -0
  9. package/lib/features/column-virtualization.js.map +1 -1
  10. package/lib/features/context-menu.d.ts +2 -0
  11. package/lib/features/context-menu.js.map +1 -1
  12. package/lib/features/editing.d.ts +2 -0
  13. package/lib/features/editing.js.map +1 -1
  14. package/lib/features/export.d.ts +2 -0
  15. package/lib/features/export.js.map +1 -1
  16. package/lib/features/filtering.d.ts +2 -0
  17. package/lib/features/filtering.js.map +1 -1
  18. package/lib/features/grouping-columns.d.ts +2 -0
  19. package/lib/features/grouping-columns.js.map +1 -1
  20. package/lib/features/grouping-rows.d.ts +2 -0
  21. package/lib/features/grouping-rows.js.map +1 -1
  22. package/lib/features/master-detail.d.ts +2 -0
  23. package/lib/features/master-detail.js.map +1 -1
  24. package/lib/features/multi-sort.d.ts +2 -0
  25. package/lib/features/multi-sort.js.map +1 -1
  26. package/lib/features/pinned-columns.d.ts +2 -1
  27. package/lib/features/pinned-columns.js.map +1 -1
  28. package/lib/features/pinned-rows.d.ts +2 -0
  29. package/lib/features/pinned-rows.js.map +1 -1
  30. package/lib/features/pivot.d.ts +2 -0
  31. package/lib/features/pivot.js.map +1 -1
  32. package/lib/features/print.d.ts +2 -0
  33. package/lib/features/print.js.map +1 -1
  34. package/lib/features/reorder-columns.d.ts +2 -0
  35. package/lib/features/reorder-columns.js.map +1 -1
  36. package/lib/features/reorder-rows.d.ts +2 -0
  37. package/lib/features/reorder-rows.js.map +1 -1
  38. package/lib/features/responsive.d.ts +2 -0
  39. package/lib/features/responsive.js.map +1 -1
  40. package/lib/features/selection.d.ts +2 -0
  41. package/lib/features/selection.js.map +1 -1
  42. package/lib/features/server-side.d.ts +2 -0
  43. package/lib/features/server-side.js.map +1 -1
  44. package/lib/features/tooltip.d.ts +2 -0
  45. package/lib/features/tooltip.js.map +1 -1
  46. package/lib/features/tree.d.ts +2 -0
  47. package/lib/features/tree.js.map +1 -1
  48. package/lib/features/undo-redo.d.ts +2 -0
  49. package/lib/features/undo-redo.js.map +1 -1
  50. package/lib/features/visibility.d.ts +2 -0
  51. package/lib/features/visibility.js.map +1 -1
  52. package/lib/plugins/clipboard/ClipboardPlugin.d.ts +1 -1
  53. package/lib/plugins/clipboard/index.js +1 -1
  54. package/lib/plugins/clipboard/index.js.map +1 -1
  55. package/lib/plugins/column-virtualization/index.js.map +1 -1
  56. package/lib/plugins/context-menu/index.js.map +1 -1
  57. package/lib/plugins/editing/index.js +1 -1
  58. package/lib/plugins/editing/index.js.map +1 -1
  59. package/lib/plugins/export/index.js.map +1 -1
  60. package/lib/plugins/filtering/index.js.map +1 -1
  61. package/lib/plugins/grouping-columns/index.js.map +1 -1
  62. package/lib/plugins/grouping-rows/index.js.map +1 -1
  63. package/lib/plugins/master-detail/index.js.map +1 -1
  64. package/lib/plugins/multi-sort/index.js.map +1 -1
  65. package/lib/plugins/pinned-columns/index.js.map +1 -1
  66. package/lib/plugins/pinned-rows/index.js.map +1 -1
  67. package/lib/plugins/pivot/index.js.map +1 -1
  68. package/lib/plugins/print/index.js.map +1 -1
  69. package/lib/plugins/reorder-columns/index.js.map +1 -1
  70. package/lib/plugins/reorder-rows/index.js.map +1 -1
  71. package/lib/plugins/responsive/index.js.map +1 -1
  72. package/lib/plugins/selection/index.js.map +1 -1
  73. package/lib/plugins/server-side/index.js.map +1 -1
  74. package/lib/plugins/tooltip/index.js.map +1 -1
  75. package/lib/plugins/tree/index.js.map +1 -1
  76. package/lib/plugins/undo-redo/index.js.map +1 -1
  77. package/lib/plugins/visibility/index.js.map +1 -1
  78. package/package.json +1 -1
  79. package/umd/grid.all.umd.js +1 -1
  80. package/umd/grid.all.umd.js.map +1 -1
  81. package/umd/grid.umd.js +1 -1
  82. package/umd/grid.umd.js.map +1 -1
  83. package/umd/plugins/clipboard.umd.js +1 -1
  84. package/umd/plugins/clipboard.umd.js.map +1 -1
  85. package/umd/plugins/editing.umd.js +1 -1
  86. package/umd/plugins/editing.umd.js.map +1 -1
@@ -1925,6 +1925,12 @@ export interface PluginNameMap {
1925
1925
  * ```
1926
1926
  */
1927
1927
  export interface FeatureConfig<TRow = unknown> {
1928
+ /**
1929
+ * @internal Sentinel property that makes the interface non-empty so TypeScript's
1930
+ * excess-property checking rejects unknown feature keys in object literals.
1931
+ * Not assignable at runtime (type is `never`).
1932
+ */
1933
+ __brand?: never;
1928
1934
  }
1929
1935
  /**
1930
1936
  * Grid configuration object - the **single source of truth** for grid behavior.
@@ -5,3 +5,5 @@ declare module '../core/types' {
5
5
  clipboard?: boolean | ClipboardConfig;
6
6
  }
7
7
  }
8
+ /** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */
9
+ export type _Augmentation = true;
@@ -1 +1 @@
1
- {"version":3,"file":"clipboard.js","sources":["../../../../../libs/grid/src/lib/features/clipboard.ts"],"sourcesContent":["/**\n * Clipboard feature for @toolbox-web/grid\n *\n * Requires the selection feature to be enabled.\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/selection';\n * import '@toolbox-web/grid/features/clipboard';\n *\n * grid.gridConfig = { features: { selection: 'range', clipboard: true } };\n * ```\n */\n\nimport { ClipboardPlugin, type ClipboardConfig } from '../plugins/clipboard';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable clipboard copy/paste. Requires selection. */\n clipboard?: boolean | ClipboardConfig;\n }\n}\n\nregisterFeature('clipboard', (config) => {\n const options = typeof config === 'boolean' ? {} : ((config as ClipboardConfig) ?? {});\n return new ClipboardPlugin(options);\n});\n"],"names":["registerFeature","config","ClipboardPlugin"],"mappings":"4IAwBAA,EAAgB,YAAcC,GAErB,IAAIC,EADuB,kBAAXD,EAAuB,CAAA,EAAOA,GAA8B,CAAA"}
1
+ {"version":3,"file":"clipboard.js","sources":["../../../../../libs/grid/src/lib/features/clipboard.ts"],"sourcesContent":["/**\n * Clipboard feature for @toolbox-web/grid\n *\n * Requires the selection feature to be enabled.\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/selection';\n * import '@toolbox-web/grid/features/clipboard';\n *\n * grid.gridConfig = { features: { selection: 'range', clipboard: true } };\n * ```\n */\n\nimport { ClipboardPlugin, type ClipboardConfig } from '../plugins/clipboard';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable clipboard copy/paste. Requires selection. */\n clipboard?: boolean | ClipboardConfig;\n }\n}\n\nregisterFeature('clipboard', (config) => {\n const options = typeof config === 'boolean' ? {} : ((config as ClipboardConfig) ?? {});\n return new ClipboardPlugin(options);\n});\n\n/** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */\nexport type _Augmentation = true;\n"],"names":["registerFeature","config","ClipboardPlugin"],"mappings":"4IAwBAA,EAAgB,YAAcC,GAErB,IAAIC,EADuB,kBAAXD,EAAuB,CAAA,EAAOA,GAA8B,CAAA"}
@@ -5,3 +5,5 @@ declare module '../core/types' {
5
5
  columnVirtualization?: boolean | ColumnVirtualizationConfig;
6
6
  }
7
7
  }
8
+ /** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */
9
+ export type _Augmentation = true;
@@ -1 +1 @@
1
- {"version":3,"file":"column-virtualization.js","sources":["../../../../../libs/grid/src/lib/features/column-virtualization.ts"],"sourcesContent":["/**\n * Column Virtualization feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/column-virtualization';\n *\n * grid.gridConfig = { features: { columnVirtualization: true } };\n * ```\n */\n\nimport {\n ColumnVirtualizationPlugin,\n type ColumnVirtualizationConfig,\n} from '../plugins/column-virtualization';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable horizontal column virtualization. */\n columnVirtualization?: boolean | ColumnVirtualizationConfig;\n }\n}\n\nregisterFeature('columnVirtualization', (config) => {\n const options = typeof config === 'boolean' ? {} : ((config as ColumnVirtualizationConfig) ?? {});\n return new ColumnVirtualizationPlugin(options);\n});\n"],"names":["registerFeature","config","ColumnVirtualizationPlugin"],"mappings":"mKAwBAA,EAAgB,uBAAyBC,GAEhC,IAAIC,EADuB,kBAAXD,EAAuB,CAAA,EAAOA,GAAyC,CAAA"}
1
+ {"version":3,"file":"column-virtualization.js","sources":["../../../../../libs/grid/src/lib/features/column-virtualization.ts"],"sourcesContent":["/**\n * Column Virtualization feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/column-virtualization';\n *\n * grid.gridConfig = { features: { columnVirtualization: true } };\n * ```\n */\n\nimport {\n ColumnVirtualizationPlugin,\n type ColumnVirtualizationConfig,\n} from '../plugins/column-virtualization';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable horizontal column virtualization. */\n columnVirtualization?: boolean | ColumnVirtualizationConfig;\n }\n}\n\nregisterFeature('columnVirtualization', (config) => {\n const options = typeof config === 'boolean' ? {} : ((config as ColumnVirtualizationConfig) ?? {});\n return new ColumnVirtualizationPlugin(options);\n});\n\n/** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */\nexport type _Augmentation = true;\n"],"names":["registerFeature","config","ColumnVirtualizationPlugin"],"mappings":"mKAwBAA,EAAgB,uBAAyBC,GAEhC,IAAIC,EADuB,kBAAXD,EAAuB,CAAA,EAAOA,GAAyC,CAAA"}
@@ -5,3 +5,5 @@ declare module '../core/types' {
5
5
  contextMenu?: boolean | ContextMenuConfig;
6
6
  }
7
7
  }
8
+ /** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */
9
+ export type _Augmentation = true;
@@ -1 +1 @@
1
- {"version":3,"file":"context-menu.js","sources":["../../../../../libs/grid/src/lib/features/context-menu.ts"],"sourcesContent":["/**\n * Context Menu feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/context-menu';\n *\n * grid.gridConfig = { features: { contextMenu: true } };\n * ```\n */\n\nimport { ContextMenuPlugin, type ContextMenuConfig } from '../plugins/context-menu';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable right-click context menu. */\n contextMenu?: boolean | ContextMenuConfig;\n }\n}\n\nregisterFeature('contextMenu', (config) => {\n const options = typeof config === 'boolean' ? {} : ((config as ContextMenuConfig) ?? {});\n return new ContextMenuPlugin(options);\n});\n"],"names":["registerFeature","config","ContextMenuPlugin"],"mappings":"iJAqBAA,EAAgB,cAAgBC,GAEvB,IAAIC,EADuB,kBAAXD,EAAuB,CAAA,EAAOA,GAAgC,CAAA"}
1
+ {"version":3,"file":"context-menu.js","sources":["../../../../../libs/grid/src/lib/features/context-menu.ts"],"sourcesContent":["/**\n * Context Menu feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/context-menu';\n *\n * grid.gridConfig = { features: { contextMenu: true } };\n * ```\n */\n\nimport { ContextMenuPlugin, type ContextMenuConfig } from '../plugins/context-menu';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable right-click context menu. */\n contextMenu?: boolean | ContextMenuConfig;\n }\n}\n\nregisterFeature('contextMenu', (config) => {\n const options = typeof config === 'boolean' ? {} : ((config as ContextMenuConfig) ?? {});\n return new ContextMenuPlugin(options);\n});\n\n/** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */\nexport type _Augmentation = true;\n"],"names":["registerFeature","config","ContextMenuPlugin"],"mappings":"iJAqBAA,EAAgB,cAAgBC,GAEvB,IAAIC,EADuB,kBAAXD,EAAuB,CAAA,EAAOA,GAAgC,CAAA"}
@@ -5,3 +5,5 @@ declare module '../core/types' {
5
5
  editing?: boolean | 'click' | 'dblclick' | 'manual' | EditingConfig;
6
6
  }
7
7
  }
8
+ /** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */
9
+ export type _Augmentation = true;
@@ -1 +1 @@
1
- {"version":3,"file":"editing.js","sources":["../../../../../libs/grid/src/lib/features/editing.ts"],"sourcesContent":["/**\n * Editing feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/editing';\n *\n * grid.gridConfig = { features: { editing: 'dblclick' } };\n * ```\n */\n\nimport { EditingPlugin, type EditingConfig } from '../plugins/editing';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable inline cell editing. */\n editing?: boolean | 'click' | 'dblclick' | 'manual' | EditingConfig;\n }\n}\n\nregisterFeature('editing', (config) => {\n if (config === true) {\n return new EditingPlugin({ editOn: 'dblclick' });\n }\n if (config === 'click' || config === 'dblclick' || config === 'manual') {\n return new EditingPlugin({ editOn: config });\n }\n return new EditingPlugin((config as EditingConfig) ?? undefined);\n});\n"],"names":["registerFeature","config","EditingPlugin","editOn"],"mappings":"wIAqBAA,EAAgB,UAAYC,GAEjB,IAAIC,GADE,IAAXD,EACuB,CAAEE,OAAQ,YAEtB,UAAXF,GAAiC,aAAXA,GAAoC,WAAXA,EACxB,CAAEE,OAAQF,GAEXA,QAA4B"}
1
+ {"version":3,"file":"editing.js","sources":["../../../../../libs/grid/src/lib/features/editing.ts"],"sourcesContent":["/**\n * Editing feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/editing';\n *\n * grid.gridConfig = { features: { editing: 'dblclick' } };\n * ```\n */\n\nimport { EditingPlugin, type EditingConfig } from '../plugins/editing';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable inline cell editing. */\n editing?: boolean | 'click' | 'dblclick' | 'manual' | EditingConfig;\n }\n}\n\nregisterFeature('editing', (config) => {\n if (config === true) {\n return new EditingPlugin({ editOn: 'dblclick' });\n }\n if (config === 'click' || config === 'dblclick' || config === 'manual') {\n return new EditingPlugin({ editOn: config });\n }\n return new EditingPlugin((config as EditingConfig) ?? undefined);\n});\n\n/** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */\nexport type _Augmentation = true;\n"],"names":["registerFeature","config","EditingPlugin","editOn"],"mappings":"wIAqBAA,EAAgB,UAAYC,GAEjB,IAAIC,GADE,IAAXD,EACuB,CAAEE,OAAQ,YAEtB,UAAXF,GAAiC,aAAXA,GAAoC,WAAXA,EACxB,CAAEE,OAAQF,GAEXA,QAA4B"}
@@ -5,3 +5,5 @@ declare module '../core/types' {
5
5
  export?: boolean | ExportConfig;
6
6
  }
7
7
  }
8
+ /** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */
9
+ export type _Augmentation = true;
@@ -1 +1 @@
1
- {"version":3,"file":"export.js","sources":["../../../../../libs/grid/src/lib/features/export.ts"],"sourcesContent":["/**\n * Export feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/export';\n *\n * grid.gridConfig = { features: { export: true } };\n * ```\n */\n\nimport { ExportPlugin, type ExportConfig } from '../plugins/export';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable data export (CSV, Excel, etc.). */\n export?: boolean | ExportConfig;\n }\n}\n\nregisterFeature('export', (config) => {\n const options = typeof config === 'boolean' ? {} : ((config as ExportConfig) ?? {});\n return new ExportPlugin(options);\n});\n"],"names":["registerFeature","config","ExportPlugin"],"mappings":"sIAqBAA,EAAgB,SAAWC,GAElB,IAAIC,EADuB,kBAAXD,EAAuB,CAAA,EAAOA,GAA2B,CAAA"}
1
+ {"version":3,"file":"export.js","sources":["../../../../../libs/grid/src/lib/features/export.ts"],"sourcesContent":["/**\n * Export feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/export';\n *\n * grid.gridConfig = { features: { export: true } };\n * ```\n */\n\nimport { ExportPlugin, type ExportConfig } from '../plugins/export';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable data export (CSV, Excel, etc.). */\n export?: boolean | ExportConfig;\n }\n}\n\nregisterFeature('export', (config) => {\n const options = typeof config === 'boolean' ? {} : ((config as ExportConfig) ?? {});\n return new ExportPlugin(options);\n});\n\n/** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */\nexport type _Augmentation = true;\n"],"names":["registerFeature","config","ExportPlugin"],"mappings":"sIAqBAA,EAAgB,SAAWC,GAElB,IAAIC,EADuB,kBAAXD,EAAuB,CAAA,EAAOA,GAA2B,CAAA"}
@@ -5,3 +5,5 @@ declare module '../core/types' {
5
5
  filtering?: boolean | FilterConfig<TRow>;
6
6
  }
7
7
  }
8
+ /** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */
9
+ export type _Augmentation = true;
@@ -1 +1 @@
1
- {"version":3,"file":"filtering.js","sources":["../../../../../libs/grid/src/lib/features/filtering.ts"],"sourcesContent":["/**\n * Filtering feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/filtering';\n *\n * grid.gridConfig = { features: { filtering: { debounceMs: 200 } } };\n * ```\n */\n\nimport { FilteringPlugin, type FilterConfig } from '../plugins/filtering';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig<TRow> {\n /** Enable column filtering. */\n filtering?: boolean | FilterConfig<TRow>;\n }\n}\n\nregisterFeature('filtering', (config) => {\n if (typeof config === 'boolean') return new FilteringPlugin();\n return new FilteringPlugin((config as FilterConfig) ?? undefined);\n});\n"],"names":["registerFeature","config","FilteringPlugin"],"mappings":"4IAqBAA,EAAgB,YAAcC,GACN,kBAAXA,EAA6B,IAAIC,EACrC,IAAIA,EAAiBD,QAA2B"}
1
+ {"version":3,"file":"filtering.js","sources":["../../../../../libs/grid/src/lib/features/filtering.ts"],"sourcesContent":["/**\n * Filtering feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/filtering';\n *\n * grid.gridConfig = { features: { filtering: { debounceMs: 200 } } };\n * ```\n */\n\nimport { FilteringPlugin, type FilterConfig } from '../plugins/filtering';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig<TRow> {\n /** Enable column filtering. */\n filtering?: boolean | FilterConfig<TRow>;\n }\n}\n\nregisterFeature('filtering', (config) => {\n if (typeof config === 'boolean') return new FilteringPlugin();\n return new FilteringPlugin((config as FilterConfig) ?? undefined);\n});\n\n/** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */\nexport type _Augmentation = true;\n"],"names":["registerFeature","config","FilteringPlugin"],"mappings":"4IAqBAA,EAAgB,YAAcC,GACN,kBAAXA,EAA6B,IAAIC,EACrC,IAAIA,EAAiBD,QAA2B"}
@@ -5,3 +5,5 @@ declare module '../core/types' {
5
5
  groupingColumns?: boolean | GroupingColumnsConfig;
6
6
  }
7
7
  }
8
+ /** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */
9
+ export type _Augmentation = true;
@@ -1 +1 @@
1
- {"version":3,"file":"grouping-columns.js","sources":["../../../../../libs/grid/src/lib/features/grouping-columns.ts"],"sourcesContent":["/**\n * Column Grouping feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/grouping-columns';\n *\n * grid.gridConfig = { features: { groupingColumns: true } };\n * ```\n */\n\nimport { GroupingColumnsPlugin, type GroupingColumnsConfig } from '../plugins/grouping-columns';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable column grouping headers. */\n groupingColumns?: boolean | GroupingColumnsConfig;\n }\n}\n\nregisterFeature('groupingColumns', (config) => {\n const options = typeof config === 'boolean' ? {} : ((config as GroupingColumnsConfig) ?? {});\n return new GroupingColumnsPlugin(options);\n});\n"],"names":["registerFeature","config","GroupingColumnsPlugin"],"mappings":"yJAqBAA,EAAgB,kBAAoBC,GAE3B,IAAIC,EADuB,kBAAXD,EAAuB,CAAA,EAAOA,GAAoC,CAAA"}
1
+ {"version":3,"file":"grouping-columns.js","sources":["../../../../../libs/grid/src/lib/features/grouping-columns.ts"],"sourcesContent":["/**\n * Column Grouping feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/grouping-columns';\n *\n * grid.gridConfig = { features: { groupingColumns: true } };\n * ```\n */\n\nimport { GroupingColumnsPlugin, type GroupingColumnsConfig } from '../plugins/grouping-columns';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable column grouping headers. */\n groupingColumns?: boolean | GroupingColumnsConfig;\n }\n}\n\nregisterFeature('groupingColumns', (config) => {\n const options = typeof config === 'boolean' ? {} : ((config as GroupingColumnsConfig) ?? {});\n return new GroupingColumnsPlugin(options);\n});\n\n/** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */\nexport type _Augmentation = true;\n"],"names":["registerFeature","config","GroupingColumnsPlugin"],"mappings":"yJAqBAA,EAAgB,kBAAoBC,GAE3B,IAAIC,EADuB,kBAAXD,EAAuB,CAAA,EAAOA,GAAoC,CAAA"}
@@ -5,3 +5,5 @@ declare module '../core/types' {
5
5
  groupingRows?: GroupingRowsConfig;
6
6
  }
7
7
  }
8
+ /** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */
9
+ export type _Augmentation = true;
@@ -1 +1 @@
1
- {"version":3,"file":"grouping-rows.js","sources":["../../../../../libs/grid/src/lib/features/grouping-rows.ts"],"sourcesContent":["/**\n * Row Grouping feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/grouping-rows';\n *\n * grid.gridConfig = { features: { groupingRows: { groupBy: ['department'] } } };\n * ```\n */\n\nimport { GroupingRowsPlugin, type GroupingRowsConfig } from '../plugins/grouping-rows';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable row grouping with expand/collapse. */\n groupingRows?: GroupingRowsConfig;\n }\n}\n\nregisterFeature('groupingRows', (config) => {\n const options = typeof config === 'boolean' ? {} : ((config as GroupingRowsConfig) ?? {});\n return new GroupingRowsPlugin(options);\n});\n"],"names":["registerFeature","config","GroupingRowsPlugin"],"mappings":"mJAqBAA,EAAgB,eAAiBC,GAExB,IAAIC,EADuB,kBAAXD,EAAuB,CAAA,EAAOA,GAAiC,CAAA"}
1
+ {"version":3,"file":"grouping-rows.js","sources":["../../../../../libs/grid/src/lib/features/grouping-rows.ts"],"sourcesContent":["/**\n * Row Grouping feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/grouping-rows';\n *\n * grid.gridConfig = { features: { groupingRows: { groupBy: ['department'] } } };\n * ```\n */\n\nimport { GroupingRowsPlugin, type GroupingRowsConfig } from '../plugins/grouping-rows';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable row grouping with expand/collapse. */\n groupingRows?: GroupingRowsConfig;\n }\n}\n\nregisterFeature('groupingRows', (config) => {\n const options = typeof config === 'boolean' ? {} : ((config as GroupingRowsConfig) ?? {});\n return new GroupingRowsPlugin(options);\n});\n\n/** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */\nexport type _Augmentation = true;\n"],"names":["registerFeature","config","GroupingRowsPlugin"],"mappings":"mJAqBAA,EAAgB,eAAiBC,GAExB,IAAIC,EADuB,kBAAXD,EAAuB,CAAA,EAAOA,GAAiC,CAAA"}
@@ -5,3 +5,5 @@ declare module '../core/types' {
5
5
  masterDetail?: MasterDetailConfig;
6
6
  }
7
7
  }
8
+ /** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */
9
+ export type _Augmentation = true;
@@ -1 +1 @@
1
- {"version":3,"file":"master-detail.js","sources":["../../../../../libs/grid/src/lib/features/master-detail.ts"],"sourcesContent":["/**\n * Master-Detail feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/master-detail';\n *\n * grid.gridConfig = { features: { masterDetail: { detailRenderer: (row) => `<div>...</div>` } } };\n * ```\n */\n\nimport { MasterDetailPlugin, type MasterDetailConfig } from '../plugins/master-detail';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable master-detail rows with expandable detail panels. */\n masterDetail?: MasterDetailConfig;\n }\n}\n\nregisterFeature('masterDetail', (config) => {\n const options = typeof config === 'boolean' ? {} : ((config as MasterDetailConfig) ?? {});\n return new MasterDetailPlugin(options);\n});\n"],"names":["registerFeature","config","MasterDetailPlugin"],"mappings":"mJAqBAA,EAAgB,eAAiBC,GAExB,IAAIC,EADuB,kBAAXD,EAAuB,CAAA,EAAOA,GAAiC,CAAA"}
1
+ {"version":3,"file":"master-detail.js","sources":["../../../../../libs/grid/src/lib/features/master-detail.ts"],"sourcesContent":["/**\n * Master-Detail feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/master-detail';\n *\n * grid.gridConfig = { features: { masterDetail: { detailRenderer: (row) => `<div>...</div>` } } };\n * ```\n */\n\nimport { MasterDetailPlugin, type MasterDetailConfig } from '../plugins/master-detail';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable master-detail rows with expandable detail panels. */\n masterDetail?: MasterDetailConfig;\n }\n}\n\nregisterFeature('masterDetail', (config) => {\n const options = typeof config === 'boolean' ? {} : ((config as MasterDetailConfig) ?? {});\n return new MasterDetailPlugin(options);\n});\n\n/** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */\nexport type _Augmentation = true;\n"],"names":["registerFeature","config","MasterDetailPlugin"],"mappings":"mJAqBAA,EAAgB,eAAiBC,GAExB,IAAIC,EADuB,kBAAXD,EAAuB,CAAA,EAAOA,GAAiC,CAAA"}
@@ -7,3 +7,5 @@ declare module '../core/types' {
7
7
  sorting?: boolean | 'single' | 'multi' | MultiSortConfig;
8
8
  }
9
9
  }
10
+ /** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */
11
+ export type _Augmentation = true;
@@ -1 +1 @@
1
- {"version":3,"file":"multi-sort.js","sources":["../../../../../libs/grid/src/lib/features/multi-sort.ts"],"sourcesContent":["/**\n * Multi-sort feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/multi-sort';\n *\n * grid.gridConfig = { features: { multiSort: true } };\n * ```\n */\n\nimport { MultiSortPlugin, type MultiSortConfig } from '../plugins/multi-sort';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable multi-column sorting. */\n multiSort?: boolean | 'single' | 'multi' | MultiSortConfig;\n /** @deprecated Use `multiSort` instead. Will be removed in v2.*/\n sorting?: boolean | 'single' | 'multi' | MultiSortConfig;\n }\n}\n\nregisterFeature('multiSort', (config) => {\n if (config === true || config === 'multi') {\n return new MultiSortPlugin();\n }\n if (config === 'single') {\n return new MultiSortPlugin({ maxSortColumns: 1 });\n }\n return new MultiSortPlugin(config as MultiSortConfig);\n});\n"],"names":["registerFeature","config","MultiSortPlugin","maxSortColumns"],"mappings":"6IAuBAA,EAAgB,YAAcC,IACb,IAAXA,GAA8B,UAAXA,EACd,IAAIC,EAGJ,IAAIA,EADE,WAAXD,EACyB,CAAEE,eAAgB,GAEpBF"}
1
+ {"version":3,"file":"multi-sort.js","sources":["../../../../../libs/grid/src/lib/features/multi-sort.ts"],"sourcesContent":["/**\n * Multi-sort feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/multi-sort';\n *\n * grid.gridConfig = { features: { multiSort: true } };\n * ```\n */\n\nimport { MultiSortPlugin, type MultiSortConfig } from '../plugins/multi-sort';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable multi-column sorting. */\n multiSort?: boolean | 'single' | 'multi' | MultiSortConfig;\n /** @deprecated Use `multiSort` instead. Will be removed in v2.*/\n sorting?: boolean | 'single' | 'multi' | MultiSortConfig;\n }\n}\n\nregisterFeature('multiSort', (config) => {\n if (config === true || config === 'multi') {\n return new MultiSortPlugin();\n }\n if (config === 'single') {\n return new MultiSortPlugin({ maxSortColumns: 1 });\n }\n return new MultiSortPlugin(config as MultiSortConfig);\n});\n\n/** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */\nexport type _Augmentation = true;\n"],"names":["registerFeature","config","MultiSortPlugin","maxSortColumns"],"mappings":"6IAuBAA,EAAgB,YAAcC,IACb,IAAXA,GAA8B,UAAXA,EACd,IAAIC,EAGJ,IAAIA,EADE,WAAXD,EACyB,CAAEE,eAAgB,GAEpBF"}
@@ -14,4 +14,5 @@ declare module '../core/types' {
14
14
  pinnedColumns?: boolean;
15
15
  }
16
16
  }
17
- export {};
17
+ /** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */
18
+ export type _Augmentation = true;
@@ -1 +1 @@
1
- {"version":3,"file":"pinned-columns.js","sources":["../../../../../libs/grid/src/lib/features/pinned-columns.ts"],"sourcesContent":["/**\n * Pinned Columns feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/pinned-columns';\n *\n * grid.gridConfig = { features: { pinnedColumns: true } };\n * ```\n */\n\nimport { PinnedColumnsPlugin } from '../plugins/pinned-columns';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable column pinning (left/right). */\n pinnedColumns?: boolean;\n }\n}\n\nregisterFeature('pinnedColumns', (config) => {\n return new PinnedColumnsPlugin();\n});\n"],"names":["registerFeature","config","PinnedColumnsPlugin"],"mappings":"qJAqBAA,EAAgB,gBAAkBC,GACzB,IAAIC"}
1
+ {"version":3,"file":"pinned-columns.js","sources":["../../../../../libs/grid/src/lib/features/pinned-columns.ts"],"sourcesContent":["/**\n * Pinned Columns feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/pinned-columns';\n *\n * grid.gridConfig = { features: { pinnedColumns: true } };\n * ```\n */\n\nimport { PinnedColumnsPlugin } from '../plugins/pinned-columns';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable column pinning (left/right). */\n pinnedColumns?: boolean;\n }\n}\n\nregisterFeature('pinnedColumns', (config) => {\n return new PinnedColumnsPlugin();\n});\n\n/** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */\nexport type _Augmentation = true;\n"],"names":["registerFeature","config","PinnedColumnsPlugin"],"mappings":"qJAqBAA,EAAgB,gBAAkBC,GACzB,IAAIC"}
@@ -5,3 +5,5 @@ declare module '../core/types' {
5
5
  pinnedRows?: boolean | PinnedRowsConfig;
6
6
  }
7
7
  }
8
+ /** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */
9
+ export type _Augmentation = true;
@@ -1 +1 @@
1
- {"version":3,"file":"pinned-rows.js","sources":["../../../../../libs/grid/src/lib/features/pinned-rows.ts"],"sourcesContent":["/**\n * Pinned Rows feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/pinned-rows';\n *\n * grid.gridConfig = { features: { pinnedRows: true } };\n * ```\n */\n\nimport { PinnedRowsPlugin, type PinnedRowsConfig } from '../plugins/pinned-rows';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable pinned (frozen) rows at top/bottom of the grid. */\n pinnedRows?: boolean | PinnedRowsConfig;\n }\n}\n\nregisterFeature('pinnedRows', (config) => {\n const options = typeof config === 'boolean' ? {} : ((config as PinnedRowsConfig) ?? {});\n return new PinnedRowsPlugin(options);\n});\n"],"names":["registerFeature","config","PinnedRowsPlugin"],"mappings":"+IAqBAA,EAAgB,aAAeC,GAEtB,IAAIC,EADuB,kBAAXD,EAAuB,CAAA,EAAOA,GAA+B,CAAA"}
1
+ {"version":3,"file":"pinned-rows.js","sources":["../../../../../libs/grid/src/lib/features/pinned-rows.ts"],"sourcesContent":["/**\n * Pinned Rows feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/pinned-rows';\n *\n * grid.gridConfig = { features: { pinnedRows: true } };\n * ```\n */\n\nimport { PinnedRowsPlugin, type PinnedRowsConfig } from '../plugins/pinned-rows';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable pinned (frozen) rows at top/bottom of the grid. */\n pinnedRows?: boolean | PinnedRowsConfig;\n }\n}\n\nregisterFeature('pinnedRows', (config) => {\n const options = typeof config === 'boolean' ? {} : ((config as PinnedRowsConfig) ?? {});\n return new PinnedRowsPlugin(options);\n});\n\n/** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */\nexport type _Augmentation = true;\n"],"names":["registerFeature","config","PinnedRowsPlugin"],"mappings":"+IAqBAA,EAAgB,aAAeC,GAEtB,IAAIC,EADuB,kBAAXD,EAAuB,CAAA,EAAOA,GAA+B,CAAA"}
@@ -5,3 +5,5 @@ declare module '../core/types' {
5
5
  pivot?: PivotConfig;
6
6
  }
7
7
  }
8
+ /** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */
9
+ export type _Augmentation = true;
@@ -1 +1 @@
1
- {"version":3,"file":"pivot.js","sources":["../../../../../libs/grid/src/lib/features/pivot.ts"],"sourcesContent":["/**\n * Pivot feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/pivot';\n *\n * grid.gridConfig = { features: { pivot: { rowFields: ['region'], colFields: ['year'] } } };\n * ```\n */\n\nimport { PivotPlugin, type PivotConfig } from '../plugins/pivot';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable pivot table mode. */\n pivot?: PivotConfig;\n }\n}\n\nregisterFeature('pivot', (config) => {\n return new PivotPlugin((config as PivotConfig) ?? undefined);\n});\n"],"names":["registerFeature","config","PivotPlugin"],"mappings":"oIAqBAA,EAAgB,QAAUC,GACjB,IAAIC,EAAaD,QAA0B"}
1
+ {"version":3,"file":"pivot.js","sources":["../../../../../libs/grid/src/lib/features/pivot.ts"],"sourcesContent":["/**\n * Pivot feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/pivot';\n *\n * grid.gridConfig = { features: { pivot: { rowFields: ['region'], colFields: ['year'] } } };\n * ```\n */\n\nimport { PivotPlugin, type PivotConfig } from '../plugins/pivot';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable pivot table mode. */\n pivot?: PivotConfig;\n }\n}\n\nregisterFeature('pivot', (config) => {\n return new PivotPlugin((config as PivotConfig) ?? undefined);\n});\n\n/** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */\nexport type _Augmentation = true;\n"],"names":["registerFeature","config","PivotPlugin"],"mappings":"oIAqBAA,EAAgB,QAAUC,GACjB,IAAIC,EAAaD,QAA0B"}
@@ -5,3 +5,5 @@ declare module '../core/types' {
5
5
  print?: boolean | PrintConfig;
6
6
  }
7
7
  }
8
+ /** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */
9
+ export type _Augmentation = true;
@@ -1 +1 @@
1
- {"version":3,"file":"print.js","sources":["../../../../../libs/grid/src/lib/features/print.ts"],"sourcesContent":["/**\n * Print feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/print';\n *\n * grid.gridConfig = { features: { print: true } };\n * ```\n */\n\nimport { PrintPlugin, type PrintConfig } from '../plugins/print';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable print support with configurable layout. */\n print?: boolean | PrintConfig;\n }\n}\n\nregisterFeature('print', (config) => {\n if (config === true) return new PrintPlugin();\n return new PrintPlugin((config as PrintConfig) ?? undefined);\n});\n"],"names":["registerFeature","config","PrintPlugin"],"mappings":"oIAqBAA,EAAgB,QAAUC,IACT,IAAXA,EAAwB,IAAIC,EACzB,IAAIA,EAAaD,QAA0B"}
1
+ {"version":3,"file":"print.js","sources":["../../../../../libs/grid/src/lib/features/print.ts"],"sourcesContent":["/**\n * Print feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/print';\n *\n * grid.gridConfig = { features: { print: true } };\n * ```\n */\n\nimport { PrintPlugin, type PrintConfig } from '../plugins/print';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable print support with configurable layout. */\n print?: boolean | PrintConfig;\n }\n}\n\nregisterFeature('print', (config) => {\n if (config === true) return new PrintPlugin();\n return new PrintPlugin((config as PrintConfig) ?? undefined);\n});\n\n/** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */\nexport type _Augmentation = true;\n"],"names":["registerFeature","config","PrintPlugin"],"mappings":"oIAqBAA,EAAgB,QAAUC,IACT,IAAXA,EAAwB,IAAIC,EACzB,IAAIA,EAAaD,QAA0B"}
@@ -7,3 +7,5 @@ declare module '../core/types' {
7
7
  reorder?: boolean | ReorderConfig;
8
8
  }
9
9
  }
10
+ /** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */
11
+ export type _Augmentation = true;
@@ -1 +1 @@
1
- {"version":3,"file":"reorder-columns.js","sources":["../../../../../libs/grid/src/lib/features/reorder-columns.ts"],"sourcesContent":["/**\n * Column Reorder feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/reorder-columns';\n *\n * grid.gridConfig = { features: { reorderColumns: true } };\n * ```\n */\n\nimport { ReorderPlugin, type ReorderConfig } from '../plugins/reorder-columns';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable column drag-to-reorder. */\n reorderColumns?: boolean | ReorderConfig;\n /** @deprecated Use `reorderColumns` instead. Will be removed in v2.*/\n reorder?: boolean | ReorderConfig;\n }\n}\n\nconst factory = (config: unknown) => {\n const options = typeof config === 'boolean' ? {} : ((config as ReorderConfig) ?? {});\n return new ReorderPlugin(options);\n};\n\nregisterFeature('reorderColumns', factory);\nregisterFeature('reorder', factory);\n"],"names":["factory","config","ReorderPlugin","registerFeature"],"mappings":"gJAuBA,MAAMA,EAAWC,GAER,IAAIC,EADuB,kBAAXD,EAAuB,CAAA,EAAOA,GAA4B,CAAA,GAInFE,EAAgB,iBAAkBH,GAClCG,EAAgB,UAAWH"}
1
+ {"version":3,"file":"reorder-columns.js","sources":["../../../../../libs/grid/src/lib/features/reorder-columns.ts"],"sourcesContent":["/**\n * Column Reorder feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/reorder-columns';\n *\n * grid.gridConfig = { features: { reorderColumns: true } };\n * ```\n */\n\nimport { ReorderPlugin, type ReorderConfig } from '../plugins/reorder-columns';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable column drag-to-reorder. */\n reorderColumns?: boolean | ReorderConfig;\n /** @deprecated Use `reorderColumns` instead. Will be removed in v2.*/\n reorder?: boolean | ReorderConfig;\n }\n}\n\nconst factory = (config: unknown) => {\n const options = typeof config === 'boolean' ? {} : ((config as ReorderConfig) ?? {});\n return new ReorderPlugin(options);\n};\n\nregisterFeature('reorderColumns', factory);\nregisterFeature('reorder', factory);\n\n/** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */\nexport type _Augmentation = true;\n"],"names":["factory","config","ReorderPlugin","registerFeature"],"mappings":"gJAuBA,MAAMA,EAAWC,GAER,IAAIC,EADuB,kBAAXD,EAAuB,CAAA,EAAOA,GAA4B,CAAA,GAInFE,EAAgB,iBAAkBH,GAClCG,EAAgB,UAAWH"}
@@ -7,3 +7,5 @@ declare module '../core/types' {
7
7
  rowReorder?: boolean | RowReorderConfig;
8
8
  }
9
9
  }
10
+ /** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */
11
+ export type _Augmentation = true;
@@ -1 +1 @@
1
- {"version":3,"file":"reorder-rows.js","sources":["../../../../../libs/grid/src/lib/features/reorder-rows.ts"],"sourcesContent":["/**\n * Row Reorder feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/reorder-rows';\n *\n * grid.gridConfig = { features: { reorderRows: true } };\n * ```\n */\n\nimport { RowReorderPlugin, type RowReorderConfig } from '../plugins/reorder-rows';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable row drag-to-reorder. */\n reorderRows?: boolean | RowReorderConfig;\n /** @deprecated Use `reorderRows` instead. Will be removed in v2.*/\n rowReorder?: boolean | RowReorderConfig;\n }\n}\n\nconst factory = (config: unknown) => {\n if (config === true) {\n return new RowReorderPlugin();\n }\n return new RowReorderPlugin((config as RowReorderConfig) ?? undefined);\n};\n\nregisterFeature('reorderRows', factory);\nregisterFeature('rowReorder', factory);\n"],"names":["factory","config","RowReorderPlugin","registerFeature"],"mappings":"gJAuBA,MAAMA,EAAWC,IACA,IAAXA,EACK,IAAIC,EAEN,IAAIA,EAAkBD,QAA+B,GAG9DE,EAAgB,cAAeH,GAC/BG,EAAgB,aAAcH"}
1
+ {"version":3,"file":"reorder-rows.js","sources":["../../../../../libs/grid/src/lib/features/reorder-rows.ts"],"sourcesContent":["/**\n * Row Reorder feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/reorder-rows';\n *\n * grid.gridConfig = { features: { reorderRows: true } };\n * ```\n */\n\nimport { RowReorderPlugin, type RowReorderConfig } from '../plugins/reorder-rows';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable row drag-to-reorder. */\n reorderRows?: boolean | RowReorderConfig;\n /** @deprecated Use `reorderRows` instead. Will be removed in v2.*/\n rowReorder?: boolean | RowReorderConfig;\n }\n}\n\nconst factory = (config: unknown) => {\n if (config === true) {\n return new RowReorderPlugin();\n }\n return new RowReorderPlugin((config as RowReorderConfig) ?? undefined);\n};\n\nregisterFeature('reorderRows', factory);\nregisterFeature('rowReorder', factory);\n\n/** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */\nexport type _Augmentation = true;\n"],"names":["factory","config","RowReorderPlugin","registerFeature"],"mappings":"gJAuBA,MAAMA,EAAWC,IACA,IAAXA,EACK,IAAIC,EAEN,IAAIA,EAAkBD,QAA+B,GAG9DE,EAAgB,cAAeH,GAC/BG,EAAgB,aAAcH"}
@@ -5,3 +5,5 @@ declare module '../core/types' {
5
5
  responsive?: boolean | ResponsivePluginConfig;
6
6
  }
7
7
  }
8
+ /** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */
9
+ export type _Augmentation = true;
@@ -1 +1 @@
1
- {"version":3,"file":"responsive.js","sources":["../../../../../libs/grid/src/lib/features/responsive.ts"],"sourcesContent":["/**\n * Responsive feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/responsive';\n *\n * grid.gridConfig = { features: { responsive: true } };\n * ```\n */\n\nimport { ResponsivePlugin, type ResponsivePluginConfig } from '../plugins/responsive';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable responsive column hiding based on breakpoints. */\n responsive?: boolean | ResponsivePluginConfig;\n }\n}\n\nregisterFeature('responsive', (config) => {\n const options = typeof config === 'boolean' ? {} : ((config as ResponsivePluginConfig) ?? {});\n return new ResponsivePlugin(options);\n});\n"],"names":["registerFeature","config","ResponsivePlugin"],"mappings":"8IAqBAA,EAAgB,aAAeC,GAEtB,IAAIC,EADuB,kBAAXD,EAAuB,CAAA,EAAOA,GAAqC,CAAA"}
1
+ {"version":3,"file":"responsive.js","sources":["../../../../../libs/grid/src/lib/features/responsive.ts"],"sourcesContent":["/**\n * Responsive feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/responsive';\n *\n * grid.gridConfig = { features: { responsive: true } };\n * ```\n */\n\nimport { ResponsivePlugin, type ResponsivePluginConfig } from '../plugins/responsive';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable responsive column hiding based on breakpoints. */\n responsive?: boolean | ResponsivePluginConfig;\n }\n}\n\nregisterFeature('responsive', (config) => {\n const options = typeof config === 'boolean' ? {} : ((config as ResponsivePluginConfig) ?? {});\n return new ResponsivePlugin(options);\n});\n\n/** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */\nexport type _Augmentation = true;\n"],"names":["registerFeature","config","ResponsivePlugin"],"mappings":"8IAqBAA,EAAgB,aAAeC,GAEtB,IAAIC,EADuB,kBAAXD,EAAuB,CAAA,EAAOA,GAAqC,CAAA"}
@@ -5,3 +5,5 @@ declare module '../core/types' {
5
5
  selection?: 'cell' | 'row' | 'range' | SelectionConfig<TRow>;
6
6
  }
7
7
  }
8
+ /** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */
9
+ export type _Augmentation = true;
@@ -1 +1 @@
1
- {"version":3,"file":"selection.js","sources":["../../../../../libs/grid/src/lib/features/selection.ts"],"sourcesContent":["/**\n * Selection feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/selection';\n *\n * grid.gridConfig = { features: { selection: 'range' } };\n * ```\n */\n\nimport { SelectionPlugin, type SelectionConfig } from '../plugins/selection';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig<TRow> {\n /** Enable cell/row/range selection. */\n selection?: 'cell' | 'row' | 'range' | SelectionConfig<TRow>;\n }\n}\n\nregisterFeature('selection', (config) => {\n if (config === 'cell' || config === 'row' || config === 'range') {\n return new SelectionPlugin({ mode: config });\n }\n return new SelectionPlugin(config ?? undefined);\n});\n"],"names":["registerFeature","config","SelectionPlugin","mode"],"mappings":"4IAqBAA,EAAgB,YAAcC,GAEnB,IAAIC,EADE,SAAXD,GAAgC,QAAXA,GAA+B,UAAXA,EAChB,CAAEE,KAAMF,GAEVA,QAAU"}
1
+ {"version":3,"file":"selection.js","sources":["../../../../../libs/grid/src/lib/features/selection.ts"],"sourcesContent":["/**\n * Selection feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/selection';\n *\n * grid.gridConfig = { features: { selection: 'range' } };\n * ```\n */\n\nimport { SelectionPlugin, type SelectionConfig } from '../plugins/selection';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig<TRow> {\n /** Enable cell/row/range selection. */\n selection?: 'cell' | 'row' | 'range' | SelectionConfig<TRow>;\n }\n}\n\nregisterFeature('selection', (config) => {\n if (config === 'cell' || config === 'row' || config === 'range') {\n return new SelectionPlugin({ mode: config });\n }\n return new SelectionPlugin(config ?? undefined);\n});\n\n/** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */\nexport type _Augmentation = true;\n"],"names":["registerFeature","config","SelectionPlugin","mode"],"mappings":"4IAqBAA,EAAgB,YAAcC,GAEnB,IAAIC,EADE,SAAXD,GAAgC,QAAXA,GAA+B,UAAXA,EAChB,CAAEE,KAAMF,GAEVA,QAAU"}
@@ -5,3 +5,5 @@ declare module '../core/types' {
5
5
  serverSide?: ServerSideConfig;
6
6
  }
7
7
  }
8
+ /** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */
9
+ export type _Augmentation = true;
@@ -1 +1 @@
1
- {"version":3,"file":"server-side.js","sources":["../../../../../libs/grid/src/lib/features/server-side.ts"],"sourcesContent":["/**\n * Server-Side feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/server-side';\n *\n * grid.gridConfig = { features: { serverSide: { fetchRows: async (params) => ... } } };\n * ```\n */\n\nimport { ServerSidePlugin, type ServerSideConfig } from '../plugins/server-side';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable server-side data fetching, sorting, filtering, etc. */\n serverSide?: ServerSideConfig;\n }\n}\n\nregisterFeature('serverSide', (config) => {\n return new ServerSidePlugin((config as ServerSideConfig) ?? undefined);\n});\n"],"names":["registerFeature","config","ServerSidePlugin"],"mappings":"+IAqBAA,EAAgB,aAAeC,GACtB,IAAIC,EAAkBD,QAA+B"}
1
+ {"version":3,"file":"server-side.js","sources":["../../../../../libs/grid/src/lib/features/server-side.ts"],"sourcesContent":["/**\n * Server-Side feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/server-side';\n *\n * grid.gridConfig = { features: { serverSide: { fetchRows: async (params) => ... } } };\n * ```\n */\n\nimport { ServerSidePlugin, type ServerSideConfig } from '../plugins/server-side';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable server-side data fetching, sorting, filtering, etc. */\n serverSide?: ServerSideConfig;\n }\n}\n\nregisterFeature('serverSide', (config) => {\n return new ServerSidePlugin((config as ServerSideConfig) ?? undefined);\n});\n\n/** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */\nexport type _Augmentation = true;\n"],"names":["registerFeature","config","ServerSidePlugin"],"mappings":"+IAqBAA,EAAgB,aAAeC,GACtB,IAAIC,EAAkBD,QAA+B"}
@@ -5,3 +5,5 @@ declare module '../core/types' {
5
5
  tooltip?: boolean | TooltipConfig;
6
6
  }
7
7
  }
8
+ /** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */
9
+ export type _Augmentation = true;
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.js","sources":["../../../../../libs/grid/src/lib/features/tooltip.ts"],"sourcesContent":["/**\n * Tooltip feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/tooltip';\n *\n * grid.gridConfig = { features: { tooltip: true } };\n * ```\n */\n\nimport { TooltipPlugin, type TooltipConfig } from '../plugins/tooltip';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable automatic overflow tooltips on headers and cells. */\n tooltip?: boolean | TooltipConfig;\n }\n}\n\nregisterFeature('tooltip', (config) => {\n if (config === true) return new TooltipPlugin();\n return new TooltipPlugin((config as TooltipConfig) ?? undefined);\n});\n"],"names":["registerFeature","config","TooltipPlugin"],"mappings":"wIAqBAA,EAAgB,UAAYC,IACX,IAAXA,EAAwB,IAAIC,EACzB,IAAIA,EAAeD,QAA4B"}
1
+ {"version":3,"file":"tooltip.js","sources":["../../../../../libs/grid/src/lib/features/tooltip.ts"],"sourcesContent":["/**\n * Tooltip feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/tooltip';\n *\n * grid.gridConfig = { features: { tooltip: true } };\n * ```\n */\n\nimport { TooltipPlugin, type TooltipConfig } from '../plugins/tooltip';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable automatic overflow tooltips on headers and cells. */\n tooltip?: boolean | TooltipConfig;\n }\n}\n\nregisterFeature('tooltip', (config) => {\n if (config === true) return new TooltipPlugin();\n return new TooltipPlugin((config as TooltipConfig) ?? undefined);\n});\n\n/** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */\nexport type _Augmentation = true;\n"],"names":["registerFeature","config","TooltipPlugin"],"mappings":"wIAqBAA,EAAgB,UAAYC,IACX,IAAXA,EAAwB,IAAIC,EACzB,IAAIA,EAAeD,QAA4B"}
@@ -5,3 +5,5 @@ declare module '../core/types' {
5
5
  tree?: boolean | TreeConfig;
6
6
  }
7
7
  }
8
+ /** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */
9
+ export type _Augmentation = true;
@@ -1 +1 @@
1
- {"version":3,"file":"tree.js","sources":["../../../../../libs/grid/src/lib/features/tree.ts"],"sourcesContent":["/**\n * Tree feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/tree';\n *\n * grid.gridConfig = { features: { tree: true } };\n * ```\n */\n\nimport { TreePlugin, type TreeConfig } from '../plugins/tree';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable tree (hierarchical) data display with expand/collapse. */\n tree?: boolean | TreeConfig;\n }\n}\n\nregisterFeature('tree', (config) => {\n const options = typeof config === 'boolean' ? {} : ((config as TreeConfig) ?? {});\n return new TreePlugin(options);\n});\n"],"names":["registerFeature","config","TreePlugin"],"mappings":"kIAqBAA,EAAgB,OAASC,GAEhB,IAAIC,EADuB,kBAAXD,EAAuB,CAAA,EAAOA,GAAyB,CAAA"}
1
+ {"version":3,"file":"tree.js","sources":["../../../../../libs/grid/src/lib/features/tree.ts"],"sourcesContent":["/**\n * Tree feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/tree';\n *\n * grid.gridConfig = { features: { tree: true } };\n * ```\n */\n\nimport { TreePlugin, type TreeConfig } from '../plugins/tree';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable tree (hierarchical) data display with expand/collapse. */\n tree?: boolean | TreeConfig;\n }\n}\n\nregisterFeature('tree', (config) => {\n const options = typeof config === 'boolean' ? {} : ((config as TreeConfig) ?? {});\n return new TreePlugin(options);\n});\n\n/** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */\nexport type _Augmentation = true;\n"],"names":["registerFeature","config","TreePlugin"],"mappings":"kIAqBAA,EAAgB,OAASC,GAEhB,IAAIC,EADuB,kBAAXD,EAAuB,CAAA,EAAOA,GAAyB,CAAA"}
@@ -5,3 +5,5 @@ declare module '../core/types' {
5
5
  undoRedo?: boolean | UndoRedoConfig;
6
6
  }
7
7
  }
8
+ /** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */
9
+ export type _Augmentation = true;
@@ -1 +1 @@
1
- {"version":3,"file":"undo-redo.js","sources":["../../../../../libs/grid/src/lib/features/undo-redo.ts"],"sourcesContent":["/**\n * Undo/Redo feature for @toolbox-web/grid\n *\n * Requires the `editing` feature to be enabled.\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/undo-redo';\n *\n * grid.gridConfig = { features: { editing: true, undoRedo: true } };\n * ```\n */\n\nimport { UndoRedoPlugin, type UndoRedoConfig } from '../plugins/undo-redo';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable undo/redo for cell edits. Requires `editing`. */\n undoRedo?: boolean | UndoRedoConfig;\n }\n}\n\nregisterFeature('undoRedo', (config) => {\n const options = typeof config === 'boolean' ? {} : ((config as UndoRedoConfig) ?? {});\n return new UndoRedoPlugin(options);\n});\n"],"names":["registerFeature","config","UndoRedoPlugin"],"mappings":"2IAuBAA,EAAgB,WAAaC,GAEpB,IAAIC,EADuB,kBAAXD,EAAuB,CAAA,EAAOA,GAA6B,CAAA"}
1
+ {"version":3,"file":"undo-redo.js","sources":["../../../../../libs/grid/src/lib/features/undo-redo.ts"],"sourcesContent":["/**\n * Undo/Redo feature for @toolbox-web/grid\n *\n * Requires the `editing` feature to be enabled.\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/undo-redo';\n *\n * grid.gridConfig = { features: { editing: true, undoRedo: true } };\n * ```\n */\n\nimport { UndoRedoPlugin, type UndoRedoConfig } from '../plugins/undo-redo';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable undo/redo for cell edits. Requires `editing`. */\n undoRedo?: boolean | UndoRedoConfig;\n }\n}\n\nregisterFeature('undoRedo', (config) => {\n const options = typeof config === 'boolean' ? {} : ((config as UndoRedoConfig) ?? {});\n return new UndoRedoPlugin(options);\n});\n\n/** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */\nexport type _Augmentation = true;\n"],"names":["registerFeature","config","UndoRedoPlugin"],"mappings":"2IAuBAA,EAAgB,WAAaC,GAEpB,IAAIC,EADuB,kBAAXD,EAAuB,CAAA,EAAOA,GAA6B,CAAA"}
@@ -5,3 +5,5 @@ declare module '../core/types' {
5
5
  visibility?: boolean | VisibilityConfig;
6
6
  }
7
7
  }
8
+ /** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */
9
+ export type _Augmentation = true;
@@ -1 +1 @@
1
- {"version":3,"file":"visibility.js","sources":["../../../../../libs/grid/src/lib/features/visibility.ts"],"sourcesContent":["/**\n * Column Visibility feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/visibility';\n *\n * grid.gridConfig = { features: { visibility: true } };\n * ```\n */\n\nimport { VisibilityPlugin, type VisibilityConfig } from '../plugins/visibility';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable column visibility toggling. */\n visibility?: boolean | VisibilityConfig;\n }\n}\n\nregisterFeature('visibility', (config) => {\n const options = typeof config === 'boolean' ? {} : ((config as VisibilityConfig) ?? {});\n return new VisibilityPlugin(options);\n});\n"],"names":["registerFeature","config","VisibilityPlugin"],"mappings":"8IAqBAA,EAAgB,aAAeC,GAEtB,IAAIC,EADuB,kBAAXD,EAAuB,CAAA,EAAOA,GAA+B,CAAA"}
1
+ {"version":3,"file":"visibility.js","sources":["../../../../../libs/grid/src/lib/features/visibility.ts"],"sourcesContent":["/**\n * Column Visibility feature for @toolbox-web/grid\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid/features/visibility';\n *\n * grid.gridConfig = { features: { visibility: true } };\n * ```\n */\n\nimport { VisibilityPlugin, type VisibilityConfig } from '../plugins/visibility';\nimport { registerFeature } from './registry';\n\ndeclare module '../core/types' {\n interface FeatureConfig {\n /** Enable column visibility toggling. */\n visibility?: boolean | VisibilityConfig;\n }\n}\n\nregisterFeature('visibility', (config) => {\n const options = typeof config === 'boolean' ? {} : ((config as VisibilityConfig) ?? {});\n return new VisibilityPlugin(options);\n});\n\n/** @internal Type anchor — forces bundlers to preserve this module's FeatureConfig augmentation when re-exported. */\nexport type _Augmentation = true;\n"],"names":["registerFeature","config","VisibilityPlugin"],"mappings":"8IAqBAA,EAAgB,aAAeC,GAEtB,IAAIC,EADuB,kBAAXD,EAAuB,CAAA,EAAOA,GAA+B,CAAA"}
@@ -24,7 +24,7 @@ import { ClipboardConfig, CopyOptions } from './types';
24
24
  * | `delimiter` | `string` | `'\t'` | Column delimiter (tab for Excel compatibility) |
25
25
  * | `newline` | `string` | `'\n'` | Row delimiter |
26
26
  * | `quoteStrings` | `boolean` | `false` | Wrap string values in quotes |
27
- * | `processCell` | `(value, field, row) => string` | - | Custom cell value processor |
27
+ * | `processCell` | `(value, field, row) => string` | - | Custom cell value processor (overrides copy-what-you-see) |
28
28
  * | `pasteHandler` | `PasteHandler \| null` | `defaultPasteHandler` | Custom paste handler |
29
29
  *
30
30
  * ## Keyboard Shortcuts
@@ -1,2 +1,2 @@
1
- function e(e,t){return`[tbw-grid${e?`#${e}`:""}${t?`:${t}`:""}]`}function t(t,n,r,i){return`${e(r,i)} ${t}: ${n}\n\n → More info: ${function(e){return`https://toolboxjs.com/grid/errors#${e.toLowerCase()}`}(t)}`}const n=/* @__PURE__ */new Set(["script","iframe","object","embed","form","input","button","textarea","select","link","meta","base","style","template","slot","portal","frame","frameset","applet","noscript","noembed","plaintext","xmp","listing"]),r=/^on\w+$/i,i=/* @__PURE__ */new Set(["href","src","action","formaction","data","srcdoc","xlink:href","poster","srcset"]),o=/^\s*(javascript|vbscript|data|blob):/i;function s(e){if(!e||"string"!=typeof e)return"";if(-1===e.indexOf("<"))return e;const t=document.createElement("template");return t.innerHTML=e,function(e){const t=[],s=e.querySelectorAll("*");for(const l of s){const e=l.tagName.toLowerCase();if(n.has(e)){t.push(l);continue}if("svg"===e||"http://www.w3.org/2000/svg"===l.namespaceURI){if(Array.from(l.attributes).some(e=>r.test(e.name)||"href"===e.name||"xlink:href"===e.name)){t.push(l);continue}}const s=[];for(const t of l.attributes){const e=t.name.toLowerCase();r.test(e)?s.push(t.name):(i.has(e)&&o.test(t.value)||"style"===e&&/expression\s*\(|javascript:|behavior\s*:/i.test(t.value))&&s.push(t.name)}s.forEach(e=>l.removeAttribute(e))}t.forEach(e=>e.remove())}(t.content),t.innerHTML}const l='<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>',a={expand:"▶",collapse:"▼",sortAsc:"▲",sortDesc:"▼",sortNone:"⇅",submenuArrow:"▶",dragHandle:"⋮⋮",toolPanel:"☰",filter:l,filterActive:l,print:"🖨️"};class c{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 n=new CustomEvent(e,{detail:t,bubbles:!0,cancelable:!0});return this.grid?.dispatchEvent?.(n),n.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{...a,...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(),n=parseInt(t,10);if(!isNaN(n))return n}return 200}resolveIcon(e,t){return void 0!==t?t:this.gridIcons[e]}setIcon(e,t){"string"==typeof t?e.innerHTML=s(t):t instanceof HTMLElement&&(e.innerHTML="",e.appendChild(t.cloneNode(!0)))}warn(n,r){void 0!==r?console.warn(t(n,r,this.gridElement.id,this.name)):console.warn(`${e(this.gridElement.id,this.name)} ${n}`)}throwDiagnostic(e,n){throw new Error(t(e,n,this.gridElement.id,this.name))}}function u(e,t,n=!0){let r=e;if(n&&(r=r.filter(e=>!e.hidden&&!e.field.startsWith("__")&&!0!==e.meta?.utility)),t?.length){const e=new Set(t);r=r.filter(t=>e.has(t.field))}return r}function d(e){return null==e?"":e instanceof Date?e.toISOString():"object"==typeof e?JSON.stringify(e):String(e)}async function h(e){try{return await navigator.clipboard.writeText(e),!0}catch(s){n="TBW100",r=`Clipboard API failed: ${s}`,console.warn(t(n,r,i,o));const l=document.createElement("textarea");l.value=e,l.style.position="fixed",l.style.opacity="0",l.style.pointerEvents="none",document.body.appendChild(l),l.select();const a=document.execCommand("copy");return document.body.removeChild(l),a}var n,r,i,o}function g(e,t){const n=t.delimiter??"\t",r=t.newline??"\n",i=e.replace(/\r\n/g,"\n").replace(/\r/g,"\n"),o=[];let s=[],l="",a=!1;for(let c=0;c<i.length;c++){const e=i[c];'"'!==e||a?'"'===e&&a?'"'===i[c+1]?(l+='"',c++):a=!1:e!==n||a?e!==r||a?l+=e:(s.push(l),l="",(s.length>1||s.some(e=>""!==e.trim()))&&o.push(s),s=[]):(s.push(l),l=""):a=!0}return s.push(l),(s.length>1||s.some(e=>""!==e.trim()))&&o.push(s),o}function f(e,t){const{rows:n,target:r,fields:i}=e;if(!r)return;const o=t.rows,s=t.effectiveConfig.columns??[],l=s.map(e=>e.field),a=/* @__PURE__ */new Map;s.forEach(e=>{a.set(e.field,!0===e.editable)});const c=[...o],u=r.bounds?r.bounds.endRow:1/0;n.forEach((e,t)=>{const n=r.row+t;if(!(n>u)){if(r.bounds){if(n>=c.length)return}else for(;n>=c.length;){const e={};l.forEach(t=>e[t]=""),c.push(e)}c[n]={...c[n]},e.forEach((e,t)=>{const r=i[t];r&&a.get(r)&&(c[n][r]=e)})}}),t.rows=c}class m extends c{static dependencies=[{name:"selection",required:!1,reason:"Enables copy/paste of selected cells instead of entire grid"}];name="clipboard";get defaultConfig(){return{includeHeaders:!1,delimiter:"\t",newline:"\n",quoteStrings:!1}}lastCopied=null;attach(e){super.attach(e),e.addEventListener("paste",e=>this.#t(e),{signal:this.disconnectSignal})}detach(){this.lastCopied=null}onKeyDown(e){return!(!e.ctrlKey&&!e.metaKey||"c"!==e.key)&&(e.preventDefault(),this.#n(e.target),!0)}#n(e){const t=this.#r();if(t&&0===t.ranges.length){const t=this.#i(e);if(!t)return;const n=this.columns[t.col];if(!n)return;return void this.copy({rowIndices:[t.row],columns:[n.field]})}this.copy()}#t(e){const t=e.clipboardData?.getData("text/plain");if(!t)return;e.preventDefault();const n=g(t,this.config),r=this.#r(),i=r?.ranges?.[0],o=i?.from.row??0,s=i?.from.col??0,l=i&&("range"===r?.mode||"row"===r?.mode)&&(i.from.row!==i.to.row||i.from.col!==i.to.col)?{endRow:i.to.row,endCol:i.to.col}:null,a=l?.endCol??this.visibleColumns.length-1,c=this.visibleColumns[s],u=c?{row:o,col:s,field:c.field,bounds:l}:null,d=[],h=n[0]?.length??0;for(let g=0;g<h&&s+g<=a;g++){const e=this.visibleColumns[s+g];e&&d.push(e.field)}const f={rows:n,text:t,target:u,fields:d};this.emit("paste",f),this.#o(f)}#o(e){if(!this.grid)return;const{pasteHandler:t}=this.config;if(null===t)return;(t??f)(e,this.grid)}#r(){const e=this.grid?.query("getSelection");return e?.[0]}#s(e){const t=this.#r();let n,r;if(e?.columns)n=u(this.columns,e.columns);else if(t?.ranges.length&&"row"!==t.mode){const e=t.ranges[t.ranges.length-1],r=Math.min(e.from.col,e.to.col),i=Math.max(e.from.col,e.to.col);n=u(this.visibleColumns.slice(r,i+1))}else n=u(this.columns);if(e?.rowIndices)r=function(e,t){return t?.length?[...t].sort((e,t)=>e-t).map(t=>e[t]).filter(e=>null!=e):e}(this.rows,e.rowIndices);else if(t?.ranges.length){const e=t.ranges[t.ranges.length-1],n=Math.min(e.from.row,e.to.row),i=Math.max(e.from.row,e.to.row);r=[];for(let t=n;t<=i;t++){const e=this.rows[t];e&&r.push(e)}}else r=this.rows;return{columns:n,rows:r}}#l(e,t,n){const r=n?.delimiter??this.config.delimiter??"\t",i=n?.newline??this.config.newline??"\n",o=n?.includeHeaders??this.config.includeHeaders??!1,s=n?.processCell??this.config.processCell,l=[];o&&l.push(e.map(e=>e.header||e.field).join(r));for(const a of t){const t=e.map(e=>{const t=a[e.field];return s?s(t,e.field,a):d(t)});l.push(t.join(r))}return l.join(i)}#i(e){const t=e.closest("[data-field-cache]");if(!t)return null;const n=t.dataset.fieldCache,r=t.dataset.row;if(!n||!r)return null;const i=parseInt(r,10);if(isNaN(i))return null;const o=this.columns.findIndex(e=>e.field===n);return-1===o?null:{row:i,col:o}}getSelectionAsText(e){const{columns:t,rows:n}=this.#s(e);return 0===t.length||0===n.length?"":this.#l(t,n,e)}async copy(e){const{columns:t,rows:n}=this.#s(e);if(0===t.length||0===n.length)return"";const r=this.#l(t,n,e);return await h(r),this.lastCopied={text:r,timestamp:Date.now()},this.emit("copy",{text:r,rowCount:n.length,columnCount:t.length}),r}async copyRows(e,t){return 0===e.length?"":this.copy({...t,rowIndices:e})}async paste(){const e=await async function(){try{return await navigator.clipboard.readText()}catch{return""}}();return e?g(e,this.config):null}getLastCopied(){return this.lastCopied}}export{m as ClipboardPlugin,f as defaultPasteHandler};
1
+ function e(e,t){return`[tbw-grid${e?`#${e}`:""}${t?`:${t}`:""}]`}function t(t,n,r,i){return`${e(r,i)} ${t}: ${n}\n\n → More info: ${function(e){return`https://toolboxjs.com/grid/errors#${e.toLowerCase()}`}(t)}`}const n=/* @__PURE__ */new Set(["script","iframe","object","embed","form","input","button","textarea","select","link","meta","base","style","template","slot","portal","frame","frameset","applet","noscript","noembed","plaintext","xmp","listing"]),r=/^on\w+$/i,i=/* @__PURE__ */new Set(["href","src","action","formaction","data","srcdoc","xlink:href","poster","srcset"]),o=/^\s*(javascript|vbscript|data|blob):/i;function s(e){if(!e||"string"!=typeof e)return"";if(-1===e.indexOf("<"))return e;const t=document.createElement("template");return t.innerHTML=e,function(e){const t=[],s=e.querySelectorAll("*");for(const l of s){const e=l.tagName.toLowerCase();if(n.has(e)){t.push(l);continue}if("svg"===e||"http://www.w3.org/2000/svg"===l.namespaceURI){if(Array.from(l.attributes).some(e=>r.test(e.name)||"href"===e.name||"xlink:href"===e.name)){t.push(l);continue}}const s=[];for(const t of l.attributes){const e=t.name.toLowerCase();r.test(e)?s.push(t.name):(i.has(e)&&o.test(t.value)||"style"===e&&/expression\s*\(|javascript:|behavior\s*:/i.test(t.value))&&s.push(t.name)}s.forEach(e=>l.removeAttribute(e))}t.forEach(e=>e.remove())}(t.content),t.innerHTML}const l='<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>',a={expand:"▶",collapse:"▼",sortAsc:"▲",sortDesc:"▼",sortNone:"⇅",submenuArrow:"▶",dragHandle:"⋮⋮",toolPanel:"☰",filter:l,filterActive:l,print:"🖨️"};class c{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 n=new CustomEvent(e,{detail:t,bubbles:!0,cancelable:!0});return this.grid?.dispatchEvent?.(n),n.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{...a,...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(),n=parseInt(t,10);if(!isNaN(n))return n}return 200}resolveIcon(e,t){return void 0!==t?t:this.gridIcons[e]}setIcon(e,t){"string"==typeof t?e.innerHTML=s(t):t instanceof HTMLElement&&(e.innerHTML="",e.appendChild(t.cloneNode(!0)))}warn(n,r){void 0!==r?console.warn(t(n,r,this.gridElement.id,this.name)):console.warn(`${e(this.gridElement.id,this.name)} ${n}`)}throwDiagnostic(e,n){throw new Error(t(e,n,this.gridElement.id,this.name))}}function u(e,t,n=!0){let r=e;if(n&&(r=r.filter(e=>!e.hidden&&!e.field.startsWith("__")&&!0!==e.meta?.utility)),t?.length){const e=new Set(t);r=r.filter(t=>e.has(t.field))}return r}async function d(e){try{return await navigator.clipboard.writeText(e),!0}catch(s){n="TBW100",r=`Clipboard API failed: ${s}`,console.warn(t(n,r,i,o));const l=document.createElement("textarea");l.value=e,l.style.position="fixed",l.style.opacity="0",l.style.pointerEvents="none",document.body.appendChild(l),l.select();const a=document.execCommand("copy");return document.body.removeChild(l),a}var n,r,i,o}function h(e,t){const n=t.delimiter??"\t",r=t.newline??"\n",i=e.replace(/\r\n/g,"\n").replace(/\r/g,"\n"),o=[];let s=[],l="",a=!1;for(let c=0;c<i.length;c++){const e=i[c];'"'!==e||a?'"'===e&&a?'"'===i[c+1]?(l+='"',c++):a=!1:e!==n||a?e!==r||a?l+=e:(s.push(l),l="",(s.length>1||s.some(e=>""!==e.trim()))&&o.push(s),s=[]):(s.push(l),l=""):a=!0}return s.push(l),(s.length>1||s.some(e=>""!==e.trim()))&&o.push(s),o}function f(e,t){const{rows:n,target:r,fields:i}=e;if(!r)return;const o=t.rows,s=t.effectiveConfig.columns??[],l=s.map(e=>e.field),a=/* @__PURE__ */new Map;s.forEach(e=>{a.set(e.field,!0===e.editable)});const c=[...o],u=r.bounds?r.bounds.endRow:1/0;n.forEach((e,t)=>{const n=r.row+t;if(!(n>u)){if(r.bounds){if(n>=c.length)return}else for(;n>=c.length;){const e={};l.forEach(t=>e[t]=""),c.push(e)}c[n]={...c[n]},e.forEach((e,t)=>{const r=i[t];r&&a.get(r)&&(c[n][r]=e)})}}),t.rows=c}class g extends c{static dependencies=[{name:"selection",required:!1,reason:"Enables copy/paste of selected cells instead of entire grid"}];name="clipboard";get defaultConfig(){return{includeHeaders:!1,delimiter:"\t",newline:"\n",quoteStrings:!1}}lastCopied=null;attach(e){super.attach(e),e.addEventListener("paste",e=>this.#t(e),{signal:this.disconnectSignal})}detach(){this.lastCopied=null}onKeyDown(e){return!(!e.ctrlKey&&!e.metaKey||"c"!==e.key)&&(e.preventDefault(),this.#n(e.target),!0)}#n(e){const t=this.#r();if(t&&0===t.ranges.length){const t=this.#i(e);if(!t)return;const n=this.columns[t.col];if(!n)return;return void this.copy({rowIndices:[t.row],columns:[n.field]})}this.copy()}#t(e){const t=e.clipboardData?.getData("text/plain");if(!t)return;e.preventDefault();const n=h(t,this.config),r=this.#r(),i=r?.ranges?.[0],o=i?.from.row??0,s=i?.from.col??0,l=i&&("range"===r?.mode||"row"===r?.mode)&&(i.from.row!==i.to.row||i.from.col!==i.to.col)?{endRow:i.to.row,endCol:i.to.col}:null,a=l?.endCol??this.visibleColumns.length-1,c=this.visibleColumns[s],u=c?{row:o,col:s,field:c.field,bounds:l}:null,d=[],f=n[0]?.length??0;for(let h=0;h<f&&s+h<=a;h++){const e=this.visibleColumns[s+h];e&&d.push(e.field)}const g={rows:n,text:t,target:u,fields:d};this.emit("paste",g),this.#o(g)}#o(e){if(!this.grid)return;const{pasteHandler:t}=this.config;if(null===t)return;(t??f)(e,this.grid)}#r(){const e=this.grid?.query("getSelection");return e?.[0]}#s(e){const t=this.#r();let n,r;if(e?.columns)n=u(this.columns,e.columns);else if(t?.ranges.length&&"row"!==t.mode){const e=t.ranges[t.ranges.length-1],r=Math.min(e.from.col,e.to.col),i=Math.max(e.from.col,e.to.col);n=u(this.visibleColumns.slice(r,i+1))}else n=u(this.columns);if(e?.rowIndices)r=function(e,t){return t?.length?[...t].sort((e,t)=>e-t).map(t=>e[t]).filter(e=>null!=e):e}(this.rows,e.rowIndices);else if(t?.ranges.length){const e=t.ranges[t.ranges.length-1],n=Math.min(e.from.row,e.to.row),i=Math.max(e.from.row,e.to.row);r=[];for(let t=n;t<=i;t++){const e=this.rows[t];e&&r.push(e)}}else r=this.rows;return{columns:n,rows:r}}#l(e,t,n){const r=n?.delimiter??this.config.delimiter??"\t",i=n?.newline??this.config.newline??"\n",o=n?.includeHeaders??this.config.includeHeaders??!1,s=n?.processCell??this.config.processCell,l=[];o&&l.push(e.map(e=>e.header||e.field).join(r));for(const a of t){const t=e.map(e=>{const t=a[e.field];return s?s(t,e.field,a):this.#a(e,t,a)});l.push(t.join(r))}return l.join(i)}#a(e,t,n){if(e.format)try{const r=e.format(t,n);return null==r?"":String(r)}catch{}if(e.renderer||e.viewRenderer){const t=this.#c(e.field,n);if(null!=t)return t}return function(e){return null==e?"":e instanceof Date?e.toISOString():"object"==typeof e?JSON.stringify(e):String(e)}(t)}#c(e,t){const n=this.gridElement;if(!n)return null;const r=this.rows.indexOf(t);if(-1===r)return null;const i=n.querySelector(`.cell[data-row="${r}"][data-field="${e}"]`);return i?i.textContent?.trim()??null:null}#i(e){const t=e.closest("[data-field-cache]");if(!t)return null;const n=t.dataset.fieldCache,r=t.dataset.row;if(!n||!r)return null;const i=parseInt(r,10);if(isNaN(i))return null;const o=this.columns.findIndex(e=>e.field===n);return-1===o?null:{row:i,col:o}}getSelectionAsText(e){const{columns:t,rows:n}=this.#s(e);return 0===t.length||0===n.length?"":this.#l(t,n,e)}async copy(e){const{columns:t,rows:n}=this.#s(e);if(0===t.length||0===n.length)return"";const r=this.#l(t,n,e);return await d(r),this.lastCopied={text:r,timestamp:Date.now()},this.emit("copy",{text:r,rowCount:n.length,columnCount:t.length}),r}async copyRows(e,t){return 0===e.length?"":this.copy({...t,rowIndices:e})}async paste(){const e=await async function(){try{return await navigator.clipboard.readText()}catch{return""}}();return e?h(e,this.config):null}getLastCopied(){return this.lastCopied}}export{g as ClipboardPlugin,f as defaultPasteHandler};
2
2
  //# sourceMappingURL=index.js.map