@taiga-ui/kit 4.25.0-canary.123a46a → 4.25.0-canary.8d3be58
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/esm2022/components/input-number/input-number.component.mjs +7 -2
- package/esm2022/components/input-phone-international/input-phone-international.component.mjs +3 -3
- package/esm2022/pipes/filter-by-input/filter-by-input.pipe.mjs +1 -1
- package/fesm2022/taiga-ui-kit-components-input-number.mjs +6 -1
- package/fesm2022/taiga-ui-kit-components-input-number.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-input-phone-international.mjs +2 -2
- package/fesm2022/taiga-ui-kit-components-input-phone-international.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-pipes-filter-by-input.mjs.map +1 -1
- package/package.json +7 -7
- package/pipes/filter-by-input/filter-by-input.pipe.d.ts +1 -0
|
@@ -113,7 +113,12 @@ class TuiInputNumber extends TuiControl {
|
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
115
|
onStep(step) {
|
|
116
|
-
this.
|
|
116
|
+
const newValue = this.formatNumber(tuiClamp((this.value() ?? 0) + step, this.min(), this.max()));
|
|
117
|
+
if (this.value() === null) {
|
|
118
|
+
const caretIndex = newValue.length - this.postfix().length;
|
|
119
|
+
setTimeout(() => this.element.setSelectionRange(caretIndex, caretIndex));
|
|
120
|
+
}
|
|
121
|
+
this.textfieldValue.set(newValue);
|
|
117
122
|
}
|
|
118
123
|
formatNumber(value) {
|
|
119
124
|
if (value === null || Number.isNaN(value)) {
|
|
@@ -205,4 +210,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
205
210
|
type: Input,
|
|
206
211
|
args: ['step']
|
|
207
212
|
}] } });
|
|
208
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL2lucHV0LW51bWJlci9pbnB1dC1udW1iZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtbnVtYmVyL2lucHV0LW51bWJlci50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNyQyxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFbEQsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsNkJBQTZCLEVBQzdCLGtCQUFrQixHQUNyQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSx1QkFBdUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3hGLE9BQU8sRUFBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLHVCQUF1QixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDekYsT0FBTyxFQUFDLFVBQVUsRUFBRSx3QkFBd0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxlQUFlLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRSxPQUFPLEVBQUMsUUFBUSxFQUFFLGdCQUFnQixFQUFDLE1B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RUFBRSxnQkFBZ0IsQ0FBQyxRQUM5Qzt3QkFDRixZQUFZLEVBQUUsWUFBWTt3QkFDMUIsa0JBQWtCLEVBQUUsYUFBYTt3QkFDakMsa0JBQWtCLEVBQUUsYUFBYTt3QkFDakMsU0FBUyxFQUFFLG1DQUFtQzt3QkFDOUMsUUFBUSxFQUFFLFVBQVU7d0JBQ3BCLFNBQVMsRUFBRSxXQUFXO3dCQUN0QixxQkFBcUIsRUFBRSxpQkFBaUI7d0JBQ3hDLG1CQUFtQixFQUFFLGdCQUFnQjt3QkFDckMsdUJBQXVCLEVBQUUsUUFBUTtxQkFDcEM7OEJBeUZVLFNBQVM7c0JBRG5CLEtBQUs7dUJBQUMsS0FBSztnQkFNRCxTQUFTO3NCQURuQixLQUFLO3VCQUFDLEtBQUs7Z0JBT0QsWUFBWTtzQkFEdEIsS0FBSzt1QkFBQyxRQUFRO2dCQU9KLGFBQWE7c0JBRHZCLEtBQUs7dUJBQUMsU0FBUztnQkFPTCxVQUFVO3NCQURwQixLQUFLO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nSWZ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBjb21wdXRlZCxcbiAgICBlZmZlY3QsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIHNpZ25hbCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3RvU2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge01hc2tpdG9EaXJlY3RpdmV9IGZyb20gJ0BtYXNraXRvL2FuZ3VsYXInO1xuaW1wb3J0IHR5cGUge01hc2tpdG9PcHRpb25zfSBmcm9tICdAbWFza2l0by9jb3JlJztcbmltcG9ydCB7bWFza2l0b0luaXRpYWxDYWxpYnJhdGlvblBsdWdpbn0gZnJvbSAnQG1hc2tpdG8vY29yZSc7XG5pbXBvcnQge1xuICAgIG1hc2tpdG9DYXJldEd1YXJkLFxuICAgIG1hc2tpdG9OdW1iZXJPcHRpb25zR2VuZXJhdG9yLFxuICAgIG1hc2tpdG9QYXJzZU51bWJlcixcbn0gZnJvbSAnQG1hc2tpdG8va2l0JztcbmltcG9ydCB7dHVpQXNDb250cm9sLCBUdWlDb250cm9sLCB0dWlWYWx1ZVRyYW5zZm9ybWVyRnJvbX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jbGFzc2VzJztcbmltcG9ydCB7Q0hBUl9IWVBIRU4sIENIQVJfTUlOVVMsIFRVSV9BTExPV19TSUdOQUxfV1JJVEVTfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NvbnN0YW50cyc7XG5pbXBvcnQge1RVSV9JU19JT1MsIHR1aUZhbGxiYWNrVmFsdWVQcm92aWRlcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay90b2tlbnMnO1xuaW1wb3J0IHt0dWlJbmplY3RFbGVtZW50LCB0dWlWYWx1ZUJpbmRpbmd9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvZG9tJztcbmltcG9ydCB7dHVpQ2xhbXAsIHR1aUlzU2FmZVRvUm91bmR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWF0aCc7XG5pbXBvcnQge1R1aUJ1dHRvbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHtcbiAgICBUVUlfVEVYVEZJRUxEX09QVElPTlMsXG4gICAgVHVpVGV4dGZpZWxkQ29udGVudCxcbiAgICBUdWlXaXRoVGV4dGZpZWxkLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL3RleHRmaWVsZCc7XG5pbXBvcnQge1RVSV9ERUZBVUxUX05VTUJFUl9GT1JNQVQsIFRVSV9OVU1CRVJfRk9STUFUfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90b2tlbnMnO1xuaW1wb3J0IHt0dWlGb3JtYXROdW1iZXJ9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3V0aWxzL2Zvcm1hdCc7XG5pbXBvcnQge3R1aU1hc2tpdG99IGZyb20gJ0B0YWlnYS11aS9raXQvdXRpbHMnO1xuXG5pbXBvcnQge1RVSV9JTlBVVF9OVU1CRVJfT1BUSU9OU30gZnJvbSAnLi9pbnB1dC1udW1iZXIub3B0aW9ucyc7XG5cbmNvbnN0IERFRkFVTFRfTUFYX0xFTkdUSCA9IDE4O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnaW5wdXRbdHVpSW5wdXROdW1iZXJdJyxcbiAgICBpbXBvcnRzOiBbTmdJZiwgVHVpQnV0dG9uLCBUdWlUZXh0ZmllbGRDb250ZW50XSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtbnVtYmVyLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0LW51bWJlci5zdHlsZS5sZXNzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgdHVpQXNDb250cm9sKFR1aUlucHV0TnVtYmVyKSxcbiAgICAgICAgdHVpRmFsbGJhY2tWYWx1ZVByb3ZpZGVyKG51bGwpLFxuICAgICAgICB0dWlWYWx1ZVRyYW5zZm9ybWVyRnJvbShUVUlfSU5QVVRfTlVNQkVSX09QVElPTlMpLFxuICAgIF0sXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtUdWlXaXRoVGV4dGZpZWxkLCBNYXNraXRvRGlyZWN0aXZlXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbZGlzYWJsZWRdJzogJ2Rpc2FibGVkKCknLFxuICAgICAgICAnW2F0dHIuaW5wdXRNb2RlXSc6ICdpbnB1dE1vZGUoKScsXG4gICAgICAgICdbYXR0ci5tYXhMZW5ndGhdJzogJ21heExlbmd0aCgpJyxcbiAgICAgICAgJyhpbnB1dCknOiAndGV4dGZpZWxkVmFsdWUuc2V0KGVsZW1lbnQudmFsdWUpJyxcbiAgICAgICAgJyhibHVyKSc6ICdvbkJsdXIoKScsXG4gICAgICAgICcoZm9jdXMpJzogJ29uRm9jdXMoKScsXG4gICAgICAgICcoa2V5ZG93bi5hcnJvd0Rvd24pJzogJ29uU3RlcCgtc3RlcCgpKScsXG4gICAgICAgICcoa2V5ZG93bi5hcnJvd1VwKSc6ICdvblN0ZXAoc3RlcCgpKScsXG4gICAgICAgICdbY2xhc3MuX3dpdGgtYnV0dG9uc10nOiAnc3RlcCgpJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dE51bWJlciBleHRlbmRzIFR1aUNvbnRyb2w8bnVtYmVyIHwgbnVsbD4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaXNJT1MgPSBpbmplY3QoVFVJX0lTX0lPUyk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBudW1iZXJGb3JtYXQgPSB0b1NpZ25hbChpbmplY3QoVFVJX05VTUJFUl9GT1JNQVQpLCB7XG4gICAgICAgIGluaXRpYWxWYWx1ZTogVFVJX0RFRkFVTFRfTlVNQkVSX0ZPUk1BVCxcbiAgICB9KTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJlY2lzaW9uID0gY29tcHV0ZWQoKCkgPT5cbiAgICAgICAgTnVtYmVyLmlzTmFOKHRoaXMubnVtYmVyRm9ybWF0KCkucHJlY2lzaW9uKSA/IDIgOiB0aGlzLm51bWJlckZvcm1hdCgpLnByZWNpc2lvbixcbiAgICApO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBpc0ludGVybWVkaWF0ZVN0YXRlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IG1hc2tpdG9QYXJzZU51bWJlcihcbiAgICAgICAgICAgIHRoaXMudGV4dGZpZWxkVmFsdWUoKSxcbiAgICAgICAgICAgIHRoaXMubnVtYmVyRm9ybWF0KCkuZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gdmFsdWUgPCAwID8gdmFsdWUgPiB0aGlzLm1heCgpIDogdmFsdWUgPCB0aGlzLm1pbigpO1xuICAgIH0pO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG9uQ2hhbmdlRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBtYXNraXRvUGFyc2VOdW1iZXIoXG4gICAgICAgICAgICB0aGlzLnRleHRmaWVsZFZhbHVlKCksXG4gICAgICAgICAgICB0aGlzLm51bWJlckZvcm1hdCgpLmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKE51bWJlci5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuaXNJbnRlcm1lZGlhdGVTdGF0ZSgpIHx8XG4gICAgICAgICAgICB2YWx1ZSA8IHRoaXMubWluKCkgfHxcbiAgICAgICAgICAgIHZhbHVlID4gdGhpcy5tYXgoKSB8fFxuICAgICAgICAgICAgdGhpcy52YWx1ZSgpID09PSB2YWx1ZVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgIH0sIFRVSV9BTExPV19TSUdOQUxfV1JJVEVTKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBvcHRpb25zID0gaW5qZWN0KFRVSV9JTlBVVF9OVU1CRVJfT1BUSU9OUyk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG1pbiA9IHNpZ25hbCh0aGlzLm9wdGlvbnMubWluKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWF4ID0gc2lnbmFsKHRoaXMub3B0aW9ucy5tYXgpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzdGVwID0gc2lnbmFsKHRoaXMub3B0aW9ucy5zdGVwKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcHJlZml4ID0gc2lnbmFsKHRoaXMub3B0aW9ucy5wcmVmaXgpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBwb3N0Zml4ID0gc2lnbmFsKHRoaXMub3B0aW9ucy5wb3N0Zml4KTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGV4dGZpZWxkT3B0aW9ucyA9IGluamVjdChUVUlfVEVYVEZJRUxEX09QVElPTlMpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBlbGVtZW50ID0gdHVpSW5qZWN0RWxlbWVudDxIVE1MSW5wdXRFbGVtZW50PigpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSB0ZXh0ZmllbGRWYWx1ZSA9IHR1aVZhbHVlQmluZGluZygpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlucHV0TW9kZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNJT1MgJiYgdGhpcy5taW4oKSA8IDApIHtcbiAgICAgICAgICAgIC8vIGlQaG9uZSBkb2VzIG5vdCBoYXZlIG1pbnVzIHNpZ24gaWYgaW5wdXRNb2RlIGlzIGVxdWFsIHRvICdudW1lcmljJyAvICdkZWNpbWFsJ1xuICAgICAgICAgICAgcmV0dXJuICd0ZXh0JztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnByZWNpc2lvbigpID8gJ2RlY2ltYWwnIDogJ251bWVyaWMnO1xuICAgIH0pO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG1heExlbmd0aCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3Qge2RlY2ltYWxTZXBhcmF0b3IsIHRob3VzYW5kU2VwYXJhdG9yfSA9IHRoaXMubnVtYmVyRm9ybWF0KCk7XG4gICAgICAgIGNvbnN0IGRlY2ltYWxQYXJ0ID1cbiAgICAgICAgICAgICEhdGhpcy5wcmVjaXNpb24oKSAmJiB0aGlzLnRleHRmaWVsZFZhbHVlKCkuaW5jbHVkZXMoZGVjaW1hbFNlcGFyYXRvcik7XG4gICAgICAgIGNvbnN0IHByZWNpc2lvbiA9IGRlY2ltYWxQYXJ0ID8gTWF0aC5taW4odGhpcy5wcmVjaXNpb24oKSArIDEsIDIwKSA6IDA7XG4gICAgICAgIGNvbnN0IHRha2VUaG91c2FuZCA9IHRob3VzYW5kU2VwYXJhdG9yLnJlcGVhdCg1KS5sZW5ndGg7XG5cbiAgICAgICAgcmV0dXJuIERFRkFVTFRfTUFYX0xFTkdUSCArIHByZWNpc2lvbiArIHRha2VUaG91c2FuZDtcbiAgICB9KTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBtYXNrID0gdHVpTWFza2l0byhcbiAgICAgICAgY29tcHV0ZWQoKHtkZWNpbWFsTW9kZSwgLi4ubnVtYmVyRm9ybWF0fSA9IHRoaXMubnVtYmVyRm9ybWF0KCkpID0+XG4gICAgICAgICAgICB0aGlzLmNvbXB1dGVNYXNrKHtcbiAgICAgICAgICAgICAgICAuLi5udW1iZXJGb3JtYXQsXG4gICAgICAgICAgICAgICAgcHJlY2lzaW9uOiB0aGlzLnByZWNpc2lvbigpLFxuICAgICAgICAgICAgICAgIG1pbjogdGhpcy5taW4oKSxcbiAgICAgICAgICAgICAgICBtYXg6IHRoaXMubWF4KCksXG4gICAgICAgICAgICAgICAgcHJlZml4OiB0aGlzLnByZWZpeCgpLFxuICAgICAgICAgICAgICAgIHBvc3RmaXg6IHRoaXMucG9zdGZpeCgpLFxuICAgICAgICAgICAgICAgIGRlY2ltYWxaZXJvUGFkZGluZzogZGVjaW1hbE1vZGUgPT09ICdhbHdheXMnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgKTtcblxuICAgIEBJbnB1dCgnbWluJylcbiAgICBwdWJsaWMgc2V0IG1pblNldHRlcih4OiBudW1iZXIgfCBudWxsKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTWluTWF4TGltaXRzKHgsIHRoaXMubWF4KCkpO1xuICAgIH1cblxuICAgIEBJbnB1dCgnbWF4JylcbiAgICBwdWJsaWMgc2V0IG1heFNldHRlcih4OiBudW1iZXIgfCBudWxsKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTWluTWF4TGltaXRzKHRoaXMubWluKCksIHgpO1xuICAgIH1cblxuICAgIC8vIFRPRE8odjUpOiByZXBsYWNlIHdpdGggc2lnbmFsIGlucHV0XG4gICAgQElucHV0KCdwcmVmaXgnKVxuICAgIHB1YmxpYyBzZXQgcHJlZml4U2V0dGVyKHg6IHN0cmluZykge1xuICAgICAgICB0aGlzLnByZWZpeC5zZXQoeCk7XG4gICAgfVxuXG4gICAgLy8gVE9ETyh2NSk6IHJlcGxhY2Ugd2l0aCBzaWduYWwgaW5wdXRcbiAgICBASW5wdXQoJ3Bvc3RmaXgnKVxuICAgIHB1YmxpYyBzZXQgcG9zdGZpeFNldHRlcih4OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5wb3N0Zml4LnNldCh4KTtcbiAgICB9XG5cbiAgICAvLyBUT0RPKHY1KTogcmVwbGFjZSB3aXRoIHNpZ25hbCBpbnB1dFxuICAgIEBJbnB1dCgnc3RlcCcpXG4gICAgcHVibGljIHNldCBzdGVwU2V0dGVyKHg6IG51bWJlcikge1xuICAgICAgICB0aGlzLnN0ZXAuc2V0KHgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLndyaXRlVmFsdWUoTnVtYmVyLmlzTmFOKHZhbHVlKSA/IG51bGwgOiB2YWx1ZSk7XG4gICAgICAgIHRoaXMudGV4dGZpZWxkVmFsdWUuc2V0KHRoaXMuZm9ybWF0TnVtYmVyKHRoaXMudmFsdWUoKSkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkJsdXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzSW50ZXJtZWRpYXRlU3RhdGUoKSkge1xuICAgICAgICAgICAgdGhpcy50ZXh0ZmllbGRWYWx1ZS5zZXQodGhpcy5mb3JtYXROdW1iZXIodGhpcy52YWx1ZSgpKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Gb2N1cygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBtYXNraXRvUGFyc2VOdW1iZXIoXG4gICAgICAgICAgICB0aGlzLnRleHRmaWVsZFZhbHVlKCksXG4gICAgICAgICAgICB0aGlzLm51bWJlckZvcm1hdCgpLmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKE51bWJlci5pc05hTih2YWx1ZSkgJiYgIXRoaXMucmVhZE9ubHkoKSkge1xuICAgICAgICAgICAgdGhpcy50ZXh0ZmllbGRWYWx1ZS5zZXQodGhpcy5wcmVmaXgoKSArIHRoaXMucG9zdGZpeCgpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblN0ZXAoc3RlcDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGV4dGZpZWxkVmFsdWUuc2V0KFxuICAgICAgICAgICAgdGhpcy5mb3JtYXROdW1iZXIoXG4gICAgICAgICAgICAgICAgdHVpQ2xhbXAoKHRoaXMudmFsdWUoKSA/PyAwKSArIHN0ZXAsIHRoaXMubWluKCksIHRoaXMubWF4KCkpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvcm1hdE51bWJlcih2YWx1ZTogbnVtYmVyIHwgbnVsbCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCBOdW1iZXIuaXNOYU4odmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5wcmVmaXgoKSArXG4gICAgICAgICAgICB0dWlGb3JtYXROdW1iZXIodmFsdWUsIHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLm51bWJlckZvcm1hdCgpLFxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIE51bWJlciBjYW4gc2F0aXNmeSBpbnRlcnZhbCBbTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVI7IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSXVxuICAgICAgICAgICAgICAgICAqIGJ1dCBpdHMgcm91bmRpbmcgY2FuIHZpb2xhdGUgaXQuXG4gICAgICAgICAgICAgICAgICogQmVmb3JlIEJpZ0ludCBzdXBwb3J0IHRoZXJlIGlzIG5vIHBlcmZlY3Qgc29sdXRpb24g4oCTIG9ubHkgdHJhZGUgb2ZmLlxuICAgICAgICAgICAgICAgICAqIE5vIHJvdW5kaW5nIGlzIGJldHRlciB0aGFuIGxvc2UgcHJlY2lzaW9uIGFuZCBpbmNvcnJlY3QgbXV0YXRpb24gb2YgYWxyZWFkeSB2YWxpZCB2YWx1ZS5cbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICBwcmVjaXNpb246IHR1aUlzU2FmZVRvUm91bmQodmFsdWUsIHRoaXMucHJlY2lzaW9uKCkpXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5wcmVjaXNpb24oKVxuICAgICAgICAgICAgICAgICAgICA6IEluZmluaXR5LFxuICAgICAgICAgICAgfSkucmVwbGFjZShDSEFSX0hZUEhFTiwgQ0hBUl9NSU5VUykgK1xuICAgICAgICAgICAgdGhpcy5wb3N0Zml4KClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZU1pbk1heExpbWl0cyhcbiAgICAgICAgbnVsbGFibGVNaW46IG51bWJlciB8IG51bGwsXG4gICAgICAgIG51bGxhYmxlTWF4OiBudW1iZXIgfCBudWxsLFxuICAgICk6IHZvaWQge1xuICAgICAgICBjb25zdCBtaW4gPVxuICAgICAgICAgICAgdGhpcy50cmFuc2Zvcm1lcj8uZnJvbUNvbnRyb2xWYWx1ZShudWxsYWJsZU1pbikgPz9cbiAgICAgICAgICAgIG51bGxhYmxlTWluID8/XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMubWluO1xuICAgICAgICBjb25zdCBtYXggPVxuICAgICAgICAgICAgdGhpcy50cmFuc2Zvcm1lcj8uZnJvbUNvbnRyb2xWYWx1ZShudWxsYWJsZU1heCkgPz9cbiAgICAgICAgICAgIG51bGxhYmxlTWF4ID8/XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMubWF4O1xuXG4gICAgICAgIHRoaXMubWluLnNldChNYXRoLm1pbihtaW4sIG1heCkpO1xuICAgICAgICB0aGlzLm1heC5zZXQoTWF0aC5tYXgobWluLCBtYXgpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXB1dGVNYXNrKFxuICAgICAgICBwYXJhbXM6IE5vbk51bGxhYmxlPFBhcmFtZXRlcnM8dHlwZW9mIG1hc2tpdG9OdW1iZXJPcHRpb25zR2VuZXJhdG9yPlswXT4sXG4gICAgKTogTWFza2l0b09wdGlvbnMge1xuICAgICAgICBjb25zdCB7cHJlZml4ID0gJycsIHBvc3RmaXggPSAnJ30gPSBwYXJhbXM7XG4gICAgICAgIGNvbnN0IHtwbHVnaW5zLCAuLi5vcHRpb25zfSA9IG1hc2tpdG9OdW1iZXJPcHRpb25zR2VuZXJhdG9yKHBhcmFtcyk7XG4gICAgICAgIGNvbnN0IGluaXRpYWxDYWxpYnJhdGlvblBsdWdpbiA9IG1hc2tpdG9Jbml0aWFsQ2FsaWJyYXRpb25QbHVnaW4oXG4gICAgICAgICAgICBtYXNraXRvTnVtYmVyT3B0aW9uc0dlbmVyYXRvcih7XG4gICAgICAgICAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICAgICAgICAgIG1pbjogTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsXG4gICAgICAgICAgICAgICAgbWF4OiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgcGx1Z2luczogW1xuICAgICAgICAgICAgICAgIC4uLnBsdWdpbnMsXG4gICAgICAgICAgICAgICAgaW5pdGlhbENhbGlicmF0aW9uUGx1Z2luLFxuICAgICAgICAgICAgICAgIG1hc2tpdG9DYXJldEd1YXJkKCh2YWx1ZSkgPT4gW1xuICAgICAgICAgICAgICAgICAgICBwcmVmaXgubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZS5sZW5ndGggLSBwb3N0Zml4Lmxlbmd0aCxcbiAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH07XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqdHVpVGV4dGZpZWxkQ29udGVudD5cbiAgICA8c2VjdGlvblxuICAgICAgICAqbmdJZj1cInN0ZXAoKVwiXG4gICAgICAgIGNsYXNzPVwidC1pbnB1dC1udW1iZXItYnV0dG9uc1wiXG4gICAgPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgIHR1aUljb25CdXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LWJ1dHRvblwiXG4gICAgICAgICAgICBbYXBwZWFyYW5jZV09XCJ0ZXh0ZmllbGRPcHRpb25zLmFwcGVhcmFuY2UoKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWludGVyYWN0aXZlKCkgfHwgdmFsdWUoKSEgPj0gbWF4KClcIlxuICAgICAgICAgICAgW2ljb25TdGFydF09XCJvcHRpb25zLmljb25zLmluY3JlYXNlXCJcbiAgICAgICAgICAgIChjbGljay5wcmV2ZW50KT1cIm9uU3RlcChzdGVwKCkpXCJcbiAgICAgICAgICAgIChtb3VzZWRvd24ucHJldmVudCk9XCJlbGVtZW50LmZvY3VzKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICArXG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cInQtYnV0dG9uXCJcbiAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cInRleHRmaWVsZE9wdGlvbnMuYXBwZWFyYW5jZSgpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaW50ZXJhY3RpdmUoKSB8fCB2YWx1ZSgpISA8PSBtaW4oKVwiXG4gICAgICAgICAgICBbaWNvblN0YXJ0XT1cIm9wdGlvbnMuaWNvbnMuZGVjcmVhc2VcIlxuICAgICAgICAgICAgKGNsaWNrLnByZXZlbnQpPVwib25TdGVwKC1zdGVwKCkpXCJcbiAgICAgICAgICAgIChtb3VzZWRvd24ucHJldmVudCk9XCJlbGVtZW50LmZvY3VzKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICAtXG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvc2VjdGlvbj5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
213
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL2lucHV0LW51bWJlci9pbnB1dC1udW1iZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtbnVtYmVyL2lucHV0LW51bWJlci50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNyQyxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFbEQsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsNkJBQTZCLEVBQzdCLGtCQUFrQixHQUNyQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSx1QkFBdUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3hGLE9BQU8sRUFBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLHVCQUF1QixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDekYsT0FBTyxFQUFDLFVBQVUsRUFBRSx3QkFBd0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxlQUFlLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRSxPQUFPLEVBQUMsUUFBUSxFQUFFLGdCQUFnQixFQUFDLE1B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QUFjOzRGQUFkLGNBQWM7a0JBMUIxQixTQUFTO2lDQUNNLElBQUksWUFDTix1QkFBdUIsV0FDeEIsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixDQUFDLGlCQUdoQyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNQLFlBQVksZ0JBQWdCO3dCQUM1Qix3QkFBd0IsQ0FBQyxJQUFJLENBQUM7d0JBQzlCLHVCQUF1QixDQUFDLHdCQUF3QixDQUFDO3FCQUNwRCxrQkFDZSxDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLFFBQzlDO3dCQUNGLFlBQVksRUFBRSxZQUFZO3dCQUMxQixrQkFBa0IsRUFBRSxhQUFhO3dCQUNqQyxrQkFBa0IsRUFBRSxhQUFhO3dCQUNqQyxTQUFTLEVBQUUsbUNBQW1DO3dCQUM5QyxRQUFRLEVBQUUsVUFBVTt3QkFDcEIsU0FBUyxFQUFFLFdBQVc7d0JBQ3RCLHFCQUFxQixFQUFFLGlCQUFpQjt3QkFDeEMsbUJBQW1CLEVBQUUsZ0JBQWdCO3dCQUNyQyx1QkFBdUIsRUFBRSxRQUFRO3FCQUNwQzs4QkF5RlUsU0FBUztzQkFEbkIsS0FBSzt1QkFBQyxLQUFLO2dCQU1ELFNBQVM7c0JBRG5CLEtBQUs7dUJBQUMsS0FBSztnQkFPRCxZQUFZO3NCQUR0QixLQUFLO3VCQUFDLFFBQVE7Z0JBT0osYUFBYTtzQkFEdkIsS0FBSzt1QkFBQyxTQUFTO2dCQU9MLFVBQVU7c0JBRHBCLEtBQUs7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdJZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIGNvbXB1dGVkLFxuICAgIGVmZmVjdCxcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgc2lnbmFsLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dG9TaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7TWFza2l0b0RpcmVjdGl2ZX0gZnJvbSAnQG1hc2tpdG8vYW5ndWxhcic7XG5pbXBvcnQgdHlwZSB7TWFza2l0b09wdGlvbnN9IGZyb20gJ0BtYXNraXRvL2NvcmUnO1xuaW1wb3J0IHttYXNraXRvSW5pdGlhbENhbGlicmF0aW9uUGx1Z2lufSBmcm9tICdAbWFza2l0by9jb3JlJztcbmltcG9ydCB7XG4gICAgbWFza2l0b0NhcmV0R3VhcmQsXG4gICAgbWFza2l0b051bWJlck9wdGlvbnNHZW5lcmF0b3IsXG4gICAgbWFza2l0b1BhcnNlTnVtYmVyLFxufSBmcm9tICdAbWFza2l0by9raXQnO1xuaW1wb3J0IHt0dWlBc0NvbnRyb2wsIFR1aUNvbnRyb2wsIHR1aVZhbHVlVHJhbnNmb3JtZXJGcm9tfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NsYXNzZXMnO1xuaW1wb3J0IHtDSEFSX0hZUEhFTiwgQ0hBUl9NSU5VUywgVFVJX0FMTE9XX1NJR05BTF9XUklURVN9IGZyb20gJ0B0YWlnYS11aS9jZGsvY29uc3RhbnRzJztcbmltcG9ydCB7VFVJX0lTX0lPUywgdHVpRmFsbGJhY2tWYWx1ZVByb3ZpZGVyfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3Rva2Vucyc7XG5pbXBvcnQge3R1aUluamVjdEVsZW1lbnQsIHR1aVZhbHVlQmluZGluZ30gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9kb20nO1xuaW1wb3J0IHt0dWlDbGFtcCwgdHVpSXNTYWZlVG9Sb3VuZH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9tYXRoJztcbmltcG9ydCB7VHVpQnV0dG9ufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQge1xuICAgIFRVSV9URVhURklFTERfT1BUSU9OUyxcbiAgICBUdWlUZXh0ZmllbGRDb250ZW50LFxuICAgIFR1aVdpdGhUZXh0ZmllbGQsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvdGV4dGZpZWxkJztcbmltcG9ydCB7VFVJX0RFRkFVTFRfTlVNQkVSX0ZPUk1BVCwgVFVJX05VTUJFUl9GT1JNQVR9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3Rva2Vucyc7XG5pbXBvcnQge3R1aUZvcm1hdE51bWJlcn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdXRpbHMvZm9ybWF0JztcbmltcG9ydCB7dHVpTWFza2l0b30gZnJvbSAnQHRhaWdhLXVpL2tpdC91dGlscyc7XG5cbmltcG9ydCB7VFVJX0lOUFVUX05VTUJFUl9PUFRJT05TfSBmcm9tICcuL2lucHV0LW51bWJlci5vcHRpb25zJztcblxuY29uc3QgREVGQVVMVF9NQVhfTEVOR1RIID0gMTg7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdpbnB1dFt0dWlJbnB1dE51bWJlcl0nLFxuICAgIGltcG9ydHM6IFtOZ0lmLCBUdWlCdXR0b24sIFR1aVRleHRmaWVsZENvbnRlbnRdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1udW1iZXIudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtbnVtYmVyLnN0eWxlLmxlc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB0dWlBc0NvbnRyb2woVHVpSW5wdXROdW1iZXIpLFxuICAgICAgICB0dWlGYWxsYmFja1ZhbHVlUHJvdmlkZXIobnVsbCksXG4gICAgICAgIHR1aVZhbHVlVHJhbnNmb3JtZXJGcm9tKFRVSV9JTlBVVF9OVU1CRVJfT1BUSU9OUyksXG4gICAgXSxcbiAgICBob3N0RGlyZWN0aXZlczogW1R1aVdpdGhUZXh0ZmllbGQsIE1hc2tpdG9EaXJlY3RpdmVdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tkaXNhYmxlZF0nOiAnZGlzYWJsZWQoKScsXG4gICAgICAgICdbYXR0ci5pbnB1dE1vZGVdJzogJ2lucHV0TW9kZSgpJyxcbiAgICAgICAgJ1thdHRyLm1heExlbmd0aF0nOiAnbWF4TGVuZ3RoKCknLFxuICAgICAgICAnKGlucHV0KSc6ICd0ZXh0ZmllbGRWYWx1ZS5zZXQoZWxlbWVudC52YWx1ZSknLFxuICAgICAgICAnKGJsdXIpJzogJ29uQmx1cigpJyxcbiAgICAgICAgJyhmb2N1cyknOiAnb25Gb2N1cygpJyxcbiAgICAgICAgJyhrZXlkb3duLmFycm93RG93biknOiAnb25TdGVwKC1zdGVwKCkpJyxcbiAgICAgICAgJyhrZXlkb3duLmFycm93VXApJzogJ29uU3RlcChzdGVwKCkpJyxcbiAgICAgICAgJ1tjbGFzcy5fd2l0aC1idXR0b25zXSc6ICdzdGVwKCknLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aUlucHV0TnVtYmVyIGV4dGVuZHMgVHVpQ29udHJvbDxudW1iZXIgfCBudWxsPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBpc0lPUyA9IGluamVjdChUVUlfSVNfSU9TKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG51bWJlckZvcm1hdCA9IHRvU2lnbmFsKGluamVjdChUVUlfTlVNQkVSX0ZPUk1BVCksIHtcbiAgICAgICAgaW5pdGlhbFZhbHVlOiBUVUlfREVGQVVMVF9OVU1CRVJfRk9STUFULFxuICAgIH0pO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcmVjaXNpb24gPSBjb21wdXRlZCgoKSA9PlxuICAgICAgICBOdW1iZXIuaXNOYU4odGhpcy5udW1iZXJGb3JtYXQoKS5wcmVjaXNpb24pID8gMiA6IHRoaXMubnVtYmVyRm9ybWF0KCkucHJlY2lzaW9uLFxuICAgICk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGlzSW50ZXJtZWRpYXRlU3RhdGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gbWFza2l0b1BhcnNlTnVtYmVyKFxuICAgICAgICAgICAgdGhpcy50ZXh0ZmllbGRWYWx1ZSgpLFxuICAgICAgICAgICAgdGhpcy5udW1iZXJGb3JtYXQoKS5kZWNpbWFsU2VwYXJhdG9yLFxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiB2YWx1ZSA8IDAgPyB2YWx1ZSA+IHRoaXMubWF4KCkgOiB2YWx1ZSA8IHRoaXMubWluKCk7XG4gICAgfSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgb25DaGFuZ2VFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IG1hc2tpdG9QYXJzZU51bWJlcihcbiAgICAgICAgICAgIHRoaXMudGV4dGZpZWxkVmFsdWUoKSxcbiAgICAgICAgICAgIHRoaXMubnVtYmVyRm9ybWF0KCkuZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5pc0ludGVybWVkaWF0ZVN0YXRlKCkgfHxcbiAgICAgICAgICAgIHZhbHVlIDwgdGhpcy5taW4oKSB8fFxuICAgICAgICAgICAgdmFsdWUgPiB0aGlzLm1heCgpIHx8XG4gICAgICAgICAgICB0aGlzLnZhbHVlKCkgPT09IHZhbHVlXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgfSwgVFVJX0FMTE9XX1NJR05BTF9XUklURVMpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wdGlvbnMgPSBpbmplY3QoVFVJX0lOUFVUX05VTUJFUl9PUFRJT05TKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWluID0gc2lnbmFsKHRoaXMub3B0aW9ucy5taW4pO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBtYXggPSBzaWduYWwodGhpcy5vcHRpb25zLm1heCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0ZXAgPSBzaWduYWwodGhpcy5vcHRpb25zLnN0ZXApO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBwcmVmaXggPSBzaWduYWwodGhpcy5vcHRpb25zLnByZWZpeCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHBvc3RmaXggPSBzaWduYWwodGhpcy5vcHRpb25zLnBvc3RmaXgpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSB0ZXh0ZmllbGRPcHRpb25zID0gaW5qZWN0KFRVSV9URVhURklFTERfT1BUSU9OUyk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGVsZW1lbnQgPSB0dWlJbmplY3RFbGVtZW50PEhUTUxJbnB1dEVsZW1lbnQ+KCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRleHRmaWVsZFZhbHVlID0gdHVpVmFsdWVCaW5kaW5nKCk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaW5wdXRNb2RlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc0lPUyAmJiB0aGlzLm1pbigpIDwgMCkge1xuICAgICAgICAgICAgLy8gaVBob25lIGRvZXMgbm90IGhhdmUgbWludXMgc2lnbiBpZiBpbnB1dE1vZGUgaXMgZXF1YWwgdG8gJ251bWVyaWMnIC8gJ2RlY2ltYWwnXG4gICAgICAgICAgICByZXR1cm4gJ3RleHQnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucHJlY2lzaW9uKCkgPyAnZGVjaW1hbCcgOiAnbnVtZXJpYyc7XG4gICAgfSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWF4TGVuZ3RoID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCB7ZGVjaW1hbFNlcGFyYXRvciwgdGhvdXNhbmRTZXBhcmF0b3J9ID0gdGhpcy5udW1iZXJGb3JtYXQoKTtcbiAgICAgICAgY29uc3QgZGVjaW1hbFBhcnQgPVxuICAgICAgICAgICAgISF0aGlzLnByZWNpc2lvbigpICYmIHRoaXMudGV4dGZpZWxkVmFsdWUoKS5pbmNsdWRlcyhkZWNpbWFsU2VwYXJhdG9yKTtcbiAgICAgICAgY29uc3QgcHJlY2lzaW9uID0gZGVjaW1hbFBhcnQgPyBNYXRoLm1pbih0aGlzLnByZWNpc2lvbigpICsgMSwgMjApIDogMDtcbiAgICAgICAgY29uc3QgdGFrZVRob3VzYW5kID0gdGhvdXNhbmRTZXBhcmF0b3IucmVwZWF0KDUpLmxlbmd0aDtcblxuICAgICAgICByZXR1cm4gREVGQVVMVF9NQVhfTEVOR1RIICsgcHJlY2lzaW9uICsgdGFrZVRob3VzYW5kO1xuICAgIH0pO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG1hc2sgPSB0dWlNYXNraXRvKFxuICAgICAgICBjb21wdXRlZCgoe2RlY2ltYWxNb2RlLCAuLi5udW1iZXJGb3JtYXR9ID0gdGhpcy5udW1iZXJGb3JtYXQoKSkgPT5cbiAgICAgICAgICAgIHRoaXMuY29tcHV0ZU1hc2soe1xuICAgICAgICAgICAgICAgIC4uLm51bWJlckZvcm1hdCxcbiAgICAgICAgICAgICAgICBwcmVjaXNpb246IHRoaXMucHJlY2lzaW9uKCksXG4gICAgICAgICAgICAgICAgbWluOiB0aGlzLm1pbigpLFxuICAgICAgICAgICAgICAgIG1heDogdGhpcy5tYXgoKSxcbiAgICAgICAgICAgICAgICBwcmVmaXg6IHRoaXMucHJlZml4KCksXG4gICAgICAgICAgICAgICAgcG9zdGZpeDogdGhpcy5wb3N0Zml4KCksXG4gICAgICAgICAgICAgICAgZGVjaW1hbFplcm9QYWRkaW5nOiBkZWNpbWFsTW9kZSA9PT0gJ2Fsd2F5cycsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKSxcbiAgICApO1xuXG4gICAgQElucHV0KCdtaW4nKVxuICAgIHB1YmxpYyBzZXQgbWluU2V0dGVyKHg6IG51bWJlciB8IG51bGwpIHtcbiAgICAgICAgdGhpcy51cGRhdGVNaW5NYXhMaW1pdHMoeCwgdGhpcy5tYXgoKSk7XG4gICAgfVxuXG4gICAgQElucHV0KCdtYXgnKVxuICAgIHB1YmxpYyBzZXQgbWF4U2V0dGVyKHg6IG51bWJlciB8IG51bGwpIHtcbiAgICAgICAgdGhpcy51cGRhdGVNaW5NYXhMaW1pdHModGhpcy5taW4oKSwgeCk7XG4gICAgfVxuXG4gICAgLy8gVE9ETyh2NSk6IHJlcGxhY2Ugd2l0aCBzaWduYWwgaW5wdXRcbiAgICBASW5wdXQoJ3ByZWZpeCcpXG4gICAgcHVibGljIHNldCBwcmVmaXhTZXR0ZXIoeDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMucHJlZml4LnNldCh4KTtcbiAgICB9XG5cbiAgICAvLyBUT0RPKHY1KTogcmVwbGFjZSB3aXRoIHNpZ25hbCBpbnB1dFxuICAgIEBJbnB1dCgncG9zdGZpeCcpXG4gICAgcHVibGljIHNldCBwb3N0Zml4U2V0dGVyKHg6IHN0cmluZykge1xuICAgICAgICB0aGlzLnBvc3RmaXguc2V0KHgpO1xuICAgIH1cblxuICAgIC8vIFRPRE8odjUpOiByZXBsYWNlIHdpdGggc2lnbmFsIGlucHV0XG4gICAgQElucHV0KCdzdGVwJylcbiAgICBwdWJsaWMgc2V0IHN0ZXBTZXR0ZXIoeDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc3RlcC5zZXQoeCk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIud3JpdGVWYWx1ZShOdW1iZXIuaXNOYU4odmFsdWUpID8gbnVsbCA6IHZhbHVlKTtcbiAgICAgICAgdGhpcy50ZXh0ZmllbGRWYWx1ZS5zZXQodGhpcy5mb3JtYXROdW1iZXIodGhpcy52YWx1ZSgpKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uQmx1cigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcblxuICAgICAgICBpZiAoIXRoaXMuaXNJbnRlcm1lZGlhdGVTdGF0ZSgpKSB7XG4gICAgICAgICAgICB0aGlzLnRleHRmaWVsZFZhbHVlLnNldCh0aGlzLmZvcm1hdE51bWJlcih0aGlzLnZhbHVlKCkpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkZvY3VzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IG1hc2tpdG9QYXJzZU51bWJlcihcbiAgICAgICAgICAgIHRoaXMudGV4dGZpZWxkVmFsdWUoKSxcbiAgICAgICAgICAgIHRoaXMubnVtYmVyRm9ybWF0KCkuZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKHZhbHVlKSAmJiAhdGhpcy5yZWFkT25seSgpKSB7XG4gICAgICAgICAgICB0aGlzLnRleHRmaWVsZFZhbHVlLnNldCh0aGlzLnByZWZpeCgpICsgdGhpcy5wb3N0Zml4KCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uU3RlcChzdGVwOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmZvcm1hdE51bWJlcihcbiAgICAgICAgICAgIHR1aUNsYW1wKCh0aGlzLnZhbHVlKCkgPz8gMCkgKyBzdGVwLCB0aGlzLm1pbigpLCB0aGlzLm1heCgpKSxcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAodGhpcy52YWx1ZSgpID09PSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCBjYXJldEluZGV4ID0gbmV3VmFsdWUubGVuZ3RoIC0gdGhpcy5wb3N0Zml4KCkubGVuZ3RoO1xuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShjYXJldEluZGV4LCBjYXJldEluZGV4KSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRleHRmaWVsZFZhbHVlLnNldChuZXdWYWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXROdW1iZXIodmFsdWU6IG51bWJlciB8IG51bGwpOiBzdHJpbmcge1xuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgTnVtYmVyLmlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMucHJlZml4KCkgK1xuICAgICAgICAgICAgdHVpRm9ybWF0TnVtYmVyKHZhbHVlLCB7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5udW1iZXJGb3JtYXQoKSxcbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBOdW1iZXIgY2FuIHNhdGlzZnkgaW50ZXJ2YWwgW051bWJlci5NSU5fU0FGRV9JTlRFR0VSOyBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUl1cbiAgICAgICAgICAgICAgICAgKiBidXQgaXRzIHJvdW5kaW5nIGNhbiB2aW9sYXRlIGl0LlxuICAgICAgICAgICAgICAgICAqIEJlZm9yZSBCaWdJbnQgc3VwcG9ydCB0aGVyZSBpcyBubyBwZXJmZWN0IHNvbHV0aW9uIOKAkyBvbmx5IHRyYWRlIG9mZi5cbiAgICAgICAgICAgICAgICAgKiBObyByb3VuZGluZyBpcyBiZXR0ZXIgdGhhbiBsb3NlIHByZWNpc2lvbiBhbmQgaW5jb3JyZWN0IG11dGF0aW9uIG9mIGFscmVhZHkgdmFsaWQgdmFsdWUuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgcHJlY2lzaW9uOiB0dWlJc1NhZmVUb1JvdW5kKHZhbHVlLCB0aGlzLnByZWNpc2lvbigpKVxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMucHJlY2lzaW9uKClcbiAgICAgICAgICAgICAgICAgICAgOiBJbmZpbml0eSxcbiAgICAgICAgICAgIH0pLnJlcGxhY2UoQ0hBUl9IWVBIRU4sIENIQVJfTUlOVVMpICtcbiAgICAgICAgICAgIHRoaXMucG9zdGZpeCgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVNaW5NYXhMaW1pdHMoXG4gICAgICAgIG51bGxhYmxlTWluOiBudW1iZXIgfCBudWxsLFxuICAgICAgICBudWxsYWJsZU1heDogbnVtYmVyIHwgbnVsbCxcbiAgICApOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbWluID1cbiAgICAgICAgICAgIHRoaXMudHJhbnNmb3JtZXI/LmZyb21Db250cm9sVmFsdWUobnVsbGFibGVNaW4pID8/XG4gICAgICAgICAgICBudWxsYWJsZU1pbiA/P1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLm1pbjtcbiAgICAgICAgY29uc3QgbWF4ID1cbiAgICAgICAgICAgIHRoaXMudHJhbnNmb3JtZXI/LmZyb21Db250cm9sVmFsdWUobnVsbGFibGVNYXgpID8/XG4gICAgICAgICAgICBudWxsYWJsZU1heCA/P1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLm1heDtcblxuICAgICAgICB0aGlzLm1pbi5zZXQoTWF0aC5taW4obWluLCBtYXgpKTtcbiAgICAgICAgdGhpcy5tYXguc2V0KE1hdGgubWF4KG1pbiwgbWF4KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb21wdXRlTWFzayhcbiAgICAgICAgcGFyYW1zOiBOb25OdWxsYWJsZTxQYXJhbWV0ZXJzPHR5cGVvZiBtYXNraXRvTnVtYmVyT3B0aW9uc0dlbmVyYXRvcj5bMF0+LFxuICAgICk6IE1hc2tpdG9PcHRpb25zIHtcbiAgICAgICAgY29uc3Qge3ByZWZpeCA9ICcnLCBwb3N0Zml4ID0gJyd9ID0gcGFyYW1zO1xuICAgICAgICBjb25zdCB7cGx1Z2lucywgLi4ub3B0aW9uc30gPSBtYXNraXRvTnVtYmVyT3B0aW9uc0dlbmVyYXRvcihwYXJhbXMpO1xuICAgICAgICBjb25zdCBpbml0aWFsQ2FsaWJyYXRpb25QbHVnaW4gPSBtYXNraXRvSW5pdGlhbENhbGlicmF0aW9uUGx1Z2luKFxuICAgICAgICAgICAgbWFza2l0b051bWJlck9wdGlvbnNHZW5lcmF0b3Ioe1xuICAgICAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICAgICAgICBtaW46IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSLFxuICAgICAgICAgICAgICAgIG1heDogTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgIHBsdWdpbnM6IFtcbiAgICAgICAgICAgICAgICAuLi5wbHVnaW5zLFxuICAgICAgICAgICAgICAgIGluaXRpYWxDYWxpYnJhdGlvblBsdWdpbixcbiAgICAgICAgICAgICAgICBtYXNraXRvQ2FyZXRHdWFyZCgodmFsdWUpID0+IFtcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4Lmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUubGVuZ3RoIC0gcG9zdGZpeC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICBdLFxuICAgICAgICB9O1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKnR1aVRleHRmaWVsZENvbnRlbnQ+XG4gICAgPHNlY3Rpb25cbiAgICAgICAgKm5nSWY9XCJzdGVwKClcIlxuICAgICAgICBjbGFzcz1cInQtaW5wdXQtbnVtYmVyLWJ1dHRvbnNcIlxuICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICB0dWlJY29uQnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwidC1idXR0b25cIlxuICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwidGV4dGZpZWxkT3B0aW9ucy5hcHBlYXJhbmNlKClcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFpbnRlcmFjdGl2ZSgpIHx8IHZhbHVlKCkhID49IG1heCgpXCJcbiAgICAgICAgICAgIFtpY29uU3RhcnRdPVwib3B0aW9ucy5pY29ucy5pbmNyZWFzZVwiXG4gICAgICAgICAgICAoY2xpY2sucHJldmVudCk9XCJvblN0ZXAoc3RlcCgpKVwiXG4gICAgICAgICAgICAobW91c2Vkb3duLnByZXZlbnQpPVwiZWxlbWVudC5mb2N1cygpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgK1xuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgIHR1aUljb25CdXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LWJ1dHRvblwiXG4gICAgICAgICAgICBbYXBwZWFyYW5jZV09XCJ0ZXh0ZmllbGRPcHRpb25zLmFwcGVhcmFuY2UoKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWludGVyYWN0aXZlKCkgfHwgdmFsdWUoKSEgPD0gbWluKClcIlxuICAgICAgICAgICAgW2ljb25TdGFydF09XCJvcHRpb25zLmljb25zLmRlY3JlYXNlXCJcbiAgICAgICAgICAgIChjbGljay5wcmV2ZW50KT1cIm9uU3RlcCgtc3RlcCgpKVwiXG4gICAgICAgICAgICAobW91c2Vkb3duLnByZXZlbnQpPVwiZWxlbWVudC5mb2N1cygpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgLVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L3NlY3Rpb24+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
package/esm2022/components/input-phone-international/input-phone-international.component.mjs
CHANGED
|
@@ -155,7 +155,7 @@ class TuiInputPhoneInternational extends TuiControl {
|
|
|
155
155
|
limitWidth: 'fixed',
|
|
156
156
|
align: 'right',
|
|
157
157
|
}),
|
|
158
|
-
], viewQueries: [{ propertyName: "input", first: true, predicate: MaskitoDirective, descendants: true, read: ElementRef }, { propertyName: "filter", first: true, predicate: TuiAutoFocus, descendants: true, read: ElementRef }, { propertyName: "template", first: true, predicate: i0.forwardRef(function () { return TuiTextfieldDropdownDirective; }), descendants: true, read: TemplateRef }, { propertyName: "listOptions", predicate: TuiOption, descendants: true, read: ElementRef }], usesInheritance: true, hostDirectives: [{ directive: i1.TuiGroup }, { directive: i2.TuiDropdownDirective }, { directive: i2.TuiWithDropdownOpen }], ngImport: i0, template: "<tui-textfield\n class=\"t-select\"\n [content]=\"flag\"\n [tuiChevron]=\"open()\"\n>\n <select\n ngModel=\"\"\n tuiTextfield\n [attr.data-mode]=\"mode()\"\n [disabled]=\"disabled()\"\n [focused]=\"open()\"\n [ngModelOptions]=\"{standalone: true}\"\n ></select>\n\n <ng-template #flag>\n <img\n class=\"t-flag\"\n [alt]=\"names()?.[countryIsoCode()]\"\n [src]=\"countryIsoCode() | tuiFlag\"\n />\n </ng-template>\n</tui-textfield>\n\n<tui-textfield>\n <!--TODO: Replace attribute bindings with inputs after Angular updated and signal bindings properly update-->\n <input\n autocomplete=\"new-password\"\n tuiTextfield\n [attr.data-mode]=\"mode()\"\n [attr.readonly]=\"readOnly() || null\"\n [disabled]=\"disabled()\"\n [maskito]=\"mask()\"\n [ngModelOptions]=\"{standalone: true}\"\n [(ngModel)]=\"textfieldValue\"\n (beforeinput.capture)=\"onPaste($event)\"\n (blur)=\"onTouched()\"\n (focus)=\"!readOnly() && onFocus()\"\n (ngModelChange)=\"onValueChange($event)\"\n />\n\n <!--\n TODO: get rid of built-in input and label and just externalize everything in 5.0\n <tui-input-phone-international>\n <label tuiLabel>My label</label>\n <input tuiTextfield placeholder=\"My placeholder\" [(ngModel)]=\"value\" />\n <tui-icon icon=\"@tui.phone\" />\n </tui-input-phone-international>\n -->\n <ng-content select=\"tui-icon, img\" />\n\n <label tuiLabel>\n <ng-content />\n </label>\n</tui-textfield>\n\n<ng-container *tuiTextfieldDropdown>\n <tui-textfield\n *ngIf=\"countrySearch\"\n tuiTextfieldSize=\"m\"\n class=\"t-search\"\n [iconStart]=\"icons.search\"\n >\n <input\n tuiTextfield\n [focused]=\"true\"\n [ngModel]=\"search()\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!isIos\"\n (keydown.arrowDown)=\"focusFirstItem()\"\n (ngModelChange)=\"search.set($event)\"\n />\n </tui-textfield>\n\n <tui-data-list (keydown)=\"onKeyDown($event)\">\n <button\n *ngFor=\"let item of filtered()\"\n tuiOption\n type=\"button\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-flag\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span class=\"t-name\">{{ item.name }}</span>\n <span class=\"t-code\">{{ item.code }}</span>\n </button>\n </tui-data-list>\n</ng-container>\n", styles: [".t-select{inline-size:5.625rem;flex:none}.t-select[data-size=m]{inline-size:5rem}.t-select[data-size=s]{inline-size:4rem}.t-flag{inline-size:1.75rem;block-size:1.75rem;border-radius:100%}.t-name{margin:0 auto 0 .75rem}.t-code{color:var(--tui-text-secondary);margin-inline-end:.25rem}.t-search{position:sticky;top:.375rem;background:var(--tui-background-elevation-3);box-shadow:0 -1rem var(--tui-background-elevation-3);margin:.375rem .375rem 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.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: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "directive", type: TuiAutoFocus, selector: "[tuiAutoFocus]", inputs: ["tuiAutoFocus"] }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }, { kind: "component", type: i5.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "component", type: i5.TuiOption, selector: "button[tuiOption], a[tuiOption], label[tuiOption]", inputs: ["disabled", "value"] }, { kind: "pipe", type: TuiFlagPipe, name: "tuiFlag" }, { kind: "directive", type: i6.TuiLabel, selector: "label[tuiLabel]" }, { kind: "component", type: i7.TuiSelect, selector: "select[tuiTextfield]", inputs: ["placeholder"] }, { kind: "component", type: i7.TuiTextfieldComponent, selector: "tui-textfield", inputs: ["stringify", "content", "filler"] }, { kind: "directive", type: i7.TuiTextfieldDirective, selector: "input[tuiTextfield]:not([tuiInputCard]):not([tuiInputExpire]):not([tuiInputCVC])" }, { kind: "directive", type: i7.TuiTextfieldOptionsDirective, selector: "[tuiTextfieldAppearance],[tuiTextfieldSize],[tuiTextfieldCleaner]", inputs: ["tuiTextfieldAppearance", "tuiTextfieldSize", "tuiTextfieldCleaner"] }, { kind: "directive", type: i7.TuiTextfieldDropdownDirective, selector: "ng-template[tuiTextfieldDropdown]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
158
|
+
], viewQueries: [{ propertyName: "input", first: true, predicate: MaskitoDirective, descendants: true, read: ElementRef }, { propertyName: "filter", first: true, predicate: TuiAutoFocus, descendants: true, read: ElementRef }, { propertyName: "template", first: true, predicate: i0.forwardRef(function () { return TuiTextfieldDropdownDirective; }), descendants: true, read: TemplateRef }, { propertyName: "listOptions", predicate: TuiOption, descendants: true, read: ElementRef }], usesInheritance: true, hostDirectives: [{ directive: i1.TuiGroup }, { directive: i2.TuiDropdownDirective }, { directive: i2.TuiWithDropdownOpen }], ngImport: i0, template: "<tui-textfield\n class=\"t-select\"\n [content]=\"flag\"\n [tuiChevron]=\"open()\"\n>\n <select\n aria-label=\"Country\"\n ngModel=\"\"\n tuiTextfield\n [attr.data-mode]=\"mode()\"\n [disabled]=\"disabled()\"\n [focused]=\"open()\"\n [ngModelOptions]=\"{standalone: true}\"\n ></select>\n\n <ng-template #flag>\n <img\n class=\"t-flag\"\n [alt]=\"names()?.[countryIsoCode()]\"\n [src]=\"countryIsoCode() | tuiFlag\"\n />\n </ng-template>\n</tui-textfield>\n\n<tui-textfield>\n <!--TODO: Replace attribute bindings with inputs after Angular updated and signal bindings properly update-->\n <input\n autocomplete=\"new-password\"\n tuiTextfield\n [attr.data-mode]=\"mode()\"\n [attr.readonly]=\"readOnly() || null\"\n [disabled]=\"disabled()\"\n [maskito]=\"mask()\"\n [ngModelOptions]=\"{standalone: true}\"\n [(ngModel)]=\"textfieldValue\"\n (beforeinput.capture)=\"onPaste($event)\"\n (blur)=\"onTouched()\"\n (focus)=\"!readOnly() && onFocus()\"\n (ngModelChange)=\"onValueChange($event)\"\n />\n\n <!--\n TODO: get rid of built-in input and label and just externalize everything in 5.0\n <tui-input-phone-international>\n <label tuiLabel>My label</label>\n <input tuiTextfield placeholder=\"My placeholder\" [(ngModel)]=\"value\" />\n <tui-icon icon=\"@tui.phone\" />\n </tui-input-phone-international>\n -->\n <ng-content select=\"tui-icon, img\" />\n\n <label tuiLabel>\n <ng-content />\n </label>\n</tui-textfield>\n\n<ng-container *tuiTextfieldDropdown>\n <tui-textfield\n *ngIf=\"countrySearch\"\n tuiTextfieldSize=\"m\"\n class=\"t-search\"\n [iconStart]=\"icons.search\"\n >\n <input\n tuiTextfield\n [focused]=\"true\"\n [ngModel]=\"search()\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!isIos\"\n (keydown.arrowDown)=\"focusFirstItem()\"\n (ngModelChange)=\"search.set($event)\"\n />\n </tui-textfield>\n\n <tui-data-list (keydown)=\"onKeyDown($event)\">\n <button\n *ngFor=\"let item of filtered()\"\n tuiOption\n type=\"button\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-flag\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span class=\"t-name\">{{ item.name }}</span>\n <span class=\"t-code\">{{ item.code }}</span>\n </button>\n </tui-data-list>\n</ng-container>\n", styles: [".t-select{inline-size:5.625rem;flex:none}.t-select[data-size=m]{inline-size:5rem}.t-select[data-size=s]{inline-size:4rem}.t-flag{inline-size:1.75rem;block-size:1.75rem;border-radius:100%}.t-name{margin:0 auto 0 .75rem}.t-code{color:var(--tui-text-secondary);margin-inline-end:.25rem}.t-search{position:sticky;top:.375rem;background:var(--tui-background-elevation-3);box-shadow:0 -1rem var(--tui-background-elevation-3);margin:.375rem .375rem 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.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: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "directive", type: TuiAutoFocus, selector: "[tuiAutoFocus]", inputs: ["tuiAutoFocus"] }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }, { kind: "component", type: i5.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "component", type: i5.TuiOption, selector: "button[tuiOption], a[tuiOption], label[tuiOption]", inputs: ["disabled", "value"] }, { kind: "pipe", type: TuiFlagPipe, name: "tuiFlag" }, { kind: "directive", type: i6.TuiLabel, selector: "label[tuiLabel]" }, { kind: "component", type: i7.TuiSelect, selector: "select[tuiTextfield]", inputs: ["placeholder"] }, { kind: "component", type: i7.TuiTextfieldComponent, selector: "tui-textfield", inputs: ["stringify", "content", "filler"] }, { kind: "directive", type: i7.TuiTextfieldDirective, selector: "input[tuiTextfield]:not([tuiInputCard]):not([tuiInputExpire]):not([tuiInputCVC])" }, { kind: "directive", type: i7.TuiTextfieldOptionsDirective, selector: "[tuiTextfieldAppearance],[tuiTextfieldSize],[tuiTextfieldCleaner]", inputs: ["tuiTextfieldAppearance", "tuiTextfieldSize", "tuiTextfieldCleaner"] }, { kind: "directive", type: i7.TuiTextfieldDropdownDirective, selector: "ng-template[tuiTextfieldDropdown]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
159
159
|
}
|
|
160
160
|
export { TuiInputPhoneInternational };
|
|
161
161
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputPhoneInternational, decorators: [{
|
|
@@ -180,7 +180,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
180
180
|
}),
|
|
181
181
|
], hostDirectives: [TuiGroup, TuiDropdownDirective, TuiWithDropdownOpen], host: {
|
|
182
182
|
'[attr.data-size]': 'size()',
|
|
183
|
-
}, template: "<tui-textfield\n class=\"t-select\"\n [content]=\"flag\"\n [tuiChevron]=\"open()\"\n>\n <select\n ngModel=\"\"\n tuiTextfield\n [attr.data-mode]=\"mode()\"\n [disabled]=\"disabled()\"\n [focused]=\"open()\"\n [ngModelOptions]=\"{standalone: true}\"\n ></select>\n\n <ng-template #flag>\n <img\n class=\"t-flag\"\n [alt]=\"names()?.[countryIsoCode()]\"\n [src]=\"countryIsoCode() | tuiFlag\"\n />\n </ng-template>\n</tui-textfield>\n\n<tui-textfield>\n <!--TODO: Replace attribute bindings with inputs after Angular updated and signal bindings properly update-->\n <input\n autocomplete=\"new-password\"\n tuiTextfield\n [attr.data-mode]=\"mode()\"\n [attr.readonly]=\"readOnly() || null\"\n [disabled]=\"disabled()\"\n [maskito]=\"mask()\"\n [ngModelOptions]=\"{standalone: true}\"\n [(ngModel)]=\"textfieldValue\"\n (beforeinput.capture)=\"onPaste($event)\"\n (blur)=\"onTouched()\"\n (focus)=\"!readOnly() && onFocus()\"\n (ngModelChange)=\"onValueChange($event)\"\n />\n\n <!--\n TODO: get rid of built-in input and label and just externalize everything in 5.0\n <tui-input-phone-international>\n <label tuiLabel>My label</label>\n <input tuiTextfield placeholder=\"My placeholder\" [(ngModel)]=\"value\" />\n <tui-icon icon=\"@tui.phone\" />\n </tui-input-phone-international>\n -->\n <ng-content select=\"tui-icon, img\" />\n\n <label tuiLabel>\n <ng-content />\n </label>\n</tui-textfield>\n\n<ng-container *tuiTextfieldDropdown>\n <tui-textfield\n *ngIf=\"countrySearch\"\n tuiTextfieldSize=\"m\"\n class=\"t-search\"\n [iconStart]=\"icons.search\"\n >\n <input\n tuiTextfield\n [focused]=\"true\"\n [ngModel]=\"search()\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!isIos\"\n (keydown.arrowDown)=\"focusFirstItem()\"\n (ngModelChange)=\"search.set($event)\"\n />\n </tui-textfield>\n\n <tui-data-list (keydown)=\"onKeyDown($event)\">\n <button\n *ngFor=\"let item of filtered()\"\n tuiOption\n type=\"button\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-flag\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span class=\"t-name\">{{ item.name }}</span>\n <span class=\"t-code\">{{ item.code }}</span>\n </button>\n </tui-data-list>\n</ng-container>\n", styles: [".t-select{inline-size:5.625rem;flex:none}.t-select[data-size=m]{inline-size:5rem}.t-select[data-size=s]{inline-size:4rem}.t-flag{inline-size:1.75rem;block-size:1.75rem;border-radius:100%}.t-name{margin:0 auto 0 .75rem}.t-code{color:var(--tui-text-secondary);margin-inline-end:.25rem}.t-search{position:sticky;top:.375rem;background:var(--tui-background-elevation-3);box-shadow:0 -1rem var(--tui-background-elevation-3);margin:.375rem .375rem 0}\n"] }]
|
|
183
|
+
}, template: "<tui-textfield\n class=\"t-select\"\n [content]=\"flag\"\n [tuiChevron]=\"open()\"\n>\n <select\n aria-label=\"Country\"\n ngModel=\"\"\n tuiTextfield\n [attr.data-mode]=\"mode()\"\n [disabled]=\"disabled()\"\n [focused]=\"open()\"\n [ngModelOptions]=\"{standalone: true}\"\n ></select>\n\n <ng-template #flag>\n <img\n class=\"t-flag\"\n [alt]=\"names()?.[countryIsoCode()]\"\n [src]=\"countryIsoCode() | tuiFlag\"\n />\n </ng-template>\n</tui-textfield>\n\n<tui-textfield>\n <!--TODO: Replace attribute bindings with inputs after Angular updated and signal bindings properly update-->\n <input\n autocomplete=\"new-password\"\n tuiTextfield\n [attr.data-mode]=\"mode()\"\n [attr.readonly]=\"readOnly() || null\"\n [disabled]=\"disabled()\"\n [maskito]=\"mask()\"\n [ngModelOptions]=\"{standalone: true}\"\n [(ngModel)]=\"textfieldValue\"\n (beforeinput.capture)=\"onPaste($event)\"\n (blur)=\"onTouched()\"\n (focus)=\"!readOnly() && onFocus()\"\n (ngModelChange)=\"onValueChange($event)\"\n />\n\n <!--\n TODO: get rid of built-in input and label and just externalize everything in 5.0\n <tui-input-phone-international>\n <label tuiLabel>My label</label>\n <input tuiTextfield placeholder=\"My placeholder\" [(ngModel)]=\"value\" />\n <tui-icon icon=\"@tui.phone\" />\n </tui-input-phone-international>\n -->\n <ng-content select=\"tui-icon, img\" />\n\n <label tuiLabel>\n <ng-content />\n </label>\n</tui-textfield>\n\n<ng-container *tuiTextfieldDropdown>\n <tui-textfield\n *ngIf=\"countrySearch\"\n tuiTextfieldSize=\"m\"\n class=\"t-search\"\n [iconStart]=\"icons.search\"\n >\n <input\n tuiTextfield\n [focused]=\"true\"\n [ngModel]=\"search()\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!isIos\"\n (keydown.arrowDown)=\"focusFirstItem()\"\n (ngModelChange)=\"search.set($event)\"\n />\n </tui-textfield>\n\n <tui-data-list (keydown)=\"onKeyDown($event)\">\n <button\n *ngFor=\"let item of filtered()\"\n tuiOption\n type=\"button\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-flag\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span class=\"t-name\">{{ item.name }}</span>\n <span class=\"t-code\">{{ item.code }}</span>\n </button>\n </tui-data-list>\n</ng-container>\n", styles: [".t-select{inline-size:5.625rem;flex:none}.t-select[data-size=m]{inline-size:5rem}.t-select[data-size=s]{inline-size:4rem}.t-flag{inline-size:1.75rem;block-size:1.75rem;border-radius:100%}.t-name{margin:0 auto 0 .75rem}.t-code{color:var(--tui-text-secondary);margin-inline-end:.25rem}.t-search{position:sticky;top:.375rem;background:var(--tui-background-elevation-3);box-shadow:0 -1rem var(--tui-background-elevation-3);margin:.375rem .375rem 0}\n"] }]
|
|
184
184
|
}], propDecorators: { input: [{
|
|
185
185
|
type: ViewChild,
|
|
186
186
|
args: [MaskitoDirective, { read: ElementRef }]
|
|
@@ -204,4 +204,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
204
204
|
type: ViewChild,
|
|
205
205
|
args: [forwardRef(() => TuiTextfieldDropdownDirective), { read: TemplateRef }]
|
|
206
206
|
}] } });
|
|
207
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsL2lucHV0LXBob25lLWludGVybmF0aW9uYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC9pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixVQUFVLEVBQ1YsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxFQUNULFlBQVksR0FDZixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsWUFBWSxFQUFFLFFBQVEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUVsRCxPQUFPLEVBQUMsK0JBQStCLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3ZELE9BQU8sRUFBQywyQkFBMkIsRUFBRSw0QkFBNEIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pGLE9BQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDL0QsT0FBTyxFQUFDLFNBQVMsRUFBRSxtQkFB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Z0JBTUksY0FBYztzQkFEeEIsS0FBSzt1QkFBQyxXQUFXO2dCQU1QLE9BQU87c0JBRGpCLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQXNEVCxRQUFRO3NCQURyQixTQUFTO3VCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQyxFQUFFLEVBQUMsSUFBSSxFQUFFLFdBQVcsRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHR5cGUge1F1ZXJ5TGlzdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBjb21wdXRlZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIGZvcndhcmRSZWYsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBzaWduYWwsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3RvT2JzZXJ2YWJsZSwgdG9TaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TWFza2l0b0RpcmVjdGl2ZX0gZnJvbSAnQG1hc2tpdG8vYW5ndWxhcic7XG5pbXBvcnQgdHlwZSB7TWFza2l0b09wdGlvbnN9IGZyb20gJ0BtYXNraXRvL2NvcmUnO1xuaW1wb3J0IHttYXNraXRvSW5pdGlhbENhbGlicmF0aW9uUGx1Z2luLCBtYXNraXRvVHJhbnNmb3JtfSBmcm9tICdAbWFza2l0by9jb3JlJztcbmltcG9ydCB7bWFza2l0b1JlbW92ZU9uQmx1clBsdWdpbn0gZnJvbSAnQG1hc2tpdG8va2l0JztcbmltcG9ydCB7bWFza2l0b0dldENvdW50cnlGcm9tTnVtYmVyLCBtYXNraXRvUGhvbmVPcHRpb25zR2VuZXJhdG9yfSBmcm9tICdAbWFza2l0by9waG9uZSc7XG5pbXBvcnQge3R1aUFzQ29udHJvbCwgVHVpQ29udHJvbH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jbGFzc2VzJztcbmltcG9ydCB7Q0hBUl9QTFVTLCBUVUlfREVGQVVMVF9NQVRDSEVSfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICAgIFR1aUF1dG9Gb2N1cyxcbiAgICB0dWlBdXRvRm9jdXNPcHRpb25zUHJvdmlkZXIsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsvZGlyZWN0aXZlcy9hdXRvLWZvY3VzJztcbmltcG9ydCB7VFVJX0lTX0lPUywgdHVpRmFsbGJhY2tWYWx1ZVByb3ZpZGVyfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3Rva2Vucyc7XG5pbXBvcnQge3R1aUlzSW5wdXRFdmVudH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9kb20nO1xuaW1wb3J0IHt0dWlEaXJlY3RpdmVCaW5kaW5nfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21pc2NlbGxhbmVvdXMnO1xuaW1wb3J0IHtUdWlEYXRhTGlzdCwgVHVpT3B0aW9ufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL2RhdGEtbGlzdCc7XG5pbXBvcnQge1xuICAgIFRVSV9URVhURklFTERfT1BUSU9OUyxcbiAgICBUdWlUZXh0ZmllbGQsXG4gICAgVHVpVGV4dGZpZWxkRHJvcGRvd25EaXJlY3RpdmUsXG4gICAgdHVpVGV4dGZpZWxkT3B0aW9uc1Byb3ZpZGVyLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL3RleHRmaWVsZCc7XG5pbXBvcnQge1xuICAgIHR1aURyb3Bkb3duLFxuICAgIFR1aURyb3Bkb3duRGlyZWN0aXZlLFxuICAgIFR1aURyb3Bkb3duT3BlbixcbiAgICB0dWlEcm9wZG93bk9wZW4sXG4gICAgdHVpRHJvcGRvd25PcHRpb25zUHJvdmlkZXIsXG4gICAgVHVpV2l0aERyb3Bkb3duT3Blbixcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvZGlyZWN0aXZlcy9kcm9wZG93bic7XG5pbXBvcnQge1R1aUdyb3VwfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9kaXJlY3RpdmVzL2dyb3VwJztcbmltcG9ydCB7VHVpRmxhZ1BpcGV9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3BpcGVzL2ZsYWcnO1xuaW1wb3J0IHtUVUlfQ09NTU9OX0lDT05TfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90b2tlbnMnO1xuaW1wb3J0IHt0dWlJc0VkaXRpbmdLZXl9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3V0aWxzL21pc2NlbGxhbmVvdXMnO1xuaW1wb3J0IHR5cGUge1R1aUNvdW50cnlJc29Db2RlfSBmcm9tICdAdGFpZ2EtdWkvaTE4bi90eXBlcyc7XG5pbXBvcnQge1R1aUNoZXZyb259IGZyb20gJ0B0YWlnYS11aS9raXQvZGlyZWN0aXZlcyc7XG5pbXBvcnQge1RVSV9DT1VOVFJJRVMsIFRVSV9JTlRFUk5BVElPTkFMX1NFQVJDSH0gZnJvbSAnQHRhaWdhLXVpL2tpdC90b2tlbnMnO1xuaW1wb3J0IHt0dWlHZXRDYWxsaW5nQ29kZX0gZnJvbSAnQHRhaWdhLXVpL2tpdC91dGlscyc7XG5pbXBvcnQgdHlwZSB7UG9seW1vcnBoZXVzQ29udGVudH0gZnJvbSAnQHRhaWdhLXVpL3BvbHltb3JwaGV1cyc7XG5pbXBvcnQge3ZhbGlkYXRlUGhvbmVOdW1iZXJMZW5ndGh9IGZyb20gJ2xpYnBob25lbnVtYmVyLWpzJztcbmltcG9ydCB0eXBlIHtNZXRhZGF0YUpzb259IGZyb20gJ2xpYnBob25lbnVtYmVyLWpzL2NvcmUnO1xuaW1wb3J0IHtnZXRDb3VudHJ5Q2FsbGluZ0NvZGV9IGZyb20gJ2xpYnBob25lbnVtYmVyLWpzL2NvcmUnO1xuaW1wb3J0IHtmcm9tLCBza2lwfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtUVUlfSU5QVVRfUEhPTkVfSU5URVJOQVRJT05BTF9PUFRJT05TfSBmcm9tICcuL2lucHV0LXBob25lLWludGVybmF0aW9uYWwub3B0aW9ucyc7XG5cbmNvbnN0IE5PVF9GT1JNX0NPTlRST0xfU1lNQk9MUyA9IC9bXitcXGRdL2c7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICd0dWktaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbCcsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBNYXNraXRvRGlyZWN0aXZlLFxuICAgICAgICBUdWlBdXRvRm9jdXMsXG4gICAgICAgIFR1aUNoZXZyb24sXG4gICAgICAgIFR1aURhdGFMaXN0LFxuICAgICAgICBUdWlGbGFnUGlwZSxcbiAgICAgICAgVHVpVGV4dGZpZWxkLFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LXBob25lLWludGVybmF0aW9uYWwudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHR1aUFzQ29udHJvbChUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbCksXG4gICAgICAgIHR1aUZhbGxiYWNrVmFsdWVQcm92aWRlcignJyksXG4gICAgICAgIHR1aUF1dG9Gb2N1c09wdGlvbnNQcm92aWRlcih7cHJldmVudFNjcm9sbDogdHJ1ZX0pLFxuICAgICAgICB0dWlUZXh0ZmllbGRPcHRpb25zUHJvdmlkZXIoe2NsZWFuZXI6IHNpZ25hbChmYWxzZSl9KSxcbiAgICAgICAgdHVpRHJvcGRvd25PcHRpb25zUHJvdmlkZXIoe1xuICAgICAgICAgICAgbGltaXRXaWR0aDogJ2ZpeGVkJyxcbiAgICAgICAgICAgIGFsaWduOiAncmlnaHQnLFxuICAgICAgICB9KSxcbiAgICBdLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbVHVpR3JvdXAsIFR1aURyb3Bkb3duRGlyZWN0aXZlLCBUdWlXaXRoRHJvcGRvd25PcGVuXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci5kYXRhLXNpemVdJzogJ3NpemUoKScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXRQaG9uZUludGVybmF0aW9uYWwgZXh0ZW5kcyBUdWlDb250cm9sPHN0cmluZz4ge1xuICAgIEBWaWV3Q2hpbGQoTWFza2l0b0RpcmVjdGl2ZSwge3JlYWQ6IEVsZW1lbnRSZWZ9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXQ/OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gICAgQFZpZXdDaGlsZChUdWlBdXRvRm9jdXMsIHtyZWFkOiBFbGVtZW50UmVmfSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZpbHRlcj86IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICBAVmlld0NoaWxkcmVuKFR1aU9wdGlvbiwge3JlYWQ6IEVsZW1lbnRSZWZ9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgbGlzdE9wdGlvbnM/OiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD4+O1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzSW9zID0gaW5qZWN0KFRVSV9JU19JT1MpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBkcm9wZG93biA9IHR1aURyb3Bkb3duKG51bGwpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvcHRpb25zID0gaW5qZWN0KFRVSV9JTlBVVF9QSE9ORV9JTlRFUk5BVElPTkFMX09QVElPTlMpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzaXplID0gaW5qZWN0KFRVSV9URVhURklFTERfT1BUSU9OUykuc2l6ZTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3BlbiA9IHR1aURyb3Bkb3duT3BlbigpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBuYW1lcyA9IHRvU2lnbmFsKGluamVjdChUVUlfQ09VTlRSSUVTKSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG1ldGFkYXRhID0gdG9TaWduYWwoZnJvbSh0aGlzLm9wdGlvbnMubWV0YWRhdGEpKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY291bnRyaWVzID0gc2lnbmFsKHRoaXMub3B0aW9ucy5jb3VudHJpZXMpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjb3VudHJ5SXNvQ29kZSA9IHNpZ25hbCh0aGlzLm9wdGlvbnMuY291bnRyeUlzb0NvZGUpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpY29ucyA9IGluamVjdChUVUlfQ09NTU9OX0lDT05TKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbGFiZWwgPSB0b1NpZ25hbChpbmplY3QoVFVJX0lOVEVSTkFUSU9OQUxfU0VBUkNIKSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlYXJjaCA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VwYXJhdG9yID0gc2lnbmFsKHRoaXMub3B0aW9ucy5zZXBhcmF0b3IpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGZpbHRlcmVkID0gY29tcHV0ZWQoKCkgPT5cbiAgICAgICAgdGhpcy5jb3VudHJpZXMoKVxuICAgICAgICAgICAgLm1hcCgoaXNvKSA9PiAoe1xuICAgICAgICAgICAgICAgIGlzbyxcbiAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLm5hbWVzKCk/Lltpc29dIHx8ICcnLFxuICAgICAgICAgICAgICAgIGNvZGU6IHR1aUdldENhbGxpbmdDb2RlKGlzbywgdGhpcy5tZXRhZGF0YSgpKSxcbiAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgLmZpbHRlcigoe25hbWUsIGNvZGV9KSA9PiBUVUlfREVGQVVMVF9NQVRDSEVSKG5hbWUgKyBjb2RlLCB0aGlzLnNlYXJjaCgpKSksXG4gICAgKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBtYXNrID0gY29tcHV0ZWQoKCkgPT5cbiAgICAgICAgdGhpcy5jb21wdXRlTWFzayh0aGlzLmNvdW50cnlJc29Db2RlKCksIHRoaXMubWV0YWRhdGEoKSwgdGhpcy5zZXBhcmF0b3IoKSksXG4gICAgKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSAkID0gdHVpRGlyZWN0aXZlQmluZGluZyhcbiAgICAgICAgVHVpRHJvcGRvd25PcGVuLFxuICAgICAgICAndHVpRHJvcGRvd25FbmFibGVkJyxcbiAgICAgICAgdGhpcy5pbnRlcmFjdGl2ZSxcbiAgICApO1xuXG4gICAgcHJvdGVjdGVkIHRleHRmaWVsZFZhbHVlID0gJyc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb3VudHJ5U2VhcmNoID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVhZG9ubHkgY291bnRyeUlzb0NvZGVDaGFuZ2UgPSB0b09ic2VydmFibGUodGhpcy5jb3VudHJ5SXNvQ29kZSkucGlwZShcbiAgICAgICAgc2tpcCgxKSxcbiAgICApO1xuXG4gICAgQElucHV0KCdjb3VudHJpZXMnKVxuICAgIHB1YmxpYyBzZXQgY291bnRyaWVzVmFsdWUodmFsdWU6IHJlYWRvbmx5IFR1aUNvdW50cnlJc29Db2RlW10pIHtcbiAgICAgICAgdGhpcy5jb3VudHJpZXMuc2V0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBASW5wdXQoJ2NvdW50cnlJc29Db2RlJylcbiAgICBwdWJsaWMgc2V0IGlzb0NvZGUoY29kZTogVHVpQ291bnRyeUlzb0NvZGUpIHtcbiAgICAgICAgdGhpcy5jb3VudHJ5SXNvQ29kZS5zZXQoY29kZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGZvY3VzRmlyc3RJdGVtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxpc3RPcHRpb25zPy5nZXQoMCk/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25QYXN0ZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGhvbmVzTWV0YWRhdGEgPSB0aGlzLm1ldGFkYXRhKCk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIXR1aUlzSW5wdXRFdmVudChldmVudCkgfHxcbiAgICAgICAgICAgICFwaG9uZXNNZXRhZGF0YSB8fFxuICAgICAgICAgICAgKCFldmVudC5pbnB1dFR5cGUuaW5jbHVkZXMoJ0Ryb3AnKSAmJiAhZXZlbnQuaW5wdXRUeXBlLmluY2x1ZGVzKCdQYXN0ZScpKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gZXZlbnQuZGF0YSB8fCAnJztcbiAgICAgICAgY29uc3QgcHJlZml4ZWRWYWx1ZSA9IG5ld1ZhbHVlLnN0YXJ0c1dpdGgoQ0hBUl9QTFVTKVxuICAgICAgICAgICAgPyBuZXdWYWx1ZVxuICAgICAgICAgICAgOiBDSEFSX1BMVVMgKyBuZXdWYWx1ZTtcblxuICAgICAgICBpZiAodmFsaWRhdGVQaG9uZU51bWJlckxlbmd0aChwcmVmaXhlZFZhbHVlKSA9PT0gJ1RPT19TSE9SVCcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvdW50cnlJc29Db2RlID0gbWFza2l0b0dldENvdW50cnlGcm9tTnVtYmVyKHByZWZpeGVkVmFsdWUsIHBob25lc01ldGFkYXRhKTtcblxuICAgICAgICBpZiAoY291bnRyeUlzb0NvZGUpIHtcbiAgICAgICAgICAgIHRoaXMuY291bnRyeUlzb0NvZGUuc2V0KGNvdW50cnlJc29Db2RlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkl0ZW1DbGljayhpc29Db2RlOiBUdWlDb3VudHJ5SXNvQ29kZSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4uc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5jb3VudHJ5SXNvQ29kZS5zZXQoaXNvQ29kZSk7XG4gICAgICAgIHRoaXMuaW5wdXQ/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh1bm1hc2tlZFZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIud3JpdGVWYWx1ZSh1bm1hc2tlZFZhbHVlKTtcblxuICAgICAgICBjb25zdCBtYXNrT3B0aW9ucyA9IHRoaXMubWFzaygpO1xuXG4gICAgICAgIHRoaXMudGV4dGZpZWxkVmFsdWUgPSBtYXNrT3B0aW9uc1xuICAgICAgICAgICAgPyBtYXNraXRvVHJhbnNmb3JtKHRoaXMudmFsdWUoKSwgbWFza09wdGlvbnMpXG4gICAgICAgICAgICA6IHRoaXMudmFsdWUoKTsgLy8gaXQgd2lsbCBiZSBjYWxpYnJhdGVkIGxhdGVyIHdoZW4gbWFzayBpcyByZWFkeSAoYnkgbWFza2l0b0luaXRpYWxDYWxpYnJhdGlvblBsdWdpbilcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIEBWaWV3Q2hpbGQoZm9yd2FyZFJlZigoKSA9PiBUdWlUZXh0ZmllbGREcm9wZG93bkRpcmVjdGl2ZSksIHtyZWFkOiBUZW1wbGF0ZVJlZn0pXG4gICAgcHJvdGVjdGVkIHNldCB0ZW1wbGF0ZSh0ZW1wbGF0ZTogUG9seW1vcnBoZXVzQ29udGVudCkge1xuICAgICAgICB0aGlzLmRyb3Bkb3duLnNldCh0ZW1wbGF0ZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBob25lTWV0YWRhdGEgPSB0aGlzLm1ldGFkYXRhKCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLnRleHRmaWVsZFZhbHVlICYmIHBob25lTWV0YWRhdGEpIHtcbiAgICAgICAgICAgIHRoaXMudGV4dGZpZWxkVmFsdWUgPSBgJHtDSEFSX1BMVVMgKyBnZXRDb3VudHJ5Q2FsbGluZ0NvZGUodGhpcy5jb3VudHJ5SXNvQ29kZSgpLCBwaG9uZU1ldGFkYXRhKX0gYDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblZhbHVlQ2hhbmdlKG1hc2tlZFZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdW5tYXNrZWRWYWx1ZSA9IG1hc2tlZFZhbHVlLnJlcGxhY2VBbGwoTk9UX0ZPUk1fQ09OVFJPTF9TWU1CT0xTLCAnJyk7XG4gICAgICAgIGNvbnN0IHBob25lc01ldGFkYXRhID0gdGhpcy5tZXRhZGF0YSgpO1xuICAgICAgICBjb25zdCBjb3VudHJ5Q2FsbGluZ0NvZGUgPSBwaG9uZXNNZXRhZGF0YVxuICAgICAgICAgICAgPyBDSEFSX1BMVVMgKyBnZXRDb3VudHJ5Q2FsbGluZ0NvZGUodGhpcy5jb3VudHJ5SXNvQ29kZSgpLCBwaG9uZXNNZXRhZGF0YSlcbiAgICAgICAgICAgIDogJyc7XG5cbiAgICAgICAgdGhpcy5vbkNoYW5nZSh1bm1hc2tlZFZhbHVlID09PSBjb3VudHJ5Q2FsbGluZ0NvZGUgPyAnJyA6IHVubWFza2VkVmFsdWUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbktleURvd24oe2tleX06IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHR1aUlzRWRpdGluZ0tleShrZXkpKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcj8ubmF0aXZlRWxlbWVudC5mb2N1cyh7cHJldmVudFNjcm9sbDogdHJ1ZX0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb21wdXRlTWFzayhcbiAgICAgICAgY291bnRyeUlzb0NvZGU6IFR1aUNvdW50cnlJc29Db2RlLFxuICAgICAgICBtZXRhZGF0YT86IE1ldGFkYXRhSnNvbixcbiAgICAgICAgc2VwYXJhdG9yPzogc3RyaW5nLFxuICAgICk6IE1hc2tpdG9PcHRpb25zIHwgbnVsbCB7XG4gICAgICAgIGlmICghbWV0YWRhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge3BsdWdpbnMsIC4uLnJlc3RPcHRpb25zfSA9IG1hc2tpdG9QaG9uZU9wdGlvbnNHZW5lcmF0b3Ioe1xuICAgICAgICAgICAgY291bnRyeUlzb0NvZGUsXG4gICAgICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgICAgIHNlcGFyYXRvcixcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnJlc3RPcHRpb25zLFxuICAgICAgICAgICAgcGx1Z2luczogW1xuICAgICAgICAgICAgICAgIC4uLnBsdWdpbnMsXG4gICAgICAgICAgICAgICAgbWFza2l0b1JlbW92ZU9uQmx1clBsdWdpbihcbiAgICAgICAgICAgICAgICAgICAgYCR7Q0hBUl9QTFVTfSR7Z2V0Q291bnRyeUNhbGxpbmdDb2RlKGNvdW50cnlJc29Db2RlLCBtZXRhZGF0YSl9IGAsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBtYXNraXRvSW5pdGlhbENhbGlicmF0aW9uUGx1Z2luKCksXG4gICAgICAgICAgICBdLFxuICAgICAgICB9O1xuICAgIH1cbn1cbiIsIjx0dWktdGV4dGZpZWxkXG4gICAgY2xhc3M9XCJ0LXNlbGVjdFwiXG4gICAgW2NvbnRlbnRdPVwiZmxhZ1wiXG4gICAgW3R1aUNoZXZyb25dPVwib3BlbigpXCJcbj5cbiAgICA8c2VsZWN0XG4gICAgICAgIG5nTW9kZWw9XCJcIlxuICAgICAgICB0dWlUZXh0ZmllbGRcbiAgICAgICAgW2F0dHIuZGF0YS1tb2RlXT1cIm1vZGUoKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgICAgICAgW2ZvY3VzZWRdPVwib3BlbigpXCJcbiAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXG4gICAgPjwvc2VsZWN0PlxuXG4gICAgPG5nLXRlbXBsYXRlICNmbGFnPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgICBjbGFzcz1cInQtZmxhZ1wiXG4gICAgICAgICAgICBbYWx0XT1cIm5hbWVzKCk/Lltjb3VudHJ5SXNvQ29kZSgpXVwiXG4gICAgICAgICAgICBbc3JjXT1cImNvdW50cnlJc29Db2RlKCkgfCB0dWlGbGFnXCJcbiAgICAgICAgLz5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC90dWktdGV4dGZpZWxkPlxuXG48dHVpLXRleHRmaWVsZD5cbiAgICA8IS0tVE9ETzogUmVwbGFjZSBhdHRyaWJ1dGUgYmluZGluZ3Mgd2l0aCBpbnB1dHMgYWZ0ZXIgQW5ndWxhciB1cGRhdGVkIGFuZCBzaWduYWwgYmluZGluZ3MgcHJvcGVybHkgdXBkYXRlLS0+XG4gICAgPGlucHV0XG4gICAgICAgIGF1dG9jb21wbGV0ZT1cIm5ldy1wYXNzd29yZFwiXG4gICAgICAgIHR1aVRleHRmaWVsZFxuICAgICAgICBbYXR0ci5kYXRhLW1vZGVdPVwibW9kZSgpXCJcbiAgICAgICAgW2F0dHIucmVhZG9ubHldPVwicmVhZE9ubHkoKSB8fCBudWxsXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICAgICAgICBbbWFza2l0b109XCJtYXNrKClcIlxuICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJ0ZXh0ZmllbGRWYWx1ZVwiXG4gICAgICAgIChiZWZvcmVpbnB1dC5jYXB0dXJlKT1cIm9uUGFzdGUoJGV2ZW50KVwiXG4gICAgICAgIChibHVyKT1cIm9uVG91Y2hlZCgpXCJcbiAgICAgICAgKGZvY3VzKT1cIiFyZWFkT25seSgpICYmIG9uRm9jdXMoKVwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgLz5cblxuICAgIDwhLS1cbiAgICBUT0RPOiBnZXQgcmlkIG9mIGJ1aWx0LWluIGlucHV0IGFuZCBsYWJlbCBhbmQganVzdCBleHRlcm5hbGl6ZSBldmVyeXRoaW5nIGluIDUuMFxuICAgIDx0dWktaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbD5cbiAgICAgIDxsYWJlbCB0dWlMYWJlbD5NeSBsYWJlbDwvbGFiZWw+XG4gICAgICA8aW5wdXQgdHVpVGV4dGZpZWxkIHBsYWNlaG9sZGVyPVwiTXkgcGxhY2Vob2xkZXJcIiBbKG5nTW9kZWwpXT1cInZhbHVlXCIgLz5cbiAgICAgIDx0dWktaWNvbiBpY29uPVwiQHR1aS5waG9uZVwiIC8+XG4gICAgPC90dWktaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbD5cbiAgICAtLT5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJ0dWktaWNvbiwgaW1nXCIgLz5cblxuICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAgPG5nLWNvbnRlbnQgLz5cbiAgICA8L2xhYmVsPlxuPC90dWktdGV4dGZpZWxkPlxuXG48bmctY29udGFpbmVyICp0dWlUZXh0ZmllbGREcm9wZG93bj5cbiAgICA8dHVpLXRleHRmaWVsZFxuICAgICAgICAqbmdJZj1cImNvdW50cnlTZWFyY2hcIlxuICAgICAgICB0dWlUZXh0ZmllbGRTaXplPVwibVwiXG4gICAgICAgIGNsYXNzPVwidC1zZWFyY2hcIlxuICAgICAgICBbaWNvblN0YXJ0XT1cImljb25zLnNlYXJjaFwiXG4gICAgPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR1aVRleHRmaWVsZFxuICAgICAgICAgICAgW2ZvY3VzZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJzZWFyY2goKVwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwibGFiZWwoKVwiXG4gICAgICAgICAgICBbdHVpQXV0b0ZvY3VzXT1cIiFpc0lvc1wiXG4gICAgICAgICAgICAoa2V5ZG93bi5hcnJvd0Rvd24pPVwiZm9jdXNGaXJzdEl0ZW0oKVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWFyY2guc2V0KCRldmVudClcIlxuICAgICAgICAvPlxuICAgIDwvdHVpLXRleHRmaWVsZD5cblxuICAgIDx0dWktZGF0YS1saXN0IChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpbHRlcmVkKClcIlxuICAgICAgICAgICAgdHVpT3B0aW9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkl0ZW1DbGljayhpdGVtLmlzbylcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInQtZmxhZ1wiXG4gICAgICAgICAgICAgICAgW3NyY109XCJpdGVtLmlzbyB8IHR1aUZsYWdcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidC1uYW1lXCI+e3sgaXRlbS5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0LWNvZGVcIj57eyBpdGVtLmNvZGUgfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvdHVpLWRhdGEtbGlzdD5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
207
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsL2lucHV0LXBob25lLWludGVybmF0aW9uYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC9pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixVQUFVLEVBQ1YsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxFQUNULFlBQVksR0FDZixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsWUFBWSxFQUFFLFFBQVEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUVsRCxPQUFPLEVBQUMsK0JBQStCLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3ZELE9BQU8sRUFBQywyQkFBMkIsRUFBRSw0QkFBNEIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pGLE9BQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDL0QsT0FBTyxFQUFDLFNBQVMsRUFBRSxtQkFB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Z0JBTUksY0FBYztzQkFEeEIsS0FBSzt1QkFBQyxXQUFXO2dCQU1QLE9BQU87c0JBRGpCLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQXNEVCxRQUFRO3NCQURyQixTQUFTO3VCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQyxFQUFFLEVBQUMsSUFBSSxFQUFFLFdBQVcsRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHR5cGUge1F1ZXJ5TGlzdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBjb21wdXRlZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIGZvcndhcmRSZWYsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBzaWduYWwsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3RvT2JzZXJ2YWJsZSwgdG9TaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TWFza2l0b0RpcmVjdGl2ZX0gZnJvbSAnQG1hc2tpdG8vYW5ndWxhcic7XG5pbXBvcnQgdHlwZSB7TWFza2l0b09wdGlvbnN9IGZyb20gJ0BtYXNraXRvL2NvcmUnO1xuaW1wb3J0IHttYXNraXRvSW5pdGlhbENhbGlicmF0aW9uUGx1Z2luLCBtYXNraXRvVHJhbnNmb3JtfSBmcm9tICdAbWFza2l0by9jb3JlJztcbmltcG9ydCB7bWFza2l0b1JlbW92ZU9uQmx1clBsdWdpbn0gZnJvbSAnQG1hc2tpdG8va2l0JztcbmltcG9ydCB7bWFza2l0b0dldENvdW50cnlGcm9tTnVtYmVyLCBtYXNraXRvUGhvbmVPcHRpb25zR2VuZXJhdG9yfSBmcm9tICdAbWFza2l0by9waG9uZSc7XG5pbXBvcnQge3R1aUFzQ29udHJvbCwgVHVpQ29udHJvbH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jbGFzc2VzJztcbmltcG9ydCB7Q0hBUl9QTFVTLCBUVUlfREVGQVVMVF9NQVRDSEVSfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICAgIFR1aUF1dG9Gb2N1cyxcbiAgICB0dWlBdXRvRm9jdXNPcHRpb25zUHJvdmlkZXIsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsvZGlyZWN0aXZlcy9hdXRvLWZvY3VzJztcbmltcG9ydCB7VFVJX0lTX0lPUywgdHVpRmFsbGJhY2tWYWx1ZVByb3ZpZGVyfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3Rva2Vucyc7XG5pbXBvcnQge3R1aUlzSW5wdXRFdmVudH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9kb20nO1xuaW1wb3J0IHt0dWlEaXJlY3RpdmVCaW5kaW5nfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21pc2NlbGxhbmVvdXMnO1xuaW1wb3J0IHtUdWlEYXRhTGlzdCwgVHVpT3B0aW9ufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL2RhdGEtbGlzdCc7XG5pbXBvcnQge1xuICAgIFRVSV9URVhURklFTERfT1BUSU9OUyxcbiAgICBUdWlUZXh0ZmllbGQsXG4gICAgVHVpVGV4dGZpZWxkRHJvcGRvd25EaXJlY3RpdmUsXG4gICAgdHVpVGV4dGZpZWxkT3B0aW9uc1Byb3ZpZGVyLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL3RleHRmaWVsZCc7XG5pbXBvcnQge1xuICAgIHR1aURyb3Bkb3duLFxuICAgIFR1aURyb3Bkb3duRGlyZWN0aXZlLFxuICAgIFR1aURyb3Bkb3duT3BlbixcbiAgICB0dWlEcm9wZG93bk9wZW4sXG4gICAgdHVpRHJvcGRvd25PcHRpb25zUHJvdmlkZXIsXG4gICAgVHVpV2l0aERyb3Bkb3duT3Blbixcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvZGlyZWN0aXZlcy9kcm9wZG93bic7XG5pbXBvcnQge1R1aUdyb3VwfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9kaXJlY3RpdmVzL2dyb3VwJztcbmltcG9ydCB7VHVpRmxhZ1BpcGV9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3BpcGVzL2ZsYWcnO1xuaW1wb3J0IHtUVUlfQ09NTU9OX0lDT05TfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90b2tlbnMnO1xuaW1wb3J0IHt0dWlJc0VkaXRpbmdLZXl9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3V0aWxzL21pc2NlbGxhbmVvdXMnO1xuaW1wb3J0IHR5cGUge1R1aUNvdW50cnlJc29Db2RlfSBmcm9tICdAdGFpZ2EtdWkvaTE4bi90eXBlcyc7XG5pbXBvcnQge1R1aUNoZXZyb259IGZyb20gJ0B0YWlnYS11aS9raXQvZGlyZWN0aXZlcyc7XG5pbXBvcnQge1RVSV9DT1VOVFJJRVMsIFRVSV9JTlRFUk5BVElPTkFMX1NFQVJDSH0gZnJvbSAnQHRhaWdhLXVpL2tpdC90b2tlbnMnO1xuaW1wb3J0IHt0dWlHZXRDYWxsaW5nQ29kZX0gZnJvbSAnQHRhaWdhLXVpL2tpdC91dGlscyc7XG5pbXBvcnQgdHlwZSB7UG9seW1vcnBoZXVzQ29udGVudH0gZnJvbSAnQHRhaWdhLXVpL3BvbHltb3JwaGV1cyc7XG5pbXBvcnQge3ZhbGlkYXRlUGhvbmVOdW1iZXJMZW5ndGh9IGZyb20gJ2xpYnBob25lbnVtYmVyLWpzJztcbmltcG9ydCB0eXBlIHtNZXRhZGF0YUpzb259IGZyb20gJ2xpYnBob25lbnVtYmVyLWpzL2NvcmUnO1xuaW1wb3J0IHtnZXRDb3VudHJ5Q2FsbGluZ0NvZGV9IGZyb20gJ2xpYnBob25lbnVtYmVyLWpzL2NvcmUnO1xuaW1wb3J0IHtmcm9tLCBza2lwfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtUVUlfSU5QVVRfUEhPTkVfSU5URVJOQVRJT05BTF9PUFRJT05TfSBmcm9tICcuL2lucHV0LXBob25lLWludGVybmF0aW9uYWwub3B0aW9ucyc7XG5cbmNvbnN0IE5PVF9GT1JNX0NPTlRST0xfU1lNQk9MUyA9IC9bXitcXGRdL2c7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICd0dWktaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbCcsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBNYXNraXRvRGlyZWN0aXZlLFxuICAgICAgICBUdWlBdXRvRm9jdXMsXG4gICAgICAgIFR1aUNoZXZyb24sXG4gICAgICAgIFR1aURhdGFMaXN0LFxuICAgICAgICBUdWlGbGFnUGlwZSxcbiAgICAgICAgVHVpVGV4dGZpZWxkLFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LXBob25lLWludGVybmF0aW9uYWwudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHR1aUFzQ29udHJvbChUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbCksXG4gICAgICAgIHR1aUZhbGxiYWNrVmFsdWVQcm92aWRlcignJyksXG4gICAgICAgIHR1aUF1dG9Gb2N1c09wdGlvbnNQcm92aWRlcih7cHJldmVudFNjcm9sbDogdHJ1ZX0pLFxuICAgICAgICB0dWlUZXh0ZmllbGRPcHRpb25zUHJvdmlkZXIoe2NsZWFuZXI6IHNpZ25hbChmYWxzZSl9KSxcbiAgICAgICAgdHVpRHJvcGRvd25PcHRpb25zUHJvdmlkZXIoe1xuICAgICAgICAgICAgbGltaXRXaWR0aDogJ2ZpeGVkJyxcbiAgICAgICAgICAgIGFsaWduOiAncmlnaHQnLFxuICAgICAgICB9KSxcbiAgICBdLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbVHVpR3JvdXAsIFR1aURyb3Bkb3duRGlyZWN0aXZlLCBUdWlXaXRoRHJvcGRvd25PcGVuXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci5kYXRhLXNpemVdJzogJ3NpemUoKScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXRQaG9uZUludGVybmF0aW9uYWwgZXh0ZW5kcyBUdWlDb250cm9sPHN0cmluZz4ge1xuICAgIEBWaWV3Q2hpbGQoTWFza2l0b0RpcmVjdGl2ZSwge3JlYWQ6IEVsZW1lbnRSZWZ9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXQ/OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gICAgQFZpZXdDaGlsZChUdWlBdXRvRm9jdXMsIHtyZWFkOiBFbGVtZW50UmVmfSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZpbHRlcj86IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICBAVmlld0NoaWxkcmVuKFR1aU9wdGlvbiwge3JlYWQ6IEVsZW1lbnRSZWZ9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgbGlzdE9wdGlvbnM/OiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD4+O1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzSW9zID0gaW5qZWN0KFRVSV9JU19JT1MpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBkcm9wZG93biA9IHR1aURyb3Bkb3duKG51bGwpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvcHRpb25zID0gaW5qZWN0KFRVSV9JTlBVVF9QSE9ORV9JTlRFUk5BVElPTkFMX09QVElPTlMpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzaXplID0gaW5qZWN0KFRVSV9URVhURklFTERfT1BUSU9OUykuc2l6ZTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3BlbiA9IHR1aURyb3Bkb3duT3BlbigpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBuYW1lcyA9IHRvU2lnbmFsKGluamVjdChUVUlfQ09VTlRSSUVTKSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG1ldGFkYXRhID0gdG9TaWduYWwoZnJvbSh0aGlzLm9wdGlvbnMubWV0YWRhdGEpKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY291bnRyaWVzID0gc2lnbmFsKHRoaXMub3B0aW9ucy5jb3VudHJpZXMpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjb3VudHJ5SXNvQ29kZSA9IHNpZ25hbCh0aGlzLm9wdGlvbnMuY291bnRyeUlzb0NvZGUpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpY29ucyA9IGluamVjdChUVUlfQ09NTU9OX0lDT05TKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbGFiZWwgPSB0b1NpZ25hbChpbmplY3QoVFVJX0lOVEVSTkFUSU9OQUxfU0VBUkNIKSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlYXJjaCA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VwYXJhdG9yID0gc2lnbmFsKHRoaXMub3B0aW9ucy5zZXBhcmF0b3IpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGZpbHRlcmVkID0gY29tcHV0ZWQoKCkgPT5cbiAgICAgICAgdGhpcy5jb3VudHJpZXMoKVxuICAgICAgICAgICAgLm1hcCgoaXNvKSA9PiAoe1xuICAgICAgICAgICAgICAgIGlzbyxcbiAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLm5hbWVzKCk/Lltpc29dIHx8ICcnLFxuICAgICAgICAgICAgICAgIGNvZGU6IHR1aUdldENhbGxpbmdDb2RlKGlzbywgdGhpcy5tZXRhZGF0YSgpKSxcbiAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgLmZpbHRlcigoe25hbWUsIGNvZGV9KSA9PiBUVUlfREVGQVVMVF9NQVRDSEVSKG5hbWUgKyBjb2RlLCB0aGlzLnNlYXJjaCgpKSksXG4gICAgKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBtYXNrID0gY29tcHV0ZWQoKCkgPT5cbiAgICAgICAgdGhpcy5jb21wdXRlTWFzayh0aGlzLmNvdW50cnlJc29Db2RlKCksIHRoaXMubWV0YWRhdGEoKSwgdGhpcy5zZXBhcmF0b3IoKSksXG4gICAgKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSAkID0gdHVpRGlyZWN0aXZlQmluZGluZyhcbiAgICAgICAgVHVpRHJvcGRvd25PcGVuLFxuICAgICAgICAndHVpRHJvcGRvd25FbmFibGVkJyxcbiAgICAgICAgdGhpcy5pbnRlcmFjdGl2ZSxcbiAgICApO1xuXG4gICAgcHJvdGVjdGVkIHRleHRmaWVsZFZhbHVlID0gJyc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb3VudHJ5U2VhcmNoID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVhZG9ubHkgY291bnRyeUlzb0NvZGVDaGFuZ2UgPSB0b09ic2VydmFibGUodGhpcy5jb3VudHJ5SXNvQ29kZSkucGlwZShcbiAgICAgICAgc2tpcCgxKSxcbiAgICApO1xuXG4gICAgQElucHV0KCdjb3VudHJpZXMnKVxuICAgIHB1YmxpYyBzZXQgY291bnRyaWVzVmFsdWUodmFsdWU6IHJlYWRvbmx5IFR1aUNvdW50cnlJc29Db2RlW10pIHtcbiAgICAgICAgdGhpcy5jb3VudHJpZXMuc2V0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBASW5wdXQoJ2NvdW50cnlJc29Db2RlJylcbiAgICBwdWJsaWMgc2V0IGlzb0NvZGUoY29kZTogVHVpQ291bnRyeUlzb0NvZGUpIHtcbiAgICAgICAgdGhpcy5jb3VudHJ5SXNvQ29kZS5zZXQoY29kZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGZvY3VzRmlyc3RJdGVtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxpc3RPcHRpb25zPy5nZXQoMCk/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25QYXN0ZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGhvbmVzTWV0YWRhdGEgPSB0aGlzLm1ldGFkYXRhKCk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIXR1aUlzSW5wdXRFdmVudChldmVudCkgfHxcbiAgICAgICAgICAgICFwaG9uZXNNZXRhZGF0YSB8fFxuICAgICAgICAgICAgKCFldmVudC5pbnB1dFR5cGUuaW5jbHVkZXMoJ0Ryb3AnKSAmJiAhZXZlbnQuaW5wdXRUeXBlLmluY2x1ZGVzKCdQYXN0ZScpKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gZXZlbnQuZGF0YSB8fCAnJztcbiAgICAgICAgY29uc3QgcHJlZml4ZWRWYWx1ZSA9IG5ld1ZhbHVlLnN0YXJ0c1dpdGgoQ0hBUl9QTFVTKVxuICAgICAgICAgICAgPyBuZXdWYWx1ZVxuICAgICAgICAgICAgOiBDSEFSX1BMVVMgKyBuZXdWYWx1ZTtcblxuICAgICAgICBpZiAodmFsaWRhdGVQaG9uZU51bWJlckxlbmd0aChwcmVmaXhlZFZhbHVlKSA9PT0gJ1RPT19TSE9SVCcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvdW50cnlJc29Db2RlID0gbWFza2l0b0dldENvdW50cnlGcm9tTnVtYmVyKHByZWZpeGVkVmFsdWUsIHBob25lc01ldGFkYXRhKTtcblxuICAgICAgICBpZiAoY291bnRyeUlzb0NvZGUpIHtcbiAgICAgICAgICAgIHRoaXMuY291bnRyeUlzb0NvZGUuc2V0KGNvdW50cnlJc29Db2RlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkl0ZW1DbGljayhpc29Db2RlOiBUdWlDb3VudHJ5SXNvQ29kZSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4uc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5jb3VudHJ5SXNvQ29kZS5zZXQoaXNvQ29kZSk7XG4gICAgICAgIHRoaXMuaW5wdXQ/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh1bm1hc2tlZFZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIud3JpdGVWYWx1ZSh1bm1hc2tlZFZhbHVlKTtcblxuICAgICAgICBjb25zdCBtYXNrT3B0aW9ucyA9IHRoaXMubWFzaygpO1xuXG4gICAgICAgIHRoaXMudGV4dGZpZWxkVmFsdWUgPSBtYXNrT3B0aW9uc1xuICAgICAgICAgICAgPyBtYXNraXRvVHJhbnNmb3JtKHRoaXMudmFsdWUoKSwgbWFza09wdGlvbnMpXG4gICAgICAgICAgICA6IHRoaXMudmFsdWUoKTsgLy8gaXQgd2lsbCBiZSBjYWxpYnJhdGVkIGxhdGVyIHdoZW4gbWFzayBpcyByZWFkeSAoYnkgbWFza2l0b0luaXRpYWxDYWxpYnJhdGlvblBsdWdpbilcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIEBWaWV3Q2hpbGQoZm9yd2FyZFJlZigoKSA9PiBUdWlUZXh0ZmllbGREcm9wZG93bkRpcmVjdGl2ZSksIHtyZWFkOiBUZW1wbGF0ZVJlZn0pXG4gICAgcHJvdGVjdGVkIHNldCB0ZW1wbGF0ZSh0ZW1wbGF0ZTogUG9seW1vcnBoZXVzQ29udGVudCkge1xuICAgICAgICB0aGlzLmRyb3Bkb3duLnNldCh0ZW1wbGF0ZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBob25lTWV0YWRhdGEgPSB0aGlzLm1ldGFkYXRhKCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLnRleHRmaWVsZFZhbHVlICYmIHBob25lTWV0YWRhdGEpIHtcbiAgICAgICAgICAgIHRoaXMudGV4dGZpZWxkVmFsdWUgPSBgJHtDSEFSX1BMVVMgKyBnZXRDb3VudHJ5Q2FsbGluZ0NvZGUodGhpcy5jb3VudHJ5SXNvQ29kZSgpLCBwaG9uZU1ldGFkYXRhKX0gYDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblZhbHVlQ2hhbmdlKG1hc2tlZFZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdW5tYXNrZWRWYWx1ZSA9IG1hc2tlZFZhbHVlLnJlcGxhY2VBbGwoTk9UX0ZPUk1fQ09OVFJPTF9TWU1CT0xTLCAnJyk7XG4gICAgICAgIGNvbnN0IHBob25lc01ldGFkYXRhID0gdGhpcy5tZXRhZGF0YSgpO1xuICAgICAgICBjb25zdCBjb3VudHJ5Q2FsbGluZ0NvZGUgPSBwaG9uZXNNZXRhZGF0YVxuICAgICAgICAgICAgPyBDSEFSX1BMVVMgKyBnZXRDb3VudHJ5Q2FsbGluZ0NvZGUodGhpcy5jb3VudHJ5SXNvQ29kZSgpLCBwaG9uZXNNZXRhZGF0YSlcbiAgICAgICAgICAgIDogJyc7XG5cbiAgICAgICAgdGhpcy5vbkNoYW5nZSh1bm1hc2tlZFZhbHVlID09PSBjb3VudHJ5Q2FsbGluZ0NvZGUgPyAnJyA6IHVubWFza2VkVmFsdWUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbktleURvd24oe2tleX06IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHR1aUlzRWRpdGluZ0tleShrZXkpKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcj8ubmF0aXZlRWxlbWVudC5mb2N1cyh7cHJldmVudFNjcm9sbDogdHJ1ZX0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb21wdXRlTWFzayhcbiAgICAgICAgY291bnRyeUlzb0NvZGU6IFR1aUNvdW50cnlJc29Db2RlLFxuICAgICAgICBtZXRhZGF0YT86IE1ldGFkYXRhSnNvbixcbiAgICAgICAgc2VwYXJhdG9yPzogc3RyaW5nLFxuICAgICk6IE1hc2tpdG9PcHRpb25zIHwgbnVsbCB7XG4gICAgICAgIGlmICghbWV0YWRhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge3BsdWdpbnMsIC4uLnJlc3RPcHRpb25zfSA9IG1hc2tpdG9QaG9uZU9wdGlvbnNHZW5lcmF0b3Ioe1xuICAgICAgICAgICAgY291bnRyeUlzb0NvZGUsXG4gICAgICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgICAgIHNlcGFyYXRvcixcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnJlc3RPcHRpb25zLFxuICAgICAgICAgICAgcGx1Z2luczogW1xuICAgICAgICAgICAgICAgIC4uLnBsdWdpbnMsXG4gICAgICAgICAgICAgICAgbWFza2l0b1JlbW92ZU9uQmx1clBsdWdpbihcbiAgICAgICAgICAgICAgICAgICAgYCR7Q0hBUl9QTFVTfSR7Z2V0Q291bnRyeUNhbGxpbmdDb2RlKGNvdW50cnlJc29Db2RlLCBtZXRhZGF0YSl9IGAsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBtYXNraXRvSW5pdGlhbENhbGlicmF0aW9uUGx1Z2luKCksXG4gICAgICAgICAgICBdLFxuICAgICAgICB9O1xuICAgIH1cbn1cbiIsIjx0dWktdGV4dGZpZWxkXG4gICAgY2xhc3M9XCJ0LXNlbGVjdFwiXG4gICAgW2NvbnRlbnRdPVwiZmxhZ1wiXG4gICAgW3R1aUNoZXZyb25dPVwib3BlbigpXCJcbj5cbiAgICA8c2VsZWN0XG4gICAgICAgIGFyaWEtbGFiZWw9XCJDb3VudHJ5XCJcbiAgICAgICAgbmdNb2RlbD1cIlwiXG4gICAgICAgIHR1aVRleHRmaWVsZFxuICAgICAgICBbYXR0ci5kYXRhLW1vZGVdPVwibW9kZSgpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICAgICAgICBbZm9jdXNlZF09XCJvcGVuKClcIlxuICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcbiAgICA+PC9zZWxlY3Q+XG5cbiAgICA8bmctdGVtcGxhdGUgI2ZsYWc+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICAgIGNsYXNzPVwidC1mbGFnXCJcbiAgICAgICAgICAgIFthbHRdPVwibmFtZXMoKT8uW2NvdW50cnlJc29Db2RlKCldXCJcbiAgICAgICAgICAgIFtzcmNdPVwiY291bnRyeUlzb0NvZGUoKSB8IHR1aUZsYWdcIlxuICAgICAgICAvPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L3R1aS10ZXh0ZmllbGQ+XG5cbjx0dWktdGV4dGZpZWxkPlxuICAgIDwhLS1UT0RPOiBSZXBsYWNlIGF0dHJpYnV0ZSBiaW5kaW5ncyB3aXRoIGlucHV0cyBhZnRlciBBbmd1bGFyIHVwZGF0ZWQgYW5kIHNpZ25hbCBiaW5kaW5ncyBwcm9wZXJseSB1cGRhdGUtLT5cbiAgICA8aW5wdXRcbiAgICAgICAgYXV0b2NvbXBsZXRlPVwibmV3LXBhc3N3b3JkXCJcbiAgICAgICAgdHVpVGV4dGZpZWxkXG4gICAgICAgIFthdHRyLmRhdGEtbW9kZV09XCJtb2RlKClcIlxuICAgICAgICBbYXR0ci5yZWFkb25seV09XCJyZWFkT25seSgpIHx8IG51bGxcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gICAgICAgIFttYXNraXRvXT1cIm1hc2soKVwiXG4gICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInRleHRmaWVsZFZhbHVlXCJcbiAgICAgICAgKGJlZm9yZWlucHV0LmNhcHR1cmUpPVwib25QYXN0ZSgkZXZlbnQpXCJcbiAgICAgICAgKGJsdXIpPVwib25Ub3VjaGVkKClcIlxuICAgICAgICAoZm9jdXMpPVwiIXJlYWRPbmx5KCkgJiYgb25Gb2N1cygpXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAvPlxuXG4gICAgPCEtLVxuICAgIFRPRE86IGdldCByaWQgb2YgYnVpbHQtaW4gaW5wdXQgYW5kIGxhYmVsIGFuZCBqdXN0IGV4dGVybmFsaXplIGV2ZXJ5dGhpbmcgaW4gNS4wXG4gICAgPHR1aS1pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsPlxuICAgICAgPGxhYmVsIHR1aUxhYmVsPk15IGxhYmVsPC9sYWJlbD5cbiAgICAgIDxpbnB1dCB0dWlUZXh0ZmllbGQgcGxhY2Vob2xkZXI9XCJNeSBwbGFjZWhvbGRlclwiIFsobmdNb2RlbCldPVwidmFsdWVcIiAvPlxuICAgICAgPHR1aS1pY29uIGljb249XCJAdHVpLnBob25lXCIgLz5cbiAgICA8L3R1aS1pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsPlxuICAgIC0tPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInR1aS1pY29uLCBpbWdcIiAvPlxuXG4gICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICA8bmctY29udGVudCAvPlxuICAgIDwvbGFiZWw+XG48L3R1aS10ZXh0ZmllbGQ+XG5cbjxuZy1jb250YWluZXIgKnR1aVRleHRmaWVsZERyb3Bkb3duPlxuICAgIDx0dWktdGV4dGZpZWxkXG4gICAgICAgICpuZ0lmPVwiY291bnRyeVNlYXJjaFwiXG4gICAgICAgIHR1aVRleHRmaWVsZFNpemU9XCJtXCJcbiAgICAgICAgY2xhc3M9XCJ0LXNlYXJjaFwiXG4gICAgICAgIFtpY29uU3RhcnRdPVwiaWNvbnMuc2VhcmNoXCJcbiAgICA+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHVpVGV4dGZpZWxkXG4gICAgICAgICAgICBbZm9jdXNlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cInNlYXJjaCgpXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJsYWJlbCgpXCJcbiAgICAgICAgICAgIFt0dWlBdXRvRm9jdXNdPVwiIWlzSW9zXCJcbiAgICAgICAgICAgIChrZXlkb3duLmFycm93RG93bik9XCJmb2N1c0ZpcnN0SXRlbSgpXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlYXJjaC5zZXQoJGV2ZW50KVwiXG4gICAgICAgIC8+XG4gICAgPC90dWktdGV4dGZpZWxkPlxuXG4gICAgPHR1aS1kYXRhLWxpc3QgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWQoKVwiXG4gICAgICAgICAgICB0dWlPcHRpb25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKGl0ZW0uaXNvKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidC1mbGFnXCJcbiAgICAgICAgICAgICAgICBbc3JjXT1cIml0ZW0uaXNvIHwgdHVpRmxhZ1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0LW5hbWVcIj57eyBpdGVtLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInQtY29kZVwiPnt7IGl0ZW0uY29kZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC90dWktZGF0YS1saXN0PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
@@ -60,4 +60,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
60
60
|
pure: false,
|
|
61
61
|
}]
|
|
62
62
|
}], propDecorators: { filter: [] } });
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWJ5LWlucHV0LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvcGlwZXMvZmlsdGVyLWJ5LWlucHV0L2ZpbHRlci1ieS1pbnB1dC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUU1RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDMUQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDdkUsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDMUUsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHFCQUFxQixDQUFDOztBQUU5QywrRkFBK0Y7QUFDL0YsTUFLYSxvQkFBb0I7SUFMakM7UUFNSSwwREFBMEQ7UUFDekMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQzVELFNBQUksR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztLQTBFdEQ7SUF0RVUsU0FBUyxDQUNaLEtBQXdELEVBQ3hELFVBQStCLG1CQUFtQjtRQUVsRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQ2QsS0FBSyxFQUNMLE9BQU8sRUFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxNQUFNLEVBQzdCLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLGFBQWEsQ0FBQyxLQUFLO1lBQ3JDLElBQUksQ0FBQyxJQUFZLENBQUMsc0JBQXNCLEVBQUUsS0FBSztZQUNoRCxFQUFFLENBQ1QsQ0FBQztJQUNOLENBQUM7SUFHTyxNQUFNLENBQ1YsS0FBd0QsRUFDeEQsT0FBNEIsRUFDNUIsU0FBOEIsRUFDOUIsS0FBYTtRQUViLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDUixPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDO1lBQ25CLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQztZQUNuRCxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRU8sVUFBVSxDQUNkLEtBQW1CLEVBQ25CLE9BQTRCLEVBQzVCLFNBQThCLEVBQzlCLEtBQWE7UUFFYixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFckQsT0FBTyxLQUFLLElBQUksSUFBSTtZQUNoQixDQUFDLENBQUMsS0FBSztZQUNQLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFTyxRQUFRLENBQ1osS0FBa0MsRUFDbEMsT0FBNEIsRUFDNUIsU0FBOEIsRUFDOUIsS0FBYTtRQUViLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUVsRixPQUFPLEtBQUssSUFBSSxJQUFJO1lBQ2hCLENBQUMsQ0FBQyxLQUFLO1lBQ1AsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRU8sUUFBUSxDQUNaLEtBQW1CLEVBQ25CLFNBQThCLEVBQzlCLEtBQWE7UUFFYixvREFBb0Q7UUFDcEQsSUFBSyxJQUFJLENBQUMsSUFBWSxDQUFDLFlBQVksRUFBRTtZQUNqQyxPQUFPLFNBQVMsQ0FBQztTQUNwQjtRQUVELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FDYixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEtBQUssS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQzlFLENBQUM7SUFDTixDQUFDOytHQTVFUSxvQkFBb0I7NkdBQXBCLG9CQUFvQjs7QUFzQnJCO0lBRFAsT0FBTztrREFjUDtTQW5DUSxvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkFMaEMsSUFBSTttQkFBQztvQkFDRixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFLGtCQUFrQjtvQkFDeEIsSUFBSSxFQUFFLEtBQUs7aUJBQ2Q7OEJBdUJXLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7UGlwZVRyYW5zZm9ybX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2luamVjdCwgUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RVSV9ERUZBVUxUX01BVENIRVJ9IGZyb20gJ0B0YWlnYS11aS9jZGsvY29uc3RhbnRzJztcbmltcG9ydCB0eXBlIHtUdWlTdHJpbmdIYW5kbGVyLCBUdWlTdHJpbmdNYXRjaGVyfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3R5cGVzJztcbmltcG9ydCB7dHVpUHVyZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9taXNjZWxsYW5lb3VzJztcbmltcG9ydCB7VFVJX0RBVEFfTElTVF9IT1NUfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL2RhdGEtbGlzdCc7XG5pbXBvcnQge1R1aVRleHRmaWVsZENvbXBvbmVudH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy90ZXh0ZmllbGQnO1xuaW1wb3J0IHt0dWlJc0ZsYXR9IGZyb20gJ0B0YWlnYS11aS9raXQvdXRpbHMnO1xuXG4vLyBUT0RPOiBDb25zaWRlciByZXBsYWNpbmcgVHVpVGV4dGZpZWxkQ29tcG9uZW50IHdpdGggcHJvcGVyIHRva2VuIG9uY2Ugd2UgcmVmYWN0b3IgdGV4dGZpZWxkc1xuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ3R1aUZpbHRlckJ5SW5wdXQnLFxuICAgIHB1cmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlGaWx0ZXJCeUlucHV0UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIC8vIFRPRE86IFJlbW92ZSBvcHRpb25hbCBhZnRlciBsZWdhY3kgY29udHJvbHMgYXJlIGRyb3BwZWRcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRleHRmaWVsZCA9IGluamVjdChUdWlUZXh0ZmllbGRDb21wb25lbnQsIHtvcHRpb25hbDogdHJ1ZX0pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaG9zdCA9IGluamVjdChUVUlfREFUQV9MSVNUX0hPU1QpO1xuXG4gICAgcHVibGljIHRyYW5zZm9ybTxUPihpdGVtczogbnVsbCwgbWF0Y2hlcj86IFR1aVN0cmluZ01hdGNoZXI8VD4pOiBudWxsO1xuICAgIHB1YmxpYyB0cmFuc2Zvcm08VD4oaXRlbXM6IHJlYWRvbmx5IFRbXSwgbWF0Y2hlcj86IFR1aVN0cmluZ01hdGNoZXI8VD4pOiByZWFkb25seSBUW107XG4gICAgcHVibGljIHRyYW5zZm9ybTxUPihcbiAgICAgICAgaXRlbXM6IFJlYWRvbmx5QXJyYXk8cmVhZG9ubHkgVFtdPiB8IHJlYWRvbmx5IFRbXSB8IG51bGwsXG4gICAgICAgIG1hdGNoZXI6IFR1aVN0cmluZ01hdGNoZXI8VD4gPSBUVUlfREVGQVVMVF9NQVRDSEVSLFxuICAgICk6IFJlYWRvbmx5QXJyYXk8cmVhZG9ubHkgVFtdPiB8IHJlYWRvbmx5IFRbXSB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXI8VD4oXG4gICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICAgIG1hdGNoZXIsXG4gICAgICAgICAgICB0aGlzLmhvc3Quc3RyaW5naWZ5IHx8IFN0cmluZyxcbiAgICAgICAgICAgIHRoaXMudGV4dGZpZWxkPy5pbnB1dD8ubmF0aXZlRWxlbWVudC52YWx1ZSB8fFxuICAgICAgICAgICAgICAgICh0aGlzLmhvc3QgYXMgYW55KS5uYXRpdmVGb2N1c2FibGVFbGVtZW50Py52YWx1ZSB8fFxuICAgICAgICAgICAgICAgICcnLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBmaWx0ZXI8VD4oXG4gICAgICAgIGl0ZW1zOiBSZWFkb25seUFycmF5PHJlYWRvbmx5IFRbXT4gfCByZWFkb25seSBUW10gfCBudWxsLFxuICAgICAgICBtYXRjaGVyOiBUdWlTdHJpbmdNYXRjaGVyPFQ+LFxuICAgICAgICBzdHJpbmdpZnk6IFR1aVN0cmluZ0hhbmRsZXI8VD4sXG4gICAgICAgIHF1ZXJ5OiBzdHJpbmcsXG4gICAgKTogUmVhZG9ubHlBcnJheTxyZWFkb25seSBUW10+IHwgcmVhZG9ubHkgVFtdIHwgbnVsbCB7XG4gICAgICAgIGlmICghaXRlbXMpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHR1aUlzRmxhdChpdGVtcylcbiAgICAgICAgICAgID8gdGhpcy5maWx0ZXJGbGF0KGl0ZW1zLCBtYXRjaGVyLCBzdHJpbmdpZnksIHF1ZXJ5KVxuICAgICAgICAgICAgOiB0aGlzLmZpbHRlcjJkKGl0ZW1zLCBtYXRjaGVyLCBzdHJpbmdpZnksIHF1ZXJ5KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbHRlckZsYXQ8VD4oXG4gICAgICAgIGl0ZW1zOiByZWFkb25seSBUW10sXG4gICAgICAgIG1hdGNoZXI6IFR1aVN0cmluZ01hdGNoZXI8VD4sXG4gICAgICAgIHN0cmluZ2lmeTogVHVpU3RyaW5nSGFuZGxlcjxUPixcbiAgICAgICAgcXVlcnk6IHN0cmluZyxcbiAgICApOiByZWFkb25seSBUW10ge1xuICAgICAgICBjb25zdCBtYXRjaCA9IHRoaXMuZ2V0TWF0Y2goaXRlbXMsIHN0cmluZ2lmeSwgcXVlcnkpO1xuXG4gICAgICAgIHJldHVybiBtYXRjaCAhPSBudWxsXG4gICAgICAgICAgICA/IGl0ZW1zXG4gICAgICAgICAgICA6IGl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gbWF0Y2hlcihpdGVtLCBxdWVyeSwgc3RyaW5naWZ5KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaWx0ZXIyZDxUPihcbiAgICAgICAgaXRlbXM6IFJlYWRvbmx5QXJyYXk8cmVhZG9ubHkgVFtdPixcbiAgICAgICAgbWF0Y2hlcjogVHVpU3RyaW5nTWF0Y2hlcjxUPixcbiAgICAgICAgc3RyaW5naWZ5OiBUdWlTdHJpbmdIYW5kbGVyPFQ+LFxuICAgICAgICBxdWVyeTogc3RyaW5nLFxuICAgICk6IFJlYWRvbmx5QXJyYXk8cmVhZG9ubHkgVFtdPiB7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gaXRlbXMuZmluZCgoaXRlbSkgPT4gdGhpcy5nZXRNYXRjaChpdGVtLCBzdHJpbmdpZnksIHF1ZXJ5KSAhPSBudWxsKTtcblxuICAgICAgICByZXR1cm4gbWF0Y2ggIT0gbnVsbFxuICAgICAgICAgICAgPyBpdGVtc1xuICAgICAgICAgICAgOiBpdGVtcy5tYXAoKGlubmVyKSA9PiB0aGlzLmZpbHRlckZsYXQoaW5uZXIsIG1hdGNoZXIsIHN0cmluZ2lmeSwgcXVlcnkpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE1hdGNoPFQ+KFxuICAgICAgICBpdGVtczogcmVhZG9ubHkgVFtdLFxuICAgICAgICBzdHJpbmdpZnk6IFR1aVN0cmluZ0hhbmRsZXI8VD4sXG4gICAgICAgIHF1ZXJ5OiBzdHJpbmcsXG4gICAgKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIC8vIFRPRE86IFJlZmFjdG9yIHdoZW4gdHVpLXRleHRmaWVsZFttdWx0aV0gaXMgcmVhZHlcbiAgICAgICAgaWYgKCh0aGlzLmhvc3QgYXMgYW55KS50YWdWYWxpZGF0b3IpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXRlbXMuZmluZChcbiAgICAgICAgICAgIChpdGVtKSA9PiBzdHJpbmdpZnkoaXRlbSkudG9Mb2NhbGVMb3dlckNhc2UoKSA9PT0gcXVlcnkudG9Mb2NhbGVMb3dlckNhc2UoKSxcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -128,7 +128,12 @@ class TuiInputNumber extends TuiControl {
|
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
130
|
onStep(step) {
|
|
131
|
-
this.
|
|
131
|
+
const newValue = this.formatNumber(tuiClamp((this.value() ?? 0) + step, this.min(), this.max()));
|
|
132
|
+
if (this.value() === null) {
|
|
133
|
+
const caretIndex = newValue.length - this.postfix().length;
|
|
134
|
+
setTimeout(() => this.element.setSelectionRange(caretIndex, caretIndex));
|
|
135
|
+
}
|
|
136
|
+
this.textfieldValue.set(newValue);
|
|
132
137
|
}
|
|
133
138
|
formatNumber(value) {
|
|
134
139
|
if (value === null || Number.isNaN(value)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-kit-components-input-number.mjs","sources":["../../../projects/kit/components/input-number/input-number.options.ts","../../../projects/kit/components/input-number/input-number.component.ts","../../../projects/kit/components/input-number/input-number.template.html","../../../projects/kit/components/input-number/taiga-ui-kit-components-input-number.ts"],"sourcesContent":["import type {TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiInputNumberOptions {\n readonly max: number;\n readonly min: number;\n readonly prefix: string;\n readonly postfix: string;\n readonly step: number;\n readonly icons: Readonly<{\n decrease: string;\n increase: string;\n }>;\n readonly valueTransformer: TuiValueTransformer<number | null> | null;\n}\n\nexport const TUI_INPUT_NUMBER_DEFAULT_OPTIONS: TuiInputNumberOptions = {\n min: Number.MIN_SAFE_INTEGER,\n max: Number.MAX_SAFE_INTEGER,\n prefix: '',\n postfix: '',\n step: 0,\n icons: {\n increase: '@tui.plus',\n decrease: '@tui.minus',\n },\n valueTransformer: null,\n};\n\nexport const [TUI_INPUT_NUMBER_OPTIONS, tuiInputNumberOptionsProvider] = tuiCreateOptions(\n TUI_INPUT_NUMBER_DEFAULT_OPTIONS,\n);\n","import {NgIf} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n Input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {MaskitoDirective} from '@maskito/angular';\nimport type {MaskitoOptions} from '@maskito/core';\nimport {maskitoInitialCalibrationPlugin} from '@maskito/core';\nimport {\n maskitoCaretGuard,\n maskitoNumberOptionsGenerator,\n maskitoParseNumber,\n} from '@maskito/kit';\nimport {tuiAsControl, TuiControl, tuiValueTransformerFrom} from '@taiga-ui/cdk/classes';\nimport {CHAR_HYPHEN, CHAR_MINUS, TUI_ALLOW_SIGNAL_WRITES} from '@taiga-ui/cdk/constants';\nimport {TUI_IS_IOS, tuiFallbackValueProvider} from '@taiga-ui/cdk/tokens';\nimport {tuiInjectElement, tuiValueBinding} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp, tuiIsSafeToRound} from '@taiga-ui/cdk/utils/math';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {\n TUI_TEXTFIELD_OPTIONS,\n TuiTextfieldContent,\n TuiWithTextfield,\n} from '@taiga-ui/core/components/textfield';\nimport {TUI_DEFAULT_NUMBER_FORMAT, TUI_NUMBER_FORMAT} from '@taiga-ui/core/tokens';\nimport {tuiFormatNumber} from '@taiga-ui/core/utils/format';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\nimport {TUI_INPUT_NUMBER_OPTIONS} from './input-number.options';\n\nconst DEFAULT_MAX_LENGTH = 18;\n\n@Component({\n standalone: true,\n selector: 'input[tuiInputNumber]',\n imports: [NgIf, TuiButton, TuiTextfieldContent],\n templateUrl: './input-number.template.html',\n styleUrls: ['./input-number.style.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiAsControl(TuiInputNumber),\n tuiFallbackValueProvider(null),\n tuiValueTransformerFrom(TUI_INPUT_NUMBER_OPTIONS),\n ],\n hostDirectives: [TuiWithTextfield, MaskitoDirective],\n host: {\n '[disabled]': 'disabled()',\n '[attr.inputMode]': 'inputMode()',\n '[attr.maxLength]': 'maxLength()',\n '(input)': 'textfieldValue.set(element.value)',\n '(blur)': 'onBlur()',\n '(focus)': 'onFocus()',\n '(keydown.arrowDown)': 'onStep(-step())',\n '(keydown.arrowUp)': 'onStep(step())',\n '[class._with-buttons]': 'step()',\n },\n})\nexport class TuiInputNumber extends TuiControl<number | null> {\n private readonly isIOS = inject(TUI_IS_IOS);\n private readonly numberFormat = toSignal(inject(TUI_NUMBER_FORMAT), {\n initialValue: TUI_DEFAULT_NUMBER_FORMAT,\n });\n\n private readonly precision = computed(() =>\n Number.isNaN(this.numberFormat().precision) ? 2 : this.numberFormat().precision,\n );\n\n private readonly isIntermediateState = computed(() => {\n const value = maskitoParseNumber(\n this.textfieldValue(),\n this.numberFormat().decimalSeparator,\n );\n\n return value < 0 ? value > this.max() : value < this.min();\n });\n\n protected readonly onChangeEffect = effect(() => {\n const value = maskitoParseNumber(\n this.textfieldValue(),\n this.numberFormat().decimalSeparator,\n );\n\n if (Number.isNaN(value)) {\n this.onChange(null);\n\n return;\n }\n\n if (\n this.isIntermediateState() ||\n value < this.min() ||\n value > this.max() ||\n this.value() === value\n ) {\n return;\n }\n\n this.onChange(value);\n }, TUI_ALLOW_SIGNAL_WRITES);\n\n protected readonly options = inject(TUI_INPUT_NUMBER_OPTIONS);\n protected readonly min = signal(this.options.min);\n protected readonly max = signal(this.options.max);\n protected readonly step = signal(this.options.step);\n protected readonly prefix = signal(this.options.prefix);\n protected readonly postfix = signal(this.options.postfix);\n protected readonly textfieldOptions = inject(TUI_TEXTFIELD_OPTIONS);\n protected readonly element = tuiInjectElement<HTMLInputElement>();\n protected readonly textfieldValue = tuiValueBinding();\n\n protected readonly inputMode = computed(() => {\n if (this.isIOS && this.min() < 0) {\n // iPhone does not have minus sign if inputMode is equal to 'numeric' / 'decimal'\n return 'text';\n }\n\n return this.precision() ? 'decimal' : 'numeric';\n });\n\n protected readonly maxLength = computed(() => {\n const {decimalSeparator, thousandSeparator} = this.numberFormat();\n const decimalPart =\n !!this.precision() && this.textfieldValue().includes(decimalSeparator);\n const precision = decimalPart ? Math.min(this.precision() + 1, 20) : 0;\n const takeThousand = thousandSeparator.repeat(5).length;\n\n return DEFAULT_MAX_LENGTH + precision + takeThousand;\n });\n\n protected readonly mask = tuiMaskito(\n computed(({decimalMode, ...numberFormat} = this.numberFormat()) =>\n this.computeMask({\n ...numberFormat,\n precision: this.precision(),\n min: this.min(),\n max: this.max(),\n prefix: this.prefix(),\n postfix: this.postfix(),\n decimalZeroPadding: decimalMode === 'always',\n }),\n ),\n );\n\n @Input('min')\n public set minSetter(x: number | null) {\n this.updateMinMaxLimits(x, this.max());\n }\n\n @Input('max')\n public set maxSetter(x: number | null) {\n this.updateMinMaxLimits(this.min(), x);\n }\n\n // TODO(v5): replace with signal input\n @Input('prefix')\n public set prefixSetter(x: string) {\n this.prefix.set(x);\n }\n\n // TODO(v5): replace with signal input\n @Input('postfix')\n public set postfixSetter(x: string) {\n this.postfix.set(x);\n }\n\n // TODO(v5): replace with signal input\n @Input('step')\n public set stepSetter(x: number) {\n this.step.set(x);\n }\n\n public override writeValue(value: number | null): void {\n super.writeValue(Number.isNaN(value) ? null : value);\n this.textfieldValue.set(this.formatNumber(this.value()));\n }\n\n protected onBlur(): void {\n this.onTouched();\n\n if (!this.isIntermediateState()) {\n this.textfieldValue.set(this.formatNumber(this.value()));\n }\n }\n\n protected onFocus(): void {\n const value = maskitoParseNumber(\n this.textfieldValue(),\n this.numberFormat().decimalSeparator,\n );\n\n if (Number.isNaN(value) && !this.readOnly()) {\n this.textfieldValue.set(this.prefix() + this.postfix());\n }\n }\n\n protected onStep(step: number): void {\n this.textfieldValue.set(\n this.formatNumber(\n tuiClamp((this.value() ?? 0) + step, this.min(), this.max()),\n ),\n );\n }\n\n private formatNumber(value: number | null): string {\n if (value === null || Number.isNaN(value)) {\n return '';\n }\n\n return (\n this.prefix() +\n tuiFormatNumber(value, {\n ...this.numberFormat(),\n /**\n * Number can satisfy interval [Number.MIN_SAFE_INTEGER; Number.MAX_SAFE_INTEGER]\n * but its rounding can violate it.\n * Before BigInt support there is no perfect solution – only trade off.\n * No rounding is better than lose precision and incorrect mutation of already valid value.\n */\n precision: tuiIsSafeToRound(value, this.precision())\n ? this.precision()\n : Infinity,\n }).replace(CHAR_HYPHEN, CHAR_MINUS) +\n this.postfix()\n );\n }\n\n private updateMinMaxLimits(\n nullableMin: number | null,\n nullableMax: number | null,\n ): void {\n const min =\n this.transformer?.fromControlValue(nullableMin) ??\n nullableMin ??\n this.options.min;\n const max =\n this.transformer?.fromControlValue(nullableMax) ??\n nullableMax ??\n this.options.max;\n\n this.min.set(Math.min(min, max));\n this.max.set(Math.max(min, max));\n }\n\n private computeMask(\n params: NonNullable<Parameters<typeof maskitoNumberOptionsGenerator>[0]>,\n ): MaskitoOptions {\n const {prefix = '', postfix = ''} = params;\n const {plugins, ...options} = maskitoNumberOptionsGenerator(params);\n const initialCalibrationPlugin = maskitoInitialCalibrationPlugin(\n maskitoNumberOptionsGenerator({\n ...params,\n min: Number.MIN_SAFE_INTEGER,\n max: Number.MAX_SAFE_INTEGER,\n }),\n );\n\n return {\n ...options,\n plugins: [\n ...plugins,\n initialCalibrationPlugin,\n maskitoCaretGuard((value) => [\n prefix.length,\n value.length - postfix.length,\n ]),\n ],\n };\n }\n}\n","<ng-container *tuiTextfieldContent>\n <section\n *ngIf=\"step()\"\n class=\"t-input-number-buttons\"\n >\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"textfieldOptions.appearance()\"\n [disabled]=\"!interactive() || value()! >= max()\"\n [iconStart]=\"options.icons.increase\"\n (click.prevent)=\"onStep(step())\"\n (mousedown.prevent)=\"element.focus()\"\n >\n +\n </button>\n\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"textfieldOptions.appearance()\"\n [disabled]=\"!interactive() || value()! <= min()\"\n [iconStart]=\"options.icons.decrease\"\n (click.prevent)=\"onStep(-step())\"\n (mousedown.prevent)=\"element.focus()\"\n >\n -\n </button>\n </section>\n</ng-container>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taiga-ui-kit-components-input-number.mjs","sources":["../../../projects/kit/components/input-number/input-number.options.ts","../../../projects/kit/components/input-number/input-number.component.ts","../../../projects/kit/components/input-number/input-number.template.html","../../../projects/kit/components/input-number/taiga-ui-kit-components-input-number.ts"],"sourcesContent":["import type {TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiInputNumberOptions {\n readonly max: number;\n readonly min: number;\n readonly prefix: string;\n readonly postfix: string;\n readonly step: number;\n readonly icons: Readonly<{\n decrease: string;\n increase: string;\n }>;\n readonly valueTransformer: TuiValueTransformer<number | null> | null;\n}\n\nexport const TUI_INPUT_NUMBER_DEFAULT_OPTIONS: TuiInputNumberOptions = {\n min: Number.MIN_SAFE_INTEGER,\n max: Number.MAX_SAFE_INTEGER,\n prefix: '',\n postfix: '',\n step: 0,\n icons: {\n increase: '@tui.plus',\n decrease: '@tui.minus',\n },\n valueTransformer: null,\n};\n\nexport const [TUI_INPUT_NUMBER_OPTIONS, tuiInputNumberOptionsProvider] = tuiCreateOptions(\n TUI_INPUT_NUMBER_DEFAULT_OPTIONS,\n);\n","import {NgIf} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n Input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {MaskitoDirective} from '@maskito/angular';\nimport type {MaskitoOptions} from '@maskito/core';\nimport {maskitoInitialCalibrationPlugin} from '@maskito/core';\nimport {\n maskitoCaretGuard,\n maskitoNumberOptionsGenerator,\n maskitoParseNumber,\n} from '@maskito/kit';\nimport {tuiAsControl, TuiControl, tuiValueTransformerFrom} from '@taiga-ui/cdk/classes';\nimport {CHAR_HYPHEN, CHAR_MINUS, TUI_ALLOW_SIGNAL_WRITES} from '@taiga-ui/cdk/constants';\nimport {TUI_IS_IOS, tuiFallbackValueProvider} from '@taiga-ui/cdk/tokens';\nimport {tuiInjectElement, tuiValueBinding} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp, tuiIsSafeToRound} from '@taiga-ui/cdk/utils/math';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {\n TUI_TEXTFIELD_OPTIONS,\n TuiTextfieldContent,\n TuiWithTextfield,\n} from '@taiga-ui/core/components/textfield';\nimport {TUI_DEFAULT_NUMBER_FORMAT, TUI_NUMBER_FORMAT} from '@taiga-ui/core/tokens';\nimport {tuiFormatNumber} from '@taiga-ui/core/utils/format';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\nimport {TUI_INPUT_NUMBER_OPTIONS} from './input-number.options';\n\nconst DEFAULT_MAX_LENGTH = 18;\n\n@Component({\n standalone: true,\n selector: 'input[tuiInputNumber]',\n imports: [NgIf, TuiButton, TuiTextfieldContent],\n templateUrl: './input-number.template.html',\n styleUrls: ['./input-number.style.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiAsControl(TuiInputNumber),\n tuiFallbackValueProvider(null),\n tuiValueTransformerFrom(TUI_INPUT_NUMBER_OPTIONS),\n ],\n hostDirectives: [TuiWithTextfield, MaskitoDirective],\n host: {\n '[disabled]': 'disabled()',\n '[attr.inputMode]': 'inputMode()',\n '[attr.maxLength]': 'maxLength()',\n '(input)': 'textfieldValue.set(element.value)',\n '(blur)': 'onBlur()',\n '(focus)': 'onFocus()',\n '(keydown.arrowDown)': 'onStep(-step())',\n '(keydown.arrowUp)': 'onStep(step())',\n '[class._with-buttons]': 'step()',\n },\n})\nexport class TuiInputNumber extends TuiControl<number | null> {\n private readonly isIOS = inject(TUI_IS_IOS);\n private readonly numberFormat = toSignal(inject(TUI_NUMBER_FORMAT), {\n initialValue: TUI_DEFAULT_NUMBER_FORMAT,\n });\n\n private readonly precision = computed(() =>\n Number.isNaN(this.numberFormat().precision) ? 2 : this.numberFormat().precision,\n );\n\n private readonly isIntermediateState = computed(() => {\n const value = maskitoParseNumber(\n this.textfieldValue(),\n this.numberFormat().decimalSeparator,\n );\n\n return value < 0 ? value > this.max() : value < this.min();\n });\n\n protected readonly onChangeEffect = effect(() => {\n const value = maskitoParseNumber(\n this.textfieldValue(),\n this.numberFormat().decimalSeparator,\n );\n\n if (Number.isNaN(value)) {\n this.onChange(null);\n\n return;\n }\n\n if (\n this.isIntermediateState() ||\n value < this.min() ||\n value > this.max() ||\n this.value() === value\n ) {\n return;\n }\n\n this.onChange(value);\n }, TUI_ALLOW_SIGNAL_WRITES);\n\n protected readonly options = inject(TUI_INPUT_NUMBER_OPTIONS);\n protected readonly min = signal(this.options.min);\n protected readonly max = signal(this.options.max);\n protected readonly step = signal(this.options.step);\n protected readonly prefix = signal(this.options.prefix);\n protected readonly postfix = signal(this.options.postfix);\n protected readonly textfieldOptions = inject(TUI_TEXTFIELD_OPTIONS);\n protected readonly element = tuiInjectElement<HTMLInputElement>();\n protected readonly textfieldValue = tuiValueBinding();\n\n protected readonly inputMode = computed(() => {\n if (this.isIOS && this.min() < 0) {\n // iPhone does not have minus sign if inputMode is equal to 'numeric' / 'decimal'\n return 'text';\n }\n\n return this.precision() ? 'decimal' : 'numeric';\n });\n\n protected readonly maxLength = computed(() => {\n const {decimalSeparator, thousandSeparator} = this.numberFormat();\n const decimalPart =\n !!this.precision() && this.textfieldValue().includes(decimalSeparator);\n const precision = decimalPart ? Math.min(this.precision() + 1, 20) : 0;\n const takeThousand = thousandSeparator.repeat(5).length;\n\n return DEFAULT_MAX_LENGTH + precision + takeThousand;\n });\n\n protected readonly mask = tuiMaskito(\n computed(({decimalMode, ...numberFormat} = this.numberFormat()) =>\n this.computeMask({\n ...numberFormat,\n precision: this.precision(),\n min: this.min(),\n max: this.max(),\n prefix: this.prefix(),\n postfix: this.postfix(),\n decimalZeroPadding: decimalMode === 'always',\n }),\n ),\n );\n\n @Input('min')\n public set minSetter(x: number | null) {\n this.updateMinMaxLimits(x, this.max());\n }\n\n @Input('max')\n public set maxSetter(x: number | null) {\n this.updateMinMaxLimits(this.min(), x);\n }\n\n // TODO(v5): replace with signal input\n @Input('prefix')\n public set prefixSetter(x: string) {\n this.prefix.set(x);\n }\n\n // TODO(v5): replace with signal input\n @Input('postfix')\n public set postfixSetter(x: string) {\n this.postfix.set(x);\n }\n\n // TODO(v5): replace with signal input\n @Input('step')\n public set stepSetter(x: number) {\n this.step.set(x);\n }\n\n public override writeValue(value: number | null): void {\n super.writeValue(Number.isNaN(value) ? null : value);\n this.textfieldValue.set(this.formatNumber(this.value()));\n }\n\n protected onBlur(): void {\n this.onTouched();\n\n if (!this.isIntermediateState()) {\n this.textfieldValue.set(this.formatNumber(this.value()));\n }\n }\n\n protected onFocus(): void {\n const value = maskitoParseNumber(\n this.textfieldValue(),\n this.numberFormat().decimalSeparator,\n );\n\n if (Number.isNaN(value) && !this.readOnly()) {\n this.textfieldValue.set(this.prefix() + this.postfix());\n }\n }\n\n protected onStep(step: number): void {\n const newValue = this.formatNumber(\n tuiClamp((this.value() ?? 0) + step, this.min(), this.max()),\n );\n\n if (this.value() === null) {\n const caretIndex = newValue.length - this.postfix().length;\n\n setTimeout(() => this.element.setSelectionRange(caretIndex, caretIndex));\n }\n\n this.textfieldValue.set(newValue);\n }\n\n private formatNumber(value: number | null): string {\n if (value === null || Number.isNaN(value)) {\n return '';\n }\n\n return (\n this.prefix() +\n tuiFormatNumber(value, {\n ...this.numberFormat(),\n /**\n * Number can satisfy interval [Number.MIN_SAFE_INTEGER; Number.MAX_SAFE_INTEGER]\n * but its rounding can violate it.\n * Before BigInt support there is no perfect solution – only trade off.\n * No rounding is better than lose precision and incorrect mutation of already valid value.\n */\n precision: tuiIsSafeToRound(value, this.precision())\n ? this.precision()\n : Infinity,\n }).replace(CHAR_HYPHEN, CHAR_MINUS) +\n this.postfix()\n );\n }\n\n private updateMinMaxLimits(\n nullableMin: number | null,\n nullableMax: number | null,\n ): void {\n const min =\n this.transformer?.fromControlValue(nullableMin) ??\n nullableMin ??\n this.options.min;\n const max =\n this.transformer?.fromControlValue(nullableMax) ??\n nullableMax ??\n this.options.max;\n\n this.min.set(Math.min(min, max));\n this.max.set(Math.max(min, max));\n }\n\n private computeMask(\n params: NonNullable<Parameters<typeof maskitoNumberOptionsGenerator>[0]>,\n ): MaskitoOptions {\n const {prefix = '', postfix = ''} = params;\n const {plugins, ...options} = maskitoNumberOptionsGenerator(params);\n const initialCalibrationPlugin = maskitoInitialCalibrationPlugin(\n maskitoNumberOptionsGenerator({\n ...params,\n min: Number.MIN_SAFE_INTEGER,\n max: Number.MAX_SAFE_INTEGER,\n }),\n );\n\n return {\n ...options,\n plugins: [\n ...plugins,\n initialCalibrationPlugin,\n maskitoCaretGuard((value) => [\n prefix.length,\n value.length - postfix.length,\n ]),\n ],\n };\n }\n}\n","<ng-container *tuiTextfieldContent>\n <section\n *ngIf=\"step()\"\n class=\"t-input-number-buttons\"\n >\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"textfieldOptions.appearance()\"\n [disabled]=\"!interactive() || value()! >= max()\"\n [iconStart]=\"options.icons.increase\"\n (click.prevent)=\"onStep(step())\"\n (mousedown.prevent)=\"element.focus()\"\n >\n +\n </button>\n\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"textfieldOptions.appearance()\"\n [disabled]=\"!interactive() || value()! <= min()\"\n [iconStart]=\"options.icons.decrease\"\n (click.prevent)=\"onStep(-step())\"\n (mousedown.prevent)=\"element.focus()\"\n >\n -\n </button>\n </section>\n</ng-container>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -169,7 +169,7 @@ class TuiInputPhoneInternational extends TuiControl {
|
|
|
169
169
|
limitWidth: 'fixed',
|
|
170
170
|
align: 'right',
|
|
171
171
|
}),
|
|
172
|
-
], viewQueries: [{ propertyName: "input", first: true, predicate: MaskitoDirective, descendants: true, read: ElementRef }, { propertyName: "filter", first: true, predicate: TuiAutoFocus, descendants: true, read: ElementRef }, { propertyName: "template", first: true, predicate: i0.forwardRef(function () { return TuiTextfieldDropdownDirective; }), descendants: true, read: TemplateRef }, { propertyName: "listOptions", predicate: TuiOption, descendants: true, read: ElementRef }], usesInheritance: true, hostDirectives: [{ directive: i1.TuiGroup }, { directive: i2.TuiDropdownDirective }, { directive: i2.TuiWithDropdownOpen }], ngImport: i0, template: "<tui-textfield\n class=\"t-select\"\n [content]=\"flag\"\n [tuiChevron]=\"open()\"\n>\n <select\n ngModel=\"\"\n tuiTextfield\n [attr.data-mode]=\"mode()\"\n [disabled]=\"disabled()\"\n [focused]=\"open()\"\n [ngModelOptions]=\"{standalone: true}\"\n ></select>\n\n <ng-template #flag>\n <img\n class=\"t-flag\"\n [alt]=\"names()?.[countryIsoCode()]\"\n [src]=\"countryIsoCode() | tuiFlag\"\n />\n </ng-template>\n</tui-textfield>\n\n<tui-textfield>\n <!--TODO: Replace attribute bindings with inputs after Angular updated and signal bindings properly update-->\n <input\n autocomplete=\"new-password\"\n tuiTextfield\n [attr.data-mode]=\"mode()\"\n [attr.readonly]=\"readOnly() || null\"\n [disabled]=\"disabled()\"\n [maskito]=\"mask()\"\n [ngModelOptions]=\"{standalone: true}\"\n [(ngModel)]=\"textfieldValue\"\n (beforeinput.capture)=\"onPaste($event)\"\n (blur)=\"onTouched()\"\n (focus)=\"!readOnly() && onFocus()\"\n (ngModelChange)=\"onValueChange($event)\"\n />\n\n <!--\n TODO: get rid of built-in input and label and just externalize everything in 5.0\n <tui-input-phone-international>\n <label tuiLabel>My label</label>\n <input tuiTextfield placeholder=\"My placeholder\" [(ngModel)]=\"value\" />\n <tui-icon icon=\"@tui.phone\" />\n </tui-input-phone-international>\n -->\n <ng-content select=\"tui-icon, img\" />\n\n <label tuiLabel>\n <ng-content />\n </label>\n</tui-textfield>\n\n<ng-container *tuiTextfieldDropdown>\n <tui-textfield\n *ngIf=\"countrySearch\"\n tuiTextfieldSize=\"m\"\n class=\"t-search\"\n [iconStart]=\"icons.search\"\n >\n <input\n tuiTextfield\n [focused]=\"true\"\n [ngModel]=\"search()\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!isIos\"\n (keydown.arrowDown)=\"focusFirstItem()\"\n (ngModelChange)=\"search.set($event)\"\n />\n </tui-textfield>\n\n <tui-data-list (keydown)=\"onKeyDown($event)\">\n <button\n *ngFor=\"let item of filtered()\"\n tuiOption\n type=\"button\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-flag\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span class=\"t-name\">{{ item.name }}</span>\n <span class=\"t-code\">{{ item.code }}</span>\n </button>\n </tui-data-list>\n</ng-container>\n", styles: [".t-select{inline-size:5.625rem;flex:none}.t-select[data-size=m]{inline-size:5rem}.t-select[data-size=s]{inline-size:4rem}.t-flag{inline-size:1.75rem;block-size:1.75rem;border-radius:100%}.t-name{margin:0 auto 0 .75rem}.t-code{color:var(--tui-text-secondary);margin-inline-end:.25rem}.t-search{position:sticky;top:.375rem;background:var(--tui-background-elevation-3);box-shadow:0 -1rem var(--tui-background-elevation-3);margin:.375rem .375rem 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.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: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "directive", type: TuiAutoFocus, selector: "[tuiAutoFocus]", inputs: ["tuiAutoFocus"] }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }, { kind: "component", type: i5.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "component", type: i5.TuiOption, selector: "button[tuiOption], a[tuiOption], label[tuiOption]", inputs: ["disabled", "value"] }, { kind: "pipe", type: TuiFlagPipe, name: "tuiFlag" }, { kind: "directive", type: i6.TuiLabel, selector: "label[tuiLabel]" }, { kind: "component", type: i7.TuiSelect, selector: "select[tuiTextfield]", inputs: ["placeholder"] }, { kind: "component", type: i7.TuiTextfieldComponent, selector: "tui-textfield", inputs: ["stringify", "content", "filler"] }, { kind: "directive", type: i7.TuiTextfieldDirective, selector: "input[tuiTextfield]:not([tuiInputCard]):not([tuiInputExpire]):not([tuiInputCVC])" }, { kind: "directive", type: i7.TuiTextfieldOptionsDirective, selector: "[tuiTextfieldAppearance],[tuiTextfieldSize],[tuiTextfieldCleaner]", inputs: ["tuiTextfieldAppearance", "tuiTextfieldSize", "tuiTextfieldCleaner"] }, { kind: "directive", type: i7.TuiTextfieldDropdownDirective, selector: "ng-template[tuiTextfieldDropdown]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
172
|
+
], viewQueries: [{ propertyName: "input", first: true, predicate: MaskitoDirective, descendants: true, read: ElementRef }, { propertyName: "filter", first: true, predicate: TuiAutoFocus, descendants: true, read: ElementRef }, { propertyName: "template", first: true, predicate: i0.forwardRef(function () { return TuiTextfieldDropdownDirective; }), descendants: true, read: TemplateRef }, { propertyName: "listOptions", predicate: TuiOption, descendants: true, read: ElementRef }], usesInheritance: true, hostDirectives: [{ directive: i1.TuiGroup }, { directive: i2.TuiDropdownDirective }, { directive: i2.TuiWithDropdownOpen }], ngImport: i0, template: "<tui-textfield\n class=\"t-select\"\n [content]=\"flag\"\n [tuiChevron]=\"open()\"\n>\n <select\n aria-label=\"Country\"\n ngModel=\"\"\n tuiTextfield\n [attr.data-mode]=\"mode()\"\n [disabled]=\"disabled()\"\n [focused]=\"open()\"\n [ngModelOptions]=\"{standalone: true}\"\n ></select>\n\n <ng-template #flag>\n <img\n class=\"t-flag\"\n [alt]=\"names()?.[countryIsoCode()]\"\n [src]=\"countryIsoCode() | tuiFlag\"\n />\n </ng-template>\n</tui-textfield>\n\n<tui-textfield>\n <!--TODO: Replace attribute bindings with inputs after Angular updated and signal bindings properly update-->\n <input\n autocomplete=\"new-password\"\n tuiTextfield\n [attr.data-mode]=\"mode()\"\n [attr.readonly]=\"readOnly() || null\"\n [disabled]=\"disabled()\"\n [maskito]=\"mask()\"\n [ngModelOptions]=\"{standalone: true}\"\n [(ngModel)]=\"textfieldValue\"\n (beforeinput.capture)=\"onPaste($event)\"\n (blur)=\"onTouched()\"\n (focus)=\"!readOnly() && onFocus()\"\n (ngModelChange)=\"onValueChange($event)\"\n />\n\n <!--\n TODO: get rid of built-in input and label and just externalize everything in 5.0\n <tui-input-phone-international>\n <label tuiLabel>My label</label>\n <input tuiTextfield placeholder=\"My placeholder\" [(ngModel)]=\"value\" />\n <tui-icon icon=\"@tui.phone\" />\n </tui-input-phone-international>\n -->\n <ng-content select=\"tui-icon, img\" />\n\n <label tuiLabel>\n <ng-content />\n </label>\n</tui-textfield>\n\n<ng-container *tuiTextfieldDropdown>\n <tui-textfield\n *ngIf=\"countrySearch\"\n tuiTextfieldSize=\"m\"\n class=\"t-search\"\n [iconStart]=\"icons.search\"\n >\n <input\n tuiTextfield\n [focused]=\"true\"\n [ngModel]=\"search()\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!isIos\"\n (keydown.arrowDown)=\"focusFirstItem()\"\n (ngModelChange)=\"search.set($event)\"\n />\n </tui-textfield>\n\n <tui-data-list (keydown)=\"onKeyDown($event)\">\n <button\n *ngFor=\"let item of filtered()\"\n tuiOption\n type=\"button\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-flag\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span class=\"t-name\">{{ item.name }}</span>\n <span class=\"t-code\">{{ item.code }}</span>\n </button>\n </tui-data-list>\n</ng-container>\n", styles: [".t-select{inline-size:5.625rem;flex:none}.t-select[data-size=m]{inline-size:5rem}.t-select[data-size=s]{inline-size:4rem}.t-flag{inline-size:1.75rem;block-size:1.75rem;border-radius:100%}.t-name{margin:0 auto 0 .75rem}.t-code{color:var(--tui-text-secondary);margin-inline-end:.25rem}.t-search{position:sticky;top:.375rem;background:var(--tui-background-elevation-3);box-shadow:0 -1rem var(--tui-background-elevation-3);margin:.375rem .375rem 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.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: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "directive", type: TuiAutoFocus, selector: "[tuiAutoFocus]", inputs: ["tuiAutoFocus"] }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }, { kind: "component", type: i5.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "component", type: i5.TuiOption, selector: "button[tuiOption], a[tuiOption], label[tuiOption]", inputs: ["disabled", "value"] }, { kind: "pipe", type: TuiFlagPipe, name: "tuiFlag" }, { kind: "directive", type: i6.TuiLabel, selector: "label[tuiLabel]" }, { kind: "component", type: i7.TuiSelect, selector: "select[tuiTextfield]", inputs: ["placeholder"] }, { kind: "component", type: i7.TuiTextfieldComponent, selector: "tui-textfield", inputs: ["stringify", "content", "filler"] }, { kind: "directive", type: i7.TuiTextfieldDirective, selector: "input[tuiTextfield]:not([tuiInputCard]):not([tuiInputExpire]):not([tuiInputCVC])" }, { kind: "directive", type: i7.TuiTextfieldOptionsDirective, selector: "[tuiTextfieldAppearance],[tuiTextfieldSize],[tuiTextfieldCleaner]", inputs: ["tuiTextfieldAppearance", "tuiTextfieldSize", "tuiTextfieldCleaner"] }, { kind: "directive", type: i7.TuiTextfieldDropdownDirective, selector: "ng-template[tuiTextfieldDropdown]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
173
173
|
}
|
|
174
174
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputPhoneInternational, decorators: [{
|
|
175
175
|
type: Component,
|
|
@@ -193,7 +193,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
193
193
|
}),
|
|
194
194
|
], hostDirectives: [TuiGroup, TuiDropdownDirective, TuiWithDropdownOpen], host: {
|
|
195
195
|
'[attr.data-size]': 'size()',
|
|
196
|
-
}, template: "<tui-textfield\n class=\"t-select\"\n [content]=\"flag\"\n [tuiChevron]=\"open()\"\n>\n <select\n ngModel=\"\"\n tuiTextfield\n [attr.data-mode]=\"mode()\"\n [disabled]=\"disabled()\"\n [focused]=\"open()\"\n [ngModelOptions]=\"{standalone: true}\"\n ></select>\n\n <ng-template #flag>\n <img\n class=\"t-flag\"\n [alt]=\"names()?.[countryIsoCode()]\"\n [src]=\"countryIsoCode() | tuiFlag\"\n />\n </ng-template>\n</tui-textfield>\n\n<tui-textfield>\n <!--TODO: Replace attribute bindings with inputs after Angular updated and signal bindings properly update-->\n <input\n autocomplete=\"new-password\"\n tuiTextfield\n [attr.data-mode]=\"mode()\"\n [attr.readonly]=\"readOnly() || null\"\n [disabled]=\"disabled()\"\n [maskito]=\"mask()\"\n [ngModelOptions]=\"{standalone: true}\"\n [(ngModel)]=\"textfieldValue\"\n (beforeinput.capture)=\"onPaste($event)\"\n (blur)=\"onTouched()\"\n (focus)=\"!readOnly() && onFocus()\"\n (ngModelChange)=\"onValueChange($event)\"\n />\n\n <!--\n TODO: get rid of built-in input and label and just externalize everything in 5.0\n <tui-input-phone-international>\n <label tuiLabel>My label</label>\n <input tuiTextfield placeholder=\"My placeholder\" [(ngModel)]=\"value\" />\n <tui-icon icon=\"@tui.phone\" />\n </tui-input-phone-international>\n -->\n <ng-content select=\"tui-icon, img\" />\n\n <label tuiLabel>\n <ng-content />\n </label>\n</tui-textfield>\n\n<ng-container *tuiTextfieldDropdown>\n <tui-textfield\n *ngIf=\"countrySearch\"\n tuiTextfieldSize=\"m\"\n class=\"t-search\"\n [iconStart]=\"icons.search\"\n >\n <input\n tuiTextfield\n [focused]=\"true\"\n [ngModel]=\"search()\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!isIos\"\n (keydown.arrowDown)=\"focusFirstItem()\"\n (ngModelChange)=\"search.set($event)\"\n />\n </tui-textfield>\n\n <tui-data-list (keydown)=\"onKeyDown($event)\">\n <button\n *ngFor=\"let item of filtered()\"\n tuiOption\n type=\"button\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-flag\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span class=\"t-name\">{{ item.name }}</span>\n <span class=\"t-code\">{{ item.code }}</span>\n </button>\n </tui-data-list>\n</ng-container>\n", styles: [".t-select{inline-size:5.625rem;flex:none}.t-select[data-size=m]{inline-size:5rem}.t-select[data-size=s]{inline-size:4rem}.t-flag{inline-size:1.75rem;block-size:1.75rem;border-radius:100%}.t-name{margin:0 auto 0 .75rem}.t-code{color:var(--tui-text-secondary);margin-inline-end:.25rem}.t-search{position:sticky;top:.375rem;background:var(--tui-background-elevation-3);box-shadow:0 -1rem var(--tui-background-elevation-3);margin:.375rem .375rem 0}\n"] }]
|
|
196
|
+
}, template: "<tui-textfield\n class=\"t-select\"\n [content]=\"flag\"\n [tuiChevron]=\"open()\"\n>\n <select\n aria-label=\"Country\"\n ngModel=\"\"\n tuiTextfield\n [attr.data-mode]=\"mode()\"\n [disabled]=\"disabled()\"\n [focused]=\"open()\"\n [ngModelOptions]=\"{standalone: true}\"\n ></select>\n\n <ng-template #flag>\n <img\n class=\"t-flag\"\n [alt]=\"names()?.[countryIsoCode()]\"\n [src]=\"countryIsoCode() | tuiFlag\"\n />\n </ng-template>\n</tui-textfield>\n\n<tui-textfield>\n <!--TODO: Replace attribute bindings with inputs after Angular updated and signal bindings properly update-->\n <input\n autocomplete=\"new-password\"\n tuiTextfield\n [attr.data-mode]=\"mode()\"\n [attr.readonly]=\"readOnly() || null\"\n [disabled]=\"disabled()\"\n [maskito]=\"mask()\"\n [ngModelOptions]=\"{standalone: true}\"\n [(ngModel)]=\"textfieldValue\"\n (beforeinput.capture)=\"onPaste($event)\"\n (blur)=\"onTouched()\"\n (focus)=\"!readOnly() && onFocus()\"\n (ngModelChange)=\"onValueChange($event)\"\n />\n\n <!--\n TODO: get rid of built-in input and label and just externalize everything in 5.0\n <tui-input-phone-international>\n <label tuiLabel>My label</label>\n <input tuiTextfield placeholder=\"My placeholder\" [(ngModel)]=\"value\" />\n <tui-icon icon=\"@tui.phone\" />\n </tui-input-phone-international>\n -->\n <ng-content select=\"tui-icon, img\" />\n\n <label tuiLabel>\n <ng-content />\n </label>\n</tui-textfield>\n\n<ng-container *tuiTextfieldDropdown>\n <tui-textfield\n *ngIf=\"countrySearch\"\n tuiTextfieldSize=\"m\"\n class=\"t-search\"\n [iconStart]=\"icons.search\"\n >\n <input\n tuiTextfield\n [focused]=\"true\"\n [ngModel]=\"search()\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!isIos\"\n (keydown.arrowDown)=\"focusFirstItem()\"\n (ngModelChange)=\"search.set($event)\"\n />\n </tui-textfield>\n\n <tui-data-list (keydown)=\"onKeyDown($event)\">\n <button\n *ngFor=\"let item of filtered()\"\n tuiOption\n type=\"button\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-flag\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span class=\"t-name\">{{ item.name }}</span>\n <span class=\"t-code\">{{ item.code }}</span>\n </button>\n </tui-data-list>\n</ng-container>\n", styles: [".t-select{inline-size:5.625rem;flex:none}.t-select[data-size=m]{inline-size:5rem}.t-select[data-size=s]{inline-size:4rem}.t-flag{inline-size:1.75rem;block-size:1.75rem;border-radius:100%}.t-name{margin:0 auto 0 .75rem}.t-code{color:var(--tui-text-secondary);margin-inline-end:.25rem}.t-search{position:sticky;top:.375rem;background:var(--tui-background-elevation-3);box-shadow:0 -1rem var(--tui-background-elevation-3);margin:.375rem .375rem 0}\n"] }]
|
|
197
197
|
}], propDecorators: { input: [{
|
|
198
198
|
type: ViewChild,
|
|
199
199
|
args: [MaskitoDirective, { read: ElementRef }]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-kit-components-input-phone-international.mjs","sources":["../../../projects/kit/components/input-phone-international/input-phone-international.options.ts","../../../projects/kit/components/input-phone-international/input-phone-international.component.ts","../../../projects/kit/components/input-phone-international/input-phone-international.template.html","../../../projects/kit/components/input-phone-international/taiga-ui-kit-components-input-phone-international.ts"],"sourcesContent":["import type {Provider} from '@angular/core';\nimport {tuiCreateToken, tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiCountryIsoCode} from '@taiga-ui/i18n/types';\nimport type {MetadataJson} from 'libphonenumber-js/core';\nimport type {Observable} from 'rxjs';\nimport {of} from 'rxjs';\n\nexport interface TuiInputPhoneInternationalOptions {\n readonly countries: readonly TuiCountryIsoCode[];\n readonly countryIsoCode: TuiCountryIsoCode;\n readonly metadata: Observable<MetadataJson> | Promise<MetadataJson>;\n readonly separator: string;\n}\n\nexport const TUI_INPUT_PHONE_INTERNATIONAL_DEFAULT_OPTIONS: TuiInputPhoneInternationalOptions =\n {\n countries: [],\n countryIsoCode: 'RU',\n metadata: of({countries: {}, country_calling_codes: {}}),\n separator: '-',\n };\n\n/**\n * Default parameters for input phone international component\n */\nexport const TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS = tuiCreateToken(\n TUI_INPUT_PHONE_INTERNATIONAL_DEFAULT_OPTIONS,\n);\n\nexport function tuiInputPhoneInternationalOptionsProvider(\n options: Partial<TuiInputPhoneInternationalOptions>,\n): Provider {\n return tuiProvideOptions(\n TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS,\n options,\n TUI_INPUT_PHONE_INTERNATIONAL_DEFAULT_OPTIONS,\n );\n}\n","import {CommonModule} from '@angular/common';\nimport type {QueryList} from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n Input,\n Output,\n signal,\n TemplateRef,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport {toObservable, toSignal} from '@angular/core/rxjs-interop';\nimport {FormsModule} from '@angular/forms';\nimport {MaskitoDirective} from '@maskito/angular';\nimport type {MaskitoOptions} from '@maskito/core';\nimport {maskitoInitialCalibrationPlugin, maskitoTransform} from '@maskito/core';\nimport {maskitoRemoveOnBlurPlugin} from '@maskito/kit';\nimport {maskitoGetCountryFromNumber, maskitoPhoneOptionsGenerator} from '@maskito/phone';\nimport {tuiAsControl, TuiControl} from '@taiga-ui/cdk/classes';\nimport {CHAR_PLUS, TUI_DEFAULT_MATCHER} from '@taiga-ui/cdk/constants';\nimport {\n TuiAutoFocus,\n tuiAutoFocusOptionsProvider,\n} from '@taiga-ui/cdk/directives/auto-focus';\nimport {TUI_IS_IOS, tuiFallbackValueProvider} from '@taiga-ui/cdk/tokens';\nimport {tuiIsInputEvent} from '@taiga-ui/cdk/utils/dom';\nimport {tuiDirectiveBinding} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiDataList, TuiOption} from '@taiga-ui/core/components/data-list';\nimport {\n TUI_TEXTFIELD_OPTIONS,\n TuiTextfield,\n TuiTextfieldDropdownDirective,\n tuiTextfieldOptionsProvider,\n} from '@taiga-ui/core/components/textfield';\nimport {\n tuiDropdown,\n TuiDropdownDirective,\n TuiDropdownOpen,\n tuiDropdownOpen,\n tuiDropdownOptionsProvider,\n TuiWithDropdownOpen,\n} from '@taiga-ui/core/directives/dropdown';\nimport {TuiGroup} from '@taiga-ui/core/directives/group';\nimport {TuiFlagPipe} from '@taiga-ui/core/pipes/flag';\nimport {TUI_COMMON_ICONS} from '@taiga-ui/core/tokens';\nimport {tuiIsEditingKey} from '@taiga-ui/core/utils/miscellaneous';\nimport type {TuiCountryIsoCode} from '@taiga-ui/i18n/types';\nimport {TuiChevron} from '@taiga-ui/kit/directives';\nimport {TUI_COUNTRIES, TUI_INTERNATIONAL_SEARCH} from '@taiga-ui/kit/tokens';\nimport {tuiGetCallingCode} from '@taiga-ui/kit/utils';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport {validatePhoneNumberLength} from 'libphonenumber-js';\nimport type {MetadataJson} from 'libphonenumber-js/core';\nimport {getCountryCallingCode} from 'libphonenumber-js/core';\nimport {from, skip} from 'rxjs';\n\nimport {TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS} from './input-phone-international.options';\n\nconst NOT_FORM_CONTROL_SYMBOLS = /[^+\\d]/g;\n\n@Component({\n standalone: true,\n selector: 'tui-input-phone-international',\n imports: [\n CommonModule,\n FormsModule,\n MaskitoDirective,\n TuiAutoFocus,\n TuiChevron,\n TuiDataList,\n TuiFlagPipe,\n TuiTextfield,\n ],\n templateUrl: './input-phone-international.template.html',\n styleUrls: ['./input-phone-international.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiAsControl(TuiInputPhoneInternational),\n tuiFallbackValueProvider(''),\n tuiAutoFocusOptionsProvider({preventScroll: true}),\n tuiTextfieldOptionsProvider({cleaner: signal(false)}),\n tuiDropdownOptionsProvider({\n limitWidth: 'fixed',\n align: 'right',\n }),\n ],\n hostDirectives: [TuiGroup, TuiDropdownDirective, TuiWithDropdownOpen],\n host: {\n '[attr.data-size]': 'size()',\n },\n})\nexport class TuiInputPhoneInternational extends TuiControl<string> {\n @ViewChild(MaskitoDirective, {read: ElementRef})\n private readonly input?: ElementRef<HTMLInputElement>;\n\n @ViewChild(TuiAutoFocus, {read: ElementRef})\n private readonly filter?: ElementRef<HTMLInputElement>;\n\n @ViewChildren(TuiOption, {read: ElementRef})\n private readonly listOptions?: QueryList<ElementRef<HTMLButtonElement>>;\n\n protected readonly isIos = inject(TUI_IS_IOS);\n protected readonly dropdown = tuiDropdown(null);\n protected readonly options = inject(TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS);\n protected readonly size = inject(TUI_TEXTFIELD_OPTIONS).size;\n protected readonly open = tuiDropdownOpen();\n protected readonly names = toSignal(inject(TUI_COUNTRIES));\n protected readonly metadata = toSignal(from(this.options.metadata));\n protected readonly countries = signal(this.options.countries);\n protected readonly countryIsoCode = signal(this.options.countryIsoCode);\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly label = toSignal(inject(TUI_INTERNATIONAL_SEARCH));\n protected readonly search = signal<string>('');\n protected readonly separator = signal(this.options.separator);\n\n protected readonly filtered = computed(() =>\n this.countries()\n .map((iso) => ({\n iso,\n name: this.names()?.[iso] || '',\n code: tuiGetCallingCode(iso, this.metadata()),\n }))\n .filter(({name, code}) => TUI_DEFAULT_MATCHER(name + code, this.search())),\n );\n\n protected readonly mask = computed(() =>\n this.computeMask(this.countryIsoCode(), this.metadata(), this.separator()),\n );\n\n protected readonly $ = tuiDirectiveBinding(\n TuiDropdownOpen,\n 'tuiDropdownEnabled',\n this.interactive,\n );\n\n protected textfieldValue = '';\n\n @Input()\n public countrySearch = false;\n\n @Output()\n public readonly countryIsoCodeChange = toObservable(this.countryIsoCode).pipe(\n skip(1),\n );\n\n @Input('countries')\n public set countriesValue(value: readonly TuiCountryIsoCode[]) {\n this.countries.set(value);\n }\n\n @Input('countryIsoCode')\n public set isoCode(code: TuiCountryIsoCode) {\n this.countryIsoCode.set(code);\n }\n\n public focusFirstItem(): void {\n this.listOptions?.get(0)?.nativeElement.focus();\n }\n\n public onPaste(event: Event): void {\n const phonesMetadata = this.metadata();\n\n if (\n !tuiIsInputEvent(event) ||\n !phonesMetadata ||\n (!event.inputType.includes('Drop') && !event.inputType.includes('Paste'))\n ) {\n return;\n }\n\n const newValue = event.data || '';\n const prefixedValue = newValue.startsWith(CHAR_PLUS)\n ? newValue\n : CHAR_PLUS + newValue;\n\n if (validatePhoneNumberLength(prefixedValue) === 'TOO_SHORT') {\n return;\n }\n\n const countryIsoCode = maskitoGetCountryFromNumber(prefixedValue, phonesMetadata);\n\n if (countryIsoCode) {\n this.countryIsoCode.set(countryIsoCode);\n }\n }\n\n public onItemClick(isoCode: TuiCountryIsoCode): void {\n this.open.set(false);\n this.countryIsoCode.set(isoCode);\n this.input?.nativeElement.focus();\n }\n\n public override writeValue(unmaskedValue: string): void {\n super.writeValue(unmaskedValue);\n\n const maskOptions = this.mask();\n\n this.textfieldValue = maskOptions\n ? maskitoTransform(this.value(), maskOptions)\n : this.value(); // it will be calibrated later when mask is ready (by maskitoInitialCalibrationPlugin)\n this.cdr.detectChanges();\n }\n\n @ViewChild(forwardRef(() => TuiTextfieldDropdownDirective), {read: TemplateRef})\n protected set template(template: PolymorpheusContent) {\n this.dropdown.set(template);\n }\n\n protected onFocus(): void {\n const phoneMetadata = this.metadata();\n\n if (!this.textfieldValue && phoneMetadata) {\n this.textfieldValue = `${CHAR_PLUS + getCountryCallingCode(this.countryIsoCode(), phoneMetadata)} `;\n }\n }\n\n protected onValueChange(maskedValue: string): void {\n const unmaskedValue = maskedValue.replaceAll(NOT_FORM_CONTROL_SYMBOLS, '');\n const phonesMetadata = this.metadata();\n const countryCallingCode = phonesMetadata\n ? CHAR_PLUS + getCountryCallingCode(this.countryIsoCode(), phonesMetadata)\n : '';\n\n this.onChange(unmaskedValue === countryCallingCode ? '' : unmaskedValue);\n }\n\n protected onKeyDown({key}: KeyboardEvent): void {\n if (tuiIsEditingKey(key)) {\n this.filter?.nativeElement.focus({preventScroll: true});\n }\n }\n\n private computeMask(\n countryIsoCode: TuiCountryIsoCode,\n metadata?: MetadataJson,\n separator?: string,\n ): MaskitoOptions | null {\n if (!metadata) {\n return null;\n }\n\n const {plugins, ...restOptions} = maskitoPhoneOptionsGenerator({\n countryIsoCode,\n metadata,\n separator,\n });\n\n return {\n ...restOptions,\n plugins: [\n ...plugins,\n maskitoRemoveOnBlurPlugin(\n `${CHAR_PLUS}${getCountryCallingCode(countryIsoCode, metadata)} `,\n ),\n maskitoInitialCalibrationPlugin(),\n ],\n };\n }\n}\n","<tui-textfield\n class=\"t-select\"\n [content]=\"flag\"\n [tuiChevron]=\"open()\"\n>\n <select\n ngModel=\"\"\n tuiTextfield\n [attr.data-mode]=\"mode()\"\n [disabled]=\"disabled()\"\n [focused]=\"open()\"\n [ngModelOptions]=\"{standalone: true}\"\n ></select>\n\n <ng-template #flag>\n <img\n class=\"t-flag\"\n [alt]=\"names()?.[countryIsoCode()]\"\n [src]=\"countryIsoCode() | tuiFlag\"\n />\n </ng-template>\n</tui-textfield>\n\n<tui-textfield>\n <!--TODO: Replace attribute bindings with inputs after Angular updated and signal bindings properly update-->\n <input\n autocomplete=\"new-password\"\n tuiTextfield\n [attr.data-mode]=\"mode()\"\n [attr.readonly]=\"readOnly() || null\"\n [disabled]=\"disabled()\"\n [maskito]=\"mask()\"\n [ngModelOptions]=\"{standalone: true}\"\n [(ngModel)]=\"textfieldValue\"\n (beforeinput.capture)=\"onPaste($event)\"\n (blur)=\"onTouched()\"\n (focus)=\"!readOnly() && onFocus()\"\n (ngModelChange)=\"onValueChange($event)\"\n />\n\n <!--\n TODO: get rid of built-in input and label and just externalize everything in 5.0\n <tui-input-phone-international>\n <label tuiLabel>My label</label>\n <input tuiTextfield placeholder=\"My placeholder\" [(ngModel)]=\"value\" />\n <tui-icon icon=\"@tui.phone\" />\n </tui-input-phone-international>\n -->\n <ng-content select=\"tui-icon, img\" />\n\n <label tuiLabel>\n <ng-content />\n </label>\n</tui-textfield>\n\n<ng-container *tuiTextfieldDropdown>\n <tui-textfield\n *ngIf=\"countrySearch\"\n tuiTextfieldSize=\"m\"\n class=\"t-search\"\n [iconStart]=\"icons.search\"\n >\n <input\n tuiTextfield\n [focused]=\"true\"\n [ngModel]=\"search()\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!isIos\"\n (keydown.arrowDown)=\"focusFirstItem()\"\n (ngModelChange)=\"search.set($event)\"\n />\n </tui-textfield>\n\n <tui-data-list (keydown)=\"onKeyDown($event)\">\n <button\n *ngFor=\"let item of filtered()\"\n tuiOption\n type=\"button\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-flag\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span class=\"t-name\">{{ item.name }}</span>\n <span class=\"t-code\">{{ item.code }}</span>\n </button>\n </tui-data-list>\n</ng-container>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taiga-ui-kit-components-input-phone-international.mjs","sources":["../../../projects/kit/components/input-phone-international/input-phone-international.options.ts","../../../projects/kit/components/input-phone-international/input-phone-international.component.ts","../../../projects/kit/components/input-phone-international/input-phone-international.template.html","../../../projects/kit/components/input-phone-international/taiga-ui-kit-components-input-phone-international.ts"],"sourcesContent":["import type {Provider} from '@angular/core';\nimport {tuiCreateToken, tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiCountryIsoCode} from '@taiga-ui/i18n/types';\nimport type {MetadataJson} from 'libphonenumber-js/core';\nimport type {Observable} from 'rxjs';\nimport {of} from 'rxjs';\n\nexport interface TuiInputPhoneInternationalOptions {\n readonly countries: readonly TuiCountryIsoCode[];\n readonly countryIsoCode: TuiCountryIsoCode;\n readonly metadata: Observable<MetadataJson> | Promise<MetadataJson>;\n readonly separator: string;\n}\n\nexport const TUI_INPUT_PHONE_INTERNATIONAL_DEFAULT_OPTIONS: TuiInputPhoneInternationalOptions =\n {\n countries: [],\n countryIsoCode: 'RU',\n metadata: of({countries: {}, country_calling_codes: {}}),\n separator: '-',\n };\n\n/**\n * Default parameters for input phone international component\n */\nexport const TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS = tuiCreateToken(\n TUI_INPUT_PHONE_INTERNATIONAL_DEFAULT_OPTIONS,\n);\n\nexport function tuiInputPhoneInternationalOptionsProvider(\n options: Partial<TuiInputPhoneInternationalOptions>,\n): Provider {\n return tuiProvideOptions(\n TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS,\n options,\n TUI_INPUT_PHONE_INTERNATIONAL_DEFAULT_OPTIONS,\n );\n}\n","import {CommonModule} from '@angular/common';\nimport type {QueryList} from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n Input,\n Output,\n signal,\n TemplateRef,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport {toObservable, toSignal} from '@angular/core/rxjs-interop';\nimport {FormsModule} from '@angular/forms';\nimport {MaskitoDirective} from '@maskito/angular';\nimport type {MaskitoOptions} from '@maskito/core';\nimport {maskitoInitialCalibrationPlugin, maskitoTransform} from '@maskito/core';\nimport {maskitoRemoveOnBlurPlugin} from '@maskito/kit';\nimport {maskitoGetCountryFromNumber, maskitoPhoneOptionsGenerator} from '@maskito/phone';\nimport {tuiAsControl, TuiControl} from '@taiga-ui/cdk/classes';\nimport {CHAR_PLUS, TUI_DEFAULT_MATCHER} from '@taiga-ui/cdk/constants';\nimport {\n TuiAutoFocus,\n tuiAutoFocusOptionsProvider,\n} from '@taiga-ui/cdk/directives/auto-focus';\nimport {TUI_IS_IOS, tuiFallbackValueProvider} from '@taiga-ui/cdk/tokens';\nimport {tuiIsInputEvent} from '@taiga-ui/cdk/utils/dom';\nimport {tuiDirectiveBinding} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiDataList, TuiOption} from '@taiga-ui/core/components/data-list';\nimport {\n TUI_TEXTFIELD_OPTIONS,\n TuiTextfield,\n TuiTextfieldDropdownDirective,\n tuiTextfieldOptionsProvider,\n} from '@taiga-ui/core/components/textfield';\nimport {\n tuiDropdown,\n TuiDropdownDirective,\n TuiDropdownOpen,\n tuiDropdownOpen,\n tuiDropdownOptionsProvider,\n TuiWithDropdownOpen,\n} from '@taiga-ui/core/directives/dropdown';\nimport {TuiGroup} from '@taiga-ui/core/directives/group';\nimport {TuiFlagPipe} from '@taiga-ui/core/pipes/flag';\nimport {TUI_COMMON_ICONS} from '@taiga-ui/core/tokens';\nimport {tuiIsEditingKey} from '@taiga-ui/core/utils/miscellaneous';\nimport type {TuiCountryIsoCode} from '@taiga-ui/i18n/types';\nimport {TuiChevron} from '@taiga-ui/kit/directives';\nimport {TUI_COUNTRIES, TUI_INTERNATIONAL_SEARCH} from '@taiga-ui/kit/tokens';\nimport {tuiGetCallingCode} from '@taiga-ui/kit/utils';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport {validatePhoneNumberLength} from 'libphonenumber-js';\nimport type {MetadataJson} from 'libphonenumber-js/core';\nimport {getCountryCallingCode} from 'libphonenumber-js/core';\nimport {from, skip} from 'rxjs';\n\nimport {TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS} from './input-phone-international.options';\n\nconst NOT_FORM_CONTROL_SYMBOLS = /[^+\\d]/g;\n\n@Component({\n standalone: true,\n selector: 'tui-input-phone-international',\n imports: [\n CommonModule,\n FormsModule,\n MaskitoDirective,\n TuiAutoFocus,\n TuiChevron,\n TuiDataList,\n TuiFlagPipe,\n TuiTextfield,\n ],\n templateUrl: './input-phone-international.template.html',\n styleUrls: ['./input-phone-international.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiAsControl(TuiInputPhoneInternational),\n tuiFallbackValueProvider(''),\n tuiAutoFocusOptionsProvider({preventScroll: true}),\n tuiTextfieldOptionsProvider({cleaner: signal(false)}),\n tuiDropdownOptionsProvider({\n limitWidth: 'fixed',\n align: 'right',\n }),\n ],\n hostDirectives: [TuiGroup, TuiDropdownDirective, TuiWithDropdownOpen],\n host: {\n '[attr.data-size]': 'size()',\n },\n})\nexport class TuiInputPhoneInternational extends TuiControl<string> {\n @ViewChild(MaskitoDirective, {read: ElementRef})\n private readonly input?: ElementRef<HTMLInputElement>;\n\n @ViewChild(TuiAutoFocus, {read: ElementRef})\n private readonly filter?: ElementRef<HTMLInputElement>;\n\n @ViewChildren(TuiOption, {read: ElementRef})\n private readonly listOptions?: QueryList<ElementRef<HTMLButtonElement>>;\n\n protected readonly isIos = inject(TUI_IS_IOS);\n protected readonly dropdown = tuiDropdown(null);\n protected readonly options = inject(TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS);\n protected readonly size = inject(TUI_TEXTFIELD_OPTIONS).size;\n protected readonly open = tuiDropdownOpen();\n protected readonly names = toSignal(inject(TUI_COUNTRIES));\n protected readonly metadata = toSignal(from(this.options.metadata));\n protected readonly countries = signal(this.options.countries);\n protected readonly countryIsoCode = signal(this.options.countryIsoCode);\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly label = toSignal(inject(TUI_INTERNATIONAL_SEARCH));\n protected readonly search = signal<string>('');\n protected readonly separator = signal(this.options.separator);\n\n protected readonly filtered = computed(() =>\n this.countries()\n .map((iso) => ({\n iso,\n name: this.names()?.[iso] || '',\n code: tuiGetCallingCode(iso, this.metadata()),\n }))\n .filter(({name, code}) => TUI_DEFAULT_MATCHER(name + code, this.search())),\n );\n\n protected readonly mask = computed(() =>\n this.computeMask(this.countryIsoCode(), this.metadata(), this.separator()),\n );\n\n protected readonly $ = tuiDirectiveBinding(\n TuiDropdownOpen,\n 'tuiDropdownEnabled',\n this.interactive,\n );\n\n protected textfieldValue = '';\n\n @Input()\n public countrySearch = false;\n\n @Output()\n public readonly countryIsoCodeChange = toObservable(this.countryIsoCode).pipe(\n skip(1),\n );\n\n @Input('countries')\n public set countriesValue(value: readonly TuiCountryIsoCode[]) {\n this.countries.set(value);\n }\n\n @Input('countryIsoCode')\n public set isoCode(code: TuiCountryIsoCode) {\n this.countryIsoCode.set(code);\n }\n\n public focusFirstItem(): void {\n this.listOptions?.get(0)?.nativeElement.focus();\n }\n\n public onPaste(event: Event): void {\n const phonesMetadata = this.metadata();\n\n if (\n !tuiIsInputEvent(event) ||\n !phonesMetadata ||\n (!event.inputType.includes('Drop') && !event.inputType.includes('Paste'))\n ) {\n return;\n }\n\n const newValue = event.data || '';\n const prefixedValue = newValue.startsWith(CHAR_PLUS)\n ? newValue\n : CHAR_PLUS + newValue;\n\n if (validatePhoneNumberLength(prefixedValue) === 'TOO_SHORT') {\n return;\n }\n\n const countryIsoCode = maskitoGetCountryFromNumber(prefixedValue, phonesMetadata);\n\n if (countryIsoCode) {\n this.countryIsoCode.set(countryIsoCode);\n }\n }\n\n public onItemClick(isoCode: TuiCountryIsoCode): void {\n this.open.set(false);\n this.countryIsoCode.set(isoCode);\n this.input?.nativeElement.focus();\n }\n\n public override writeValue(unmaskedValue: string): void {\n super.writeValue(unmaskedValue);\n\n const maskOptions = this.mask();\n\n this.textfieldValue = maskOptions\n ? maskitoTransform(this.value(), maskOptions)\n : this.value(); // it will be calibrated later when mask is ready (by maskitoInitialCalibrationPlugin)\n this.cdr.detectChanges();\n }\n\n @ViewChild(forwardRef(() => TuiTextfieldDropdownDirective), {read: TemplateRef})\n protected set template(template: PolymorpheusContent) {\n this.dropdown.set(template);\n }\n\n protected onFocus(): void {\n const phoneMetadata = this.metadata();\n\n if (!this.textfieldValue && phoneMetadata) {\n this.textfieldValue = `${CHAR_PLUS + getCountryCallingCode(this.countryIsoCode(), phoneMetadata)} `;\n }\n }\n\n protected onValueChange(maskedValue: string): void {\n const unmaskedValue = maskedValue.replaceAll(NOT_FORM_CONTROL_SYMBOLS, '');\n const phonesMetadata = this.metadata();\n const countryCallingCode = phonesMetadata\n ? CHAR_PLUS + getCountryCallingCode(this.countryIsoCode(), phonesMetadata)\n : '';\n\n this.onChange(unmaskedValue === countryCallingCode ? '' : unmaskedValue);\n }\n\n protected onKeyDown({key}: KeyboardEvent): void {\n if (tuiIsEditingKey(key)) {\n this.filter?.nativeElement.focus({preventScroll: true});\n }\n }\n\n private computeMask(\n countryIsoCode: TuiCountryIsoCode,\n metadata?: MetadataJson,\n separator?: string,\n ): MaskitoOptions | null {\n if (!metadata) {\n return null;\n }\n\n const {plugins, ...restOptions} = maskitoPhoneOptionsGenerator({\n countryIsoCode,\n metadata,\n separator,\n });\n\n return {\n ...restOptions,\n plugins: [\n ...plugins,\n maskitoRemoveOnBlurPlugin(\n `${CHAR_PLUS}${getCountryCallingCode(countryIsoCode, metadata)} `,\n ),\n maskitoInitialCalibrationPlugin(),\n ],\n };\n }\n}\n","<tui-textfield\n class=\"t-select\"\n [content]=\"flag\"\n [tuiChevron]=\"open()\"\n>\n <select\n aria-label=\"Country\"\n ngModel=\"\"\n tuiTextfield\n [attr.data-mode]=\"mode()\"\n [disabled]=\"disabled()\"\n [focused]=\"open()\"\n [ngModelOptions]=\"{standalone: true}\"\n ></select>\n\n <ng-template #flag>\n <img\n class=\"t-flag\"\n [alt]=\"names()?.[countryIsoCode()]\"\n [src]=\"countryIsoCode() | tuiFlag\"\n />\n </ng-template>\n</tui-textfield>\n\n<tui-textfield>\n <!--TODO: Replace attribute bindings with inputs after Angular updated and signal bindings properly update-->\n <input\n autocomplete=\"new-password\"\n tuiTextfield\n [attr.data-mode]=\"mode()\"\n [attr.readonly]=\"readOnly() || null\"\n [disabled]=\"disabled()\"\n [maskito]=\"mask()\"\n [ngModelOptions]=\"{standalone: true}\"\n [(ngModel)]=\"textfieldValue\"\n (beforeinput.capture)=\"onPaste($event)\"\n (blur)=\"onTouched()\"\n (focus)=\"!readOnly() && onFocus()\"\n (ngModelChange)=\"onValueChange($event)\"\n />\n\n <!--\n TODO: get rid of built-in input and label and just externalize everything in 5.0\n <tui-input-phone-international>\n <label tuiLabel>My label</label>\n <input tuiTextfield placeholder=\"My placeholder\" [(ngModel)]=\"value\" />\n <tui-icon icon=\"@tui.phone\" />\n </tui-input-phone-international>\n -->\n <ng-content select=\"tui-icon, img\" />\n\n <label tuiLabel>\n <ng-content />\n </label>\n</tui-textfield>\n\n<ng-container *tuiTextfieldDropdown>\n <tui-textfield\n *ngIf=\"countrySearch\"\n tuiTextfieldSize=\"m\"\n class=\"t-search\"\n [iconStart]=\"icons.search\"\n >\n <input\n tuiTextfield\n [focused]=\"true\"\n [ngModel]=\"search()\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!isIos\"\n (keydown.arrowDown)=\"focusFirstItem()\"\n (ngModelChange)=\"search.set($event)\"\n />\n </tui-textfield>\n\n <tui-data-list (keydown)=\"onKeyDown($event)\">\n <button\n *ngFor=\"let item of filtered()\"\n tuiOption\n type=\"button\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-flag\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span class=\"t-name\">{{ item.name }}</span>\n <span class=\"t-code\">{{ item.code }}</span>\n </button>\n </tui-data-list>\n</ng-container>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-kit-pipes-filter-by-input.mjs","sources":["../../../projects/kit/pipes/filter-by-input/filter-by-input.pipe.ts","../../../projects/kit/pipes/filter-by-input/taiga-ui-kit-pipes-filter-by-input.ts"],"sourcesContent":["import type {PipeTransform} from '@angular/core';\nimport {inject, Pipe} from '@angular/core';\nimport {TUI_DEFAULT_MATCHER} from '@taiga-ui/cdk/constants';\nimport type {TuiStringHandler, TuiStringMatcher} from '@taiga-ui/cdk/types';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_DATA_LIST_HOST} from '@taiga-ui/core/components/data-list';\nimport {TuiTextfieldComponent} from '@taiga-ui/core/components/textfield';\nimport {tuiIsFlat} from '@taiga-ui/kit/utils';\n\n// TODO: Consider replacing TuiTextfieldComponent with proper token once we refactor textfields\n@Pipe({\n standalone: true,\n name: 'tuiFilterByInput',\n pure: false,\n})\nexport class TuiFilterByInputPipe implements PipeTransform {\n // TODO: Remove optional after legacy controls are dropped\n private readonly textfield = inject(TuiTextfieldComponent, {optional: true});\n private readonly host = inject(TUI_DATA_LIST_HOST);\n\n public transform<T>(items: readonly T[], matcher?: TuiStringMatcher<T>): readonly T[];\n public transform<T>(\n items: ReadonlyArray<readonly T[]> | readonly T[] | null,\n matcher: TuiStringMatcher<T> = TUI_DEFAULT_MATCHER,\n ): ReadonlyArray<readonly T[]> | readonly T[] | null {\n return this.filter<T>(\n items,\n matcher,\n this.host.stringify || String,\n this.textfield?.input?.nativeElement.value ||\n (this.host as any).nativeFocusableElement?.value ||\n '',\n );\n }\n\n @tuiPure\n private filter<T>(\n items: ReadonlyArray<readonly T[]> | readonly T[] | null,\n matcher: TuiStringMatcher<T>,\n stringify: TuiStringHandler<T>,\n query: string,\n ): ReadonlyArray<readonly T[]> | readonly T[] | null {\n if (!items) {\n return null;\n }\n\n return tuiIsFlat(items)\n ? this.filterFlat(items, matcher, stringify, query)\n : this.filter2d(items, matcher, stringify, query);\n }\n\n private filterFlat<T>(\n items: readonly T[],\n matcher: TuiStringMatcher<T>,\n stringify: TuiStringHandler<T>,\n query: string,\n ): readonly T[] {\n const match = this.getMatch(items, stringify, query);\n\n return match != null\n ? items\n : items.filter((item) => matcher(item, query, stringify));\n }\n\n private filter2d<T>(\n items: ReadonlyArray<readonly T[]>,\n matcher: TuiStringMatcher<T>,\n stringify: TuiStringHandler<T>,\n query: string,\n ): ReadonlyArray<readonly T[]> {\n const match = items.find((item) => this.getMatch(item, stringify, query) != null);\n\n return match != null\n ? items\n : items.map((inner) => this.filterFlat(inner, matcher, stringify, query));\n }\n\n private getMatch<T>(\n items: readonly T[],\n stringify: TuiStringHandler<T>,\n query: string,\n ): T | undefined {\n // TODO: Refactor when tui-textfield[multi] is ready\n if ((this.host as any).tagValidator) {\n return undefined;\n }\n\n return items.find(\n (item) => stringify(item).toLocaleLowerCase() === query.toLocaleLowerCase(),\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;AASA;AACA,MAKa,oBAAoB,CAAA;AALjC,IAAA,WAAA,GAAA;;QAOqB,IAAS,CAAA,SAAA,GAAG,MAAM,CAAC,qBAAqB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;AAC5D,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"taiga-ui-kit-pipes-filter-by-input.mjs","sources":["../../../projects/kit/pipes/filter-by-input/filter-by-input.pipe.ts","../../../projects/kit/pipes/filter-by-input/taiga-ui-kit-pipes-filter-by-input.ts"],"sourcesContent":["import type {PipeTransform} from '@angular/core';\nimport {inject, Pipe} from '@angular/core';\nimport {TUI_DEFAULT_MATCHER} from '@taiga-ui/cdk/constants';\nimport type {TuiStringHandler, TuiStringMatcher} from '@taiga-ui/cdk/types';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_DATA_LIST_HOST} from '@taiga-ui/core/components/data-list';\nimport {TuiTextfieldComponent} from '@taiga-ui/core/components/textfield';\nimport {tuiIsFlat} from '@taiga-ui/kit/utils';\n\n// TODO: Consider replacing TuiTextfieldComponent with proper token once we refactor textfields\n@Pipe({\n standalone: true,\n name: 'tuiFilterByInput',\n pure: false,\n})\nexport class TuiFilterByInputPipe implements PipeTransform {\n // TODO: Remove optional after legacy controls are dropped\n private readonly textfield = inject(TuiTextfieldComponent, {optional: true});\n private readonly host = inject(TUI_DATA_LIST_HOST);\n\n public transform<T>(items: null, matcher?: TuiStringMatcher<T>): null;\n public transform<T>(items: readonly T[], matcher?: TuiStringMatcher<T>): readonly T[];\n public transform<T>(\n items: ReadonlyArray<readonly T[]> | readonly T[] | null,\n matcher: TuiStringMatcher<T> = TUI_DEFAULT_MATCHER,\n ): ReadonlyArray<readonly T[]> | readonly T[] | null {\n return this.filter<T>(\n items,\n matcher,\n this.host.stringify || String,\n this.textfield?.input?.nativeElement.value ||\n (this.host as any).nativeFocusableElement?.value ||\n '',\n );\n }\n\n @tuiPure\n private filter<T>(\n items: ReadonlyArray<readonly T[]> | readonly T[] | null,\n matcher: TuiStringMatcher<T>,\n stringify: TuiStringHandler<T>,\n query: string,\n ): ReadonlyArray<readonly T[]> | readonly T[] | null {\n if (!items) {\n return null;\n }\n\n return tuiIsFlat(items)\n ? this.filterFlat(items, matcher, stringify, query)\n : this.filter2d(items, matcher, stringify, query);\n }\n\n private filterFlat<T>(\n items: readonly T[],\n matcher: TuiStringMatcher<T>,\n stringify: TuiStringHandler<T>,\n query: string,\n ): readonly T[] {\n const match = this.getMatch(items, stringify, query);\n\n return match != null\n ? items\n : items.filter((item) => matcher(item, query, stringify));\n }\n\n private filter2d<T>(\n items: ReadonlyArray<readonly T[]>,\n matcher: TuiStringMatcher<T>,\n stringify: TuiStringHandler<T>,\n query: string,\n ): ReadonlyArray<readonly T[]> {\n const match = items.find((item) => this.getMatch(item, stringify, query) != null);\n\n return match != null\n ? items\n : items.map((inner) => this.filterFlat(inner, matcher, stringify, query));\n }\n\n private getMatch<T>(\n items: readonly T[],\n stringify: TuiStringHandler<T>,\n query: string,\n ): T | undefined {\n // TODO: Refactor when tui-textfield[multi] is ready\n if ((this.host as any).tagValidator) {\n return undefined;\n }\n\n return items.find(\n (item) => stringify(item).toLocaleLowerCase() === query.toLocaleLowerCase(),\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@taiga-ui/kit",
|
|
3
|
-
"version": "4.25.0-canary.
|
|
3
|
+
"version": "4.25.0-canary.8d3be58",
|
|
4
4
|
"description": "Taiga UI Angular main components kit",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"angular",
|
|
@@ -359,18 +359,18 @@
|
|
|
359
359
|
"esm": "./esm2022/components/tree/taiga-ui-kit-components-tree.mjs",
|
|
360
360
|
"default": "./fesm2022/taiga-ui-kit-components-tree.mjs"
|
|
361
361
|
},
|
|
362
|
-
"./directives/button-close": {
|
|
363
|
-
"types": "./directives/button-close/index.d.ts",
|
|
364
|
-
"esm2022": "./esm2022/directives/button-close/taiga-ui-kit-directives-button-close.mjs",
|
|
365
|
-
"esm": "./esm2022/directives/button-close/taiga-ui-kit-directives-button-close.mjs",
|
|
366
|
-
"default": "./fesm2022/taiga-ui-kit-directives-button-close.mjs"
|
|
367
|
-
},
|
|
368
362
|
"./directives/button-group": {
|
|
369
363
|
"types": "./directives/button-group/index.d.ts",
|
|
370
364
|
"esm2022": "./esm2022/directives/button-group/taiga-ui-kit-directives-button-group.mjs",
|
|
371
365
|
"esm": "./esm2022/directives/button-group/taiga-ui-kit-directives-button-group.mjs",
|
|
372
366
|
"default": "./fesm2022/taiga-ui-kit-directives-button-group.mjs"
|
|
373
367
|
},
|
|
368
|
+
"./directives/button-close": {
|
|
369
|
+
"types": "./directives/button-close/index.d.ts",
|
|
370
|
+
"esm2022": "./esm2022/directives/button-close/taiga-ui-kit-directives-button-close.mjs",
|
|
371
|
+
"esm": "./esm2022/directives/button-close/taiga-ui-kit-directives-button-close.mjs",
|
|
372
|
+
"default": "./fesm2022/taiga-ui-kit-directives-button-close.mjs"
|
|
373
|
+
},
|
|
374
374
|
"./directives/button-select": {
|
|
375
375
|
"types": "./directives/button-select/index.d.ts",
|
|
376
376
|
"esm2022": "./esm2022/directives/button-select/taiga-ui-kit-directives-button-select.mjs",
|
|
@@ -4,6 +4,7 @@ import * as i0 from "@angular/core";
|
|
|
4
4
|
export declare class TuiFilterByInputPipe implements PipeTransform {
|
|
5
5
|
private readonly textfield;
|
|
6
6
|
private readonly host;
|
|
7
|
+
transform<T>(items: null, matcher?: TuiStringMatcher<T>): null;
|
|
7
8
|
transform<T>(items: readonly T[], matcher?: TuiStringMatcher<T>): readonly T[];
|
|
8
9
|
private filter;
|
|
9
10
|
private filterFlat;
|