@competer/primeng-table 0.0.0-stage → 14.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/README.md +279 -3
  2. package/esm2020/competer-primeng-table.mjs +5 -0
  3. package/esm2020/lib/components/column-selector/column-selector.mjs +147 -0
  4. package/esm2020/lib/components/ecs-primeng-table/ecs-primeng-table.mjs +1411 -0
  5. package/esm2020/lib/components/ecs-primeng-table/ecs-primeng-table.service.mjs +222 -0
  6. package/esm2020/lib/components/export-excel/export-excel.mjs +153 -0
  7. package/esm2020/lib/components/export-excel/export-excel.service.mjs +23 -0
  8. package/esm2020/lib/components/table-button/table-button.mjs +63 -0
  9. package/esm2020/lib/components/table-cell/table-cell.mjs +159 -0
  10. package/esm2020/lib/components/table-predefined-filters/table-predefined-filters.mjs +94 -0
  11. package/esm2020/lib/components/views-management/views-management.mjs +117 -0
  12. package/esm2020/lib/enums/cell-display.enum.mjs +7 -0
  13. package/esm2020/lib/enums/cell-overflow-behaviour.enum.mjs +14 -0
  14. package/esm2020/lib/enums/data-align-horizontal.enum.mjs +16 -0
  15. package/esm2020/lib/enums/data-align-vertical.enum.mjs +16 -0
  16. package/esm2020/lib/enums/data-type.enum.enum.mjs +21 -0
  17. package/esm2020/lib/enums/device-type.enum.mjs +8 -0
  18. package/esm2020/lib/enums/frozen-column-align.enum.mjs +17 -0
  19. package/esm2020/lib/enums/index.mjs +9 -0
  20. package/esm2020/lib/enums/table-view-save-mode.enum.mjs +19 -0
  21. package/esm2020/lib/interfaces/columns-metadata.interface.mjs +2 -0
  22. package/esm2020/lib/interfaces/excel-export-request.interface.mjs +2 -0
  23. package/esm2020/lib/interfaces/index.mjs +11 -0
  24. package/esm2020/lib/interfaces/predefined-filter.interface.mjs +2 -0
  25. package/esm2020/lib/interfaces/table-button.interface.mjs +2 -0
  26. package/esm2020/lib/interfaces/table-configuration.interface.mjs +2 -0
  27. package/esm2020/lib/interfaces/table-options.interface.mjs +107 -0
  28. package/esm2020/lib/interfaces/table-paged-response.interface.mjs +2 -0
  29. package/esm2020/lib/interfaces/table-query-request.interface.mjs +2 -0
  30. package/esm2020/lib/interfaces/table-view-data.interface.mjs +2 -0
  31. package/esm2020/lib/interfaces/table-view.interface.mjs +2 -0
  32. package/esm2020/lib/pipes/ui-translate.pipe.mjs +21 -0
  33. package/esm2020/lib/services/http.service.mjs +18 -0
  34. package/esm2020/lib/services/i18n.service.mjs +61 -0
  35. package/esm2020/lib/services/index.mjs +5 -0
  36. package/esm2020/lib/services/notification.service.mjs +17 -0
  37. package/esm2020/lib/services/table-state.service.mjs +38 -0
  38. package/esm2020/lib/utils/create-table-options.mjs +37 -0
  39. package/esm2020/lib/utils/data-align-horizontal-as-text.mjs +23 -0
  40. package/esm2020/lib/utils/data-align-vertical-as-text.mjs +23 -0
  41. package/esm2020/lib/utils/data-type-as-text.mjs +25 -0
  42. package/esm2020/lib/utils/frozen-column-align-as-text.mjs +21 -0
  43. package/esm2020/lib/utils/highlight-text.mjs +36 -0
  44. package/esm2020/lib/utils/index.mjs +7 -0
  45. package/esm2020/lib/utils/tree-table-state.mjs +239 -0
  46. package/esm2020/public-api.mjs +19 -0
  47. package/fesm2015/competer-primeng-table.mjs +3119 -0
  48. package/fesm2015/competer-primeng-table.mjs.map +1 -0
  49. package/fesm2020/competer-primeng-table.mjs +3049 -0
  50. package/fesm2020/competer-primeng-table.mjs.map +1 -0
  51. package/index.d.ts +5 -0
  52. package/lib/components/column-selector/column-selector.d.ts +55 -0
  53. package/lib/components/ecs-primeng-table/ecs-primeng-table.d.ts +256 -0
  54. package/lib/components/ecs-primeng-table/ecs-primeng-table.service.d.ts +52 -0
  55. package/lib/components/export-excel/export-excel.d.ts +51 -0
  56. package/lib/components/export-excel/export-excel.service.d.ts +6 -0
  57. package/lib/components/table-button/table-button.d.ts +16 -0
  58. package/lib/components/table-cell/table-cell.d.ts +69 -0
  59. package/lib/components/table-predefined-filters/table-predefined-filters.d.ts +39 -0
  60. package/lib/components/views-management/views-management.d.ts +34 -0
  61. package/lib/enums/cell-display.enum.d.ts +5 -0
  62. package/lib/enums/cell-overflow-behaviour.enum.d.ts +12 -0
  63. package/lib/enums/data-align-horizontal.enum.d.ts +14 -0
  64. package/lib/enums/data-align-vertical.enum.d.ts +14 -0
  65. package/lib/enums/data-type.enum.enum.d.ts +19 -0
  66. package/lib/enums/device-type.enum.d.ts +6 -0
  67. package/lib/enums/frozen-column-align.enum.d.ts +15 -0
  68. package/lib/enums/index.d.ts +8 -0
  69. package/lib/enums/table-view-save-mode.enum.d.ts +17 -0
  70. package/lib/interfaces/columns-metadata.interface.d.ts +66 -0
  71. package/lib/interfaces/excel-export-request.interface.d.ts +20 -0
  72. package/lib/interfaces/index.d.ts +10 -0
  73. package/lib/interfaces/predefined-filter.interface.d.ts +101 -0
  74. package/lib/interfaces/table-button.interface.d.ts +75 -0
  75. package/lib/interfaces/table-configuration.interface.d.ts +23 -0
  76. package/lib/interfaces/table-options.interface.d.ts +604 -0
  77. package/lib/interfaces/table-paged-response.interface.d.ts +16 -0
  78. package/lib/interfaces/table-query-request.interface.d.ts +28 -0
  79. package/lib/interfaces/table-view-data.interface.d.ts +28 -0
  80. package/lib/interfaces/table-view.interface.d.ts +15 -0
  81. package/lib/pipes/ui-translate.pipe.d.ts +13 -0
  82. package/lib/services/http.service.d.ts +34 -0
  83. package/lib/services/i18n.service.d.ts +20 -0
  84. package/lib/services/index.d.ts +4 -0
  85. package/lib/services/notification.service.d.ts +23 -0
  86. package/lib/services/table-state.service.d.ts +31 -0
  87. package/lib/utils/create-table-options.d.ts +5 -0
  88. package/lib/utils/data-align-horizontal-as-text.d.ts +11 -0
  89. package/lib/utils/data-align-vertical-as-text.d.ts +11 -0
  90. package/lib/utils/data-type-as-text.d.ts +11 -0
  91. package/lib/utils/frozen-column-align-as-text.d.ts +11 -0
  92. package/lib/utils/highlight-text.d.ts +17 -0
  93. package/lib/utils/index.d.ts +6 -0
  94. package/lib/utils/tree-table-state.d.ts +66 -0
  95. package/package.json +58 -3
  96. package/public-api.d.ts +10 -0
@@ -0,0 +1,37 @@
1
+ import { DEFAULT_TABLE_OPTIONS } from '../interfaces';
2
+ /**
3
+ * Deep merge two objects.
4
+ * Recursively copies properties from `source` into `target`,
5
+ * but ignores `undefined` values to preserve defaults.
6
+ */
7
+ function deepMerge(target, source) {
8
+ for (const key in source) {
9
+ const value = source[key];
10
+ if (value === undefined) { // skip undefined values to keep defaults
11
+ continue;
12
+ }
13
+ if (value !== null && typeof value === "object" && !Array.isArray(value)) {
14
+ if (!target[key])
15
+ target[key] = {};
16
+ deepMerge(target[key], value);
17
+ }
18
+ else {
19
+ target[key] = value;
20
+ }
21
+ }
22
+ return target;
23
+ }
24
+ /**
25
+ * Create table options based on defaults, with optional overrides.
26
+ */
27
+ export function createTableOptions(overrides = {}) {
28
+ const defaultsCopy = JSON.parse(JSON.stringify(DEFAULT_TABLE_OPTIONS)); // clone only data
29
+ const merged = deepMerge(defaultsCopy, overrides);
30
+ // Reasign function if they exist in override
31
+ if (overrides.rows?.style)
32
+ merged.rows.style = overrides.rows.style;
33
+ if (overrides.rows?.class)
34
+ merged.rows.class = overrides.rows.class;
35
+ return merged;
36
+ }
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXRhYmxlLW9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lY3MtcHJpbWVuZy10YWJsZS9zcmMvbGliL3V0aWxzL2NyZWF0ZS10YWJsZS1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFckU7Ozs7R0FJRztBQUNILFNBQVMsU0FBUyxDQUFJLE1BQVMsRUFBRSxNQUFrQjtJQUNqRCxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sRUFBRTtRQUN4QixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFMUIsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLEVBQUUseUNBQXlDO1lBQ2xFLFNBQVM7U0FDVjtRQUVELElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3hFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO2dCQUFHLE1BQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDNUMsU0FBUyxDQUFFLE1BQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN4QzthQUFNO1lBQ0osTUFBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztTQUM5QjtLQUNGO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFlBQW9DLEVBQUU7SUFDdkUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQjtJQUMxRixNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsWUFBbUIsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUV6RCw2Q0FBNkM7SUFDN0MsSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFLEtBQUs7UUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwRSxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSztRQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBRXBFLE9BQU8sTUFBdUIsQ0FBQztBQUNqQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREVGQVVMVF9UQUJMRV9PUFRJT05TLCBJVGFibGVPcHRpb25zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XHJcblxyXG4vKipcclxuICogRGVlcCBtZXJnZSB0d28gb2JqZWN0cy5cclxuICogUmVjdXJzaXZlbHkgY29waWVzIHByb3BlcnRpZXMgZnJvbSBgc291cmNlYCBpbnRvIGB0YXJnZXRgLFxyXG4gKiBidXQgaWdub3JlcyBgdW5kZWZpbmVkYCB2YWx1ZXMgdG8gcHJlc2VydmUgZGVmYXVsdHMuXHJcbiAqL1xyXG5mdW5jdGlvbiBkZWVwTWVyZ2U8VD4odGFyZ2V0OiBULCBzb3VyY2U6IFBhcnRpYWw8VD4pOiBUIHtcclxuICBmb3IgKGNvbnN0IGtleSBpbiBzb3VyY2UpIHtcclxuICAgIGNvbnN0IHZhbHVlID0gc291cmNlW2tleV07XHJcblxyXG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHsgLy8gc2tpcCB1bmRlZmluZWQgdmFsdWVzIHRvIGtlZXAgZGVmYXVsdHNcclxuICAgICAgY29udGludWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgaWYgKCF0YXJnZXRba2V5XSkgKHRhcmdldCBhcyBhbnkpW2tleV0gPSB7fTtcclxuICAgICAgZGVlcE1lcmdlKCh0YXJnZXQgYXMgYW55KVtrZXldLCB2YWx1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAodGFyZ2V0IGFzIGFueSlba2V5XSA9IHZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gdGFyZ2V0O1xyXG59XHJcblxyXG4vKipcclxuICogQ3JlYXRlIHRhYmxlIG9wdGlvbnMgYmFzZWQgb24gZGVmYXVsdHMsIHdpdGggb3B0aW9uYWwgb3ZlcnJpZGVzLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRhYmxlT3B0aW9ucyhvdmVycmlkZXM6IFBhcnRpYWw8SVRhYmxlT3B0aW9ucz4gPSB7fSk6IElUYWJsZU9wdGlvbnMge1xyXG4gIGNvbnN0IGRlZmF1bHRzQ29weSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoREVGQVVMVF9UQUJMRV9PUFRJT05TKSk7IC8vIGNsb25lIG9ubHkgZGF0YVxyXG4gIGNvbnN0IG1lcmdlZCA9IGRlZXBNZXJnZShkZWZhdWx0c0NvcHkgYXMgYW55LCBvdmVycmlkZXMpO1xyXG5cclxuICAvLyBSZWFzaWduIGZ1bmN0aW9uIGlmIHRoZXkgZXhpc3QgaW4gb3ZlcnJpZGVcclxuICBpZiAob3ZlcnJpZGVzLnJvd3M/LnN0eWxlKSBtZXJnZWQucm93cy5zdHlsZSA9IG92ZXJyaWRlcy5yb3dzLnN0eWxlO1xyXG4gIGlmIChvdmVycmlkZXMucm93cz8uY2xhc3MpIG1lcmdlZC5yb3dzLmNsYXNzID0gb3ZlcnJpZGVzLnJvd3MuY2xhc3M7XHJcblxyXG4gIHJldHVybiBtZXJnZWQgYXMgSVRhYmxlT3B0aW9ucztcclxufSJdfQ==
@@ -0,0 +1,23 @@
1
+ import { DataAlignHorizontal } from "../enums";
2
+ /**
3
+ * Converts a `DataAlignHorizontal` enum value to its corresponding CSS text alignment string.
4
+ *
5
+ * @param dataAlignHorizontal - The horizontal alignment enum value.
6
+ * @returns The CSS text alignment string ('left', 'center', or 'right').
7
+ *
8
+ * @remarks
9
+ * If an unknown value is provided, the function defaults to 'center'.
10
+ */
11
+ export function dataAlignHorizontalAsText(dataAlignHorizontal) {
12
+ switch (dataAlignHorizontal) {
13
+ case DataAlignHorizontal.Left:
14
+ return 'left';
15
+ case DataAlignHorizontal.Center:
16
+ return 'center';
17
+ case DataAlignHorizontal.Right:
18
+ return 'right';
19
+ default:
20
+ return 'center';
21
+ }
22
+ }
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1hbGlnbi1ob3Jpem9udGFsLWFzLXRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lY3MtcHJpbWVuZy10YWJsZS9zcmMvbGliL3V0aWxzL2RhdGEtYWxpZ24taG9yaXpvbnRhbC1hcy10ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUUvQzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxtQkFBd0M7SUFDOUUsUUFBUSxtQkFBbUIsRUFBRTtRQUN6QixLQUFLLG1CQUFtQixDQUFDLElBQUk7WUFDekIsT0FBTyxNQUFNLENBQUM7UUFDbEIsS0FBSyxtQkFBbUIsQ0FBQyxNQUFNO1lBQzNCLE9BQU8sUUFBUSxDQUFDO1FBQ3BCLEtBQUssbUJBQW1CLENBQUMsS0FBSztZQUMxQixPQUFPLE9BQU8sQ0FBQztRQUNuQjtZQUNJLE9BQU8sUUFBUSxDQUFDO0tBQ3ZCO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFBbGlnbkhvcml6b250YWwgfSBmcm9tIFwiLi4vZW51bXNcIjtcclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0cyBhIGBEYXRhQWxpZ25Ib3Jpem9udGFsYCBlbnVtIHZhbHVlIHRvIGl0cyBjb3JyZXNwb25kaW5nIENTUyB0ZXh0IGFsaWdubWVudCBzdHJpbmcuXHJcbiAqXHJcbiAqIEBwYXJhbSBkYXRhQWxpZ25Ib3Jpem9udGFsIC0gVGhlIGhvcml6b250YWwgYWxpZ25tZW50IGVudW0gdmFsdWUuXHJcbiAqIEByZXR1cm5zIFRoZSBDU1MgdGV4dCBhbGlnbm1lbnQgc3RyaW5nICgnbGVmdCcsICdjZW50ZXInLCBvciAncmlnaHQnKS5cclxuICpcclxuICogQHJlbWFya3NcclxuICogSWYgYW4gdW5rbm93biB2YWx1ZSBpcyBwcm92aWRlZCwgdGhlIGZ1bmN0aW9uIGRlZmF1bHRzIHRvICdjZW50ZXInLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGRhdGFBbGlnbkhvcml6b250YWxBc1RleHQoZGF0YUFsaWduSG9yaXpvbnRhbDogRGF0YUFsaWduSG9yaXpvbnRhbCk6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKGRhdGFBbGlnbkhvcml6b250YWwpIHtcclxuICAgICAgICBjYXNlIERhdGFBbGlnbkhvcml6b250YWwuTGVmdDpcclxuICAgICAgICAgICAgcmV0dXJuICdsZWZ0JztcclxuICAgICAgICBjYXNlIERhdGFBbGlnbkhvcml6b250YWwuQ2VudGVyOlxyXG4gICAgICAgICAgICByZXR1cm4gJ2NlbnRlcic7XHJcbiAgICAgICAgY2FzZSBEYXRhQWxpZ25Ib3Jpem9udGFsLlJpZ2h0OlxyXG4gICAgICAgICAgICByZXR1cm4gJ3JpZ2h0JztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICByZXR1cm4gJ2NlbnRlcic7XHJcbiAgICB9XHJcbn0iXX0=
@@ -0,0 +1,23 @@
1
+ import { DataAlignVertical } from "../enums";
2
+ /**
3
+ * Converts a `DataAlignVertical` enum value to its corresponding CSS vertical alignment string.
4
+ *
5
+ * @param dataAlignVertical - The vertical alignment enum value.
6
+ * @returns The CSS vertical alignment string ('top', 'middle', or 'bottom').
7
+ *
8
+ * @remarks
9
+ * If an unknown value is provided, the function defaults to 'middle'.
10
+ */
11
+ export function dataAlignVerticalAsText(dataAlignVertical) {
12
+ switch (dataAlignVertical) {
13
+ case DataAlignVertical.Top:
14
+ return 'top';
15
+ case DataAlignVertical.Middle:
16
+ return 'middle';
17
+ case DataAlignVertical.Bottom:
18
+ return 'bottom';
19
+ default:
20
+ return 'middle';
21
+ }
22
+ }
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1hbGlnbi12ZXJ0aWNhbC1hcy10ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWNzLXByaW1lbmctdGFibGUvc3JjL2xpYi91dGlscy9kYXRhLWFsaWduLXZlcnRpY2FsLWFzLXRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTdDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUFDLGlCQUFvQztJQUN4RSxRQUFRLGlCQUFpQixFQUFFO1FBQ3ZCLEtBQUssaUJBQWlCLENBQUMsR0FBRztZQUN0QixPQUFPLEtBQUssQ0FBQztRQUNqQixLQUFLLGlCQUFpQixDQUFDLE1BQU07WUFDekIsT0FBTyxRQUFRLENBQUM7UUFDcEIsS0FBSyxpQkFBaUIsQ0FBQyxNQUFNO1lBQ3pCLE9BQU8sUUFBUSxDQUFDO1FBQ3BCO1lBQ0ksT0FBTyxRQUFRLENBQUM7S0FDdkI7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YUFsaWduVmVydGljYWwgfSBmcm9tIFwiLi4vZW51bXNcIjtcclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0cyBhIGBEYXRhQWxpZ25WZXJ0aWNhbGAgZW51bSB2YWx1ZSB0byBpdHMgY29ycmVzcG9uZGluZyBDU1MgdmVydGljYWwgYWxpZ25tZW50IHN0cmluZy5cclxuICpcclxuICogQHBhcmFtIGRhdGFBbGlnblZlcnRpY2FsIC0gVGhlIHZlcnRpY2FsIGFsaWdubWVudCBlbnVtIHZhbHVlLlxyXG4gKiBAcmV0dXJucyBUaGUgQ1NTIHZlcnRpY2FsIGFsaWdubWVudCBzdHJpbmcgKCd0b3AnLCAnbWlkZGxlJywgb3IgJ2JvdHRvbScpLlxyXG4gKlxyXG4gKiBAcmVtYXJrc1xyXG4gKiBJZiBhbiB1bmtub3duIHZhbHVlIGlzIHByb3ZpZGVkLCB0aGUgZnVuY3Rpb24gZGVmYXVsdHMgdG8gJ21pZGRsZScuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZGF0YUFsaWduVmVydGljYWxBc1RleHQoZGF0YUFsaWduVmVydGljYWw6IERhdGFBbGlnblZlcnRpY2FsKTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAoZGF0YUFsaWduVmVydGljYWwpIHtcclxuICAgICAgICBjYXNlIERhdGFBbGlnblZlcnRpY2FsLlRvcDpcclxuICAgICAgICAgICAgcmV0dXJuICd0b3AnO1xyXG4gICAgICAgIGNhc2UgRGF0YUFsaWduVmVydGljYWwuTWlkZGxlOlxyXG4gICAgICAgICAgICByZXR1cm4gJ21pZGRsZSc7XHJcbiAgICAgICAgY2FzZSBEYXRhQWxpZ25WZXJ0aWNhbC5Cb3R0b206XHJcbiAgICAgICAgICAgIHJldHVybiAnYm90dG9tJztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICByZXR1cm4gJ21pZGRsZSc7XHJcbiAgICB9XHJcbn0iXX0=
@@ -0,0 +1,25 @@
1
+ import { DataType } from "../enums";
2
+ /**
3
+ * Converts a `DataType` enum value to its corresponding string representation.
4
+ *
5
+ * @param dataType - The data type enum value.
6
+ * @returns The string representation of the data type ('text', 'numeric', 'boolean', or 'date').
7
+ *
8
+ * @remarks
9
+ * If an unknown value is provided, the function defaults to 'text'.
10
+ */
11
+ export function dataTypeAsText(dataType) {
12
+ switch (dataType) {
13
+ case DataType.Text:
14
+ return 'text';
15
+ case DataType.Numeric:
16
+ return 'numeric';
17
+ case DataType.Boolean:
18
+ return 'boolean';
19
+ case DataType.Date:
20
+ return 'date';
21
+ default:
22
+ return 'text';
23
+ }
24
+ }
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10eXBlLWFzLXRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lY3MtcHJpbWVuZy10YWJsZS9zcmMvbGliL3V0aWxzL2RhdGEtdHlwZS1hcy10ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFcEM7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLFFBQWtCO0lBQzdDLFFBQVEsUUFBUSxFQUFFO1FBQ2QsS0FBSyxRQUFRLENBQUMsSUFBSTtZQUNkLE9BQU8sTUFBTSxDQUFDO1FBQ2xCLEtBQUssUUFBUSxDQUFDLE9BQU87WUFDakIsT0FBTyxTQUFTLENBQUM7UUFDckIsS0FBSyxRQUFRLENBQUMsT0FBTztZQUNqQixPQUFPLFNBQVMsQ0FBQztRQUNyQixLQUFLLFFBQVEsQ0FBQyxJQUFJO1lBQ2QsT0FBTyxNQUFNLENBQUM7UUFDbEI7WUFDSSxPQUFPLE1BQU0sQ0FBQztLQUNyQjtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhVHlwZSB9IGZyb20gXCIuLi9lbnVtc1wiO1xyXG5cclxuLyoqXHJcbiAqIENvbnZlcnRzIGEgYERhdGFUeXBlYCBlbnVtIHZhbHVlIHRvIGl0cyBjb3JyZXNwb25kaW5nIHN0cmluZyByZXByZXNlbnRhdGlvbi5cclxuICpcclxuICogQHBhcmFtIGRhdGFUeXBlIC0gVGhlIGRhdGEgdHlwZSBlbnVtIHZhbHVlLlxyXG4gKiBAcmV0dXJucyBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkYXRhIHR5cGUgKCd0ZXh0JywgJ251bWVyaWMnLCAnYm9vbGVhbicsIG9yICdkYXRlJykuXHJcbiAqXHJcbiAqIEByZW1hcmtzXHJcbiAqIElmIGFuIHVua25vd24gdmFsdWUgaXMgcHJvdmlkZWQsIHRoZSBmdW5jdGlvbiBkZWZhdWx0cyB0byAndGV4dCcuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZGF0YVR5cGVBc1RleHQoZGF0YVR5cGU6IERhdGFUeXBlKTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAoZGF0YVR5cGUpIHtcclxuICAgICAgICBjYXNlIERhdGFUeXBlLlRleHQ6XHJcbiAgICAgICAgICAgIHJldHVybiAndGV4dCc7XHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5OdW1lcmljOlxyXG4gICAgICAgICAgICByZXR1cm4gJ251bWVyaWMnO1xyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuQm9vbGVhbjpcclxuICAgICAgICAgICAgcmV0dXJuICdib29sZWFuJztcclxuICAgICAgICBjYXNlIERhdGFUeXBlLkRhdGU6XHJcbiAgICAgICAgICAgIHJldHVybiAnZGF0ZSc7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgcmV0dXJuICd0ZXh0JztcclxuICAgIH1cclxufSJdfQ==
@@ -0,0 +1,21 @@
1
+ import { FrozenColumnAlign } from "../enums";
2
+ /**
3
+ * Converts a `FrozenColumnAlign` enum value to its corresponding CSS alignment string.
4
+ *
5
+ * @param frozenColumnAlign - The frozen column alignment enum value.
6
+ * @returns The CSS alignment string ('left' or 'right').
7
+ *
8
+ * @remarks
9
+ * If an unknown value is provided, the function defaults to 'left'.
10
+ */
11
+ export function frozenColumnAlignAsText(frozenColumnAlign) {
12
+ switch (frozenColumnAlign) {
13
+ case FrozenColumnAlign.Left:
14
+ return 'left';
15
+ case FrozenColumnAlign.Right:
16
+ return 'right';
17
+ default:
18
+ return 'left';
19
+ }
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvemVuLWNvbHVtbi1hbGlnbi1hcy10ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWNzLXByaW1lbmctdGFibGUvc3JjL2xpYi91dGlscy9mcm96ZW4tY29sdW1uLWFsaWduLWFzLXRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTdDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUFDLGlCQUFvQztJQUMxRSxRQUFRLGlCQUFpQixFQUFFO1FBQ3pCLEtBQUssaUJBQWlCLENBQUMsSUFBSTtZQUN6QixPQUFPLE1BQU0sQ0FBQztRQUNoQixLQUFLLGlCQUFpQixDQUFDLEtBQUs7WUFDMUIsT0FBTyxPQUFPLENBQUM7UUFDakI7WUFDRSxPQUFPLE1BQU0sQ0FBQztLQUNqQjtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGcm96ZW5Db2x1bW5BbGlnbiB9IGZyb20gXCIuLi9lbnVtc1wiO1xyXG5cclxuLyoqXHJcbiAqIENvbnZlcnRzIGEgYEZyb3plbkNvbHVtbkFsaWduYCBlbnVtIHZhbHVlIHRvIGl0cyBjb3JyZXNwb25kaW5nIENTUyBhbGlnbm1lbnQgc3RyaW5nLlxyXG4gKlxyXG4gKiBAcGFyYW0gZnJvemVuQ29sdW1uQWxpZ24gLSBUaGUgZnJvemVuIGNvbHVtbiBhbGlnbm1lbnQgZW51bSB2YWx1ZS5cclxuICogQHJldHVybnMgVGhlIENTUyBhbGlnbm1lbnQgc3RyaW5nICgnbGVmdCcgb3IgJ3JpZ2h0JykuXHJcbiAqXHJcbiAqIEByZW1hcmtzXHJcbiAqIElmIGFuIHVua25vd24gdmFsdWUgaXMgcHJvdmlkZWQsIHRoZSBmdW5jdGlvbiBkZWZhdWx0cyB0byAnbGVmdCcuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZnJvemVuQ29sdW1uQWxpZ25Bc1RleHQoZnJvemVuQ29sdW1uQWxpZ246IEZyb3plbkNvbHVtbkFsaWduKTogc3RyaW5nIHtcclxuICBzd2l0Y2ggKGZyb3plbkNvbHVtbkFsaWduKSB7XHJcbiAgICBjYXNlIEZyb3plbkNvbHVtbkFsaWduLkxlZnQ6XHJcbiAgICAgIHJldHVybiAnbGVmdCc7XHJcbiAgICBjYXNlIEZyb3plbkNvbHVtbkFsaWduLlJpZ2h0OlxyXG4gICAgICByZXR1cm4gJ3JpZ2h0JztcclxuICAgIGRlZmF1bHQ6XHJcbiAgICAgIHJldHVybiAnbGVmdCc7XHJcbiAgfVxyXG59Il19
@@ -0,0 +1,36 @@
1
+ import { DataType } from "../enums";
2
+ /**
3
+ * Generates sanitized HTML (`SafeHtml`) with highlighted text based on a global search term.
4
+ *
5
+ * @remarks
6
+ * This utility safely creates HTML content where occurrences of the provided global search text
7
+ * within the cell value are wrapped in a `<span class="highlighted-text">` tag for visual emphasis.
8
+ * If the cell does not match the search text or is of type `Boolean`, the original value is returned as safe HTML.
9
+ *
10
+ * @param {any} cellValue - The cell's value that may contain the text to highlight.
11
+ * @param {IColumnMetadata} colMetadata - Metadata configuration of the column that defines its data type and filtering behavior.
12
+ * @param {string | null} globalSearchText - The search text to highlight if found within the cell's content.
13
+ * @param {DomSanitizer} sanitizer - Angular's sanitizer used to safely produce trusted HTML content.
14
+ * @returns {SafeHtml} A `SafeHtml` instance containing highlighted HTML when a match is found, or the original sanitized text otherwise.
15
+ */
16
+ export function highlightText(cellValue, colMetadata, globalSearchText, sanitizer) {
17
+ if (colMetadata.dataType !== DataType.Boolean && globalSearchText !== null) { // Check if the column data type is not boolean and global search text is not null
18
+ const valueToUse = String(cellValue); // Convert cell value to string
19
+ if (colMetadata.canBeGlobalFiltered) { // Check if the column can be globally filtered
20
+ const searchLowerCase = globalSearchText.toUpperCase(); // Convert global search text to uppercase for case-insensitive comparison
21
+ const cellValueLowerCase = valueToUse.toUpperCase(); // Convert cell value to uppercase for case-insensitive comparison
22
+ if (cellValueLowerCase.includes(searchLowerCase)) { // Check if the cell value contains the search text
23
+ // Determine the start and end indices of the search text within the cell value
24
+ const startIndex = cellValueLowerCase.indexOf(searchLowerCase);
25
+ const endIndex = startIndex + globalSearchText.length;
26
+ // Extract the prefix, highlight, and suffix of the cell value
27
+ const prefix = valueToUse.substring(0, startIndex);
28
+ const highlight = valueToUse.substring(startIndex, endIndex);
29
+ const suffix = valueToUse.substring(endIndex);
30
+ return sanitizer.bypassSecurityTrustHtml(`${prefix}<span class="highlighted-text">${highlight}</span>${suffix}`); // Construct SafeHtml with highlighted text using the <mark> element
31
+ }
32
+ }
33
+ }
34
+ return sanitizer.bypassSecurityTrustHtml(String(cellValue)); // Return the original cell value if it doesn't meet the highlighting conditions
35
+ }
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlnaGxpZ2h0LXRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lY3MtcHJpbWVuZy10YWJsZS9zcmMvbGliL3V0aWxzL2hpZ2hsaWdodC10ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFcEM7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsU0FBYyxFQUFFLFdBQTRCLEVBQUUsZ0JBQStCLEVBQUUsU0FBdUI7SUFDaEksSUFBSSxXQUFXLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxPQUFPLElBQUksZ0JBQWdCLEtBQUssSUFBSSxFQUFFLEVBQUUsa0ZBQWtGO1FBQzVKLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLCtCQUErQjtRQUNyRSxJQUFJLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLCtDQUErQztZQUNsRixNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLDBFQUEwRTtZQUNsSSxNQUFNLGtCQUFrQixHQUFHLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLGtFQUFrRTtZQUN2SCxJQUFJLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLG1EQUFtRDtnQkFDbkcsK0VBQStFO2dCQUMvRSxNQUFNLFVBQVUsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQy9ELE1BQU0sUUFBUSxHQUFHLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7Z0JBQ3RELDhEQUE4RDtnQkFDOUQsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBQ25ELE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUM3RCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM5QyxPQUFPLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLE1BQU0sa0NBQWtDLFNBQVMsVUFBVSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsb0VBQW9FO2FBQ3pMO1NBQ0o7S0FDSjtJQUNELE9BQU8sU0FBUyxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0ZBQWdGO0FBQ2pKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IElDb2x1bW5NZXRhZGF0YSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB7IERhdGFUeXBlIH0gZnJvbSBcIi4uL2VudW1zXCI7XHJcblxyXG4vKipcclxuICogR2VuZXJhdGVzIHNhbml0aXplZCBIVE1MIChgU2FmZUh0bWxgKSB3aXRoIGhpZ2hsaWdodGVkIHRleHQgYmFzZWQgb24gYSBnbG9iYWwgc2VhcmNoIHRlcm0uXHJcbiAqXHJcbiAqIEByZW1hcmtzXHJcbiAqIFRoaXMgdXRpbGl0eSBzYWZlbHkgY3JlYXRlcyBIVE1MIGNvbnRlbnQgd2hlcmUgb2NjdXJyZW5jZXMgb2YgdGhlIHByb3ZpZGVkIGdsb2JhbCBzZWFyY2ggdGV4dFxyXG4gKiB3aXRoaW4gdGhlIGNlbGwgdmFsdWUgYXJlIHdyYXBwZWQgaW4gYSBgPHNwYW4gY2xhc3M9XCJoaWdobGlnaHRlZC10ZXh0XCI+YCB0YWcgZm9yIHZpc3VhbCBlbXBoYXNpcy5cclxuICogSWYgdGhlIGNlbGwgZG9lcyBub3QgbWF0Y2ggdGhlIHNlYXJjaCB0ZXh0IG9yIGlzIG9mIHR5cGUgYEJvb2xlYW5gLCB0aGUgb3JpZ2luYWwgdmFsdWUgaXMgcmV0dXJuZWQgYXMgc2FmZSBIVE1MLlxyXG4gKlxyXG4gKiBAcGFyYW0ge2FueX0gY2VsbFZhbHVlIC0gVGhlIGNlbGwncyB2YWx1ZSB0aGF0IG1heSBjb250YWluIHRoZSB0ZXh0IHRvIGhpZ2hsaWdodC5cclxuICogQHBhcmFtIHtJQ29sdW1uTWV0YWRhdGF9IGNvbE1ldGFkYXRhIC0gTWV0YWRhdGEgY29uZmlndXJhdGlvbiBvZiB0aGUgY29sdW1uIHRoYXQgZGVmaW5lcyBpdHMgZGF0YSB0eXBlIGFuZCBmaWx0ZXJpbmcgYmVoYXZpb3IuXHJcbiAqIEBwYXJhbSB7c3RyaW5nIHwgbnVsbH0gZ2xvYmFsU2VhcmNoVGV4dCAtIFRoZSBzZWFyY2ggdGV4dCB0byBoaWdobGlnaHQgaWYgZm91bmQgd2l0aGluIHRoZSBjZWxsJ3MgY29udGVudC5cclxuICogQHBhcmFtIHtEb21TYW5pdGl6ZXJ9IHNhbml0aXplciAtIEFuZ3VsYXIncyBzYW5pdGl6ZXIgdXNlZCB0byBzYWZlbHkgcHJvZHVjZSB0cnVzdGVkIEhUTUwgY29udGVudC5cclxuICogQHJldHVybnMge1NhZmVIdG1sfSBBIGBTYWZlSHRtbGAgaW5zdGFuY2UgY29udGFpbmluZyBoaWdobGlnaHRlZCBIVE1MIHdoZW4gYSBtYXRjaCBpcyBmb3VuZCwgb3IgdGhlIG9yaWdpbmFsIHNhbml0aXplZCB0ZXh0IG90aGVyd2lzZS5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBoaWdobGlnaHRUZXh0KGNlbGxWYWx1ZTogYW55LCBjb2xNZXRhZGF0YTogSUNvbHVtbk1ldGFkYXRhLCBnbG9iYWxTZWFyY2hUZXh0OiBzdHJpbmcgfCBudWxsLCBzYW5pdGl6ZXI6IERvbVNhbml0aXplcik6IFNhZmVIdG1sIHtcclxuICAgIGlmIChjb2xNZXRhZGF0YS5kYXRhVHlwZSAhPT0gRGF0YVR5cGUuQm9vbGVhbiAmJiBnbG9iYWxTZWFyY2hUZXh0ICE9PSBudWxsKSB7IC8vIENoZWNrIGlmIHRoZSBjb2x1bW4gZGF0YSB0eXBlIGlzIG5vdCBib29sZWFuIGFuZCBnbG9iYWwgc2VhcmNoIHRleHQgaXMgbm90IG51bGxcclxuICAgICAgICBjb25zdCB2YWx1ZVRvVXNlID0gU3RyaW5nKGNlbGxWYWx1ZSk7IC8vIENvbnZlcnQgY2VsbCB2YWx1ZSB0byBzdHJpbmdcclxuICAgICAgICBpZiAoY29sTWV0YWRhdGEuY2FuQmVHbG9iYWxGaWx0ZXJlZCkgeyAvLyBDaGVjayBpZiB0aGUgY29sdW1uIGNhbiBiZSBnbG9iYWxseSBmaWx0ZXJlZFxyXG4gICAgICAgICAgICBjb25zdCBzZWFyY2hMb3dlckNhc2UgPSBnbG9iYWxTZWFyY2hUZXh0LnRvVXBwZXJDYXNlKCk7IC8vIENvbnZlcnQgZ2xvYmFsIHNlYXJjaCB0ZXh0IHRvIHVwcGVyY2FzZSBmb3IgY2FzZS1pbnNlbnNpdGl2ZSBjb21wYXJpc29uXHJcbiAgICAgICAgICAgIGNvbnN0IGNlbGxWYWx1ZUxvd2VyQ2FzZSA9IHZhbHVlVG9Vc2UudG9VcHBlckNhc2UoKTsgLy8gQ29udmVydCBjZWxsIHZhbHVlIHRvIHVwcGVyY2FzZSBmb3IgY2FzZS1pbnNlbnNpdGl2ZSBjb21wYXJpc29uXHJcbiAgICAgICAgICAgIGlmIChjZWxsVmFsdWVMb3dlckNhc2UuaW5jbHVkZXMoc2VhcmNoTG93ZXJDYXNlKSkgeyAvLyBDaGVjayBpZiB0aGUgY2VsbCB2YWx1ZSBjb250YWlucyB0aGUgc2VhcmNoIHRleHRcclxuICAgICAgICAgICAgICAgIC8vIERldGVybWluZSB0aGUgc3RhcnQgYW5kIGVuZCBpbmRpY2VzIG9mIHRoZSBzZWFyY2ggdGV4dCB3aXRoaW4gdGhlIGNlbGwgdmFsdWVcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBjZWxsVmFsdWVMb3dlckNhc2UuaW5kZXhPZihzZWFyY2hMb3dlckNhc2UpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZW5kSW5kZXggPSBzdGFydEluZGV4ICsgZ2xvYmFsU2VhcmNoVGV4dC5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAvLyBFeHRyYWN0IHRoZSBwcmVmaXgsIGhpZ2hsaWdodCwgYW5kIHN1ZmZpeCBvZiB0aGUgY2VsbCB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgY29uc3QgcHJlZml4ID0gdmFsdWVUb1VzZS5zdWJzdHJpbmcoMCwgc3RhcnRJbmRleCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBoaWdobGlnaHQgPSB2YWx1ZVRvVXNlLnN1YnN0cmluZyhzdGFydEluZGV4LCBlbmRJbmRleCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdWZmaXggPSB2YWx1ZVRvVXNlLnN1YnN0cmluZyhlbmRJbmRleCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGAke3ByZWZpeH08c3BhbiBjbGFzcz1cImhpZ2hsaWdodGVkLXRleHRcIj4ke2hpZ2hsaWdodH08L3NwYW4+JHtzdWZmaXh9YCk7IC8vIENvbnN0cnVjdCBTYWZlSHRtbCB3aXRoIGhpZ2hsaWdodGVkIHRleHQgdXNpbmcgdGhlIDxtYXJrPiBlbGVtZW50XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKFN0cmluZyhjZWxsVmFsdWUpKTsgLy8gUmV0dXJuIHRoZSBvcmlnaW5hbCBjZWxsIHZhbHVlIGlmIGl0IGRvZXNuJ3QgbWVldCB0aGUgaGlnaGxpZ2h0aW5nIGNvbmRpdGlvbnNcclxufSJdfQ==
@@ -0,0 +1,7 @@
1
+ export * from "./create-table-options";
2
+ export * from "./data-align-horizontal-as-text";
3
+ export * from "./data-align-vertical-as-text";
4
+ export * from "./data-type-as-text";
5
+ export * from "./frozen-column-align-as-text";
6
+ export * from "./highlight-text";
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lY3MtcHJpbWVuZy10YWJsZS9zcmMvbGliL3V0aWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vY3JlYXRlLXRhYmxlLW9wdGlvbnNcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vZGF0YS1hbGlnbi1ob3Jpem9udGFsLWFzLXRleHRcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vZGF0YS1hbGlnbi12ZXJ0aWNhbC1hcy10ZXh0XCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2RhdGEtdHlwZS1hcy10ZXh0XCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2Zyb3plbi1jb2x1bW4tYWxpZ24tYXMtdGV4dFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9oaWdobGlnaHQtdGV4dFwiOyJdfQ==
@@ -0,0 +1,239 @@
1
+ export class TreeTableState {
2
+ constructor(options) {
3
+ this.options = options;
4
+ this.expanded = new Set();
5
+ this.nodes = new Map();
6
+ this.children = new Map();
7
+ this.totals = new Map();
8
+ this.pages = new Map();
9
+ this.entries = new WeakMap();
10
+ this.roots = [];
11
+ this.allRoots = [];
12
+ this.version = 0;
13
+ this.pending = new Set();
14
+ this.restoredPages = {};
15
+ this.visible = [];
16
+ this.loading = false;
17
+ this.page = 0;
18
+ this.pageSize = 10;
19
+ this.totalRecords = 0;
20
+ this.totalRecordsNotFiltered = 0;
21
+ if (!options.keyExpr?.trim() || !options.parentIdExpr?.trim() || !options.column?.trim()) {
22
+ throw new Error('Tree configuration requires keyExpr, parentIdExpr and column.');
23
+ }
24
+ if (!['all', 'onDemand', 'pagedChildren'].includes(this.mode)) {
25
+ throw new Error('Invalid tree loadMode.');
26
+ }
27
+ if (this.mode !== 'all' && !options.hasItemsExpr?.trim()) {
28
+ throw new Error('Remote tree loading requires hasItemsExpr.');
29
+ }
30
+ }
31
+ get mode() { return this.options.loadMode ?? 'onDemand'; }
32
+ get rootValue() { return this.options.rootValue === undefined ? 0 : this.options.rootValue; }
33
+ key(row) {
34
+ const key = row[this.options.keyExpr];
35
+ if ((typeof key !== 'string' && typeof key !== 'number') || key === '' ||
36
+ (typeof key === 'number' && !Number.isFinite(key))) {
37
+ throw new Error('Tree keys must be non-empty strings or finite numbers.');
38
+ }
39
+ return key;
40
+ }
41
+ restore(keys = [], pages = {}) {
42
+ this.expanded.clear();
43
+ keys.forEach(key => this.expanded.add(key));
44
+ this.restoredPages = { ...pages };
45
+ }
46
+ snapshotPages() {
47
+ return Object.fromEntries([...this.pages].map(([key, page]) => [JSON.stringify(key), page]));
48
+ }
49
+ depth(row) { return this.entries.get(row)?.depth ?? 0; }
50
+ isMore(row) { return !!this.entries.get(row)?.more; }
51
+ moreParent(row) { return this.entries.get(row)?.parent; }
52
+ isExpanded(row) { return this.expanded.has(this.key(row)); }
53
+ isLoading(row) { return this.pending.has(this.key(row)); }
54
+ hasChildren(row) {
55
+ if (this.mode === 'all')
56
+ return !!this.children.get(this.key(row))?.length;
57
+ return row[this.options.hasItemsExpr] === true;
58
+ }
59
+ cancel() { this.version++; this.loading = false; this.pending.clear(); }
60
+ async load(page, pageSize, fetch) {
61
+ const version = ++this.version;
62
+ this.loading = true;
63
+ this.pending.clear();
64
+ this.nodes.clear();
65
+ this.children.clear();
66
+ this.totals.clear();
67
+ this.pages.clear();
68
+ this.visible = [];
69
+ this.page = page;
70
+ this.pageSize = pageSize;
71
+ try {
72
+ const response = await fetch({ roots: true, parentId: this.rootValue, loadMode: this.mode, page, pageSize });
73
+ if (version !== this.version)
74
+ return false;
75
+ this.insert(response.data);
76
+ this.page = response.page;
77
+ this.totalRecords = response.totalRecords;
78
+ this.totalRecordsNotFiltered = response.totalRecordsNotFiltered;
79
+ if (this.mode === 'all') {
80
+ this.buildAll();
81
+ this.page = Math.min(Math.max(0, page), Math.max(0, Math.ceil(this.allRoots.length / pageSize) - 1));
82
+ this.roots = this.allRoots.slice(this.page * pageSize, (this.page + 1) * pageSize);
83
+ }
84
+ else {
85
+ this.roots = response.data.map(row => this.key(row));
86
+ }
87
+ response.ancestorKeys?.forEach(key => this.expanded.add(key));
88
+ const queue = [...this.roots];
89
+ for (let cursor = 0; cursor < queue.length; cursor++) {
90
+ const key = queue[cursor];
91
+ const row = this.nodes.get(key);
92
+ if (!this.expanded.has(key) || !this.hasChildren(row))
93
+ continue;
94
+ if (this.mode !== 'all') {
95
+ await this.fetchChildren(key, 0, fetch, version);
96
+ const targetPage = this.restoredPages[JSON.stringify(key)] ?? 0;
97
+ while (version === this.version && this.mode === 'pagedChildren' &&
98
+ (this.pages.get(key) ?? 0) < targetPage && this.hasMore(key)) {
99
+ await this.fetchChildren(key, (this.pages.get(key) ?? 0) + 1, fetch, version);
100
+ }
101
+ }
102
+ if (version !== this.version)
103
+ return false;
104
+ queue.push(...(this.children.get(key) ?? []));
105
+ }
106
+ this.restoredPages = {};
107
+ this.rebuild();
108
+ return true;
109
+ }
110
+ finally {
111
+ if (version === this.version)
112
+ this.loading = false;
113
+ }
114
+ }
115
+ async toggle(row, fetch) {
116
+ const key = this.key(row);
117
+ if (this.pending.has(key))
118
+ return;
119
+ if (this.expanded.delete(key)) {
120
+ this.rebuild();
121
+ return;
122
+ }
123
+ this.expanded.add(key);
124
+ const version = this.version;
125
+ try {
126
+ const queue = [key];
127
+ for (let cursor = 0; cursor < queue.length; cursor++) {
128
+ const current = queue[cursor];
129
+ if (this.mode !== 'all' && !this.children.has(current))
130
+ await this.fetchChildren(current, 0, fetch, version);
131
+ if (version !== this.version)
132
+ return;
133
+ for (const child of this.children.get(current) ?? []) {
134
+ if (this.expanded.has(child) && this.hasChildren(this.nodes.get(child)))
135
+ queue.push(child);
136
+ }
137
+ }
138
+ this.rebuild();
139
+ }
140
+ catch (error) {
141
+ if (version === this.version)
142
+ this.expanded.delete(key);
143
+ throw error;
144
+ }
145
+ }
146
+ async loadMore(row, fetch) {
147
+ const parent = this.moreParent(row);
148
+ if (parent === undefined || this.pending.has(parent))
149
+ return;
150
+ const version = this.version;
151
+ await this.fetchChildren(parent, (this.pages.get(parent) ?? 0) + 1, fetch, version);
152
+ if (version === this.version)
153
+ this.rebuild();
154
+ }
155
+ insert(rows) {
156
+ const keys = new Set();
157
+ for (const row of rows) {
158
+ const key = this.key(row);
159
+ if (keys.has(key) || this.nodes.has(key))
160
+ throw new Error('Duplicate tree key.');
161
+ keys.add(key);
162
+ }
163
+ for (const row of rows)
164
+ this.nodes.set(this.key(row), row);
165
+ }
166
+ buildAll() {
167
+ this.allRoots = [];
168
+ for (const [key, row] of this.nodes) {
169
+ const parent = row[this.options.parentIdExpr];
170
+ if (parent === this.rootValue)
171
+ this.allRoots.push(key);
172
+ else {
173
+ if (!this.nodes.has(parent))
174
+ throw new Error('Missing tree parent.');
175
+ const siblings = this.children.get(parent) ?? [];
176
+ siblings.push(key);
177
+ this.children.set(parent, siblings);
178
+ }
179
+ }
180
+ const seen = new Set();
181
+ const queue = [...this.allRoots];
182
+ for (let cursor = 0; cursor < queue.length; cursor++) {
183
+ const key = queue[cursor];
184
+ if (seen.has(key))
185
+ throw new Error('Tree cycle.');
186
+ seen.add(key);
187
+ queue.push(...(this.children.get(key) ?? []));
188
+ }
189
+ if (seen.size !== this.nodes.size)
190
+ throw new Error('Tree cycle.');
191
+ }
192
+ async fetchChildren(key, page, fetch, version) {
193
+ this.pending.add(key);
194
+ try {
195
+ const response = await fetch({ roots: false, parentId: key, loadMode: this.mode, page, pageSize: this.pageSize });
196
+ if (version !== this.version)
197
+ return;
198
+ for (const row of response.data) {
199
+ if (row[this.options.parentIdExpr] !== key)
200
+ throw new Error('Unexpected tree parent.');
201
+ }
202
+ this.insert(response.data);
203
+ this.children.set(key, [...(this.children.get(key) ?? []), ...response.data.map(row => this.key(row))]);
204
+ this.totals.set(key, response.totalRecords);
205
+ this.pages.set(key, response.page);
206
+ response.ancestorKeys?.forEach(ancestor => this.expanded.add(ancestor));
207
+ }
208
+ finally {
209
+ if (version === this.version)
210
+ this.pending.delete(key);
211
+ }
212
+ }
213
+ hasMore(key) {
214
+ return (this.children.get(key)?.length ?? 0) < (this.totals.get(key) ?? 0);
215
+ }
216
+ rebuild() {
217
+ this.entries = new WeakMap();
218
+ const result = [];
219
+ const stack = this.roots.map(key => ({ row: this.nodes.get(key), depth: 0 })).reverse();
220
+ while (stack.length) {
221
+ const entry = stack.pop();
222
+ this.entries.set(entry.row, entry);
223
+ result.push(entry.row);
224
+ if (entry.more)
225
+ continue;
226
+ const key = this.key(entry.row);
227
+ if (!this.expanded.has(key))
228
+ continue;
229
+ if (this.hasMore(key))
230
+ stack.push({ row: {}, depth: entry.depth + 1, parent: key, more: true });
231
+ const children = this.children.get(key) ?? [];
232
+ for (let index = children.length - 1; index >= 0; index--) {
233
+ stack.push({ row: this.nodes.get(children[index]), depth: entry.depth + 1, parent: key });
234
+ }
235
+ }
236
+ this.visible = result;
237
+ }
238
+ }
239
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS10YWJsZS1zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Vjcy1wcmltZW5nLXRhYmxlL3NyYy9saWIvdXRpbHMvdHJlZS10YWJsZS1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvQ0EsTUFBTSxPQUFPLGNBQWM7SUFtQnpCLFlBQXFCLE9BQTBCO1FBQTFCLFlBQU8sR0FBUCxPQUFPLENBQW1CO1FBbEJ0QyxhQUFRLEdBQUcsSUFBSSxHQUFHLEVBQVcsQ0FBQztRQUN0QixVQUFLLEdBQUcsSUFBSSxHQUFHLEVBQW9CLENBQUM7UUFDcEMsYUFBUSxHQUFHLElBQUksR0FBRyxFQUFzQixDQUFDO1FBQ3pDLFdBQU0sR0FBRyxJQUFJLEdBQUcsRUFBbUIsQ0FBQztRQUNwQyxVQUFLLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUM7UUFDNUMsWUFBTyxHQUFHLElBQUksT0FBTyxFQUFzQixDQUFDO1FBQzVDLFVBQUssR0FBYyxFQUFFLENBQUM7UUFDdEIsYUFBUSxHQUFjLEVBQUUsQ0FBQztRQUN6QixZQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ0gsWUFBTyxHQUFHLElBQUksR0FBRyxFQUFXLENBQUM7UUFDdEMsa0JBQWEsR0FBMkIsRUFBRSxDQUFDO1FBQ25ELFlBQU8sR0FBYyxFQUFFLENBQUM7UUFDeEIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixTQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ1QsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLDRCQUF1QixHQUFHLENBQUMsQ0FBQztRQUcxQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ3hGLE1BQU0s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QUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzRCxJQUFJLEtBQUssQ0FBQyxJQUFJO2dCQUFFLFNBQVM7WUFDekIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztnQkFBRSxTQUFTO1lBQ3RDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7Z0JBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDaEcsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzlDLEtBQUssSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDekQsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7YUFDNUY7U0FDRjtRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQ3hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFRyZWVLZXkgPSBzdHJpbmcgfCBudW1iZXI7XHJcbmV4cG9ydCB0eXBlIFRyZWVSb3cgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcclxuZXhwb3J0IHR5cGUgVHJlZUxvYWRNb2RlID0gJ2FsbCcgfCAnb25EZW1hbmQnIHwgJ3BhZ2VkQ2hpbGRyZW4nO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVHJlZVRhYmxlT3B0aW9ucyB7XHJcbiAga2V5RXhwcjogc3RyaW5nO1xyXG4gIHBhcmVudElkRXhwcjogc3RyaW5nO1xyXG4gIHJvb3RWYWx1ZT86IFRyZWVLZXkgfCBudWxsO1xyXG4gIGhhc0l0ZW1zRXhwcj86IHN0cmluZztcclxuICBjb2x1bW46IHN0cmluZztcclxuICBsb2FkTW9kZT86IFRyZWVMb2FkTW9kZTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVHJlZVJlc3BvbnNlIHtcclxuICBkYXRhOiBUcmVlUm93W107XHJcbiAgcGFnZTogbnVtYmVyO1xyXG4gIHRvdGFsUmVjb3JkczogbnVtYmVyO1xyXG4gIHRvdGFsUmVjb3Jkc05vdEZpbHRlcmVkOiBudW1iZXI7XHJcbiAgYW5jZXN0b3JLZXlzPzogVHJlZUtleVtdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElUcmVlUmVxdWVzdCB7XHJcbiAgcm9vdHM6IGJvb2xlYW47XHJcbiAgcGFyZW50SWQ6IFRyZWVLZXkgfCBudWxsO1xyXG4gIGxvYWRNb2RlOiBUcmVlTG9hZE1vZGU7XHJcbiAgcGFnZTogbnVtYmVyO1xyXG4gIHBhZ2VTaXplOiBudW1iZXI7XHJcbn1cclxuXHJcbmludGVyZmFjZSBUcmVlRW50cnkge1xyXG4gIHJvdzogVHJlZVJvdztcclxuICBkZXB0aDogbnVtYmVyO1xyXG4gIHBhcmVudD86IFRyZWVLZXk7XHJcbiAgbW9yZT86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUcmVlVGFibGVTdGF0ZSB7XHJcbiAgcmVhZG9ubHkgZXhwYW5kZWQgPSBuZXcgU2V0PFRyZWVLZXk+KCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBub2RlcyA9IG5ldyBNYXA8VHJlZUtleSwgVHJlZVJvdz4oKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGNoaWxkcmVuID0gbmV3IE1hcDxUcmVlS2V5LCBUcmVlS2V5W10+KCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSB0b3RhbHMgPSBuZXcgTWFwPFRyZWVLZXksIG51bWJlcj4oKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHBhZ2VzID0gbmV3IE1hcDxUcmVlS2V5LCBudW1iZXI+KCk7XHJcbiAgcHJpdmF0ZSBlbnRyaWVzID0gbmV3IFdlYWtNYXA8VHJlZVJvdywgVHJlZUVudHJ5PigpO1xyXG4gIHByaXZhdGUgcm9vdHM6IFRyZWVLZXlbXSA9IFtdO1xyXG4gIHByaXZhdGUgYWxsUm9vdHM6IFRyZWVLZXlbXSA9IFtdO1xyXG4gIHByaXZhdGUgdmVyc2lvbiA9IDA7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBwZW5kaW5nID0gbmV3IFNldDxUcmVlS2V5PigpO1xyXG4gIHByaXZhdGUgcmVzdG9yZWRQYWdlczogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHt9O1xyXG4gIHZpc2libGU6IFRyZWVSb3dbXSA9IFtdO1xyXG4gIGxvYWRpbmcgPSBmYWxzZTtcclxuICBwYWdlID0gMDtcclxuICBwYWdlU2l6ZSA9IDEwO1xyXG4gIHRvdGFsUmVjb3JkcyA9IDA7XHJcbiAgdG90YWxSZWNvcmRzTm90RmlsdGVyZWQgPSAwO1xyXG5cclxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBvcHRpb25zOiBJVHJlZVRhYmxlT3B0aW9ucykge1xyXG4gICAgaWYgKCFvcHRpb25zLmtleUV4cHI/LnRyaW0oKSB8fCAhb3B0aW9ucy5wYXJlbnRJZEV4cHI/LnRyaW0oKSB8fCAhb3B0aW9ucy5jb2x1bW4/LnRyaW0oKSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RyZWUgY29uZmlndXJhdGlvbiByZXF1aXJlcyBrZXlFeHByLCBwYXJlbnRJZEV4cHIgYW5kIGNvbHVtbi4nKTtcclxuICAgIH1cclxuICAgIGlmICghWydhbGwnLCAnb25EZW1hbmQnLCAncGFnZWRDaGlsZHJlbiddLmluY2x1ZGVzKHRoaXMubW9kZSkpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRyZWUgbG9hZE1vZGUuJyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tb2RlICE9PSAnYWxsJyAmJiAhb3B0aW9ucy5oYXNJdGVtc0V4cHI/LnRyaW0oKSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlbW90ZSB0cmVlIGxvYWRpbmcgcmVxdWlyZXMgaGFzSXRlbXNFeHByLicpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IG1vZGUoKTogVHJlZUxvYWRNb2RlIHsgcmV0dXJuIHRoaXMub3B0aW9ucy5sb2FkTW9kZSA/PyAnb25EZW1hbmQnOyB9XHJcbiAgZ2V0IHJvb3RWYWx1ZSgpOiBUcmVlS2V5IHwgbnVsbCB7IHJldHVybiB0aGlzLm9wdGlvbnMucm9vdFZhbHVlID09PSB1bmRlZmluZWQgPyAwIDogdGhpcy5vcHRpb25zLnJvb3RWYWx1ZTsgfVxyXG5cclxuICBrZXkocm93OiBUcmVlUm93KTogVHJlZUtleSB7XHJcbiAgICBjb25zdCBrZXkgPSByb3dbdGhpcy5vcHRpb25zLmtleUV4cHJdO1xyXG4gICAgaWYgKCh0eXBlb2Yga2V5ICE9PSAnc3RyaW5nJyAmJiB0eXBlb2Yga2V5ICE9PSAnbnVtYmVyJykgfHwga2V5ID09PSAnJyB8fFxyXG4gICAgICAgICh0eXBlb2Yga2V5ID09PSAnbnVtYmVyJyAmJiAhTnVtYmVyLmlzRmluaXRlKGtleSkpKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignVHJlZSBrZXlzIG11c3QgYmUgbm9uLWVtcHR5IHN0cmluZ3Mgb3IgZmluaXRlIG51bWJlcnMuJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ga2V5O1xyXG4gIH1cclxuXHJcbiAgcmVzdG9yZShrZXlzOiBUcmVlS2V5W10gPSBbXSwgcGFnZXM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fSk6IHZvaWQge1xyXG4gICAgdGhpcy5leHBhbmRlZC5jbGVhcigpO1xyXG4gICAga2V5cy5mb3JFYWNoKGtleSA9PiB0aGlzLmV4cGFuZGVkLmFkZChrZXkpKTtcclxuICAgIHRoaXMucmVzdG9yZWRQYWdlcyA9IHsgLi4ucGFnZXMgfTtcclxuICB9XHJcblxyXG4gIHNuYXBzaG90UGFnZXMoKTogUmVjb3JkPHN0cmluZywgbnVtYmVyPiB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFsuLi50aGlzLnBhZ2VzXS5tYXAoKFtrZXksIHBhZ2VdKSA9PiBbSlNPTi5zdHJpbmdpZnkoa2V5KSwgcGFnZV0pKTtcclxuICB9XHJcblxyXG4gIGRlcHRoKHJvdzogVHJlZVJvdyk6IG51bWJlciB7IHJldHVybiB0aGlzLmVudHJpZXMuZ2V0KHJvdyk/LmRlcHRoID8/IDA7IH1cclxuICBpc01vcmUocm93OiBUcmVlUm93KTogYm9vbGVhbiB7IHJldHVybiAhIXRoaXMuZW50cmllcy5nZXQocm93KT8ubW9yZTsgfVxyXG4gIG1vcmVQYXJlbnQocm93OiBUcmVlUm93KTogVHJlZUtleSB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLmVudHJpZXMuZ2V0KHJvdyk/LnBhcmVudDsgfVxyXG4gIGlzRXhwYW5kZWQocm93OiBUcmVlUm93KTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmV4cGFuZGVkLmhhcyh0aGlzLmtleShyb3cpKTsgfVxyXG4gIGlzTG9hZGluZyhyb3c6IFRyZWVSb3cpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMucGVuZGluZy5oYXModGhpcy5rZXkocm93KSk7IH1cclxuICBoYXNDaGlsZHJlbihyb3c6IFRyZWVSb3cpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdhbGwnKSByZXR1cm4gISF0aGlzLmNoaWxkcmVuLmdldCh0aGlzLmtleShyb3cpKT8ubGVuZ3RoO1xyXG4gICAgcmV0dXJuIHJvd1t0aGlzLm9wdGlvbnMuaGFzSXRlbXNFeHByIV0gPT09IHRydWU7XHJcbiAgfVxyXG5cclxuICBjYW5jZWwoKTogdm9pZCB7IHRoaXMudmVyc2lvbisrOyB0aGlzLmxvYWRpbmcgPSBmYWxzZTsgdGhpcy5wZW5kaW5nLmNsZWFyKCk7IH1cclxuXHJcbiAgYXN5bmMgbG9hZChwYWdlOiBudW1iZXIsIHBhZ2VTaXplOiBudW1iZXIsIGZldGNoOiAocmVxdWVzdDogSVRyZWVSZXF1ZXN0KSA9PiBQcm9taXNlPElUcmVlUmVzcG9uc2U+KTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBjb25zdCB2ZXJzaW9uID0gKyt0aGlzLnZlcnNpb247XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5wZW5kaW5nLmNsZWFyKCk7XHJcbiAgICB0aGlzLm5vZGVzLmNsZWFyKCk7IHRoaXMuY2hpbGRyZW4uY2xlYXIoKTsgdGhpcy50b3RhbHMuY2xlYXIoKTsgdGhpcy5wYWdlcy5jbGVhcigpO1xyXG4gICAgdGhpcy52aXNpYmxlID0gW107XHJcbiAgICB0aGlzLnBhZ2UgPSBwYWdlOyB0aGlzLnBhZ2VTaXplID0gcGFnZVNpemU7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHsgcm9vdHM6IHRydWUsIHBhcmVudElkOiB0aGlzLnJvb3RWYWx1ZSwgbG9hZE1vZGU6IHRoaXMubW9kZSwgcGFnZSwgcGFnZVNpemUgfSk7XHJcbiAgICAgIGlmICh2ZXJzaW9uICE9PSB0aGlzLnZlcnNpb24pIHJldHVybiBmYWxzZTtcclxuICAgICAgdGhpcy5pbnNlcnQocmVzcG9uc2UuZGF0YSk7XHJcbiAgICAgIHRoaXMucGFnZSA9IHJlc3BvbnNlLnBhZ2U7XHJcbiAgICAgIHRoaXMudG90YWxSZWNvcmRzID0gcmVzcG9uc2UudG90YWxSZWNvcmRzO1xyXG4gICAgICB0aGlzLnRvdGFsUmVjb3Jkc05vdEZpbHRlcmVkID0gcmVzcG9uc2UudG90YWxSZWNvcmRzTm90RmlsdGVyZWQ7XHJcbiAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdhbGwnKSB7XHJcbiAgICAgICAgdGhpcy5idWlsZEFsbCgpO1xyXG4gICAgICAgIHRoaXMucGFnZSA9IE1hdGgubWluKE1hdGgubWF4KDAsIHBhZ2UpLCBNYXRoLm1heCgwLCBNYXRoLmNlaWwodGhpcy5hbGxSb290cy5sZW5ndGggLyBwYWdlU2l6ZSkgLSAxKSk7XHJcbiAgICAgICAgdGhpcy5yb290cyA9IHRoaXMuYWxsUm9vdHMuc2xpY2UodGhpcy5wYWdlICogcGFnZVNpemUsICh0aGlzLnBhZ2UgKyAxKSAqIHBhZ2VTaXplKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJvb3RzID0gcmVzcG9uc2UuZGF0YS5tYXAocm93ID0+IHRoaXMua2V5KHJvdykpO1xyXG4gICAgICB9XHJcbiAgICAgIHJlc3BvbnNlLmFuY2VzdG9yS2V5cz8uZm9yRWFjaChrZXkgPT4gdGhpcy5leHBhbmRlZC5hZGQoa2V5KSk7XHJcbiAgICAgIGNvbnN0IHF1ZXVlID0gWy4uLnRoaXMucm9vdHNdO1xyXG4gICAgICBmb3IgKGxldCBjdXJzb3IgPSAwOyBjdXJzb3IgPCBxdWV1ZS5sZW5ndGg7IGN1cnNvcisrKSB7XHJcbiAgICAgICAgY29uc3Qga2V5ID0gcXVldWVbY3Vyc29yXTtcclxuICAgICAgICBjb25zdCByb3cgPSB0aGlzLm5vZGVzLmdldChrZXkpITtcclxuICAgICAgICBpZiAoIXRoaXMuZXhwYW5kZWQuaGFzKGtleSkgfHwgIXRoaXMuaGFzQ2hpbGRyZW4ocm93KSkgY29udGludWU7XHJcbiAgICAgICAgaWYgKHRoaXMubW9kZSAhPT0gJ2FsbCcpIHtcclxuICAgICAgICAgIGF3YWl0IHRoaXMuZmV0Y2hDaGlsZHJlbihrZXksIDAsIGZldGNoLCB2ZXJzaW9uKTtcclxuICAgICAgICAgIGNvbnN0IHRhcmdldFBhZ2UgPSB0aGlzLnJlc3RvcmVkUGFnZXNbSlNPTi5zdHJpbmdpZnkoa2V5KV0gPz8gMDtcclxuICAgICAgICAgIHdoaWxlICh2ZXJzaW9uID09PSB0aGlzLnZlcnNpb24gJiYgdGhpcy5tb2RlID09PSAncGFnZWRDaGlsZHJlbicgJiZcclxuICAgICAgICAgICAgICAodGhpcy5wYWdlcy5nZXQoa2V5KSA/PyAwKSA8IHRhcmdldFBhZ2UgJiYgdGhpcy5oYXNNb3JlKGtleSkpIHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5mZXRjaENoaWxkcmVuKGtleSwgKHRoaXMucGFnZXMuZ2V0KGtleSkgPz8gMCkgKyAxLCBmZXRjaCwgdmVyc2lvbik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh2ZXJzaW9uICE9PSB0aGlzLnZlcnNpb24pIHJldHVybiBmYWxzZTtcclxuICAgICAgICBxdWV1ZS5wdXNoKC4uLih0aGlzLmNoaWxkcmVuLmdldChrZXkpID8/IFtdKSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZXN0b3JlZFBhZ2VzID0ge307XHJcbiAgICAgIHRoaXMucmVidWlsZCgpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIGlmICh2ZXJzaW9uID09PSB0aGlzLnZlcnNpb24pIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgdG9nZ2xlKHJvdzogVHJlZVJvdywgZmV0Y2g6IChyZXF1ZXN0OiBJVHJlZVJlcXVlc3QpID0+IFByb21pc2U8SVRyZWVSZXNwb25zZT4pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IGtleSA9IHRoaXMua2V5KHJvdyk7XHJcbiAgICBpZiAodGhpcy5wZW5kaW5nLmhhcyhrZXkpKSByZXR1cm47XHJcbiAgICBpZiAodGhpcy5leHBhbmRlZC5kZWxldGUoa2V5KSkgeyB0aGlzLnJlYnVpbGQoKTsgcmV0dXJuOyB9XHJcbiAgICB0aGlzLmV4cGFuZGVkLmFkZChrZXkpO1xyXG4gICAgY29uc3QgdmVyc2lvbiA9IHRoaXMudmVyc2lvbjtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHF1ZXVlID0gW2tleV07XHJcbiAgICAgIGZvciAobGV0IGN1cnNvciA9IDA7IGN1cnNvciA8IHF1ZXVlLmxlbmd0aDsgY3Vyc29yKyspIHtcclxuICAgICAgICBjb25zdCBjdXJyZW50ID0gcXVldWVbY3Vyc29yXTtcclxuICAgICAgICBpZiAodGhpcy5tb2RlICE9PSAnYWxsJyAmJiAhdGhpcy5jaGlsZHJlbi5oYXMoY3VycmVudCkpIGF3YWl0IHRoaXMuZmV0Y2hDaGlsZHJlbihjdXJyZW50LCAwLCBmZXRjaCwgdmVyc2lvbik7XHJcbiAgICAgICAgaWYgKHZlcnNpb24gIT09IHRoaXMudmVyc2lvbikgcmV0dXJuO1xyXG4gICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZHJlbi5nZXQoY3VycmVudCkgPz8gW10pIHtcclxuICAgICAgICAgIGlmICh0aGlzLmV4cGFuZGVkLmhhcyhjaGlsZCkgJiYgdGhpcy5oYXNDaGlsZHJlbih0aGlzLm5vZGVzLmdldChjaGlsZCkhKSkgcXVldWUucHVzaChjaGlsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVidWlsZCgpO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgaWYgKHZlcnNpb24gPT09IHRoaXMudmVyc2lvbikgdGhpcy5leHBhbmRlZC5kZWxldGUoa2V5KTtcclxuICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBsb2FkTW9yZShyb3c6IFRyZWVSb3csIGZldGNoOiAocmVxdWVzdDogSVRyZWVSZXF1ZXN0KSA9PiBQcm9taXNlPElUcmVlUmVzcG9uc2U+KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLm1vcmVQYXJlbnQocm93KTtcclxuICAgIGlmIChwYXJlbnQgPT09IHVuZGVmaW5lZCB8fCB0aGlzLnBlbmRpbmcuaGFzKHBhcmVudCkpIHJldHVybjtcclxuICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLnZlcnNpb247XHJcbiAgICBhd2FpdCB0aGlzLmZldGNoQ2hpbGRyZW4ocGFyZW50LCAodGhpcy5wYWdlcy5nZXQocGFyZW50KSA/PyAwKSArIDEsIGZldGNoLCB2ZXJzaW9uKTtcclxuICAgIGlmICh2ZXJzaW9uID09PSB0aGlzLnZlcnNpb24pIHRoaXMucmVidWlsZCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbnNlcnQocm93czogVHJlZVJvd1tdKTogdm9pZCB7XHJcbiAgICBjb25zdCBrZXlzID0gbmV3IFNldDxUcmVlS2V5PigpO1xyXG4gICAgZm9yIChjb25zdCByb3cgb2Ygcm93cykge1xyXG4gICAgICBjb25zdCBrZXkgPSB0aGlzLmtleShyb3cpO1xyXG4gICAgICBpZiAoa2V5cy5oYXMoa2V5KSB8fCB0aGlzLm5vZGVzLmhhcyhrZXkpKSB0aHJvdyBuZXcgRXJyb3IoJ0R1cGxpY2F0ZSB0cmVlIGtleS4nKTtcclxuICAgICAga2V5cy5hZGQoa2V5KTtcclxuICAgIH1cclxuICAgIGZvciAoY29uc3Qgcm93IG9mIHJvd3MpIHRoaXMubm9kZXMuc2V0KHRoaXMua2V5KHJvdyksIHJvdyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkQWxsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hbGxSb290cyA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBba2V5LCByb3ddIG9mIHRoaXMubm9kZXMpIHtcclxuICAgICAgY29uc3QgcGFyZW50ID0gcm93W3RoaXMub3B0aW9ucy5wYXJlbnRJZEV4cHJdO1xyXG4gICAgICBpZiAocGFyZW50ID09PSB0aGlzLnJvb3RWYWx1ZSkgdGhpcy5hbGxSb290cy5wdXNoKGtleSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICghdGhpcy5ub2Rlcy5oYXMocGFyZW50IGFzIFRyZWVLZXkpKSB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgdHJlZSBwYXJlbnQuJyk7XHJcbiAgICAgICAgY29uc3Qgc2libGluZ3MgPSB0aGlzLmNoaWxkcmVuLmdldChwYXJlbnQgYXMgVHJlZUtleSkgPz8gW107XHJcbiAgICAgICAgc2libGluZ3MucHVzaChrZXkpOyB0aGlzLmNoaWxkcmVuLnNldChwYXJlbnQgYXMgVHJlZUtleSwgc2libGluZ3MpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBzZWVuID0gbmV3IFNldDxUcmVlS2V5PigpO1xyXG4gICAgY29uc3QgcXVldWUgPSBbLi4udGhpcy5hbGxSb290c107XHJcbiAgICBmb3IgKGxldCBjdXJzb3IgPSAwOyBjdXJzb3IgPCBxdWV1ZS5sZW5ndGg7IGN1cnNvcisrKSB7XHJcbiAgICAgIGNvbnN0IGtleSA9IHF1ZXVlW2N1cnNvcl07XHJcbiAgICAgIGlmIChzZWVuLmhhcyhrZXkpKSB0aHJvdyBuZXcgRXJyb3IoJ1RyZWUgY3ljbGUuJyk7XHJcbiAgICAgIHNlZW4uYWRkKGtleSk7IHF1ZXVlLnB1c2goLi4uKHRoaXMuY2hpbGRyZW4uZ2V0KGtleSkgPz8gW10pKTtcclxuICAgIH1cclxuICAgIGlmIChzZWVuLnNpemUgIT09IHRoaXMubm9kZXMuc2l6ZSkgdGhyb3cgbmV3IEVycm9yKCdUcmVlIGN5Y2xlLicpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBmZXRjaENoaWxkcmVuKGtleTogVHJlZUtleSwgcGFnZTogbnVtYmVyLCBmZXRjaDogKHJlcXVlc3Q6IElUcmVlUmVxdWVzdCkgPT4gUHJvbWlzZTxJVHJlZVJlc3BvbnNlPiwgdmVyc2lvbjogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLnBlbmRpbmcuYWRkKGtleSk7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHsgcm9vdHM6IGZhbHNlLCBwYXJlbnRJZDoga2V5LCBsb2FkTW9kZTogdGhpcy5tb2RlLCBwYWdlLCBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSB9KTtcclxuICAgICAgaWYgKHZlcnNpb24gIT09IHRoaXMudmVyc2lvbikgcmV0dXJuO1xyXG4gICAgICBmb3IgKGNvbnN0IHJvdyBvZiByZXNwb25zZS5kYXRhKSB7XHJcbiAgICAgICAgaWYgKHJvd1t0aGlzLm9wdGlvbnMucGFyZW50SWRFeHByXSAhPT0ga2V5KSB0aHJvdyBuZXcgRXJyb3IoJ1VuZXhwZWN0ZWQgdHJlZSBwYXJlbnQuJyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5pbnNlcnQocmVzcG9uc2UuZGF0YSk7XHJcbiAgICAgIHRoaXMuY2hpbGRyZW4uc2V0KGtleSwgWy4uLih0aGlzLmNoaWxkcmVuLmdldChrZXkpID8/IFtdKSwgLi4ucmVzcG9uc2UuZGF0YS5tYXAocm93ID0+IHRoaXMua2V5KHJvdykpXSk7XHJcbiAgICAgIHRoaXMudG90YWxzLnNldChrZXksIHJlc3BvbnNlLnRvdGFsUmVjb3Jkcyk7XHJcbiAgICAgIHRoaXMucGFnZXMuc2V0KGtleSwgcmVzcG9uc2UucGFnZSk7XHJcbiAgICAgIHJlc3BvbnNlLmFuY2VzdG9yS2V5cz8uZm9yRWFjaChhbmNlc3RvciA9PiB0aGlzLmV4cGFuZGVkLmFkZChhbmNlc3RvcikpO1xyXG4gICAgfSBmaW5hbGx5IHtcclxuICAgICAgaWYgKHZlcnNpb24gPT09IHRoaXMudmVyc2lvbikgdGhpcy5wZW5kaW5nLmRlbGV0ZShrZXkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYXNNb3JlKGtleTogVHJlZUtleSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICh0aGlzLmNoaWxkcmVuLmdldChrZXkpPy5sZW5ndGggPz8gMCkgPCAodGhpcy50b3RhbHMuZ2V0KGtleSkgPz8gMCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlYnVpbGQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVudHJpZXMgPSBuZXcgV2Vha01hcCgpO1xyXG4gICAgY29uc3QgcmVzdWx0OiBUcmVlUm93W10gPSBbXTtcclxuICAgIGNvbnN0IHN0YWNrOiBUcmVlRW50cnlbXSA9IHRoaXMucm9vdHMubWFwKGtleSA9PiAoeyByb3c6IHRoaXMubm9kZXMuZ2V0KGtleSkhLCBkZXB0aDogMCB9KSkucmV2ZXJzZSgpO1xyXG4gICAgd2hpbGUgKHN0YWNrLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBlbnRyeSA9IHN0YWNrLnBvcCgpITtcclxuICAgICAgdGhpcy5lbnRyaWVzLnNldChlbnRyeS5yb3csIGVudHJ5KTsgcmVzdWx0LnB1c2goZW50cnkucm93KTtcclxuICAgICAgaWYgKGVudHJ5Lm1vcmUpIGNvbnRpbnVlO1xyXG4gICAgICBjb25zdCBrZXkgPSB0aGlzLmtleShlbnRyeS5yb3cpO1xyXG4gICAgICBpZiAoIXRoaXMuZXhwYW5kZWQuaGFzKGtleSkpIGNvbnRpbnVlO1xyXG4gICAgICBpZiAodGhpcy5oYXNNb3JlKGtleSkpIHN0YWNrLnB1c2goeyByb3c6IHt9LCBkZXB0aDogZW50cnkuZGVwdGggKyAxLCBwYXJlbnQ6IGtleSwgbW9yZTogdHJ1ZSB9KTtcclxuICAgICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuLmdldChrZXkpID8/IFtdO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IGNoaWxkcmVuLmxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pIHtcclxuICAgICAgICBzdGFjay5wdXNoKHsgcm93OiB0aGlzLm5vZGVzLmdldChjaGlsZHJlbltpbmRleF0pISwgZGVwdGg6IGVudHJ5LmRlcHRoICsgMSwgcGFyZW50OiBrZXkgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMudmlzaWJsZSA9IHJlc3VsdDtcclxuICB9XHJcbn0iXX0=
@@ -0,0 +1,19 @@
1
+ /*
2
+ * Public API Surface of ecs-primeng-table
3
+ */
4
+ // ENUMS
5
+ export * from './lib/enums';
6
+ // INTERFACES
7
+ export * from './lib/interfaces/columns-metadata.interface';
8
+ export * from './lib/interfaces/predefined-filter.interface';
9
+ export * from './lib/interfaces/table-button.interface';
10
+ export * from './lib/interfaces/table-options.interface';
11
+ // UTILS
12
+ export * from "./lib/utils/create-table-options";
13
+ export * from './lib/utils/tree-table-state';
14
+ // SERVICES
15
+ export * from './lib/services';
16
+ // COMPONENTS AND DEPENDENCIES
17
+ export * from './lib/components/ecs-primeng-table/ecs-primeng-table';
18
+ export * from './lib/components/ecs-primeng-table/ecs-primeng-table.service';
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2Vjcy1wcmltZW5nLXRhYmxlL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsUUFBUTtBQUNSLGNBQWMsYUFBYSxDQUFDO0FBRTVCLGFBQWE7QUFDYixjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLDBDQUEwQyxDQUFDO0FBRXpELFFBQVE7QUFDUixjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsOEJBQThCLENBQUM7QUFFN0MsV0FBVztBQUNYLGNBQWMsZ0JBQWdCLENBQUM7QUFFL0IsOEJBQThCO0FBQzlCLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyw4REFBOEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBlY3MtcHJpbWVuZy10YWJsZVxyXG4gKi9cclxuLy8gRU5VTVNcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZW51bXMnO1xyXG5cclxuLy8gSU5URVJGQUNFU1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlcmZhY2VzL2NvbHVtbnMtbWV0YWRhdGEuaW50ZXJmYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJmYWNlcy9wcmVkZWZpbmVkLWZpbHRlci5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlcmZhY2VzL3RhYmxlLWJ1dHRvbi5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlcmZhY2VzL3RhYmxlLW9wdGlvbnMuaW50ZXJmYWNlJztcclxuXHJcbi8vIFVUSUxTXHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi91dGlscy9jcmVhdGUtdGFibGUtb3B0aW9uc1wiO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy90cmVlLXRhYmxlLXN0YXRlJztcclxuXHJcbi8vIFNFUlZJQ0VTXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzJztcclxuXHJcbi8vIENPTVBPTkVOVFMgQU5EIERFUEVOREVOQ0lFU1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Vjcy1wcmltZW5nLXRhYmxlL2Vjcy1wcmltZW5nLXRhYmxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9lY3MtcHJpbWVuZy10YWJsZS9lY3MtcHJpbWVuZy10YWJsZS5zZXJ2aWNlJzsiXX0=