@oneteme/jquery-table 0.0.1 → 0.0.3
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 +439 -122
- package/esm2022/lib/component/export.manager.mjs +45 -0
- package/esm2022/lib/component/group-by.manager.mjs +99 -0
- package/esm2022/lib/component/lazy-column-manager.mjs +99 -0
- package/esm2022/lib/component/slice-panel/slice-panel.component.mjs +43 -37
- package/esm2022/lib/component/slice-panel/slice-panel.model.mjs +1 -1
- package/esm2022/lib/component/table-preferences.manager.mjs +38 -0
- package/esm2022/lib/component/table.component.mjs +732 -370
- package/esm2022/lib/component/table.constants.mjs +31 -0
- package/esm2022/lib/component/table.utils.mjs +2 -2
- package/esm2022/lib/component/view/view.facade.mjs +304 -0
- package/esm2022/lib/jqt-i18n.token.mjs +41 -0
- package/esm2022/lib/jquery-table.model.mjs +14 -2
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/oneteme-jquery-table.mjs +1434 -408
- package/fesm2022/oneteme-jquery-table.mjs.map +1 -1
- package/lib/component/export.manager.d.ts +16 -0
- package/lib/component/group-by.manager.d.ts +44 -0
- package/lib/component/lazy-column-manager.d.ts +26 -0
- package/lib/component/slice-panel/slice-panel.component.d.ts +11 -3
- package/lib/component/slice-panel/slice-panel.model.d.ts +11 -1
- package/lib/component/table-preferences.manager.d.ts +17 -0
- package/lib/component/table.component.d.ts +165 -27
- package/lib/component/table.constants.d.ts +30 -0
- package/lib/component/view/view.facade.d.ts +95 -0
- package/lib/jqt-i18n.token.d.ts +87 -0
- package/lib/jquery-table.model.d.ts +82 -0
- package/package.json +2 -2
- package/public-api.d.ts +1 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Constantes sentinel utilisées pour les identifiants de colonnes et les valeurs
|
|
3
|
+
* projetées dans le datasource interne de la table.
|
|
4
|
+
*
|
|
5
|
+
* Centraliser ici évite les typos silencieuses et facilite les tests unitaires.
|
|
6
|
+
*/
|
|
7
|
+
/** Identifiant de la colonne virtuelle rendue sur toute la largeur pour les en-têtes de groupe. */
|
|
8
|
+
export const GROUP_ROW_COLUMN = '__group_row';
|
|
9
|
+
/** Marqueur posé sur les objets de ligne pour signaler une ligne d'en-tête de groupe. */
|
|
10
|
+
export const GROUP_HEADER_MARKER = '__groupHeader';
|
|
11
|
+
/** Clé du groupe spéciale « chargement lazy en cours ». */
|
|
12
|
+
export const GROUP_KEY_LAZY_LOADING = '__lazy_loading__';
|
|
13
|
+
/** Clé du groupe spéciale « trop de groupes ». */
|
|
14
|
+
export const GROUP_KEY_TOO_MANY = '__too_many_groups__';
|
|
15
|
+
/** Propriété injectée dans chaque ligne projetée : référence vers la ligne brute d'origine. */
|
|
16
|
+
export const ROW_RAW_KEY = '__raw';
|
|
17
|
+
/** Propriété injectée dans chaque ligne projetée : index global de la ligne dans le jeu de données filtré. */
|
|
18
|
+
export const ROW_INDEX_KEY = '__index';
|
|
19
|
+
/** Propriété injectée dans chaque ligne projetée : clé du groupe auquel appartient la ligne d'en-tête. */
|
|
20
|
+
export const ROW_GROUP_KEY = '__groupKey';
|
|
21
|
+
/** Propriété injectée dans chaque ligne projetée : nombre de lignes dans le groupe. */
|
|
22
|
+
export const ROW_GROUP_COUNT = '__groupCount';
|
|
23
|
+
/** Propriété injectée dans chaque ligne projetée : page courante du groupe. */
|
|
24
|
+
export const ROW_GROUP_PAGE = '__groupPage';
|
|
25
|
+
/** Propriété injectée dans chaque ligne projetée : nombre de pages du groupe. */
|
|
26
|
+
export const ROW_GROUP_PAGE_COUNT = '__groupPageCount';
|
|
27
|
+
/** Valeur sentinelle posée dans une cellule lazy en cours de chargement. */
|
|
28
|
+
export const LAZY_LOADING_VALUE = '__lazy_loading__';
|
|
29
|
+
/** Valeur sentinelle posée dans une cellule lazy en erreur. */
|
|
30
|
+
export const LAZY_ERROR_VALUE = '__lazy_error__';
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25ldGVtZS9qcXVlcnktdGFibGUvc3JjL2xpYi9jb21wb25lbnQvdGFibGUuY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsbUdBQW1HO0FBQ25HLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLGFBQWEsQ0FBQztBQUU5Qyx5RkFBeUY7QUFDekYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsZUFBZSxDQUFDO0FBRW5ELDJEQUEyRDtBQUMzRCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxrQkFBa0IsQ0FBQztBQUV6RCxrREFBa0Q7QUFDbEQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcscUJBQXFCLENBQUM7QUFFeEQsK0ZBQStGO0FBQy9GLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUM7QUFFbkMsOEdBQThHO0FBQzlHLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFFdkMsMEdBQTBHO0FBQzFHLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUM7QUFFMUMsdUZBQXVGO0FBQ3ZGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxjQUFjLENBQUM7QUFFOUMsK0VBQStFO0FBQy9FLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxhQUFhLENBQUM7QUFFNUMsaUZBQWlGO0FBQ2pGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLGtCQUFrQixDQUFDO0FBRXZELDRFQUE0RTtBQUM1RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztBQUVyRCwrREFBK0Q7QUFDL0QsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnN0YW50ZXMgc2VudGluZWwgdXRpbGlzw6llcyBwb3VyIGxlcyBpZGVudGlmaWFudHMgZGUgY29sb25uZXMgZXQgbGVzIHZhbGV1cnNcbiAqIHByb2pldMOpZXMgZGFucyBsZSBkYXRhc291cmNlIGludGVybmUgZGUgbGEgdGFibGUuXG4gKlxuICogQ2VudHJhbGlzZXIgaWNpIMOpdml0ZSBsZXMgdHlwb3Mgc2lsZW5jaWV1c2VzIGV0IGZhY2lsaXRlIGxlcyB0ZXN0cyB1bml0YWlyZXMuXG4gKi9cblxuLyoqIElkZW50aWZpYW50IGRlIGxhIGNvbG9ubmUgdmlydHVlbGxlIHJlbmR1ZSBzdXIgdG91dGUgbGEgbGFyZ2V1ciBwb3VyIGxlcyBlbi10w6p0ZXMgZGUgZ3JvdXBlLiAqL1xuZXhwb3J0IGNvbnN0IEdST1VQX1JPV19DT0xVTU4gPSAnX19ncm91cF9yb3cnO1xuXG4vKiogTWFycXVldXIgcG9zw6kgc3VyIGxlcyBvYmpldHMgZGUgbGlnbmUgcG91ciBzaWduYWxlciB1bmUgbGlnbmUgZCdlbi10w6p0ZSBkZSBncm91cGUuICovXG5leHBvcnQgY29uc3QgR1JPVVBfSEVBREVSX01BUktFUiA9ICdfX2dyb3VwSGVhZGVyJztcblxuLyoqIENsw6kgZHUgZ3JvdXBlIHNww6ljaWFsZSDCqyBjaGFyZ2VtZW50IGxhenkgZW4gY291cnMgwrsuICovXG5leHBvcnQgY29uc3QgR1JPVVBfS0VZX0xBWllfTE9BRElORyA9ICdfX2xhenlfbG9hZGluZ19fJztcblxuLyoqIENsw6kgZHUgZ3JvdXBlIHNww6ljaWFsZSDCqyB0cm9wIGRlIGdyb3VwZXMgwrsuICovXG5leHBvcnQgY29uc3QgR1JPVVBfS0VZX1RPT19NQU5ZID0gJ19fdG9vX21hbnlfZ3JvdXBzX18nO1xuXG4vKiogUHJvcHJpw6l0w6kgaW5qZWN0w6llIGRhbnMgY2hhcXVlIGxpZ25lIHByb2pldMOpZSA6IHLDqWbDqXJlbmNlIHZlcnMgbGEgbGlnbmUgYnJ1dGUgZCdvcmlnaW5lLiAqL1xuZXhwb3J0IGNvbnN0IFJPV19SQVdfS0VZID0gJ19fcmF3JztcblxuLyoqIFByb3ByacOpdMOpIGluamVjdMOpZSBkYW5zIGNoYXF1ZSBsaWduZSBwcm9qZXTDqWUgOiBpbmRleCBnbG9iYWwgZGUgbGEgbGlnbmUgZGFucyBsZSBqZXUgZGUgZG9ubsOpZXMgZmlsdHLDqS4gKi9cbmV4cG9ydCBjb25zdCBST1dfSU5ERVhfS0VZID0gJ19faW5kZXgnO1xuXG4vKiogUHJvcHJpw6l0w6kgaW5qZWN0w6llIGRhbnMgY2hhcXVlIGxpZ25lIHByb2pldMOpZSA6IGNsw6kgZHUgZ3JvdXBlIGF1cXVlbCBhcHBhcnRpZW50IGxhIGxpZ25lIGQnZW4tdMOqdGUuICovXG5leHBvcnQgY29uc3QgUk9XX0dST1VQX0tFWSA9ICdfX2dyb3VwS2V5JztcblxuLyoqIFByb3ByacOpdMOpIGluamVjdMOpZSBkYW5zIGNoYXF1ZSBsaWduZSBwcm9qZXTDqWUgOiBub21icmUgZGUgbGlnbmVzIGRhbnMgbGUgZ3JvdXBlLiAqL1xuZXhwb3J0IGNvbnN0IFJPV19HUk9VUF9DT1VOVCA9ICdfX2dyb3VwQ291bnQnO1xuXG4vKiogUHJvcHJpw6l0w6kgaW5qZWN0w6llIGRhbnMgY2hhcXVlIGxpZ25lIHByb2pldMOpZSA6IHBhZ2UgY291cmFudGUgZHUgZ3JvdXBlLiAqL1xuZXhwb3J0IGNvbnN0IFJPV19HUk9VUF9QQUdFID0gJ19fZ3JvdXBQYWdlJztcblxuLyoqIFByb3ByacOpdMOpIGluamVjdMOpZSBkYW5zIGNoYXF1ZSBsaWduZSBwcm9qZXTDqWUgOiBub21icmUgZGUgcGFnZXMgZHUgZ3JvdXBlLiAqL1xuZXhwb3J0IGNvbnN0IFJPV19HUk9VUF9QQUdFX0NPVU5UID0gJ19fZ3JvdXBQYWdlQ291bnQnO1xuXG4vKiogVmFsZXVyIHNlbnRpbmVsbGUgcG9zw6llIGRhbnMgdW5lIGNlbGx1bGUgbGF6eSBlbiBjb3VycyBkZSBjaGFyZ2VtZW50LiAqL1xuZXhwb3J0IGNvbnN0IExBWllfTE9BRElOR19WQUxVRSA9ICdfX2xhenlfbG9hZGluZ19fJztcblxuLyoqIFZhbGV1ciBzZW50aW5lbGxlIHBvc8OpZSBkYW5zIHVuZSBjZWxsdWxlIGxhenkgZW4gZXJyZXVyLiAqL1xuZXhwb3J0IGNvbnN0IExBWllfRVJST1JfVkFMVUUgPSAnX19sYXp5X2Vycm9yX18nO1xuIl19
|
|
@@ -30,7 +30,7 @@ export function normalizeCellValue(value) {
|
|
|
30
30
|
return '';
|
|
31
31
|
}
|
|
32
32
|
if (value instanceof Date) {
|
|
33
|
-
return value.toLocaleString(
|
|
33
|
+
return value.toLocaleString();
|
|
34
34
|
}
|
|
35
35
|
if (Array.isArray(value)) {
|
|
36
36
|
return value.map((item) => normalizeCellValue(item)).join(', ');
|
|
@@ -56,4 +56,4 @@ export function humanizeKey(key) {
|
|
|
56
56
|
.replaceAll(/[_-]+/g, ' ')
|
|
57
57
|
.replace(/^./, (value) => value.toUpperCase());
|
|
58
58
|
}
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmV0ZW1lL2pxdWVyeS10YWJsZS9zcmMvbGliL2NvbXBvbmVudC90YWJsZS51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUvRCxvREFBb0Q7QUFDcEQsTUFBTSxVQUFVLHNCQUFzQjtJQUNwQyxNQUFNLElBQUksR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7SUFDcEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLHFCQUFxQixDQUFDO0lBQy9DLElBQUksQ0FBQyxhQUFhLEdBQUcsZUFBZSxDQUFDO0lBQ3JDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztJQUMzQyxJQUFJLENBQUMsY0FBYyxHQUFHLGVBQWUsQ0FBQztJQUN0QyxJQUFJLENBQUMsYUFBYSxHQUFHLGVBQWUsQ0FBQztJQUNyQyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsSUFBWSxFQUFFLFFBQWdCLEVBQUUsTUFBYyxFQUFFLEVBQUU7UUFDdEUsSUFBSSxNQUFNLEtBQUssQ0FBQyxJQUFJLFFBQVEsS0FBSyxDQUFDO1lBQUUsT0FBTyxTQUFTLE1BQU0sRUFBRSxDQUFDO1FBQzdELE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3QixNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsUUFBUSxDQUFDO1FBQzlCLE1BQU0sR0FBRyxHQUFHLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztRQUNuRixPQUFPLEdBQUcsS0FBSyxHQUFHLENBQUMsTUFBTSxHQUFHLFFBQVEsTUFBTSxFQUFFLENBQUM7SUFDL0MsQ0FBQyxDQUFDO0lBQ0YsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxLQUFVO0lBQzNDLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1FBQ3pDLE9BQU8sRUFBRSxDQUFDO0tBQ1g7SUFDRCxJQUFJLEtBQUssWUFBWSxJQUFJLEVBQUU7UUFDekIsT0FBTyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7S0FDL0I7SUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDeEIsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNqRTtJQUNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLElBQUksT0FBTyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUNqRCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDNUI7UUFDRCxJQUFJLE1BQU0sSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7WUFDL0MsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzNCO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQzlCO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxHQUFXO0lBQ3JDLE9BQU8sR0FBRztTQUNQLFVBQVUsQ0FBQyxvQkFBb0IsRUFBRSxPQUFPLENBQUM7U0FDekMsVUFBVSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUM7U0FDekIsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDbkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1hdFBhZ2luYXRvckludGwgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuXG4vKiogVHJhZHVjdGlvbnMgZnJhbsOnYWlzZXMgZHUgcGFnaW5hdG9yIE1hdGVyaWFsLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZyZW5jaFBhZ2luYXRvckludGwoKTogTWF0UGFnaW5hdG9ySW50bCB7XG4gIGNvbnN0IGludGwgPSBuZXcgTWF0UGFnaW5hdG9ySW50bCgpO1xuICBpbnRsLml0ZW1zUGVyUGFnZUxhYmVsID0gJ8OJbMOpbWVudHMgcGFyIHBhZ2UgOic7XG4gIGludGwubmV4dFBhZ2VMYWJlbCA9ICdQYWdlIHN1aXZhbnRlJztcbiAgaW50bC5wcmV2aW91c1BhZ2VMYWJlbCA9ICdQYWdlIHByw6ljw6lkZW50ZSc7XG4gIGludGwuZmlyc3RQYWdlTGFiZWwgPSAnUHJlbWnDqHJlIHBhZ2UnO1xuICBpbnRsLmxhc3RQYWdlTGFiZWwgPSAnRGVybmnDqHJlIHBhZ2UnO1xuICBpbnRsLmdldFJhbmdlTGFiZWwgPSAocGFnZTogbnVtYmVyLCBwYWdlU2l6ZTogbnVtYmVyLCBsZW5ndGg6IG51bWJlcikgPT4ge1xuICAgIGlmIChsZW5ndGggPT09IDAgfHwgcGFnZVNpemUgPT09IDApIHJldHVybiBgMCBzdXIgJHtsZW5ndGh9YDtcbiAgICBsZW5ndGggPSBNYXRoLm1heChsZW5ndGgsIDApO1xuICAgIGNvbnN0IHN0YXJ0ID0gcGFnZSAqIHBhZ2VTaXplO1xuICAgIGNvbnN0IGVuZCA9IHN0YXJ0IDwgbGVuZ3RoID8gTWF0aC5taW4oc3RhcnQgKyBwYWdlU2l6ZSwgbGVuZ3RoKSA6IHN0YXJ0ICsgcGFnZVNpemU7XG4gICAgcmV0dXJuIGAke3N0YXJ0ICsgMX0g4oCTICR7ZW5kfSBzdXIgJHtsZW5ndGh9YDtcbiAgfTtcbiAgcmV0dXJuIGludGw7XG59XG5cbi8qKlxuICogQ29udmVydGl0IHVuZSB2YWxldXIgYnJ1dGUgZW4gY2hhw65uZSBhZmZpY2hhYmxlLlxuICogLSBudWxsL3VuZGVmaW5lZCDihpIgJydcbiAqIC0gRGF0ZSDihpIgZm9ybWF0IGxvY2FsZSBmci1GUlxuICogLSBUYWJsZWF1IOKGkiB2YWxldXJzIGpvaW50ZXMgcGFyICcsICdcbiAqIC0gT2JqZXQgYXZlYyBsYWJlbC9uYW1lIOKGkiBzYSB2YWxldXIgc3RyaW5nXG4gKiAtIEF1dHJlcyDihpIgU3RyaW5nKHZhbHVlKVxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplQ2VsbFZhbHVlKHZhbHVlOiBhbnkpOiBhbnkge1xuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvTG9jYWxlU3RyaW5nKCk7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcCgoaXRlbSkgPT4gbm9ybWFsaXplQ2VsbFZhbHVlKGl0ZW0pKS5qb2luKCcsICcpO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgaWYgKCdsYWJlbCcgaW4gdmFsdWUgJiYgdmFsdWUubGFiZWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZS5sYWJlbCk7XG4gICAgfVxuICAgIGlmICgnbmFtZScgaW4gdmFsdWUgJiYgdmFsdWUubmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gU3RyaW5nKHZhbHVlLm5hbWUpO1xuICAgIH1cbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLyoqXG4gKiBUcmFuc2Zvcm1lIHVuZSBjbMOpIGNhbWVsQ2FzZS9zbmFrZV9jYXNlIGVuIGxpYmVsbMOpIGxpc2libGUuXG4gKiBFeDogJ2NyZWF0ZWRBdCcg4oaSICdDcmVhdGVkIGF0JywgJ215X2ZpZWxkJyDihpIgJ015IGZpZWxkJ1xuICovXG5leHBvcnQgZnVuY3Rpb24gaHVtYW5pemVLZXkoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4ga2V5XG4gICAgLnJlcGxhY2VBbGwoLyhbYS16MC05XSkoW0EtWl0pL2csICckMSAkMicpXG4gICAgLnJlcGxhY2VBbGwoL1tfLV0rL2csICcgJylcbiAgICAucmVwbGFjZSgvXi4vLCAodmFsdWUpID0+IHZhbHVlLnRvVXBwZXJDYXNlKCkpO1xufVxuIl19
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
import { Subject } from 'rxjs';
|
|
2
|
+
import { humanizeKey } from '../table.utils';
|
|
3
|
+
export { viewField, groupableViewFields, sliceableViewFields, initialViewState } from '@oneteme/jquery-core';
|
|
4
|
+
// ── Facade
|
|
5
|
+
/**
|
|
6
|
+
* Centralise l'état et les actions du panneau View (Champs / Group by / Slice by).
|
|
7
|
+
* Pas de dépendance Angular/DOM : peut être extraite vers jquery-core à terme.
|
|
8
|
+
*
|
|
9
|
+
* Usage :
|
|
10
|
+
* this._view = new ViewFacade();
|
|
11
|
+
* this._view.events$.subscribe(e => { ... });
|
|
12
|
+
* this._view.update({ config, columns, sliceConfigs });
|
|
13
|
+
*/
|
|
14
|
+
export class ViewFacade {
|
|
15
|
+
constructor() {
|
|
16
|
+
// ── State
|
|
17
|
+
this.fields = {
|
|
18
|
+
activeColumns: [],
|
|
19
|
+
userCustomized: false,
|
|
20
|
+
};
|
|
21
|
+
this.groupBy = {
|
|
22
|
+
activeKey: null,
|
|
23
|
+
userCustomized: false,
|
|
24
|
+
};
|
|
25
|
+
this.sliceBy = {
|
|
26
|
+
activeDynamicColumns: [],
|
|
27
|
+
availableForDynamic: [],
|
|
28
|
+
allDynamicColumns: [],
|
|
29
|
+
activeLabel: 'Aucun',
|
|
30
|
+
};
|
|
31
|
+
this._panelConfig = { columns: [], sliceConfigs: [] };
|
|
32
|
+
this._hiddenStaticKeys = new Set();
|
|
33
|
+
// ── Events
|
|
34
|
+
this._events$ = new Subject();
|
|
35
|
+
this.events$ = this._events$.asObservable();
|
|
36
|
+
}
|
|
37
|
+
// ── Computed flags
|
|
38
|
+
get enabled() {
|
|
39
|
+
return this._panelConfig.config?.enabled === true;
|
|
40
|
+
}
|
|
41
|
+
get showFields() {
|
|
42
|
+
return this.enabled;
|
|
43
|
+
}
|
|
44
|
+
get showGroupBySection() {
|
|
45
|
+
return this.enabled && this.groupByColumns.length > 0;
|
|
46
|
+
}
|
|
47
|
+
get showSliceBySection() {
|
|
48
|
+
return this.enabled && ((this._panelConfig.sliceConfigs?.length ?? 0) > 0 ||
|
|
49
|
+
this.sliceBy.allDynamicColumns.length > 0);
|
|
50
|
+
}
|
|
51
|
+
get allowColumnRemoval() {
|
|
52
|
+
return this._panelConfig.config?.enableColumnRemoval !== false;
|
|
53
|
+
}
|
|
54
|
+
get isColumnDragDropEnabled() {
|
|
55
|
+
return this._panelConfig.config?.enableColumnDragDrop === true;
|
|
56
|
+
}
|
|
57
|
+
get menuBaseColumns() {
|
|
58
|
+
return this._uniqueByKey((this._panelConfig.columns || []).filter(c => !c.optional));
|
|
59
|
+
}
|
|
60
|
+
get menuOptionalColumns() {
|
|
61
|
+
return this._uniqueByKey((this._panelConfig.columns || []).filter(c => c.optional));
|
|
62
|
+
}
|
|
63
|
+
get totalColumnCount() {
|
|
64
|
+
return new Set((this._panelConfig.columns || []).map(c => c.key)).size;
|
|
65
|
+
}
|
|
66
|
+
get groupByColumns() {
|
|
67
|
+
const seen = new Set();
|
|
68
|
+
return (this._panelConfig.columns || []).filter(c => {
|
|
69
|
+
if (c.groupable === false || seen.has(c.key))
|
|
70
|
+
return false;
|
|
71
|
+
if (!c.header && c.groupable !== true)
|
|
72
|
+
return false;
|
|
73
|
+
seen.add(c.key);
|
|
74
|
+
return true;
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
get activeGroupByLabel() {
|
|
78
|
+
if (!this.groupBy.activeKey)
|
|
79
|
+
return this._panelConfig.noneLabel ?? 'Aucun';
|
|
80
|
+
const col = this.groupByColumns.find(c => c.key === this.groupBy.activeKey);
|
|
81
|
+
return col?.header || this.groupBy.activeKey;
|
|
82
|
+
}
|
|
83
|
+
get staticSlicesForMenu() {
|
|
84
|
+
return (this._panelConfig.sliceConfigs ?? [])
|
|
85
|
+
.filter(s => !!s.columnKey)
|
|
86
|
+
.map(s => {
|
|
87
|
+
const colIcon = (this._panelConfig.columns ?? []).find(c => c.key === s.columnKey)?.icon;
|
|
88
|
+
return { key: s.columnKey, title: s.title || humanizeKey(s.columnKey), icon: s.icon ?? colIcon };
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
colLabel(col) {
|
|
92
|
+
return col.header || humanizeKey(col.key);
|
|
93
|
+
}
|
|
94
|
+
// ── Mise à jour de la config (appelée depuis refreshViewModel)
|
|
95
|
+
update(panelConfig) {
|
|
96
|
+
this._panelConfig = panelConfig;
|
|
97
|
+
this._refreshDefaultColumns();
|
|
98
|
+
this._refreshDynamicSliceMeta();
|
|
99
|
+
if (!this.groupBy.userCustomized) {
|
|
100
|
+
this.groupBy.activeKey = panelConfig.defaultGroupBy ?? null;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// ── Actions Fields
|
|
104
|
+
setActiveColumns(columns) {
|
|
105
|
+
this.fields.activeColumns = columns;
|
|
106
|
+
this.fields.userCustomized = true;
|
|
107
|
+
}
|
|
108
|
+
setUserCustomized(value) {
|
|
109
|
+
this.fields.userCustomized = value;
|
|
110
|
+
}
|
|
111
|
+
/** Remet la vue dans son état initial : colonnes par défaut, groupBy par défaut, pas de dynamic slices. */
|
|
112
|
+
resetToDefaults() {
|
|
113
|
+
this.fields.userCustomized = false;
|
|
114
|
+
this.groupBy.userCustomized = false;
|
|
115
|
+
this._refreshDefaultColumns();
|
|
116
|
+
this.groupBy.activeKey = this._panelConfig.defaultGroupBy ?? null;
|
|
117
|
+
this.sliceBy.activeDynamicColumns = [];
|
|
118
|
+
this._refreshDynamicSliceMeta();
|
|
119
|
+
}
|
|
120
|
+
addColumn(column) {
|
|
121
|
+
const configCols = this._panelConfig.columns ?? [];
|
|
122
|
+
const configIndex = configCols.findIndex(c => c.key === column.key);
|
|
123
|
+
if (configIndex === -1) {
|
|
124
|
+
this.fields.activeColumns = [...this.fields.activeColumns, column];
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
const insertBefore = this.fields.activeColumns.findIndex(c => {
|
|
128
|
+
const ci = configCols.findIndex(cc => cc.key === c.key);
|
|
129
|
+
return ci !== -1 && ci > configIndex;
|
|
130
|
+
});
|
|
131
|
+
if (insertBefore === -1) {
|
|
132
|
+
this.fields.activeColumns = [...this.fields.activeColumns, column];
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
const copy = [...this.fields.activeColumns];
|
|
136
|
+
copy.splice(insertBefore, 0, column);
|
|
137
|
+
this.fields.activeColumns = copy;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
this.fields.userCustomized = true;
|
|
141
|
+
this._events$.next({ type: 'fieldsChanged', fieldIds: this.fields.activeColumns.map(c => c.key) });
|
|
142
|
+
}
|
|
143
|
+
removeColumn(columnKey) {
|
|
144
|
+
const col = this.fields.activeColumns.find(c => c.key === columnKey);
|
|
145
|
+
if (!col)
|
|
146
|
+
return false;
|
|
147
|
+
if (!col.optional && !this.allowColumnRemoval)
|
|
148
|
+
return false;
|
|
149
|
+
if (this.fields.activeColumns.length <= 1)
|
|
150
|
+
return false;
|
|
151
|
+
this.fields.activeColumns = this.fields.activeColumns.filter(c => c.key !== columnKey);
|
|
152
|
+
this.fields.userCustomized = true;
|
|
153
|
+
this._events$.next({ type: 'fieldsChanged', fieldIds: this.fields.activeColumns.map(c => c.key) });
|
|
154
|
+
return true;
|
|
155
|
+
}
|
|
156
|
+
toggleColumnVisibility(column, visible) {
|
|
157
|
+
const isVisible = this.isColumnVisible(column.key);
|
|
158
|
+
if (visible && !isVisible) {
|
|
159
|
+
this.addColumn(column);
|
|
160
|
+
}
|
|
161
|
+
else if (!visible && isVisible) {
|
|
162
|
+
this.removeColumn(column.key);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
reorderColumns(fromKey, toKey) {
|
|
166
|
+
const prev = this.fields.activeColumns.findIndex(c => c.key === fromKey);
|
|
167
|
+
const curr = this.fields.activeColumns.findIndex(c => c.key === toKey);
|
|
168
|
+
if (prev === -1 || curr === -1 || prev === curr)
|
|
169
|
+
return false;
|
|
170
|
+
const reordered = [...this.fields.activeColumns];
|
|
171
|
+
const [moved] = reordered.splice(prev, 1);
|
|
172
|
+
reordered.splice(curr, 0, moved);
|
|
173
|
+
this.fields.activeColumns = reordered;
|
|
174
|
+
this.fields.userCustomized = true;
|
|
175
|
+
this._events$.next({ type: 'fieldsChanged', fieldIds: this.fields.activeColumns.map(c => c.key) });
|
|
176
|
+
return true;
|
|
177
|
+
}
|
|
178
|
+
isColumnVisible(key) {
|
|
179
|
+
return this.fields.activeColumns.some(c => c.key === key);
|
|
180
|
+
}
|
|
181
|
+
// ── Actions Group by
|
|
182
|
+
setGroupBy(key) {
|
|
183
|
+
this.groupBy.activeKey = key;
|
|
184
|
+
this.groupBy.userCustomized = true;
|
|
185
|
+
this._events$.next({ type: 'groupByChanged', key });
|
|
186
|
+
}
|
|
187
|
+
// ── Actions Slice by (dynamique)
|
|
188
|
+
/** Appelée quand le SlicePanelComponent émet dynamicSliceKeysChange */
|
|
189
|
+
onDynamicSliceKeysChange(keys) {
|
|
190
|
+
const allCols = this._panelConfig.columns ?? [];
|
|
191
|
+
const staticKeys = new Set((this._panelConfig.sliceConfigs ?? []).map(s => s.columnKey).filter((k) => !!k));
|
|
192
|
+
const dynamicKeySet = new Set(keys);
|
|
193
|
+
const existingKeys = new Set([...staticKeys, ...dynamicKeySet]);
|
|
194
|
+
this.sliceBy.activeDynamicColumns = keys
|
|
195
|
+
.map(k => allCols.find(c => c.key === k))
|
|
196
|
+
.filter((c) => !!c);
|
|
197
|
+
const seen = new Set();
|
|
198
|
+
this.sliceBy.availableForDynamic = allCols.filter(c => {
|
|
199
|
+
if (c.sliceable === false || existingKeys.has(c.key) || seen.has(c.key))
|
|
200
|
+
return false;
|
|
201
|
+
seen.add(c.key);
|
|
202
|
+
return true;
|
|
203
|
+
});
|
|
204
|
+
this._computeSliceLabel();
|
|
205
|
+
this._events$.next({ type: 'dynamicSlicesChanged', keys });
|
|
206
|
+
}
|
|
207
|
+
isDynamicSliceActive(key) {
|
|
208
|
+
return this.sliceBy.activeDynamicColumns.some(c => c.key === key);
|
|
209
|
+
}
|
|
210
|
+
// ── Contrat core
|
|
211
|
+
/** Retourne un snapshot ViewState (contrat core) de l'état courant. */
|
|
212
|
+
toViewState() {
|
|
213
|
+
return {
|
|
214
|
+
selectedFieldIds: this.fields.activeColumns.map(c => c.key),
|
|
215
|
+
groupByKey: this.groupBy.activeKey,
|
|
216
|
+
dynamicSliceKeys: this.sliceBy.activeDynamicColumns.map(c => c.key),
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
/** Convertit une TableColumnProvider en ViewField (contrat core). */
|
|
220
|
+
static toViewField(col) {
|
|
221
|
+
return {
|
|
222
|
+
id: col.key,
|
|
223
|
+
label: col.header,
|
|
224
|
+
icon: col.icon,
|
|
225
|
+
groupable: col.groupable,
|
|
226
|
+
sliceable: col.sliceable,
|
|
227
|
+
optional: col.optional,
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
// ── Destructor
|
|
231
|
+
destroy() {
|
|
232
|
+
this._events$.complete();
|
|
233
|
+
}
|
|
234
|
+
// ── Helpers privés
|
|
235
|
+
_refreshDefaultColumns() {
|
|
236
|
+
const defaultCols = (this._panelConfig.columns || []).filter(c => !c.optional);
|
|
237
|
+
if (!this.fields.userCustomized || this.fields.activeColumns.length === 0) {
|
|
238
|
+
this.fields.activeColumns = [...defaultCols];
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
const allowedKeys = new Set((this._panelConfig.columns || []).map(c => c.key));
|
|
242
|
+
this.fields.activeColumns = this.fields.activeColumns.filter(c => allowedKeys.has(c.key));
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
_refreshDynamicSliceMeta() {
|
|
246
|
+
const allCols = this._panelConfig.columns ?? [];
|
|
247
|
+
const staticKeys = new Set((this._panelConfig.sliceConfigs ?? []).map(s => s.columnKey).filter((k) => !!k));
|
|
248
|
+
const activeDynKeys = new Set(this.sliceBy.activeDynamicColumns.map(c => c.key));
|
|
249
|
+
const seen1 = new Set();
|
|
250
|
+
this.sliceBy.availableForDynamic = allCols.filter(c => {
|
|
251
|
+
if (c.sliceable === false || staticKeys.has(c.key) || activeDynKeys.has(c.key) || seen1.has(c.key))
|
|
252
|
+
return false;
|
|
253
|
+
if (!c.header && c.sliceable !== true)
|
|
254
|
+
return false;
|
|
255
|
+
seen1.add(c.key);
|
|
256
|
+
return true;
|
|
257
|
+
});
|
|
258
|
+
const seen2 = new Set();
|
|
259
|
+
this.sliceBy.allDynamicColumns = allCols.filter(c => {
|
|
260
|
+
if (c.sliceable === false || staticKeys.has(c.key) || seen2.has(c.key))
|
|
261
|
+
return false;
|
|
262
|
+
if (!c.header && c.sliceable !== true)
|
|
263
|
+
return false;
|
|
264
|
+
seen2.add(c.key);
|
|
265
|
+
return true;
|
|
266
|
+
});
|
|
267
|
+
this._computeSliceLabel();
|
|
268
|
+
}
|
|
269
|
+
/** Notifie la facade des slices statiques actuellement cachées (géré par table.component).
|
|
270
|
+
* Recalcule le label slice afin qu'il reflète uniquement les slices visibles. */
|
|
271
|
+
updateHiddenStaticKeys(keys) {
|
|
272
|
+
this._hiddenStaticKeys = keys;
|
|
273
|
+
this._computeSliceLabel();
|
|
274
|
+
}
|
|
275
|
+
_computeSliceLabel() {
|
|
276
|
+
const visibleStatics = (this._panelConfig.sliceConfigs ?? []).filter(s => !s.columnKey || !this._hiddenStaticKeys.has(s.columnKey));
|
|
277
|
+
const visibleStaticCount = visibleStatics.length;
|
|
278
|
+
const total = visibleStaticCount + this.sliceBy.activeDynamicColumns.length;
|
|
279
|
+
if (total === 0) {
|
|
280
|
+
this.sliceBy.activeLabel = this._panelConfig.noneLabel ?? 'Aucun';
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
if (total === 1) {
|
|
284
|
+
if (visibleStaticCount === 1) {
|
|
285
|
+
const first = visibleStatics[0];
|
|
286
|
+
this.sliceBy.activeLabel = first?.title || first?.columnKey || '1';
|
|
287
|
+
return;
|
|
288
|
+
}
|
|
289
|
+
this.sliceBy.activeLabel = this.sliceBy.activeDynamicColumns[0]?.header || '1';
|
|
290
|
+
return;
|
|
291
|
+
}
|
|
292
|
+
this.sliceBy.activeLabel = `${total} actifs`;
|
|
293
|
+
}
|
|
294
|
+
_uniqueByKey(cols) {
|
|
295
|
+
const seen = new Set();
|
|
296
|
+
return cols.filter(c => {
|
|
297
|
+
if (seen.has(c.key))
|
|
298
|
+
return false;
|
|
299
|
+
seen.add(c.key);
|
|
300
|
+
return true;
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5mYWNhZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmV0ZW1lL2pxdWVyeS10YWJsZS9zcmMvbGliL2NvbXBvbmVudC92aWV3L3ZpZXcuZmFjYWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJL0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQWlDN0csWUFBWTtBQUVaOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxPQUFPLFVBQVU7SUFBdkI7UUFFRSxXQUFXO1FBRUYsV0FBTSxHQUFtQjtZQUNoQyxhQUFhLEVBQUUsRUFBRTtZQUNqQixjQUFjLEVBQUUsS0FBSztTQUN0QixDQUFDO1FBRU8sWUFBTyxHQUFxQjtZQUNuQyxTQUFTLEVBQUUsSUFBSTtZQUNmLGNBQWMsRUFBRSxLQUFLO1NBQ3RCLENBQUM7UUFFTyxZQUFPLEdBQXFCO1lBQ25DLG9CQUFvQixFQUFFLEVBQUU7WUFDeEIsbUJBQW1CLEVBQUUsRUFBRTtZQUN2QixpQkFBaUIsRUFBRSxFQUFFO1lBQ3JCLFdBQVcsRUFBRSxPQUFPO1NBQ3JCLENBQUM7UUFFTSxpQkFBWSxHQUFvQixFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ2xFLHNCQUFpQixHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7UUFFOUMsWUFBWTtRQUVLLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBYSxDQUFDO1FBQzVDLFlBQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBOFNsRCxDQUFDO0lBNVNDLG9CQUFvQjtJQUVwQixJQUFJLE9B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Q0FBQztZQUNoQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVmlld0V2ZW50LCBWaWV3RmllbGQsIFZpZXdTdGF0ZSB9IGZyb20gJ0BvbmV0ZW1lL2pxdWVyeS1jb3JlJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uUHJvdmlkZXIsIFRhYmxlVmlld0NvbmZpZyB9IGZyb20gJy4uLy4uL2pxdWVyeS10YWJsZS5tb2RlbCc7XG5pbXBvcnQgeyBTbGljZUNvbmZpZyB9IGZyb20gJy4uL3NsaWNlLXBhbmVsL3NsaWNlLXBhbmVsLm1vZGVsJztcbmltcG9ydCB7IGh1bWFuaXplS2V5IH0gZnJvbSAnLi4vdGFibGUudXRpbHMnO1xuXG5leHBvcnQgdHlwZSB7IFZpZXdGaWVsZCwgVmlld0NvbmZpZywgVmlld1N0YXRlLCBWaWV3RXZlbnQgfSBmcm9tICdAb25ldGVtZS9qcXVlcnktY29yZSc7XG5leHBvcnQgeyB2aWV3RmllbGQsIGdyb3VwYWJsZVZpZXdGaWVsZHMsIHNsaWNlYWJsZVZpZXdGaWVsZHMsIGluaXRpYWxWaWV3U3RhdGUgfSBmcm9tICdAb25ldGVtZS9qcXVlcnktY29yZSc7XG5cbi8vIOKUgOKUgCBUeXBlcyBpbnRlcm5lc1xuXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdGaWVsZFN0YXRlIHtcbiAgYWN0aXZlQ29sdW1uczogVGFibGVDb2x1bW5Qcm92aWRlcjxhbnk+W107XG4gIC8qKiB0cnVlIHNpIGwndXRpbGlzYXRldXIgYSBkw6lqw6AgcGVyc29ubmFsaXPDqSBsYSBzw6lsZWN0aW9uIGRlIGNvbG9ubmVzICovXG4gIHVzZXJDdXN0b21pemVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdHcm91cEJ5U3RhdGUge1xuICBhY3RpdmVLZXk6IHN0cmluZyB8IG51bGw7XG4gIHVzZXJDdXN0b21pemVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdTbGljZUJ5U3RhdGUge1xuICBhY3RpdmVEeW5hbWljQ29sdW1uczogVGFibGVDb2x1bW5Qcm92aWRlcjxhbnk+W107XG4gIGF2YWlsYWJsZUZvckR5bmFtaWM6IFRhYmxlQ29sdW1uUHJvdmlkZXI8YW55PltdO1xuICBhbGxEeW5hbWljQ29sdW1uczogVGFibGVDb2x1bW5Qcm92aWRlcjxhbnk+W107XG4gIGFjdGl2ZUxhYmVsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlld1BhbmVsQ29uZmlnIHtcbiAgLyoqIENvbmZpZyBicnV0ZSBpc3N1ZSBkZSBUYWJsZVByb3ZpZGVyLnZpZXcgKi9cbiAgY29uZmlnPzogVGFibGVWaWV3Q29uZmlnO1xuICAvKiogVG91dGVzIGxlcyBjb2xvbm5lcyByw6lzb2x1ZXMgKG5vbiBmaWx0csOpZXMpICovXG4gIGNvbHVtbnM6IFRhYmxlQ29sdW1uUHJvdmlkZXI8YW55PltdO1xuICAvKiogU2xpY2VzIHN0YXRpcXVlcyAqL1xuICBzbGljZUNvbmZpZ3M6IFNsaWNlQ29uZmlnPGFueT5bXTtcbiAgLyoqIExhYmVsIHV0aWxpc8OpIHF1YW5kIGF1Y3VuIGdyb3VwZSAvIGF1Y3VuZSBzbGljZSBu4oCZZXN0IGFjdGlmLiBEw6lmYXV0wqA6ICdBdWN1bicuICovXG4gIG5vbmVMYWJlbD86IHN0cmluZzsgIC8qKiBDbMOpIGRlIGNvbG9ubmUgdXRpbGlzw6llIGNvbW1lIGdyb3VwLWJ5IHBhciBkw6lmYXV0IGF1IGNoYXJnZW1lbnQuICovXG4gIGRlZmF1bHRHcm91cEJ5Pzogc3RyaW5nIHwgbnVsbDt9XG5cbi8vIOKUgOKUgCBGYWNhZGVcblxuLyoqXG4gKiBDZW50cmFsaXNlIGwnw6l0YXQgZXQgbGVzIGFjdGlvbnMgZHUgcGFubmVhdSBWaWV3IChDaGFtcHMgLyBHcm91cCBieSAvIFNsaWNlIGJ5KS5cbiAqIFBhcyBkZSBkw6lwZW5kYW5jZSBBbmd1bGFyL0RPTSA6IHBldXQgw6p0cmUgZXh0cmFpdGUgdmVycyBqcXVlcnktY29yZSDDoCB0ZXJtZS5cbiAqXG4gKiBVc2FnZSA6XG4gKiAgIHRoaXMuX3ZpZXcgPSBuZXcgVmlld0ZhY2FkZSgpO1xuICogICB0aGlzLl92aWV3LmV2ZW50cyQuc3Vic2NyaWJlKGUgPT4geyAuLi4gfSk7XG4gKiAgIHRoaXMuX3ZpZXcudXBkYXRlKHsgY29uZmlnLCBjb2x1bW5zLCBzbGljZUNvbmZpZ3MgfSk7XG4gKi9cbmV4cG9ydCBjbGFzcyBWaWV3RmFjYWRlPFQgPSBhbnk+IHtcblxuICAvLyDilIDilIAgU3RhdGVcblxuICByZWFkb25seSBmaWVsZHM6IFZpZXdGaWVsZFN0YXRlID0ge1xuICAgIGFjdGl2ZUNvbHVtbnM6IFtdLFxuICAgIHVzZXJDdXN0b21pemVkOiBmYWxzZSxcbiAgfTtcblxuICByZWFkb25seSBncm91cEJ5OiBWaWV3R3JvdXBCeVN0YXRlID0ge1xuICAgIGFjdGl2ZUtleTogbnVsbCxcbiAgICB1c2VyQ3VzdG9taXplZDogZmFsc2UsXG4gIH07XG5cbiAgcmVhZG9ubHkgc2xpY2VCeTogVmlld1NsaWNlQnlTdGF0ZSA9IHtcbiAgICBhY3RpdmVEeW5hbWljQ29sdW1uczogW10sXG4gICAgYXZhaWxhYmxlRm9yRHluYW1pYzogW10sXG4gICAgYWxsRHluYW1pY0NvbHVtbnM6IFtdLFxuICAgIGFjdGl2ZUxhYmVsOiAnQXVjdW4nLFxuICB9O1xuXG4gIHByaXZhdGUgX3BhbmVsQ29uZmlnOiBWaWV3UGFuZWxDb25maWcgPSB7IGNvbHVtbnM6IFtdLCBzbGljZUNvbmZpZ3M6IFtdIH07XG4gIHByaXZhdGUgX2hpZGRlblN0YXRpY0tleXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAvLyDilIDilIAgRXZlbnRzXG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZXZlbnRzJCA9IG5ldyBTdWJqZWN0PFZpZXdFdmVudD4oKTtcbiAgcmVhZG9ubHkgZXZlbnRzJCA9IHRoaXMuX2V2ZW50cyQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgLy8g4pSA4pSAIENvbXB1dGVkIGZsYWdzXG5cbiAgZ2V0IGVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3BhbmVsQ29uZmlnLmNvbmZpZz8uZW5hYmxlZCA9PT0gdHJ1ZTtcbiAgfVxuXG4gIGdldCBzaG93RmllbGRzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVuYWJsZWQ7XG4gIH1cblxuICBnZXQgc2hvd0dyb3VwQnlTZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVuYWJsZWQgJiYgdGhpcy5ncm91cEJ5Q29sdW1ucy5sZW5ndGggPiAwO1xuICB9XG5cbiAgZ2V0IHNob3dTbGljZUJ5U2VjdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lbmFibGVkICYmIChcbiAgICAgICh0aGlzLl9wYW5lbENvbmZpZy5zbGljZUNvbmZpZ3M/Lmxlbmd0aCA/PyAwKSA+IDAgfHxcbiAgICAgIHRoaXMuc2xpY2VCeS5hbGxEeW5hbWljQ29sdW1ucy5sZW5ndGggPiAwXG4gICAgKTtcbiAgfVxuXG4gIGdldCBhbGxvd0NvbHVtblJlbW92YWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3BhbmVsQ29uZmlnLmNvbmZpZz8uZW5hYmxlQ29sdW1uUmVtb3ZhbCAhPT0gZmFsc2U7XG4gIH1cblxuICBnZXQgaXNDb2x1bW5EcmFnRHJvcEVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3BhbmVsQ29uZmlnLmNvbmZpZz8uZW5hYmxlQ29sdW1uRHJhZ0Ryb3AgPT09IHRydWU7XG4gIH1cblxuICBnZXQgbWVudUJhc2VDb2x1bW5zKCk6IFRhYmxlQ29sdW1uUHJvdmlkZXI8VD5bXSB7XG4gICAgcmV0dXJuIHRoaXMuX3VuaXF1ZUJ5S2V5KCh0aGlzLl9wYW5lbENvbmZpZy5jb2x1bW5zIHx8IFtdKS5maWx0ZXIoYyA9PiAhYy5vcHRpb25hbCkpO1xuICB9XG5cbiAgZ2V0IG1lbnVPcHRpb25hbENvbHVtbnMoKTogVGFibGVDb2x1bW5Qcm92aWRlcjxUPltdIHtcbiAgICByZXR1cm4gdGhpcy5fdW5pcXVlQnlLZXkoKHRoaXMuX3BhbmVsQ29uZmlnLmNvbHVtbnMgfHwgW10pLmZpbHRlcihjID0+IGMub3B0aW9uYWwpKTtcbiAgfVxuXG4gIGdldCB0b3RhbENvbHVtbkNvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIG5ldyBTZXQoKHRoaXMuX3BhbmVsQ29uZmlnLmNvbHVtbnMgfHwgW10pLm1hcChjID0+IGMua2V5KSkuc2l6ZTtcbiAgfVxuXG4gIGdldCBncm91cEJ5Q29sdW1ucygpOiBUYWJsZUNvbHVtblByb3ZpZGVyPFQ+W10ge1xuICAgIGNvbnN0IHNlZW4gPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICByZXR1cm4gKHRoaXMuX3BhbmVsQ29uZmlnLmNvbHVtbnMgfHwgW10pLmZpbHRlcihjID0+IHtcbiAgICAgIGlmIChjLmdyb3VwYWJsZSA9PT0gZmFsc2UgfHwgc2Vlbi5oYXMoYy5rZXkpKSByZXR1cm4gZmFsc2U7XG4gICAgICBpZiAoIWMuaGVhZGVyICYmIGMuZ3JvdXBhYmxlICE9PSB0cnVlKSByZXR1cm4gZmFsc2U7XG4gICAgICBzZWVuLmFkZChjLmtleSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBhY3RpdmVHcm91cEJ5TGFiZWwoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuZ3JvdXBCeS5hY3RpdmVLZXkpIHJldHVybiB0aGlzLl9wYW5lbENvbmZpZy5ub25lTGFiZWwgPz8gJ0F1Y3VuJztcbiAgICBjb25zdCBjb2wgPSB0aGlzLmdyb3VwQnlDb2x1bW5zLmZpbmQoYyA9PiBjLmtleSA9PT0gdGhpcy5ncm91cEJ5LmFjdGl2ZUtleSk7XG4gICAgcmV0dXJuIGNvbD8uaGVhZGVyIHx8IHRoaXMuZ3JvdXBCeS5hY3RpdmVLZXk7XG4gIH1cblxuICBnZXQgc3RhdGljU2xpY2VzRm9yTWVudSgpOiBBcnJheTx7IGtleTogc3RyaW5nOyB0aXRsZTogc3RyaW5nOyBpY29uPzogc3RyaW5nIH0+IHtcbiAgICByZXR1cm4gKHRoaXMuX3BhbmVsQ29uZmlnLnNsaWNlQ29uZmlncyA/PyBbXSlcbiAgICAgIC5maWx0ZXIocyA9PiAhIXMuY29sdW1uS2V5KVxuICAgICAgLm1hcChzID0+IHtcbiAgICAgICAgY29uc3QgY29sSWNvbiA9ICh0aGlzLl9wYW5lbENvbmZpZy5jb2x1bW5zID8/IFtdKS5maW5kKGMgPT4gYy5rZXkgPT09IHMuY29sdW1uS2V5KT8uaWNvbjtcbiAgICAgICAgcmV0dXJuIHsga2V5OiBzLmNvbHVtbktleSEsIHRpdGxlOiBzLnRpdGxlIHx8IGh1bWFuaXplS2V5KHMuY29sdW1uS2V5ISksIGljb246IHMuaWNvbiA/PyBjb2xJY29uIH07XG4gICAgICB9KTtcbiAgfVxuXG4gIGNvbExhYmVsKGNvbDogeyBrZXk6IHN0cmluZzsgaGVhZGVyPzogc3RyaW5nIH0pOiBzdHJpbmcge1xuICAgIHJldHVybiBjb2wuaGVhZGVyIHx8IGh1bWFuaXplS2V5KGNvbC5rZXkpO1xuICB9XG5cbiAgLy8g4pSA4pSAIE1pc2Ugw6Agam91ciBkZSBsYSBjb25maWcgKGFwcGVsw6llIGRlcHVpcyByZWZyZXNoVmlld01vZGVsKVxuXG4gIHVwZGF0ZShwYW5lbENvbmZpZzogVmlld1BhbmVsQ29uZmlnKTogdm9pZCB7XG4gICAgdGhpcy5fcGFuZWxDb25maWcgPSBwYW5lbENvbmZpZztcbiAgICB0aGlzLl9yZWZyZXNoRGVmYXVsdENvbHVtbnMoKTtcbiAgICB0aGlzLl9yZWZyZXNoRHluYW1pY1NsaWNlTWV0YSgpO1xuICAgIGlmICghdGhpcy5ncm91cEJ5LnVzZXJDdXN0b21pemVkKSB7XG4gICAgICB0aGlzLmdyb3VwQnkuYWN0aXZlS2V5ID0gcGFuZWxDb25maWcuZGVmYXVsdEdyb3VwQnkgPz8gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvLyDilIDilIAgQWN0aW9ucyBGaWVsZHNcblxuICBzZXRBY3RpdmVDb2x1bW5zKGNvbHVtbnM6IFRhYmxlQ29sdW1uUHJvdmlkZXI8VD5bXSk6IHZvaWQge1xuICAgIHRoaXMuZmllbGRzLmFjdGl2ZUNvbHVtbnMgPSBjb2x1bW5zO1xuICAgIHRoaXMuZmllbGRzLnVzZXJDdXN0b21pemVkID0gdHJ1ZTtcbiAgfVxuXG4gIHNldFVzZXJDdXN0b21pemVkKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5maWVsZHMudXNlckN1c3RvbWl6ZWQgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKiBSZW1ldCBsYSB2dWUgZGFucyBzb24gw6l0YXQgaW5pdGlhbCA6IGNvbG9ubmVzIHBhciBkw6lmYXV0LCBncm91cEJ5IHBhciBkw6lmYXV0LCBwYXMgZGUgZHluYW1pYyBzbGljZXMuICovXG4gIHJlc2V0VG9EZWZhdWx0cygpOiB2b2lkIHtcbiAgICB0aGlzLmZpZWxkcy51c2VyQ3VzdG9taXplZCA9IGZhbHNlO1xuICAgIHRoaXMuZ3JvdXBCeS51c2VyQ3VzdG9taXplZCA9IGZhbHNlO1xuICAgIHRoaXMuX3JlZnJlc2hEZWZhdWx0Q29sdW1ucygpO1xuICAgIHRoaXMuZ3JvdXBCeS5hY3RpdmVLZXkgPSB0aGlzLl9wYW5lbENvbmZpZy5kZWZhdWx0R3JvdXBCeSA/PyBudWxsO1xuICAgIHRoaXMuc2xpY2VCeS5hY3RpdmVEeW5hbWljQ29sdW1ucyA9IFtdO1xuICAgIHRoaXMuX3JlZnJlc2hEeW5hbWljU2xpY2VNZXRhKCk7XG4gIH1cblxuICBhZGRDb2x1bW4oY29sdW1uOiBUYWJsZUNvbHVtblByb3ZpZGVyPFQ+KTogdm9pZCB7XG4gICAgY29uc3QgY29uZmlnQ29scyA9IHRoaXMuX3BhbmVsQ29uZmlnLmNvbHVtbnMgPz8gW107XG4gICAgY29uc3QgY29uZmlnSW5kZXggPSBjb25maWdDb2xzLmZpbmRJbmRleChjID0+IGMua2V5ID09PSBjb2x1bW4ua2V5KTtcbiAgICBpZiAoY29uZmlnSW5kZXggPT09IC0xKSB7XG4gICAgICB0aGlzLmZpZWxkcy5hY3RpdmVDb2x1bW5zID0gWy4uLnRoaXMuZmllbGRzLmFjdGl2ZUNvbHVtbnMsIGNvbHVtbl07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGluc2VydEJlZm9yZSA9IHRoaXMuZmllbGRzLmFjdGl2ZUNvbHVtbnMuZmluZEluZGV4KGMgPT4ge1xuICAgICAgICBjb25zdCBjaSA9IGNvbmZpZ0NvbHMuZmluZEluZGV4KGNjID0+IGNjLmtleSA9PT0gYy5rZXkpO1xuICAgICAgICByZXR1cm4gY2kgIT09IC0xICYmIGNpID4gY29uZmlnSW5kZXg7XG4gICAgICB9KTtcbiAgICAgIGlmIChpbnNlcnRCZWZvcmUgPT09IC0xKSB7XG4gICAgICAgIHRoaXMuZmllbGRzLmFjdGl2ZUNvbHVtbnMgPSBbLi4udGhpcy5maWVsZHMuYWN0aXZlQ29sdW1ucywgY29sdW1uXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNvcHkgPSBbLi4udGhpcy5maWVsZHMuYWN0aXZlQ29sdW1uc107XG4gICAgICAgIGNvcHkuc3BsaWNlKGluc2VydEJlZm9yZSwgMCwgY29sdW1uKTtcbiAgICAgICAgdGhpcy5maWVsZHMuYWN0aXZlQ29sdW1ucyA9IGNvcHk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZmllbGRzLnVzZXJDdXN0b21pemVkID0gdHJ1ZTtcbiAgICB0aGlzLl9ldmVudHMkLm5leHQoeyB0eXBlOiAnZmllbGRzQ2hhbmdlZCcsIGZpZWxkSWRzOiB0aGlzLmZpZWxkcy5hY3RpdmVDb2x1bW5zLm1hcChjID0+IGMua2V5KSB9KTtcbiAgfVxuXG4gIHJlbW92ZUNvbHVtbihjb2x1bW5LZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNvbCA9IHRoaXMuZmllbGRzLmFjdGl2ZUNvbHVtbnMuZmluZChjID0+IGMua2V5ID09PSBjb2x1bW5LZXkpO1xuICAgIGlmICghY29sKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKCFjb2wub3B0aW9uYWwgJiYgIXRoaXMuYWxsb3dDb2x1bW5SZW1vdmFsKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHRoaXMuZmllbGRzLmFjdGl2ZUNvbHVtbnMubGVuZ3RoIDw9IDEpIHJldHVybiBmYWxzZTtcbiAgICB0aGlzLmZpZWxkcy5hY3RpdmVDb2x1bW5zID0gdGhpcy5maWVsZHMuYWN0aXZlQ29sdW1ucy5maWx0ZXIoYyA9PiBjLmtleSAhPT0gY29sdW1uS2V5KTtcbiAgICB0aGlzLmZpZWxkcy51c2VyQ3VzdG9taXplZCA9IHRydWU7XG4gICAgdGhpcy5fZXZlbnRzJC5uZXh0KHsgdHlwZTogJ2ZpZWxkc0NoYW5nZWQnLCBmaWVsZElkczogdGhpcy5maWVsZHMuYWN0aXZlQ29sdW1ucy5tYXAoYyA9PiBjLmtleSkgfSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB0b2dnbGVDb2x1bW5WaXNpYmlsaXR5KGNvbHVtbjogVGFibGVDb2x1bW5Qcm92aWRlcjxUPiwgdmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGlzVmlzaWJsZSA9IHRoaXMuaXNDb2x1bW5WaXNpYmxlKGNvbHVtbi5rZXkpO1xuICAgIGlmICh2aXNpYmxlICYmICFpc1Zpc2libGUpIHtcbiAgICAgIHRoaXMuYWRkQ29sdW1uKGNvbHVtbik7XG4gICAgfSBlbHNlIGlmICghdmlzaWJsZSAmJiBpc1Zpc2libGUpIHtcbiAgICAgIHRoaXMucmVtb3ZlQ29sdW1uKGNvbHVtbi5rZXkpO1xuICAgIH1cbiAgfVxuXG4gIHJlb3JkZXJDb2x1bW5zKGZyb21LZXk6IHN0cmluZywgdG9LZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHByZXYgPSB0aGlzLmZpZWxkcy5hY3RpdmVDb2x1bW5zLmZpbmRJbmRleChjID0+IGMua2V5ID09PSBmcm9tS2V5KTtcbiAgICBjb25zdCBjdXJyID0gdGhpcy5maWVsZHMuYWN0aXZlQ29sdW1ucy5maW5kSW5kZXgoYyA9PiBjLmtleSA9PT0gdG9LZXkpO1xuICAgIGlmIChwcmV2ID09PSAtMSB8fCBjdXJyID09PSAtMSB8fCBwcmV2ID09PSBjdXJyKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgcmVvcmRlcmVkID0gWy4uLnRoaXMuZmllbGRzLmFjdGl2ZUNvbHVtbnNdO1xuICAgIGNvbnN0IFttb3ZlZF0gPSByZW9yZGVyZWQuc3BsaWNlKHByZXYsIDEpO1xuICAgIHJlb3JkZXJlZC5zcGxpY2UoY3VyciwgMCwgbW92ZWQpO1xuICAgIHRoaXMuZmllbGRzLmFjdGl2ZUNvbHVtbnMgPSByZW9yZGVyZWQ7XG4gICAgdGhpcy5maWVsZHMudXNlckN1c3RvbWl6ZWQgPSB0cnVlO1xuICAgIHRoaXMuX2V2ZW50cyQubmV4dCh7IHR5cGU6ICdmaWVsZHNDaGFuZ2VkJywgZmllbGRJZHM6IHRoaXMuZmllbGRzLmFjdGl2ZUNvbHVtbnMubWFwKGMgPT4gYy5rZXkpIH0pO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaXNDb2x1bW5WaXNpYmxlKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGRzLmFjdGl2ZUNvbHVtbnMuc29tZShjID0+IGMua2V5ID09PSBrZXkpO1xuICB9XG5cbiAgLy8g4pSA4pSAIEFjdGlvbnMgR3JvdXAgYnlcblxuICBzZXRHcm91cEJ5KGtleTogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuZ3JvdXBCeS5hY3RpdmVLZXkgPSBrZXk7XG4gICAgdGhpcy5ncm91cEJ5LnVzZXJDdXN0b21pemVkID0gdHJ1ZTtcbiAgICB0aGlzLl9ldmVudHMkLm5leHQoeyB0eXBlOiAnZ3JvdXBCeUNoYW5nZWQnLCBrZXkgfSk7XG4gIH1cblxuICAvLyDilIDilIAgQWN0aW9ucyBTbGljZSBieSAoZHluYW1pcXVlKVxuXG4gIC8qKiBBcHBlbMOpZSBxdWFuZCBsZSBTbGljZVBhbmVsQ29tcG9uZW50IMOpbWV0IGR5bmFtaWNTbGljZUtleXNDaGFuZ2UgKi9cbiAgb25EeW5hbWljU2xpY2VLZXlzQ2hhbmdlKGtleXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgY29uc3QgYWxsQ29scyA9IHRoaXMuX3BhbmVsQ29uZmlnLmNvbHVtbnMgPz8gW107XG4gICAgY29uc3Qgc3RhdGljS2V5cyA9IG5ldyBTZXQoXG4gICAgICAodGhpcy5fcGFuZWxDb25maWcuc2xpY2VDb25maWdzID8/IFtdKS5tYXAocyA9PiBzLmNvbHVtbktleSkuZmlsdGVyKChrKTogayBpcyBzdHJpbmcgPT4gISFrKVxuICAgICk7XG4gICAgY29uc3QgZHluYW1pY0tleVNldCA9IG5ldyBTZXQoa2V5cyk7XG4gICAgY29uc3QgZXhpc3RpbmdLZXlzID0gbmV3IFNldChbLi4uc3RhdGljS2V5cywgLi4uZHluYW1pY0tleVNldF0pO1xuXG4gICAgdGhpcy5zbGljZUJ5LmFjdGl2ZUR5bmFtaWNDb2x1bW5zID0ga2V5c1xuICAgICAgLm1hcChrID0+IGFsbENvbHMuZmluZChjID0+IGMua2V5ID09PSBrKSlcbiAgICAgIC5maWx0ZXIoKGMpOiBjIGlzIFRhYmxlQ29sdW1uUHJvdmlkZXI8VD4gPT4gISFjKTtcblxuICAgIGNvbnN0IHNlZW4gPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICB0aGlzLnNsaWNlQnkuYXZhaWxhYmxlRm9yRHluYW1pYyA9IGFsbENvbHMuZmlsdGVyKGMgPT4ge1xuICAgICAgaWYgKGMuc2xpY2VhYmxlID09PSBmYWxzZSB8fCBleGlzdGluZ0tleXMuaGFzKGMua2V5KSB8fCBzZWVuLmhhcyhjLmtleSkpIHJldHVybiBmYWxzZTtcbiAgICAgIHNlZW4uYWRkKGMua2V5KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fY29tcHV0ZVNsaWNlTGFiZWwoKTtcbiAgICB0aGlzLl9ldmVudHMkLm5leHQoeyB0eXBlOiAnZHluYW1pY1NsaWNlc0NoYW5nZWQnLCBrZXlzIH0pO1xuICB9XG5cbiAgaXNEeW5hbWljU2xpY2VBY3RpdmUoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zbGljZUJ5LmFjdGl2ZUR5bmFtaWNDb2x1bW5zLnNvbWUoYyA9PiBjLmtleSA9PT0ga2V5KTtcbiAgfVxuXG4gIC8vIOKUgOKUgCBDb250cmF0IGNvcmVcblxuICAvKiogUmV0b3VybmUgdW4gc25hcHNob3QgVmlld1N0YXRlIChjb250cmF0IGNvcmUpIGRlIGwnw6l0YXQgY291cmFudC4gKi9cbiAgdG9WaWV3U3RhdGUoKTogVmlld1N0YXRlIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2VsZWN0ZWRGaWVsZElkczogdGhpcy5maWVsZHMuYWN0aXZlQ29sdW1ucy5tYXAoYyA9PiBjLmtleSksXG4gICAgICBncm91cEJ5S2V5OiB0aGlzLmdyb3VwQnkuYWN0aXZlS2V5LFxuICAgICAgZHluYW1pY1NsaWNlS2V5czogdGhpcy5zbGljZUJ5LmFjdGl2ZUR5bmFtaWNDb2x1bW5zLm1hcChjID0+IGMua2V5KSxcbiAgICB9O1xuICB9XG5cbiAgLyoqIENvbnZlcnRpdCB1bmUgVGFibGVDb2x1bW5Qcm92aWRlciBlbiBWaWV3RmllbGQgKGNvbnRyYXQgY29yZSkuICovXG4gIHN0YXRpYyB0b1ZpZXdGaWVsZChjb2w6IFRhYmxlQ29sdW1uUHJvdmlkZXI8YW55Pik6IFZpZXdGaWVsZCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBjb2wua2V5LFxuICAgICAgbGFiZWw6IGNvbC5oZWFkZXIsXG4gICAgICBpY29uOiBjb2wuaWNvbixcbiAgICAgIGdyb3VwYWJsZTogY29sLmdyb3VwYWJsZSxcbiAgICAgIHNsaWNlYWJsZTogY29sLnNsaWNlYWJsZSxcbiAgICAgIG9wdGlvbmFsOiBjb2wub3B0aW9uYWwsXG4gICAgfTtcbiAgfVxuXG4gIC8vIOKUgOKUgCBEZXN0cnVjdG9yXG5cbiAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9ldmVudHMkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvLyDilIDilIAgSGVscGVycyBwcml2w6lzXG5cbiAgcHJpdmF0ZSBfcmVmcmVzaERlZmF1bHRDb2x1bW5zKCk6IHZvaWQge1xuICAgIGNvbnN0IGRlZmF1bHRDb2xzID0gKHRoaXMuX3BhbmVsQ29uZmlnLmNvbHVtbnMgfHwgW10pLmZpbHRlcihjID0+ICFjLm9wdGlvbmFsKTtcbiAgICBpZiAoIXRoaXMuZmllbGRzLnVzZXJDdXN0b21pemVkIHx8IHRoaXMuZmllbGRzLmFjdGl2ZUNvbHVtbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmZpZWxkcy5hY3RpdmVDb2x1bW5zID0gWy4uLmRlZmF1bHRDb2xzXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYWxsb3dlZEtleXMgPSBuZXcgU2V0KCh0aGlzLl9wYW5lbENvbmZpZy5jb2x1bW5zIHx8IFtdKS5tYXAoYyA9PiBjLmtleSkpO1xuICAgICAgdGhpcy5maWVsZHMuYWN0aXZlQ29sdW1ucyA9IHRoaXMuZmllbGRzLmFjdGl2ZUNvbHVtbnMuZmlsdGVyKGMgPT4gYWxsb3dlZEtleXMuaGFzKGMua2V5KSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmVmcmVzaER5bmFtaWNTbGljZU1ldGEoKTogdm9pZCB7XG4gICAgY29uc3QgYWxsQ29scyA9IHRoaXMuX3BhbmVsQ29uZmlnLmNvbHVtbnMgPz8gW107XG4gICAgY29uc3Qgc3RhdGljS2V5cyA9IG5ldyBTZXQoXG4gICAgICAodGhpcy5fcGFuZWxDb25maWcuc2xpY2VDb25maWdzID8/IFtdKS5tYXAocyA9PiBzLmNvbHVtbktleSkuZmlsdGVyKChrKTogayBpcyBzdHJpbmcgPT4gISFrKVxuICAgICk7XG4gICAgY29uc3QgYWN0aXZlRHluS2V5cyA9IG5ldyBTZXQodGhpcy5zbGljZUJ5LmFjdGl2ZUR5bmFtaWNDb2x1bW5zLm1hcChjID0+IGMua2V5KSk7XG5cbiAgICBjb25zdCBzZWVuMSA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIHRoaXMuc2xpY2VCeS5hdmFpbGFibGVGb3JEeW5hbWljID0gYWxsQ29scy5maWx0ZXIoYyA9PiB7XG4gICAgICBpZiAoYy5zbGljZWFibGUgPT09IGZhbHNlIHx8IHN0YXRpY0tleXMuaGFzKGMua2V5KSB8fCBhY3RpdmVEeW5LZXlzLmhhcyhjLmtleSkgfHwgc2VlbjEuaGFzKGMua2V5KSkgcmV0dXJuIGZhbHNlO1xuICAgICAgaWYgKCFjLmhlYWRlciAmJiBjLnNsaWNlYWJsZSAhPT0gdHJ1ZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgc2VlbjEuYWRkKGMua2V5KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuXG4gICAgY29uc3Qgc2VlbjIgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICB0aGlzLnNsaWNlQnkuYWxsRHluYW1pY0NvbHVtbnMgPSBhbGxDb2xzLmZpbHRlcihjID0+IHtcbiAgICAgIGlmIChjLnNsaWNlYWJsZSA9PT0gZmFsc2UgfHwgc3RhdGljS2V5cy5oYXMoYy5rZXkpIHx8IHNlZW4yLmhhcyhjLmtleSkpIHJldHVybiBmYWxzZTtcbiAgICAgIGlmICghYy5oZWFkZXIgJiYgYy5zbGljZWFibGUgIT09IHRydWUpIHJldHVybiBmYWxzZTtcbiAgICAgIHNlZW4yLmFkZChjLmtleSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcblxuICAgIHRoaXMuX2NvbXB1dGVTbGljZUxhYmVsKCk7XG4gIH1cblxuICAvKiogTm90aWZpZSBsYSBmYWNhZGUgZGVzIHNsaWNlcyBzdGF0aXF1ZXMgYWN0dWVsbGVtZW50IGNhY2jDqWVzIChnw6lyw6kgcGFyIHRhYmxlLmNvbXBvbmVudCkuXG4gICAqIFJlY2FsY3VsZSBsZSBsYWJlbCBzbGljZSBhZmluIHF1J2lsIHJlZmzDqHRlIHVuaXF1ZW1lbnQgbGVzIHNsaWNlcyB2aXNpYmxlcy4gKi9cbiAgdXBkYXRlSGlkZGVuU3RhdGljS2V5cyhrZXlzOiBTZXQ8c3RyaW5nPik6IHZvaWQge1xuICAgIHRoaXMuX2hpZGRlblN0YXRpY0tleXMgPSBrZXlzO1xuICAgIHRoaXMuX2NvbXB1dGVTbGljZUxhYmVsKCk7XG4gIH1cblxuICBwcml2YXRlIF9jb21wdXRlU2xpY2VMYWJlbCgpOiB2b2lkIHtcbiAgICBjb25zdCB2aXNpYmxlU3RhdGljcyA9ICh0aGlzLl9wYW5lbENvbmZpZy5zbGljZUNvbmZpZ3MgPz8gW10pLmZpbHRlcihcbiAgICAgIHMgPT4gIXMuY29sdW1uS2V5IHx8ICF0aGlzLl9oaWRkZW5TdGF0aWNLZXlzLmhhcyhzLmNvbHVtbktleSlcbiAgICApO1xuICAgIGNvbnN0IHZpc2libGVTdGF0aWNDb3VudCA9IHZpc2libGVTdGF0aWNzLmxlbmd0aDtcbiAgICBjb25zdCB0b3RhbCA9IHZpc2libGVTdGF0aWNDb3VudCArIHRoaXMuc2xpY2VCeS5hY3RpdmVEeW5hbWljQ29sdW1ucy5sZW5ndGg7XG4gICAgaWYgKHRvdGFsID09PSAwKSB7IHRoaXMuc2xpY2VCeS5hY3RpdmVMYWJlbCA9IHRoaXMuX3BhbmVsQ29uZmlnLm5vbmVMYWJlbCA/PyAnQXVjdW4nOyByZXR1cm47IH1cbiAgICBpZiAodG90YWwgPT09IDEpIHtcbiAgICAgIGlmICh2aXNpYmxlU3RhdGljQ291bnQgPT09IDEpIHtcbiAgICAgICAgY29uc3QgZmlyc3QgPSB2aXNpYmxlU3RhdGljc1swXTtcbiAgICAgICAgdGhpcy5zbGljZUJ5LmFjdGl2ZUxhYmVsID0gZmlyc3Q/LnRpdGxlIHx8IGZpcnN0Py5jb2x1bW5LZXkgfHwgJzEnO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnNsaWNlQnkuYWN0aXZlTGFiZWwgPSB0aGlzLnNsaWNlQnkuYWN0aXZlRHluYW1pY0NvbHVtbnNbMF0/LmhlYWRlciB8fCAnMSc7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2xpY2VCeS5hY3RpdmVMYWJlbCA9IGAke3RvdGFsfSBhY3RpZnNgO1xuICB9XG5cbiAgcHJpdmF0ZSBfdW5pcXVlQnlLZXkoY29sczogVGFibGVDb2x1bW5Qcm92aWRlcjxUPltdKTogVGFibGVDb2x1bW5Qcm92aWRlcjxUPltdIHtcbiAgICBjb25zdCBzZWVuID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgcmV0dXJuIGNvbHMuZmlsdGVyKGMgPT4ge1xuICAgICAgaWYgKHNlZW4uaGFzKGMua2V5KSkgcmV0dXJuIGZhbHNlO1xuICAgICAgc2Vlbi5hZGQoYy5rZXkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
/** Valeurs par défaut (français). Toutes les propriétés sont garanties non nulles. */
|
|
3
|
+
export const JQT_I18N_DEFAULTS = {
|
|
4
|
+
searchPlaceholder: 'Rechercher...',
|
|
5
|
+
expandFilterTitle: 'Déplier le filtre',
|
|
6
|
+
collapseFilterTitle: 'Replier le filtre',
|
|
7
|
+
viewMenuFields: 'Champs',
|
|
8
|
+
viewMenuGroupBy: 'Grouper par',
|
|
9
|
+
viewMenuSliceBy: 'Filtrer par',
|
|
10
|
+
viewNoneSelected: 'Aucun',
|
|
11
|
+
groupRemove: 'Retirer le groupe',
|
|
12
|
+
groupSortLabel: 'Trier :',
|
|
13
|
+
groupSortAsc: 'A → Z',
|
|
14
|
+
groupSortDesc: 'Z → A',
|
|
15
|
+
groupRowsPerGroup: 'Lignes par groupe :',
|
|
16
|
+
groupShowAll: 'Toutes',
|
|
17
|
+
groupTooMany: (count) => `⚠ Trop de groupes (${count}) — affinez les données ou choisissez une autre colonne`,
|
|
18
|
+
lazyRetry: 'Réessayer',
|
|
19
|
+
lazyErrorTitle: 'Erreur de chargement — cliquer pour réessayer',
|
|
20
|
+
lazyErrorMenuTitle: 'Erreur de chargement',
|
|
21
|
+
cellEmpty: 'N/A',
|
|
22
|
+
emptyState: 'Aucune donnée',
|
|
23
|
+
loadingState: 'Chargement des données...',
|
|
24
|
+
filterPanelTitle: (count) => count > 1 ? 'Filtres' : 'Filtre',
|
|
25
|
+
filterBlockDefaultTitle: 'Filtrer',
|
|
26
|
+
filterEmptyState: 'Aucune donnée',
|
|
27
|
+
exportButtonLabel: 'Exporter',
|
|
28
|
+
preferencesMenuLabel: 'Préférences',
|
|
29
|
+
preferencesEdit: 'Mode édition',
|
|
30
|
+
preferencesSave: 'Enregistrer la configuration',
|
|
31
|
+
preferencesClear: 'Effacer la configuration',
|
|
32
|
+
preferencesSavedMessage: 'Configuration enregistrée. Vous pouvez la réinitialiser à tout moment via Préférences → Effacer.',
|
|
33
|
+
preferencesClearedMessage: 'Configuration réinitialisée.',
|
|
34
|
+
preferencesConfirmEdit: 'Valider les modifications',
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Token d'injection pour surcharger tout ou partie des labels de jquery-table.
|
|
38
|
+
* Accepte un `Partial<JqtI18n>` — seules les clés fournies écrasent les défauts.
|
|
39
|
+
*/
|
|
40
|
+
export const JQT_I18N = new InjectionToken('JQT_I18N');
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianF0LWkxOG4udG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmV0ZW1lL2pxdWVyeS10YWJsZS9zcmMvbGliL2pxdC1pMThuLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFrRi9DLHNGQUFzRjtBQUN0RixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBWTtJQUN4QyxpQkFBaUIsRUFBRSxlQUFlO0lBQ2xDLGlCQUFpQixFQUFFLG1CQUFtQjtJQUN0QyxtQkFBbUIsRUFBRSxtQkFBbUI7SUFDeEMsY0FBYyxFQUFFLFFBQVE7SUFDeEIsZUFBZSxFQUFFLGFBQWE7SUFDOUIsZUFBZSxFQUFFLGFBQWE7SUFDOUIsZ0JBQWdCLEVBQUUsT0FBTztJQUN6QixXQUFXLEVBQUUsbUJBQW1CO0lBQ2hDLGNBQWMsRUFBRSxTQUFTO0lBQ3pCLFlBQVksRUFBRSxPQUFPO0lBQ3JCLGFBQWEsRUFBRSxPQUFPO0lBQ3RCLGlCQUFpQixFQUFFLHFCQUFxQjtJQUN4QyxZQUFZLEVBQUUsUUFBUTtJQUN0QixZQUFZLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLHNCQUFzQixLQUFLLHlEQUF5RDtJQUM3RyxTQUFTLEVBQUUsV0FBVztJQUN0QixjQUFjLEVBQUUsK0NBQStDO0lBQy9ELGtCQUFrQixFQUFFLHNCQUFzQjtJQUMxQyxTQUFTLEVBQUUsS0FBSztJQUNoQixVQUFVLEVBQUUsZUFBZTtJQUMzQixZQUFZLEVBQUUsMkJBQTJCO0lBQ3pDLGdCQUFnQixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVE7SUFDN0QsdUJBQXVCLEVBQUUsU0FBUztJQUNsQyxnQkFBZ0IsRUFBRSxlQUFlO0lBQ2pDLGlCQUFpQixFQUFFLFVBQVU7SUFDN0Isb0JBQW9CLEVBQUUsYUFBYTtJQUNuQyxlQUFlLEVBQUUsY0FBYztJQUMvQixlQUFlLEVBQUUsOEJBQThCO0lBQy9DLGdCQUFnQixFQUFFLDBCQUEwQjtJQUM1Qyx1QkFBdUIsRUFBRSxrR0FBa0c7SUFDM0gseUJBQXlCLEVBQUUsOEJBQThCO0lBQ3pELHNCQUFzQixFQUFFLDJCQUEyQjtDQUNwRCxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLElBQUksY0FBYyxDQUFtQixVQUFVLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogTGFiZWxzIGRlIGwnaW50ZXJmYWNlIHV0aWxpc2F0ZXVyIGRlIGpxdWVyeS10YWJsZS5cbiAqXG4gKiBGb3VybmlyIGNlIHRva2VuIGF1IG5pdmVhdSBkdSBtb2R1bGUgb3UgZHUgY29tcG9zYW50IHJhY2luZSBwb3VyIGxvY2FsaXNlclxuICogb3UgcGVyc29ubmFsaXNlciB0b3VzIGxlcyB0ZXh0ZXMgZGUgbGEgYmlibGlvdGjDqHF1ZSBlbiB1biBzZXVsIGVuZHJvaXQgOlxuICpcbiAqIGBgYHRzXG4gKiBwcm92aWRlcnM6IFtcbiAqICAgeyBwcm92aWRlOiBKUVRfSTE4TiwgdXNlVmFsdWU6IHsgc2VhcmNoUGxhY2Vob2xkZXI6ICdTZWFyY2jigKYnLCBlbXB0eVN0YXRlOiAnTm8gZGF0YScgfSB9XG4gKiBdXG4gKiBgYGBcbiAqXG4gKiBUb3VzIGxlcyBjaGFtcHMgc29udCBvcHRpb25uZWxzIDogc2V1bCBjZSBxdWUgdm91cyBmb3Vybmlzc2V6IMOpY3Jhc2UgbGVzXG4gKiB2YWxldXJzIHBhciBkw6lmYXV0IGZyYW7Dp2Fpc2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpxdEkxOG4ge1xuICAvKiogUGxhY2Vob2xkZXIgZGUgbGEgYmFycmUgZGUgcmVjaGVyY2hlLiAqL1xuICBzZWFyY2hQbGFjZWhvbGRlcjogc3RyaW5nO1xuICAvKiogVGl0cmUgZHUgYm91dG9uIHBvdXIgZMOpcGxpZXIgbGUgcGFubmVhdSBkZSBmaWx0cmVzLiAqL1xuICBleHBhbmRGaWx0ZXJUaXRsZTogc3RyaW5nO1xuICAvKiogVGl0cmUgZHUgYm91dG9uIHBvdXIgcmVwbGllciBsZSBwYW5uZWF1IGRlIGZpbHRyZXMuICovXG4gIGNvbGxhcHNlRmlsdGVyVGl0bGU6IHN0cmluZztcbiAgLyoqIExhYmVsIGR1IHNvdXMtbWVudSBcIkNoYW1wc1wiIGRhbnMgVmlldy4gKi9cbiAgdmlld01lbnVGaWVsZHM6IHN0cmluZztcbiAgLyoqIExhYmVsIGR1IHNvdXMtbWVudSBcIkdyb3VwIGJ5XCIgZGFucyBWaWV3LiAqL1xuICB2aWV3TWVudUdyb3VwQnk6IHN0cmluZztcbiAgLyoqIExhYmVsIGR1IHNvdXMtbWVudSBcIlNsaWNlIGJ5XCIgZGFucyBWaWV3LiAqL1xuICB2aWV3TWVudVNsaWNlQnk6IHN0cmluZztcbiAgLyoqIExhYmVsIGFmZmljaMOpIHF1YW5kIGF1Y3VuZSBvcHRpb24gbidlc3Qgc8OpbGVjdGlvbm7DqWUgKGdyb3VwZSwgc2xpY2UpLiAqL1xuICB2aWV3Tm9uZVNlbGVjdGVkOiBzdHJpbmc7XG4gIC8qKiBCb3V0b24gXCJSZXRpcmVyIGxlIGdyb3VwZVwiIGRhbnMgbGEgYmFycmUgZGUgZ3JvdXBlLiAqL1xuICBncm91cFJlbW92ZTogc3RyaW5nO1xuICAvKiogTGFiZWwgXCJUcmllciA6XCIgZGFucyBsYSBiYXJyZSBkZSBncm91cGUuICovXG4gIGdyb3VwU29ydExhYmVsOiBzdHJpbmc7XG4gIC8qKiBUb29sdGlwIHRyaSBhc2NlbmRhbnQuICovXG4gIGdyb3VwU29ydEFzYzogc3RyaW5nO1xuICAvKiogVG9vbHRpcCB0cmkgZGVzY2VuZGFudC4gKi9cbiAgZ3JvdXBTb3J0RGVzYzogc3RyaW5nO1xuICAvKiogTGFiZWwgXCJMaWduZXMgcGFyIGdyb3VwZVwiIGRhbnMgbGUgc8OpbGVjdGV1ciBkZSB0YWlsbGUgZGUgZ3JvdXBlLiAqL1xuICBncm91cFJvd3NQZXJHcm91cDogc3RyaW5nO1xuICAvKiogT3B0aW9uIFwiVG91dGVzXCIgKGFmZmljaGVyIHRvdXRlcyBsZXMgbGlnbmVzIHNhbnMgcGFnaW5hdGlvbiBkZSBncm91cGUpLiAqL1xuICBncm91cFNob3dBbGw6IHN0cmluZztcbiAgLyoqIE1lc3NhZ2UgcXVhbmQgbGUgZ3JvdXBlIGTDqXBhc3NlIGxlIG5vbWJyZSBtYXhpbWFsIGF1dG9yaXPDqS4gUmXDp29pdCBsZSBub21icmUgZGUgZ3JvdXBlcy4gKi9cbiAgZ3JvdXBUb29NYW55OiAoY291bnQ6IG51bWJlcikgPT4gc3RyaW5nO1xuICAvKiogTGFiZWwgZHUgYm91dG9uIGRlIHLDqWVzc2FpIHBvdXIgdW5lIGNvbG9ubmUgbGF6eSBlbiBlcnJldXIuICovXG4gIGxhenlSZXRyeTogc3RyaW5nO1xuICAvKiogVG9vbHRpcCBkdSBib3V0b24gZGUgcsOpZXNzYWkuICovXG4gIGxhenlFcnJvclRpdGxlOiBzdHJpbmc7XG4gIC8qKiBUb29sdGlwIGRlIGwnaWPDtG5lIGQnZXJyZXVyIGRhbnMgbGUgbWVudSBWaWV3ID4gQ2hhbXBzLiAqL1xuICBsYXp5RXJyb3JNZW51VGl0bGU6IHN0cmluZztcbiAgLyoqIFZhbGV1ciBhZmZpY2jDqWUgZGFucyB1bmUgY2VsbHVsZSB2aWRlIChudWxsIC8gdW5kZWZpbmVkIC8gJycpLiAqL1xuICBjZWxsRW1wdHk6IHN0cmluZztcbiAgLyoqIE1lc3NhZ2UgcXVhbmQgbGUgdGFibGVhdSBlc3QgdmlkZS4gKi9cbiAgZW1wdHlTdGF0ZTogc3RyaW5nO1xuICAvKiogTWVzc2FnZSBwZW5kYW50IGxlIGNoYXJnZW1lbnQgKGBbaXNMb2FkaW5nXT1cInRydWVcImApLiAqL1xuICBsb2FkaW5nU3RhdGU6IHN0cmluZztcbiAgLyoqIFRpdHJlIGR1IHBhbm5lYXUgZGUgZmlsdHJlcyBsYXTDqXJhbC4gUmXDp29pdCBsZSBub21icmUgZGUgYmxvY3MgZGUgZmlsdHJlcyBhY3RpZnMuICovXG4gIGZpbHRlclBhbmVsVGl0bGU6IChjb3VudDogbnVtYmVyKSA9PiBzdHJpbmc7XG4gIC8qKiBUaXRyZSBwYXIgZMOpZmF1dCBkJ3VuIGJsb2MgZGUgZmlsdHJlIHNhbnMgYHRpdGxlYCBjb25maWd1csOpLiAqL1xuICBmaWx0ZXJCbG9ja0RlZmF1bHRUaXRsZTogc3RyaW5nO1xuICAvKiogTWVzc2FnZSBkYW5zIHVuIGJsb2MgZGUgZmlsdHJlIHNhbnMgY2F0w6lnb3JpZXMgY29ycmVzcG9uZGFudGVzLiAqL1xuICBmaWx0ZXJFbXB0eVN0YXRlOiBzdHJpbmc7XG4gIC8qKiBMYWJlbCBkdSBib3V0b24gZCdleHBvcnQgQ1NWLiAqL1xuICBleHBvcnRCdXR0b25MYWJlbDogc3RyaW5nO1xuICAvKiogTGFiZWwgZHUgbWVudSBQcsOpZsOpcmVuY2VzIGRhbnMgVmlldy4gKi9cbiAgcHJlZmVyZW5jZXNNZW51TGFiZWw6IHN0cmluZztcbiAgLyoqIFNvdXMtaXRlbSA6IGFjdGl2ZXIgbGUgbW9kZSDDqWRpdGlvbi4gKi9cbiAgcHJlZmVyZW5jZXNFZGl0OiBzdHJpbmc7XG4gIC8qKiBTb3VzLWl0ZW0gOiBlbnJlZ2lzdHJlciBsYSBjb25maWcuICovXG4gIHByZWZlcmVuY2VzU2F2ZTogc3RyaW5nO1xuICAvKiogU291cy1pdGVtIDogZWZmYWNlciBsYSBjb25maWcuICovXG4gIHByZWZlcmVuY2VzQ2xlYXI6IHN0cmluZztcbiAgLyoqIE1lc3NhZ2UgZGUgY29uZmlybWF0aW9uIGFwcsOocyBlbnJlZ2lzdHJlbWVudC4gKi9cbiAgcHJlZmVyZW5jZXNTYXZlZE1lc3NhZ2U6IHN0cmluZztcbiAgLyoqIE1lc3NhZ2UgZGUgY29uZmlybWF0aW9uIGFwcsOocyBlZmZhY2VtZW50LiAqL1xuICBwcmVmZXJlbmNlc0NsZWFyZWRNZXNzYWdlOiBzdHJpbmc7XG4gIC8qKiBUb29sdGlwIGR1IGJvdXRvbiBkZSB2YWxpZGF0aW9uIGR1IG1vZGUgw6lkaXRpb24uICovXG4gIHByZWZlcmVuY2VzQ29uZmlybUVkaXQ6IHN0cmluZztcbn1cblxuLyoqIFZhbGV1cnMgcGFyIGTDqWZhdXQgKGZyYW7Dp2FpcykuIFRvdXRlcyBsZXMgcHJvcHJpw6l0w6lzIHNvbnQgZ2FyYW50aWVzIG5vbiBudWxsZXMuICovXG5leHBvcnQgY29uc3QgSlFUX0kxOE5fREVGQVVMVFM6IEpxdEkxOG4gPSB7XG4gIHNlYXJjaFBsYWNlaG9sZGVyOiAnUmVjaGVyY2hlci4uLicsXG4gIGV4cGFuZEZpbHRlclRpdGxlOiAnRMOpcGxpZXIgbGUgZmlsdHJlJyxcbiAgY29sbGFwc2VGaWx0ZXJUaXRsZTogJ1JlcGxpZXIgbGUgZmlsdHJlJyxcbiAgdmlld01lbnVGaWVsZHM6ICdDaGFtcHMnLFxuICB2aWV3TWVudUdyb3VwQnk6ICdHcm91cGVyIHBhcicsXG4gIHZpZXdNZW51U2xpY2VCeTogJ0ZpbHRyZXIgcGFyJyxcbiAgdmlld05vbmVTZWxlY3RlZDogJ0F1Y3VuJyxcbiAgZ3JvdXBSZW1vdmU6ICdSZXRpcmVyIGxlIGdyb3VwZScsXG4gIGdyb3VwU29ydExhYmVsOiAnVHJpZXIgOicsXG4gIGdyb3VwU29ydEFzYzogJ0Eg4oaSIFonLFxuICBncm91cFNvcnREZXNjOiAnWiDihpIgQScsXG4gIGdyb3VwUm93c1Blckdyb3VwOiAnTGlnbmVzIHBhciBncm91cGUgOicsXG4gIGdyb3VwU2hvd0FsbDogJ1RvdXRlcycsXG4gIGdyb3VwVG9vTWFueTogKGNvdW50KSA9PiBg4pqgIFRyb3AgZGUgZ3JvdXBlcyAoJHtjb3VudH0pIOKAlCBhZmZpbmV6IGxlcyBkb25uw6llcyBvdSBjaG9pc2lzc2V6IHVuZSBhdXRyZSBjb2xvbm5lYCxcbiAgbGF6eVJldHJ5OiAnUsOpZXNzYXllcicsXG4gIGxhenlFcnJvclRpdGxlOiAnRXJyZXVyIGRlIGNoYXJnZW1lbnQg4oCUIGNsaXF1ZXIgcG91ciByw6llc3NheWVyJyxcbiAgbGF6eUVycm9yTWVudVRpdGxlOiAnRXJyZXVyIGRlIGNoYXJnZW1lbnQnLFxuICBjZWxsRW1wdHk6ICdOL0EnLFxuICBlbXB0eVN0YXRlOiAnQXVjdW5lIGRvbm7DqWUnLFxuICBsb2FkaW5nU3RhdGU6ICdDaGFyZ2VtZW50IGRlcyBkb25uw6llcy4uLicsXG4gIGZpbHRlclBhbmVsVGl0bGU6IChjb3VudCkgPT4gY291bnQgPiAxID8gJ0ZpbHRyZXMnIDogJ0ZpbHRyZScsXG4gIGZpbHRlckJsb2NrRGVmYXVsdFRpdGxlOiAnRmlsdHJlcicsXG4gIGZpbHRlckVtcHR5U3RhdGU6ICdBdWN1bmUgZG9ubsOpZScsXG4gIGV4cG9ydEJ1dHRvbkxhYmVsOiAnRXhwb3J0ZXInLFxuICBwcmVmZXJlbmNlc01lbnVMYWJlbDogJ1Byw6lmw6lyZW5jZXMnLFxuICBwcmVmZXJlbmNlc0VkaXQ6ICdNb2RlIMOpZGl0aW9uJyxcbiAgcHJlZmVyZW5jZXNTYXZlOiAnRW5yZWdpc3RyZXIgbGEgY29uZmlndXJhdGlvbicsXG4gIHByZWZlcmVuY2VzQ2xlYXI6ICdFZmZhY2VyIGxhIGNvbmZpZ3VyYXRpb24nLFxuICBwcmVmZXJlbmNlc1NhdmVkTWVzc2FnZTogJ0NvbmZpZ3VyYXRpb24gZW5yZWdpc3Ryw6llLiBWb3VzIHBvdXZleiBsYSByw6lpbml0aWFsaXNlciDDoCB0b3V0IG1vbWVudCB2aWEgUHLDqWbDqXJlbmNlcyDihpIgRWZmYWNlci4nLFxuICBwcmVmZXJlbmNlc0NsZWFyZWRNZXNzYWdlOiAnQ29uZmlndXJhdGlvbiByw6lpbml0aWFsaXPDqWUuJyxcbiAgcHJlZmVyZW5jZXNDb25maXJtRWRpdDogJ1ZhbGlkZXIgbGVzIG1vZGlmaWNhdGlvbnMnLFxufTtcblxuLyoqXG4gKiBUb2tlbiBkJ2luamVjdGlvbiBwb3VyIHN1cmNoYXJnZXIgdG91dCBvdSBwYXJ0aWUgZGVzIGxhYmVscyBkZSBqcXVlcnktdGFibGUuXG4gKiBBY2NlcHRlIHVuIGBQYXJ0aWFsPEpxdEkxOG4+YCDigJQgc2V1bGVzIGxlcyBjbMOpcyBmb3VybmllcyDDqWNyYXNlbnQgbGVzIGTDqWZhdXRzLlxuICovXG5leHBvcnQgY29uc3QgSlFUX0kxOE4gPSBuZXcgSW5qZWN0aW9uVG9rZW48UGFydGlhbDxKcXRJMThuPj4oJ0pRVF9JMThOJyk7XG4iXX0=
|
|
@@ -1,2 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Raccourci pour déclarer une colonne de base.
|
|
3
|
+
*
|
|
4
|
+
* ```ts
|
|
5
|
+
* columns: [
|
|
6
|
+
* col('name', 'Nom'),
|
|
7
|
+
* col('status', 'Statut', { sortable: false }),
|
|
8
|
+
* ]
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
export function col(key, header, overrides) {
|
|
12
|
+
return { key, header, ...overrides };
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianF1ZXJ5LXRhYmxlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25ldGVtZS9qcXVlcnktdGFibGUvc3JjL2xpYi9qcXVlcnktdGFibGUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcUVBOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxHQUFHLENBQ2pCLEdBQVcsRUFDWCxNQUFjLEVBQ2QsU0FBMkM7SUFFM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxTQUFTLEVBQUUsQ0FBQztBQUN2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YVByb3ZpZGVyIH0gZnJvbSAnQG9uZXRlbWUvanF1ZXJ5LWNvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2xpY2VDb25maWcgfSBmcm9tICcuL2NvbXBvbmVudC9zbGljZS1wYW5lbC9zbGljZS1wYW5lbC5tb2RlbCc7XG5leHBvcnQgeyBTbGljZUNvbmZpZyB9IGZyb20gJy4vY29tcG9uZW50L3NsaWNlLXBhbmVsL3NsaWNlLXBhbmVsLm1vZGVsJztcblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUNvbHVtblByb3ZpZGVyPFQgPSBhbnk+IHtcbiAga2V5OiBzdHJpbmc7XG4gIC8qKiBMaWJlbGzDqSBhZmZpY2jDqSBkYW5zIGwnZW4tdMOqdGUgZGUgY29sb25uZS4gT3B0aW9ubmVsIHNpIGxhIGNvbG9ubmUgdXRpbGlzZSB1biB0ZW1wbGF0ZSBjdXN0b20uICovXG4gIGhlYWRlcj86IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbiAgdmFsdWU/OiBEYXRhUHJvdmlkZXI8YW55PjtcbiAgLyoqIFZhbGV1ciB1dGlsaXPDqWUgcG91ciBsZSB0cmkgc2kgZGlmZsOpcmVudGUgZGUgYHZhbHVlYC4gVXRpbGUgcXVhbmQgYHZhbHVlYCByZXRvdXJuZSB1bmUgY2hhw65uZSBmb3JtYXTDqWUgKGRhdGUsIGR1csOpZS4uLikuICovXG4gIHNvcnRWYWx1ZT86IERhdGFQcm92aWRlcjxhbnk+O1xuICAvKipcbiAgICogVmFsZXVyIHV0aWxpc8OpZSBwb3VyIGxhIHJlY2hlcmNoZSBwbGVpbi10ZXh0ZS5cbiAgICogw4AgZMOpZmluaXIgcXVhbmQgbGEgY29sb25uZSB1dGlsaXNlIHVuIGBqcXQtY2VsbC1kZWZgIHRlbXBsYXRlIHBlcnNvbm5hbGlzw6kgZXQgcXUnYXVjdW4gYHZhbHVlYCBwcm92aWRlciBuJ2VzdCBkw6ljbGFyw6kuXG4gICAqIFNpIGFic2VudCwgbGEgcmVjaGVyY2hlIHV0aWxpc2UgYHZhbHVlYCBlbiBwcmlvcml0w6ksIHB1aXMgbGEgdmFsZXVyIGJydXRlIGRlIGxhIGxpZ25lLlxuICAgKiBFeGVtcGxlIDogYHNlYXJjaFZhbHVlOiAocm93KSA9PiBkdXJhdGlvblBpcGUudHJhbnNmb3JtKCh0b2RheSAtIHJvdy5zdGFydCkgLyAxMDAwKWBcbiAgICovXG4gIHNlYXJjaFZhbHVlPzogRGF0YVByb3ZpZGVyPHN0cmluZz47XG4gIHNvcnRhYmxlPzogYm9vbGVhbjtcbiAgcmVtb3ZhYmxlPzogYm9vbGVhbjtcbiAgb3B0aW9uYWw/OiBib29sZWFuO1xuICB3aWR0aD86IHN0cmluZztcbiAgZ3JvdXBhYmxlPzogYm9vbGVhbjtcbiAgc2xpY2VhYmxlPzogYm9vbGVhbjtcbiAgLyoqIENoYXJnZW1lbnQgZGlmZsOpcsOpIDogbGEgcHLDqXNlbmNlIGRlIGNldCBvYmpldCBhY3RpdmUgbGUgbW9kZSBsYXp5LiAqL1xuICBsYXp5Pzoge1xuICAgIC8qKiBGb25jdGlvbiBhcHBlbMOpZSBwb3VyIGNoYXJnZXIgbGVzIHZhbGV1cnMgZGUgbGEgY29sb25uZS4gUmV0b3VybmUgdW4gdGFibGVhdSBkYW5zIGxlIG3Dqm1lIG9yZHJlIHF1ZSBsZXMgbGlnbmVzLiAqL1xuICAgIGZldGNoRm46ICgpID0+IE9ic2VydmFibGU8YW55W10+O1xuICB9O1xufVxuXG4vKiogQ29uZmlndXJhdGlvbiBkZSBsYSBiYXJyZSBkZSByZWNoZXJjaGUuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlU2VhcmNoQ29uZmlnIHtcbiAgZW5hYmxlZD86IGJvb2xlYW47XG4gIC8qKiBWYWxldXIgaW5pdGlhbGUgYXUgY2hhcmdlbWVudC4gKi9cbiAgaW5pdGlhbFF1ZXJ5Pzogc3RyaW5nO1xuICAvKiogUmVzdHJlaW50IGxhIHJlY2hlcmNoZSB0ZXh0ZSBhdXggY29sb25uZXMgZG9udCBsYSBga2V5YCBlc3QgZGFucyBjZSB0YWJsZWF1LiBTaSBhYnNlbnQsIHRvdXRlcyBsZXMgY29sb25uZXMgc29udCBjaGVyY2jDqWVzLiAqL1xuICBzZWFyY2hDb2x1bW5zPzogc3RyaW5nW107XG59XG5cbi8qKiBDb25maWd1cmF0aW9uIGRlIGxhIHBhZ2luYXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlUGFnaW5hdGlvbkNvbmZpZyB7XG4gIGVuYWJsZWQ/OiBib29sZWFuO1xuICBwYWdlU2l6ZT86IG51bWJlcjtcbiAgcGFnZVNpemVPcHRpb25zPzogbnVtYmVyW107XG4gIC8qKiBPcHRpb25zIGRlIHRhaWxsZSBkZSBwYWdlIHNww6ljaWZpcXVlcyBhdSBtb2RlIEdyb3VwIGJ5LiBTaSBhYnNlbnQsIHV0aWxpc2UgYHBhZ2VTaXplT3B0aW9uc2AuICovXG4gIHBhZ2VTaXplT3B0aW9uc0dyb3VwQnk/OiBudW1iZXJbXTtcbn1cblxuLyoqIENvbmZpZ3VyYXRpb24gZHUgbWVudSBWaWV3IChDaGFtcHMgLyBHcm91cCBieSAvIFNsaWNlIGJ5KS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVWaWV3Q29uZmlnIHtcbiAgLyoqIEFjdGl2ZSBsZSBib3V0b24gVmlldy4gUGFyIGTDqWZhdXQgOiBgZmFsc2VgLiAqL1xuICBlbmFibGVkPzogYm9vbGVhbjtcbiAgLyoqIEF1dG9yaXNlIGxlIG1hc3F1YWdlL2FmZmljaGFnZSBkZXMgY29sb25uZXMgZGUgYmFzZSB2aWEgVmlldyA+IENoYW1wcy4gUGFyIGTDqWZhdXQgOiBgdHJ1ZWAuICovXG4gIGVuYWJsZUNvbHVtblJlbW92YWw/OiBib29sZWFuO1xuICAvKiogQWN0aXZlIGxlIGRyYWcgJiBkcm9wIHBvdXIgcsOpb3Jkb25uZXIgbGVzIGNvbG9ubmVzLiBQYXIgZMOpZmF1dCA6IGBmYWxzZWAuICovXG4gIGVuYWJsZUNvbHVtbkRyYWdEcm9wPzogYm9vbGVhbjtcbn1cblxuLyoqIExhYmVscyBkJ8OpdGF0IGR1IHRhYmxlYXUuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlTGFiZWxzQ29uZmlnIHtcbiAgLyoqIEFmZmljaMOpIHF1YW5kIGxlIHRhYmxlYXUgZXN0IHZpZGUuIFBhciBkw6lmYXV0IDogYCdBdWN1bmUgZG9ubsOpZSdgLiAqL1xuICBlbXB0eT86IHN0cmluZztcbiAgLyoqIEFmZmljaMOpIHBlbmRhbnQgbGUgY2hhcmdlbWVudC4gUGFyIGTDqWZhdXQgOiBgJ0NoYXJnZW1lbnQgZGVzIGRvbm7DqWVzLi4uJ2AuICovXG4gIGxvYWRpbmc/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmFjY291cmNpIHBvdXIgZMOpY2xhcmVyIHVuZSBjb2xvbm5lIGRlIGJhc2UuXG4gKlxuICogYGBgdHNcbiAqIGNvbHVtbnM6IFtcbiAqICAgY29sKCduYW1lJywgJ05vbScpLFxuICogICBjb2woJ3N0YXR1cycsICdTdGF0dXQnLCB7IHNvcnRhYmxlOiBmYWxzZSB9KSxcbiAqIF1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29sPFQgPSBhbnk+KFxuICBrZXk6IHN0cmluZyxcbiAgaGVhZGVyOiBzdHJpbmcsXG4gIG92ZXJyaWRlcz86IFBhcnRpYWw8VGFibGVDb2x1bW5Qcm92aWRlcjxUPj4sXG4pOiBUYWJsZUNvbHVtblByb3ZpZGVyPFQ+IHtcbiAgcmV0dXJuIHsga2V5LCBoZWFkZXIsIC4uLm92ZXJyaWRlcyB9O1xufVxuXG4vKiogQ29uZmlndXJhdGlvbiBkZSBs4oCZZXhwb3J0IENTViBkw6ljbGVuY2jDqSBkZXB1aXMgbGEgdG9vbGJhci4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVFeHBvcnRDb25maWc8VCA9IGFueT4ge1xuICAvKiogQWZmaWNoZSBsZSBib3V0b24gRXhwb3J0IGRhbnMgbGEgdG9vbGJhci4gUGFyIGTDqWZhdXQgOiBgdHJ1ZWAuICovXG4gIGVuYWJsZWQ/OiBib29sZWFuO1xuICAvKiogTm9tIGR1IGZpY2hpZXIgZ8OpbsOpcsOpLiBQYXIgZMOpZmF1dMKgOiBgJ2V4cG9ydC5jc3YnYC4gKi9cbiAgZmlsZW5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUcmFuc2Zvcm1lIGNoYXF1ZSBsaWduZSBhdmFudCBleHBvcnQuXG4gICAqIFNpIGFic2VudCwgbGVzIHZhbGV1cnMgYWZmaWNow6llcyAoYXByw6hzIGBub3JtYWxpemVDZWxsVmFsdWVgKSBzb250IHV0aWxpc8OpZXMuXG4gICAqIFNldWxlcyBsZXMgY29sb25uZXMgdmlzaWJsZXMgc29udCBleHBvcnTDqWVzLlxuICAgKi9cbiAgdHJhbnNmb3JtPzogKHJvdzogVCkgPT4gUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cbi8qKlxuICogQ29uZmlndXJhdGlvbiBkZSBsYSBmb25jdGlvbm5hbGl0w6kgUHLDqWbDqXJlbmNlcy5cbiAqXG4gKiBBam91dGUgdW4gbWVudSBcIlByw6lmw6lyZW5jZXNcIiBkYW5zIFZpZXcgcXVpIHBlcm1ldCA6XG4gKiAtIExlICoqbW9kZSDDqWRpdGlvbioqIChyZWRpbWVuc2lvbm5lciAvIHLDqW9yZG9ubmVyIGxlcyBjb2xvbm5lcyDDoCBsYSBzb3VyaXMpXG4gKiAtIEwnKiplbnJlZ2lzdHJlbWVudCoqIGRlIGxhIGNvbmZpZ3VyYXRpb24gY291cmFudGUgZGFucyBsZSBsb2NhbFN0b3JhZ2VcbiAqIC0gTCcqKmVmZmFjZW1lbnQqKiBkZSBsYSBjb25maWd1cmF0aW9uIHNhdXZlZ2FyZMOpZVxuICpcbiAqIENoYXF1ZSB0YWJsZWF1IGVzdCBpZGVudGlmacOpIHBhciBgdGFibGVJZGAgKGNsw6kgbG9jYWxTdG9yYWdlIHVuaXF1ZSkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVQcmVmZXJlbmNlc0NvbmZpZyB7XG4gIC8qKiBBY3RpdmUgbGEgZm9uY3Rpb25uYWxpdMOpLiBQYXIgZMOpZmF1dCA6IGB0cnVlYC4gKi9cbiAgZW5hYmxlZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJZGVudGlmaWFudCB1bmlxdWUgZHUgdGFibGVhdSwgdXRpbGlzw6kgY29tbWUgY2zDqSBsb2NhbFN0b3JhZ2UuXG4gICAqIERvaXQgw6p0cmUgc3RhYmxlIGVudHJlIGxlcyByZWNoYXJnZW1lbnRzIGRlIHBhZ2UuXG4gICAqIFNpIGFic2VudCwgdW4gaWRlbnRpZmlhbnQgZXN0IGTDqXJpdsOpIGF1dG9tYXRpcXVlbWVudCBkZXMgY2zDqXMgZGUgY29sb25uZXMuXG4gICAqIEV4ZW1wbGUgOiBgJ3VzZXItdGFibGUnYCwgYCdpbnZvaWNlLWxpc3QnYC5cbiAgICovXG4gIHRhYmxlSWQ/OiBzdHJpbmc7XG59XG5cbi8qKiBTbmFwc2hvdCBkZSBjb25maWd1cmF0aW9uIHBlcnNpc3TDqSBkYW5zIGxlIGxvY2FsU3RvcmFnZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2F2ZWRUYWJsZUNvbmZpZyB7XG4gIC8qKiBWYWxldXIgZGUgbGEgc2VhcmNoYmFyLiAqL1xuICBzZWFyY2g/OiBzdHJpbmc7XG4gIC8qKiBDbMOpIGRlIGxhIGNvbG9ubmUgdXRpbGlzw6llIHBvdXIgbGUgZ3JvdXAgYnkuIGBudWxsYCA9IGF1Y3VuLiAqL1xuICBncm91cEJ5Pzogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIE9yZHJlIGRlcyBjbMOpcyBkZSBjb2xvbm5lcyAocG9zaXRpb24pLiAqL1xuICBjb2x1bW5PcmRlcj86IHN0cmluZ1tdO1xuICAvKiogQ2zDqXMgZGVzIGNvbG9ubmVzIHZpc2libGVzLiAqL1xuICB2aXNpYmxlQ29sdW1ucz86IHN0cmluZ1tdO1xuICAvKiogTGFyZ2V1cnMgZGUgY29sb25uZXMgZW4gcGl4ZWxzLCBpbmRleMOpZXMgcGFyIGNsw6kuICovXG4gIGNvbHVtbldpZHRocz86IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG4gIC8qKiBQYW5uZWF1IHNsaWNlIHJlcGxpw6kgb3Ugbm9uLiAqL1xuICBzbGljZVBhbmVsQ29sbGFwc2VkPzogYm9vbGVhbjtcbiAgLyoqIENsw6lzIGRlcyBzbGljZXMgc3RhdGlxdWVzIGNhY2jDqWVzIHBhciBsJ3V0aWxpc2F0ZXVyICh2aWEgdG9nZ2xlIGRhbnMgbGUgbWVudSBWaWV3KS4gKi9cbiAgaGlkZGVuU2xpY2VLZXlzPzogc3RyaW5nW107XG4gIC8qKiBDbMOpcyBkZXMgY29sb25uZXMgdXRpbGlzw6llcyBjb21tZSBzbGljZXMgZHluYW1pcXVlcy4gKi9cbiAgZHluYW1pY1NsaWNlS2V5cz86IHN0cmluZ1tdO1xuICAvKiogRmlsdHJlcyBhY3RpZnMgZHUgc2xpY2UgcGFuZWwgOiBtYXAgc2xpY2VJbmRleCDihpIgdGFibGVhdSBkZSBjbMOpcyBhY3RpdmVzLiAqL1xuICBzbGljZUZpbHRlcnM/OiBSZWNvcmQ8bnVtYmVyLCBzdHJpbmdbXT47XG59XG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlUHJvdmlkZXI8VCA9IGFueT4ge1xuICBjb2x1bW5zPzogVGFibGVDb2x1bW5Qcm92aWRlcjxUPltdO1xuICB0aXRsZT86IHN0cmluZztcbiAgc2xpY2VzPzogU2xpY2VDb25maWc8VD5bXTtcbiAgLyoqIEFmZmljaGUgbGUgYm91dG9uIHRvZ2dsZSBwb3VyIHJlcGxpZXIvZMOpcGxpZXIgbGUgcGFubmVhdSBkZSBzbGljZXMuIFBhciBkw6lmYXV0IDogYHRydWVgLiAqL1xuICBlbmFibGVTbGljZVRvZ2dsZT86IGJvb2xlYW47XG4gIHNlYXJjaD86IFRhYmxlU2VhcmNoQ29uZmlnO1xuICBwYWdpbmF0aW9uPzogVGFibGVQYWdpbmF0aW9uQ29uZmlnO1xuICB2aWV3PzogVGFibGVWaWV3Q29uZmlnO1xuICBsYWJlbHM/OiBUYWJsZUxhYmVsc0NvbmZpZztcbiAgLyoqIFRyaSBpbml0aWFsIGFwcGxpcXXDqSBhdSBjaGFyZ2VtZW50LiBOJ2VzdCBwYXMgw6ljcmFzw6kgcGFyIGxlcyBjaGFuZ2VtZW50cyBkZSBkb25uw6llcy4gKi9cbiAgZGVmYXVsdFNvcnQ/OiB7IGFjdGl2ZTogc3RyaW5nOyBkaXJlY3Rpb246ICdhc2MnIHwgJ2Rlc2MnIH07XG4gIC8qKiBDbMOpIGRlIGNvbG9ubmUgw6AgdXRpbGlzZXIgY29tbWUgZ3JvdXAtYnkgcGFyIGTDqWZhdXQgYXUgY2hhcmdlbWVudC4gTidlc3QgcGFzIMOpY3Jhc8OpIHBhciBsZXMgY2hhbmdlbWVudHMgZGUgZG9ubsOpZXMgbmkgcGFyIHVuIHJlc2V0IGV4cGxpY2l0ZSBkZSBsJ3V0aWxpc2F0ZXVyLiAqL1xuICBkZWZhdWx0R3JvdXBCeT86IHN0cmluZyB8IG51bGw7XG4gIHJvd0NsYXNzPzogKHJvdzogVCwgaW5kZXg6IG51bWJlcikgPT4gc3RyaW5nIHwgc3RyaW5nW10gfCBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjtcbiAgLyoqIENhbGxiYWNrIGTDqWNsZW5jaMOpIHF1YW5kIGwndXRpbGlzYXRldXIgY2xpcXVlIHN1ciB1bmUgbGlnbmUuIEFsdGVybmF0aXZlIGF1IGAocm93U2VsZWN0ZWQpYCBPdXRwdXQuICovXG4gIG9uUm93U2VsZWN0ZWQ/OiAocm93OiBULCBldmVudDogTW91c2VFdmVudCB8IG51bGwpID0+IHZvaWQ7XG4gIC8qKiBDb25maWd1cmF0aW9uIGRlIGwnZXhwb3J0IENTVi4gKi9cbiAgZXhwb3J0PzogVGFibGVFeHBvcnRDb25maWc8VD47XG4gIC8qKiBDb25maWd1cmF0aW9uIGRlIGxhIGZvbmN0aW9ubmFsaXTDqSBQcsOpZsOpcmVuY2VzICjDqWRpdGlvbiArIHBlcnNpc3RhbmNlIGxvY2FsU3RvcmFnZSkuICovXG4gIHByZWZlcmVuY2VzPzogVGFibGVQcmVmZXJlbmNlc0NvbmZpZztcbn1cblxuXG4iXX0=
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
* Public API Surface of jquery-table
|
|
3
3
|
*/
|
|
4
4
|
export * from './lib/jquery-table.model';
|
|
5
|
+
export * from './lib/jqt-i18n.token';
|
|
5
6
|
export * from './lib/component/table.component';
|
|
6
7
|
export * from './lib/component/slice-panel/slice-panel.model';
|
|
7
8
|
export * from './lib/component/slice-panel/slice-panel.component';
|
|
8
9
|
export * from './lib/directive/jqt-cell-def.directive';
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL29uZXRlbWUvanF1ZXJ5LXRhYmxlL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsd0NBQXdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGpxdWVyeS10YWJsZVxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2pxdWVyeS10YWJsZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9qcXQtaTE4bi50b2tlbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnQvdGFibGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudC9zbGljZS1wYW5lbC9zbGljZS1wYW5lbC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnQvc2xpY2UtcGFuZWwvc2xpY2UtcGFuZWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZS9qcXQtY2VsbC1kZWYuZGlyZWN0aXZlJztcbiJdfQ==
|