@acorex/components 20.2.0-next.8 → 20.2.0-next.9
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/action-sheet/index.d.ts +56 -0
- package/alert/index.d.ts +1 -1
- package/autocomplete/index.d.ts +1 -0
- package/avatar/index.d.ts +11 -4
- package/breadcrumbs/index.d.ts +15 -1
- package/calendar/index.d.ts +23 -9
- package/check-box/index.d.ts +1 -1
- package/color-box/index.d.ts +1 -0
- package/color-palette/index.d.ts +1 -1
- package/comment/index.d.ts +3 -3
- package/conversation/index.d.ts +1 -0
- package/cron-job/index.d.ts +5 -4
- package/datetime-box/index.d.ts +1 -0
- package/datetime-input/index.d.ts +1 -0
- package/datetime-picker/index.d.ts +8 -0
- package/fesm2022/acorex-components-action-sheet.mjs +56 -0
- package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
- package/fesm2022/acorex-components-alert.mjs +1 -1
- package/fesm2022/acorex-components-alert.mjs.map +1 -1
- package/fesm2022/acorex-components-autocomplete.mjs +8 -2
- package/fesm2022/acorex-components-autocomplete.mjs.map +1 -1
- package/fesm2022/acorex-components-avatar.mjs +11 -4
- package/fesm2022/acorex-components-avatar.mjs.map +1 -1
- package/fesm2022/acorex-components-breadcrumbs.mjs +15 -1
- package/fesm2022/acorex-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/acorex-components-calendar.mjs +31 -13
- package/fesm2022/acorex-components-calendar.mjs.map +1 -1
- package/fesm2022/acorex-components-check-box.mjs +2 -2
- package/fesm2022/acorex-components-check-box.mjs.map +1 -1
- package/fesm2022/acorex-components-color-box.mjs +9 -3
- package/fesm2022/acorex-components-color-box.mjs.map +1 -1
- package/fesm2022/acorex-components-color-palette.mjs +2 -2
- package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
- package/fesm2022/acorex-components-comment.mjs +5 -5
- package/fesm2022/acorex-components-comment.mjs.map +1 -1
- package/fesm2022/acorex-components-conversation.mjs +10 -4
- package/fesm2022/acorex-components-conversation.mjs.map +1 -1
- package/fesm2022/acorex-components-cron-job.mjs +15 -9
- package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
- package/fesm2022/acorex-components-data-table.mjs +3 -3
- package/fesm2022/acorex-components-data-table.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-box.mjs +8 -2
- package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-input.mjs +8 -2
- package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-picker.mjs +52 -2
- package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-image-editor.mjs +7 -1
- package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
- package/fesm2022/acorex-components-list.mjs +10 -8
- package/fesm2022/acorex-components-list.mjs.map +1 -1
- package/fesm2022/acorex-components-number-box-2.mjs +11 -5
- package/fesm2022/acorex-components-number-box-2.mjs.map +1 -1
- package/fesm2022/acorex-components-number-box.mjs +10 -4
- package/fesm2022/acorex-components-number-box.mjs.map +1 -1
- package/fesm2022/acorex-components-paint.mjs +7 -1
- package/fesm2022/acorex-components-paint.mjs.map +1 -1
- package/fesm2022/acorex-components-password-box.mjs +10 -4
- package/fesm2022/acorex-components-password-box.mjs.map +1 -1
- package/fesm2022/acorex-components-phone-box.mjs +8 -2
- package/fesm2022/acorex-components-phone-box.mjs.map +1 -1
- package/fesm2022/acorex-components-picker.mjs +14 -4
- package/fesm2022/acorex-components-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-radio.mjs +2 -2
- package/fesm2022/acorex-components-radio.mjs.map +1 -1
- package/fesm2022/acorex-components-search-box.mjs +7 -1
- package/fesm2022/acorex-components-search-box.mjs.map +1 -1
- package/fesm2022/acorex-components-select-box.mjs +42 -17
- package/fesm2022/acorex-components-select-box.mjs.map +1 -1
- package/fesm2022/acorex-components-side-menu.mjs +1 -1
- package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
- package/fesm2022/acorex-components-tabs.mjs +6 -4
- package/fesm2022/acorex-components-tabs.mjs.map +1 -1
- package/fesm2022/acorex-components-tag-box.mjs +11 -5
- package/fesm2022/acorex-components-tag-box.mjs.map +1 -1
- package/fesm2022/acorex-components-text-area.mjs +10 -4
- package/fesm2022/acorex-components-text-area.mjs.map +1 -1
- package/fesm2022/acorex-components-text-box.mjs +10 -4
- package/fesm2022/acorex-components-text-box.mjs.map +1 -1
- package/fesm2022/acorex-components-time-duration.mjs +9 -3
- package/fesm2022/acorex-components-time-duration.mjs.map +1 -1
- package/fesm2022/acorex-components-tree-view.mjs +1 -1
- package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
- package/fesm2022/acorex-components-wysiwyg.mjs +10 -4
- package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
- package/image-editor/index.d.ts +1 -0
- package/number-box/index.d.ts +1 -0
- package/number-box-2/index.d.ts +1 -0
- package/package.json +1 -1
- package/paint/index.d.ts +1 -0
- package/password-box/index.d.ts +1 -0
- package/phone-box/index.d.ts +1 -0
- package/picker/index.d.ts +10 -8
- package/radio/index.d.ts +1 -1
- package/search-box/index.d.ts +1 -0
- package/select-box/index.d.ts +9 -6
- package/tag-box/index.d.ts +1 -0
- package/text-area/index.d.ts +1 -0
- package/text-box/index.d.ts +1 -0
- package/time-duration/index.d.ts +1 -0
- package/wysiwyg/index.d.ts +1 -0
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"acorex-components-time-duration.mjs","sources":["../tmp-esm2022/time-duration/lib/time-duration.component.js","../tmp-esm2022/time-duration/lib/time-duration.module.js","../tmp-esm2022/time-duration/acorex-components-time-duration.js"],"sourcesContent":["import { AXComponent, AXFocusableComponent, AXValuableComponent, MXInputBaseValueComponent, MXLookComponent, } from '@acorex/cdk/common';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXTimeDurationFormatter } from '@acorex/core/date-time';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { afterNextRender, ChangeDetectionStrategy, Component, effect, forwardRef, inject, input, signal, ViewEncapsulation, } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IMask } from 'angular-imask';\nimport { classes } from 'polytype';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/text-box\";\nimport * as i2 from \"@angular/forms\";\nexport class AXTimeDurationComponent extends classes((MXInputBaseValueComponent), MXLookComponent) {\n constructor() {\n super(...arguments);\n this.valueStart = input('YEAR', ...(ngDevMode ? [{ debugName: \"valueStart\" }] : []));\n this.valueEnd = input('MILLISECOND', ...(ngDevMode ? [{ debugName: \"valueEnd\" }] : []));\n this.label = input(true, ...(ngDevMode ? [{ debugName: \"label\" }] : []));\n this.maskDigits = input('00:00:00:00:00:00:00:000', ...(ngDevMode ? [{ debugName: \"maskDigits\" }] : []));\n this.maskOptions = signal({\n mask: 'HH:MM:SS',\n blocks: {\n HH: { mask: IMask.MaskedRange, from: 0, to: 23 },\n MM: { mask: IMask.MaskedRange, from: 0, to: 59 },\n SS: { mask: IMask.MaskedRange, from: 0, to: 59 },\n },\n }, ...(ngDevMode ? [{ debugName: \"maskOptions\" }] : []));\n this.translationService = inject(AXTranslationService);\n this.timeDurationFormatter = inject(AXTimeDurationFormatter);\n this.onInputFire = false;\n this.onInternalValueChangedFire = false;\n this.YEAR = signal(null, ...(ngDevMode ? [{ debugName: \"YEAR\" }] : []));\n this.MONTH = signal(null, ...(ngDevMode ? [{ debugName: \"MONTH\" }] : []));\n this.WEEK = signal(null, ...(ngDevMode ? [{ debugName: \"WEEK\" }] : []));\n this.DAY = signal(null, ...(ngDevMode ? [{ debugName: \"DAY\" }] : []));\n this.HOUR = signal(null, ...(ngDevMode ? [{ debugName: \"HOUR\" }] : []));\n this.MINUTE = signal(null, ...(ngDevMode ? [{ debugName: \"MINUTE\" }] : []));\n this.SECOND = signal(null, ...(ngDevMode ? [{ debugName: \"SECOND\" }] : []));\n this.MILLISECOND = signal(null, ...(ngDevMode ? [{ debugName: \"MILLISECOND\" }] : []));\n this.isTranslationInit = signal(false, ...(ngDevMode ? [{ debugName: \"isTranslationInit\" }] : []));\n this.#init = afterNextRender(async () => {\n await this.initTranslation();\n });\n this.#effect = effect(() => {\n // Depend on label as well\n void this.label();\n if (this.valueStart() && this.valueEnd() && this.isTranslationInit()) {\n this.updateMask();\n }\n }, ...(ngDevMode ? [{ debugName: \"#effect\" }] : []));\n }\n #init;\n #effect;\n async initTranslation() {\n this.YEAR.set((await this.translationService.translateAsync('@acorex:dateTime.units.year')).toLocaleUpperCase());\n this.MONTH.set((await this.translationService.translateAsync('@acorex:dateTime.units.month')).toLocaleUpperCase());\n this.WEEK.set((await this.translationService.translateAsync('@acorex:dateTime.units.week')).toLocaleUpperCase());\n this.DAY.set((await this.translationService.translateAsync('@acorex:dateTime.units.day')).toLocaleUpperCase());\n this.HOUR.set((await this.translationService.translateAsync('@acorex:dateTime.units.hour')).toLocaleUpperCase());\n this.MINUTE.set((await this.translationService.translateAsync('@acorex:dateTime.units.minute')).toLocaleUpperCase());\n this.SECOND.set((await this.translationService.translateAsync('@acorex:dateTime.units.second')).toLocaleUpperCase());\n this.MILLISECOND.set((await this.translationService.translateAsync('@acorex:dateTime.units.millisecond')).toLocaleUpperCase());\n this.isTranslationInit.set(true);\n }\n onInput(event) {\n if (this.onInternalValueChangedFire)\n return;\n this.onInputFire = true;\n const milliseconds = this.maskToMilliseconds(event);\n if (!milliseconds)\n return;\n this.commitValue(milliseconds, true);\n this.onInputFire = false;\n }\n async internalValueChanged(value) {\n if (this.onInputFire)\n return;\n this.onInternalValueChangedFire = true;\n const normalizedMask = await this.timeDurationFormatter.millisecondsToMask(value, this.valueStart(), this.valueEnd(), this.label(), this.maskDigits(), true);\n this.inputValue = normalizedMask;\n setTimeout(() => {\n this.onInternalValueChangedFire = false;\n });\n }\n replacePersianLabels(input) {\n const replacements = {\n [this.YEAR()]: 'YEAR',\n [this.MONTH()]: 'MONTH',\n [this.WEEK()]: 'WEEK',\n [this.DAY()]: 'DAY',\n [this.HOUR()]: 'HOUR',\n [this.MINUTE()]: 'MINUTE',\n [this.SECOND()]: 'SECOND',\n [this.MILLISECOND()]: 'MILLISECOND',\n };\n return Object.entries(replacements).reduce((str, [fa, en]) => {\n return str.replace(`(${fa})`, `(${en})`);\n }, input);\n }\n maskToMilliseconds(maskValue) {\n const timeUnits = {\n YEAR: 365 * 24 * 60 * 60 * 1000,\n MONTH: 30 * 24 * 60 * 60 * 1000,\n WEEK: 7 * 24 * 60 * 60 * 1000,\n DAY: 24 * 60 * 60 * 1000,\n HOUR: 60 * 60 * 1000,\n MINUTE: 60 * 1000,\n SECOND: 1000,\n MILLISECOND: 1,\n };\n let totalMs = 0;\n if (this.label()) {\n // Parse labeled format: \"00 (YEAR) : 00 (MONTH) : 00 (DAY)\"\n const transformedMaskValue = this.replacePersianLabels(maskValue);\n const regex = /(\\d+)\\s*\\((YEAR|MONTH|WEEK|DAY|HOUR|MINUTE|SECOND|MILLISECOND)\\)/g;\n let match;\n while ((match = regex.exec(transformedMaskValue)) !== null) {\n const value = parseInt(match[1], 10);\n const unit = match[2];\n if (timeUnits[unit] !== undefined) {\n totalMs += value * timeUnits[unit];\n }\n }\n }\n else {\n // Parse unlabeled format: \"00:00:00\" (colon-separated numbers)\n const allUnits = ['YEAR', 'MONTH', 'WEEK', 'DAY', 'HOUR', 'MINUTE', 'SECOND', 'MILLISECOND'];\n const startIndex = allUnits.indexOf(this.valueStart());\n const endIndex = allUnits.indexOf(this.valueEnd());\n if (startIndex !== -1 && endIndex !== -1 && endIndex >= startIndex) {\n const selectedUnits = allUnits.slice(startIndex, endIndex + 1);\n const numbers = maskValue.split(':').map((num) => parseInt(num.trim(), 10));\n for (let i = 0; i < Math.min(numbers.length, selectedUnits.length); i++) {\n const value = numbers[i];\n const unit = selectedUnits[i];\n if (!isNaN(value) && timeUnits[unit] !== undefined) {\n totalMs += value * timeUnits[unit];\n }\n }\n }\n }\n return totalMs;\n }\n updateMask() {\n const allUnits = ['YEAR', 'MONTH', 'WEEK', 'DAY', 'HOUR', 'MINUTE', 'SECOND', 'MILLISECOND'];\n const startIndex = allUnits.indexOf(this.valueStart());\n const endIndex = allUnits.indexOf(this.valueEnd());\n if (startIndex === -1 || endIndex === -1 || endIndex < startIndex) {\n this.maskOptions.set({ mask: '', eager: true });\n return null;\n }\n const selectedUnits = allUnits.slice(startIndex, endIndex + 1);\n let maskParts;\n const yearDigits = this.maskDigits().split(':')[0];\n const monthDigits = this.maskDigits().split(':')[1];\n const weekDigits = this.maskDigits().split(':')[2];\n const dayDigits = this.maskDigits().split(':')[3];\n const hourDigits = this.maskDigits().split(':')[4];\n const minuteDigits = this.maskDigits().split(':')[5];\n const secondDigits = this.maskDigits().split(':')[6];\n const millisecondDigits = this.maskDigits().split(':')[7];\n if (this.label()) {\n // With labels\n const unitPatterns = {\n YEAR: `${yearDigits} (${this.YEAR()})`,\n MONTH: `${monthDigits} (${this.MONTH()})`,\n WEEK: `${weekDigits} (${this.WEEK()})`,\n DAY: `${dayDigits} (${this.DAY()})`,\n HOUR: `${hourDigits} (${this.HOUR()})`,\n MINUTE: `${minuteDigits} (${this.MINUTE()})`,\n SECOND: `${secondDigits} (${this.SECOND()})`,\n MILLISECOND: `${millisecondDigits} (${this.MILLISECOND()})`,\n };\n maskParts = selectedUnits.map((unit) => {\n return unitPatterns[unit];\n });\n }\n else {\n // Without labels - just numbers\n const unitPatterns = {\n YEAR: yearDigits,\n MONTH: monthDigits,\n WEEK: weekDigits,\n DAY: dayDigits,\n HOUR: hourDigits,\n MINUTE: minuteDigits,\n SECOND: secondDigits,\n MILLISECOND: millisecondDigits,\n };\n maskParts = selectedUnits.map((unit) => {\n return unitPatterns[unit];\n });\n }\n let result;\n if (this.label()) {\n if (this.translationService.getActiveLang() === 'fa-IR') {\n result = maskParts.reverse().join(' : ');\n }\n else {\n result = maskParts.join(' : ');\n }\n }\n else {\n result = maskParts.join(':');\n }\n this.maskOptions.set({ mask: result, eager: true });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AXTimeDurationComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.1.3\", type: AXTimeDurationComponent, isStandalone: true, selector: \"ax-time-duration\", inputs: { disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: false, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: \"tabIndex\", publicName: \"tabIndex\", isSignal: false, isRequired: false, transformFunction: null }, readonly: { classPropertyName: \"readonly\", publicName: \"readonly\", isSignal: false, isRequired: false, transformFunction: null }, look: { classPropertyName: \"look\", publicName: \"look\", isSignal: false, isRequired: false, transformFunction: null }, valueStart: { classPropertyName: \"valueStart\", publicName: \"valueStart\", isSignal: true, isRequired: false, transformFunction: null }, valueEnd: { classPropertyName: \"valueEnd\", publicName: \"valueEnd\", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: \"label\", publicName: \"label\", isSignal: true, isRequired: false, transformFunction: null }, maskDigits: { classPropertyName: \"maskDigits\", publicName: \"maskDigits\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onValueChanged: \"onValueChanged\" }, providers: [\n { provide: AXComponent, useExisting: AXTimeDurationComponent },\n { provide: AXFocusableComponent, useExisting: AXTimeDurationComponent },\n { provide: AXValuableComponent, useExisting: AXTimeDurationComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXTimeDurationComponent),\n multi: true,\n },\n ], usesInheritance: true, ngImport: i0, template: \"<div class=\\\"ax-editor-container\\\">\\n <ax-text-box\\n [look]=\\\"look\\\"\\n [placeholder]=\\\"maskOptions().mask\\\"\\n [mask-options]=\\\"maskOptions()\\\"\\n [(ngModel)]=\\\"inputValue\\\"\\n (ngModelChange)=\\\"onInput($event)\\\"\\n class=\\\"ax-time-duration-text\\\"\\n [disabled]=\\\"disabled\\\"\\n [tabIndex]=\\\"tabIndex\\\"\\n [readonly]=\\\"readonly\\\"\\n >\\n </ax-text-box>\\n <ng-content select=\\\"ax-validation-rule\\\"> </ng-content>\\n</div>\\n<div class=\\\"ax-error-container\\\"></div>\\n\", styles: [\"ax-time-duration>.ax-editor-container{display:block;padding:0}\\n\"], dependencies: [{ kind: \"ngmodule\", type: AXTextBoxModule }, { kind: \"component\", type: i1.AXTextBoxComponent, selector: \"ax-text-box\", inputs: [\"disabled\", \"tabIndex\", \"readonly\", \"value\", \"state\", \"name\", \"id\", \"placeholder\", \"maxLength\", \"allowNull\", \"type\", \"autoComplete\", \"look\", \"mask-options\", \"class\"], outputs: [\"onBlur\", \"onFocus\", \"valueChange\", \"stateChange\", \"onValueChanged\", \"readonlyChange\", \"disabledChange\", \"onKeyDown\", \"onKeyUp\", \"onKeyPress\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: AXSelectBoxModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AXTimeDurationComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-time-duration', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [AXTextBoxModule, FormsModule, AXSelectBoxModule], inputs: ['disabled', 'tabIndex', 'readonly', 'look'], outputs: ['onValueChanged'], providers: [\n { provide: AXComponent, useExisting: AXTimeDurationComponent },\n { provide: AXFocusableComponent, useExisting: AXTimeDurationComponent },\n { provide: AXValuableComponent, useExisting: AXTimeDurationComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXTimeDurationComponent),\n multi: true,\n },\n ], template: \"<div class=\\\"ax-editor-container\\\">\\n <ax-text-box\\n [look]=\\\"look\\\"\\n [placeholder]=\\\"maskOptions().mask\\\"\\n [mask-options]=\\\"maskOptions()\\\"\\n [(ngModel)]=\\\"inputValue\\\"\\n (ngModelChange)=\\\"onInput($event)\\\"\\n class=\\\"ax-time-duration-text\\\"\\n [disabled]=\\\"disabled\\\"\\n [tabIndex]=\\\"tabIndex\\\"\\n [readonly]=\\\"readonly\\\"\\n >\\n </ax-text-box>\\n <ng-content select=\\\"ax-validation-rule\\\"> </ng-content>\\n</div>\\n<div class=\\\"ax-error-container\\\"></div>\\n\", styles: [\"ax-time-duration>.ax-editor-container{display:block;padding:0}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1kdXJhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL3RpbWUtZHVyYXRpb24vc3JjL2xpYi90aW1lLWR1cmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvdGltZS1kdXJhdGlvbi9zcmMvbGliL3RpbWUtZHVyYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFdBQVcsRUFDWCxvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLHlCQUF5QixFQUN6QixlQUFlLEdBQ2hCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFpQixlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsZUFBZSxFQUNmLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsTUFBTSxFQUNOLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQzs7OztBQXVCbkMsTUFBTSxPQUFPLHVCQUF3QixTQUFRLE9BQU8sQ0FBQyxDQUFBLHlCQUFpQyxDQUFBLEVBQUUsZUFBZSxDQUFDO0lBcEJ4Rzs7UUFz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LEVBQUUsV0FBVyxFQUFFLGlCQUFpQixDQUFDLFVBQ2xELENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLFdBQzNDLENBQUMsZ0JBQWdCLENBQUMsYUFDaEI7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcseUJBQXlCLEVBQUU7d0JBQzlELEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFdBQVcseUJBQXlCLEVBQUU7d0JBQ3ZFLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcseUJBQXlCLEVBQUU7d0JBQ3RFOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHdCQUF3QixDQUFDOzRCQUN0RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFYQ29tcG9uZW50LFxuICBBWEZvY3VzYWJsZUNvbXBvbmVudCxcbiAgQVhWYWx1YWJsZUNvbXBvbmVudCxcbiAgTVhJbnB1dEJhc2VWYWx1ZUNvbXBvbmVudCxcbiAgTVhMb29rQ29tcG9uZW50LFxufSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhTZWxlY3RCb3hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2VsZWN0LWJveCc7XG5pbXBvcnQgeyBBWE1hc2tPcHRpb25zLCBBWFRleHRCb3hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdGV4dC1ib3gnO1xuaW1wb3J0IHsgQVhUaW1lRHVyYXRpb25Gb3JtYXR0ZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvZGF0ZS10aW1lJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7XG4gIGFmdGVyTmV4dFJlbmRlcixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgZWZmZWN0LFxuICBmb3J3YXJkUmVmLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBzaWduYWwsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElNYXNrIH0gZnJvbSAnYW5ndWxhci1pbWFzayc7XG5pbXBvcnQgeyBjbGFzc2VzIH0gZnJvbSAncG9seXR5cGUnO1xuaW1wb3J0IHsgQVhUaW1lRHVyYXRpb25Vbml0IH0gZnJvbSAnLi90aW1lLWR1cmF0aW9uLnR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC10aW1lLWR1cmF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RpbWUtZHVyYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90aW1lLWR1cmF0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBpbXBvcnRzOiBbQVhUZXh0Qm94TW9kdWxlLCBGb3Jtc01vZHVsZSwgQVhTZWxlY3RCb3hNb2R1bGVdLFxuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAndGFiSW5kZXgnLCAncmVhZG9ubHknLCAnbG9vayddLFxuICBvdXRwdXRzOiBbJ29uVmFsdWVDaGFuZ2VkJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogQVhDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFRpbWVEdXJhdGlvbkNvbXBvbmVudCB9LFxuICAgIHsgcHJvdmlkZTogQVhGb2N1c2FibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFRpbWVEdXJhdGlvbkNvbXBvbmVudCB9LFxuICAgIHsgcHJvdmlkZTogQVhWYWx1YWJsZUNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYVGltZUR1cmF0aW9uQ29tcG9uZW50IH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBWFRpbWVEdXJhdGlvbkNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFRpbWVEdXJhdGlvbkNvbXBvbmVudCBleHRlbmRzIGNsYXNzZXMoTVhJbnB1dEJhc2VWYWx1ZUNvbXBvbmVudDxudW1iZXI+LCBNWExvb2tDb21wb25lbnQpIHtcbiAgcHJvdGVjdGVkIGlucHV0VmFsdWU6IHN0cmluZztcbiAgcmVhZG9ubHkgdmFsdWVTdGFydCA9IGlucHV0PEFYVGltZUR1cmF0aW9uVW5pdD4oJ1lFQVInKTtcbiAgcmVhZG9ubHkgdmFsdWVFbmQgPSBpbnB1dDxBWFRpbWVEdXJhdGlvblVuaXQ+KCdNSUxMSVNFQ09ORCcpO1xuICByZWFkb25seSBsYWJlbCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBtYXNrRGlnaXRzID0gaW5wdXQoJzAwOjAwOjAwOjAwOjAwOjAwOjAwOjAwMCcpO1xuXG4gIHByb3RlY3RlZCBtYXNrT3B0aW9ucyA9IHNpZ25hbDxBWE1hc2tPcHRpb25zPih7XG4gICAgbWFzazogJ0hIOk1NOlNTJyxcbiAgICBibG9ja3M6IHtcbiAgICAgIEhIOiB7IG1hc2s6IElNYXNrLk1hc2tlZFJhbmdlLCBmcm9tOiAwLCB0bzogMjMgfSxcbiAgICAgIE1NOiB7IG1hc2s6IElNYXNrLk1hc2tlZFJhbmdlLCBmcm9tOiAwLCB0bzogNTkgfSxcbiAgICAgIFNTOiB7IG1hc2s6IElNYXNrLk1hc2tlZFJhbmdlLCBmcm9tOiAwLCB0bzogNTkgfSxcbiAgICB9LFxuICB9KTtcblxuICBwcml2YXRlIHRyYW5zbGF0aW9uU2VydmljZTogQVhUcmFuc2xhdGlvblNlcnZpY2UgPSBpbmplY3QoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIHRpbWVEdXJhdGlvbkZvcm1hdHRlcjogQVhUaW1lRHVyYXRpb25Gb3JtYXR0ZXIgPSBpbmplY3QoQVhUaW1lRHVyYXRpb25Gb3JtYXR0ZXIpO1xuXG4gIHByaXZhdGUgb25JbnB1dEZpcmUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBvbkludGVybmFsVmFsdWVDaGFuZ2VkRmlyZSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgWUVBUiA9IHNpZ25hbChudWxsKTtcbiAgcHJpdmF0ZSBNT05USCA9IHNpZ25hbChudWxsKTtcbiAgcHJpdmF0ZSBXRUVLID0gc2lnbmFsKG51bGwpO1xuICBwcml2YXRlIERBWSA9IHNpZ25hbChudWxsKTtcbiAgcHJpdmF0ZSBIT1VSID0gc2lnbmFsKG51bGwpO1xuICBwcml2YXRlIE1JTlVURSA9IHNpZ25hbChudWxsKTtcbiAgcHJpdmF0ZSBTRUNPTkQgPSBzaWduYWwobnVsbCk7XG4gIHByaXZhdGUgTUlMTElTRUNPTkQgPSBzaWduYWwobnVsbCk7XG4gIHByaXZhdGUgaXNUcmFuc2xhdGlvbkluaXQgPSBzaWduYWwoZmFsc2UpO1xuXG4gICNpbml0ID0gYWZ0ZXJOZXh0UmVuZGVyKGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCB0aGlzLmluaXRUcmFuc2xhdGlvbigpO1xuICB9KTtcblxuICAjZWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICAvLyBEZXBlbmQgb24gbGFiZWwgYXMgd2VsbFxuICAgIHZvaWQgdGhpcy5sYWJlbCgpO1xuICAgIGlmICh0aGlzLnZhbHVlU3RhcnQoKSAmJiB0aGlzLnZhbHVlRW5kKCkgJiYgdGhpcy5pc1RyYW5zbGF0aW9uSW5pdCgpKSB7XG4gICAgICB0aGlzLnVwZGF0ZU1hc2soKTtcbiAgICB9XG4gIH0pO1xuXG4gIGFzeW5jIGluaXRUcmFuc2xhdGlvbigpIHtcbiAgICB0aGlzLllFQVIuc2V0KChhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYygnQGFjb3JleDpkYXRlVGltZS51bml0cy55ZWFyJykpLnRvTG9jYWxlVXBwZXJDYXNlKCkpO1xuICAgIHRoaXMuTU9OVEguc2V0KChhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYygnQGFjb3JleDpkYXRlVGltZS51bml0cy5tb250aCcpKS50b0xvY2FsZVVwcGVyQ2FzZSgpKTtcbiAgICB0aGlzLldFRUsuc2V0KChhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYygnQGFjb3JleDpkYXRlVGltZS51bml0cy53ZWVrJykpLnRvTG9jYWxlVXBwZXJDYXNlKCkpO1xuICAgIHRoaXMuREFZLnNldCgoYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BhY29yZXg6ZGF0ZVRpbWUudW5pdHMuZGF5JykpLnRvTG9jYWxlVXBwZXJDYXNlKCkpO1xuICAgIHRoaXMuSE9VUi5zZXQoKGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAYWNvcmV4OmRhdGVUaW1lLnVuaXRzLmhvdXInKSkudG9Mb2NhbGVVcHBlckNhc2UoKSk7XG4gICAgdGhpcy5NSU5VVEUuc2V0KFxuICAgICAgKGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAYWNvcmV4OmRhdGVUaW1lLnVuaXRzLm1pbnV0ZScpKS50b0xvY2FsZVVwcGVyQ2FzZSgpLFxuICAgICk7XG4gICAgdGhpcy5TRUNPTkQuc2V0KFxuICAgICAgKGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAYWNvcmV4OmRhdGVUaW1lLnVuaXRzLnNlY29uZCcpKS50b0xvY2FsZVVwcGVyQ2FzZSgpLFxuICAgICk7XG4gICAgdGhpcy5NSUxMSVNFQ09ORC5zZXQoXG4gICAgICAoYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BhY29yZXg6ZGF0ZVRpbWUudW5pdHMubWlsbGlzZWNvbmQnKSkudG9Mb2NhbGVVcHBlckNhc2UoKSxcbiAgICApO1xuICAgIHRoaXMuaXNUcmFuc2xhdGlvbkluaXQuc2V0KHRydWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uSW5wdXQoZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLm9uSW50ZXJuYWxWYWx1ZUNoYW5nZWRGaXJlKSByZXR1cm47XG4gICAgdGhpcy5vbklucHV0RmlyZSA9IHRydWU7XG4gICAgY29uc3QgbWlsbGlzZWNvbmRzID0gdGhpcy5tYXNrVG9NaWxsaXNlY29uZHMoZXZlbnQpO1xuICAgIGlmICghbWlsbGlzZWNvbmRzKSByZXR1cm47XG4gICAgdGhpcy5jb21taXRWYWx1ZShtaWxsaXNlY29uZHMsIHRydWUpO1xuICAgIHRoaXMub25JbnB1dEZpcmUgPSBmYWxzZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBhc3luYyBpbnRlcm5hbFZhbHVlQ2hhbmdlZCh2YWx1ZTogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMub25JbnB1dEZpcmUpIHJldHVybjtcbiAgICB0aGlzLm9uSW50ZXJuYWxWYWx1ZUNoYW5nZWRGaXJlID0gdHJ1ZTtcblxuICAgIGNvbnN0IG5vcm1hbGl6ZWRNYXNrID0gYXdhaXQgdGhpcy50aW1lRHVyYXRpb25Gb3JtYXR0ZXIubWlsbGlzZWNvbmRzVG9NYXNrKFxuICAgICAgdmFsdWUsXG4gICAgICB0aGlzLnZhbHVlU3RhcnQoKSxcbiAgICAgIHRoaXMudmFsdWVFbmQoKSxcbiAgICAgIHRoaXMubGFiZWwoKSxcbiAgICAgIHRoaXMubWFza0RpZ2l0cygpLFxuICAgICAgdHJ1ZSxcbiAgICApO1xuXG4gICAgdGhpcy5pbnB1dFZhbHVlID0gbm9ybWFsaXplZE1hc2s7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMub25JbnRlcm5hbFZhbHVlQ2hhbmdlZEZpcmUgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVwbGFjZVBlcnNpYW5MYWJlbHMoaW5wdXQ6IHN0cmluZykge1xuICAgIGNvbnN0IHJlcGxhY2VtZW50cyA9IHtcbiAgICAgIFt0aGlzLllFQVIoKV06ICdZRUFSJyxcbiAgICAgIFt0aGlzLk1PTlRIKCldOiAnTU9OVEgnLFxuICAgICAgW3RoaXMuV0VFSygpXTogJ1dFRUsnLFxuICAgICAgW3RoaXMuREFZKCldOiAnREFZJyxcbiAgICAgIFt0aGlzLkhPVVIoKV06ICdIT1VSJyxcbiAgICAgIFt0aGlzLk1JTlVURSgpXTogJ01JTlVURScsXG4gICAgICBbdGhpcy5TRUNPTkQoKV06ICdTRUNPTkQnLFxuICAgICAgW3RoaXMuTUlMTElTRUNPTkQoKV06ICdNSUxMSVNFQ09ORCcsXG4gICAgfTtcblxuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhyZXBsYWNlbWVudHMpLnJlZHVjZSgoc3RyLCBbZmEsIGVuXSkgPT4ge1xuICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKGAoJHtmYX0pYCwgYCgke2VufSlgKTtcbiAgICB9LCBpbnB1dCk7XG4gIH1cblxuICBwcml2YXRlIG1hc2tUb01pbGxpc2Vjb25kcyhtYXNrVmFsdWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgY29uc3QgdGltZVVuaXRzID0ge1xuICAgICAgWUVBUjogMzY1ICogMjQgKiA2MCAqIDYwICogMTAwMCxcbiAgICAgIE1PTlRIOiAzMCAqIDI0ICogNjAgKiA2MCAqIDEwMDAsXG4gICAgICBXRUVLOiA3ICogMjQgKiA2MCAqIDYwICogMTAwMCxcbiAgICAgIERBWTogMjQgKiA2MCAqIDYwICogMTAwMCxcbiAgICAgIEhPVVI6IDYwICogNjAgKiAxMDAwLFxuICAgICAgTUlOVVRFOiA2MCAqIDEwMDAsXG4gICAgICBTRUNPTkQ6IDEwMDAsXG4gICAgICBNSUxMSVNFQ09ORDogMSxcbiAgICB9O1xuXG4gICAgbGV0IHRvdGFsTXMgPSAwO1xuXG4gICAgaWYgKHRoaXMubGFiZWwoKSkge1xuICAgICAgLy8gUGFyc2UgbGFiZWxlZCBmb3JtYXQ6IFwiMDAgKFlFQVIpIDogMDAgKE1PTlRIKSA6IDAwIChEQVkpXCJcbiAgICAgIGNvbnN0IHRyYW5zZm9ybWVkTWFza1ZhbHVlID0gdGhpcy5yZXBsYWNlUGVyc2lhbkxhYmVscyhtYXNrVmFsdWUpO1xuICAgICAgY29uc3QgcmVnZXggPSAvKFxcZCspXFxzKlxcKChZRUFSfE1PTlRIfFdFRUt8REFZfEhPVVJ8TUlOVVRFfFNFQ09ORHxNSUxMSVNFQ09ORClcXCkvZztcbiAgICAgIGxldCBtYXRjaDtcblxuICAgICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4LmV4ZWModHJhbnNmb3JtZWRNYXNrVmFsdWUpKSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHBhcnNlSW50KG1hdGNoWzFdLCAxMCk7XG4gICAgICAgIGNvbnN0IHVuaXQgPSBtYXRjaFsyXTtcbiAgICAgICAgaWYgKHRpbWVVbml0c1t1bml0XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdG90YWxNcyArPSB2YWx1ZSAqIHRpbWVVbml0c1t1bml0XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBQYXJzZSB1bmxhYmVsZWQgZm9ybWF0OiBcIjAwOjAwOjAwXCIgKGNvbG9uLXNlcGFyYXRlZCBudW1iZXJzKVxuICAgICAgY29uc3QgYWxsVW5pdHMgPSBbJ1lFQVInLCAnTU9OVEgnLCAnV0VFSycsICdEQVknLCAnSE9VUicsICdNSU5VVEUnLCAnU0VDT05EJywgJ01JTExJU0VDT05EJ107XG4gICAgICBjb25zdCBzdGFydEluZGV4ID0gYWxsVW5pdHMuaW5kZXhPZih0aGlzLnZhbHVlU3RhcnQoKSk7XG4gICAgICBjb25zdCBlbmRJbmRleCA9IGFsbFVuaXRzLmluZGV4T2YodGhpcy52YWx1ZUVuZCgpKTtcblxuICAgICAgaWYgKHN0YXJ0SW5kZXggIT09IC0xICYmIGVuZEluZGV4ICE9PSAtMSAmJiBlbmRJbmRleCA+PSBzdGFydEluZGV4KSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkVW5pdHMgPSBhbGxVbml0cy5zbGljZShzdGFydEluZGV4LCBlbmRJbmRleCArIDEpO1xuICAgICAgICBjb25zdCBudW1iZXJzID0gbWFza1ZhbHVlLnNwbGl0KCc6JykubWFwKChudW0pID0+IHBhcnNlSW50KG51bS50cmltKCksIDEwKSk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBNYXRoLm1pbihudW1iZXJzLmxlbmd0aCwgc2VsZWN0ZWRVbml0cy5sZW5ndGgpOyBpKyspIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IG51bWJlcnNbaV07XG4gICAgICAgICAgY29uc3QgdW5pdCA9IHNlbGVjdGVkVW5pdHNbaV07XG4gICAgICAgICAgaWYgKCFpc05hTih2YWx1ZSkgJiYgdGltZVVuaXRzW3VuaXRdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRvdGFsTXMgKz0gdmFsdWUgKiB0aW1lVW5pdHNbdW5pdF07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRvdGFsTXM7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU1hc2soKSB7XG4gICAgY29uc3QgYWxsVW5pdHMgPSBbJ1lFQVInLCAnTU9OVEgnLCAnV0VFSycsICdEQVknLCAnSE9VUicsICdNSU5VVEUnLCAnU0VDT05EJywgJ01JTExJU0VDT05EJ107XG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IGFsbFVuaXRzLmluZGV4T2YodGhpcy52YWx1ZVN0YXJ0KCkpO1xuICAgIGNvbnN0IGVuZEluZGV4ID0gYWxsVW5pdHMuaW5kZXhPZih0aGlzLnZhbHVlRW5kKCkpO1xuXG4gICAgaWYgKHN0YXJ0SW5kZXggPT09IC0xIHx8IGVuZEluZGV4ID09PSAtMSB8fCBlbmRJbmRleCA8IHN0YXJ0SW5kZXgpIHtcbiAgICAgIHRoaXMubWFza09wdGlvbnMuc2V0KHsgbWFzazogJycsIGVhZ2VyOiB0cnVlIH0pO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0ZWRVbml0cyA9IGFsbFVuaXRzLnNsaWNlKHN0YXJ0SW5kZXgsIGVuZEluZGV4ICsgMSk7XG5cbiAgICBsZXQgbWFza1BhcnRzOiBzdHJpbmdbXTtcblxuICAgIGNvbnN0IHllYXJEaWdpdHMgPSB0aGlzLm1hc2tEaWdpdHMoKS5zcGxpdCgnOicpWzBdO1xuICAgIGNvbnN0IG1vbnRoRGlnaXRzID0gdGhpcy5tYXNrRGlnaXRzKCkuc3BsaXQoJzonKVsxXTtcbiAgICBjb25zdCB3ZWVrRGlnaXRzID0gdGhpcy5tYXNrRGlnaXRzKCkuc3BsaXQoJzonKVsyXTtcbiAgICBjb25zdCBkYXlEaWdpdHMgPSB0aGlzLm1hc2tEaWdpdHMoKS5zcGxpdCgnOicpWzNdO1xuICAgIGNvbnN0IGhvdXJEaWdpdHMgPSB0aGlzLm1hc2tEaWdpdHMoKS5zcGxpdCgnOicpWzRdO1xuICAgIGNvbnN0IG1pbnV0ZURpZ2l0cyA9IHRoaXMubWFza0RpZ2l0cygpLnNwbGl0KCc6JylbNV07XG4gICAgY29uc3Qgc2Vjb25kRGlnaXRzID0gdGhpcy5tYXNrRGlnaXRzKCkuc3BsaXQoJzonKVs2XTtcbiAgICBjb25zdCBtaWxsaXNlY29uZERpZ2l0cyA9IHRoaXMubWFza0RpZ2l0cygpLnNwbGl0KCc6JylbN107XG5cbiAgICBpZiAodGhpcy5sYWJlbCgpKSB7XG4gICAgICAvLyBXaXRoIGxhYmVsc1xuICAgICAgY29uc3QgdW5pdFBhdHRlcm5zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgICBZRUFSOiBgJHt5ZWFyRGlnaXRzfSAoJHt0aGlzLllFQVIoKX0pYCxcbiAgICAgICAgTU9OVEg6IGAke21vbnRoRGlnaXRzfSAoJHt0aGlzLk1PTlRIKCl9KWAsXG4gICAgICAgIFdFRUs6IGAke3dlZWtEaWdpdHN9ICgke3RoaXMuV0VFSygpfSlgLFxuICAgICAgICBEQVk6IGAke2RheURpZ2l0c30gKCR7dGhpcy5EQVkoKX0pYCxcbiAgICAgICAgSE9VUjogYCR7aG91ckRpZ2l0c30gKCR7dGhpcy5IT1VSKCl9KWAsXG4gICAgICAgIE1JTlVURTogYCR7bWludXRlRGlnaXRzfSAoJHt0aGlzLk1JTlVURSgpfSlgLFxuICAgICAgICBTRUNPTkQ6IGAke3NlY29uZERpZ2l0c30gKCR7dGhpcy5TRUNPTkQoKX0pYCxcbiAgICAgICAgTUlMTElTRUNPTkQ6IGAke21pbGxpc2Vjb25kRGlnaXRzfSAoJHt0aGlzLk1JTExJU0VDT05EKCl9KWAsXG4gICAgICB9O1xuXG4gICAgICBtYXNrUGFydHMgPSBzZWxlY3RlZFVuaXRzLm1hcCgodW5pdCkgPT4ge1xuICAgICAgICByZXR1cm4gdW5pdFBhdHRlcm5zW3VuaXRdO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFdpdGhvdXQgbGFiZWxzIC0ganVzdCBudW1iZXJzXG4gICAgICBjb25zdCB1bml0UGF0dGVybnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgIFlFQVI6IHllYXJEaWdpdHMsXG4gICAgICAgIE1PTlRIOiBtb250aERpZ2l0cyxcbiAgICAgICAgV0VFSzogd2Vla0RpZ2l0cyxcbiAgICAgICAgREFZOiBkYXlEaWdpdHMsXG4gICAgICAgIEhPVVI6IGhvdXJEaWdpdHMsXG4gICAgICAgIE1JTlVURTogbWludXRlRGlnaXRzLFxuICAgICAgICBTRUNPTkQ6IHNlY29uZERpZ2l0cyxcbiAgICAgICAgTUlMTElTRUNPTkQ6IG1pbGxpc2Vjb25kRGlnaXRzLFxuICAgICAgfTtcblxuICAgICAgbWFza1BhcnRzID0gc2VsZWN0ZWRVbml0cy5tYXAoKHVuaXQpID0+IHtcbiAgICAgICAgcmV0dXJuIHVuaXRQYXR0ZXJuc1t1bml0XTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGxldCByZXN1bHQ6IHN0cmluZztcblxuICAgIGlmICh0aGlzLmxhYmVsKCkpIHtcbiAgICAgIGlmICh0aGlzLnRyYW5zbGF0aW9uU2VydmljZS5nZXRBY3RpdmVMYW5nKCkgPT09ICdmYS1JUicpIHtcbiAgICAgICAgcmVzdWx0ID0gbWFza1BhcnRzLnJldmVyc2UoKS5qb2luKCcgOiAnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IG1hc2tQYXJ0cy5qb2luKCcgOiAnKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gbWFza1BhcnRzLmpvaW4oJzonKTtcbiAgICB9XG5cbiAgICB0aGlzLm1hc2tPcHRpb25zLnNldCh7IG1hc2s6IHJlc3VsdCwgZWFnZXI6IHRydWUgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJheC1lZGl0b3ItY29udGFpbmVyXCI+XG4gIDxheC10ZXh0LWJveFxuICAgIFtsb29rXT1cImxvb2tcIlxuICAgIFtwbGFjZWhvbGRlcl09XCJtYXNrT3B0aW9ucygpLm1hc2tcIlxuICAgIFttYXNrLW9wdGlvbnNdPVwibWFza09wdGlvbnMoKVwiXG4gICAgWyhuZ01vZGVsKV09XCJpbnB1dFZhbHVlXCJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJvbklucHV0KCRldmVudClcIlxuICAgIGNsYXNzPVwiYXgtdGltZS1kdXJhdGlvbi10ZXh0XCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleFwiXG4gICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgPlxuICA8L2F4LXRleHQtYm94PlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJheC12YWxpZGF0aW9uLXJ1bGVcIj4gPC9uZy1jb250ZW50PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiYXgtZXJyb3ItY29udGFpbmVyXCI+PC9kaXY+XG4iXX0=","import { NgModule } from '@angular/core';\nimport { AXTimeDurationComponent } from './time-duration.component';\nimport * as i0 from \"@angular/core\";\nconst COMPONENT = [AXTimeDurationComponent];\nconst MODULES = [];\nexport class AXTimeDurationModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AXTimeDurationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.3\", ngImport: i0, type: AXTimeDurationModule, imports: [AXTimeDurationComponent], exports: [AXTimeDurationComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AXTimeDurationModule, imports: [MODULES, COMPONENT] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AXTimeDurationModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1kdXJhdGlvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL3RpbWUtZHVyYXRpb24vc3JjL2xpYi90aW1lLWR1cmF0aW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQUVwRSxNQUFNLFNBQVMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUM7QUFFNUMsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO0FBT25CLE1BQU0sT0FBTyxvQkFBb0I7OEdBQXBCLG9CQUFvQjsrR0FBcEIsb0JBQW9CLFlBVGQsdUJBQXVCLGFBQXZCLHVCQUF1QjsrR0FTN0Isb0JBQW9CLFlBSmxCLE9BQU8sRUFBSyxTQUFTOzsyRkFJdkIsb0JBQW9CO2tCQUxoQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsU0FBUyxDQUFDO29CQUNuQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQztvQkFDdkIsU0FBUyxFQUFFLEVBQUU7aUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhUaW1lRHVyYXRpb25Db21wb25lbnQgfSBmcm9tICcuL3RpbWUtZHVyYXRpb24uY29tcG9uZW50JztcblxuY29uc3QgQ09NUE9ORU5UID0gW0FYVGltZUR1cmF0aW9uQ29tcG9uZW50XTtcblxuY29uc3QgTU9EVUxFUyA9IFtdO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbLi4uTU9EVUxFUywgLi4uQ09NUE9ORU5UXSxcbiAgZXhwb3J0czogWy4uLkNPTVBPTkVOVF0sXG4gIHByb3ZpZGVyczogW10sXG59KVxuZXhwb3J0IGNsYXNzIEFYVGltZUR1cmF0aW9uTW9kdWxlIHt9XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMtdGltZS1kdXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvdGltZS1kdXJhdGlvbi9zcmMvYWNvcmV4LWNvbXBvbmVudHMtdGltZS1kdXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"acorex-components-time-duration.mjs","sources":["../tmp-esm2022/time-duration/lib/time-duration.component.js","../tmp-esm2022/time-duration/lib/time-duration.module.js","../tmp-esm2022/time-duration/acorex-components-time-duration.js"],"sourcesContent":["import { AXComponent, AXFocusableComponent, AXValuableComponent, MXInputBaseValueComponent, MXLookComponent, } from '@acorex/cdk/common';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXTimeDurationFormatter } from '@acorex/core/date-time';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { afterNextRender, ChangeDetectionStrategy, Component, effect, forwardRef, HostBinding, inject, input, signal, ViewEncapsulation, } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IMask } from 'angular-imask';\nimport { classes } from 'polytype';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/text-box\";\nimport * as i2 from \"@angular/forms\";\nexport class AXTimeDurationComponent extends classes((MXInputBaseValueComponent), MXLookComponent) {\n constructor() {\n super(...arguments);\n this.valueStart = input('YEAR', ...(ngDevMode ? [{ debugName: \"valueStart\" }] : []));\n this.valueEnd = input('MILLISECOND', ...(ngDevMode ? [{ debugName: \"valueEnd\" }] : []));\n this.label = input(true, ...(ngDevMode ? [{ debugName: \"label\" }] : []));\n this.maskDigits = input('00:00:00:00:00:00:00:000', ...(ngDevMode ? [{ debugName: \"maskDigits\" }] : []));\n this.maskOptions = signal({\n mask: 'HH:MM:SS',\n blocks: {\n HH: { mask: IMask.MaskedRange, from: 0, to: 23 },\n MM: { mask: IMask.MaskedRange, from: 0, to: 59 },\n SS: { mask: IMask.MaskedRange, from: 0, to: 59 },\n },\n }, ...(ngDevMode ? [{ debugName: \"maskOptions\" }] : []));\n this.translationService = inject(AXTranslationService);\n this.timeDurationFormatter = inject(AXTimeDurationFormatter);\n this.onInputFire = false;\n this.onInternalValueChangedFire = false;\n this.YEAR = signal(null, ...(ngDevMode ? [{ debugName: \"YEAR\" }] : []));\n this.MONTH = signal(null, ...(ngDevMode ? [{ debugName: \"MONTH\" }] : []));\n this.WEEK = signal(null, ...(ngDevMode ? [{ debugName: \"WEEK\" }] : []));\n this.DAY = signal(null, ...(ngDevMode ? [{ debugName: \"DAY\" }] : []));\n this.HOUR = signal(null, ...(ngDevMode ? [{ debugName: \"HOUR\" }] : []));\n this.MINUTE = signal(null, ...(ngDevMode ? [{ debugName: \"MINUTE\" }] : []));\n this.SECOND = signal(null, ...(ngDevMode ? [{ debugName: \"SECOND\" }] : []));\n this.MILLISECOND = signal(null, ...(ngDevMode ? [{ debugName: \"MILLISECOND\" }] : []));\n this.isTranslationInit = signal(false, ...(ngDevMode ? [{ debugName: \"isTranslationInit\" }] : []));\n this.#init = afterNextRender(async () => {\n await this.initTranslation();\n });\n this.#effect = effect(() => {\n // Depend on label as well\n void this.label();\n if (this.valueStart() && this.valueEnd() && this.isTranslationInit()) {\n this.updateMask();\n }\n }, ...(ngDevMode ? [{ debugName: \"#effect\" }] : []));\n }\n #init;\n #effect;\n async initTranslation() {\n this.YEAR.set((await this.translationService.translateAsync('@acorex:dateTime.units.year')).toLocaleUpperCase());\n this.MONTH.set((await this.translationService.translateAsync('@acorex:dateTime.units.month')).toLocaleUpperCase());\n this.WEEK.set((await this.translationService.translateAsync('@acorex:dateTime.units.week')).toLocaleUpperCase());\n this.DAY.set((await this.translationService.translateAsync('@acorex:dateTime.units.day')).toLocaleUpperCase());\n this.HOUR.set((await this.translationService.translateAsync('@acorex:dateTime.units.hour')).toLocaleUpperCase());\n this.MINUTE.set((await this.translationService.translateAsync('@acorex:dateTime.units.minute')).toLocaleUpperCase());\n this.SECOND.set((await this.translationService.translateAsync('@acorex:dateTime.units.second')).toLocaleUpperCase());\n this.MILLISECOND.set((await this.translationService.translateAsync('@acorex:dateTime.units.millisecond')).toLocaleUpperCase());\n this.isTranslationInit.set(true);\n }\n onInput(event) {\n if (this.onInternalValueChangedFire)\n return;\n this.onInputFire = true;\n const milliseconds = this.maskToMilliseconds(event);\n if (!milliseconds)\n return;\n this.commitValue(milliseconds, true);\n this.onInputFire = false;\n }\n async internalValueChanged(value) {\n if (this.onInputFire)\n return;\n this.onInternalValueChangedFire = true;\n const normalizedMask = await this.timeDurationFormatter.millisecondsToMask(value, this.valueStart(), this.valueEnd(), this.label(), this.maskDigits(), true);\n this.inputValue = normalizedMask;\n setTimeout(() => {\n this.onInternalValueChangedFire = false;\n });\n }\n replacePersianLabels(input) {\n const replacements = {\n [this.YEAR()]: 'YEAR',\n [this.MONTH()]: 'MONTH',\n [this.WEEK()]: 'WEEK',\n [this.DAY()]: 'DAY',\n [this.HOUR()]: 'HOUR',\n [this.MINUTE()]: 'MINUTE',\n [this.SECOND()]: 'SECOND',\n [this.MILLISECOND()]: 'MILLISECOND',\n };\n return Object.entries(replacements).reduce((str, [fa, en]) => {\n return str.replace(`(${fa})`, `(${en})`);\n }, input);\n }\n maskToMilliseconds(maskValue) {\n const timeUnits = {\n YEAR: 365 * 24 * 60 * 60 * 1000,\n MONTH: 30 * 24 * 60 * 60 * 1000,\n WEEK: 7 * 24 * 60 * 60 * 1000,\n DAY: 24 * 60 * 60 * 1000,\n HOUR: 60 * 60 * 1000,\n MINUTE: 60 * 1000,\n SECOND: 1000,\n MILLISECOND: 1,\n };\n let totalMs = 0;\n if (this.label()) {\n // Parse labeled format: \"00 (YEAR) : 00 (MONTH) : 00 (DAY)\"\n const transformedMaskValue = this.replacePersianLabels(maskValue);\n const regex = /(\\d+)\\s*\\((YEAR|MONTH|WEEK|DAY|HOUR|MINUTE|SECOND|MILLISECOND)\\)/g;\n let match;\n while ((match = regex.exec(transformedMaskValue)) !== null) {\n const value = parseInt(match[1], 10);\n const unit = match[2];\n if (timeUnits[unit] !== undefined) {\n totalMs += value * timeUnits[unit];\n }\n }\n }\n else {\n // Parse unlabeled format: \"00:00:00\" (colon-separated numbers)\n const allUnits = ['YEAR', 'MONTH', 'WEEK', 'DAY', 'HOUR', 'MINUTE', 'SECOND', 'MILLISECOND'];\n const startIndex = allUnits.indexOf(this.valueStart());\n const endIndex = allUnits.indexOf(this.valueEnd());\n if (startIndex !== -1 && endIndex !== -1 && endIndex >= startIndex) {\n const selectedUnits = allUnits.slice(startIndex, endIndex + 1);\n const numbers = maskValue.split(':').map((num) => parseInt(num.trim(), 10));\n for (let i = 0; i < Math.min(numbers.length, selectedUnits.length); i++) {\n const value = numbers[i];\n const unit = selectedUnits[i];\n if (!isNaN(value) && timeUnits[unit] !== undefined) {\n totalMs += value * timeUnits[unit];\n }\n }\n }\n }\n return totalMs;\n }\n updateMask() {\n const allUnits = ['YEAR', 'MONTH', 'WEEK', 'DAY', 'HOUR', 'MINUTE', 'SECOND', 'MILLISECOND'];\n const startIndex = allUnits.indexOf(this.valueStart());\n const endIndex = allUnits.indexOf(this.valueEnd());\n if (startIndex === -1 || endIndex === -1 || endIndex < startIndex) {\n this.maskOptions.set({ mask: '', eager: true });\n return null;\n }\n const selectedUnits = allUnits.slice(startIndex, endIndex + 1);\n let maskParts;\n const yearDigits = this.maskDigits().split(':')[0];\n const monthDigits = this.maskDigits().split(':')[1];\n const weekDigits = this.maskDigits().split(':')[2];\n const dayDigits = this.maskDigits().split(':')[3];\n const hourDigits = this.maskDigits().split(':')[4];\n const minuteDigits = this.maskDigits().split(':')[5];\n const secondDigits = this.maskDigits().split(':')[6];\n const millisecondDigits = this.maskDigits().split(':')[7];\n if (this.label()) {\n // With labels\n const unitPatterns = {\n YEAR: `${yearDigits} (${this.YEAR()})`,\n MONTH: `${monthDigits} (${this.MONTH()})`,\n WEEK: `${weekDigits} (${this.WEEK()})`,\n DAY: `${dayDigits} (${this.DAY()})`,\n HOUR: `${hourDigits} (${this.HOUR()})`,\n MINUTE: `${minuteDigits} (${this.MINUTE()})`,\n SECOND: `${secondDigits} (${this.SECOND()})`,\n MILLISECOND: `${millisecondDigits} (${this.MILLISECOND()})`,\n };\n maskParts = selectedUnits.map((unit) => {\n return unitPatterns[unit];\n });\n }\n else {\n // Without labels - just numbers\n const unitPatterns = {\n YEAR: yearDigits,\n MONTH: monthDigits,\n WEEK: weekDigits,\n DAY: dayDigits,\n HOUR: hourDigits,\n MINUTE: minuteDigits,\n SECOND: secondDigits,\n MILLISECOND: millisecondDigits,\n };\n maskParts = selectedUnits.map((unit) => {\n return unitPatterns[unit];\n });\n }\n let result;\n if (this.label()) {\n if (this.translationService.getActiveLang() === 'fa-IR') {\n result = maskParts.reverse().join(' : ');\n }\n else {\n result = maskParts.join(' : ');\n }\n }\n else {\n result = maskParts.join(':');\n }\n this.maskOptions.set({ mask: result, eager: true });\n }\n get __hostName() {\n return this.name;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AXTimeDurationComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.1.3\", type: AXTimeDurationComponent, isStandalone: true, selector: \"ax-time-duration\", inputs: { disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: false, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: \"tabIndex\", publicName: \"tabIndex\", isSignal: false, isRequired: false, transformFunction: null }, readonly: { classPropertyName: \"readonly\", publicName: \"readonly\", isSignal: false, isRequired: false, transformFunction: null }, look: { classPropertyName: \"look\", publicName: \"look\", isSignal: false, isRequired: false, transformFunction: null }, valueStart: { classPropertyName: \"valueStart\", publicName: \"valueStart\", isSignal: true, isRequired: false, transformFunction: null }, valueEnd: { classPropertyName: \"valueEnd\", publicName: \"valueEnd\", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: \"label\", publicName: \"label\", isSignal: true, isRequired: false, transformFunction: null }, maskDigits: { classPropertyName: \"maskDigits\", publicName: \"maskDigits\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onValueChanged: \"onValueChanged\" }, host: { properties: { \"attr.name\": \"this.__hostName\" } }, providers: [\n { provide: AXComponent, useExisting: AXTimeDurationComponent },\n { provide: AXFocusableComponent, useExisting: AXTimeDurationComponent },\n { provide: AXValuableComponent, useExisting: AXTimeDurationComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXTimeDurationComponent),\n multi: true,\n },\n ], usesInheritance: true, ngImport: i0, template: \"<div class=\\\"ax-editor-container\\\">\\n <ax-text-box\\n [look]=\\\"look\\\"\\n [placeholder]=\\\"maskOptions().mask\\\"\\n [mask-options]=\\\"maskOptions()\\\"\\n [(ngModel)]=\\\"inputValue\\\"\\n (ngModelChange)=\\\"onInput($event)\\\"\\n class=\\\"ax-time-duration-text\\\"\\n [disabled]=\\\"disabled\\\"\\n [tabIndex]=\\\"tabIndex\\\"\\n [readonly]=\\\"readonly\\\"\\n >\\n </ax-text-box>\\n <ng-content select=\\\"ax-validation-rule\\\"> </ng-content>\\n</div>\\n<div class=\\\"ax-error-container\\\"></div>\\n\", styles: [\"ax-time-duration>.ax-editor-container{display:block;padding:0}\\n\"], dependencies: [{ kind: \"ngmodule\", type: AXTextBoxModule }, { kind: \"component\", type: i1.AXTextBoxComponent, selector: \"ax-text-box\", inputs: [\"disabled\", \"tabIndex\", \"readonly\", \"value\", \"state\", \"name\", \"id\", \"placeholder\", \"maxLength\", \"allowNull\", \"type\", \"autoComplete\", \"look\", \"mask-options\", \"class\"], outputs: [\"onBlur\", \"onFocus\", \"valueChange\", \"stateChange\", \"onValueChanged\", \"readonlyChange\", \"disabledChange\", \"onKeyDown\", \"onKeyUp\", \"onKeyPress\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: AXSelectBoxModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AXTimeDurationComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-time-duration', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [AXTextBoxModule, FormsModule, AXSelectBoxModule], inputs: ['disabled', 'tabIndex', 'readonly', 'look'], outputs: ['onValueChanged'], providers: [\n { provide: AXComponent, useExisting: AXTimeDurationComponent },\n { provide: AXFocusableComponent, useExisting: AXTimeDurationComponent },\n { provide: AXValuableComponent, useExisting: AXTimeDurationComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXTimeDurationComponent),\n multi: true,\n },\n ], template: \"<div class=\\\"ax-editor-container\\\">\\n <ax-text-box\\n [look]=\\\"look\\\"\\n [placeholder]=\\\"maskOptions().mask\\\"\\n [mask-options]=\\\"maskOptions()\\\"\\n [(ngModel)]=\\\"inputValue\\\"\\n (ngModelChange)=\\\"onInput($event)\\\"\\n class=\\\"ax-time-duration-text\\\"\\n [disabled]=\\\"disabled\\\"\\n [tabIndex]=\\\"tabIndex\\\"\\n [readonly]=\\\"readonly\\\"\\n >\\n </ax-text-box>\\n <ng-content select=\\\"ax-validation-rule\\\"> </ng-content>\\n</div>\\n<div class=\\\"ax-error-container\\\"></div>\\n\", styles: [\"ax-time-duration>.ax-editor-container{display:block;padding:0}\\n\"] }]\n }], propDecorators: { __hostName: [{\n type: HostBinding,\n args: ['attr.name']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1kdXJhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL3RpbWUtZHVyYXRpb24vc3JjL2xpYi90aW1lLWR1cmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvdGltZS1kdXJhdGlvbi9zcmMvbGliL3RpbWUtZHVyYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFdBQVcsRUFDWCxvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLHlCQUF5QixFQUN6QixlQUFlLEdBQ2hCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFpQixlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsZUFBZSxFQUNmLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsTUFBTSxFQUNOLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04saUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7QUF1Qm5DLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxPQUFPLENBQUMsQ0FBQSx5QkFBaUMsQ0FBQSxFQUFFLGVBQWUsQ0FBQztJ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QUFrQixtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFdBQzVCLENBQUMsZUFBZSxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQyxVQUNsRCxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxXQUMzQyxDQUFDLGdCQUFnQixDQUFDLGFBQ2hCO3dCQUNULEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLHlCQUF5QixFQUFFO3dCQUM5RCxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLHlCQUF5QixFQUFFO3dCQUN2RSxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLHlCQUF5QixFQUFFO3dCQUN0RTs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx3QkFBd0IsQ0FBQzs0QkFDdEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7OEJBeU9XLFVBQVU7c0JBRHJCLFdBQVc7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFYQ29tcG9uZW50LFxuICBBWEZvY3VzYWJsZUNvbXBvbmVudCxcbiAgQVhWYWx1YWJsZUNvbXBvbmVudCxcbiAgTVhJbnB1dEJhc2VWYWx1ZUNvbXBvbmVudCxcbiAgTVhMb29rQ29tcG9uZW50LFxufSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhTZWxlY3RCb3hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2VsZWN0LWJveCc7XG5pbXBvcnQgeyBBWE1hc2tPcHRpb25zLCBBWFRleHRCb3hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdGV4dC1ib3gnO1xuaW1wb3J0IHsgQVhUaW1lRHVyYXRpb25Gb3JtYXR0ZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvZGF0ZS10aW1lJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7XG4gIGFmdGVyTmV4dFJlbmRlcixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgZWZmZWN0LFxuICBmb3J3YXJkUmVmLFxuICBIb3N0QmluZGluZyxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgc2lnbmFsLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJTWFzayB9IGZyb20gJ2FuZ3VsYXItaW1hc2snO1xuaW1wb3J0IHsgY2xhc3NlcyB9IGZyb20gJ3BvbHl0eXBlJztcbmltcG9ydCB7IEFYVGltZUR1cmF0aW9uVW5pdCB9IGZyb20gJy4vdGltZS1kdXJhdGlvbi50eXBlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtdGltZS1kdXJhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi90aW1lLWR1cmF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGltZS1kdXJhdGlvbi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaW1wb3J0czogW0FYVGV4dEJveE1vZHVsZSwgRm9ybXNNb2R1bGUsIEFYU2VsZWN0Qm94TW9kdWxlXSxcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ3RhYkluZGV4JywgJ3JlYWRvbmx5JywgJ2xvb2snXSxcbiAgb3V0cHV0czogWydvblZhbHVlQ2hhbmdlZCddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IEFYQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhUaW1lRHVyYXRpb25Db21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IEFYRm9jdXNhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhUaW1lRHVyYXRpb25Db21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IEFYVmFsdWFibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFRpbWVEdXJhdGlvbkNvbXBvbmVudCB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQVhUaW1lRHVyYXRpb25Db21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhUaW1lRHVyYXRpb25Db21wb25lbnQgZXh0ZW5kcyBjbGFzc2VzKE1YSW5wdXRCYXNlVmFsdWVDb21wb25lbnQ8bnVtYmVyPiwgTVhMb29rQ29tcG9uZW50KSB7XG4gIHByb3RlY3RlZCBpbnB1dFZhbHVlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZhbHVlU3RhcnQgPSBpbnB1dDxBWFRpbWVEdXJhdGlvblVuaXQ+KCdZRUFSJyk7XG4gIHJlYWRvbmx5IHZhbHVlRW5kID0gaW5wdXQ8QVhUaW1lRHVyYXRpb25Vbml0PignTUlMTElTRUNPTkQnKTtcbiAgcmVhZG9ubHkgbGFiZWwgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgcmVhZG9ubHkgbWFza0RpZ2l0cyA9IGlucHV0KCcwMDowMDowMDowMDowMDowMDowMDowMDAnKTtcblxuICBwcm90ZWN0ZWQgbWFza09wdGlvbnMgPSBzaWduYWw8QVhNYXNrT3B0aW9ucz4oe1xuICAgIG1hc2s6ICdISDpNTTpTUycsXG4gICAgYmxvY2tzOiB7XG4gICAgICBISDogeyBtYXNrOiBJTWFzay5NYXNrZWRSYW5nZSwgZnJvbTogMCwgdG86IDIzIH0sXG4gICAgICBNTTogeyBtYXNrOiBJTWFzay5NYXNrZWRSYW5nZSwgZnJvbTogMCwgdG86IDU5IH0sXG4gICAgICBTUzogeyBtYXNrOiBJTWFzay5NYXNrZWRSYW5nZSwgZnJvbTogMCwgdG86IDU5IH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgcHJpdmF0ZSB0cmFuc2xhdGlvblNlcnZpY2U6IEFYVHJhbnNsYXRpb25TZXJ2aWNlID0gaW5qZWN0KEFYVHJhbnNsYXRpb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0aW1lRHVyYXRpb25Gb3JtYXR0ZXI6IEFYVGltZUR1cmF0aW9uRm9ybWF0dGVyID0gaW5qZWN0KEFYVGltZUR1cmF0aW9uRm9ybWF0dGVyKTtcblxuICBwcml2YXRlIG9uSW5wdXRGaXJlID0gZmFsc2U7XG4gIHByaXZhdGUgb25JbnRlcm5hbFZhbHVlQ2hhbmdlZEZpcmUgPSBmYWxzZTtcblxuICBwcml2YXRlIFlFQVIgPSBzaWduYWwobnVsbCk7XG4gIHByaXZhdGUgTU9OVEggPSBzaWduYWwobnVsbCk7XG4gIHByaXZhdGUgV0VFSyA9IHNpZ25hbChudWxsKTtcbiAgcHJpdmF0ZSBEQVkgPSBzaWduYWwobnVsbCk7XG4gIHByaXZhdGUgSE9VUiA9IHNpZ25hbChudWxsKTtcbiAgcHJpdmF0ZSBNSU5VVEUgPSBzaWduYWwobnVsbCk7XG4gIHByaXZhdGUgU0VDT05EID0gc2lnbmFsKG51bGwpO1xuICBwcml2YXRlIE1JTExJU0VDT05EID0gc2lnbmFsKG51bGwpO1xuICBwcml2YXRlIGlzVHJhbnNsYXRpb25Jbml0ID0gc2lnbmFsKGZhbHNlKTtcblxuICAjaW5pdCA9IGFmdGVyTmV4dFJlbmRlcihhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgdGhpcy5pbml0VHJhbnNsYXRpb24oKTtcbiAgfSk7XG5cbiAgI2VmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgLy8gRGVwZW5kIG9uIGxhYmVsIGFzIHdlbGxcbiAgICB2b2lkIHRoaXMubGFiZWwoKTtcbiAgICBpZiAodGhpcy52YWx1ZVN0YXJ0KCkgJiYgdGhpcy52YWx1ZUVuZCgpICYmIHRoaXMuaXNUcmFuc2xhdGlvbkluaXQoKSkge1xuICAgICAgdGhpcy51cGRhdGVNYXNrKCk7XG4gICAgfVxuICB9KTtcblxuICBhc3luYyBpbml0VHJhbnNsYXRpb24oKSB7XG4gICAgdGhpcy5ZRUFSLnNldCgoYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BhY29yZXg6ZGF0ZVRpbWUudW5pdHMueWVhcicpKS50b0xvY2FsZVVwcGVyQ2FzZSgpKTtcbiAgICB0aGlzLk1PTlRILnNldCgoYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BhY29yZXg6ZGF0ZVRpbWUudW5pdHMubW9udGgnKSkudG9Mb2NhbGVVcHBlckNhc2UoKSk7XG4gICAgdGhpcy5XRUVLLnNldCgoYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BhY29yZXg6ZGF0ZVRpbWUudW5pdHMud2VlaycpKS50b0xvY2FsZVVwcGVyQ2FzZSgpKTtcbiAgICB0aGlzLkRBWS5zZXQoKGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAYWNvcmV4OmRhdGVUaW1lLnVuaXRzLmRheScpKS50b0xvY2FsZVVwcGVyQ2FzZSgpKTtcbiAgICB0aGlzLkhPVVIuc2V0KChhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYygnQGFjb3JleDpkYXRlVGltZS51bml0cy5ob3VyJykpLnRvTG9jYWxlVXBwZXJDYXNlKCkpO1xuICAgIHRoaXMuTUlOVVRFLnNldChcbiAgICAgIChhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYygnQGFjb3JleDpkYXRlVGltZS51bml0cy5taW51dGUnKSkudG9Mb2NhbGVVcHBlckNhc2UoKSxcbiAgICApO1xuICAgIHRoaXMuU0VDT05ELnNldChcbiAgICAgIChhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYygnQGFjb3JleDpkYXRlVGltZS51bml0cy5zZWNvbmQnKSkudG9Mb2NhbGVVcHBlckNhc2UoKSxcbiAgICApO1xuICAgIHRoaXMuTUlMTElTRUNPTkQuc2V0KFxuICAgICAgKGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAYWNvcmV4OmRhdGVUaW1lLnVuaXRzLm1pbGxpc2Vjb25kJykpLnRvTG9jYWxlVXBwZXJDYXNlKCksXG4gICAgKTtcbiAgICB0aGlzLmlzVHJhbnNsYXRpb25Jbml0LnNldCh0cnVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbklucHV0KGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5vbkludGVybmFsVmFsdWVDaGFuZ2VkRmlyZSkgcmV0dXJuO1xuICAgIHRoaXMub25JbnB1dEZpcmUgPSB0cnVlO1xuICAgIGNvbnN0IG1pbGxpc2Vjb25kcyA9IHRoaXMubWFza1RvTWlsbGlzZWNvbmRzKGV2ZW50KTtcbiAgICBpZiAoIW1pbGxpc2Vjb25kcykgcmV0dXJuO1xuICAgIHRoaXMuY29tbWl0VmFsdWUobWlsbGlzZWNvbmRzLCB0cnVlKTtcbiAgICB0aGlzLm9uSW5wdXRGaXJlID0gZmFsc2U7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXN5bmMgaW50ZXJuYWxWYWx1ZUNoYW5nZWQodmFsdWU6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLm9uSW5wdXRGaXJlKSByZXR1cm47XG4gICAgdGhpcy5vbkludGVybmFsVmFsdWVDaGFuZ2VkRmlyZSA9IHRydWU7XG5cbiAgICBjb25zdCBub3JtYWxpemVkTWFzayA9IGF3YWl0IHRoaXMudGltZUR1cmF0aW9uRm9ybWF0dGVyLm1pbGxpc2Vjb25kc1RvTWFzayhcbiAgICAgIHZhbHVlLFxuICAgICAgdGhpcy52YWx1ZVN0YXJ0KCksXG4gICAgICB0aGlzLnZhbHVlRW5kKCksXG4gICAgICB0aGlzLmxhYmVsKCksXG4gICAgICB0aGlzLm1hc2tEaWdpdHMoKSxcbiAgICAgIHRydWUsXG4gICAgKTtcblxuICAgIHRoaXMuaW5wdXRWYWx1ZSA9IG5vcm1hbGl6ZWRNYXNrO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm9uSW50ZXJuYWxWYWx1ZUNoYW5nZWRGaXJlID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VQZXJzaWFuTGFiZWxzKGlucHV0OiBzdHJpbmcpIHtcbiAgICBjb25zdCByZXBsYWNlbWVudHMgPSB7XG4gICAgICBbdGhpcy5ZRUFSKCldOiAnWUVBUicsXG4gICAgICBbdGhpcy5NT05USCgpXTogJ01PTlRIJyxcbiAgICAgIFt0aGlzLldFRUsoKV06ICdXRUVLJyxcbiAgICAgIFt0aGlzLkRBWSgpXTogJ0RBWScsXG4gICAgICBbdGhpcy5IT1VSKCldOiAnSE9VUicsXG4gICAgICBbdGhpcy5NSU5VVEUoKV06ICdNSU5VVEUnLFxuICAgICAgW3RoaXMuU0VDT05EKCldOiAnU0VDT05EJyxcbiAgICAgIFt0aGlzLk1JTExJU0VDT05EKCldOiAnTUlMTElTRUNPTkQnLFxuICAgIH07XG5cbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVwbGFjZW1lbnRzKS5yZWR1Y2UoKHN0ciwgW2ZhLCBlbl0pID0+IHtcbiAgICAgIHJldHVybiBzdHIucmVwbGFjZShgKCR7ZmF9KWAsIGAoJHtlbn0pYCk7XG4gICAgfSwgaW5wdXQpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXNrVG9NaWxsaXNlY29uZHMobWFza1ZhbHVlOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGNvbnN0IHRpbWVVbml0cyA9IHtcbiAgICAgIFlFQVI6IDM2NSAqIDI0ICogNjAgKiA2MCAqIDEwMDAsXG4gICAgICBNT05USDogMzAgKiAyNCAqIDYwICogNjAgKiAxMDAwLFxuICAgICAgV0VFSzogNyAqIDI0ICogNjAgKiA2MCAqIDEwMDAsXG4gICAgICBEQVk6IDI0ICogNjAgKiA2MCAqIDEwMDAsXG4gICAgICBIT1VSOiA2MCAqIDYwICogMTAwMCxcbiAgICAgIE1JTlVURTogNjAgKiAxMDAwLFxuICAgICAgU0VDT05EOiAxMDAwLFxuICAgICAgTUlMTElTRUNPTkQ6IDEsXG4gICAgfTtcblxuICAgIGxldCB0b3RhbE1zID0gMDtcblxuICAgIGlmICh0aGlzLmxhYmVsKCkpIHtcbiAgICAgIC8vIFBhcnNlIGxhYmVsZWQgZm9ybWF0OiBcIjAwIChZRUFSKSA6IDAwIChNT05USCkgOiAwMCAoREFZKVwiXG4gICAgICBjb25zdCB0cmFuc2Zvcm1lZE1hc2tWYWx1ZSA9IHRoaXMucmVwbGFjZVBlcnNpYW5MYWJlbHMobWFza1ZhbHVlKTtcbiAgICAgIGNvbnN0IHJlZ2V4ID0gLyhcXGQrKVxccypcXCgoWUVBUnxNT05USHxXRUVLfERBWXxIT1VSfE1JTlVURXxTRUNPTkR8TUlMTElTRUNPTkQpXFwpL2c7XG4gICAgICBsZXQgbWF0Y2g7XG5cbiAgICAgIHdoaWxlICgobWF0Y2ggPSByZWdleC5leGVjKHRyYW5zZm9ybWVkTWFza1ZhbHVlKSkgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBwYXJzZUludChtYXRjaFsxXSwgMTApO1xuICAgICAgICBjb25zdCB1bml0ID0gbWF0Y2hbMl07XG4gICAgICAgIGlmICh0aW1lVW5pdHNbdW5pdF0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRvdGFsTXMgKz0gdmFsdWUgKiB0aW1lVW5pdHNbdW5pdF07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUGFyc2UgdW5sYWJlbGVkIGZvcm1hdDogXCIwMDowMDowMFwiIChjb2xvbi1zZXBhcmF0ZWQgbnVtYmVycylcbiAgICAgIGNvbnN0IGFsbFVuaXRzID0gWydZRUFSJywgJ01PTlRIJywgJ1dFRUsnLCAnREFZJywgJ0hPVVInLCAnTUlOVVRFJywgJ1NFQ09ORCcsICdNSUxMSVNFQ09ORCddO1xuICAgICAgY29uc3Qgc3RhcnRJbmRleCA9IGFsbFVuaXRzLmluZGV4T2YodGhpcy52YWx1ZVN0YXJ0KCkpO1xuICAgICAgY29uc3QgZW5kSW5kZXggPSBhbGxVbml0cy5pbmRleE9mKHRoaXMudmFsdWVFbmQoKSk7XG5cbiAgICAgIGlmIChzdGFydEluZGV4ICE9PSAtMSAmJiBlbmRJbmRleCAhPT0gLTEgJiYgZW5kSW5kZXggPj0gc3RhcnRJbmRleCkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZFVuaXRzID0gYWxsVW5pdHMuc2xpY2Uoc3RhcnRJbmRleCwgZW5kSW5kZXggKyAxKTtcbiAgICAgICAgY29uc3QgbnVtYmVycyA9IG1hc2tWYWx1ZS5zcGxpdCgnOicpLm1hcCgobnVtKSA9PiBwYXJzZUludChudW0udHJpbSgpLCAxMCkpO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTWF0aC5taW4obnVtYmVycy5sZW5ndGgsIHNlbGVjdGVkVW5pdHMubGVuZ3RoKTsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBudW1iZXJzW2ldO1xuICAgICAgICAgIGNvbnN0IHVuaXQgPSBzZWxlY3RlZFVuaXRzW2ldO1xuICAgICAgICAgIGlmICghaXNOYU4odmFsdWUpICYmIHRpbWVVbml0c1t1bml0XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0b3RhbE1zICs9IHZhbHVlICogdGltZVVuaXRzW3VuaXRdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0b3RhbE1zO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVNYXNrKCkge1xuICAgIGNvbnN0IGFsbFVuaXRzID0gWydZRUFSJywgJ01PTlRIJywgJ1dFRUsnLCAnREFZJywgJ0hPVVInLCAnTUlOVVRFJywgJ1NFQ09ORCcsICdNSUxMSVNFQ09ORCddO1xuICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBhbGxVbml0cy5pbmRleE9mKHRoaXMudmFsdWVTdGFydCgpKTtcbiAgICBjb25zdCBlbmRJbmRleCA9IGFsbFVuaXRzLmluZGV4T2YodGhpcy52YWx1ZUVuZCgpKTtcblxuICAgIGlmIChzdGFydEluZGV4ID09PSAtMSB8fCBlbmRJbmRleCA9PT0gLTEgfHwgZW5kSW5kZXggPCBzdGFydEluZGV4KSB7XG4gICAgICB0aGlzLm1hc2tPcHRpb25zLnNldCh7IG1hc2s6ICcnLCBlYWdlcjogdHJ1ZSB9KTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdGVkVW5pdHMgPSBhbGxVbml0cy5zbGljZShzdGFydEluZGV4LCBlbmRJbmRleCArIDEpO1xuXG4gICAgbGV0IG1hc2tQYXJ0czogc3RyaW5nW107XG5cbiAgICBjb25zdCB5ZWFyRGlnaXRzID0gdGhpcy5tYXNrRGlnaXRzKCkuc3BsaXQoJzonKVswXTtcbiAgICBjb25zdCBtb250aERpZ2l0cyA9IHRoaXMubWFza0RpZ2l0cygpLnNwbGl0KCc6JylbMV07XG4gICAgY29uc3Qgd2Vla0RpZ2l0cyA9IHRoaXMubWFza0RpZ2l0cygpLnNwbGl0KCc6JylbMl07XG4gICAgY29uc3QgZGF5RGlnaXRzID0gdGhpcy5tYXNrRGlnaXRzKCkuc3BsaXQoJzonKVszXTtcbiAgICBjb25zdCBob3VyRGlnaXRzID0gdGhpcy5tYXNrRGlnaXRzKCkuc3BsaXQoJzonKVs0XTtcbiAgICBjb25zdCBtaW51dGVEaWdpdHMgPSB0aGlzLm1hc2tEaWdpdHMoKS5zcGxpdCgnOicpWzVdO1xuICAgIGNvbnN0IHNlY29uZERpZ2l0cyA9IHRoaXMubWFza0RpZ2l0cygpLnNwbGl0KCc6JylbNl07XG4gICAgY29uc3QgbWlsbGlzZWNvbmREaWdpdHMgPSB0aGlzLm1hc2tEaWdpdHMoKS5zcGxpdCgnOicpWzddO1xuXG4gICAgaWYgKHRoaXMubGFiZWwoKSkge1xuICAgICAgLy8gV2l0aCBsYWJlbHNcbiAgICAgIGNvbnN0IHVuaXRQYXR0ZXJuczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICAgWUVBUjogYCR7eWVhckRpZ2l0c30gKCR7dGhpcy5ZRUFSKCl9KWAsXG4gICAgICAgIE1PTlRIOiBgJHttb250aERpZ2l0c30gKCR7dGhpcy5NT05USCgpfSlgLFxuICAgICAgICBXRUVLOiBgJHt3ZWVrRGlnaXRzfSAoJHt0aGlzLldFRUsoKX0pYCxcbiAgICAgICAgREFZOiBgJHtkYXlEaWdpdHN9ICgke3RoaXMuREFZKCl9KWAsXG4gICAgICAgIEhPVVI6IGAke2hvdXJEaWdpdHN9ICgke3RoaXMuSE9VUigpfSlgLFxuICAgICAgICBNSU5VVEU6IGAke21pbnV0ZURpZ2l0c30gKCR7dGhpcy5NSU5VVEUoKX0pYCxcbiAgICAgICAgU0VDT05EOiBgJHtzZWNvbmREaWdpdHN9ICgke3RoaXMuU0VDT05EKCl9KWAsXG4gICAgICAgIE1JTExJU0VDT05EOiBgJHttaWxsaXNlY29uZERpZ2l0c30gKCR7dGhpcy5NSUxMSVNFQ09ORCgpfSlgLFxuICAgICAgfTtcblxuICAgICAgbWFza1BhcnRzID0gc2VsZWN0ZWRVbml0cy5tYXAoKHVuaXQpID0+IHtcbiAgICAgICAgcmV0dXJuIHVuaXRQYXR0ZXJuc1t1bml0XTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBXaXRob3V0IGxhYmVscyAtIGp1c3QgbnVtYmVyc1xuICAgICAgY29uc3QgdW5pdFBhdHRlcm5zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgICBZRUFSOiB5ZWFyRGlnaXRzLFxuICAgICAgICBNT05USDogbW9udGhEaWdpdHMsXG4gICAgICAgIFdFRUs6IHdlZWtEaWdpdHMsXG4gICAgICAgIERBWTogZGF5RGlnaXRzLFxuICAgICAgICBIT1VSOiBob3VyRGlnaXRzLFxuICAgICAgICBNSU5VVEU6IG1pbnV0ZURpZ2l0cyxcbiAgICAgICAgU0VDT05EOiBzZWNvbmREaWdpdHMsXG4gICAgICAgIE1JTExJU0VDT05EOiBtaWxsaXNlY29uZERpZ2l0cyxcbiAgICAgIH07XG5cbiAgICAgIG1hc2tQYXJ0cyA9IHNlbGVjdGVkVW5pdHMubWFwKCh1bml0KSA9PiB7XG4gICAgICAgIHJldHVybiB1bml0UGF0dGVybnNbdW5pdF07XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBsZXQgcmVzdWx0OiBzdHJpbmc7XG5cbiAgICBpZiAodGhpcy5sYWJlbCgpKSB7XG4gICAgICBpZiAodGhpcy50cmFuc2xhdGlvblNlcnZpY2UuZ2V0QWN0aXZlTGFuZygpID09PSAnZmEtSVInKSB7XG4gICAgICAgIHJlc3VsdCA9IG1hc2tQYXJ0cy5yZXZlcnNlKCkuam9pbignIDogJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSBtYXNrUGFydHMuam9pbignIDogJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IG1hc2tQYXJ0cy5qb2luKCc6Jyk7XG4gICAgfVxuXG4gICAgdGhpcy5tYXNrT3B0aW9ucy5zZXQoeyBtYXNrOiByZXN1bHQsIGVhZ2VyOiB0cnVlIH0pO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLm5hbWUnKVxuICBwcml2YXRlIGdldCBfX2hvc3ROYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImF4LWVkaXRvci1jb250YWluZXJcIj5cbiAgPGF4LXRleHQtYm94XG4gICAgW2xvb2tdPVwibG9va1wiXG4gICAgW3BsYWNlaG9sZGVyXT1cIm1hc2tPcHRpb25zKCkubWFza1wiXG4gICAgW21hc2stb3B0aW9uc109XCJtYXNrT3B0aW9ucygpXCJcbiAgICBbKG5nTW9kZWwpXT1cImlucHV0VmFsdWVcIlxuICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uSW5wdXQoJGV2ZW50KVwiXG4gICAgY2xhc3M9XCJheC10aW1lLWR1cmF0aW9uLXRleHRcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW3RhYkluZGV4XT1cInRhYkluZGV4XCJcbiAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICA+XG4gIDwvYXgtdGV4dC1ib3g+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LXZhbGlkYXRpb24tcnVsZVwiPiA8L25nLWNvbnRlbnQ+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJheC1lcnJvci1jb250YWluZXJcIj48L2Rpdj5cbiJdfQ==","import { NgModule } from '@angular/core';\nimport { AXTimeDurationComponent } from './time-duration.component';\nimport * as i0 from \"@angular/core\";\nconst COMPONENT = [AXTimeDurationComponent];\nconst MODULES = [];\nexport class AXTimeDurationModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AXTimeDurationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.3\", ngImport: i0, type: AXTimeDurationModule, imports: [AXTimeDurationComponent], exports: [AXTimeDurationComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AXTimeDurationModule, imports: [MODULES, COMPONENT] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AXTimeDurationModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1kdXJhdGlvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL3RpbWUtZHVyYXRpb24vc3JjL2xpYi90aW1lLWR1cmF0aW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQUVwRSxNQUFNLFNBQVMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUM7QUFFNUMsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO0FBT25CLE1BQU0sT0FBTyxvQkFBb0I7OEdBQXBCLG9CQUFvQjsrR0FBcEIsb0JBQW9CLFlBVGQsdUJBQXVCLGFBQXZCLHVCQUF1QjsrR0FTN0Isb0JBQW9CLFlBSmxCLE9BQU8sRUFBSyxTQUFTOzsyRkFJdkIsb0JBQW9CO2tCQUxoQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsU0FBUyxDQUFDO29CQUNuQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQztvQkFDdkIsU0FBUyxFQUFFLEVBQUU7aUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhUaW1lRHVyYXRpb25Db21wb25lbnQgfSBmcm9tICcuL3RpbWUtZHVyYXRpb24uY29tcG9uZW50JztcblxuY29uc3QgQ09NUE9ORU5UID0gW0FYVGltZUR1cmF0aW9uQ29tcG9uZW50XTtcblxuY29uc3QgTU9EVUxFUyA9IFtdO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbLi4uTU9EVUxFUywgLi4uQ09NUE9ORU5UXSxcbiAgZXhwb3J0czogWy4uLkNPTVBPTkVOVF0sXG4gIHByb3ZpZGVyczogW10sXG59KVxuZXhwb3J0IGNsYXNzIEFYVGltZUR1cmF0aW9uTW9kdWxlIHt9XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMtdGltZS1kdXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvdGltZS1kdXJhdGlvbi9zcmMvYWNvcmV4LWNvbXBvbmVudHMtdGltZS1kdXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|
@@ -475,7 +475,7 @@ class AXTreeViewComponent extends NXComponent {
|
|
475
475
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: AXTreeViewComponent, isStandalone: true, selector: "ax-tree-view", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, showCheckbox: { classPropertyName: "showCheckbox", publicName: "showCheckbox", isSignal: true, isRequired: false, transformFunction: null }, hasCheckboxField: { classPropertyName: "hasCheckboxField", publicName: "hasCheckboxField", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, selectionBehavior: { classPropertyName: "selectionBehavior", publicName: "selectionBehavior", isSignal: true, isRequired: false, transformFunction: null }, selectionScope: { classPropertyName: "selectionScope", publicName: "selectionScope", isSignal: true, isRequired: false, transformFunction: null }, focusNodeEnabled: { classPropertyName: "focusNodeEnabled", publicName: "focusNodeEnabled", isSignal: true, isRequired: false, transformFunction: null }, valueField: { classPropertyName: "valueField", publicName: "valueField", isSignal: true, isRequired: false, transformFunction: null }, textField: { classPropertyName: "textField", publicName: "textField", isSignal: true, isRequired: false, transformFunction: null }, visibleField: { classPropertyName: "visibleField", publicName: "visibleField", isSignal: true, isRequired: false, transformFunction: null }, disableField: { classPropertyName: "disableField", publicName: "disableField", isSignal: true, isRequired: false, transformFunction: null }, hasChildField: { classPropertyName: "hasChildField", publicName: "hasChildField", isSignal: true, isRequired: false, transformFunction: null }, selectedField: { classPropertyName: "selectedField", publicName: "selectedField", isSignal: true, isRequired: false, transformFunction: null }, expandedField: { classPropertyName: "expandedField", publicName: "expandedField", isSignal: true, isRequired: false, transformFunction: null }, tooltipField: { classPropertyName: "tooltipField", publicName: "tooltipField", isSignal: true, isRequired: false, transformFunction: null }, childrenField: { classPropertyName: "childrenField", publicName: "childrenField", isSignal: true, isRequired: false, transformFunction: null }, activeField: { classPropertyName: "activeField", publicName: "activeField", isSignal: true, isRequired: false, transformFunction: null }, indeterminateField: { classPropertyName: "indeterminateField", publicName: "indeterminateField", isSignal: true, isRequired: false, transformFunction: null }, parentField: { classPropertyName: "parentField", publicName: "parentField", isSignal: true, isRequired: false, transformFunction: null }, iconField: { classPropertyName: "iconField", publicName: "iconField", isSignal: true, isRequired: false, transformFunction: null }, toggleIcons: { classPropertyName: "toggleIcons", publicName: "toggleIcons", isSignal: true, isRequired: false, transformFunction: null }, look: { classPropertyName: "look", publicName: "look", isSignal: true, isRequired: false, transformFunction: null }, showEmptyNodeMassage: { classPropertyName: "showEmptyNodeMassage", publicName: "showEmptyNodeMassage", isSignal: true, isRequired: false, transformFunction: null }, itemTemplate: { classPropertyName: "itemTemplate", publicName: "itemTemplate", isSignal: false, isRequired: false, transformFunction: null }, emptyTemplate: { classPropertyName: "emptyTemplate", publicName: "emptyTemplate", isSignal: false, isRequired: false, transformFunction: null }, expandOn: { classPropertyName: "expandOn", publicName: "expandOn", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSelectionChanged: "onSelectionChanged", onItemSelectedChanged: "onItemSelectedChanged", onNodeClick: "onNodeClick", onCollapsedChanged: "onCollapsedChanged", onNodedbClick: "onNodedbClick" }, host: { properties: { "class": "this.__hostClass" } }, providers: [
|
476
476
|
{ provide: AXComponent, useExisting: AXTreeViewComponent },
|
477
477
|
{ provide: AXTreeViewBase, useExisting: AXTreeViewComponent },
|
478
|
-
], usesInheritance: true, ngImport: i0, template: "@if (resolvedItems?.length) {\n @for (node of resolvedItems; track $index) {\n <ng-container [ngTemplateOutlet]=\"recursion\" [ngTemplateOutletContext]=\"{ $implicit: node }\"></ng-container>\n }\n} @else {\n <ng-container [ngTemplateOutlet]=\"emptyTemplate || empty\"></ng-container>\n}\n\n<ng-template #recursion let-item>\n @if (item[visibleField()] !== false) {\n <ax-tree-view-item\n [item]=\"item\"\n [isExpanded]=\"item[expandedField()]\"\n [(isActive)]=\"item[activeField()]\"\n [isLoading]=\"isNodeLoading(item[valueField()])\"\n [executorChanges]=\"executorChanges()\"\n >\n @if (\n (showCheckbox() && selectionScope() === 'all' && item[hasCheckboxField()] !== false) ||\n (showCheckbox() &&\n selectionScope() === 'parent' &&\n item[childrenField()]?.length &&\n item[hasCheckboxField()]) !== false ||\n (showCheckbox() &&\n selectionScope() === 'children' &&\n !item[childrenField()]?.length &&\n item[hasCheckboxField()] !== false)\n ) {\n <ax-check-box\n [disabled]=\"item[disableField()]\"\n [indeterminate]=\"item[indeterminateField()]\"\n [(ngModel)]=\"item[selectedField()]\"\n (onValueChanged)=\"handleNodeSelectionClick($event, item)\"\n ></ax-check-box>\n }\n @if (item[iconField()]) {\n <ax-prefix>\n <ax-icon [icon]=\"item[iconField()]\"></ax-icon>\n </ax-prefix>\n }\n @if (item[textField()]) {\n <ax-text>{{ item[textField()] }}</ax-text>\n }\n\n @for (child of item?.[childrenField()]; track $index) {\n <ng-container [ngTemplateOutlet]=\"recursion\" [ngTemplateOutletContext]=\"{ $implicit: child }\"></ng-container>\n }\n </ax-tree-view-item>\n }\n</ng-template>\n\n<ng-template #empty>\n {{ '@acorex:common.general.no-result-found' | translate | async }}\n</ng-template>\n", styles: ["ax-tree-view{--ax-comp-tree-view-arrow-size: .875rem;--ax-comp-tree-view-text-size: .875rem;--ax-comp-tree-view-active-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-tree-view-active-text-color: var(--ax-sys-color-on-primary-surface);--ax-comp-tree-view-hover-bg-color: var(--ax-sys-color-dark-surface);--ax-comp-tree-view-indicator-size: 2px}ax-tree-view:has(>ax-tree-view-item i) ax-tree-view-item .ax-tree-view-container:not(:has(i)){padding-inline-start:1.5rem}ax-tree-view.ax-look-with-line ax-tree-view-item{position:relative}ax-tree-view.ax-look-with-line ax-tree-view-item:before{content:\"\";position:absolute;top:0;inset-inline-start:.625rem;width:1px;height:100%;background-color:#ccc}ax-tree-view.ax-look-with-line ax-tree-view-item .ax-tree-view-container{padding-inline-start:1.25rem}ax-tree-view.ax-look-with-line ax-tree-view-item .ax-tree-view-container .ax-tree-view-icon-container{padding:.25rem}ax-tree-view ax-tree-view-item ax-check-box{margin-inline-start:.5rem}ax-tree-view ax-tree-view-item .ax-tree-view-container{display:flex;align-items:center;margin-bottom:.125rem;cursor:pointer}ax-tree-view ax-tree-view-item .ax-tree-view-container ax-text{font-size:var(--ax-comp-tree-view-text-size)}ax-tree-view ax-tree-view-item .ax-tree-view-container .ax-checkbox-end-side{display:none!important}ax-tree-view ax-tree-view-item .ax-tree-view-container .ax-tree-view-arrow{font-size:var(--ax-comp-tree-view-arrow-size)!important}ax-tree-view ax-tree-view-item .ax-tree-view-container ax-suffix:empty{display:none}ax-tree-view ax-tree-view-item .ax-tree-view-container .ax-tree-view-icon-container{width:1.5rem;height:1.5rem;display:flex;align-items:center;justify-content:center}ax-tree-view ax-tree-view-item .ax-tree-view-container .ax-tree-view-items{display:flex;align-items:center}ax-tree-view ax-tree-view-item .ax-tree-view-container .ax-tree-view-items .ax-tree-view-items-prefix{display:flex;align-items:center;gap:.5rem;padding:.25rem .5rem;border-radius:.25rem;overflow-x:auto;margin-inline-start:.25rem}ax-tree-view ax-tree-view-item .ax-tree-view-container .ax-tree-view-items .ax-tree-view-items-prefix.ax-noselect-tree-view{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}ax-tree-view ax-tree-view-item .ax-tree-view-container .ax-tree-view-items .ax-tree-view-items-prefix.ax-state-tree-view-active{background-color:rgba(var(--ax-comp-tree-view-active-bg-color));color:rgba(var(--ax-comp-tree-view-active-text-color))}ax-tree-view ax-tree-view-item .ax-tree-view-container .ax-tree-view-items .ax-tree-view-items-prefix:hover:not(.ax-state-tree-view-active){background-color:rgba(var(--ax-comp-tree-view-hover-bg-color))}ax-tree-view ax-tree-view-item .ax-tree-view-child{padding-inline-start:1rem}ax-tree-view ax-tree-view-item .ax-tree-view-child .ax-tree-view-container:not(:has(.ax-tree-view-icon-container i)){padding-inline-start:1.5rem}ax-tree-view ax-tree-view-item .ax-tree-view-child.ax-tree-view-empty-child{padding-inline-start:2rem}ax-tree-view ax-tree-view-item .ax-state-disabled{cursor:not-allowed!important;opacity:.5!important}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: AXTreeViewItemComponent, selector: "ax-tree-view-item", inputs: ["item", "isExpanded", "isActive", "isLoading", "executorChanges"], outputs: ["isExpandedChange", "isActiveChange"] }, { kind: "component", type: AXCheckBoxComponent, selector: "ax-check-box", inputs: ["disabled", "tabIndex", "readonly", "color", "value", "name", "id", "
|
478
|
+
], usesInheritance: true, ngImport: i0, template: "@if (resolvedItems?.length) {\n @for (node of resolvedItems; track $index) {\n <ng-container [ngTemplateOutlet]=\"recursion\" [ngTemplateOutletContext]=\"{ $implicit: node }\"></ng-container>\n }\n} @else {\n <ng-container [ngTemplateOutlet]=\"emptyTemplate || empty\"></ng-container>\n}\n\n<ng-template #recursion let-item>\n @if (item[visibleField()] !== false) {\n <ax-tree-view-item\n [item]=\"item\"\n [isExpanded]=\"item[expandedField()]\"\n [(isActive)]=\"item[activeField()]\"\n [isLoading]=\"isNodeLoading(item[valueField()])\"\n [executorChanges]=\"executorChanges()\"\n >\n @if (\n (showCheckbox() && selectionScope() === 'all' && item[hasCheckboxField()] !== false) ||\n (showCheckbox() &&\n selectionScope() === 'parent' &&\n item[childrenField()]?.length &&\n item[hasCheckboxField()]) !== false ||\n (showCheckbox() &&\n selectionScope() === 'children' &&\n !item[childrenField()]?.length &&\n item[hasCheckboxField()] !== false)\n ) {\n <ax-check-box\n [disabled]=\"item[disableField()]\"\n [indeterminate]=\"item[indeterminateField()]\"\n [(ngModel)]=\"item[selectedField()]\"\n (onValueChanged)=\"handleNodeSelectionClick($event, item)\"\n ></ax-check-box>\n }\n @if (item[iconField()]) {\n <ax-prefix>\n <ax-icon [icon]=\"item[iconField()]\"></ax-icon>\n </ax-prefix>\n }\n @if (item[textField()]) {\n <ax-text>{{ item[textField()] }}</ax-text>\n }\n\n @for (child of item?.[childrenField()]; track $index) {\n <ng-container [ngTemplateOutlet]=\"recursion\" [ngTemplateOutletContext]=\"{ $implicit: child }\"></ng-container>\n }\n </ax-tree-view-item>\n }\n</ng-template>\n\n<ng-template #empty>\n {{ '@acorex:common.general.no-result-found' | translate | async }}\n</ng-template>\n", styles: ["ax-tree-view{--ax-comp-tree-view-arrow-size: .875rem;--ax-comp-tree-view-text-size: .875rem;--ax-comp-tree-view-active-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-tree-view-active-text-color: var(--ax-sys-color-on-primary-surface);--ax-comp-tree-view-hover-bg-color: var(--ax-sys-color-dark-surface);--ax-comp-tree-view-indicator-size: 2px}ax-tree-view:has(>ax-tree-view-item i) ax-tree-view-item .ax-tree-view-container:not(:has(i)){padding-inline-start:1.5rem}ax-tree-view.ax-look-with-line ax-tree-view-item{position:relative}ax-tree-view.ax-look-with-line ax-tree-view-item:before{content:\"\";position:absolute;top:0;inset-inline-start:.625rem;width:1px;height:100%;background-color:#ccc}ax-tree-view.ax-look-with-line ax-tree-view-item .ax-tree-view-container{padding-inline-start:1.25rem}ax-tree-view.ax-look-with-line ax-tree-view-item .ax-tree-view-container .ax-tree-view-icon-container{padding:.25rem}ax-tree-view ax-tree-view-item ax-check-box{margin-inline-start:.5rem}ax-tree-view ax-tree-view-item .ax-tree-view-container{display:flex;align-items:center;margin-bottom:.125rem;cursor:pointer}ax-tree-view ax-tree-view-item .ax-tree-view-container ax-text{font-size:var(--ax-comp-tree-view-text-size)}ax-tree-view ax-tree-view-item .ax-tree-view-container .ax-checkbox-end-side{display:none!important}ax-tree-view ax-tree-view-item .ax-tree-view-container .ax-tree-view-arrow{font-size:var(--ax-comp-tree-view-arrow-size)!important}ax-tree-view ax-tree-view-item .ax-tree-view-container ax-suffix:empty{display:none}ax-tree-view ax-tree-view-item .ax-tree-view-container .ax-tree-view-icon-container{width:1.5rem;height:1.5rem;display:flex;align-items:center;justify-content:center}ax-tree-view ax-tree-view-item .ax-tree-view-container .ax-tree-view-items{display:flex;align-items:center}ax-tree-view ax-tree-view-item .ax-tree-view-container .ax-tree-view-items .ax-tree-view-items-prefix{display:flex;align-items:center;gap:.5rem;padding:.25rem .5rem;border-radius:.25rem;overflow-x:auto;margin-inline-start:.25rem}ax-tree-view ax-tree-view-item .ax-tree-view-container .ax-tree-view-items .ax-tree-view-items-prefix.ax-noselect-tree-view{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}ax-tree-view ax-tree-view-item .ax-tree-view-container .ax-tree-view-items .ax-tree-view-items-prefix.ax-state-tree-view-active{background-color:rgba(var(--ax-comp-tree-view-active-bg-color));color:rgba(var(--ax-comp-tree-view-active-text-color))}ax-tree-view ax-tree-view-item .ax-tree-view-container .ax-tree-view-items .ax-tree-view-items-prefix:hover:not(.ax-state-tree-view-active){background-color:rgba(var(--ax-comp-tree-view-hover-bg-color))}ax-tree-view ax-tree-view-item .ax-tree-view-child{padding-inline-start:1rem}ax-tree-view ax-tree-view-item .ax-tree-view-child .ax-tree-view-container:not(:has(.ax-tree-view-icon-container i)){padding-inline-start:1.5rem}ax-tree-view ax-tree-view-item .ax-tree-view-child.ax-tree-view-empty-child{padding-inline-start:2rem}ax-tree-view ax-tree-view-item .ax-state-disabled{cursor:not-allowed!important;opacity:.5!important}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: AXTreeViewItemComponent, selector: "ax-tree-view-item", inputs: ["item", "isExpanded", "isActive", "isLoading", "executorChanges"], outputs: ["isExpandedChange", "isActiveChange"] }, { kind: "component", type: AXCheckBoxComponent, selector: "ax-check-box", inputs: ["disabled", "tabIndex", "readonly", "color", "value", "name", "id", "isLoading", "indeterminate"], outputs: ["onBlur", "onFocus", "valueChange", "onValueChanged"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "component", type: AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
479
479
|
}
|
480
480
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXTreeViewComponent, decorators: [{
|
481
481
|
type: Component,
|