@bravura/ui 3.8.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +579 -557
- package/LICENSE +6 -6
- package/README.md +56 -54
- package/alert/alert-container.component.d.ts +1 -1
- package/alert/alert-message.component.d.ts +1 -1
- package/behavior/await.directive.d.ts +1 -1
- package/behavior/observe-content-class.directive.d.ts +1 -1
- package/behavior/sizing.directive.d.ts +1 -1
- package/clip-note/clip-note.directive.d.ts +1 -1
- package/currency-input/currency-input.directive.d.ts +1 -1
- package/decimal-input/decimal-input.directive.d.ts +1 -1
- package/discrete-input/discrete-input.component.d.ts +1 -1
- package/esm2022/alert/alert-container.component.mjs +207 -0
- package/esm2022/alert/alert-message.component.mjs +101 -0
- package/esm2022/alert/alert.module.mjs +22 -0
- package/{esm2020 → esm2022}/alert/public-api.mjs +1 -1
- package/esm2022/alert/testing/test-api.mjs +44 -0
- package/{esm2020 → esm2022}/behavior/await.directive.mjs +6 -6
- package/esm2022/behavior/behavior.module.mjs +37 -0
- package/{esm2020 → esm2022}/behavior/observe-content-class.directive.mjs +5 -5
- package/{esm2020 → esm2022}/behavior/public-api.mjs +1 -1
- package/esm2022/behavior/sizing-monitor.directive.mjs +31 -0
- package/esm2022/behavior/sizing.directive.mjs +256 -0
- package/esm2022/clip-note/clip-note.component.mjs +216 -0
- package/esm2022/clip-note/clip-note.directive.mjs +141 -0
- package/esm2022/clip-note/clip-note.module.mjs +32 -0
- package/{esm2020 → esm2022}/clip-note/public-api.mjs +1 -1
- package/{esm2020 → esm2022}/common/common-utils.mjs +1 -1
- package/{esm2020 → esm2022}/common/common.module.mjs +7 -7
- package/{esm2020 → esm2022}/common/public-api.mjs +1 -1
- package/{esm2020 → esm2022}/currency-input/currency-input.directive.mjs +6 -6
- package/esm2022/currency-input/currency-input.module.mjs +19 -0
- package/{esm2020 → esm2022}/currency-input/public-api.mjs +1 -1
- package/{esm2020 → esm2022}/decimal-input/decimal-input.directive.mjs +9 -9
- package/{esm2020 → esm2022}/decimal-input/decimal-input.module.mjs +5 -5
- package/esm2022/discrete-input/discrete-input.component.mjs +337 -0
- package/esm2022/discrete-input/discrete-input.module.mjs +21 -0
- package/{esm2020 → esm2022}/discrete-input/public-api.mjs +1 -1
- package/esm2022/file-upload/file-upload.component.mjs +400 -0
- package/esm2022/file-upload/file-upload.module.mjs +44 -0
- package/esm2022/file-upload/file-upload.service.mjs +29 -0
- package/{esm2020 → esm2022}/file-upload/public-api.mjs +1 -1
- package/esm2022/form-field/form-field.component.mjs +82 -0
- package/esm2022/form-field/form-field.module.mjs +33 -0
- package/{esm2020 → esm2022}/form-field/public-api.mjs +1 -1
- package/esm2022/icon-font/icon-font.module.mjs +22 -0
- package/{esm2020 → esm2022}/icon-font/icon.directive.mjs +5 -5
- package/{esm2020 → esm2022}/icon-font/public-api.mjs +1 -1
- package/{esm2020 → esm2022}/icon-font/utilities.mjs +1 -1
- package/esm2022/panel/panel-section.component.mjs +41 -0
- package/esm2022/panel/panel.component.mjs +87 -0
- package/esm2022/panel/panel.module.mjs +23 -0
- package/{esm2020 → esm2022}/panel/public-api.mjs +1 -1
- package/esm2022/panel/tinted.directive.mjs +60 -0
- package/esm2022/phone-number/phone-number.directive.mjs +188 -0
- package/{esm2020 → esm2022}/phone-number/phone-number.module.mjs +5 -5
- package/{esm2020 → esm2022}/phone-number/phone-number.pipe.mjs +6 -6
- package/esm2022/phone-number/phone-number.validator.mjs +64 -0
- package/{esm2020 → esm2022}/phone-number/public-api.mjs +1 -1
- package/{esm2020 → esm2022}/public-api.mjs +1 -1
- package/esm2022/radio-panel/radio-panel-item.component.mjs +93 -0
- package/esm2022/radio-panel/radio-panel.component.mjs +81 -0
- package/{esm2020 → esm2022}/radio-panel/radio-panel.module.mjs +5 -5
- package/esm2022/radio-panel/testing/test-api.mjs +46 -0
- package/{esm2020 → esm2022}/selection-panel/public-api.mjs +1 -1
- package/esm2022/selection-panel/selection-panel-item.component.mjs +166 -0
- package/esm2022/selection-panel/selection-panel.directive.mjs +119 -0
- package/esm2022/selection-panel/selection-panel.module.mjs +23 -0
- package/{esm2020 → esm2022}/skeletons/public-api.mjs +1 -1
- package/esm2022/skeletons/skeleton-loader-presets.directive.mjs +83 -0
- package/{esm2020 → esm2022}/skeletons/skeleton-loader.component.mjs +5 -5
- package/esm2022/skeletons/skeletons.module.mjs +35 -0
- package/{esm2020 → esm2022}/stepper/public-api.mjs +1 -1
- package/{esm2020 → esm2022}/stepper/stepper-animation.mjs +1 -1
- package/esm2022/stepper/stepper.component.mjs +176 -0
- package/esm2022/stepper/stepper.module.mjs +52 -0
- package/{esm2020 → esm2022}/tooltip/public-api.mjs +1 -1
- package/esm2022/tooltip/tooltip.component.mjs +63 -0
- package/esm2022/tooltip/tooltip.directive.mjs +148 -0
- package/esm2022/tooltip/tooltip.module.mjs +25 -0
- package/{fesm2020 → fesm2022}/bravura-ui-alert-testing.mjs +2 -2
- package/fesm2022/bravura-ui-alert-testing.mjs.map +1 -0
- package/fesm2022/bravura-ui-alert.mjs +327 -0
- package/fesm2022/bravura-ui-alert.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-behavior.mjs +45 -45
- package/fesm2022/bravura-ui-behavior.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-clip-note.mjs +70 -70
- package/fesm2022/bravura-ui-clip-note.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-common.mjs +6 -6
- package/fesm2022/bravura-ui-common.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-currency-input.mjs +11 -11
- package/fesm2022/bravura-ui-currency-input.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-decimal-input.mjs +12 -12
- package/fesm2022/bravura-ui-decimal-input.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-discrete-input.mjs +48 -48
- package/fesm2022/bravura-ui-discrete-input.mjs.map +1 -0
- package/fesm2022/bravura-ui-file-upload.mjs +474 -0
- package/fesm2022/bravura-ui-file-upload.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-form-field.mjs +19 -19
- package/fesm2022/bravura-ui-form-field.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-icon-font.mjs +8 -8
- package/fesm2022/bravura-ui-icon-font.mjs.map +1 -0
- package/fesm2022/bravura-ui-panel.mjs +206 -0
- package/fesm2022/bravura-ui-panel.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-phone-number.mjs +30 -30
- package/fesm2022/bravura-ui-phone-number.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-radio-panel-testing.mjs +5 -6
- package/fesm2022/bravura-ui-radio-panel-testing.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-radio-panel.mjs +31 -31
- package/fesm2022/bravura-ui-radio-panel.mjs.map +1 -0
- package/fesm2022/bravura-ui-selection-panel.mjs +306 -0
- package/fesm2022/bravura-ui-selection-panel.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-skeletons.mjs +43 -43
- package/fesm2022/bravura-ui-skeletons.mjs.map +1 -0
- package/fesm2022/bravura-ui-stepper.mjs +251 -0
- package/fesm2022/bravura-ui-stepper.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravura-ui-tooltip.mjs +32 -24
- package/fesm2022/bravura-ui-tooltip.mjs.map +1 -0
- package/fesm2022/bravura-ui.mjs.map +1 -0
- package/file-upload/file-upload.component.d.ts +1 -1
- package/form-field/form-field.component.d.ts +1 -1
- package/icon-font/icon.directive.d.ts +1 -1
- package/package.json +76 -120
- package/panel/panel.component.d.ts +1 -1
- package/panel/tinted.directive.d.ts +1 -1
- package/phone-number/phone-number.directive.d.ts +1 -1
- package/phone-number/phone-number.validator.d.ts +2 -2
- package/radio-panel/radio-panel-item.component.d.ts +1 -1
- package/radio-panel/radio-panel.component.d.ts +1 -1
- package/radio-panel/testing/test-api.d.ts +2 -3
- package/selection-panel/selection-panel-item.component.d.ts +1 -1
- package/selection-panel/selection-panel.directive.d.ts +1 -1
- package/skeletons/skeleton-loader-presets.directive.d.ts +3 -3
- package/stepper/stepper.component.d.ts +1 -1
- package/theme/_bui-card.scss +56 -56
- package/theme/_ui-theme.scss +112 -112
- package/theme/global-style-by-bootstrap.scss +3 -3
- package/theme/global-style-by-tailwind.scss +3 -3
- package/theme/scrollbar.scss +40 -40
- package/tooltip/tooltip.component.d.ts +2 -0
- package/tooltip/tooltip.directive.d.ts +3 -5
- package/esm2020/alert/alert-container.component.mjs +0 -207
- package/esm2020/alert/alert-message.component.mjs +0 -102
- package/esm2020/alert/alert.module.mjs +0 -22
- package/esm2020/alert/testing/test-api.mjs +0 -44
- package/esm2020/behavior/behavior.module.mjs +0 -37
- package/esm2020/behavior/sizing-monitor.directive.mjs +0 -31
- package/esm2020/behavior/sizing.directive.mjs +0 -256
- package/esm2020/clip-note/clip-note.component.mjs +0 -216
- package/esm2020/clip-note/clip-note.directive.mjs +0 -141
- package/esm2020/clip-note/clip-note.module.mjs +0 -32
- package/esm2020/currency-input/currency-input.module.mjs +0 -19
- package/esm2020/discrete-input/discrete-input.component.mjs +0 -337
- package/esm2020/discrete-input/discrete-input.module.mjs +0 -21
- package/esm2020/file-upload/file-upload.component.mjs +0 -400
- package/esm2020/file-upload/file-upload.module.mjs +0 -44
- package/esm2020/file-upload/file-upload.service.mjs +0 -29
- package/esm2020/form-field/form-field.component.mjs +0 -82
- package/esm2020/form-field/form-field.module.mjs +0 -33
- package/esm2020/icon-font/icon-font.module.mjs +0 -22
- package/esm2020/panel/panel-section.component.mjs +0 -41
- package/esm2020/panel/panel.component.mjs +0 -87
- package/esm2020/panel/panel.module.mjs +0 -23
- package/esm2020/panel/tinted.directive.mjs +0 -60
- package/esm2020/phone-number/phone-number.directive.mjs +0 -188
- package/esm2020/phone-number/phone-number.validator.mjs +0 -64
- package/esm2020/radio-panel/radio-panel-item.component.mjs +0 -93
- package/esm2020/radio-panel/radio-panel.component.mjs +0 -81
- package/esm2020/radio-panel/testing/test-api.mjs +0 -47
- package/esm2020/selection-panel/selection-panel-item.component.mjs +0 -166
- package/esm2020/selection-panel/selection-panel.directive.mjs +0 -119
- package/esm2020/selection-panel/selection-panel.module.mjs +0 -23
- package/esm2020/skeletons/skeleton-loader-presets.directive.mjs +0 -83
- package/esm2020/skeletons/skeletons.module.mjs +0 -35
- package/esm2020/stepper/stepper.component.mjs +0 -176
- package/esm2020/stepper/stepper.module.mjs +0 -52
- package/esm2020/tooltip/tooltip.component.mjs +0 -54
- package/esm2020/tooltip/tooltip.directive.mjs +0 -149
- package/esm2020/tooltip/tooltip.module.mjs +0 -25
- package/fesm2015/bravura-ui-alert-testing.mjs +0 -64
- package/fesm2015/bravura-ui-alert-testing.mjs.map +0 -1
- package/fesm2015/bravura-ui-alert.mjs +0 -340
- package/fesm2015/bravura-ui-alert.mjs.map +0 -1
- package/fesm2015/bravura-ui-behavior.mjs +0 -515
- package/fesm2015/bravura-ui-behavior.mjs.map +0 -1
- package/fesm2015/bravura-ui-clip-note.mjs +0 -393
- package/fesm2015/bravura-ui-clip-note.mjs.map +0 -1
- package/fesm2015/bravura-ui-common.mjs +0 -96
- package/fesm2015/bravura-ui-common.mjs.map +0 -1
- package/fesm2015/bravura-ui-currency-input.mjs +0 -300
- package/fesm2015/bravura-ui-currency-input.mjs.map +0 -1
- package/fesm2015/bravura-ui-decimal-input.mjs +0 -145
- package/fesm2015/bravura-ui-decimal-input.mjs.map +0 -1
- package/fesm2015/bravura-ui-discrete-input.mjs +0 -365
- package/fesm2015/bravura-ui-discrete-input.mjs.map +0 -1
- package/fesm2015/bravura-ui-file-upload.mjs +0 -478
- package/fesm2015/bravura-ui-file-upload.mjs.map +0 -1
- package/fesm2015/bravura-ui-form-field.mjs +0 -120
- package/fesm2015/bravura-ui-form-field.mjs.map +0 -1
- package/fesm2015/bravura-ui-icon-font.mjs +0 -178
- package/fesm2015/bravura-ui-icon-font.mjs.map +0 -1
- package/fesm2015/bravura-ui-panel.mjs +0 -210
- package/fesm2015/bravura-ui-panel.mjs.map +0 -1
- package/fesm2015/bravura-ui-phone-number.mjs +0 -327
- package/fesm2015/bravura-ui-phone-number.mjs.map +0 -1
- package/fesm2015/bravura-ui-radio-panel-testing.mjs +0 -63
- package/fesm2015/bravura-ui-radio-panel-testing.mjs.map +0 -1
- package/fesm2015/bravura-ui-radio-panel.mjs +0 -200
- package/fesm2015/bravura-ui-radio-panel.mjs.map +0 -1
- package/fesm2015/bravura-ui-selection-panel.mjs +0 -311
- package/fesm2015/bravura-ui-selection-panel.mjs.map +0 -1
- package/fesm2015/bravura-ui-skeletons.mjs +0 -195
- package/fesm2015/bravura-ui-skeletons.mjs.map +0 -1
- package/fesm2015/bravura-ui-stepper.mjs +0 -253
- package/fesm2015/bravura-ui-stepper.mjs.map +0 -1
- package/fesm2015/bravura-ui-tooltip.mjs +0 -229
- package/fesm2015/bravura-ui-tooltip.mjs.map +0 -1
- package/fesm2015/bravura-ui.mjs.map +0 -1
- package/fesm2020/bravura-ui-alert-testing.mjs.map +0 -1
- package/fesm2020/bravura-ui-alert.mjs +0 -328
- package/fesm2020/bravura-ui-alert.mjs.map +0 -1
- package/fesm2020/bravura-ui-behavior.mjs.map +0 -1
- package/fesm2020/bravura-ui-clip-note.mjs.map +0 -1
- package/fesm2020/bravura-ui-common.mjs.map +0 -1
- package/fesm2020/bravura-ui-currency-input.mjs.map +0 -1
- package/fesm2020/bravura-ui-decimal-input.mjs.map +0 -1
- package/fesm2020/bravura-ui-discrete-input.mjs.map +0 -1
- package/fesm2020/bravura-ui-file-upload.mjs +0 -474
- package/fesm2020/bravura-ui-file-upload.mjs.map +0 -1
- package/fesm2020/bravura-ui-form-field.mjs.map +0 -1
- package/fesm2020/bravura-ui-icon-font.mjs.map +0 -1
- package/fesm2020/bravura-ui-panel.mjs +0 -206
- package/fesm2020/bravura-ui-panel.mjs.map +0 -1
- package/fesm2020/bravura-ui-phone-number.mjs.map +0 -1
- package/fesm2020/bravura-ui-radio-panel-testing.mjs.map +0 -1
- package/fesm2020/bravura-ui-radio-panel.mjs.map +0 -1
- package/fesm2020/bravura-ui-selection-panel.mjs +0 -306
- package/fesm2020/bravura-ui-selection-panel.mjs.map +0 -1
- package/fesm2020/bravura-ui-skeletons.mjs.map +0 -1
- package/fesm2020/bravura-ui-stepper.mjs +0 -251
- package/fesm2020/bravura-ui-stepper.mjs.map +0 -1
- package/fesm2020/bravura-ui-tooltip.mjs.map +0 -1
- package/fesm2020/bravura-ui.mjs +0 -8
- package/fesm2020/bravura-ui.mjs.map +0 -1
- /package/{esm2020 → esm2022}/alert/bravura-ui-alert.mjs +0 -0
- /package/{esm2020 → esm2022}/alert/testing/bravura-ui-alert-testing.mjs +0 -0
- /package/{esm2020 → esm2022}/behavior/bravura-ui-behavior.mjs +0 -0
- /package/{esm2020 → esm2022}/bravura-ui.mjs +0 -0
- /package/{esm2020 → esm2022}/clip-note/bravura-ui-clip-note.mjs +0 -0
- /package/{esm2020 → esm2022}/common/bravura-ui-common.mjs +0 -0
- /package/{esm2020 → esm2022}/currency-input/bravura-ui-currency-input.mjs +0 -0
- /package/{esm2020 → esm2022}/decimal-input/bravura-ui-decimal-input.mjs +0 -0
- /package/{esm2020 → esm2022}/decimal-input/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/discrete-input/bravura-ui-discrete-input.mjs +0 -0
- /package/{esm2020 → esm2022}/file-upload/bravura-ui-file-upload.mjs +0 -0
- /package/{esm2020 → esm2022}/form-field/bravura-ui-form-field.mjs +0 -0
- /package/{esm2020 → esm2022}/icon-font/bravura-ui-icon-font.mjs +0 -0
- /package/{esm2020 → esm2022}/panel/bravura-ui-panel.mjs +0 -0
- /package/{esm2020 → esm2022}/phone-number/bravura-ui-phone-number.mjs +0 -0
- /package/{esm2020 → esm2022}/radio-panel/bravura-ui-radio-panel.mjs +0 -0
- /package/{esm2020 → esm2022}/radio-panel/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/radio-panel/testing/bravura-ui-radio-panel-testing.mjs +0 -0
- /package/{esm2020 → esm2022}/selection-panel/bravura-ui-selection-panel.mjs +0 -0
- /package/{esm2020 → esm2022}/skeletons/bravura-ui-skeletons.mjs +0 -0
- /package/{esm2020 → esm2022}/stepper/bravura-ui-stepper.mjs +0 -0
- /package/{esm2020 → esm2022}/tooltip/bravura-ui-tooltip.mjs +0 -0
- /package/{fesm2015 → fesm2022}/bravura-ui.mjs +0 -0
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
2
|
+
import { Component, ElementRef, Inject, Input, Optional, Self, ViewChildren } from '@angular/core';
|
|
3
|
+
import { UntypedFormArray, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';
|
|
4
|
+
import { mixinErrorState } from '@angular/material/core';
|
|
5
|
+
import { MatFormFieldControl, MAT_FORM_FIELD } from '@angular/material/form-field';
|
|
6
|
+
import { Subject } from 'rxjs';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/cdk/a11y";
|
|
9
|
+
import * as i2 from "@angular/forms";
|
|
10
|
+
import * as i3 from "@angular/material/core";
|
|
11
|
+
import * as i4 from "@angular/common";
|
|
12
|
+
import * as i5 from "@angular/material/form-field";
|
|
13
|
+
// Boilerplate for applying mixins to form field control for error state checking.
|
|
14
|
+
/** @ignore */
|
|
15
|
+
const _DiscreteInputBase = mixinErrorState(class {
|
|
16
|
+
constructor(
|
|
17
|
+
/** @ignore */ _defaultErrorStateMatcher,
|
|
18
|
+
/** @ignore */ _parentForm,
|
|
19
|
+
/** @ignore */ _parentFormGroup,
|
|
20
|
+
/** @ignore */ ngControl) {
|
|
21
|
+
this._defaultErrorStateMatcher = _defaultErrorStateMatcher;
|
|
22
|
+
this._parentForm = _parentForm;
|
|
23
|
+
this._parentFormGroup = _parentFormGroup;
|
|
24
|
+
this.ngControl = ngControl;
|
|
25
|
+
this.stateChanges = new Subject();
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
/**
|
|
29
|
+
* Custom `MatFormFieldControl` with an individual input box for each character, suitable for fixed-length fields,
|
|
30
|
+
* such as secondary PIN inputs, TFNs, or BSB code etc.
|
|
31
|
+
*
|
|
32
|
+
* Accessibility features are not yet fully implemented.
|
|
33
|
+
*
|
|
34
|
+
* Example:
|
|
35
|
+
*
|
|
36
|
+
* ```html
|
|
37
|
+
* <mat-form-field>
|
|
38
|
+
* <bui-discrete-input></bui-discrete-input>
|
|
39
|
+
* </mat-form-field>
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
*/
|
|
43
|
+
export class DiscreteInputComponent extends _DiscreteInputBase {
|
|
44
|
+
/** @ignore */
|
|
45
|
+
static { this.nextId = 0; }
|
|
46
|
+
/** @ignore */
|
|
47
|
+
get shouldLabelFloat() {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
/** @ignore */
|
|
51
|
+
get empty() {
|
|
52
|
+
return this.parts.controls.every(c => !c.value);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Defines the length and grouping of the input.
|
|
56
|
+
* @default [2, 2, 2]
|
|
57
|
+
*/
|
|
58
|
+
get sizeSpec() {
|
|
59
|
+
return this._sizeSpec;
|
|
60
|
+
}
|
|
61
|
+
set sizeSpec(spec) {
|
|
62
|
+
let size = 0;
|
|
63
|
+
this._separatorPos = [];
|
|
64
|
+
spec.forEach((n, i) => {
|
|
65
|
+
size += n;
|
|
66
|
+
if (i < spec.length - 1) {
|
|
67
|
+
this._separatorPos.push(size);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
if (size !== this.parts.length) {
|
|
71
|
+
const v = this.value;
|
|
72
|
+
this.parts.clear({ emitEvent: false });
|
|
73
|
+
for (let i = 0; i < size; i++) {
|
|
74
|
+
this.parts.setControl(i, new UntypedFormControl(null, [Validators.required, Validators.minLength(1), Validators.maxLength(1)]));
|
|
75
|
+
}
|
|
76
|
+
this.value = v;
|
|
77
|
+
this._sizeSpec = spec;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/** The placeholder for this control. */
|
|
81
|
+
get placeholder() {
|
|
82
|
+
return this._placeholder;
|
|
83
|
+
}
|
|
84
|
+
set placeholder(value) {
|
|
85
|
+
this._placeholder = value;
|
|
86
|
+
this.stateChanges.next();
|
|
87
|
+
}
|
|
88
|
+
/** Whether the control is required. */
|
|
89
|
+
get required() {
|
|
90
|
+
return this._required;
|
|
91
|
+
}
|
|
92
|
+
set required(value) {
|
|
93
|
+
this._required = coerceBooleanProperty(value);
|
|
94
|
+
this.stateChanges.next();
|
|
95
|
+
}
|
|
96
|
+
/** Whether the control is disabled. */
|
|
97
|
+
get disabled() {
|
|
98
|
+
return this._disabled;
|
|
99
|
+
}
|
|
100
|
+
set disabled(value) {
|
|
101
|
+
this._disabled = coerceBooleanProperty(value);
|
|
102
|
+
this._disabled ? this.parts.disable() : this.parts.enable();
|
|
103
|
+
this.stateChanges.next();
|
|
104
|
+
}
|
|
105
|
+
/** The value of the control. */
|
|
106
|
+
get value() {
|
|
107
|
+
return this.parts.controls
|
|
108
|
+
.map(c => c.value)
|
|
109
|
+
.filter(c => c)
|
|
110
|
+
.join('');
|
|
111
|
+
}
|
|
112
|
+
set value(v) {
|
|
113
|
+
v = v || '';
|
|
114
|
+
for (let i = 0; i < this.parts.controls.length; i++) {
|
|
115
|
+
this.parts.controls[i]?.setValue(v[i]);
|
|
116
|
+
}
|
|
117
|
+
this.stateChanges.next();
|
|
118
|
+
}
|
|
119
|
+
/** @ignore */
|
|
120
|
+
get _colorSuffix() {
|
|
121
|
+
return this.errorState ? 'warn' : this._formField?.color || 'primary';
|
|
122
|
+
}
|
|
123
|
+
constructor(_focusMonitor, _elementRef, formField, control, _parentForm, _parentFormGroup, _defaultErrorStateMatcher) {
|
|
124
|
+
super(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, control);
|
|
125
|
+
this._focusMonitor = _focusMonitor;
|
|
126
|
+
this._elementRef = _elementRef;
|
|
127
|
+
/** The type of input boxes */
|
|
128
|
+
this.type = 'text';
|
|
129
|
+
/** Input boxes are separated in groups. This specifies the characters displayed between two groups. */
|
|
130
|
+
this.separator = ' ';
|
|
131
|
+
/** @ignore */ this.id = `bui-discrete-input-${DiscreteInputComponent.nextId++}`;
|
|
132
|
+
this.autocomplete = 'off';
|
|
133
|
+
this._sizeSpec = [];
|
|
134
|
+
this._required = false;
|
|
135
|
+
this._disabled = false;
|
|
136
|
+
this._separatorPos = [];
|
|
137
|
+
/** @ignore */ this.onChange = (_) => { };
|
|
138
|
+
/** @ignore */ this.onTouched = () => { };
|
|
139
|
+
/** @ignore */ this.errorState = false;
|
|
140
|
+
this.parts = new UntypedFormArray([]);
|
|
141
|
+
this.group = new UntypedFormGroup({ parts: this.parts });
|
|
142
|
+
this.sizeSpec = [2, 2, 2];
|
|
143
|
+
this._formField = formField;
|
|
144
|
+
this.focused = false;
|
|
145
|
+
this.stateChanges = new Subject();
|
|
146
|
+
this.ngControl = control;
|
|
147
|
+
if (this.ngControl != null) {
|
|
148
|
+
this.ngControl.valueAccessor = this;
|
|
149
|
+
}
|
|
150
|
+
this._focusMonitor.monitor(this._elementRef, true).subscribe(origin => {
|
|
151
|
+
if (this.focused && !origin) {
|
|
152
|
+
this.onTouched();
|
|
153
|
+
}
|
|
154
|
+
this.focused = !!origin;
|
|
155
|
+
this.stateChanges.next();
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
/** @ignore */
|
|
159
|
+
ngOnDestroy() {
|
|
160
|
+
this.stateChanges.complete();
|
|
161
|
+
this._focusMonitor.stopMonitoring(this._elementRef);
|
|
162
|
+
}
|
|
163
|
+
/** @ignore */
|
|
164
|
+
setDescribedByIds(ids) {
|
|
165
|
+
const controlElement = this._elementRef.nativeElement.querySelector('.bui-discrete-input-container');
|
|
166
|
+
controlElement.setAttribute('aria-describedby', ids.join(' '));
|
|
167
|
+
}
|
|
168
|
+
/** @ignore */
|
|
169
|
+
onContainerClick() {
|
|
170
|
+
const l = this.parts.controls.length;
|
|
171
|
+
for (let i = 0; i < l; i++) {
|
|
172
|
+
if (this.parts.controls[i].invalid || i === l - 1) {
|
|
173
|
+
this._focusMonitor.focusVia(this.inputParts.get(i), 'program');
|
|
174
|
+
break;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/** @ignore */
|
|
179
|
+
writeValue(v) {
|
|
180
|
+
this.value = v;
|
|
181
|
+
}
|
|
182
|
+
/** @ignore */
|
|
183
|
+
registerOnChange(fn) {
|
|
184
|
+
this.onChange = fn;
|
|
185
|
+
}
|
|
186
|
+
/** @ignore */
|
|
187
|
+
registerOnTouched(fn) {
|
|
188
|
+
this.onTouched = fn;
|
|
189
|
+
}
|
|
190
|
+
/** @ignore */
|
|
191
|
+
setDisabledState(isDisabled) {
|
|
192
|
+
this.disabled = isDisabled;
|
|
193
|
+
}
|
|
194
|
+
/** @ignore */
|
|
195
|
+
_handleInput(control, index, event) {
|
|
196
|
+
let v = control.value && control.value[0];
|
|
197
|
+
const rawValue = event.target.value;
|
|
198
|
+
if (rawValue.length > 1) {
|
|
199
|
+
this._replaceText(rawValue, event);
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
control.setValue(v);
|
|
203
|
+
const nextElement = this.inputParts.get(index + 1);
|
|
204
|
+
if (!control.errors && nextElement) {
|
|
205
|
+
this._focusPart(nextElement);
|
|
206
|
+
}
|
|
207
|
+
this.onChange(this.value);
|
|
208
|
+
}
|
|
209
|
+
/** @ignore */
|
|
210
|
+
_handleBeforeInput(index, event) {
|
|
211
|
+
const v = event.data;
|
|
212
|
+
if (this.accept && v && !new RegExp(`[${this.accept}]`).test(v)) {
|
|
213
|
+
event.preventDefault();
|
|
214
|
+
event.stopPropagation();
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
const inp = this.inputParts.get(index).nativeElement;
|
|
218
|
+
if (v && inp.value) {
|
|
219
|
+
inp.value = '';
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
/** @ignore */
|
|
223
|
+
_focusPart(elemRef) {
|
|
224
|
+
this._focusMonitor.focusVia(elemRef, 'program');
|
|
225
|
+
}
|
|
226
|
+
/** @ignore */
|
|
227
|
+
_consumeKey(event) {
|
|
228
|
+
event.stopPropagation();
|
|
229
|
+
event.preventDefault();
|
|
230
|
+
}
|
|
231
|
+
/** @ignore */
|
|
232
|
+
_leftArrow(index, event) {
|
|
233
|
+
this._consumeKey(event);
|
|
234
|
+
const prevElement = this.inputParts.get(index - 1);
|
|
235
|
+
if (prevElement) {
|
|
236
|
+
this._focusPart(prevElement);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
/** @ignore */
|
|
240
|
+
_rightArrow(index, event) {
|
|
241
|
+
this._consumeKey(event);
|
|
242
|
+
const nextElement = this.inputParts.get(index + 1);
|
|
243
|
+
if (nextElement) {
|
|
244
|
+
this._focusPart(nextElement);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
/** @ignore */
|
|
248
|
+
_handleBackspace(control, index) {
|
|
249
|
+
const prevElement = index && this.inputParts.get(index - 1);
|
|
250
|
+
if (!control.value && prevElement) {
|
|
251
|
+
this._focusMonitor.focusVia(prevElement, 'program');
|
|
252
|
+
}
|
|
253
|
+
else if (control.value) {
|
|
254
|
+
control.setValue('');
|
|
255
|
+
this.onChange(this.value);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
/** @ignore */
|
|
259
|
+
_onPaste(event) {
|
|
260
|
+
let text = event.clipboardData?.getData('text');
|
|
261
|
+
this._replaceText(text, event);
|
|
262
|
+
}
|
|
263
|
+
/** @ignore */
|
|
264
|
+
_separatorRequired(index) {
|
|
265
|
+
return this._separatorPos.includes(index + 1);
|
|
266
|
+
}
|
|
267
|
+
/** @ignore */
|
|
268
|
+
_placeholderAt(index) {
|
|
269
|
+
return this._placeholder && this._placeholder[index];
|
|
270
|
+
}
|
|
271
|
+
/** @ignore */
|
|
272
|
+
ngDoCheck() {
|
|
273
|
+
if (this.ngControl) {
|
|
274
|
+
// We need to re-evaluate this on every change detection cycle, because there are some
|
|
275
|
+
// error triggers that we can't subscribe to (e.g. parent form submissions). This means
|
|
276
|
+
// that whatever logic is in here has to be super lean or we risk destroying the performance.
|
|
277
|
+
this.updateErrorState();
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
_replaceText(text, event) {
|
|
281
|
+
if (text) {
|
|
282
|
+
if (this.accept) {
|
|
283
|
+
text = text.replace(new RegExp(`[^${this.accept}]`, 'gi'), '');
|
|
284
|
+
}
|
|
285
|
+
this.value = text;
|
|
286
|
+
this.onChange(this.value);
|
|
287
|
+
}
|
|
288
|
+
event.preventDefault();
|
|
289
|
+
this.onContainerClick();
|
|
290
|
+
}
|
|
291
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DiscreteInputComponent, deps: [{ token: i1.FocusMonitor }, { token: i0.ElementRef }, { token: MAT_FORM_FIELD, optional: true }, { token: i2.NgControl, optional: true, self: true }, { token: i2.NgForm, optional: true }, { token: i2.FormGroupDirective, optional: true }, { token: i3.ErrorStateMatcher }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
292
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DiscreteInputComponent, selector: "bui-discrete-input", inputs: { type: "type", separator: "separator", accept: "accept", userAriaDescribedBy: ["aria-describedby", "userAriaDescribedBy"], autocomplete: "autocomplete", sizeSpec: "sizeSpec", placeholder: "placeholder", required: "required", disabled: "disabled", value: "value" }, host: { classAttribute: "bui-discrete-input bui-host" }, providers: [{ provide: MatFormFieldControl, useExisting: DiscreteInputComponent }], viewQueries: [{ propertyName: "inputParts", predicate: ["part"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<div\r\n\trole=\"group\"\r\n\tclass=\"bui-discrete-input-container\"\r\n\t[formGroup]=\"group\"\r\n\t[attr.aria-labelledby]=\"_formField?.getLabelId()\"\r\n>\r\n\t<ng-container [formArrayName]=\"'parts'\">\r\n\t\t<ng-template ngFor [ngForOf]=\"parts.controls\" let-p let-i=\"index\">\r\n\t\t\t<input\r\n\t\t\t\tclass=\"bui-discrete-input-element bui-outline-{{ _colorSuffix }}\"\r\n\t\t\t\t[formControlName]=\"i\"\r\n\t\t\t\t[attr.aria-label]=\"'character ' + (i + 1)\"\r\n\t\t\t\t(input)=\"_handleInput(p, i, $event)\"\r\n\t\t\t\t(beforeinput)=\"_handleBeforeInput(i, $event)\"\r\n\t\t\t\t(keydown.backspace)=\"_handleBackspace(p, i)\"\r\n\t\t\t\t(keydown.arrowup)=\"_consumeKey($event)\"\r\n\t\t\t\t(keydown.arrowdown)=\"_consumeKey($event)\"\r\n\t\t\t\t(keydown.arrowleft)=\"_leftArrow(i, $event)\"\r\n\t\t\t\t(keydown.arrowright)=\"_rightArrow(i, $event)\"\r\n\t\t\t\t[attr.placeholder]=\"_placeholderAt(i)\"\r\n\t\t\t\t#part\r\n\t\t\t\t(click)=\"$event.stopPropagation()\"\r\n\t\t\t\t(paste)=\"_onPaste($event)\"\r\n\t\t\t\t[type]=\"['text', 'number', 'password'].includes(type) ? type : 'text'\"\r\n\t\t\t\t[attr.inputmode]=\"type === 'number' ? 'decimal' : undefined\"\r\n\t\t\t\tautocapitalize=\"none\"\r\n\t\t\t/>\r\n\t\t\t<span *ngIf=\"_separatorRequired(i)\" class=\"bui-discrete-input-spacer\">{{ separator }}</span>\r\n\t\t</ng-template>\r\n\t</ng-container>\r\n</div>\r\n", styles: [".bui-discrete-input-container{display:flex;align-items:center}.bui-discrete-input-element{border:1px solid rgba(128,128,128,.4);border-radius:3px;background:none;padding:0;text-align:center;width:1.5em;height:1.5em;font-size:inherit;color:currentColor;caret-color:auto}.bui-discrete-input-element:not(:last-child){margin-right:.25em}.bui-discrete-input-element:focus-visible{outline-style:solid;outline-width:2px;outline-offset:-1px}.bui-discrete-input-element[type=number]::-webkit-inner-spin-button,.bui-discrete-input-element[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.bui-discrete-input-element[type=number]{-moz-appearance:textfield}.bui-discrete-input-spacer{margin-right:.25em;vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }] }); }
|
|
293
|
+
}
|
|
294
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DiscreteInputComponent, decorators: [{
|
|
295
|
+
type: Component,
|
|
296
|
+
args: [{ selector: 'bui-discrete-input', providers: [{ provide: MatFormFieldControl, useExisting: DiscreteInputComponent }], host: {
|
|
297
|
+
class: 'bui-discrete-input bui-host'
|
|
298
|
+
}, template: "<div\r\n\trole=\"group\"\r\n\tclass=\"bui-discrete-input-container\"\r\n\t[formGroup]=\"group\"\r\n\t[attr.aria-labelledby]=\"_formField?.getLabelId()\"\r\n>\r\n\t<ng-container [formArrayName]=\"'parts'\">\r\n\t\t<ng-template ngFor [ngForOf]=\"parts.controls\" let-p let-i=\"index\">\r\n\t\t\t<input\r\n\t\t\t\tclass=\"bui-discrete-input-element bui-outline-{{ _colorSuffix }}\"\r\n\t\t\t\t[formControlName]=\"i\"\r\n\t\t\t\t[attr.aria-label]=\"'character ' + (i + 1)\"\r\n\t\t\t\t(input)=\"_handleInput(p, i, $event)\"\r\n\t\t\t\t(beforeinput)=\"_handleBeforeInput(i, $event)\"\r\n\t\t\t\t(keydown.backspace)=\"_handleBackspace(p, i)\"\r\n\t\t\t\t(keydown.arrowup)=\"_consumeKey($event)\"\r\n\t\t\t\t(keydown.arrowdown)=\"_consumeKey($event)\"\r\n\t\t\t\t(keydown.arrowleft)=\"_leftArrow(i, $event)\"\r\n\t\t\t\t(keydown.arrowright)=\"_rightArrow(i, $event)\"\r\n\t\t\t\t[attr.placeholder]=\"_placeholderAt(i)\"\r\n\t\t\t\t#part\r\n\t\t\t\t(click)=\"$event.stopPropagation()\"\r\n\t\t\t\t(paste)=\"_onPaste($event)\"\r\n\t\t\t\t[type]=\"['text', 'number', 'password'].includes(type) ? type : 'text'\"\r\n\t\t\t\t[attr.inputmode]=\"type === 'number' ? 'decimal' : undefined\"\r\n\t\t\t\tautocapitalize=\"none\"\r\n\t\t\t/>\r\n\t\t\t<span *ngIf=\"_separatorRequired(i)\" class=\"bui-discrete-input-spacer\">{{ separator }}</span>\r\n\t\t</ng-template>\r\n\t</ng-container>\r\n</div>\r\n", styles: [".bui-discrete-input-container{display:flex;align-items:center}.bui-discrete-input-element{border:1px solid rgba(128,128,128,.4);border-radius:3px;background:none;padding:0;text-align:center;width:1.5em;height:1.5em;font-size:inherit;color:currentColor;caret-color:auto}.bui-discrete-input-element:not(:last-child){margin-right:.25em}.bui-discrete-input-element:focus-visible{outline-style:solid;outline-width:2px;outline-offset:-1px}.bui-discrete-input-element[type=number]::-webkit-inner-spin-button,.bui-discrete-input-element[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.bui-discrete-input-element[type=number]{-moz-appearance:textfield}.bui-discrete-input-spacer{margin-right:.25em;vertical-align:middle}\n"] }]
|
|
299
|
+
}], ctorParameters: () => [{ type: i1.FocusMonitor }, { type: i0.ElementRef }, { type: i5.MatFormField, decorators: [{
|
|
300
|
+
type: Optional
|
|
301
|
+
}, {
|
|
302
|
+
type: Inject,
|
|
303
|
+
args: [MAT_FORM_FIELD]
|
|
304
|
+
}] }, { type: i2.NgControl, decorators: [{
|
|
305
|
+
type: Optional
|
|
306
|
+
}, {
|
|
307
|
+
type: Self
|
|
308
|
+
}] }, { type: i2.NgForm, decorators: [{
|
|
309
|
+
type: Optional
|
|
310
|
+
}] }, { type: i2.FormGroupDirective, decorators: [{
|
|
311
|
+
type: Optional
|
|
312
|
+
}] }, { type: i3.ErrorStateMatcher }], propDecorators: { type: [{
|
|
313
|
+
type: Input
|
|
314
|
+
}], separator: [{
|
|
315
|
+
type: Input
|
|
316
|
+
}], accept: [{
|
|
317
|
+
type: Input
|
|
318
|
+
}], userAriaDescribedBy: [{
|
|
319
|
+
type: Input,
|
|
320
|
+
args: ['aria-describedby']
|
|
321
|
+
}], inputParts: [{
|
|
322
|
+
type: ViewChildren,
|
|
323
|
+
args: ['part', { read: ElementRef }]
|
|
324
|
+
}], autocomplete: [{
|
|
325
|
+
type: Input
|
|
326
|
+
}], sizeSpec: [{
|
|
327
|
+
type: Input
|
|
328
|
+
}], placeholder: [{
|
|
329
|
+
type: Input
|
|
330
|
+
}], required: [{
|
|
331
|
+
type: Input
|
|
332
|
+
}], disabled: [{
|
|
333
|
+
type: Input
|
|
334
|
+
}], value: [{
|
|
335
|
+
type: Input
|
|
336
|
+
}] } });
|
|
337
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzY3JldGUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvZGlzY3JldGUtaW5wdXQvZGlzY3JldGUtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvZGlzY3JldGUtaW5wdXQvZGlzY3JldGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUNOLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBRVIsSUFBSSxFQUNKLFlBQVksRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR04sZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFJaEIsVUFBVSxFQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFxQixlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RSxPQUFPLEVBQWdCLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFFL0Isa0ZBQWtGO0FBQ2xGLGNBQWM7QUFDZCxNQUFNLGtCQUFrQixHQUFHLGVBQWUsQ0FDekM7SUFFQztJQUNDLGNBQWMsQ0FBUSx5QkFBNEM7SUFDbEUsY0FBYyxDQUFRLFdBQW1CO0lBQ3pDLGNBQWMsQ0FBUSxnQkFBb0M7SUFDMUQsY0FBYyxDQUFRLFNBQW9CO1FBSHBCLDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBbUI7UUFDNUMsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFDbkIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFvQjtRQUNwQyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBTGxDLGlCQUFZLEdBQUcs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bkIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLHdCQUF3QixFQUFFLENBQUMsUUFDNUU7d0JBQ0wsS0FBSyxFQUFFLDZCQUE2QjtxQkFDcEM7OzBCQStKQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGNBQWM7OzBCQUNqQyxRQUFROzswQkFBSSxJQUFJOzswQkFDaEIsUUFBUTs7MEJBQ1IsUUFBUTt5RUEzSVYsSUFBSTtzQkFESCxLQUFLO2dCQUtOLFNBQVM7c0JBRFIsS0FBSztnQkFRTixNQUFNO3NCQURMLEtBQUs7Z0JBTXFCLG1CQUFtQjtzQkFBN0MsS0FBSzt1QkFBQyxrQkFBa0I7Z0JBRTJCLFVBQVU7c0JBQTdELFlBQVk7dUJBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFTMUMsWUFBWTtzQkFEWCxLQUFLO2dCQTZCRixRQUFRO3NCQURYLEtBQUs7Z0JBNkJGLFdBQVc7c0JBRGQsS0FBSztnQkFXRixRQUFRO3NCQURYLEtBQUs7Z0JBV0YsUUFBUTtzQkFEWCxLQUFLO2dCQVlGLEtBQUs7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvY3VzTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcclxuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcclxuaW1wb3J0IHtcclxuXHRDb21wb25lbnQsXHJcblx0RWxlbWVudFJlZixcclxuXHRJbmplY3QsXHJcblx0SW5wdXQsXHJcblx0T25EZXN0cm95LFxyXG5cdE9wdGlvbmFsLFxyXG5cdFF1ZXJ5TGlzdCxcclxuXHRTZWxmLFxyXG5cdFZpZXdDaGlsZHJlblxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG5cdEFic3RyYWN0Q29udHJvbCxcclxuXHRDb250cm9sVmFsdWVBY2Nlc3NvcixcclxuXHRVbnR5cGVkRm9ybUFycmF5LFxyXG5cdFVudHlwZWRGb3JtQ29udHJvbCxcclxuXHRVbnR5cGVkRm9ybUdyb3VwLFxyXG5cdEZvcm1Hcm91cERpcmVjdGl2ZSxcclxuXHROZ0NvbnRyb2wsXHJcblx0TmdGb3JtLFxyXG5cdFZhbGlkYXRvcnNcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEVycm9yU3RhdGVNYXRjaGVyLCBtaXhpbkVycm9yU3RhdGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkLCBNYXRGb3JtRmllbGRDb250cm9sLCBNQVRfRk9STV9GSUVMRCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG4vLyBCb2lsZXJwbGF0ZSBmb3IgYXBwbHlpbmcgbWl4aW5zIHRvIGZvcm0gZmllbGQgY29udHJvbCBmb3IgZXJyb3Igc3RhdGUgY2hlY2tpbmcuXHJcbi8qKiBAaWdub3JlICovXHJcbmNvbnN0IF9EaXNjcmV0ZUlucHV0QmFzZSA9IG1peGluRXJyb3JTdGF0ZShcclxuXHRjbGFzcyB7XHJcblx0XHRyZWFkb25seSBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cdFx0Y29uc3RydWN0b3IoXHJcblx0XHRcdC8qKiBAaWdub3JlICovIHB1YmxpYyBfZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyOiBFcnJvclN0YXRlTWF0Y2hlcixcclxuXHRcdFx0LyoqIEBpZ25vcmUgKi8gcHVibGljIF9wYXJlbnRGb3JtOiBOZ0Zvcm0sXHJcblx0XHRcdC8qKiBAaWdub3JlICovIHB1YmxpYyBfcGFyZW50Rm9ybUdyb3VwOiBGb3JtR3JvdXBEaXJlY3RpdmUsXHJcblx0XHRcdC8qKiBAaWdub3JlICovIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbFxyXG5cdFx0KSB7fVxyXG5cdH1cclxuKTtcclxuXHJcbi8qKlxyXG4gKiBDdXN0b20gYE1hdEZvcm1GaWVsZENvbnRyb2xgIHdpdGggYW4gaW5kaXZpZHVhbCBpbnB1dCBib3ggZm9yIGVhY2ggY2hhcmFjdGVyLCBzdWl0YWJsZSBmb3IgZml4ZWQtbGVuZ3RoIGZpZWxkcyxcclxuICogc3VjaCBhcyBzZWNvbmRhcnkgUElOIGlucHV0cywgVEZOcywgb3IgQlNCIGNvZGUgZXRjLlxyXG4gKlxyXG4gKiBBY2Nlc3NpYmlsaXR5IGZlYXR1cmVzIGFyZSBub3QgeWV0IGZ1bGx5IGltcGxlbWVudGVkLlxyXG4gKlxyXG4gKiBFeGFtcGxlOlxyXG4gKlxyXG4gKiBgYGBodG1sXHJcbiAqIDxtYXQtZm9ybS1maWVsZD5cclxuICogICA8YnVpLWRpc2NyZXRlLWlucHV0PjwvYnVpLWRpc2NyZXRlLWlucHV0PlxyXG4gKiA8L21hdC1mb3JtLWZpZWxkPlxyXG4gKiBgYGBcclxuICpcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnYnVpLWRpc2NyZXRlLWlucHV0JyxcclxuXHR0ZW1wbGF0ZVVybDogJ2Rpc2NyZXRlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnZGlzY3JldGUtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcclxuXHRwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE1hdEZvcm1GaWVsZENvbnRyb2wsIHVzZUV4aXN0aW5nOiBEaXNjcmV0ZUlucHV0Q29tcG9uZW50IH1dLFxyXG5cdGhvc3Q6IHtcclxuXHRcdGNsYXNzOiAnYnVpLWRpc2NyZXRlLWlucHV0IGJ1aS1ob3N0J1xyXG5cdH1cclxufSlcclxuZXhwb3J0IGNsYXNzIERpc2NyZXRlSW5wdXRDb21wb25lbnRcclxuXHRleHRlbmRzIF9EaXNjcmV0ZUlucHV0QmFzZVxyXG5cdGltcGxlbWVudHMgTWF0Rm9ybUZpZWxkQ29udHJvbDxzdHJpbmc+LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95XHJcbntcclxuXHQvKiogQGlnbm9yZSAqL1xyXG5cdHN0YXRpYyBuZXh0SWQgPSAwO1xyXG5cclxuXHQvKiogQGlnbm9yZSAqL1xyXG5cdHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9kaXNhYmxlZDogYm9vbGVhbiB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XHJcblx0LyoqIEBpZ25vcmUgKi9cclxuXHRzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfcmVxdWlyZWQ6IGJvb2xlYW4gfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xyXG5cclxuXHQvKiogQGlnbm9yZSAqLyBwYXJ0czogVW50eXBlZEZvcm1BcnJheTtcclxuXHQvKiogQGlnbm9yZSAqLyBncm91cDogVW50eXBlZEZvcm1Hcm91cDtcclxuXHQvKiogRW1pdHMgd2hlbmV2ZXIgdGhlIGNvbXBvbmVudCBzdGF0ZSBjaGFuZ2VzLiAqL1xyXG5cdHN0YXRlQ2hhbmdlczogU3ViamVjdDx2b2lkPjtcclxuXHQvKiogV2hldGhlciB0aGUgY29udHJvbCBpcyBmb2N1c2VkLiAqL1xyXG5cdGZvY3VzZWQ6IGJvb2xlYW47XHJcblxyXG5cdC8qKiBUaGUgdHlwZSBvZiBpbnB1dCBib3hlcyAqL1xyXG5cdEBJbnB1dCgpXHJcblx0dHlwZTogJ3RleHQnIHwgJ251bWJlcicgfCAncGFzc3dvcmQnID0gJ3RleHQnO1xyXG5cclxuXHQvKiogSW5wdXQgYm94ZXMgYXJlIHNlcGFyYXRlZCBpbiBncm91cHMuIFRoaXMgc3BlY2lmaWVzIHRoZSBjaGFyYWN0ZXJzIGRpc3BsYXllZCBiZXR3ZWVuIHR3byBncm91cHMuICovXHJcblx0QElucHV0KClcclxuXHRzZXBhcmF0b3IgPSAnICc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgbGlzdCBvZiBjaGFyYWN0ZXJzIGFjY2VwdGVkIGluIHRoZSBpbnB1dHMsIGZvciBleGFtcGxlIGAwLTlgLCBgYS16QS1aMC05YFxyXG5cdCAqIEBleGFtcGxlICcwLTknXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRhY2NlcHQ/OiBzdHJpbmc7XHJcblxyXG5cdC8qKiBAaWdub3JlICovIGlkID0gYGJ1aS1kaXNjcmV0ZS1pbnB1dC0ke0Rpc2NyZXRlSW5wdXRDb21wb25lbnQubmV4dElkKyt9YDtcclxuXHJcblx0LyoqIFZhbHVlIG9mIGFyaWEtZGVzY3JpYmVkYnkgdGhhdCBzaG91bGQgYmUgbWVyZ2VkIHdpdGggdGhlIGRlc2NyaWJlZC1ieSBpZHMgd2hpY2ggYXJlIHNldCBieSB0aGUgZm9ybS1maWVsZC4gKi9cclxuXHRASW5wdXQoJ2FyaWEtZGVzY3JpYmVkYnknKSB1c2VyQXJpYURlc2NyaWJlZEJ5Pzogc3RyaW5nO1xyXG5cclxuXHRAVmlld0NoaWxkcmVuKCdwYXJ0JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIHByaXZhdGUgaW5wdXRQYXJ0cyE6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+PjtcclxuXHJcblx0LyoqQGlnbm9yZSAqL1xyXG5cdF9mb3JtRmllbGQ6IE1hdEZvcm1GaWVsZDtcclxuXHJcblx0LyoqQGlnbm9yZSAqL1xyXG5cdG5nQ29udHJvbDogTmdDb250cm9sO1xyXG5cclxuXHRASW5wdXQoKVxyXG5cdGF1dG9jb21wbGV0ZT86IHN0cmluZyA9ICdvZmYnO1xyXG5cclxuXHRwcml2YXRlIF9zaXplU3BlYzogbnVtYmVyW10gPSBbXTtcclxuXHJcblx0cHJpdmF0ZSBfcmVxdWlyZWQgPSBmYWxzZTtcclxuXHJcblx0cHJpdmF0ZSBfcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcblx0cHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcclxuXHRwcml2YXRlIF9zZXBhcmF0b3JQb3M6IG51bWJlcltdID0gW107XHJcblxyXG5cdC8qKiBAaWdub3JlICovIG9uQ2hhbmdlID0gKF86IGFueSkgPT4ge307XHJcblx0LyoqIEBpZ25vcmUgKi8gb25Ub3VjaGVkID0gKCkgPT4ge307XHJcblxyXG5cdC8qKiBAaWdub3JlICovXHJcblx0Z2V0IHNob3VsZExhYmVsRmxvYXQoKSB7XHJcblx0XHRyZXR1cm4gdHJ1ZTtcclxuXHR9XHJcblxyXG5cdC8qKiBAaWdub3JlICovXHJcblx0Z2V0IGVtcHR5KCkge1xyXG5cdFx0cmV0dXJuIHRoaXMucGFydHMuY29udHJvbHMuZXZlcnkoYyA9PiAhYy52YWx1ZSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEZWZpbmVzIHRoZSBsZW5ndGggYW5kIGdyb3VwaW5nIG9mIHRoZSBpbnB1dC5cclxuXHQgKiBAZGVmYXVsdCBbMiwgMiwgMl1cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdGdldCBzaXplU3BlYygpOiBudW1iZXJbXSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fc2l6ZVNwZWM7XHJcblx0fVxyXG5cdHNldCBzaXplU3BlYyhzcGVjOiBudW1iZXJbXSkge1xyXG5cdFx0bGV0IHNpemUgPSAwO1xyXG5cdFx0dGhpcy5fc2VwYXJhdG9yUG9zID0gW107XHJcblx0XHRzcGVjLmZvckVhY2goKG4sIGkpID0+IHtcclxuXHRcdFx0c2l6ZSArPSBuO1xyXG5cdFx0XHRpZiAoaSA8IHNwZWMubGVuZ3RoIC0gMSkge1xyXG5cdFx0XHRcdHRoaXMuX3NlcGFyYXRvclBvcy5wdXNoKHNpemUpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHRcdGlmIChzaXplICE9PSB0aGlzLnBhcnRzLmxlbmd0aCkge1xyXG5cdFx0XHRjb25zdCB2ID0gdGhpcy52YWx1ZTtcclxuXHRcdFx0dGhpcy5wYXJ0cy5jbGVhcih7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XHJcblx0XHRcdFx0dGhpcy5wYXJ0cy5zZXRDb250cm9sKFxyXG5cdFx0XHRcdFx0aSxcclxuXHRcdFx0XHRcdG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wobnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDEpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxKV0pXHJcblx0XHRcdFx0KTtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLnZhbHVlID0gdjtcclxuXHRcdFx0dGhpcy5fc2l6ZVNwZWMgPSBzcGVjO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqIFRoZSBwbGFjZWhvbGRlciBmb3IgdGhpcyBjb250cm9sLiAqL1xyXG5cdEBJbnB1dCgpXHJcblx0Z2V0IHBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXIhO1xyXG5cdH1cclxuXHRzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZykge1xyXG5cdFx0dGhpcy5fcGxhY2Vob2xkZXIgPSB2YWx1ZTtcclxuXHRcdHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuXHR9XHJcblxyXG5cdC8qKiBXaGV0aGVyIHRoZSBjb250cm9sIGlzIHJlcXVpcmVkLiAqL1xyXG5cdEBJbnB1dCgpXHJcblx0Z2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xyXG5cdH1cclxuXHRzZXQgcmVxdWlyZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuXHRcdHRoaXMuX3JlcXVpcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuXHRcdHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuXHR9XHJcblxyXG5cdC8qKiBXaGV0aGVyIHRoZSBjb250cm9sIGlzIGRpc2FibGVkLiAqL1xyXG5cdEBJbnB1dCgpXHJcblx0Z2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xyXG5cdH1cclxuXHRzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuXHRcdHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuXHRcdHRoaXMuX2Rpc2FibGVkID8gdGhpcy5wYXJ0cy5kaXNhYmxlKCkgOiB0aGlzLnBhcnRzLmVuYWJsZSgpO1xyXG5cdFx0dGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG5cdH1cclxuXHJcblx0LyoqIFRoZSB2YWx1ZSBvZiB0aGUgY29udHJvbC4gKi9cclxuXHRASW5wdXQoKVxyXG5cdGdldCB2YWx1ZSgpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIHRoaXMucGFydHMuY29udHJvbHNcclxuXHRcdFx0Lm1hcChjID0+IGMudmFsdWUpXHJcblx0XHRcdC5maWx0ZXIoYyA9PiBjKVxyXG5cdFx0XHQuam9pbignJyk7XHJcblx0fVxyXG5cdHNldCB2YWx1ZSh2OiBzdHJpbmcpIHtcclxuXHRcdHYgPSB2IHx8ICcnO1xyXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnBhcnRzLmNvbnRyb2xzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdHRoaXMucGFydHMuY29udHJvbHNbaV0/LnNldFZhbHVlKHZbaV0pO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG5cdH1cclxuXHJcblx0LyoqIEBpZ25vcmUgKi9cclxuXHRnZXQgX2NvbG9yU3VmZml4KCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gdGhpcy5lcnJvclN0YXRlID8gJ3dhcm4nIDogdGhpcy5fZm9ybUZpZWxkPy5jb2xvciB8fCAncHJpbWFyeSc7XHJcblx0fVxyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgX2ZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxyXG5cdFx0cHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXHJcblx0XHRAT3B0aW9uYWwoKSBASW5qZWN0KE1BVF9GT1JNX0ZJRUxEKSBmb3JtRmllbGQ6IE1hdEZvcm1GaWVsZCxcclxuXHRcdEBPcHRpb25hbCgpIEBTZWxmKCkgY29udHJvbDogTmdDb250cm9sLFxyXG5cdFx0QE9wdGlvbmFsKCkgX3BhcmVudEZvcm06IE5nRm9ybSxcclxuXHRcdEBPcHRpb25hbCgpIF9wYXJlbnRGb3JtR3JvdXA6IEZvcm1Hcm91cERpcmVjdGl2ZSxcclxuXHRcdF9kZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXI6IEVycm9yU3RhdGVNYXRjaGVyXHJcblx0KSB7XHJcblx0XHRzdXBlcihfZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyLCBfcGFyZW50Rm9ybSwgX3BhcmVudEZvcm1Hcm91cCwgY29udHJvbCk7XHJcblx0XHR0aGlzLnBhcnRzID0gbmV3IFVudHlwZWRGb3JtQXJyYXkoW10pO1xyXG5cdFx0dGhpcy5ncm91cCA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHsgcGFydHM6IHRoaXMucGFydHMgfSk7XHJcblx0XHR0aGlzLnNpemVTcGVjID0gWzIsIDIsIDJdO1xyXG5cdFx0dGhpcy5fZm9ybUZpZWxkID0gZm9ybUZpZWxkO1xyXG5cdFx0dGhpcy5mb2N1c2VkID0gZmFsc2U7XHJcblx0XHR0aGlzLnN0YXRlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG5cdFx0dGhpcy5uZ0NvbnRyb2wgPSBjb250cm9sO1xyXG5cdFx0aWYgKHRoaXMubmdDb250cm9sICE9IG51bGwpIHtcclxuXHRcdFx0dGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5fZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5fZWxlbWVudFJlZiwgdHJ1ZSkuc3Vic2NyaWJlKG9yaWdpbiA9PiB7XHJcblx0XHRcdGlmICh0aGlzLmZvY3VzZWQgJiYgIW9yaWdpbikge1xyXG5cdFx0XHRcdHRoaXMub25Ub3VjaGVkKCk7XHJcblx0XHRcdH1cclxuXHRcdFx0dGhpcy5mb2N1c2VkID0gISFvcmlnaW47XHJcblx0XHRcdHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqIEBpZ25vcmUgKi8gZXJyb3JTdGF0ZSA9IGZhbHNlO1xyXG5cdC8qKiBAaWdub3JlICovIGNvbnRyb2xUeXBlPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cdC8qKiBAaWdub3JlICovIGF1dG9maWxsZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xyXG5cclxuXHQvKiogQGlnbm9yZSAqL1xyXG5cdG5nT25EZXN0cm95KCkge1xyXG5cdFx0dGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKTtcclxuXHRcdHRoaXMuX2ZvY3VzTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLl9lbGVtZW50UmVmKTtcclxuXHR9XHJcblxyXG5cdC8qKiBAaWdub3JlICovXHJcblx0c2V0RGVzY3JpYmVkQnlJZHMoaWRzOiBzdHJpbmdbXSkge1xyXG5cdFx0Y29uc3QgY29udHJvbEVsZW1lbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmJ1aS1kaXNjcmV0ZS1pbnB1dC1jb250YWluZXInKTtcclxuXHRcdGNvbnRyb2xFbGVtZW50IS5zZXRBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknLCBpZHMuam9pbignICcpKTtcclxuXHR9XHJcblxyXG5cdC8qKiBAaWdub3JlICovXHJcblx0b25Db250YWluZXJDbGljaygpIHtcclxuXHRcdGNvbnN0IGwgPSB0aGlzLnBhcnRzLmNvbnRyb2xzLmxlbmd0aDtcclxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbDsgaSsrKSB7XHJcblx0XHRcdGlmICh0aGlzLnBhcnRzLmNvbnRyb2xzW2ldLmludmFsaWQgfHwgaSA9PT0gbCAtIDEpIHtcclxuXHRcdFx0XHR0aGlzLl9mb2N1c01vbml0b3IuZm9jdXNWaWEodGhpcy5pbnB1dFBhcnRzLmdldChpKSEsICdwcm9ncmFtJyk7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKiBAaWdub3JlICovXHJcblx0d3JpdGVWYWx1ZSh2OiBzdHJpbmcpOiB2b2lkIHtcclxuXHRcdHRoaXMudmFsdWUgPSB2O1xyXG5cdH1cclxuXHJcblx0LyoqIEBpZ25vcmUgKi9cclxuXHRyZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuXHRcdHRoaXMub25DaGFuZ2UgPSBmbjtcclxuXHR9XHJcblxyXG5cdC8qKiBAaWdub3JlICovXHJcblx0cmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG5cdFx0dGhpcy5vblRvdWNoZWQgPSBmbjtcclxuXHR9XHJcblxyXG5cdC8qKiBAaWdub3JlICovXHJcblx0c2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcblx0XHR0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuXHR9XHJcblxyXG5cdC8qKiBAaWdub3JlICovXHJcblx0X2hhbmRsZUlucHV0KGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgaW5kZXg6IG51bWJlciwgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcblx0XHRsZXQgdiA9IGNvbnRyb2wudmFsdWUgJiYgY29udHJvbC52YWx1ZVswXTtcclxuXHRcdGNvbnN0IHJhd1ZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcclxuXHRcdGlmIChyYXdWYWx1ZS5sZW5ndGggPiAxKSB7XHJcblx0XHRcdHRoaXMuX3JlcGxhY2VUZXh0KHJhd1ZhbHVlLCBldmVudCk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdGNvbnRyb2wuc2V0VmFsdWUodik7XHJcblx0XHRjb25zdCBuZXh0RWxlbWVudCA9IHRoaXMuaW5wdXRQYXJ0cy5nZXQoaW5kZXggKyAxKTtcclxuXHRcdGlmICghY29udHJvbC5lcnJvcnMgJiYgbmV4dEVsZW1lbnQpIHtcclxuXHRcdFx0dGhpcy5fZm9jdXNQYXJ0KG5leHRFbGVtZW50KTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG5cdH1cclxuXHJcblx0LyoqIEBpZ25vcmUgKi9cclxuXHRfaGFuZGxlQmVmb3JlSW5wdXQoaW5kZXg6IG51bWJlciwgZXZlbnQ6IElucHV0RXZlbnQpOiB2b2lkIHtcclxuXHRcdGNvbnN0IHYgPSBldmVudC5kYXRhO1xyXG5cdFx0aWYgKHRoaXMuYWNjZXB0ICYmIHYgJiYgIW5ldyBSZWdFeHAoYFske3RoaXMuYWNjZXB0fV1gKS50ZXN0KHYpKSB7XHJcblx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRjb25zdCBpbnAgPSB0aGlzLmlucHV0UGFydHMuZ2V0KGluZGV4KSEubmF0aXZlRWxlbWVudDtcclxuXHRcdGlmICh2ICYmIGlucC52YWx1ZSkge1xyXG5cdFx0XHRpbnAudmFsdWUgPSAnJztcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKiBAaWdub3JlICovXHJcblx0X2ZvY3VzUGFydChlbGVtUmVmOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+KSB7XHJcblx0XHR0aGlzLl9mb2N1c01vbml0b3IuZm9jdXNWaWEoZWxlbVJlZiwgJ3Byb2dyYW0nKTtcclxuXHR9XHJcblxyXG5cdC8qKiBAaWdub3JlICovXHJcblx0X2NvbnN1bWVLZXkoZXZlbnQ6IEV2ZW50KSB7XHJcblx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0fVxyXG5cclxuXHQvKiogQGlnbm9yZSAqL1xyXG5cdF9sZWZ0QXJyb3coaW5kZXg6IG51bWJlciwgZXZlbnQ6IEV2ZW50KSB7XHJcblx0XHR0aGlzLl9jb25zdW1lS2V5KGV2ZW50KTtcclxuXHRcdGNvbnN0IHByZXZFbGVtZW50ID0gdGhpcy5pbnB1dFBhcnRzLmdldChpbmRleCAtIDEpO1xyXG5cdFx0aWYgKHByZXZFbGVtZW50KSB7XHJcblx0XHRcdHRoaXMuX2ZvY3VzUGFydChwcmV2RWxlbWVudCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKiogQGlnbm9yZSAqL1xyXG5cdF9yaWdodEFycm93KGluZGV4OiBudW1iZXIsIGV2ZW50OiBFdmVudCkge1xyXG5cdFx0dGhpcy5fY29uc3VtZUtleShldmVudCk7XHJcblx0XHRjb25zdCBuZXh0RWxlbWVudCA9IHRoaXMuaW5wdXRQYXJ0cy5nZXQoaW5kZXggKyAxKTtcclxuXHRcdGlmIChuZXh0RWxlbWVudCkge1xyXG5cdFx0XHR0aGlzLl9mb2N1c1BhcnQobmV4dEVsZW1lbnQpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqIEBpZ25vcmUgKi9cclxuXHRfaGFuZGxlQmFja3NwYWNlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG5cdFx0Y29uc3QgcHJldkVsZW1lbnQgPSBpbmRleCAmJiB0aGlzLmlucHV0UGFydHMuZ2V0KGluZGV4IC0gMSk7XHJcblx0XHRpZiAoIWNvbnRyb2wudmFsdWUgJiYgcHJldkVsZW1lbnQpIHtcclxuXHRcdFx0dGhpcy5fZm9jdXNNb25pdG9yLmZvY3VzVmlhKHByZXZFbGVtZW50LCAncHJvZ3JhbScpO1xyXG5cdFx0fSBlbHNlIGlmIChjb250cm9sLnZhbHVlKSB7XHJcblx0XHRcdGNvbnRyb2wuc2V0VmFsdWUoJycpO1xyXG5cdFx0XHR0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqIEBpZ25vcmUgKi9cclxuXHRfb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpIHtcclxuXHRcdGxldCB0ZXh0ID0gZXZlbnQuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgndGV4dCcpO1xyXG5cdFx0dGhpcy5fcmVwbGFjZVRleHQodGV4dCwgZXZlbnQpO1xyXG5cdH1cclxuXHJcblx0LyoqIEBpZ25vcmUgKi9cclxuXHRfc2VwYXJhdG9yUmVxdWlyZWQoaW5kZXg6IG51bWJlcikge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3NlcGFyYXRvclBvcy5pbmNsdWRlcyhpbmRleCArIDEpO1xyXG5cdH1cclxuXHJcblx0LyoqIEBpZ25vcmUgKi9cclxuXHRfcGxhY2Vob2xkZXJBdChpbmRleDogbnVtYmVyKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXIgJiYgdGhpcy5fcGxhY2Vob2xkZXJbaW5kZXhdO1xyXG5cdH1cclxuXHJcblx0LyoqIEBpZ25vcmUgKi9cclxuXHRuZ0RvQ2hlY2soKSB7XHJcblx0XHRpZiAodGhpcy5uZ0NvbnRyb2wpIHtcclxuXHRcdFx0Ly8gV2UgbmVlZCB0byByZS1ldmFsdWF0ZSB0aGlzIG9uIGV2ZXJ5IGNoYW5nZSBkZXRlY3Rpb24gY3ljbGUsIGJlY2F1c2UgdGhlcmUgYXJlIHNvbWVcclxuXHRcdFx0Ly8gZXJyb3IgdHJpZ2dlcnMgdGhhdCB3ZSBjYW4ndCBzdWJzY3JpYmUgdG8gKGUuZy4gcGFyZW50IGZvcm0gc3VibWlzc2lvbnMpLiBUaGlzIG1lYW5zXHJcblx0XHRcdC8vIHRoYXQgd2hhdGV2ZXIgbG9naWMgaXMgaW4gaGVyZSBoYXMgdG8gYmUgc3VwZXIgbGVhbiBvciB3ZSByaXNrIGRlc3Ryb3lpbmcgdGhlIHBlcmZvcm1hbmNlLlxyXG5cdFx0XHR0aGlzLnVwZGF0ZUVycm9yU3RhdGUoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgX3JlcGxhY2VUZXh0KHRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZCwgZXZlbnQ6IEV2ZW50KSB7XHJcblx0XHRpZiAodGV4dCkge1xyXG5cdFx0XHRpZiAodGhpcy5hY2NlcHQpIHtcclxuXHRcdFx0XHR0ZXh0ID0gdGV4dC5yZXBsYWNlKG5ldyBSZWdFeHAoYFteJHt0aGlzLmFjY2VwdH1dYCwgJ2dpJyksICcnKTtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLnZhbHVlID0gdGV4dDtcclxuXHRcdFx0dGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuXHRcdH1cclxuXHJcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0dGhpcy5vbkNvbnRhaW5lckNsaWNrKCk7XHJcblx0fVxyXG59XHJcbiIsIjxkaXZcclxuXHRyb2xlPVwiZ3JvdXBcIlxyXG5cdGNsYXNzPVwiYnVpLWRpc2NyZXRlLWlucHV0LWNvbnRhaW5lclwiXHJcblx0W2Zvcm1Hcm91cF09XCJncm91cFwiXHJcblx0W2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIl9mb3JtRmllbGQ/LmdldExhYmVsSWQoKVwiXHJcbj5cclxuXHQ8bmctY29udGFpbmVyIFtmb3JtQXJyYXlOYW1lXT1cIidwYXJ0cydcIj5cclxuXHRcdDxuZy10ZW1wbGF0ZSBuZ0ZvciBbbmdGb3JPZl09XCJwYXJ0cy5jb250cm9sc1wiIGxldC1wIGxldC1pPVwiaW5kZXhcIj5cclxuXHRcdFx0PGlucHV0XHJcblx0XHRcdFx0Y2xhc3M9XCJidWktZGlzY3JldGUtaW5wdXQtZWxlbWVudCBidWktb3V0bGluZS17eyBfY29sb3JTdWZmaXggfX1cIlxyXG5cdFx0XHRcdFtmb3JtQ29udHJvbE5hbWVdPVwiaVwiXHJcblx0XHRcdFx0W2F0dHIuYXJpYS1sYWJlbF09XCInY2hhcmFjdGVyICcgKyAoaSArIDEpXCJcclxuXHRcdFx0XHQoaW5wdXQpPVwiX2hhbmRsZUlucHV0KHAsIGksICRldmVudClcIlxyXG5cdFx0XHRcdChiZWZvcmVpbnB1dCk9XCJfaGFuZGxlQmVmb3JlSW5wdXQoaSwgJGV2ZW50KVwiXHJcblx0XHRcdFx0KGtleWRvd24uYmFja3NwYWNlKT1cIl9oYW5kbGVCYWNrc3BhY2UocCwgaSlcIlxyXG5cdFx0XHRcdChrZXlkb3duLmFycm93dXApPVwiX2NvbnN1bWVLZXkoJGV2ZW50KVwiXHJcblx0XHRcdFx0KGtleWRvd24uYXJyb3dkb3duKT1cIl9jb25zdW1lS2V5KCRldmVudClcIlxyXG5cdFx0XHRcdChrZXlkb3duLmFycm93bGVmdCk9XCJfbGVmdEFycm93KGksICRldmVudClcIlxyXG5cdFx0XHRcdChrZXlkb3duLmFycm93cmlnaHQpPVwiX3JpZ2h0QXJyb3coaSwgJGV2ZW50KVwiXHJcblx0XHRcdFx0W2F0dHIucGxhY2Vob2xkZXJdPVwiX3BsYWNlaG9sZGVyQXQoaSlcIlxyXG5cdFx0XHRcdCNwYXJ0XHJcblx0XHRcdFx0KGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcblx0XHRcdFx0KHBhc3RlKT1cIl9vblBhc3RlKCRldmVudClcIlxyXG5cdFx0XHRcdFt0eXBlXT1cIlsndGV4dCcsICdudW1iZXInLCAncGFzc3dvcmQnXS5pbmNsdWRlcyh0eXBlKSA/IHR5cGUgOiAndGV4dCdcIlxyXG5cdFx0XHRcdFthdHRyLmlucHV0bW9kZV09XCJ0eXBlID09PSAnbnVtYmVyJyA/ICdkZWNpbWFsJyA6IHVuZGVmaW5lZFwiXHJcblx0XHRcdFx0YXV0b2NhcGl0YWxpemU9XCJub25lXCJcclxuXHRcdFx0Lz5cclxuXHRcdFx0PHNwYW4gKm5nSWY9XCJfc2VwYXJhdG9yUmVxdWlyZWQoaSlcIiBjbGFzcz1cImJ1aS1kaXNjcmV0ZS1pbnB1dC1zcGFjZXJcIj57eyBzZXBhcmF0b3IgfX08L3NwYW4+XHJcblx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdDwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { DiscreteInputComponent } from './discrete-input.component';
|
|
4
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
5
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
6
|
+
import { A11yModule } from '@angular/cdk/a11y';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class DiscreteInputModule {
|
|
9
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DiscreteInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
10
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: DiscreteInputModule, declarations: [DiscreteInputComponent], imports: [CommonModule, MatFormFieldModule, ReactiveFormsModule, A11yModule], exports: [DiscreteInputComponent] }); }
|
|
11
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DiscreteInputModule, imports: [CommonModule, MatFormFieldModule, ReactiveFormsModule, A11yModule] }); }
|
|
12
|
+
}
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DiscreteInputModule, decorators: [{
|
|
14
|
+
type: NgModule,
|
|
15
|
+
args: [{
|
|
16
|
+
declarations: [DiscreteInputComponent],
|
|
17
|
+
imports: [CommonModule, MatFormFieldModule, ReactiveFormsModule, A11yModule],
|
|
18
|
+
exports: [DiscreteInputComponent]
|
|
19
|
+
}]
|
|
20
|
+
}] });
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzY3JldGUtaW5wdXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvZGlzY3JldGUtaW5wdXQvZGlzY3JldGUtaW5wdXQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFPL0MsTUFBTSxPQUFPLG1CQUFtQjsrR0FBbkIsbUJBQW1CO2dIQUFuQixtQkFBbUIsaUJBSmhCLHNCQUFzQixhQUMzQixZQUFZLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxhQUNqRSxzQkFBc0I7Z0hBRXBCLG1CQUFtQixZQUhyQixZQUFZLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsVUFBVTs7NEZBRy9ELG1CQUFtQjtrQkFML0IsUUFBUTttQkFBQztvQkFDVCxZQUFZLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDdEMsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLFVBQVUsQ0FBQztvQkFDNUUsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ2pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRGlzY3JldGVJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZGlzY3JldGUtaW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG5cdGRlY2xhcmF0aW9uczogW0Rpc2NyZXRlSW5wdXRDb21wb25lbnRdLFxyXG5cdGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdEZvcm1GaWVsZE1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgQTExeU1vZHVsZV0sXHJcblx0ZXhwb3J0czogW0Rpc2NyZXRlSW5wdXRDb21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEaXNjcmV0ZUlucHV0TW9kdWxlIHt9XHJcbiJdfQ==
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { DiscreteInputModule } from './discrete-input.module';
|
|
2
2
|
export { DiscreteInputComponent } from './discrete-input.component';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL2Rpc2NyZXRlLWlucHV0L3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBEaXNjcmV0ZUlucHV0TW9kdWxlIH0gZnJvbSAnLi9kaXNjcmV0ZS1pbnB1dC5tb2R1bGUnO1xyXG5leHBvcnQgeyBEaXNjcmV0ZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9kaXNjcmV0ZS1pbnB1dC5jb21wb25lbnQnO1xyXG4iXX0=
|