@tsi-developpement/tsi-shared-ui 1.9.13 → 1.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/esm2022/lib/functions/currency-state.functions.mjs +203 -0
  2. package/esm2022/lib/interfaces/pagination/pagination-base.mjs +1 -1
  3. package/esm2022/lib/models/dynamic-form/colonne-personnalisee.mjs +3 -2
  4. package/esm2022/lib/pipes/tsi-currency.pipe.mjs +17 -19
  5. package/esm2022/lib/tsi-components/input-components/editable-grid/editable-grid.component.mjs +3 -3
  6. package/esm2022/lib/tsi-components/input-components/tsi-currency-other-input/tsi-currency-other-input.component.mjs +49 -28
  7. package/esm2022/lib/tsi-components/input-components/tsi-currency-societe-input/tsi-currency-societe-input.component.mjs +46 -28
  8. package/esm2022/lib/tsi-components/output-components/tsi-currency-other-display/tsi-currency-other-display.component.mjs +37 -10
  9. package/esm2022/lib/tsi-components/output-components/tsi-currency-societe-display/tsi-currency-societe-display.component.mjs +33 -40
  10. package/esm2022/lib/tsi-components/output-components/tsi-display-grid/tsi-display-grid.component.mjs +3 -3
  11. package/esm2022/lib/tsi-components/output-components/tsi-generic-grid/tsi-generic-grid.component.mjs +3 -3
  12. package/esm2022/lib/tsi-components/poc/locale-poc/locale-poc.component.mjs +68 -36
  13. package/esm2022/lib/tsi-components/tsi-generic-crud/tsi-generic-crud.component.mjs +35 -15
  14. package/esm2022/lib/tsi-components/tsi-generic-form/tsi-generic-form.component.mjs +1 -1
  15. package/esm2022/lib/tsi-components/tsi-kanban/tsi-kanban.component.mjs +1 -1
  16. package/esm2022/lib/tsi-components/tsi-search-box/tsi-search-box.component.mjs +1 -1
  17. package/fesm2022/tsi-developpement-tsi-shared-ui.mjs +643 -347
  18. package/fesm2022/tsi-developpement-tsi-shared-ui.mjs.map +1 -1
  19. package/lib/consts/app-providers.d.ts +1 -1
  20. package/lib/functions/currency-state.functions.d.ts +80 -0
  21. package/lib/interfaces/pagination/pagination-base.d.ts +1 -0
  22. package/lib/models/dynamic-form/colonne-personnalisee.d.ts +2 -1
  23. package/lib/pipes/tsi-currency.pipe.d.ts +6 -4
  24. package/lib/providers/shared-ui-tsi.provider.d.ts +1 -1
  25. package/lib/tsi-components/input-components/tsi-currency-other-input/tsi-currency-other-input.component.d.ts +15 -10
  26. package/lib/tsi-components/input-components/tsi-currency-societe-input/tsi-currency-societe-input.component.d.ts +13 -10
  27. package/lib/tsi-components/output-components/tsi-currency-other-display/tsi-currency-other-display.component.d.ts +16 -6
  28. package/lib/tsi-components/output-components/tsi-currency-societe-display/tsi-currency-societe-display.component.d.ts +12 -13
  29. package/lib/tsi-components/poc/locale-poc/locale-poc.component.d.ts +39 -21
  30. package/lib/tsi-components/tsi-generic-crud/tsi-generic-crud.component.d.ts +4 -2
  31. package/package.json +1 -1
@@ -1,69 +1,101 @@
1
- import { Component } from '@angular/core';
1
+ import { Component, inject } from '@angular/core';
2
+ import { AppSettingsService } from '../../../services/settings/app-settings.service';
3
+ import { DefaultSocieteDevise } from '../../../consts/tsi-consts';
2
4
  import * as i0 from "@angular/core";
3
5
  import * as i1 from "primeng/api";
4
6
  import * as i2 from "primeng/table";
5
- import * as i3 from "../../input-components/tsi-currency-other-input/tsi-currency-other-input.component";
6
- import * as i4 from "../../input-components/tsi-currency-societe-input/tsi-currency-societe-input.component";
7
- import * as i5 from "../../input-components/tsi-decimal-input/tsi-decimal-input.component";
8
- import * as i6 from "../../input-components/tsi-integer/tsi-integer.component";
9
- import * as i7 from "../../input-components/tsi-rate-input/tsi-rate-input.component";
10
- import * as i8 from "../../output-components/tsi-currency-other-display/tsi-currency-other-display.component";
11
- import * as i9 from "../../output-components/tsi-currency-societe-display/tsi-currency-societe-display.component";
12
- import * as i10 from "../../output-components/tsi-decimal-display/tsi-decimal-display.component";
13
- import * as i11 from "../../output-components/tsi-integer-display/tsi-integer-display.component";
14
- import * as i12 from "../../output-components/tsi-rate-display/tsi-rate-display.component";
7
+ import * as i3 from "../../input-components/tsi-search-combo/tsi-search-combo.component";
8
+ import * as i4 from "../../input-components/tsi-currency-other-input/tsi-currency-other-input.component";
9
+ import * as i5 from "../../input-components/tsi-currency-societe-input/tsi-currency-societe-input.component";
10
+ import * as i6 from "../../input-components/tsi-decimal-input/tsi-decimal-input.component";
11
+ import * as i7 from "../../input-components/tsi-integer/tsi-integer.component";
12
+ import * as i8 from "../../input-components/tsi-rate-input/tsi-rate-input.component";
13
+ import * as i9 from "../../output-components/tsi-currency-other-display/tsi-currency-other-display.component";
14
+ import * as i10 from "../../output-components/tsi-currency-societe-display/tsi-currency-societe-display.component";
15
+ import * as i11 from "../../output-components/tsi-decimal-display/tsi-decimal-display.component";
16
+ import * as i12 from "../../output-components/tsi-integer-display/tsi-integer-display.component";
17
+ import * as i13 from "../../output-components/tsi-rate-display/tsi-rate-display.component";
15
18
  /**
16
- * POC component used to validate and demonstrate the library's
17
- * locale integration and numeric formatting behavior.
19
+ * Proof-of-concept (POC) component used to validate and demonstrate
20
+ * the library's locale handling and numeric formatting behavior.
18
21
  *
19
- * The page allows testers to:
20
- * - Enter values using the library input components
21
- * - Immediately observe the formatted output using display components
22
+ * This page allows testers and developers to:
23
+ * - Enter values through input components
24
+ * - Instantly observe formatted results via display components
22
25
  *
23
- * This component is intended for:
24
- * - manual QA testing
25
- * - locale formatting validation
26
- * - development debugging
26
+ * Main purposes:
27
+ * - Manual QA validation
28
+ * - Locale and formatting verification
29
+ * - Development and debugging support
27
30
  *
28
- * Tested formatting types:
31
+ * Covered formatting scenarios:
29
32
  * - Company currency
30
33
  * - External currency
31
34
  * - Decimal numbers
32
35
  * - Rates / percentages
33
- * - Integers
36
+ * - Integers (with grouping)
34
37
  */
35
38
  export class LocalePocComponent {
39
+ // Ctor
36
40
  constructor() {
37
41
  /**
38
- * Company currency value.
42
+ * Available currencies used for testing currency inputs and displays.
43
+ */
44
+ this.currencies = [
45
+ { key: 'USD', value: 'United States Dollar' },
46
+ { key: 'CAD', value: 'Canadian dollar' },
47
+ { key: 'EUR', value: 'Euro' },
48
+ { key: 'TND', value: 'Dinar tunisien' },
49
+ { key: 'MAD', value: 'Moroccan Dirham' },
50
+ { key: 'ABCD', value: 'Devise - Code non ISO' }
51
+ ];
52
+ /**
53
+ * Company currency code.
54
+ * Bound to the `Tsi-Currency-Societe-Input` component.
55
+ */
56
+ this.currencySocieteCode = DefaultSocieteDevise.codeDevise;
57
+ /**
58
+ * Company currency amount.
39
59
  * Bound to the `Tsi-Currency-Societe-Input` component.
40
60
  */
41
- this.currencySociete = 12345.25;
61
+ this.currencySocieteValue = 12345.25;
62
+ /**
63
+ * External currency code.
64
+ * Bound to the `Tsi-Currency-Other-Input` component.
65
+ */
66
+ this.currencyOtherCode = 'EUR';
42
67
  /**
43
- * External currency value.
68
+ * External currency amount.
44
69
  * Bound to the `Tsi-Currency-Other-Input` component.
45
70
  */
46
- this.currencyOther = 987654.32;
71
+ this.currencyOtherValue = 987654.32;
47
72
  /**
48
- * Decimal value used to validate locale-specific
49
- * decimal separators and grouping behavior.
73
+ * Decimal value used to validate locale-specific:
74
+ * - decimal separators
75
+ * - digit grouping behavior
50
76
  */
51
- this.decimal = 192837.5;
77
+ this.decimalValue = 192837.5;
52
78
  /**
53
79
  * Rate value used to test percentage / rate formatting.
54
80
  */
55
- this.rate = 12.3;
81
+ this.rateValue = 12.3;
56
82
  /**
57
83
  * Integer value used to validate thousands grouping
58
- * without decimal digits.
84
+ * without decimal precision.
59
85
  */
60
- this.integer = 123456789;
86
+ this.integerValue = 123456789;
87
+ // DI
88
+ this._appSettingsService = inject(AppSettingsService);
89
+ this.currencySocieteCode = this._appSettingsService
90
+ .appSettings
91
+ .deviseSociete
92
+ .codeDevise ?? DefaultSocieteDevise.codeDevise;
61
93
  }
62
94
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LocalePocComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
63
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LocalePocComponent, selector: "lib-locale-poc", ngImport: i0, template: "<div class=\"card w-10 locale-poc-container\">\r\n\r\n <h3 class=\"mb-2\">Locale Formatting POC</h3>\r\n\r\n <!-- Explanation -->\r\n <p class=\"text-700 line-height-3 mb-4\">\r\n This page is a proof-of-concept used to validate the locale integration of the UI library.\r\n It allows testers and developers to enter numeric values using the library input components\r\n and immediately verify how those values are formatted by the corresponding display components.\r\n <br /><br />\r\n The objective is to ensure that number formatting (group separators, decimal separators,\r\n currency formatting, and integer grouping) behaves correctly for the currently active locale.\r\n This page is mainly intended for QA testing and debugging during internationalization development.\r\n </p>\r\n\r\n <!-- Locale Info Table -->\r\n <div class=\"mb-4 overflow-auto\">\r\n <h4 class=\"mb-2\">Supported Locales & Format</h4>\r\n <table class=\"table-auto w-full text-sm border-collapse border border-300\">\r\n <thead>\r\n <tr class=\"bg-gray-200\">\r\n <th class=\"border border-300 p-2 text-left\">Full Label</th>\r\n <th class=\"border border-300 p-2 text-left\">Code</th>\r\n <th class=\"border border-300 p-2 text-left\">Thousands Separator</th>\r\n <th class=\"border border-300 p-2 text-left\">Decimal Separator</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td>French (France)</td>\r\n <td>fr-FR</td>\r\n <td class=\"font-bold text-lg\">\u23BD (space)</td>\r\n <td class=\"font-bold text-lg\">, (comma)</td>\r\n </tr>\r\n <tr>\r\n <td>English (United Kingdom)</td>\r\n <td>en-GB</td>\r\n <td class=\"font-bold text-lg\">, (comma)</td>\r\n <td class=\"font-bold text-lg\">. (dot)</td>\r\n </tr>\r\n <tr>\r\n <td>Arabic (Tunisia)</td>\r\n <td>ar-TN</td>\r\n <td class=\"font-bold text-lg\">. (dot)</td>\r\n <td class=\"font-bold text-lg\">, (comma)</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <!-- Input / Display Table -->\r\n <p-table [value]=\"[{}]\" styleClass=\"p-datatable-sm\">\r\n\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th style=\"width: 25%\">Field</th>\r\n <th style=\"width: 35%\">Input Component</th>\r\n <th style=\"width: 40%\">Display Component</th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"body\">\r\n\r\n <tr>\r\n <td>Currency (Societe)</td>\r\n <td>\r\n <Tsi-Currency-Societe-Input [(inputField)]=\"currencySociete\" />\r\n </td>\r\n <td>\r\n <Tsi-Currency-Societe-Display [inputData]=\"currencySociete\" />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>Currency (Other)</td>\r\n <td>\r\n <Tsi-Currency-Other-Input [(inputField)]=\"currencyOther\" currency=\"EUR\" />\r\n </td>\r\n <td>\r\n <Tsi-Currency-Other-Display [inputData]=\"currencyOther\" currency=\"EUR\" />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>Decimal</td>\r\n <td>\r\n <Tsi-Decimal-Input [(inputField)]=\"decimal\" [numOfDecimal]=\"3\" />\r\n </td>\r\n <td>\r\n <Tsi-Decimal-Display [inputData]=\"decimal\" [numOfDecimal]=\"3\" />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>Rate</td>\r\n <td>\r\n <Tsi-Rate-Input [(inputField)]=\"rate\" [numOfDecimal]=\"3\" [isFraction]=\"false\" />\r\n </td>\r\n <td>\r\n <Tsi-Rate-Display [inputData]=\"rate\" [numOfDecimal]=\"3\" [isFraction]=\"false\" />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>Integer</td>\r\n <td>\r\n <Tsi-Integer [(inputField)]=\"integer\" />\r\n </td>\r\n <td>\r\n <Tsi-Integer-Display [inputData]=\"integer\" />\r\n </td>\r\n </tr>\r\n\r\n </ng-template>\r\n\r\n </p-table>\r\n\r\n</div>", styles: [".locale-poc-container{padding:1rem!important}\n"], dependencies: [{ kind: "directive", type: i1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i2.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "component", type: i3.TsiCurrencyOtherInputComponent, selector: "Tsi-Currency-Other-Input", inputs: ["numOfDecimal", "currency", "class"], outputs: ["inputFieldChange"] }, { kind: "component", type: i4.TsiCurrencySocieteInputComponent, selector: "Tsi-Currency-Societe-Input", inputs: ["class"], outputs: ["inputFieldChange"] }, { kind: "component", type: i5.TsiDecimalInputComponent, selector: "Tsi-Decimal-Input", inputs: ["numOfDecimal", "class"], outputs: ["inputFieldChange"] }, { kind: "component", type: i6.TsiIntegerComponent, selector: "Tsi-Integer", inputs: ["class", "minValue", "maxValue", "delayChangeTime"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i7.TsiRateInputComponent, selector: "Tsi-Rate-Input", inputs: ["required", "isFraction", "numOfDecimal"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i8.TsiCurrencyOtherDisplayComponent, selector: "Tsi-Currency-Other-Display", inputs: ["inputData", "currency"] }, { kind: "component", type: i9.TsiCurrencySocieteDisplayComponent, selector: "Tsi-Currency-Societe-Display", inputs: ["inputData"] }, { kind: "component", type: i10.TsiDecimalDisplayComponent, selector: "Tsi-Decimal-Display", inputs: ["inputData", "formatDecimal", "numOfDecimal"] }, { kind: "component", type: i11.TsiIntegerDisplayComponent, selector: "Tsi-Integer-Display", inputs: ["inputData"] }, { kind: "component", type: i12.TsiRateDisplayComponent, selector: "Tsi-Rate-Display", inputs: ["isFraction", "inputData", "numOfDecimal"] }] }); }
95
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LocalePocComponent, selector: "lib-locale-poc", ngImport: i0, template: "<div class=\"card w-10 locale-poc-container\">\r\n\r\n <h3 class=\"mb-2\">Locale Formatting POC</h3>\r\n\r\n <!-- Explanation -->\r\n <p class=\"text-700 line-height-3 mb-4\">\r\n This page is a proof-of-concept used to validate the locale integration of the UI library.\r\n It allows testers and developers to enter numeric values using the library input components\r\n and immediately verify how those values are formatted by the corresponding display components.\r\n <br /><br />\r\n The objective is to ensure that number formatting (group separators, decimal separators,\r\n currency formatting, and integer grouping) behaves correctly for the currently active locale.\r\n This page is mainly intended for QA testing and debugging during internationalization development.\r\n </p>\r\n\r\n <!-- Locale Info Table -->\r\n <div class=\"mb-4 overflow-auto\">\r\n <h4 class=\"mb-2\">Supported Locales & Format</h4>\r\n <table class=\"table-auto w-full text-sm border-collapse border border-300\">\r\n <thead>\r\n <tr class=\"bg-gray-200\">\r\n <th class=\"border border-300 p-2 text-left\">Full Label</th>\r\n <th class=\"border border-300 p-2 text-left\">Code</th>\r\n <th class=\"border border-300 p-2 text-left\">Thousands Separator</th>\r\n <th class=\"border border-300 p-2 text-left\">Decimal Separator</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td>French (France)</td>\r\n <td>fr-FR</td>\r\n <td class=\"font-bold text-lg\">\u23BD (space)</td>\r\n <td class=\"font-bold text-lg\">, (comma)</td>\r\n </tr>\r\n <tr>\r\n <td>English (United Kingdom)</td>\r\n <td>en-GB</td>\r\n <td class=\"font-bold text-lg\">, (comma)</td>\r\n <td class=\"font-bold text-lg\">. (dot)</td>\r\n </tr>\r\n <tr>\r\n <td>Arabic (Tunisia)</td>\r\n <td>ar-TN</td>\r\n <td class=\"font-bold text-lg\">. (dot)</td>\r\n <td class=\"font-bold text-lg\">, (comma)</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <!-- Input / Display Table -->\r\n <p-table [value]=\"[{}]\" styleClass=\"p-datatable-sm\">\r\n\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th style=\"width: 25%\">Field</th>\r\n <th style=\"width: 25%\">Currency</th>\r\n <th style=\"width: 25%\">Input Component</th>\r\n <th style=\"width: 25%\">Display Component</th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"body\">\r\n\r\n <tr>\r\n <td>Currency (Societe)</td>\r\n <td>\r\n <Tsi-Search-Combo [datasource]=\"currencies\"\r\n [id-field]=\"'key'\"\r\n [label-field]=\"'value'\"\r\n [(bind)]=\"currencySocieteCode\"\r\n [isFiltered]=\"false\"\r\n [inputName]=\"'currencySocieteCode'\"\r\n [inputId]=\"'currencySocieteCode'\"\r\n [disabled]=\"true\" />\r\n </td>\r\n <td>\r\n <Tsi-Currency-Societe-Input [(inputField)]=\"currencySocieteValue\" />\r\n </td>\r\n <td>\r\n <Tsi-Currency-Societe-Display [inputData]=\"currencySocieteValue\" />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>Currency (Other)</td>\r\n <td>\r\n <Tsi-Search-Combo [datasource]=\"currencies\"\r\n [id-field]=\"'key'\"\r\n [label-field]=\"'value'\"\r\n [(bind)]=\"currencyOtherCode\"\r\n [isFiltered]=\"false\"\r\n [inputName]=\"'currencyOtherCode'\"\r\n [inputId]=\"'currencyOtherCode'\"\r\n [disabled]=\"false\" />\r\n </td>\r\n <td>\r\n <Tsi-Currency-Other-Input [(inputField)]=\"currencyOtherValue\" [currency]=\"currencyOtherCode\" />\r\n </td>\r\n <td>\r\n <Tsi-Currency-Other-Display [inputData]=\"currencyOtherValue\" [currency]=\"currencyOtherCode\" />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>Decimal</td>\r\n <td>RS</td>\r\n <td>\r\n <Tsi-Decimal-Input [(inputField)]=\"decimalValue\" [numOfDecimal]=\"3\" />\r\n </td>\r\n <td>\r\n <Tsi-Decimal-Display [inputData]=\"decimalValue\" [numOfDecimal]=\"3\" />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>Rate</td>\r\n <td>RS</td>\r\n <td>\r\n <Tsi-Rate-Input [(inputField)]=\"rateValue\" [numOfDecimal]=\"3\" [isFraction]=\"false\" />\r\n </td>\r\n <td>\r\n <Tsi-Rate-Display [inputData]=\"rateValue\" [numOfDecimal]=\"3\" [isFraction]=\"false\" />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>Integer</td>\r\n <td>RS</td>\r\n <td>\r\n <Tsi-Integer [(inputField)]=\"integerValue\" />\r\n </td>\r\n <td>\r\n <Tsi-Integer-Display [inputData]=\"integerValue\" />\r\n </td>\r\n </tr>\r\n\r\n </ng-template>\r\n\r\n </p-table>\r\n\r\n</div>", styles: [".locale-poc-container{padding:1rem!important}\n"], dependencies: [{ kind: "directive", type: i1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i2.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "component", type: i3.TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "searchDebounceTime", "comboType", "statusMetadata", "currentRowItem", "datasource", "bind", "maxSelectedLabels", "tooltipMaxDisplayedItems", "bindMode", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick", "selectionChange"] }, { kind: "component", type: i4.TsiCurrencyOtherInputComponent, selector: "Tsi-Currency-Other-Input", inputs: ["currency", "class"], outputs: ["inputFieldChange"] }, { kind: "component", type: i5.TsiCurrencySocieteInputComponent, selector: "Tsi-Currency-Societe-Input", inputs: ["class"], outputs: ["inputFieldChange"] }, { kind: "component", type: i6.TsiDecimalInputComponent, selector: "Tsi-Decimal-Input", inputs: ["numOfDecimal", "class"], outputs: ["inputFieldChange"] }, { kind: "component", type: i7.TsiIntegerComponent, selector: "Tsi-Integer", inputs: ["class", "minValue", "maxValue", "delayChangeTime"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i8.TsiRateInputComponent, selector: "Tsi-Rate-Input", inputs: ["required", "isFraction", "numOfDecimal"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i9.TsiCurrencyOtherDisplayComponent, selector: "Tsi-Currency-Other-Display", inputs: ["currency", "inputData"] }, { kind: "component", type: i10.TsiCurrencySocieteDisplayComponent, selector: "Tsi-Currency-Societe-Display", inputs: ["inputData"] }, { kind: "component", type: i11.TsiDecimalDisplayComponent, selector: "Tsi-Decimal-Display", inputs: ["inputData", "formatDecimal", "numOfDecimal"] }, { kind: "component", type: i12.TsiIntegerDisplayComponent, selector: "Tsi-Integer-Display", inputs: ["inputData"] }, { kind: "component", type: i13.TsiRateDisplayComponent, selector: "Tsi-Rate-Display", inputs: ["isFraction", "inputData", "numOfDecimal"] }] }); }
64
96
  }
65
97
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LocalePocComponent, decorators: [{
66
98
  type: Component,
67
- args: [{ selector: 'lib-locale-poc', template: "<div class=\"card w-10 locale-poc-container\">\r\n\r\n <h3 class=\"mb-2\">Locale Formatting POC</h3>\r\n\r\n <!-- Explanation -->\r\n <p class=\"text-700 line-height-3 mb-4\">\r\n This page is a proof-of-concept used to validate the locale integration of the UI library.\r\n It allows testers and developers to enter numeric values using the library input components\r\n and immediately verify how those values are formatted by the corresponding display components.\r\n <br /><br />\r\n The objective is to ensure that number formatting (group separators, decimal separators,\r\n currency formatting, and integer grouping) behaves correctly for the currently active locale.\r\n This page is mainly intended for QA testing and debugging during internationalization development.\r\n </p>\r\n\r\n <!-- Locale Info Table -->\r\n <div class=\"mb-4 overflow-auto\">\r\n <h4 class=\"mb-2\">Supported Locales & Format</h4>\r\n <table class=\"table-auto w-full text-sm border-collapse border border-300\">\r\n <thead>\r\n <tr class=\"bg-gray-200\">\r\n <th class=\"border border-300 p-2 text-left\">Full Label</th>\r\n <th class=\"border border-300 p-2 text-left\">Code</th>\r\n <th class=\"border border-300 p-2 text-left\">Thousands Separator</th>\r\n <th class=\"border border-300 p-2 text-left\">Decimal Separator</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td>French (France)</td>\r\n <td>fr-FR</td>\r\n <td class=\"font-bold text-lg\">\u23BD (space)</td>\r\n <td class=\"font-bold text-lg\">, (comma)</td>\r\n </tr>\r\n <tr>\r\n <td>English (United Kingdom)</td>\r\n <td>en-GB</td>\r\n <td class=\"font-bold text-lg\">, (comma)</td>\r\n <td class=\"font-bold text-lg\">. (dot)</td>\r\n </tr>\r\n <tr>\r\n <td>Arabic (Tunisia)</td>\r\n <td>ar-TN</td>\r\n <td class=\"font-bold text-lg\">. (dot)</td>\r\n <td class=\"font-bold text-lg\">, (comma)</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <!-- Input / Display Table -->\r\n <p-table [value]=\"[{}]\" styleClass=\"p-datatable-sm\">\r\n\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th style=\"width: 25%\">Field</th>\r\n <th style=\"width: 35%\">Input Component</th>\r\n <th style=\"width: 40%\">Display Component</th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"body\">\r\n\r\n <tr>\r\n <td>Currency (Societe)</td>\r\n <td>\r\n <Tsi-Currency-Societe-Input [(inputField)]=\"currencySociete\" />\r\n </td>\r\n <td>\r\n <Tsi-Currency-Societe-Display [inputData]=\"currencySociete\" />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>Currency (Other)</td>\r\n <td>\r\n <Tsi-Currency-Other-Input [(inputField)]=\"currencyOther\" currency=\"EUR\" />\r\n </td>\r\n <td>\r\n <Tsi-Currency-Other-Display [inputData]=\"currencyOther\" currency=\"EUR\" />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>Decimal</td>\r\n <td>\r\n <Tsi-Decimal-Input [(inputField)]=\"decimal\" [numOfDecimal]=\"3\" />\r\n </td>\r\n <td>\r\n <Tsi-Decimal-Display [inputData]=\"decimal\" [numOfDecimal]=\"3\" />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>Rate</td>\r\n <td>\r\n <Tsi-Rate-Input [(inputField)]=\"rate\" [numOfDecimal]=\"3\" [isFraction]=\"false\" />\r\n </td>\r\n <td>\r\n <Tsi-Rate-Display [inputData]=\"rate\" [numOfDecimal]=\"3\" [isFraction]=\"false\" />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>Integer</td>\r\n <td>\r\n <Tsi-Integer [(inputField)]=\"integer\" />\r\n </td>\r\n <td>\r\n <Tsi-Integer-Display [inputData]=\"integer\" />\r\n </td>\r\n </tr>\r\n\r\n </ng-template>\r\n\r\n </p-table>\r\n\r\n</div>", styles: [".locale-poc-container{padding:1rem!important}\n"] }]
68
- }] });
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLXBvYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvcG9jL2xvY2FsZS1wb2MvbG9jYWxlLXBvYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvcG9jL2xvY2FsZS1wb2MvbG9jYWxlLXBvYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7OztBQUUxQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQU1ILE1BQU0sT0FBTyxrQkFBa0I7SUFML0I7UUFPRTs7O1dBR0c7UUFDSCxvQkFBZSxHQUFXLFFBQVEsQ0FBQztRQUVuQzs7O1dBR0c7UUFDSCxrQkFBYSxHQUFXLFNBQVMsQ0FBQztRQUVsQzs7O1dBR0c7UUFDSCxZQUFPLEdBQVcsUUFBUSxDQUFDO1FBRTNCOztXQUVHO1FBQ0gsU0FBSSxHQUFXLElBQUksQ0FBQztRQUVwQjs7O1dBR0c7UUFDSCxZQUFPLEdBQVcsU0FBUyxDQUFDO0tBQzdCOytHQTlCWSxrQkFBa0I7bUdBQWxCLGtCQUFrQixzREMzQi9CLHlnSkFxSE07OzRGRDFGTyxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vKipcclxuICogUE9DIGNvbXBvbmVudCB1c2VkIHRvIHZhbGlkYXRlIGFuZCBkZW1vbnN0cmF0ZSB0aGUgbGlicmFyeSdzXHJcbiAqIGxvY2FsZSBpbnRlZ3JhdGlvbiBhbmQgbnVtZXJpYyBmb3JtYXR0aW5nIGJlaGF2aW9yLlxyXG4gKlxyXG4gKiBUaGUgcGFnZSBhbGxvd3MgdGVzdGVycyB0bzpcclxuICogLSBFbnRlciB2YWx1ZXMgdXNpbmcgdGhlIGxpYnJhcnkgaW5wdXQgY29tcG9uZW50c1xyXG4gKiAtIEltbWVkaWF0ZWx5IG9ic2VydmUgdGhlIGZvcm1hdHRlZCBvdXRwdXQgdXNpbmcgZGlzcGxheSBjb21wb25lbnRzXHJcbiAqXHJcbiAqIFRoaXMgY29tcG9uZW50IGlzIGludGVuZGVkIGZvcjpcclxuICogLSBtYW51YWwgUUEgdGVzdGluZ1xyXG4gKiAtIGxvY2FsZSBmb3JtYXR0aW5nIHZhbGlkYXRpb25cclxuICogLSBkZXZlbG9wbWVudCBkZWJ1Z2dpbmdcclxuICpcclxuICogVGVzdGVkIGZvcm1hdHRpbmcgdHlwZXM6XHJcbiAqIC0gQ29tcGFueSBjdXJyZW5jeVxyXG4gKiAtIEV4dGVybmFsIGN1cnJlbmN5XHJcbiAqIC0gRGVjaW1hbCBudW1iZXJzXHJcbiAqIC0gUmF0ZXMgLyBwZXJjZW50YWdlc1xyXG4gKiAtIEludGVnZXJzXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1sb2NhbGUtcG9jJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbG9jYWxlLXBvYy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2xvY2FsZS1wb2MuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIExvY2FsZVBvY0NvbXBvbmVudCB7XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbXBhbnkgY3VycmVuY3kgdmFsdWUuXHJcbiAgICogQm91bmQgdG8gdGhlIGBUc2ktQ3VycmVuY3ktU29jaWV0ZS1JbnB1dGAgY29tcG9uZW50LlxyXG4gICAqL1xyXG4gIGN1cnJlbmN5U29jaWV0ZTogbnVtYmVyID0gMTIzNDUuMjU7XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4dGVybmFsIGN1cnJlbmN5IHZhbHVlLlxyXG4gICAqIEJvdW5kIHRvIHRoZSBgVHNpLUN1cnJlbmN5LU90aGVyLUlucHV0YCBjb21wb25lbnQuXHJcbiAgICovXHJcbiAgY3VycmVuY3lPdGhlcjogbnVtYmVyID0gOTg3NjU0LjMyO1xyXG5cclxuICAvKipcclxuICAgKiBEZWNpbWFsIHZhbHVlIHVzZWQgdG8gdmFsaWRhdGUgbG9jYWxlLXNwZWNpZmljXHJcbiAgICogZGVjaW1hbCBzZXBhcmF0b3JzIGFuZCBncm91cGluZyBiZWhhdmlvci5cclxuICAgKi9cclxuICBkZWNpbWFsOiBudW1iZXIgPSAxOTI4MzcuNTtcclxuXHJcbiAgLyoqXHJcbiAgICogUmF0ZSB2YWx1ZSB1c2VkIHRvIHRlc3QgcGVyY2VudGFnZSAvIHJhdGUgZm9ybWF0dGluZy5cclxuICAgKi9cclxuICByYXRlOiBudW1iZXIgPSAxMi4zO1xyXG5cclxuICAvKipcclxuICAgKiBJbnRlZ2VyIHZhbHVlIHVzZWQgdG8gdmFsaWRhdGUgdGhvdXNhbmRzIGdyb3VwaW5nXHJcbiAgICogd2l0aG91dCBkZWNpbWFsIGRpZ2l0cy5cclxuICAgKi9cclxuICBpbnRlZ2VyOiBudW1iZXIgPSAxMjM0NTY3ODk7XHJcbn0iLCI8ZGl2IGNsYXNzPVwiY2FyZCB3LTEwIGxvY2FsZS1wb2MtY29udGFpbmVyXCI+XHJcblxyXG4gIDxoMyBjbGFzcz1cIm1iLTJcIj5Mb2NhbGUgRm9ybWF0dGluZyBQT0M8L2gzPlxyXG5cclxuICA8IS0tIEV4cGxhbmF0aW9uIC0tPlxyXG4gIDxwIGNsYXNzPVwidGV4dC03MDAgbGluZS1oZWlnaHQtMyBtYi00XCI+XHJcbiAgICAgIFRoaXMgcGFnZSBpcyBhIHByb29mLW9mLWNvbmNlcHQgdXNlZCB0byB2YWxpZGF0ZSB0aGUgbG9jYWxlIGludGVncmF0aW9uIG9mIHRoZSBVSSBsaWJyYXJ5LlxyXG4gICAgICBJdCBhbGxvd3MgdGVzdGVycyBhbmQgZGV2ZWxvcGVycyB0byBlbnRlciBudW1lcmljIHZhbHVlcyB1c2luZyB0aGUgbGlicmFyeSBpbnB1dCBjb21wb25lbnRzXHJcbiAgICAgIGFuZCBpbW1lZGlhdGVseSB2ZXJpZnkgaG93IHRob3NlIHZhbHVlcyBhcmUgZm9ybWF0dGVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIGRpc3BsYXkgY29tcG9uZW50cy5cclxuICAgICAgPGJyIC8+PGJyIC8+XHJcbiAgICAgIFRoZSBvYmplY3RpdmUgaXMgdG8gZW5zdXJlIHRoYXQgbnVtYmVyIGZvcm1hdHRpbmcgKGdyb3VwIHNlcGFyYXRvcnMsIGRlY2ltYWwgc2VwYXJhdG9ycyxcclxuICAgICAgY3VycmVuY3kgZm9ybWF0dGluZywgYW5kIGludGVnZXIgZ3JvdXBpbmcpIGJlaGF2ZXMgY29ycmVjdGx5IGZvciB0aGUgY3VycmVudGx5IGFjdGl2ZSBsb2NhbGUuXHJcbiAgICAgIFRoaXMgcGFnZSBpcyBtYWlubHkgaW50ZW5kZWQgZm9yIFFBIHRlc3RpbmcgYW5kIGRlYnVnZ2luZyBkdXJpbmcgaW50ZXJuYXRpb25hbGl6YXRpb24gZGV2ZWxvcG1lbnQuXHJcbiAgPC9wPlxyXG5cclxuICA8IS0tIExvY2FsZSBJbmZvIFRhYmxlIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJtYi00IG92ZXJmbG93LWF1dG9cIj5cclxuICAgICAgPGg0IGNsYXNzPVwibWItMlwiPlN1cHBvcnRlZCBMb2NhbGVzICYgRm9ybWF0PC9oND5cclxuICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUtYXV0byB3LWZ1bGwgdGV4dC1zbSBib3JkZXItY29sbGFwc2UgYm9yZGVyIGJvcmRlci0zMDBcIj5cclxuICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJiZy1ncmF5LTIwMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJib3JkZXIgYm9yZGVyLTMwMCBwLTIgdGV4dC1sZWZ0XCI+RnVsbCBMYWJlbDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImJvcmRlciBib3JkZXItMzAwIHAtMiB0ZXh0LWxlZnRcIj5Db2RlPC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiYm9yZGVyIGJvcmRlci0zMDAgcC0yIHRleHQtbGVmdFwiPlRob3VzYW5kcyBTZXBhcmF0b3I8L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJib3JkZXIgYm9yZGVyLTMwMCBwLTIgdGV4dC1sZWZ0XCI+RGVjaW1hbCBTZXBhcmF0b3I8L3RoPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgPHRkPkZyZW5jaCAoRnJhbmNlKTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5mci1GUjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LWxnXCI+4o69IChzcGFjZSk8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJmb250LWJvbGQgdGV4dC1sZ1wiPiwgKGNvbW1hKTwvdGQ+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5FbmdsaXNoIChVbml0ZWQgS2luZ2RvbSk8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+ZW4tR0I8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJmb250LWJvbGQgdGV4dC1sZ1wiPiwgKGNvbW1hKTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LWxnXCI+LiAoZG90KTwvdGQ+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5BcmFiaWMgKFR1bmlzaWEpPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkPmFyLVROPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtbGdcIj4uIChkb3QpPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtbGdcIj4sIChjb21tYSk8L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICA8L3RhYmxlPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIElucHV0IC8gRGlzcGxheSBUYWJsZSAtLT5cclxuICA8cC10YWJsZSBbdmFsdWVdPVwiW3t9XVwiIHN0eWxlQ2xhc3M9XCJwLWRhdGF0YWJsZS1zbVwiPlxyXG5cclxuICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxyXG4gICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOiAyNSVcIj5GaWVsZDwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDM1JVwiPklucHV0IENvbXBvbmVudDwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDQwJVwiPkRpc3BsYXkgQ29tcG9uZW50PC90aD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiPlxyXG5cclxuICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICA8dGQ+Q3VycmVuY3kgKFNvY2lldGUpPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxUc2ktQ3VycmVuY3ktU29jaWV0ZS1JbnB1dCBbKGlucHV0RmllbGQpXT1cImN1cnJlbmN5U29jaWV0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxUc2ktQ3VycmVuY3ktU29jaWV0ZS1EaXNwbGF5IFtpbnB1dERhdGFdPVwiY3VycmVuY3lTb2NpZXRlXCIgLz5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuXHJcbiAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgPHRkPkN1cnJlbmN5IChPdGhlcik8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPFRzaS1DdXJyZW5jeS1PdGhlci1JbnB1dCBbKGlucHV0RmllbGQpXT1cImN1cnJlbmN5T3RoZXJcIiBjdXJyZW5jeT1cIkVVUlwiIC8+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxUc2ktQ3VycmVuY3ktT3RoZXItRGlzcGxheSBbaW5wdXREYXRhXT1cImN1cnJlbmN5T3RoZXJcIiBjdXJyZW5jeT1cIkVVUlwiIC8+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDwvdHI+XHJcblxyXG4gICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgIDx0ZD5EZWNpbWFsPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxUc2ktRGVjaW1hbC1JbnB1dCBbKGlucHV0RmllbGQpXT1cImRlY2ltYWxcIiBbbnVtT2ZEZWNpbWFsXT1cIjNcIiAvPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8VHNpLURlY2ltYWwtRGlzcGxheSBbaW5wdXREYXRhXT1cImRlY2ltYWxcIiBbbnVtT2ZEZWNpbWFsXT1cIjNcIiAvPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8L3RyPlxyXG5cclxuICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICA8dGQ+UmF0ZTwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8VHNpLVJhdGUtSW5wdXQgWyhpbnB1dEZpZWxkKV09XCJyYXRlXCIgW251bU9mRGVjaW1hbF09XCIzXCIgW2lzRnJhY3Rpb25dPVwiZmFsc2VcIiAvPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8VHNpLVJhdGUtRGlzcGxheSBbaW5wdXREYXRhXT1cInJhdGVcIiBbbnVtT2ZEZWNpbWFsXT1cIjNcIiBbaXNGcmFjdGlvbl09XCJmYWxzZVwiIC8+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDwvdHI+XHJcblxyXG4gICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgIDx0ZD5JbnRlZ2VyPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxUc2ktSW50ZWdlciBbKGlucHV0RmllbGQpXT1cImludGVnZXJcIiAvPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8VHNpLUludGVnZXItRGlzcGxheSBbaW5wdXREYXRhXT1cImludGVnZXJcIiAvPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8L3RyPlxyXG5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPC9wLXRhYmxlPlxyXG5cclxuPC9kaXY+Il19
99
+ args: [{ selector: 'lib-locale-poc', template: "<div class=\"card w-10 locale-poc-container\">\r\n\r\n <h3 class=\"mb-2\">Locale Formatting POC</h3>\r\n\r\n <!-- Explanation -->\r\n <p class=\"text-700 line-height-3 mb-4\">\r\n This page is a proof-of-concept used to validate the locale integration of the UI library.\r\n It allows testers and developers to enter numeric values using the library input components\r\n and immediately verify how those values are formatted by the corresponding display components.\r\n <br /><br />\r\n The objective is to ensure that number formatting (group separators, decimal separators,\r\n currency formatting, and integer grouping) behaves correctly for the currently active locale.\r\n This page is mainly intended for QA testing and debugging during internationalization development.\r\n </p>\r\n\r\n <!-- Locale Info Table -->\r\n <div class=\"mb-4 overflow-auto\">\r\n <h4 class=\"mb-2\">Supported Locales & Format</h4>\r\n <table class=\"table-auto w-full text-sm border-collapse border border-300\">\r\n <thead>\r\n <tr class=\"bg-gray-200\">\r\n <th class=\"border border-300 p-2 text-left\">Full Label</th>\r\n <th class=\"border border-300 p-2 text-left\">Code</th>\r\n <th class=\"border border-300 p-2 text-left\">Thousands Separator</th>\r\n <th class=\"border border-300 p-2 text-left\">Decimal Separator</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td>French (France)</td>\r\n <td>fr-FR</td>\r\n <td class=\"font-bold text-lg\">\u23BD (space)</td>\r\n <td class=\"font-bold text-lg\">, (comma)</td>\r\n </tr>\r\n <tr>\r\n <td>English (United Kingdom)</td>\r\n <td>en-GB</td>\r\n <td class=\"font-bold text-lg\">, (comma)</td>\r\n <td class=\"font-bold text-lg\">. (dot)</td>\r\n </tr>\r\n <tr>\r\n <td>Arabic (Tunisia)</td>\r\n <td>ar-TN</td>\r\n <td class=\"font-bold text-lg\">. (dot)</td>\r\n <td class=\"font-bold text-lg\">, (comma)</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <!-- Input / Display Table -->\r\n <p-table [value]=\"[{}]\" styleClass=\"p-datatable-sm\">\r\n\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th style=\"width: 25%\">Field</th>\r\n <th style=\"width: 25%\">Currency</th>\r\n <th style=\"width: 25%\">Input Component</th>\r\n <th style=\"width: 25%\">Display Component</th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"body\">\r\n\r\n <tr>\r\n <td>Currency (Societe)</td>\r\n <td>\r\n <Tsi-Search-Combo [datasource]=\"currencies\"\r\n [id-field]=\"'key'\"\r\n [label-field]=\"'value'\"\r\n [(bind)]=\"currencySocieteCode\"\r\n [isFiltered]=\"false\"\r\n [inputName]=\"'currencySocieteCode'\"\r\n [inputId]=\"'currencySocieteCode'\"\r\n [disabled]=\"true\" />\r\n </td>\r\n <td>\r\n <Tsi-Currency-Societe-Input [(inputField)]=\"currencySocieteValue\" />\r\n </td>\r\n <td>\r\n <Tsi-Currency-Societe-Display [inputData]=\"currencySocieteValue\" />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>Currency (Other)</td>\r\n <td>\r\n <Tsi-Search-Combo [datasource]=\"currencies\"\r\n [id-field]=\"'key'\"\r\n [label-field]=\"'value'\"\r\n [(bind)]=\"currencyOtherCode\"\r\n [isFiltered]=\"false\"\r\n [inputName]=\"'currencyOtherCode'\"\r\n [inputId]=\"'currencyOtherCode'\"\r\n [disabled]=\"false\" />\r\n </td>\r\n <td>\r\n <Tsi-Currency-Other-Input [(inputField)]=\"currencyOtherValue\" [currency]=\"currencyOtherCode\" />\r\n </td>\r\n <td>\r\n <Tsi-Currency-Other-Display [inputData]=\"currencyOtherValue\" [currency]=\"currencyOtherCode\" />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>Decimal</td>\r\n <td>RS</td>\r\n <td>\r\n <Tsi-Decimal-Input [(inputField)]=\"decimalValue\" [numOfDecimal]=\"3\" />\r\n </td>\r\n <td>\r\n <Tsi-Decimal-Display [inputData]=\"decimalValue\" [numOfDecimal]=\"3\" />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>Rate</td>\r\n <td>RS</td>\r\n <td>\r\n <Tsi-Rate-Input [(inputField)]=\"rateValue\" [numOfDecimal]=\"3\" [isFraction]=\"false\" />\r\n </td>\r\n <td>\r\n <Tsi-Rate-Display [inputData]=\"rateValue\" [numOfDecimal]=\"3\" [isFraction]=\"false\" />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>Integer</td>\r\n <td>RS</td>\r\n <td>\r\n <Tsi-Integer [(inputField)]=\"integerValue\" />\r\n </td>\r\n <td>\r\n <Tsi-Integer-Display [inputData]=\"integerValue\" />\r\n </td>\r\n </tr>\r\n\r\n </ng-template>\r\n\r\n </p-table>\r\n\r\n</div>", styles: [".locale-poc-container{padding:1rem!important}\n"] }]
100
+ }], ctorParameters: () => [] });
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLXBvYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvcG9jL2xvY2FsZS1wb2MvbG9jYWxlLXBvYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvcG9jL2xvY2FsZS1wb2MvbG9jYWxlLXBvYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNyRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBRWxFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBTUgsTUFBTSxPQUFPLGtCQUFrQjtJQTJEN0IsT0FBTztJQUNQO1FBMURBOztXQUVHO1FBQ0gsZUFBVSxHQUErQjtZQUN2QyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLHNCQUFzQixFQUFFO1lBQzdDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUU7WUFDeEMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7WUFDN0IsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRTtZQUN2QyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFO1lBQ3hDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUU7U0FDaEQsQ0FBQztRQUVGOzs7V0FHRztRQUNILHdCQUFtQixHQUFXLG9CQUFvQixDQUFDLFVBQVUsQ0FBQztRQUU5RDs7O1dBR0c7UUFDSCx5QkFBb0IsR0FBVyxRQUFRLENBQUM7UUFFeEM7OztXQUdHO1FBQ0gsc0JBQWlCLEdBQVcsS0FBSyxDQUFDO1FBRWxDOzs7V0FHRztRQUNILHVCQUFrQixHQUFXLFNBQVMsQ0FBQztRQUV2Qzs7OztXQUlHO1FBQ0gsaUJBQVksR0FBVyxRQUFRLENBQUM7UUFFaEM7O1dBRUc7UUFDSCxjQUFTLEdBQVcsSUFBSSxDQUFDO1FBRXpCOzs7V0FHRztRQUNILGlCQUFZLEdBQVcsU0FBUyxDQUFDO1FBRWpDLEtBQUs7UUFDRyx3QkFBbUIsR0FBdUIsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFJM0UsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxtQkFBbUI7YUFDaEQsV0FBVzthQUNYLGFBQWE7YUFDYixVQUFVLElBQUksb0JBQW9CLENBQUMsVUFBVSxDQUFDO0lBQ25ELENBQUM7K0dBakVVLGtCQUFrQjttR0FBbEIsa0JBQWtCLHNEQzlCL0IsbXBMQTZJTTs7NEZEL0dPLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBLZXlWYWx1ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFwcFNldHRpbmdzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3NldHRpbmdzL2FwcC1zZXR0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGVmYXVsdFNvY2lldGVEZXZpc2UgfSBmcm9tICcuLi8uLi8uLi9jb25zdHMvdHNpLWNvbnN0cyc7XHJcblxyXG4vKipcclxuICogUHJvb2Ytb2YtY29uY2VwdCAoUE9DKSBjb21wb25lbnQgdXNlZCB0byB2YWxpZGF0ZSBhbmQgZGVtb25zdHJhdGVcclxuICogdGhlIGxpYnJhcnkncyBsb2NhbGUgaGFuZGxpbmcgYW5kIG51bWVyaWMgZm9ybWF0dGluZyBiZWhhdmlvci5cclxuICpcclxuICogVGhpcyBwYWdlIGFsbG93cyB0ZXN0ZXJzIGFuZCBkZXZlbG9wZXJzIHRvOlxyXG4gKiAtIEVudGVyIHZhbHVlcyB0aHJvdWdoIGlucHV0IGNvbXBvbmVudHNcclxuICogLSBJbnN0YW50bHkgb2JzZXJ2ZSBmb3JtYXR0ZWQgcmVzdWx0cyB2aWEgZGlzcGxheSBjb21wb25lbnRzXHJcbiAqXHJcbiAqIE1haW4gcHVycG9zZXM6XHJcbiAqIC0gTWFudWFsIFFBIHZhbGlkYXRpb25cclxuICogLSBMb2NhbGUgYW5kIGZvcm1hdHRpbmcgdmVyaWZpY2F0aW9uXHJcbiAqIC0gRGV2ZWxvcG1lbnQgYW5kIGRlYnVnZ2luZyBzdXBwb3J0XHJcbiAqXHJcbiAqIENvdmVyZWQgZm9ybWF0dGluZyBzY2VuYXJpb3M6XHJcbiAqIC0gQ29tcGFueSBjdXJyZW5jeVxyXG4gKiAtIEV4dGVybmFsIGN1cnJlbmN5XHJcbiAqIC0gRGVjaW1hbCBudW1iZXJzXHJcbiAqIC0gUmF0ZXMgLyBwZXJjZW50YWdlc1xyXG4gKiAtIEludGVnZXJzICh3aXRoIGdyb3VwaW5nKVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItbG9jYWxlLXBvYycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xvY2FsZS1wb2MuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9sb2NhbGUtcG9jLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2NhbGVQb2NDb21wb25lbnQge1xyXG5cclxuICAvKipcclxuICAgKiBBdmFpbGFibGUgY3VycmVuY2llcyB1c2VkIGZvciB0ZXN0aW5nIGN1cnJlbmN5IGlucHV0cyBhbmQgZGlzcGxheXMuXHJcbiAgICovXHJcbiAgY3VycmVuY2llczogS2V5VmFsdWU8c3RyaW5nLCBzdHJpbmc+W10gPSBbXHJcbiAgICB7IGtleTogJ1VTRCcsIHZhbHVlOiAnVW5pdGVkIFN0YXRlcyBEb2xsYXInIH0sXHJcbiAgICB7IGtleTogJ0NBRCcsIHZhbHVlOiAnQ2FuYWRpYW4gZG9sbGFyJyB9LFxyXG4gICAgeyBrZXk6ICdFVVInLCB2YWx1ZTogJ0V1cm8nIH0sXHJcbiAgICB7IGtleTogJ1RORCcsIHZhbHVlOiAnRGluYXIgdHVuaXNpZW4nIH0sXHJcbiAgICB7IGtleTogJ01BRCcsIHZhbHVlOiAnTW9yb2NjYW4gRGlyaGFtJyB9LFxyXG4gICAgeyBrZXk6ICdBQkNEJywgdmFsdWU6ICdEZXZpc2UgLSBDb2RlIG5vbiBJU08nIH1cclxuICBdO1xyXG5cclxuICAvKipcclxuICAgKiBDb21wYW55IGN1cnJlbmN5IGNvZGUuXHJcbiAgICogQm91bmQgdG8gdGhlIGBUc2ktQ3VycmVuY3ktU29jaWV0ZS1JbnB1dGAgY29tcG9uZW50LlxyXG4gICAqL1xyXG4gIGN1cnJlbmN5U29jaWV0ZUNvZGU6IHN0cmluZyA9IERlZmF1bHRTb2NpZXRlRGV2aXNlLmNvZGVEZXZpc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbXBhbnkgY3VycmVuY3kgYW1vdW50LlxyXG4gICAqIEJvdW5kIHRvIHRoZSBgVHNpLUN1cnJlbmN5LVNvY2lldGUtSW5wdXRgIGNvbXBvbmVudC5cclxuICAgKi9cclxuICBjdXJyZW5jeVNvY2lldGVWYWx1ZTogbnVtYmVyID0gMTIzNDUuMjU7XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4dGVybmFsIGN1cnJlbmN5IGNvZGUuXHJcbiAgICogQm91bmQgdG8gdGhlIGBUc2ktQ3VycmVuY3ktT3RoZXItSW5wdXRgIGNvbXBvbmVudC5cclxuICAgKi9cclxuICBjdXJyZW5jeU90aGVyQ29kZTogc3RyaW5nID0gJ0VVUic7XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4dGVybmFsIGN1cnJlbmN5IGFtb3VudC5cclxuICAgKiBCb3VuZCB0byB0aGUgYFRzaS1DdXJyZW5jeS1PdGhlci1JbnB1dGAgY29tcG9uZW50LlxyXG4gICAqL1xyXG4gIGN1cnJlbmN5T3RoZXJWYWx1ZTogbnVtYmVyID0gOTg3NjU0LjMyO1xyXG5cclxuICAvKipcclxuICAgKiBEZWNpbWFsIHZhbHVlIHVzZWQgdG8gdmFsaWRhdGUgbG9jYWxlLXNwZWNpZmljOlxyXG4gICAqIC0gZGVjaW1hbCBzZXBhcmF0b3JzXHJcbiAgICogLSBkaWdpdCBncm91cGluZyBiZWhhdmlvclxyXG4gICAqL1xyXG4gIGRlY2ltYWxWYWx1ZTogbnVtYmVyID0gMTkyODM3LjU7XHJcblxyXG4gIC8qKlxyXG4gICAqIFJhdGUgdmFsdWUgdXNlZCB0byB0ZXN0IHBlcmNlbnRhZ2UgLyByYXRlIGZvcm1hdHRpbmcuXHJcbiAgICovXHJcbiAgcmF0ZVZhbHVlOiBudW1iZXIgPSAxMi4zO1xyXG5cclxuICAvKipcclxuICAgKiBJbnRlZ2VyIHZhbHVlIHVzZWQgdG8gdmFsaWRhdGUgdGhvdXNhbmRzIGdyb3VwaW5nXHJcbiAgICogd2l0aG91dCBkZWNpbWFsIHByZWNpc2lvbi5cclxuICAgKi9cclxuICBpbnRlZ2VyVmFsdWU6IG51bWJlciA9IDEyMzQ1Njc4OTtcclxuXHJcbiAgLy8gRElcclxuICBwcml2YXRlIF9hcHBTZXR0aW5nc1NlcnZpY2U6IEFwcFNldHRpbmdzU2VydmljZSA9IGluamVjdChBcHBTZXR0aW5nc1NlcnZpY2UpO1xyXG5cclxuICAvLyBDdG9yXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLmN1cnJlbmN5U29jaWV0ZUNvZGUgPSB0aGlzLl9hcHBTZXR0aW5nc1NlcnZpY2VcclxuICAgICAgLmFwcFNldHRpbmdzXHJcbiAgICAgIC5kZXZpc2VTb2NpZXRlXHJcbiAgICAgIC5jb2RlRGV2aXNlID8/IERlZmF1bHRTb2NpZXRlRGV2aXNlLmNvZGVEZXZpc2U7XHJcbiAgfVxyXG59IiwiPGRpdiBjbGFzcz1cImNhcmQgdy0xMCBsb2NhbGUtcG9jLWNvbnRhaW5lclwiPlxyXG5cclxuICA8aDMgY2xhc3M9XCJtYi0yXCI+TG9jYWxlIEZvcm1hdHRpbmcgUE9DPC9oMz5cclxuXHJcbiAgPCEtLSBFeHBsYW5hdGlvbiAtLT5cclxuICA8cCBjbGFzcz1cInRleHQtNzAwIGxpbmUtaGVpZ2h0LTMgbWItNFwiPlxyXG4gICAgICBUaGlzIHBhZ2UgaXMgYSBwcm9vZi1vZi1jb25jZXB0IHVzZWQgdG8gdmFsaWRhdGUgdGhlIGxvY2FsZSBpbnRlZ3JhdGlvbiBvZiB0aGUgVUkgbGlicmFyeS5cclxuICAgICAgSXQgYWxsb3dzIHRlc3RlcnMgYW5kIGRldmVsb3BlcnMgdG8gZW50ZXIgbnVtZXJpYyB2YWx1ZXMgdXNpbmcgdGhlIGxpYnJhcnkgaW5wdXQgY29tcG9uZW50c1xyXG4gICAgICBhbmQgaW1tZWRpYXRlbHkgdmVyaWZ5IGhvdyB0aG9zZSB2YWx1ZXMgYXJlIGZvcm1hdHRlZCBieSB0aGUgY29ycmVzcG9uZGluZyBkaXNwbGF5IGNvbXBvbmVudHMuXHJcbiAgICAgIDxiciAvPjxiciAvPlxyXG4gICAgICBUaGUgb2JqZWN0aXZlIGlzIHRvIGVuc3VyZSB0aGF0IG51bWJlciBmb3JtYXR0aW5nIChncm91cCBzZXBhcmF0b3JzLCBkZWNpbWFsIHNlcGFyYXRvcnMsXHJcbiAgICAgIGN1cnJlbmN5IGZvcm1hdHRpbmcsIGFuZCBpbnRlZ2VyIGdyb3VwaW5nKSBiZWhhdmVzIGNvcnJlY3RseSBmb3IgdGhlIGN1cnJlbnRseSBhY3RpdmUgbG9jYWxlLlxyXG4gICAgICBUaGlzIHBhZ2UgaXMgbWFpbmx5IGludGVuZGVkIGZvciBRQSB0ZXN0aW5nIGFuZCBkZWJ1Z2dpbmcgZHVyaW5nIGludGVybmF0aW9uYWxpemF0aW9uIGRldmVsb3BtZW50LlxyXG4gIDwvcD5cclxuXHJcbiAgPCEtLSBMb2NhbGUgSW5mbyBUYWJsZSAtLT5cclxuICA8ZGl2IGNsYXNzPVwibWItNCBvdmVyZmxvdy1hdXRvXCI+XHJcbiAgICAgIDxoNCBjbGFzcz1cIm1iLTJcIj5TdXBwb3J0ZWQgTG9jYWxlcyAmIEZvcm1hdDwvaDQ+XHJcbiAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlLWF1dG8gdy1mdWxsIHRleHQtc20gYm9yZGVyLWNvbGxhcHNlIGJvcmRlciBib3JkZXItMzAwXCI+XHJcbiAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiYmctZ3JheS0yMDBcIj5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiYm9yZGVyIGJvcmRlci0zMDAgcC0yIHRleHQtbGVmdFwiPkZ1bGwgTGFiZWw8L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJib3JkZXIgYm9yZGVyLTMwMCBwLTIgdGV4dC1sZWZ0XCI+Q29kZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImJvcmRlciBib3JkZXItMzAwIHAtMiB0ZXh0LWxlZnRcIj5UaG91c2FuZHMgU2VwYXJhdG9yPC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiYm9yZGVyIGJvcmRlci0zMDAgcC0yIHRleHQtbGVmdFwiPkRlY2ltYWwgU2VwYXJhdG9yPC90aD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5GcmVuY2ggKEZyYW5jZSk8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+ZnItRlI8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJmb250LWJvbGQgdGV4dC1sZ1wiPuKOvSAoc3BhY2UpPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtbGdcIj4sIChjb21tYSk8L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+RW5nbGlzaCAoVW5pdGVkIEtpbmdkb20pPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkPmVuLUdCPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtbGdcIj4sIChjb21tYSk8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJmb250LWJvbGQgdGV4dC1sZ1wiPi4gKGRvdCk8L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+QXJhYmljIChUdW5pc2lhKTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5hci1UTjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LWxnXCI+LiAoZG90KTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LWxnXCI+LCAoY29tbWEpPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90Ym9keT5cclxuICAgICAgPC90YWJsZT5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBJbnB1dCAvIERpc3BsYXkgVGFibGUgLS0+XHJcbiAgPHAtdGFibGUgW3ZhbHVlXT1cIlt7fV1cIiBzdHlsZUNsYXNzPVwicC1kYXRhdGFibGUtc21cIj5cclxuXHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cclxuICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDogMjUlXCI+RmllbGQ8L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOiAyNSVcIj5DdXJyZW5jeTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDI1JVwiPklucHV0IENvbXBvbmVudDwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDI1JVwiPkRpc3BsYXkgQ29tcG9uZW50PC90aD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiPlxyXG5cclxuICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICA8dGQ+Q3VycmVuY3kgKFNvY2lldGUpPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8VHNpLVNlYXJjaC1Db21ibyBbZGF0YXNvdXJjZV09XCJjdXJyZW5jaWVzXCJcclxuICAgICAgICAgICAgICAgICAgICBbaWQtZmllbGRdPVwiJ2tleSdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbC1maWVsZF09XCIndmFsdWUnXCJcclxuICAgICAgICAgICAgICAgICAgICBbKGJpbmQpXT1cImN1cnJlbmN5U29jaWV0ZUNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpc0ZpbHRlcmVkXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5wdXROYW1lXT1cIidjdXJyZW5jeVNvY2lldGVDb2RlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lucHV0SWRdPVwiJ2N1cnJlbmN5U29jaWV0ZUNvZGUnXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiIC8+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxUc2ktQ3VycmVuY3ktU29jaWV0ZS1JbnB1dCBbKGlucHV0RmllbGQpXT1cImN1cnJlbmN5U29jaWV0ZVZhbHVlXCIgLz5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPFRzaS1DdXJyZW5jeS1Tb2NpZXRlLURpc3BsYXkgW2lucHV0RGF0YV09XCJjdXJyZW5jeVNvY2lldGVWYWx1ZVwiIC8+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDwvdHI+XHJcblxyXG4gICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgIDx0ZD5DdXJyZW5jeSAoT3RoZXIpPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8VHNpLVNlYXJjaC1Db21ibyBbZGF0YXNvdXJjZV09XCJjdXJyZW5jaWVzXCJcclxuICAgICAgICAgICAgICAgICAgICBbaWQtZmllbGRdPVwiJ2tleSdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbC1maWVsZF09XCIndmFsdWUnXCJcclxuICAgICAgICAgICAgICAgICAgICBbKGJpbmQpXT1cImN1cnJlbmN5T3RoZXJDb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICBbaXNGaWx0ZXJlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lucHV0TmFtZV09XCInY3VycmVuY3lPdGhlckNvZGUnXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5wdXRJZF09XCInY3VycmVuY3lPdGhlckNvZGUnXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmFsc2VcIiAvPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8VHNpLUN1cnJlbmN5LU90aGVyLUlucHV0IFsoaW5wdXRGaWVsZCldPVwiY3VycmVuY3lPdGhlclZhbHVlXCIgW2N1cnJlbmN5XT1cImN1cnJlbmN5T3RoZXJDb2RlXCIgLz5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPFRzaS1DdXJyZW5jeS1PdGhlci1EaXNwbGF5IFtpbnB1dERhdGFdPVwiY3VycmVuY3lPdGhlclZhbHVlXCIgW2N1cnJlbmN5XT1cImN1cnJlbmN5T3RoZXJDb2RlXCIgLz5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuXHJcbiAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgPHRkPkRlY2ltYWw8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5SUzwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8VHNpLURlY2ltYWwtSW5wdXQgWyhpbnB1dEZpZWxkKV09XCJkZWNpbWFsVmFsdWVcIiBbbnVtT2ZEZWNpbWFsXT1cIjNcIiAvPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8VHNpLURlY2ltYWwtRGlzcGxheSBbaW5wdXREYXRhXT1cImRlY2ltYWxWYWx1ZVwiIFtudW1PZkRlY2ltYWxdPVwiM1wiIC8+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDwvdHI+XHJcblxyXG4gICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgIDx0ZD5SYXRlPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+UlM8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPFRzaS1SYXRlLUlucHV0IFsoaW5wdXRGaWVsZCldPVwicmF0ZVZhbHVlXCIgW251bU9mRGVjaW1hbF09XCIzXCIgW2lzRnJhY3Rpb25dPVwiZmFsc2VcIiAvPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8VHNpLVJhdGUtRGlzcGxheSBbaW5wdXREYXRhXT1cInJhdGVWYWx1ZVwiIFtudW1PZkRlY2ltYWxdPVwiM1wiIFtpc0ZyYWN0aW9uXT1cImZhbHNlXCIgLz5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuXHJcbiAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgPHRkPkludGVnZXI8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5SUzwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8VHNpLUludGVnZXIgWyhpbnB1dEZpZWxkKV09XCJpbnRlZ2VyVmFsdWVcIiAvPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8VHNpLUludGVnZXItRGlzcGxheSBbaW5wdXREYXRhXT1cImludGVnZXJWYWx1ZVwiIC8+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDwvdHI+XHJcblxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8L3AtdGFibGU+XHJcblxyXG48L2Rpdj4iXX0=