@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.
- package/README.md +279 -3
- package/esm2020/competer-primeng-table.mjs +5 -0
- package/esm2020/lib/components/column-selector/column-selector.mjs +147 -0
- package/esm2020/lib/components/ecs-primeng-table/ecs-primeng-table.mjs +1411 -0
- package/esm2020/lib/components/ecs-primeng-table/ecs-primeng-table.service.mjs +222 -0
- package/esm2020/lib/components/export-excel/export-excel.mjs +153 -0
- package/esm2020/lib/components/export-excel/export-excel.service.mjs +23 -0
- package/esm2020/lib/components/table-button/table-button.mjs +63 -0
- package/esm2020/lib/components/table-cell/table-cell.mjs +159 -0
- package/esm2020/lib/components/table-predefined-filters/table-predefined-filters.mjs +94 -0
- package/esm2020/lib/components/views-management/views-management.mjs +117 -0
- package/esm2020/lib/enums/cell-display.enum.mjs +7 -0
- package/esm2020/lib/enums/cell-overflow-behaviour.enum.mjs +14 -0
- package/esm2020/lib/enums/data-align-horizontal.enum.mjs +16 -0
- package/esm2020/lib/enums/data-align-vertical.enum.mjs +16 -0
- package/esm2020/lib/enums/data-type.enum.enum.mjs +21 -0
- package/esm2020/lib/enums/device-type.enum.mjs +8 -0
- package/esm2020/lib/enums/frozen-column-align.enum.mjs +17 -0
- package/esm2020/lib/enums/index.mjs +9 -0
- package/esm2020/lib/enums/table-view-save-mode.enum.mjs +19 -0
- package/esm2020/lib/interfaces/columns-metadata.interface.mjs +2 -0
- package/esm2020/lib/interfaces/excel-export-request.interface.mjs +2 -0
- package/esm2020/lib/interfaces/index.mjs +11 -0
- package/esm2020/lib/interfaces/predefined-filter.interface.mjs +2 -0
- package/esm2020/lib/interfaces/table-button.interface.mjs +2 -0
- package/esm2020/lib/interfaces/table-configuration.interface.mjs +2 -0
- package/esm2020/lib/interfaces/table-options.interface.mjs +107 -0
- package/esm2020/lib/interfaces/table-paged-response.interface.mjs +2 -0
- package/esm2020/lib/interfaces/table-query-request.interface.mjs +2 -0
- package/esm2020/lib/interfaces/table-view-data.interface.mjs +2 -0
- package/esm2020/lib/interfaces/table-view.interface.mjs +2 -0
- package/esm2020/lib/pipes/ui-translate.pipe.mjs +21 -0
- package/esm2020/lib/services/http.service.mjs +18 -0
- package/esm2020/lib/services/i18n.service.mjs +61 -0
- package/esm2020/lib/services/index.mjs +5 -0
- package/esm2020/lib/services/notification.service.mjs +17 -0
- package/esm2020/lib/services/table-state.service.mjs +38 -0
- package/esm2020/lib/utils/create-table-options.mjs +37 -0
- package/esm2020/lib/utils/data-align-horizontal-as-text.mjs +23 -0
- package/esm2020/lib/utils/data-align-vertical-as-text.mjs +23 -0
- package/esm2020/lib/utils/data-type-as-text.mjs +25 -0
- package/esm2020/lib/utils/frozen-column-align-as-text.mjs +21 -0
- package/esm2020/lib/utils/highlight-text.mjs +36 -0
- package/esm2020/lib/utils/index.mjs +7 -0
- package/esm2020/lib/utils/tree-table-state.mjs +239 -0
- package/esm2020/public-api.mjs +19 -0
- package/fesm2015/competer-primeng-table.mjs +3119 -0
- package/fesm2015/competer-primeng-table.mjs.map +1 -0
- package/fesm2020/competer-primeng-table.mjs +3049 -0
- package/fesm2020/competer-primeng-table.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/column-selector/column-selector.d.ts +55 -0
- package/lib/components/ecs-primeng-table/ecs-primeng-table.d.ts +256 -0
- package/lib/components/ecs-primeng-table/ecs-primeng-table.service.d.ts +52 -0
- package/lib/components/export-excel/export-excel.d.ts +51 -0
- package/lib/components/export-excel/export-excel.service.d.ts +6 -0
- package/lib/components/table-button/table-button.d.ts +16 -0
- package/lib/components/table-cell/table-cell.d.ts +69 -0
- package/lib/components/table-predefined-filters/table-predefined-filters.d.ts +39 -0
- package/lib/components/views-management/views-management.d.ts +34 -0
- package/lib/enums/cell-display.enum.d.ts +5 -0
- package/lib/enums/cell-overflow-behaviour.enum.d.ts +12 -0
- package/lib/enums/data-align-horizontal.enum.d.ts +14 -0
- package/lib/enums/data-align-vertical.enum.d.ts +14 -0
- package/lib/enums/data-type.enum.enum.d.ts +19 -0
- package/lib/enums/device-type.enum.d.ts +6 -0
- package/lib/enums/frozen-column-align.enum.d.ts +15 -0
- package/lib/enums/index.d.ts +8 -0
- package/lib/enums/table-view-save-mode.enum.d.ts +17 -0
- package/lib/interfaces/columns-metadata.interface.d.ts +66 -0
- package/lib/interfaces/excel-export-request.interface.d.ts +20 -0
- package/lib/interfaces/index.d.ts +10 -0
- package/lib/interfaces/predefined-filter.interface.d.ts +101 -0
- package/lib/interfaces/table-button.interface.d.ts +75 -0
- package/lib/interfaces/table-configuration.interface.d.ts +23 -0
- package/lib/interfaces/table-options.interface.d.ts +604 -0
- package/lib/interfaces/table-paged-response.interface.d.ts +16 -0
- package/lib/interfaces/table-query-request.interface.d.ts +28 -0
- package/lib/interfaces/table-view-data.interface.d.ts +28 -0
- package/lib/interfaces/table-view.interface.d.ts +15 -0
- package/lib/pipes/ui-translate.pipe.d.ts +13 -0
- package/lib/services/http.service.d.ts +34 -0
- package/lib/services/i18n.service.d.ts +20 -0
- package/lib/services/index.d.ts +4 -0
- package/lib/services/notification.service.d.ts +23 -0
- package/lib/services/table-state.service.d.ts +31 -0
- package/lib/utils/create-table-options.d.ts +5 -0
- package/lib/utils/data-align-horizontal-as-text.d.ts +11 -0
- package/lib/utils/data-align-vertical-as-text.d.ts +11 -0
- package/lib/utils/data-type-as-text.d.ts +11 -0
- package/lib/utils/frozen-column-align-as-text.d.ts +11 -0
- package/lib/utils/highlight-text.d.ts +17 -0
- package/lib/utils/index.d.ts +6 -0
- package/lib/utils/tree-table-state.d.ts +66 -0
- package/package.json +58 -3
- 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=
|