@ng-nest/ui 16.0.6 → 16.0.7
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/anchor/anchor.component.d.ts +1 -0
- package/anchor/anchor.property.d.ts +7 -2
- package/esm2022/anchor/anchor.component.mjs +22 -4
- package/esm2022/anchor/anchor.property.mjs +7 -2
- package/esm2022/auto-complete/auto-complete.component.mjs +7 -1
- package/esm2022/back-top/back-top.component.mjs +6 -3
- package/esm2022/time-picker/time-picker-frame.component.mjs +6 -3
- package/fesm2022/ng-nest-ui-anchor.mjs +27 -4
- package/fesm2022/ng-nest-ui-anchor.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-auto-complete.mjs +6 -0
- package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-back-top.mjs +5 -2
- package/fesm2022/ng-nest-ui-back-top.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-time-picker.mjs +5 -2
- package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
- package/package.json +19 -19
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
2
2
|
import { XTimePickerFramePrefix } from './time-picker.property';
|
|
3
|
-
import { reqAnimFrame, XIsChange, XIsEmpty, XIsFunction, XIsNull } from '@ng-nest/ui/core';
|
|
3
|
+
import { reqAnimFrame, XIsChange, XIsEmpty, XIsFunction, XIsNull, XIsNumber } from '@ng-nest/ui/core';
|
|
4
4
|
import { takeUntil, map } from 'rxjs/operators';
|
|
5
5
|
import { Subject } from 'rxjs';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
@@ -272,7 +272,10 @@ class XTimePickerFrameComponent {
|
|
|
272
272
|
const perTick = (difference / duration) * 10;
|
|
273
273
|
this.scrollAnimating[clsName] = true;
|
|
274
274
|
reqAnimFrame(() => {
|
|
275
|
-
|
|
275
|
+
const num = element.scrollTop + perTick;
|
|
276
|
+
if (XIsNumber(num) && num !== Infinity) {
|
|
277
|
+
element.scrollTop = num;
|
|
278
|
+
}
|
|
276
279
|
if (element.scrollTop === to || duration <= 0) {
|
|
277
280
|
this.scrollAnimating[clsName] = false;
|
|
278
281
|
return;
|
|
@@ -322,4 +325,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.5", ngImpor
|
|
|
322
325
|
type: ViewChild,
|
|
323
326
|
args: ['use12HoursRef']
|
|
324
327
|
}] } });
|
|
325
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXItZnJhbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdGltZS1waWNrZXIvdGltZS1waWNrZXItZnJhbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdGltZS1waWNrZXIvdGltZS1waWNrZXItZnJhbWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTJCLHNCQUFzQixFQUFtQixNQUFNLHdCQUF3QixDQUFDO0FBQzFHLE9BQU8sRUFBRSxZQUFZLEVBQXVCLFNBQVMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhILE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBRS9CLE1BT2EseUJBQXlCO0lBNkJwQyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsTUFBTSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUM3QyxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNwQixzQkFBc0I7WUFDdEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN6QjtRQUNELFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUks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QkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNO21JQUd0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNlLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFDSSxTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ0UsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNNLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBYVGltZVBpY2tlckRpc2FibGVkVGltZSwgWFRpbWVQaWNrZXJGcmFtZVByZWZpeCwgWFRpbWVQaWNrZXJUeXBlIH0gZnJvbSAnLi90aW1lLXBpY2tlci5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7IHJlcUFuaW1GcmFtZSwgWEJvb2xlYW4sIFhJZGVudGl0eSwgWElzQ2hhbmdlLCBYSXNFbXB0eSwgWElzRnVuY3Rpb24sIFhJc051bGwgfSBmcm9tICdAbmctbmVzdC91aS9jb3JlJztcclxuaW1wb3J0IHsgWEkxOG5TZXJ2aWNlLCBYSTE4blRpbWVQaWNrZXIgfSBmcm9tICdAbmctbmVzdC91aS9pMThuJztcclxuaW1wb3J0IHsgdGFrZVVudGlsLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBgJHtYVGltZVBpY2tlckZyYW1lUHJlZml4fWAsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RpbWUtcGlja2VyLWZyYW1lLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90aW1lLXBpY2tlci1mcmFtZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFhUaW1lUGlja2VyRnJhbWVDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpIHR5cGU6IFhUaW1lUGlja2VyVHlwZSA9ICd0aW1lJztcclxuICBASW5wdXQoKSB2YWx1ZSE6IG51bWJlciB8IG51bGw7XHJcbiAgQElucHV0KCkgdXNlMTJIb3VycyE6IFhCb29sZWFuO1xyXG4gIEBJbnB1dCgpIGhvdXJTdGVwID0gMTtcclxuICBASW5wdXQoKSBtaW51dGVTdGVwID0gMTtcclxuICBASW5wdXQoKSBzZWNvbmRTdGVwID0gMTtcclxuICBASW5wdXQoKSBkZWZhdWx0Tm93ID0gdHJ1ZTtcclxuICBASW5wdXQoKSBkaXNhYmxlZFRpbWU/OiBYVGltZVBpY2tlckRpc2FibGVkVGltZTtcclxuICBASW5wdXQoKSBkaXNhYmxlZFRpbWVQYXJhbT86IGFueTtcclxuICBAT3V0cHV0KCkgbm9kZUVtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XHJcbiAgQFZpZXdDaGlsZCgnaG91clJlZicpIGhvdXJSZWY/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdtaW51dGVSZWYnKSBtaW51dGVSZWY/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdzZWNvbmRSZWYnKSBzZWNvbmRSZWY/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCd1c2UxMkhvdXJzUmVmJykgdXNlMTJIb3Vyc1JlZj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG4gIG1vZGVsITogRGF0ZTtcclxuICBob3VyITogbnVtYmVyIHwgbnVsbDtcclxuICBtaW51dGUhOiBudW1iZXIgfCBudWxsO1xyXG4gIHNlY29uZCE6IG51bWJlciB8IG51bGw7XHJcbiAgdXNlMTJIb3VyOiBzdHJpbmcgPSAnYW0nO1xyXG4gIHNjcm9sbEFuaW1hdGluZzogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcclxuICBob3VyRGF0YTogWElkZW50aXR5W10gPSBbXTtcclxuICBtaW51dGVEYXRhOiBYSWRlbnRpdHlbXSA9IFtdO1xyXG4gIHNlY29uZERhdGE6IFhJZGVudGl0eVtdID0gW107XHJcbiAgdXNlMTJIb3Vyc0RhdGE6IFhJZGVudGl0eVtdID0gW107XHJcbiAgbG9jYWxlOiBYSTE4blRpbWVQaWNrZXIgPSB7fTtcclxuICBpc0luaXQgPSBmYWxzZTtcclxuICBwcml2YXRlIF91blN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IHZhbHVlLCBkaXNhYmxlZFRpbWVQYXJhbSB9ID0gY2hhbmdlcztcclxuICAgIGlmIChYSXNDaGFuZ2UodmFsdWUpKSB7XHJcbiAgICAgIC8vIHRoaXMuc2V0RGF0YUluaXQoKTtcclxuICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgIHRoaXMuc2V0U2Nyb2xsVG9wKHRydWUpO1xyXG4gICAgfVxyXG4gICAgWElzQ2hhbmdlKGRpc2FibGVkVGltZVBhcmFtKSAmJiB0aGlzLnNldERhdGFJbml0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc2V0RGF0YUluaXQoKTtcclxuICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgdGhpcy5pMThuLmxvY2FsZUNoYW5nZVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHgpID0+IHgudGltZVBpY2tlciBhcyBYSTE4blRpbWVQaWNrZXIpLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9jYWxlID0geDtcclxuICAgICAgICBpZiAodGhpcy51c2UxMkhvdXJzKSB7XHJcbiAgICAgICAgICB0aGlzLnNldFVzZTEySG91cnNEYXRhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuc2V0U2Nyb2xsVG9wKCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgaTE4bjogWEkxOG5TZXJ2aWNlKSB7fVxyXG5cclxuICBzZXREYXRhSW5pdCgpIHtcclxuICAgIHRoaXMuc2V0SG91ckRhdGEoKTtcclxuICAgIHRoaXMuc2V0TWludXRlRGF0YSgpO1xyXG4gICAgdGhpcy5zZXRTZWNvbmREYXRhKCk7XHJcbiAgICB0aGlzLnNldFVzZTEySG91cnNEYXRhKCk7XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZCh0eXBlOiAnaG91cnMnIHwgJ21pbnV0ZXMnIHwgJ3NlY29uZHMnLCBudW06IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWRUaW1lICYmIFhJc0Z1bmN0aW9uKHRoaXMuZGlzYWJsZWRUaW1lKSkge1xyXG4gICAgICBjb25zdCBkaXNhYmxlZE1hcCA9IHRoaXMuZGlzYWJsZWRUaW1lKHRoaXMuZGlzYWJsZWRUaW1lUGFyYW0pO1xyXG4gICAgICBjb25zdCB7IGRpc2FibGVkSG91cnMsIGRpc2FibGVkTWludXRlcywgZGlzYWJsZWRTZWNvbmRzIH0gPSBkaXNhYmxlZE1hcDtcclxuICAgICAgbGV0IGRpc2FibGVkTnVtczogbnVtYmVyW10gPSBbXTtcclxuICAgICAgaWYgKHR5cGUgPT09ICdob3VycycpIHtcclxuICAgICAgICBkaXNhYmxlZE51bXMgPSBkaXNhYmxlZEhvdXJzID8gZGlzYWJsZWRIb3VycygpIDogW107XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ21pbnV0ZXMnKSB7XHJcbiAgICAgICAgZGlzYWJsZWROdW1zID0gZGlzYWJsZWRNaW51dGVzID8gZGlzYWJsZWRNaW51dGVzKCkgOiBbXTtcclxuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnc2Vjb25kcycpIHtcclxuICAgICAgICBkaXNhYmxlZE51bXMgPSBkaXNhYmxlZFNlY29uZHMgPyBkaXNhYmxlZFNlY29uZHMoKSA6IFtdO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBkaXNhYmxlZE51bXMuaW5jbHVkZXMobnVtKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzZXRIb3VyRGF0YSgpIHtcclxuICAgIGxldCBsZW5ndGggPSB0aGlzLnVzZTEySG91cnMgPyAxMiA6IDI0O1xyXG4gICAgdGhpcy5ob3VyRGF0YSA9IEFycmF5LmZyb20oeyBsZW5ndGg6IE1hdGguY2VpbChsZW5ndGggLyB0aGlzLmhvdXJTdGVwKSB9KS5tYXAoKF8sIGkpID0+IHtcclxuICAgICAgaWYgKHRoaXMudXNlMTJIb3VycyAmJiBpID09PSAwKSB7XHJcbiAgICAgICAgaSA9IDEyO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBkaXNhYmxlZDogdGhpcy5zZXREaXNhYmxlZCgnaG91cnMnLCBpKSxcclxuICAgICAgICAgIGxhYmVsOiB0aGlzLnByZWZpeFplcm8oaSwgMiksXHJcbiAgICAgICAgICBpZDogaVxyXG4gICAgICAgIH07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgbnVtID0gaSAqIHRoaXMuaG91clN0ZXA7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGRpc2FibGVkOiB0aGlzLnNldERpc2FibGVkKCdob3VycycsIG51bSksXHJcbiAgICAgICAgICBsYWJlbDogdGhpcy5wcmVmaXhaZXJvKG51bSwgMiksXHJcbiAgICAgICAgICBpZDogbnVtXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRNaW51dGVEYXRhKCkge1xyXG4gICAgdGhpcy5taW51dGVEYXRhID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogTWF0aC5jZWlsKDYwIC8gdGhpcy5taW51dGVTdGVwKSB9KS5tYXAoKF8sIGkpID0+IHtcclxuICAgICAgY29uc3QgbnVtID0gaSAqIHRoaXMubWludXRlU3RlcDtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBkaXNhYmxlZDogdGhpcy5zZXREaXNhYmxlZCgnbWludXRlcycsIG51bSksXHJcbiAgICAgICAgbGFiZWw6IHRoaXMucHJlZml4WmVybyhudW0sIDIpLFxyXG4gICAgICAgIGlkOiBudW1cclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0U2Vjb25kRGF0YSgpIHtcclxuICAgIHRoaXMuc2Vjb25kRGF0YSA9IEFycmF5LmZyb20oeyBsZW5ndGg6IE1hdGguY2VpbCg2MCAvIHRoaXMuc2Vjb25kU3RlcCkgfSkubWFwKChfLCBpKSA9PiB7XHJcbiAgICAgIGNvbnN0IG51bTogbnVtYmVyID0gaSAqIHRoaXMuc2Vjb25kU3RlcDtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBkaXNhYmxlZDogdGhpcy5zZXREaXNhYmxlZCgnc2Vjb25kcycsIG51bSksXHJcbiAgICAgICAgbGFiZWw6IHRoaXMucHJlZml4WmVybyhudW0sIDIpLFxyXG4gICAgICAgIGlkOiBudW1cclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0VXNlMTJIb3Vyc0RhdGEoKSB7XHJcbiAgICB0aGlzLnVzZTEySG91cnNEYXRhID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6ICdhbScsXHJcbiAgICAgICAgbGFiZWw6IHRoaXMubG9jYWxlLmFtXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogJ3BtJyxcclxuICAgICAgICBsYWJlbDogdGhpcy5sb2NhbGUucG1cclxuICAgICAgfVxyXG4gICAgXTtcclxuICB9XHJcblxyXG4gIGluaXQoKSB7XHJcbiAgICBpZiAoIVhJc0VtcHR5KHRoaXMudmFsdWUpKSB7XHJcbiAgICAgIHRoaXMuc2V0RGVmYXVsdCgpO1xyXG4gICAgICB0aGlzLnNldFRpbWUodGhpcy5tb2RlbCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5kZWZhdWx0Tm93KSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbCA9IHRoaXMuc2V0Tm93KCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5ob3VyID0gbnVsbDtcclxuICAgICAgICB0aGlzLm1pbnV0ZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5zZWNvbmQgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzZXREZWZhdWx0KCkge1xyXG4gICAgdGhpcy5tb2RlbCA9IG5ldyBEYXRlKHRoaXMudmFsdWUhKTtcclxuICB9XHJcblxyXG4gIHNldE5vdygpIHtcclxuICAgIGNvbnN0IGRlZiA9IG5ldyBEYXRlKCcxOTcwLTAxLTAxJyk7XHJcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKGRlZi5nZXRGdWxsWWVhcigpLCBkZWYuZ2V0TW9udGgoKSwgZGVmLmdldERhdGUoKSwgbm93LmdldEhvdXJzKCksIG5vdy5nZXRNaW51dGVzKCksIG5vdy5nZXRTZWNvbmRzKCkpO1xyXG4gIH1cclxuXHJcbiAgc2V0WmVybygpIHtcclxuICAgIGNvbnN0IGRlZiA9IG5ldyBEYXRlKCcxOTcwLTAxLTAxJyk7XHJcbiAgICByZXR1cm4gbmV3IERhdGUoZGVmLmdldEZ1bGxZZWFyKCksIGRlZi5nZXRNb250aCgpLCBkZWYuZ2V0RGF0ZSgpLCAwLCAwLCAwKTtcclxuICB9XHJcblxyXG4gIHNldFRpbWUoZGF0ZTogRGF0ZSkge1xyXG4gICAgaWYgKHRoaXMudXNlMTJIb3Vycykge1xyXG4gICAgICBsZXQgaG91ciA9IGRhdGUuZ2V0SG91cnMoKTtcclxuICAgICAgaWYgKGhvdXIgPiAxMikge1xyXG4gICAgICAgIHRoaXMuaG91ciA9IGhvdXIgLSAxMjtcclxuICAgICAgICB0aGlzLnVzZTEySG91ciA9ICdwbSc7XHJcbiAgICAgIH0gZWxzZSBpZiAoaG91ciA9PT0gMTIpIHtcclxuICAgICAgICB0aGlzLmhvdXIgPSAxMjtcclxuICAgICAgICB0aGlzLnVzZTEySG91ciA9ICdwbSc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5ob3VyID0gaG91ciA9PT0gMCA/IDEyIDogaG91cjtcclxuICAgICAgICB0aGlzLnVzZTEySG91ciA9ICdhbSc7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaG91ciA9IGRhdGUuZ2V0SG91cnMoKTtcclxuICAgIH1cclxuICAgIHRoaXMubWludXRlID0gZGF0ZS5nZXRNaW51dGVzKCk7XHJcbiAgICB0aGlzLnNlY29uZCA9IGRhdGUuZ2V0U2Vjb25kcygpO1xyXG4gIH1cclxuXHJcbiAgcHJlZml4WmVybyhudW06IG51bWJlciwgbjogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gKEFycmF5KG4pLmpvaW4oJzAnKSArIG51bSkuc2xpY2UoLW4pO1xyXG4gIH1cclxuXHJcbiAgc2V0U2Nyb2xsVG9wKGFuaW1hdGluZyA9IGZhbHNlKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkKCdob3VyJywgdGhpcy5ob3VyUmVmPy5uYXRpdmVFbGVtZW50LCB0aGlzLmhvdXIhLCBhbmltYXRpbmcpO1xyXG4gICAgdGhpcy5zZWxlY3RlZCgnbWludXRlJywgdGhpcy5taW51dGVSZWY/Lm5hdGl2ZUVsZW1lbnQsIHRoaXMubWludXRlISwgYW5pbWF0aW5nKTtcclxuICAgIHRoaXMuc2VsZWN0ZWQoJ3NlY29uZCcsIHRoaXMuc2Vjb25kUmVmPy5uYXRpdmVFbGVtZW50LCB0aGlzLnNlY29uZCEsIGFuaW1hdGluZyk7XHJcbiAgICB0aGlzLnNlbGVjdGVkKCd1c2UxMkhvdXInLCB0aGlzLnVzZTEySG91cnNSZWY/Lm5hdGl2ZUVsZW1lbnQsIHRoaXMudXNlMTJIb3VyLCBhbmltYXRpbmcpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0ZWQodHlwZTogJ2hvdXInIHwgJ21pbnV0ZScgfCAnc2Vjb25kJyB8ICd1c2UxMkhvdXInLCBlbGU/OiBIVE1MRWxlbWVudCwgbnVtPzogbnVtYmVyIHwgc3RyaW5nLCBhbmltYXRpbmcgPSBmYWxzZSkge1xyXG4gICAgaWYgKCFlbGUgfHwgWElzTnVsbChudW0pKSByZXR1cm47XHJcbiAgICBpZiAodGhpcy5zY3JvbGxBbmltYXRpbmdbZWxlLmNsYXNzTmFtZV0pIHJldHVybjtcclxuICAgIGxldCBsZW4gPSBOdW1iZXIobnVtKTtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlICdob3VyJzpcclxuICAgICAgICBsZW4gPSB0aGlzLmhvdXJEYXRhLmZpbmRJbmRleCgoeCkgPT4geC5pZCA9PT0gbnVtKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnbWludXRlJzpcclxuICAgICAgICBsZW4gPSB0aGlzLm1pbnV0ZURhdGEuZmluZEluZGV4KCh4KSA9PiB4LmlkID09PSBudW0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdzZWNvbmQnOlxyXG4gICAgICAgIGxlbiA9IHRoaXMuc2Vjb25kRGF0YS5maW5kSW5kZXgoKHgpID0+IHguaWQgPT09IG51bSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3VzZTEySG91cic6XHJcbiAgICAgICAgbGVuID0gdGhpcy51c2UxMkhvdXJzRGF0YS5maW5kSW5kZXgoKHgpID0+IHguaWQgPT09IG51bSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICBsZXQgY3VycmVudCA9IGVsZS5xdWVyeVNlbGVjdG9yKGAueC1saXN0IHgtbGlzdC1vcHRpb246bnRoLWNoaWxkKCR7bGVuICsgMX0pYCkgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAoY3VycmVudCkge1xyXG4gICAgICBpZiAoYW5pbWF0aW5nKSB7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxUbyhlbGUsIGN1cnJlbnQub2Zmc2V0VG9wLCAxMjApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGVsZS5zY3JvbGxUb3AgPSBjdXJyZW50Lm9mZnNldFRvcDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNMYXN0SXRlbShkYXRhOiBYSWRlbnRpdHlbXSwgaXRlbTogWElkZW50aXR5KSB7XHJcbiAgICByZXR1cm4gZGF0YS5pbmRleE9mKGl0ZW0pID09PSBkYXRhLmxlbmd0aCAtIDE7XHJcbiAgfVxyXG5cclxuICBpdGVtQ2xpY2sodHlwZTogJ2hvdXInIHwgJ21pbnV0ZScgfCAnc2Vjb25kJyB8ICd1c2UxMkhvdXJzJykge1xyXG4gICAgaWYgKFhJc0VtcHR5KHRoaXMubW9kZWwpKSB7XHJcbiAgICAgIHRoaXMubW9kZWwgPSB0aGlzLnNldFplcm8oKTtcclxuICAgIH1cclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlICdtaW51dGUnOlxyXG4gICAgICAgIHRoaXMubW9kZWwuc2V0TWludXRlcyh0aGlzLm1pbnV0ZSEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdzZWNvbmQnOlxyXG4gICAgICAgIHRoaXMubW9kZWwuc2V0U2Vjb25kcyh0aGlzLnNlY29uZCEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdob3VyJzpcclxuICAgICAgICBpZiAodGhpcy51c2UxMkhvdXJzKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy51c2UxMkhvdXIgPT09ICdwbScgJiYgdGhpcy5ob3VyICE9PSAxMikge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsLnNldEhvdXJzKHRoaXMuaG91ciEgKyAxMik7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudXNlMTJIb3VyID09PSAnYW0nICYmIHRoaXMuaG91ciA9PT0gMTIpIHtcclxuICAgICAgICAgICAgdGhpcy5tb2RlbC5zZXRIb3VycygwKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwuc2V0SG91cnModGhpcy5ob3VyISk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMubW9kZWwuc2V0SG91cnModGhpcy5ob3VyISk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd1c2UxMkhvdXJzJzpcclxuICAgICAgICBpZiAodGhpcy51c2UxMkhvdXIgPT09ICdwbScgJiYgdGhpcy5ob3VyICE9PSAxMikge1xyXG4gICAgICAgICAgdGhpcy5tb2RlbC5zZXRIb3Vycyh0aGlzLmhvdXIhICsgMTIpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy51c2UxMkhvdXIgPT09ICdhbScgJiYgdGhpcy5ob3VyID09PSAxMikge1xyXG4gICAgICAgICAgdGhpcy5tb2RlbC5zZXRIb3VycygwKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5tb2RlbC5zZXRIb3Vycyh0aGlzLmhvdXIhKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFNjcm9sbFRvcCh0cnVlKTtcclxuICAgIHRoaXMubm9kZUVtaXQuZW1pdCh0aGlzLm1vZGVsKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2Nyb2xsVG8oZWxlbWVudDogSFRNTEVsZW1lbnQsIHRvOiBudW1iZXIsIGR1cmF0aW9uOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNsc05hbWUgPSBlbGVtZW50LmNsYXNzTmFtZTtcclxuICAgIGNvbnN0IGRpZmZlcmVuY2UgPSB0byAtIGVsZW1lbnQuc2Nyb2xsVG9wO1xyXG4gICAgY29uc3QgcGVyVGljayA9IChkaWZmZXJlbmNlIC8gZHVyYXRpb24pICogMTA7XHJcbiAgICB0aGlzLnNjcm9sbEFuaW1hdGluZ1tjbHNOYW1lXSA9IHRydWU7XHJcbiAgICByZXFBbmltRnJhbWUoKCkgPT4ge1xyXG4gICAgICBlbGVtZW50LnNjcm9sbFRvcCA9IGVsZW1lbnQuc2Nyb2xsVG9wICsgcGVyVGljaztcclxuICAgICAgaWYgKGVsZW1lbnQuc2Nyb2xsVG9wID09PSB0byB8fCBkdXJhdGlvbiA8PSAwKSB7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxBbmltYXRpbmdbY2xzTmFtZV0gPSBmYWxzZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxUbyhlbGVtZW50LCB0bywgZHVyYXRpb24gLSAxMCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwieC10aW1lLXBpY2tlci1mcmFtZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ4LXRpbWUtcGlja2VyLWZyYW1lLWhvdXJcIiAjaG91clJlZj5cclxuICAgIDx4LWxpc3QgW2RhdGFdPVwiaG91ckRhdGFcIiBbKG5nTW9kZWwpXT1cImhvdXJcIiAobm9kZUNsaWNrKT1cIml0ZW1DbGljaygnaG91cicpXCI+PC94LWxpc3Q+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIngtdGltZS1waWNrZXItZnJhbWUtbWludXRlXCIgI21pbnV0ZVJlZiAqbmdJZj1cInR5cGUgIT09ICdob3VyJ1wiPlxyXG4gICAgPHgtbGlzdCBbZGF0YV09XCJtaW51dGVEYXRhXCIgWyhuZ01vZGVsKV09XCJtaW51dGVcIiAobm9kZUNsaWNrKT1cIml0ZW1DbGljaygnbWludXRlJylcIj48L3gtbGlzdD5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwieC10aW1lLXBpY2tlci1mcmFtZS1zZWNvbmRcIiAjc2Vjb25kUmVmICpuZ0lmPVwidHlwZSA9PT0gJ3RpbWUnXCI+XHJcbiAgICA8eC1saXN0IFtkYXRhXT1cInNlY29uZERhdGFcIiBbKG5nTW9kZWwpXT1cInNlY29uZFwiIChub2RlQ2xpY2spPVwiaXRlbUNsaWNrKCdzZWNvbmQnKVwiPjwveC1saXN0PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJ1c2UxMkhvdXJzXCIgY2xhc3M9XCJ4LXRpbWUtcGlja2VyLWZyYW1lLXVzZTEySG91cnNcIiAjdXNlMTJIb3Vyc1JlZj5cclxuICAgIDx4LWxpc3QgW2RhdGFdPVwidXNlMTJIb3Vyc0RhdGFcIiBbKG5nTW9kZWwpXT1cInVzZTEySG91clwiIChub2RlQ2xpY2spPVwiaXRlbUNsaWNrKCd1c2UxMkhvdXJzJylcIj48L3gtbGlzdD5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
328
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXItZnJhbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdGltZS1waWNrZXIvdGltZS1waWNrZXItZnJhbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdGltZS1waWNrZXIvdGltZS1waWNrZXItZnJhbWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTJCLHNCQUFzQixFQUFtQixNQUFNLHdCQUF3QixDQUFDO0FBQzFHLE9BQU8sRUFBRSxZQUFZLEVBQXVCLFNBQVMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUzSCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7OztBQUUvQixNQU9hLHlCQUF5QjtJQTZCcEMsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLE1BQU0sRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDN0MsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDcEIsc0JBQXNCO1lBQ3RCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDekI7UUFDRCxTQUFTLENBQUMsaUJBQWlCLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUVELFFBQVE7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eUI7cUhBQXpCLHlCQUF5Qix3dEJDekJ0Qyx5MEJBY0E7O1NEV2EseUJBQXlCOzJGQUF6Qix5QkFBeUI7a0JBUHJDLFNBQVM7K0JBQ0UsR0FBRyxzQkFBc0IsRUFBRSxpQkFHdEIsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTTttSUFHdEMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBakIsTUFBTTtnQkFDZSxPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBQ0ksU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNFLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDTSxhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb25cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWFRpbWVQaWNrZXJEaXNhYmxlZFRpbWUsIFhUaW1lUGlja2VyRnJhbWVQcmVmaXgsIFhUaW1lUGlja2VyVHlwZSB9IGZyb20gJy4vdGltZS1waWNrZXIucHJvcGVydHknO1xyXG5pbXBvcnQgeyByZXFBbmltRnJhbWUsIFhCb29sZWFuLCBYSWRlbnRpdHksIFhJc0NoYW5nZSwgWElzRW1wdHksIFhJc0Z1bmN0aW9uLCBYSXNOdWxsLCBYSXNOdW1iZXIgfSBmcm9tICdAbmctbmVzdC91aS9jb3JlJztcclxuaW1wb3J0IHsgWEkxOG5TZXJ2aWNlLCBYSTE4blRpbWVQaWNrZXIgfSBmcm9tICdAbmctbmVzdC91aS9pMThuJztcclxuaW1wb3J0IHsgdGFrZVVudGlsLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBgJHtYVGltZVBpY2tlckZyYW1lUHJlZml4fWAsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RpbWUtcGlja2VyLWZyYW1lLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90aW1lLXBpY2tlci1mcmFtZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFhUaW1lUGlja2VyRnJhbWVDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpIHR5cGU6IFhUaW1lUGlja2VyVHlwZSA9ICd0aW1lJztcclxuICBASW5wdXQoKSB2YWx1ZSE6IG51bWJlciB8IG51bGw7XHJcbiAgQElucHV0KCkgdXNlMTJIb3VycyE6IFhCb29sZWFuO1xyXG4gIEBJbnB1dCgpIGhvdXJTdGVwID0gMTtcclxuICBASW5wdXQoKSBtaW51dGVTdGVwID0gMTtcclxuICBASW5wdXQoKSBzZWNvbmRTdGVwID0gMTtcclxuICBASW5wdXQoKSBkZWZhdWx0Tm93ID0gdHJ1ZTtcclxuICBASW5wdXQoKSBkaXNhYmxlZFRpbWU/OiBYVGltZVBpY2tlckRpc2FibGVkVGltZTtcclxuICBASW5wdXQoKSBkaXNhYmxlZFRpbWVQYXJhbT86IGFueTtcclxuICBAT3V0cHV0KCkgbm9kZUVtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XHJcbiAgQFZpZXdDaGlsZCgnaG91clJlZicpIGhvdXJSZWY/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdtaW51dGVSZWYnKSBtaW51dGVSZWY/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdzZWNvbmRSZWYnKSBzZWNvbmRSZWY/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCd1c2UxMkhvdXJzUmVmJykgdXNlMTJIb3Vyc1JlZj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG4gIG1vZGVsITogRGF0ZTtcclxuICBob3VyITogbnVtYmVyIHwgbnVsbDtcclxuICBtaW51dGUhOiBudW1iZXIgfCBudWxsO1xyXG4gIHNlY29uZCE6IG51bWJlciB8IG51bGw7XHJcbiAgdXNlMTJIb3VyOiBzdHJpbmcgPSAnYW0nO1xyXG4gIHNjcm9sbEFuaW1hdGluZzogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcclxuICBob3VyRGF0YTogWElkZW50aXR5W10gPSBbXTtcclxuICBtaW51dGVEYXRhOiBYSWRlbnRpdHlbXSA9IFtdO1xyXG4gIHNlY29uZERhdGE6IFhJZGVudGl0eVtdID0gW107XHJcbiAgdXNlMTJIb3Vyc0RhdGE6IFhJZGVudGl0eVtdID0gW107XHJcbiAgbG9jYWxlOiBYSTE4blRpbWVQaWNrZXIgPSB7fTtcclxuICBpc0luaXQgPSBmYWxzZTtcclxuICBwcml2YXRlIF91blN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IHZhbHVlLCBkaXNhYmxlZFRpbWVQYXJhbSB9ID0gY2hhbmdlcztcclxuICAgIGlmIChYSXNDaGFuZ2UodmFsdWUpKSB7XHJcbiAgICAgIC8vIHRoaXMuc2V0RGF0YUluaXQoKTtcclxuICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgIHRoaXMuc2V0U2Nyb2xsVG9wKHRydWUpO1xyXG4gICAgfVxyXG4gICAgWElzQ2hhbmdlKGRpc2FibGVkVGltZVBhcmFtKSAmJiB0aGlzLnNldERhdGFJbml0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc2V0RGF0YUluaXQoKTtcclxuICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgdGhpcy5pMThuLmxvY2FsZUNoYW5nZVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHgpID0+IHgudGltZVBpY2tlciBhcyBYSTE4blRpbWVQaWNrZXIpLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9jYWxlID0geDtcclxuICAgICAgICBpZiAodGhpcy51c2UxMkhvdXJzKSB7XHJcbiAgICAgICAgICB0aGlzLnNldFVzZTEySG91cnNEYXRhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuc2V0U2Nyb2xsVG9wKCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgaTE4bjogWEkxOG5TZXJ2aWNlKSB7fVxyXG5cclxuICBzZXREYXRhSW5pdCgpIHtcclxuICAgIHRoaXMuc2V0SG91ckRhdGEoKTtcclxuICAgIHRoaXMuc2V0TWludXRlRGF0YSgpO1xyXG4gICAgdGhpcy5zZXRTZWNvbmREYXRhKCk7XHJcbiAgICB0aGlzLnNldFVzZTEySG91cnNEYXRhKCk7XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZCh0eXBlOiAnaG91cnMnIHwgJ21pbnV0ZXMnIHwgJ3NlY29uZHMnLCBudW06IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWRUaW1lICYmIFhJc0Z1bmN0aW9uKHRoaXMuZGlzYWJsZWRUaW1lKSkge1xyXG4gICAgICBjb25zdCBkaXNhYmxlZE1hcCA9IHRoaXMuZGlzYWJsZWRUaW1lKHRoaXMuZGlzYWJsZWRUaW1lUGFyYW0pO1xyXG4gICAgICBjb25zdCB7IGRpc2FibGVkSG91cnMsIGRpc2FibGVkTWludXRlcywgZGlzYWJsZWRTZWNvbmRzIH0gPSBkaXNhYmxlZE1hcDtcclxuICAgICAgbGV0IGRpc2FibGVkTnVtczogbnVtYmVyW10gPSBbXTtcclxuICAgICAgaWYgKHR5cGUgPT09ICdob3VycycpIHtcclxuICAgICAgICBkaXNhYmxlZE51bXMgPSBkaXNhYmxlZEhvdXJzID8gZGlzYWJsZWRIb3VycygpIDogW107XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ21pbnV0ZXMnKSB7XHJcbiAgICAgICAgZGlzYWJsZWROdW1zID0gZGlzYWJsZWRNaW51dGVzID8gZGlzYWJsZWRNaW51dGVzKCkgOiBbXTtcclxuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnc2Vjb25kcycpIHtcclxuICAgICAgICBkaXNhYmxlZE51bXMgPSBkaXNhYmxlZFNlY29uZHMgPyBkaXNhYmxlZFNlY29uZHMoKSA6IFtdO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBkaXNhYmxlZE51bXMuaW5jbHVkZXMobnVtKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzZXRIb3VyRGF0YSgpIHtcclxuICAgIGxldCBsZW5ndGggPSB0aGlzLnVzZTEySG91cnMgPyAxMiA6IDI0O1xyXG4gICAgdGhpcy5ob3VyRGF0YSA9IEFycmF5LmZyb20oeyBsZW5ndGg6IE1hdGguY2VpbChsZW5ndGggLyB0aGlzLmhvdXJTdGVwKSB9KS5tYXAoKF8sIGkpID0+IHtcclxuICAgICAgaWYgKHRoaXMudXNlMTJIb3VycyAmJiBpID09PSAwKSB7XHJcbiAgICAgICAgaSA9IDEyO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBkaXNhYmxlZDogdGhpcy5zZXREaXNhYmxlZCgnaG91cnMnLCBpKSxcclxuICAgICAgICAgIGxhYmVsOiB0aGlzLnByZWZpeFplcm8oaSwgMiksXHJcbiAgICAgICAgICBpZDogaVxyXG4gICAgICAgIH07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgbnVtID0gaSAqIHRoaXMuaG91clN0ZXA7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGRpc2FibGVkOiB0aGlzLnNldERpc2FibGVkKCdob3VycycsIG51bSksXHJcbiAgICAgICAgICBsYWJlbDogdGhpcy5wcmVmaXhaZXJvKG51bSwgMiksXHJcbiAgICAgICAgICBpZDogbnVtXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRNaW51dGVEYXRhKCkge1xyXG4gICAgdGhpcy5taW51dGVEYXRhID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogTWF0aC5jZWlsKDYwIC8gdGhpcy5taW51dGVTdGVwKSB9KS5tYXAoKF8sIGkpID0+IHtcclxuICAgICAgY29uc3QgbnVtID0gaSAqIHRoaXMubWludXRlU3RlcDtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBkaXNhYmxlZDogdGhpcy5zZXREaXNhYmxlZCgnbWludXRlcycsIG51bSksXHJcbiAgICAgICAgbGFiZWw6IHRoaXMucHJlZml4WmVybyhudW0sIDIpLFxyXG4gICAgICAgIGlkOiBudW1cclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0U2Vjb25kRGF0YSgpIHtcclxuICAgIHRoaXMuc2Vjb25kRGF0YSA9IEFycmF5LmZyb20oeyBsZW5ndGg6IE1hdGguY2VpbCg2MCAvIHRoaXMuc2Vjb25kU3RlcCkgfSkubWFwKChfLCBpKSA9PiB7XHJcbiAgICAgIGNvbnN0IG51bTogbnVtYmVyID0gaSAqIHRoaXMuc2Vjb25kU3RlcDtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBkaXNhYmxlZDogdGhpcy5zZXREaXNhYmxlZCgnc2Vjb25kcycsIG51bSksXHJcbiAgICAgICAgbGFiZWw6IHRoaXMucHJlZml4WmVybyhudW0sIDIpLFxyXG4gICAgICAgIGlkOiBudW1cclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0VXNlMTJIb3Vyc0RhdGEoKSB7XHJcbiAgICB0aGlzLnVzZTEySG91cnNEYXRhID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6ICdhbScsXHJcbiAgICAgICAgbGFiZWw6IHRoaXMubG9jYWxlLmFtXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogJ3BtJyxcclxuICAgICAgICBsYWJlbDogdGhpcy5sb2NhbGUucG1cclxuICAgICAgfVxyXG4gICAgXTtcclxuICB9XHJcblxyXG4gIGluaXQoKSB7XHJcbiAgICBpZiAoIVhJc0VtcHR5KHRoaXMudmFsdWUpKSB7XHJcbiAgICAgIHRoaXMuc2V0RGVmYXVsdCgpO1xyXG4gICAgICB0aGlzLnNldFRpbWUodGhpcy5tb2RlbCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5kZWZhdWx0Tm93KSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbCA9IHRoaXMuc2V0Tm93KCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5ob3VyID0gbnVsbDtcclxuICAgICAgICB0aGlzLm1pbnV0ZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5zZWNvbmQgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzZXREZWZhdWx0KCkge1xyXG4gICAgdGhpcy5tb2RlbCA9IG5ldyBEYXRlKHRoaXMudmFsdWUhKTtcclxuICB9XHJcblxyXG4gIHNldE5vdygpIHtcclxuICAgIGNvbnN0IGRlZiA9IG5ldyBEYXRlKCcxOTcwLTAxLTAxJyk7XHJcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKGRlZi5nZXRGdWxsWWVhcigpLCBkZWYuZ2V0TW9udGgoKSwgZGVmLmdldERhdGUoKSwgbm93LmdldEhvdXJzKCksIG5vdy5nZXRNaW51dGVzKCksIG5vdy5nZXRTZWNvbmRzKCkpO1xyXG4gIH1cclxuXHJcbiAgc2V0WmVybygpIHtcclxuICAgIGNvbnN0IGRlZiA9IG5ldyBEYXRlKCcxOTcwLTAxLTAxJyk7XHJcbiAgICByZXR1cm4gbmV3IERhdGUoZGVmLmdldEZ1bGxZZWFyKCksIGRlZi5nZXRNb250aCgpLCBkZWYuZ2V0RGF0ZSgpLCAwLCAwLCAwKTtcclxuICB9XHJcblxyXG4gIHNldFRpbWUoZGF0ZTogRGF0ZSkge1xyXG4gICAgaWYgKHRoaXMudXNlMTJIb3Vycykge1xyXG4gICAgICBsZXQgaG91ciA9IGRhdGUuZ2V0SG91cnMoKTtcclxuICAgICAgaWYgKGhvdXIgPiAxMikge1xyXG4gICAgICAgIHRoaXMuaG91ciA9IGhvdXIgLSAxMjtcclxuICAgICAgICB0aGlzLnVzZTEySG91ciA9ICdwbSc7XHJcbiAgICAgIH0gZWxzZSBpZiAoaG91ciA9PT0gMTIpIHtcclxuICAgICAgICB0aGlzLmhvdXIgPSAxMjtcclxuICAgICAgICB0aGlzLnVzZTEySG91ciA9ICdwbSc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5ob3VyID0gaG91ciA9PT0gMCA/IDEyIDogaG91cjtcclxuICAgICAgICB0aGlzLnVzZTEySG91ciA9ICdhbSc7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaG91ciA9IGRhdGUuZ2V0SG91cnMoKTtcclxuICAgIH1cclxuICAgIHRoaXMubWludXRlID0gZGF0ZS5nZXRNaW51dGVzKCk7XHJcbiAgICB0aGlzLnNlY29uZCA9IGRhdGUuZ2V0U2Vjb25kcygpO1xyXG4gIH1cclxuXHJcbiAgcHJlZml4WmVybyhudW06IG51bWJlciwgbjogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gKEFycmF5KG4pLmpvaW4oJzAnKSArIG51bSkuc2xpY2UoLW4pO1xyXG4gIH1cclxuXHJcbiAgc2V0U2Nyb2xsVG9wKGFuaW1hdGluZyA9IGZhbHNlKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkKCdob3VyJywgdGhpcy5ob3VyUmVmPy5uYXRpdmVFbGVtZW50LCB0aGlzLmhvdXIhLCBhbmltYXRpbmcpO1xyXG4gICAgdGhpcy5zZWxlY3RlZCgnbWludXRlJywgdGhpcy5taW51dGVSZWY/Lm5hdGl2ZUVsZW1lbnQsIHRoaXMubWludXRlISwgYW5pbWF0aW5nKTtcclxuICAgIHRoaXMuc2VsZWN0ZWQoJ3NlY29uZCcsIHRoaXMuc2Vjb25kUmVmPy5uYXRpdmVFbGVtZW50LCB0aGlzLnNlY29uZCEsIGFuaW1hdGluZyk7XHJcbiAgICB0aGlzLnNlbGVjdGVkKCd1c2UxMkhvdXInLCB0aGlzLnVzZTEySG91cnNSZWY/Lm5hdGl2ZUVsZW1lbnQsIHRoaXMudXNlMTJIb3VyLCBhbmltYXRpbmcpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0ZWQodHlwZTogJ2hvdXInIHwgJ21pbnV0ZScgfCAnc2Vjb25kJyB8ICd1c2UxMkhvdXInLCBlbGU/OiBIVE1MRWxlbWVudCwgbnVtPzogbnVtYmVyIHwgc3RyaW5nLCBhbmltYXRpbmcgPSBmYWxzZSkge1xyXG4gICAgaWYgKCFlbGUgfHwgWElzTnVsbChudW0pKSByZXR1cm47XHJcbiAgICBpZiAodGhpcy5zY3JvbGxBbmltYXRpbmdbZWxlLmNsYXNzTmFtZV0pIHJldHVybjtcclxuICAgIGxldCBsZW4gPSBOdW1iZXIobnVtKTtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlICdob3VyJzpcclxuICAgICAgICBsZW4gPSB0aGlzLmhvdXJEYXRhLmZpbmRJbmRleCgoeCkgPT4geC5pZCA9PT0gbnVtKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnbWludXRlJzpcclxuICAgICAgICBsZW4gPSB0aGlzLm1pbnV0ZURhdGEuZmluZEluZGV4KCh4KSA9PiB4LmlkID09PSBudW0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdzZWNvbmQnOlxyXG4gICAgICAgIGxlbiA9IHRoaXMuc2Vjb25kRGF0YS5maW5kSW5kZXgoKHgpID0+IHguaWQgPT09IG51bSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3VzZTEySG91cic6XHJcbiAgICAgICAgbGVuID0gdGhpcy51c2UxMkhvdXJzRGF0YS5maW5kSW5kZXgoKHgpID0+IHguaWQgPT09IG51bSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICBsZXQgY3VycmVudCA9IGVsZS5xdWVyeVNlbGVjdG9yKGAueC1saXN0IHgtbGlzdC1vcHRpb246bnRoLWNoaWxkKCR7bGVuICsgMX0pYCkgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAoY3VycmVudCkge1xyXG4gICAgICBpZiAoYW5pbWF0aW5nKSB7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxUbyhlbGUsIGN1cnJlbnQub2Zmc2V0VG9wLCAxMjApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGVsZS5zY3JvbGxUb3AgPSBjdXJyZW50Lm9mZnNldFRvcDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNMYXN0SXRlbShkYXRhOiBYSWRlbnRpdHlbXSwgaXRlbTogWElkZW50aXR5KSB7XHJcbiAgICByZXR1cm4gZGF0YS5pbmRleE9mKGl0ZW0pID09PSBkYXRhLmxlbmd0aCAtIDE7XHJcbiAgfVxyXG5cclxuICBpdGVtQ2xpY2sodHlwZTogJ2hvdXInIHwgJ21pbnV0ZScgfCAnc2Vjb25kJyB8ICd1c2UxMkhvdXJzJykge1xyXG4gICAgaWYgKFhJc0VtcHR5KHRoaXMubW9kZWwpKSB7XHJcbiAgICAgIHRoaXMubW9kZWwgPSB0aGlzLnNldFplcm8oKTtcclxuICAgIH1cclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlICdtaW51dGUnOlxyXG4gICAgICAgIHRoaXMubW9kZWwuc2V0TWludXRlcyh0aGlzLm1pbnV0ZSEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdzZWNvbmQnOlxyXG4gICAgICAgIHRoaXMubW9kZWwuc2V0U2Vjb25kcyh0aGlzLnNlY29uZCEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdob3VyJzpcclxuICAgICAgICBpZiAodGhpcy51c2UxMkhvdXJzKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy51c2UxMkhvdXIgPT09ICdwbScgJiYgdGhpcy5ob3VyICE9PSAxMikge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsLnNldEhvdXJzKHRoaXMuaG91ciEgKyAxMik7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudXNlMTJIb3VyID09PSAnYW0nICYmIHRoaXMuaG91ciA9PT0gMTIpIHtcclxuICAgICAgICAgICAgdGhpcy5tb2RlbC5zZXRIb3VycygwKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwuc2V0SG91cnModGhpcy5ob3VyISk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMubW9kZWwuc2V0SG91cnModGhpcy5ob3VyISk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd1c2UxMkhvdXJzJzpcclxuICAgICAgICBpZiAodGhpcy51c2UxMkhvdXIgPT09ICdwbScgJiYgdGhpcy5ob3VyICE9PSAxMikge1xyXG4gICAgICAgICAgdGhpcy5tb2RlbC5zZXRIb3Vycyh0aGlzLmhvdXIhICsgMTIpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy51c2UxMkhvdXIgPT09ICdhbScgJiYgdGhpcy5ob3VyID09PSAxMikge1xyXG4gICAgICAgICAgdGhpcy5tb2RlbC5zZXRIb3VycygwKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5tb2RlbC5zZXRIb3Vycyh0aGlzLmhvdXIhKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFNjcm9sbFRvcCh0cnVlKTtcclxuICAgIHRoaXMubm9kZUVtaXQuZW1pdCh0aGlzLm1vZGVsKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2Nyb2xsVG8oZWxlbWVudDogSFRNTEVsZW1lbnQsIHRvOiBudW1iZXIsIGR1cmF0aW9uOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNsc05hbWUgPSBlbGVtZW50LmNsYXNzTmFtZTtcclxuICAgIGNvbnN0IGRpZmZlcmVuY2UgPSB0byAtIGVsZW1lbnQuc2Nyb2xsVG9wO1xyXG4gICAgY29uc3QgcGVyVGljayA9IChkaWZmZXJlbmNlIC8gZHVyYXRpb24pICogMTA7XHJcbiAgICB0aGlzLnNjcm9sbEFuaW1hdGluZ1tjbHNOYW1lXSA9IHRydWU7XHJcbiAgICByZXFBbmltRnJhbWUoKCkgPT4ge1xyXG4gICAgICBjb25zdCBudW0gPSBlbGVtZW50LnNjcm9sbFRvcCArIHBlclRpY2s7XHJcbiAgICAgIGlmIChYSXNOdW1iZXIobnVtKSAmJiBudW0gIT09IEluZmluaXR5KSB7XHJcbiAgICAgICAgZWxlbWVudC5zY3JvbGxUb3AgPSBudW07XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGVsZW1lbnQuc2Nyb2xsVG9wID09PSB0byB8fCBkdXJhdGlvbiA8PSAwKSB7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxBbmltYXRpbmdbY2xzTmFtZV0gPSBmYWxzZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxUbyhlbGVtZW50LCB0bywgZHVyYXRpb24gLSAxMCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwieC10aW1lLXBpY2tlci1mcmFtZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ4LXRpbWUtcGlja2VyLWZyYW1lLWhvdXJcIiAjaG91clJlZj5cclxuICAgIDx4LWxpc3QgW2RhdGFdPVwiaG91ckRhdGFcIiBbKG5nTW9kZWwpXT1cImhvdXJcIiAobm9kZUNsaWNrKT1cIml0ZW1DbGljaygnaG91cicpXCI+PC94LWxpc3Q+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIngtdGltZS1waWNrZXItZnJhbWUtbWludXRlXCIgI21pbnV0ZVJlZiAqbmdJZj1cInR5cGUgIT09ICdob3VyJ1wiPlxyXG4gICAgPHgtbGlzdCBbZGF0YV09XCJtaW51dGVEYXRhXCIgWyhuZ01vZGVsKV09XCJtaW51dGVcIiAobm9kZUNsaWNrKT1cIml0ZW1DbGljaygnbWludXRlJylcIj48L3gtbGlzdD5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwieC10aW1lLXBpY2tlci1mcmFtZS1zZWNvbmRcIiAjc2Vjb25kUmVmICpuZ0lmPVwidHlwZSA9PT0gJ3RpbWUnXCI+XHJcbiAgICA8eC1saXN0IFtkYXRhXT1cInNlY29uZERhdGFcIiBbKG5nTW9kZWwpXT1cInNlY29uZFwiIChub2RlQ2xpY2spPVwiaXRlbUNsaWNrKCdzZWNvbmQnKVwiPjwveC1saXN0PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJ1c2UxMkhvdXJzXCIgY2xhc3M9XCJ4LXRpbWUtcGlja2VyLWZyYW1lLXVzZTEySG91cnNcIiAjdXNlMTJIb3Vyc1JlZj5cclxuICAgIDx4LWxpc3QgW2RhdGFdPVwidXNlMTJIb3Vyc0RhdGFcIiBbKG5nTW9kZWwpXT1cInVzZTEySG91clwiIChub2RlQ2xpY2spPVwiaXRlbUNsaWNrKCd1c2UxMkhvdXJzJylcIj48L3gtbGlzdD5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -24,11 +24,14 @@ const X_CONFIG_NAME = 'anchor';
|
|
|
24
24
|
*/
|
|
25
25
|
class XAnchorProperty extends XProperty {
|
|
26
26
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.5", ngImport: i0, type: XAnchorProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
27
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.5", type: XAnchorProperty, selector: "x-anchor-property", inputs: { scroll: "scroll", affixTop: "affixTop", layout: "layout", justify: "justify" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
|
|
27
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.5", type: XAnchorProperty, selector: "x-anchor-property", inputs: { scroll: "scroll", affixTop: "affixTop", affixWidth: "affixWidth", layout: "layout", justify: "justify" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
|
|
28
28
|
}
|
|
29
29
|
__decorate([
|
|
30
30
|
XWithConfig(X_CONFIG_NAME, '0')
|
|
31
31
|
], XAnchorProperty.prototype, "affixTop", void 0);
|
|
32
|
+
__decorate([
|
|
33
|
+
XWithConfig(X_CONFIG_NAME)
|
|
34
|
+
], XAnchorProperty.prototype, "affixWidth", void 0);
|
|
32
35
|
__decorate([
|
|
33
36
|
XWithConfig(X_CONFIG_NAME, 'right')
|
|
34
37
|
], XAnchorProperty.prototype, "layout", void 0);
|
|
@@ -42,6 +45,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.5", ngImpor
|
|
|
42
45
|
type: Input
|
|
43
46
|
}], affixTop: [{
|
|
44
47
|
type: Input
|
|
48
|
+
}], affixWidth: [{
|
|
49
|
+
type: Input
|
|
45
50
|
}], layout: [{
|
|
46
51
|
type: Input
|
|
47
52
|
}], justify: [{
|
|
@@ -109,6 +114,7 @@ class XAnchorComponent extends XAnchorProperty {
|
|
|
109
114
|
let maxScrollTop = this.scroll.scrollHeight - this.scroll.clientHeight;
|
|
110
115
|
if (scrollTop > maxScrollTop)
|
|
111
116
|
scrollTop = maxScrollTop;
|
|
117
|
+
console.log(scrollTop);
|
|
112
118
|
this.scrollTo(this.scroll, parseInt(`${scrollTop}`), 150);
|
|
113
119
|
}
|
|
114
120
|
setClassMap() {
|
|
@@ -182,6 +188,20 @@ class XAnchorComponent extends XAnchorProperty {
|
|
|
182
188
|
}
|
|
183
189
|
}
|
|
184
190
|
}
|
|
191
|
+
getWidth() {
|
|
192
|
+
if (!this.affixWidth)
|
|
193
|
+
return null;
|
|
194
|
+
if (this.affixWidth === '0')
|
|
195
|
+
return 0;
|
|
196
|
+
if (XIsNumber(this.affixWidth))
|
|
197
|
+
return this.affixWidth;
|
|
198
|
+
else if (this.affixWidth.indexOf('rem') !== -1)
|
|
199
|
+
return Number(this.affixWidth.replace(/rem/g, '')) * this._fontSize;
|
|
200
|
+
else if (this.affixWidth.indexOf('px') !== -1)
|
|
201
|
+
return Number(this.affixWidth.replace(/px/g, ''));
|
|
202
|
+
else
|
|
203
|
+
return Number(this.affixWidth);
|
|
204
|
+
}
|
|
185
205
|
getTop() {
|
|
186
206
|
if (this.affixTop === '0')
|
|
187
207
|
return 0;
|
|
@@ -197,7 +217,10 @@ class XAnchorComponent extends XAnchorProperty {
|
|
|
197
217
|
const difference = to - element.scrollTop;
|
|
198
218
|
const perTick = (difference / duration) * 10;
|
|
199
219
|
reqAnimFrame(() => {
|
|
200
|
-
|
|
220
|
+
const num = element.scrollTop + perTick;
|
|
221
|
+
if (XIsNumber(num) && num !== Infinity) {
|
|
222
|
+
element.scrollTop = num;
|
|
223
|
+
}
|
|
201
224
|
if (element.scrollTop === to || duration <= 0) {
|
|
202
225
|
setTimeout(() => (this._scrolling = false), 20);
|
|
203
226
|
return;
|
|
@@ -208,11 +231,11 @@ class XAnchorComponent extends XAnchorProperty {
|
|
|
208
231
|
});
|
|
209
232
|
}
|
|
210
233
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.5", ngImport: i0, type: XAnchorComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.XConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
211
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.5", type: XAnchorComponent, selector: "x-anchor", viewQueries: [{ propertyName: "anchor", first: true, predicate: ["anchor"], descendants: true, static: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div #anchor class=\"x-anchor\" [ngClass]=\"classMap\">\r\n <div #content class=\"x-anchor-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n <x-affix class=\"x-anchor-affix\" [top]=\"affixTop\">\r\n <div class=\"x-anchor-slider\" [style.height.px]=\"sliderHeight\">\r\n <x-slider\r\n [data]=\"sliderData\"\r\n layout=\"column\"\r\n [activatedIndex]=\"activatedIndex\"\r\n [nodeJustify]=\"justify\"\r\n [nodeTpl]=\"sliderNodeTpl\"\r\n [showAnchor]=\"true\"\r\n (indexChange)=\"activatedChange($event)\"\r\n ></x-slider>\r\n </div>\r\n </x-affix>\r\n</div>\r\n\r\n<ng-template #sliderNodeTpl let-node=\"$node\">\r\n <span [style.padding-left.rem]=\"node.left - 1\">{{ node.label }}</span>\r\n</ng-template>\r\n", styles: [".x-anchor{margin:0;padding:0;display:flex}.x-anchor-content{flex:1}.x-anchor-affix{display:block}.x-anchor-slider{float:left}.x-anchor-slider:hover{overflow-y:auto}.x-anchor-slider .x-slider{overflow:hidden}.x-anchor-right{flex-direction:row}.x-anchor-right .x-anchor-slider .x-slider-column>.x-slider-scroll{overflow-y:auto}.x-anchor-right .x-anchor-slider .x-slider-column>.x-slider-scroll>ul>li{border-left:.125rem solid var(--x-border)}.x-anchor-right .x-anchor-slider .x-slider-column>.x-slider-scroll>ul>li.x-slider-highlight{border:none;border-top-left-radius:0;border-bottom-left-radius:0;z-index:2;border-left:.125rem solid var(--x-primary)}.x-anchor-left{flex-direction:row-reverse}.x-anchor-left .x-anchor-slider .x-slider-column>.x-slider-scroll{overflow-y:auto}.x-anchor-left .x-anchor-slider .x-slider-column>.x-slider-scroll>ul>li{border-right:.125rem solid var(--x-border)}.x-anchor-left .x-anchor-slider .x-slider-column>.x-slider-scroll>ul>li.x-slider-highlight{border:none;border-top-right-radius:0;border-bottom-right-radius:0;z-index:2;border-right:.125rem solid var(--x-primary)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i3.XAffixComponent, selector: "x-affix" }, { kind: "component", type: i4.XSliderComponent, selector: "x-slider" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
234
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.5", type: XAnchorComponent, selector: "x-anchor", viewQueries: [{ propertyName: "anchor", first: true, predicate: ["anchor"], descendants: true, static: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div #anchor class=\"x-anchor\" [ngClass]=\"classMap\">\r\n <div #content class=\"x-anchor-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n <x-affix class=\"x-anchor-affix\" [top]=\"affixTop\">\r\n <div class=\"x-anchor-slider\" [style.height.px]=\"sliderHeight\" [style.width.px]=\"getWidth()\">\r\n <x-slider\r\n [data]=\"sliderData\"\r\n layout=\"column\"\r\n [activatedIndex]=\"activatedIndex\"\r\n [nodeJustify]=\"justify\"\r\n [nodeTpl]=\"sliderNodeTpl\"\r\n [showAnchor]=\"true\"\r\n (indexChange)=\"activatedChange($event)\"\r\n ></x-slider>\r\n </div>\r\n </x-affix>\r\n</div>\r\n\r\n<ng-template #sliderNodeTpl let-node=\"$node\">\r\n <span [style.padding-left.rem]=\"node.left - 1\">{{ node.label }}</span>\r\n</ng-template>\r\n", styles: [".x-anchor{margin:0;padding:0;display:flex}.x-anchor-content{flex:1}.x-anchor-affix{display:block}.x-anchor-slider{float:left}.x-anchor-slider:hover{overflow-y:auto}.x-anchor-slider .x-slider{overflow:hidden}.x-anchor-right{flex-direction:row}.x-anchor-right .x-anchor-slider .x-slider-column>.x-slider-scroll{overflow-y:auto}.x-anchor-right .x-anchor-slider .x-slider-column>.x-slider-scroll>ul>li{border-left:.125rem solid var(--x-border)}.x-anchor-right .x-anchor-slider .x-slider-column>.x-slider-scroll>ul>li.x-slider-highlight{border:none;border-top-left-radius:0;border-bottom-left-radius:0;z-index:2;border-left:.125rem solid var(--x-primary)}.x-anchor-left{flex-direction:row-reverse}.x-anchor-left .x-anchor-slider .x-slider-column>.x-slider-scroll{overflow-y:auto}.x-anchor-left .x-anchor-slider .x-slider-column>.x-slider-scroll>ul>li{border-right:.125rem solid var(--x-border)}.x-anchor-left .x-anchor-slider .x-slider-column>.x-slider-scroll>ul>li.x-slider-highlight{border:none;border-top-right-radius:0;border-bottom-right-radius:0;z-index:2;border-right:.125rem solid var(--x-primary)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i3.XAffixComponent, selector: "x-affix" }, { kind: "component", type: i4.XSliderComponent, selector: "x-slider" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
212
235
|
}
|
|
213
236
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.5", ngImport: i0, type: XAnchorComponent, decorators: [{
|
|
214
237
|
type: Component,
|
|
215
|
-
args: [{ selector: `${XAnchorPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #anchor class=\"x-anchor\" [ngClass]=\"classMap\">\r\n <div #content class=\"x-anchor-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n <x-affix class=\"x-anchor-affix\" [top]=\"affixTop\">\r\n <div class=\"x-anchor-slider\" [style.height.px]=\"sliderHeight\">\r\n <x-slider\r\n [data]=\"sliderData\"\r\n layout=\"column\"\r\n [activatedIndex]=\"activatedIndex\"\r\n [nodeJustify]=\"justify\"\r\n [nodeTpl]=\"sliderNodeTpl\"\r\n [showAnchor]=\"true\"\r\n (indexChange)=\"activatedChange($event)\"\r\n ></x-slider>\r\n </div>\r\n </x-affix>\r\n</div>\r\n\r\n<ng-template #sliderNodeTpl let-node=\"$node\">\r\n <span [style.padding-left.rem]=\"node.left - 1\">{{ node.label }}</span>\r\n</ng-template>\r\n", styles: [".x-anchor{margin:0;padding:0;display:flex}.x-anchor-content{flex:1}.x-anchor-affix{display:block}.x-anchor-slider{float:left}.x-anchor-slider:hover{overflow-y:auto}.x-anchor-slider .x-slider{overflow:hidden}.x-anchor-right{flex-direction:row}.x-anchor-right .x-anchor-slider .x-slider-column>.x-slider-scroll{overflow-y:auto}.x-anchor-right .x-anchor-slider .x-slider-column>.x-slider-scroll>ul>li{border-left:.125rem solid var(--x-border)}.x-anchor-right .x-anchor-slider .x-slider-column>.x-slider-scroll>ul>li.x-slider-highlight{border:none;border-top-left-radius:0;border-bottom-left-radius:0;z-index:2;border-left:.125rem solid var(--x-primary)}.x-anchor-left{flex-direction:row-reverse}.x-anchor-left .x-anchor-slider .x-slider-column>.x-slider-scroll{overflow-y:auto}.x-anchor-left .x-anchor-slider .x-slider-column>.x-slider-scroll>ul>li{border-right:.125rem solid var(--x-border)}.x-anchor-left .x-anchor-slider .x-slider-column>.x-slider-scroll>ul>li.x-slider-highlight{border:none;border-top-right-radius:0;border-bottom-right-radius:0;z-index:2;border-right:.125rem solid var(--x-primary)}\n"] }]
|
|
238
|
+
args: [{ selector: `${XAnchorPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #anchor class=\"x-anchor\" [ngClass]=\"classMap\">\r\n <div #content class=\"x-anchor-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n <x-affix class=\"x-anchor-affix\" [top]=\"affixTop\">\r\n <div class=\"x-anchor-slider\" [style.height.px]=\"sliderHeight\" [style.width.px]=\"getWidth()\">\r\n <x-slider\r\n [data]=\"sliderData\"\r\n layout=\"column\"\r\n [activatedIndex]=\"activatedIndex\"\r\n [nodeJustify]=\"justify\"\r\n [nodeTpl]=\"sliderNodeTpl\"\r\n [showAnchor]=\"true\"\r\n (indexChange)=\"activatedChange($event)\"\r\n ></x-slider>\r\n </div>\r\n </x-affix>\r\n</div>\r\n\r\n<ng-template #sliderNodeTpl let-node=\"$node\">\r\n <span [style.padding-left.rem]=\"node.left - 1\">{{ node.label }}</span>\r\n</ng-template>\r\n", styles: [".x-anchor{margin:0;padding:0;display:flex}.x-anchor-content{flex:1}.x-anchor-affix{display:block}.x-anchor-slider{float:left}.x-anchor-slider:hover{overflow-y:auto}.x-anchor-slider .x-slider{overflow:hidden}.x-anchor-right{flex-direction:row}.x-anchor-right .x-anchor-slider .x-slider-column>.x-slider-scroll{overflow-y:auto}.x-anchor-right .x-anchor-slider .x-slider-column>.x-slider-scroll>ul>li{border-left:.125rem solid var(--x-border)}.x-anchor-right .x-anchor-slider .x-slider-column>.x-slider-scroll>ul>li.x-slider-highlight{border:none;border-top-left-radius:0;border-bottom-left-radius:0;z-index:2;border-left:.125rem solid var(--x-primary)}.x-anchor-left{flex-direction:row-reverse}.x-anchor-left .x-anchor-slider .x-slider-column>.x-slider-scroll{overflow-y:auto}.x-anchor-left .x-anchor-slider .x-slider-column>.x-slider-scroll>ul>li{border-right:.125rem solid var(--x-border)}.x-anchor-left .x-anchor-slider .x-slider-column>.x-slider-scroll>ul>li.x-slider-highlight{border:none;border-top-right-radius:0;border-bottom-right-radius:0;z-index:2;border-right:.125rem solid var(--x-primary)}\n"] }]
|
|
216
239
|
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.XConfigService }]; }, propDecorators: { anchor: [{
|
|
217
240
|
type: ViewChild,
|
|
218
241
|
args: ['anchor', { static: true }]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-nest-ui-anchor.mjs","sources":["../../../../lib/ng-nest/ui/anchor/anchor.property.ts","../../../../lib/ng-nest/ui/anchor/anchor.component.ts","../../../../lib/ng-nest/ui/anchor/anchor.component.html","../../../../lib/ng-nest/ui/anchor/anchor-inner.component.ts","../../../../lib/ng-nest/ui/anchor/anchor.module.ts","../../../../lib/ng-nest/ui/anchor/ng-nest-ui-anchor.ts"],"sourcesContent":["import { XIdentityProperty, XProperty, XJustify, XWithConfig, XPositionLeftRight } from '@ng-nest/ui/core';\r\nimport { Input, Component } from '@angular/core';\r\n\r\n/**\r\n * Anchor\r\n * @selector x-anchor\r\n * @decorator component\r\n */\r\nexport const XAnchorPrefix = 'x-anchor';\r\nconst X_CONFIG_NAME = 'anchor';\r\n\r\n/**\r\n * Anchor Property\r\n */\r\n@Component({ selector: `${XAnchorPrefix}-property`, template: '' })\r\nexport class XAnchorProperty extends XProperty {\r\n /**\r\n * @zh_CN 滚动区域对象\r\n * @en_US Scroll area object\r\n */\r\n @Input() scroll!: HTMLElement;\r\n /**\r\n * @zh_CN 顶部距离\r\n * @en_US Top distance\r\n */\r\n @Input() @XWithConfig<string>(X_CONFIG_NAME, '0') affixTop!: string;\r\n /**\r\n * @zh_CN 导航相对内容位置\r\n * @en_US Navigation relative content position\r\n */\r\n @Input() @XWithConfig<XAnchorLayout>(X_CONFIG_NAME, 'right') layout!: XAnchorLayout;\r\n /**\r\n * @zh_CN 对齐方式\r\n * @en_US Alignment\r\n */\r\n @Input() @XWithConfig<XJustify>(X_CONFIG_NAME, 'start') justify!: XJustify;\r\n}\r\n\r\n/**\r\n * Anchor inner\r\n * @selector x-anchor-inner\r\n * @decorator component\r\n */\r\nexport const XAnchorInnerPrefix = 'x-anchor-inner';\r\n\r\n/**\r\n * Anchor inner Property\r\n */\r\n@Component({ selector: `${XAnchorInnerPrefix}-property`, template: '' })\r\nexport class XAnchorInnerProperty {}\r\n\r\n/**\r\n * Anchor Node\r\n */\r\nexport interface XAnchorNode extends XIdentityProperty {\r\n /**\r\n * @zh_CN 左内边距,用来显示层级\r\n * @en_US Left inner margin, used to display hierarchy\r\n */\r\n left?: number;\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n icon?: string;\r\n /**\r\n * @zh_CN 锚点的链接\r\n * @en_US Anchor link\r\n */\r\n link?: string;\r\n}\r\n\r\n/**\r\n * @zh_CN 布局方式,相对内容的位置\r\n * @en_US Layout method, relative content position\r\n */\r\nexport type XAnchorLayout = XPositionLeftRight;\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n Renderer2,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n ViewChild,\r\n AfterViewInit,\r\n OnDestroy,\r\n AfterContentChecked,\r\n inject\r\n} from '@angular/core';\r\nimport { XAnchorPrefix, XAnchorNode, XAnchorProperty } from './anchor.property';\r\nimport { XComputedStyle, XIsEmpty, reqAnimFrame, XIsNumber, XIsUndefined, XConfigService } from '@ng-nest/ui/core';\r\nimport { XSliderNode } from '@ng-nest/ui/slider';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { fromEvent, Subject } from 'rxjs';\r\nimport { throttleTime, takeUntil, distinctUntilChanged } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: `${XAnchorPrefix}`,\r\n templateUrl: './anchor.component.html',\r\n styleUrls: ['./anchor.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XAnchorComponent extends XAnchorProperty implements OnInit, AfterViewInit, OnDestroy, AfterContentChecked {\r\n @ViewChild('anchor', { static: true }) anchor!: ElementRef<HTMLElement>;\r\n @ViewChild('content', { static: true }) content!: ElementRef<HTMLElement>;\r\n hElements!: NodeListOf<HTMLElement>;\r\n sliderData: XSliderNode[] = [];\r\n activatedIndex: number = 0;\r\n sliderHeight?: number;\r\n document: Document = inject(DOCUMENT);\r\n contentChange = new Subject();\r\n private _scrolling = false;\r\n private _fontSize: number;\r\n private _unSubject = new Subject<void>();\r\n\r\n constructor(\r\n public renderer: Renderer2,\r\n public elementRef: ElementRef<HTMLElement>,\r\n public cdr: ChangeDetectorRef,\r\n public configService: XConfigService\r\n ) {\r\n super();\r\n this._fontSize = parseFloat(XComputedStyle(this.document.documentElement, 'font-size'));\r\n }\r\n ngAfterContentChecked(): void {\r\n this.contentChange.next(this.elementRef.nativeElement.innerHTML);\r\n }\r\n\r\n ngOnInit() {\r\n this.setClassMap();\r\n this.setSliderData();\r\n this.setHeight();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setScroll();\r\n this.contentChange.pipe(distinctUntilChanged(), takeUntil(this._unSubject)).subscribe(() => {\r\n this.setSliderData();\r\n this.setHeight();\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n }\r\n\r\n activatedChange(index: number) {\r\n if (XIsEmpty(this.hElements) || XIsUndefined(this.scroll)) return;\r\n\r\n this._scrolling = true;\r\n const hElement = this.hElements[index];\r\n let scrollTop = hElement.offsetTop - this.anchor.nativeElement.offsetTop - parseFloat(XComputedStyle(hElement, 'margin-top'));\r\n let maxScrollTop = this.scroll.scrollHeight - this.scroll.clientHeight;\r\n if (scrollTop > maxScrollTop) scrollTop = maxScrollTop;\r\n this.scrollTo(this.scroll, parseInt(`${scrollTop}`), 150);\r\n }\r\n\r\n private setClassMap() {\r\n this.classMap[`${XAnchorPrefix}-${this.layout}`] = !XIsEmpty(this.layout);\r\n }\r\n\r\n private setScroll() {\r\n fromEvent(this.scroll ? this.scroll : this.document.defaultView!, 'scroll')\r\n .pipe(throttleTime(10), takeUntil(this._unSubject))\r\n .subscribe(() => {\r\n if (this._scrolling) return;\r\n this.setActivatedByScroll();\r\n });\r\n if (!this.scroll) {\r\n this.scroll = this.document.documentElement;\r\n }\r\n }\r\n\r\n private setActivatedByScroll() {\r\n let now = 0;\r\n this.hElements.forEach((h, index) => {\r\n let distance = this.scroll.scrollTop + this.anchor.nativeElement.offsetTop;\r\n if (distance >= h.offsetTop) {\r\n now = index;\r\n return;\r\n }\r\n });\r\n this.activatedIndex = now;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n private setSliderData() {\r\n this.hElements = this.content.nativeElement.querySelectorAll(\r\n ':scope> h1,:scope> h2,:scope> h3,:scope> h4,:scope> h5,:scope> x-anchor-inner> h1,:scope> x-anchor-inner>h2,:scope> x-anchor-inner>h3,:scope> x-anchor-inner>h4,:scope> x-anchor-inner>h5'\r\n );\r\n if (this.hElements.length > 0) {\r\n let list: XAnchorNode[] = [];\r\n this.hElements.forEach((x: HTMLElement, i: number) => {\r\n const link = `x-anchor-${i}`;\r\n const left = this.setLeft(x);\r\n this.renderer.setAttribute(x, 'id', link);\r\n list = [\r\n ...list,\r\n {\r\n id: i,\r\n label: x.innerText,\r\n left: left,\r\n link: link\r\n }\r\n ];\r\n });\r\n this.sliderData = list;\r\n } else {\r\n this.sliderData = [];\r\n }\r\n }\r\n\r\n private setLeft(element: HTMLElement): number {\r\n const eles = ['H1', 'H2', 'H3', 'H4', 'H5'];\r\n const index = eles.indexOf(element.tagName);\r\n return index + 1;\r\n }\r\n\r\n private setHeight() {\r\n if (this.scroll) {\r\n if (XIsEmpty(this.sliderData)) {\r\n this.sliderHeight = 0;\r\n } else {\r\n let height = this.scroll.offsetHeight;\r\n let top = parseFloat(XComputedStyle(this.scroll, 'padding-top'));\r\n let borderTop = parseFloat(XComputedStyle(this.scroll, 'border-top'));\r\n let bottom = parseFloat(XComputedStyle(this.scroll, 'padding-bottom'));\r\n let borderBottom = parseFloat(XComputedStyle(this.scroll, 'border-bottom'));\r\n this.sliderHeight = height - top - bottom - borderTop - borderBottom - this.getTop();\r\n }\r\n }\r\n }\r\n\r\n private getTop() {\r\n if (this.affixTop === '0') return 0;\r\n if (XIsNumber(this.affixTop)) return Number(this.affixTop);\r\n else if (this.affixTop.indexOf('rem') !== -1) return Number(this.affixTop.replace(/rem/g, '')) * this._fontSize;\r\n else if (this.affixTop.indexOf('px') !== -1) return Number(this.affixTop.replace(/px/g, ''));\r\n return 0;\r\n }\r\n\r\n private scrollTo(element: HTMLElement, to: number, duration: number) {\r\n const difference = to - element.scrollTop;\r\n const perTick = (difference / duration) * 10;\r\n reqAnimFrame(() => {\r\n element.scrollTop = element.scrollTop + perTick;\r\n if (element.scrollTop === to || duration <= 0) {\r\n setTimeout(() => (this._scrolling = false), 20);\r\n return;\r\n } else {\r\n this.scrollTo(element, to, duration - 10);\r\n }\r\n });\r\n }\r\n}\r\n","<div #anchor class=\"x-anchor\" [ngClass]=\"classMap\">\r\n <div #content class=\"x-anchor-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n <x-affix class=\"x-anchor-affix\" [top]=\"affixTop\">\r\n <div class=\"x-anchor-slider\" [style.height.px]=\"sliderHeight\">\r\n <x-slider\r\n [data]=\"sliderData\"\r\n layout=\"column\"\r\n [activatedIndex]=\"activatedIndex\"\r\n [nodeJustify]=\"justify\"\r\n [nodeTpl]=\"sliderNodeTpl\"\r\n [showAnchor]=\"true\"\r\n (indexChange)=\"activatedChange($event)\"\r\n ></x-slider>\r\n </div>\r\n </x-affix>\r\n</div>\r\n\r\n<ng-template #sliderNodeTpl let-node=\"$node\">\r\n <span [style.padding-left.rem]=\"node.left - 1\">{{ node.label }}</span>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\r\nimport { XAnchorInnerPrefix, XAnchorInnerProperty } from './anchor.property';\r\n\r\n@Component({\r\n selector: `${XAnchorInnerPrefix}`,\r\n template: '<ng-content></ng-content>',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XAnchorInnerComponent extends XAnchorInnerProperty {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { XAnchorComponent } from './anchor.component';\r\nimport { XAffixModule } from '@ng-nest/ui/affix';\r\nimport { XSliderModule } from '@ng-nest/ui/slider';\r\nimport { XAnchorInnerProperty, XAnchorProperty } from './anchor.property';\r\nimport { XAnchorInnerComponent } from './anchor-inner.component';\r\n\r\n@NgModule({\r\n declarations: [XAnchorComponent, XAnchorProperty, XAnchorInnerComponent, XAnchorInnerProperty],\r\n exports: [XAnchorComponent, XAnchorInnerComponent],\r\n imports: [CommonModule, XAffixModule, XSliderModule]\r\n})\r\nexport class XAnchorModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-nest-ui-anchor.mjs","sources":["../../../../lib/ng-nest/ui/anchor/anchor.property.ts","../../../../lib/ng-nest/ui/anchor/anchor.component.ts","../../../../lib/ng-nest/ui/anchor/anchor.component.html","../../../../lib/ng-nest/ui/anchor/anchor-inner.component.ts","../../../../lib/ng-nest/ui/anchor/anchor.module.ts","../../../../lib/ng-nest/ui/anchor/ng-nest-ui-anchor.ts"],"sourcesContent":["import { XIdentityProperty, XProperty, XJustify, XWithConfig, XPositionLeftRight, XNumber } from '@ng-nest/ui/core';\r\nimport { Input, Component } from '@angular/core';\r\n\r\n/**\r\n * Anchor\r\n * @selector x-anchor\r\n * @decorator component\r\n */\r\nexport const XAnchorPrefix = 'x-anchor';\r\nconst X_CONFIG_NAME = 'anchor';\r\n\r\n/**\r\n * Anchor Property\r\n */\r\n@Component({ selector: `${XAnchorPrefix}-property`, template: '' })\r\nexport class XAnchorProperty extends XProperty {\r\n /**\r\n * @zh_CN 滚动区域对象\r\n * @en_US Scroll area object\r\n */\r\n @Input() scroll!: HTMLElement;\r\n /**\r\n * @zh_CN 顶部距离\r\n * @en_US Top distance\r\n */\r\n @Input() @XWithConfig<string>(X_CONFIG_NAME, '0') affixTop!: string;\r\n /**\r\n * @zh_CN 导航宽度\r\n * @en_US Navigation Width\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME) affixWidth!: XNumber;\r\n /**\r\n * @zh_CN 导航相对内容位置\r\n * @en_US Navigation relative content position\r\n */\r\n @Input() @XWithConfig<XAnchorLayout>(X_CONFIG_NAME, 'right') layout!: XAnchorLayout;\r\n /**\r\n * @zh_CN 对齐方式\r\n * @en_US Alignment\r\n */\r\n @Input() @XWithConfig<XJustify>(X_CONFIG_NAME, 'start') justify!: XJustify;\r\n}\r\n\r\n/**\r\n * Anchor inner\r\n * @selector x-anchor-inner\r\n * @decorator component\r\n */\r\nexport const XAnchorInnerPrefix = 'x-anchor-inner';\r\n\r\n/**\r\n * Anchor inner Property\r\n */\r\n@Component({ selector: `${XAnchorInnerPrefix}-property`, template: '' })\r\nexport class XAnchorInnerProperty {}\r\n\r\n/**\r\n * Anchor Node\r\n */\r\nexport interface XAnchorNode extends XIdentityProperty {\r\n /**\r\n * @zh_CN 左内边距,用来显示层级\r\n * @en_US Left inner margin, used to display hierarchy\r\n */\r\n left?: number;\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n icon?: string;\r\n /**\r\n * @zh_CN 锚点的链接\r\n * @en_US Anchor link\r\n */\r\n link?: string;\r\n}\r\n\r\n/**\r\n * @zh_CN 布局方式,相对内容的位置\r\n * @en_US Layout method, relative content position\r\n */\r\nexport type XAnchorLayout = XPositionLeftRight;\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n Renderer2,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n ViewChild,\r\n AfterViewInit,\r\n OnDestroy,\r\n AfterContentChecked,\r\n inject\r\n} from '@angular/core';\r\nimport { XAnchorPrefix, XAnchorNode, XAnchorProperty } from './anchor.property';\r\nimport { XComputedStyle, XIsEmpty, reqAnimFrame, XIsNumber, XIsUndefined, XConfigService } from '@ng-nest/ui/core';\r\nimport { XSliderNode } from '@ng-nest/ui/slider';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { fromEvent, Subject } from 'rxjs';\r\nimport { throttleTime, takeUntil, distinctUntilChanged } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: `${XAnchorPrefix}`,\r\n templateUrl: './anchor.component.html',\r\n styleUrls: ['./anchor.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XAnchorComponent extends XAnchorProperty implements OnInit, AfterViewInit, OnDestroy, AfterContentChecked {\r\n @ViewChild('anchor', { static: true }) anchor!: ElementRef<HTMLElement>;\r\n @ViewChild('content', { static: true }) content!: ElementRef<HTMLElement>;\r\n hElements!: NodeListOf<HTMLElement>;\r\n sliderData: XSliderNode[] = [];\r\n activatedIndex: number = 0;\r\n sliderHeight?: number;\r\n document: Document = inject(DOCUMENT);\r\n contentChange = new Subject();\r\n private _scrolling = false;\r\n private _fontSize: number;\r\n private _unSubject = new Subject<void>();\r\n\r\n constructor(\r\n public renderer: Renderer2,\r\n public elementRef: ElementRef<HTMLElement>,\r\n public cdr: ChangeDetectorRef,\r\n public configService: XConfigService\r\n ) {\r\n super();\r\n this._fontSize = parseFloat(XComputedStyle(this.document.documentElement, 'font-size'));\r\n }\r\n ngAfterContentChecked(): void {\r\n this.contentChange.next(this.elementRef.nativeElement.innerHTML);\r\n }\r\n\r\n ngOnInit() {\r\n this.setClassMap();\r\n this.setSliderData();\r\n this.setHeight();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setScroll();\r\n this.contentChange.pipe(distinctUntilChanged(), takeUntil(this._unSubject)).subscribe(() => {\r\n this.setSliderData();\r\n this.setHeight();\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n }\r\n\r\n activatedChange(index: number) {\r\n if (XIsEmpty(this.hElements) || XIsUndefined(this.scroll)) return;\r\n\r\n this._scrolling = true;\r\n const hElement = this.hElements[index];\r\n let scrollTop = hElement.offsetTop - this.anchor.nativeElement.offsetTop - parseFloat(XComputedStyle(hElement, 'margin-top'));\r\n let maxScrollTop = this.scroll.scrollHeight - this.scroll.clientHeight;\r\n if (scrollTop > maxScrollTop) scrollTop = maxScrollTop;\r\n console.log(scrollTop);\r\n this.scrollTo(this.scroll, parseInt(`${scrollTop}`), 150);\r\n }\r\n\r\n private setClassMap() {\r\n this.classMap[`${XAnchorPrefix}-${this.layout}`] = !XIsEmpty(this.layout);\r\n }\r\n\r\n private setScroll() {\r\n fromEvent(this.scroll ? this.scroll : this.document.defaultView!, 'scroll')\r\n .pipe(throttleTime(10), takeUntil(this._unSubject))\r\n .subscribe(() => {\r\n if (this._scrolling) return;\r\n this.setActivatedByScroll();\r\n });\r\n if (!this.scroll) {\r\n this.scroll = this.document.documentElement;\r\n }\r\n }\r\n\r\n private setActivatedByScroll() {\r\n let now = 0;\r\n this.hElements.forEach((h, index) => {\r\n let distance = this.scroll.scrollTop + this.anchor.nativeElement.offsetTop;\r\n if (distance >= h.offsetTop) {\r\n now = index;\r\n return;\r\n }\r\n });\r\n this.activatedIndex = now;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n private setSliderData() {\r\n this.hElements = this.content.nativeElement.querySelectorAll(\r\n ':scope> h1,:scope> h2,:scope> h3,:scope> h4,:scope> h5,:scope> x-anchor-inner> h1,:scope> x-anchor-inner>h2,:scope> x-anchor-inner>h3,:scope> x-anchor-inner>h4,:scope> x-anchor-inner>h5'\r\n );\r\n if (this.hElements.length > 0) {\r\n let list: XAnchorNode[] = [];\r\n this.hElements.forEach((x: HTMLElement, i: number) => {\r\n const link = `x-anchor-${i}`;\r\n const left = this.setLeft(x);\r\n this.renderer.setAttribute(x, 'id', link);\r\n list = [\r\n ...list,\r\n {\r\n id: i,\r\n label: x.innerText,\r\n left: left,\r\n link: link\r\n }\r\n ];\r\n });\r\n this.sliderData = list;\r\n } else {\r\n this.sliderData = [];\r\n }\r\n }\r\n\r\n private setLeft(element: HTMLElement): number {\r\n const eles = ['H1', 'H2', 'H3', 'H4', 'H5'];\r\n const index = eles.indexOf(element.tagName);\r\n return index + 1;\r\n }\r\n\r\n private setHeight() {\r\n if (this.scroll) {\r\n if (XIsEmpty(this.sliderData)) {\r\n this.sliderHeight = 0;\r\n } else {\r\n let height = this.scroll.offsetHeight;\r\n let top = parseFloat(XComputedStyle(this.scroll, 'padding-top'));\r\n let borderTop = parseFloat(XComputedStyle(this.scroll, 'border-top'));\r\n let bottom = parseFloat(XComputedStyle(this.scroll, 'padding-bottom'));\r\n let borderBottom = parseFloat(XComputedStyle(this.scroll, 'border-bottom'));\r\n this.sliderHeight = height - top - bottom - borderTop - borderBottom - this.getTop();\r\n }\r\n }\r\n }\r\n\r\n getWidth() {\r\n if (!this.affixWidth) return null;\r\n if (this.affixWidth === '0') return 0;\r\n if (XIsNumber(this.affixWidth)) return this.affixWidth;\r\n else if (this.affixWidth.indexOf('rem') !== -1) return Number(this.affixWidth.replace(/rem/g, '')) * this._fontSize;\r\n else if (this.affixWidth.indexOf('px') !== -1) return Number(this.affixWidth.replace(/px/g, ''));\r\n else return Number(this.affixWidth);\r\n }\r\n\r\n private getTop() {\r\n if (this.affixTop === '0') return 0;\r\n if (XIsNumber(this.affixTop)) return Number(this.affixTop);\r\n else if (this.affixTop.indexOf('rem') !== -1) return Number(this.affixTop.replace(/rem/g, '')) * this._fontSize;\r\n else if (this.affixTop.indexOf('px') !== -1) return Number(this.affixTop.replace(/px/g, ''));\r\n return 0;\r\n }\r\n\r\n private scrollTo(element: HTMLElement, to: number, duration: number) {\r\n const difference = to - element.scrollTop;\r\n const perTick = (difference / duration) * 10;\r\n reqAnimFrame(() => {\r\n const num = element.scrollTop + perTick;\r\n if (XIsNumber(num) && num !== Infinity) {\r\n element.scrollTop = num;\r\n }\r\n if (element.scrollTop === to || duration <= 0) {\r\n setTimeout(() => (this._scrolling = false), 20);\r\n return;\r\n } else {\r\n this.scrollTo(element, to, duration - 10);\r\n }\r\n });\r\n }\r\n}\r\n","<div #anchor class=\"x-anchor\" [ngClass]=\"classMap\">\r\n <div #content class=\"x-anchor-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n <x-affix class=\"x-anchor-affix\" [top]=\"affixTop\">\r\n <div class=\"x-anchor-slider\" [style.height.px]=\"sliderHeight\" [style.width.px]=\"getWidth()\">\r\n <x-slider\r\n [data]=\"sliderData\"\r\n layout=\"column\"\r\n [activatedIndex]=\"activatedIndex\"\r\n [nodeJustify]=\"justify\"\r\n [nodeTpl]=\"sliderNodeTpl\"\r\n [showAnchor]=\"true\"\r\n (indexChange)=\"activatedChange($event)\"\r\n ></x-slider>\r\n </div>\r\n </x-affix>\r\n</div>\r\n\r\n<ng-template #sliderNodeTpl let-node=\"$node\">\r\n <span [style.padding-left.rem]=\"node.left - 1\">{{ node.label }}</span>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\r\nimport { XAnchorInnerPrefix, XAnchorInnerProperty } from './anchor.property';\r\n\r\n@Component({\r\n selector: `${XAnchorInnerPrefix}`,\r\n template: '<ng-content></ng-content>',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XAnchorInnerComponent extends XAnchorInnerProperty {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { XAnchorComponent } from './anchor.component';\r\nimport { XAffixModule } from '@ng-nest/ui/affix';\r\nimport { XSliderModule } from '@ng-nest/ui/slider';\r\nimport { XAnchorInnerProperty, XAnchorProperty } from './anchor.property';\r\nimport { XAnchorInnerComponent } from './anchor-inner.component';\r\n\r\n@NgModule({\r\n declarations: [XAnchorComponent, XAnchorProperty, XAnchorInnerComponent, XAnchorInnerProperty],\r\n exports: [XAnchorComponent, XAnchorInnerComponent],\r\n imports: [CommonModule, XAffixModule, XSliderModule]\r\n})\r\nexport class XAnchorModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -444,6 +444,9 @@ class XAutoCompleteComponent extends XAutoCompleteProperty {
|
|
|
444
444
|
});
|
|
445
445
|
}
|
|
446
446
|
}
|
|
447
|
+
if (!this.onlySelect) {
|
|
448
|
+
this.onChange && this.onChange(value);
|
|
449
|
+
}
|
|
447
450
|
return;
|
|
448
451
|
}
|
|
449
452
|
if (this.nodes) {
|
|
@@ -460,6 +463,9 @@ class XAutoCompleteComponent extends XAutoCompleteProperty {
|
|
|
460
463
|
}
|
|
461
464
|
}
|
|
462
465
|
}
|
|
466
|
+
if (!this.onlySelect) {
|
|
467
|
+
this.onChange && this.onChange(value);
|
|
468
|
+
}
|
|
463
469
|
}
|
|
464
470
|
formControlChanges() {
|
|
465
471
|
this.setData();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-nest-ui-auto-complete.mjs","sources":["../../../../lib/ng-nest/ui/auto-complete/auto-complete.property.ts","../../../../lib/ng-nest/ui/auto-complete/auto-complete-portal.component.ts","../../../../lib/ng-nest/ui/auto-complete/auto-complete-portal.component.html","../../../../lib/ng-nest/ui/auto-complete/auto-complete.component.ts","../../../../lib/ng-nest/ui/auto-complete/auto-complete.component.html","../../../../lib/ng-nest/ui/auto-complete/auto-complete.module.ts","../../../../lib/ng-nest/ui/auto-complete/ng-nest-ui-auto-complete.ts"],"sourcesContent":["import {\r\n XParentIdentityProperty,\r\n XDataConvert,\r\n XData,\r\n XWithConfig,\r\n XPositionTopBottom,\r\n XSize,\r\n XInputBoolean,\r\n XBoolean\r\n} from '@ng-nest/ui/core';\r\nimport { Input, Component, TemplateRef, EventEmitter, Output } from '@angular/core';\r\nimport { XControlValueAccessor, XFormOption } from '@ng-nest/ui/base-form';\r\n\r\n/**\r\n * AutoComplete\r\n * @selector x-auto-complete\r\n * @decorator component\r\n */\r\nexport const XAutoCompletePrefix = 'x-auto-complete';\r\nconst X_CONFIG_NAME = 'autoComplete';\r\n\r\n/**\r\n * AutoComplete Property\r\n */\r\n@Component({ selector: `${XAutoCompletePrefix}-property`, template: '' })\r\nexport class XAutoCompleteProperty extends XControlValueAccessor<any> {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n @Input() @XDataConvert() data: XData<XAutoCompleteNode> = [];\r\n /**\r\n * @zh_CN 输入延迟执行时间,ms\r\n * @en_US Enter a delay execution time, ms\r\n */\r\n @Input() @XWithConfig<number>(X_CONFIG_NAME, 200) debounceTime?: number;\r\n /**\r\n * @zh_CN 展示方位\r\n * @en_US Display position\r\n */\r\n @Input() @XWithConfig<XPositionTopBottom>(X_CONFIG_NAME, 'bottom') placement?: XPositionTopBottom;\r\n /**\r\n * @zh_CN 节点模板\r\n * @en_US Node template\r\n */\r\n @Input() nodeTpl?: TemplateRef<any>;\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n @Input() @XWithConfig<XSize>(X_CONFIG_NAME, 'medium') override size!: XSize;\r\n /**\r\n * @zh_CN 显示边框\r\n * @en_US Display Border\r\n */\r\n @Input() @XInputBoolean() @XWithConfig<XBoolean>(X_CONFIG_NAME, true) bordered!: XBoolean;\r\n /**\r\n * @zh_CN 匹配区分大小写\r\n * @en_US Case-sensitive\r\n */\r\n @Input() @XInputBoolean() @XWithConfig<XBoolean>(X_CONFIG_NAME, true) caseSensitive!: XBoolean;\r\n /**\r\n * @zh_CN 只能是选择的值\r\n * @en_US Can only be the value of choice\r\n */\r\n @Input() @XInputBoolean() @XWithConfig<XBoolean>(X_CONFIG_NAME, false) onlySelect!: XBoolean;\r\n /**\r\n * @zh_CN 选择节点事件\r\n * @en_US Node click event\r\n */\r\n @Output() nodeEmit = new EventEmitter<XAutoCompleteNode>();\r\n}\r\n\r\n/**\r\n * AutoComplete Option\r\n * @undocument true\r\n */\r\nexport interface XAutoCompleteOption extends XFormOption {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n data?: XData<XAutoCompleteNode>;\r\n /**\r\n * @zh_CN 输入延迟执行时间,ms\r\n * @en_US Enter a delay execution time, ms\r\n */\r\n debounceTime?: number;\r\n /**\r\n * @zh_CN 展示方位\r\n * @en_US Display position\r\n */\r\n placement?: XPositionTopBottom;\r\n /**\r\n * @zh_CN 节点模板\r\n * @en_US Node template\r\n */\r\n nodeTpl?: TemplateRef<any>;\r\n /**\r\n * @zh_CN 选择节点事件\r\n * @en_US Node click event\r\n */\r\n nodeClick?: (value: XAutoCompleteNode) => void;\r\n}\r\n\r\n/**\r\n * @zh_CN AutoComplete 数据对象\r\n * @en_US AutoComplete data object\r\n */\r\nexport interface XAutoCompleteNode extends XParentIdentityProperty<XAutoCompleteNode> {}\r\n\r\n/**\r\n * AutoComplete Portal\r\n * @selector x-auto-complete-portal\r\n * @decorator component\r\n */\r\nexport const XAutoCompletePortalPrefix = 'x-auto-complete-portal';\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n OnInit,\r\n OnDestroy,\r\n Renderer2,\r\n HostBinding,\r\n HostListener,\r\n ViewChild,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { XAutoCompleteNode, XAutoCompletePortalPrefix } from './auto-complete.property';\r\nimport { Subject, BehaviorSubject } from 'rxjs';\r\nimport { XBoolean, XConnectBaseAnimation, XNumber, XPositionTopBottom } from '@ng-nest/ui/core';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\nimport { XListComponent } from '@ng-nest/ui/list';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\n\r\n@Component({\r\n selector: `${XAutoCompletePortalPrefix}`,\r\n templateUrl: './auto-complete-portal.component.html',\r\n styleUrls: ['./auto-complete-portal.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [XConnectBaseAnimation]\r\n})\r\nexport class XAutoCompletePortalComponent implements OnInit, OnDestroy {\r\n @HostBinding('@x-connect-base-animation') public placement!: XPositionTopBottom;\r\n @HostListener('@x-connect-base-animation.done', ['$event']) done(event: { toState: any }) {\r\n this.animating(false);\r\n event.toState === 'void' && this.destroyPortal();\r\n }\r\n @HostListener('@x-connect-base-animation.start', ['$event']) start() {\r\n this.animating(true);\r\n }\r\n @ViewChild('list') list!: XListComponent;\r\n\r\n data!: XAutoCompleteNode[];\r\n value: any;\r\n valueChange!: Subject<any>;\r\n positionChange!: Subject<any>;\r\n dataChange!: BehaviorSubject<XAutoCompleteNode[]>;\r\n inputChange!: BehaviorSubject<any>;\r\n animating!: Function;\r\n destroyPortal!: Function;\r\n closeSubject!: Subject<void>;\r\n keydownSubject!: Subject<KeyboardEvent>;\r\n nodeEmit!: Function;\r\n multiple: XNumber = 1;\r\n nodeTpl!: TemplateRef<any>;\r\n show: boolean = false;\r\n active: number = -1;\r\n inputCom!: XInputComponent;\r\n keywordText!: string;\r\n caseSensitive!: XBoolean;\r\n private _unSubject = new Subject<void>();\r\n\r\n constructor(public renderer: Renderer2, public cdr: ChangeDetectorRef) {}\r\n\r\n ngOnInit(): void {\r\n this.valueChange.pipe(takeUntil(this._unSubject)).subscribe((x) => {\r\n this.value = x;\r\n this.cdr.detectChanges();\r\n });\r\n this.positionChange.pipe(takeUntil(this._unSubject)).subscribe((x) => {\r\n this.placement = x;\r\n this.cdr.detectChanges();\r\n });\r\n this.dataChange.pipe(takeUntil(this._unSubject)).subscribe((x) => {\r\n this.data = x;\r\n this.cdr.detectChanges();\r\n });\r\n this.closeSubject.pipe(takeUntil(this._unSubject)).subscribe(() => {\r\n this.list.setUnActive(this.active);\r\n });\r\n this.keydownSubject.pipe(takeUntil(this._unSubject)).subscribe((x) => {\r\n this.list.keydown(x);\r\n });\r\n this.inputChange\r\n .pipe(\r\n filter((x) => x !== null),\r\n takeUntil(this._unSubject)\r\n )\r\n .subscribe((x) => {\r\n this.keywordText = x;\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n }\r\n\r\n stopPropagation(event: Event): void {\r\n event.stopPropagation();\r\n }\r\n\r\n nodeClick(node: XAutoCompleteNode) {\r\n this.keywordText = node.label;\r\n this.nodeEmit(node);\r\n }\r\n\r\n onActive(num: number) {\r\n this.active = num;\r\n }\r\n\r\n onTabOut() {\r\n this.closeSubject.next();\r\n }\r\n}\r\n","<div #autoCompletePortal class=\"x-auto-complete-portal\" tabindex=\"-1\" (click)=\"inputCom.inputFocus(); stopPropagation($event)\">\r\n <x-list\r\n #list\r\n [data]=\"data\"\r\n (nodeClick)=\"nodeClick($event)\"\r\n (keyManagerChange)=\"onActive($event)\"\r\n (keyManagerTabOut)=\"onTabOut()\"\r\n [nodeTpl]=\"nodeTpl\"\r\n [scrollElement]=\"autoCompletePortal\"\r\n [keywordText]=\"keywordText\"\r\n [caseSensitive]=\"caseSensitive\"\r\n ></x-list>\r\n</div>\r\n","import { BehaviorSubject, Subject, fromEvent } from 'rxjs';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Renderer2,\r\n ElementRef,\r\n SimpleChanges,\r\n OnChanges,\r\n ViewContainerRef,\r\n ViewChild,\r\n inject\r\n} from '@angular/core';\r\nimport { XAutoCompleteNode, XAutoCompleteProperty, XAutoCompletePrefix } from './auto-complete.property';\r\nimport {\r\n XIsEmpty,\r\n XIsObservable,\r\n XIsChange,\r\n XSetData,\r\n XClearClass,\r\n XConfigService,\r\n XPositionTopBottom,\r\n XIsFunction,\r\n XParents\r\n} from '@ng-nest/ui/core';\r\nimport { XPortalService, XPortalOverlayRef, XPortalConnectedPosition } from '@ng-nest/ui/portal';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\nimport { XAutoCompletePortalComponent } from './auto-complete-portal.component';\r\nimport { Overlay, FlexibleConnectedPositionStrategy, ConnectedOverlayPositionChange, OverlayConfig } from '@angular/cdk/overlay';\r\nimport { debounceTime, distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';\r\nimport { DOWN_ARROW, UP_ARROW, ENTER, MAC_ENTER, ESCAPE } from '@angular/cdk/keycodes';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Component({\r\n selector: `${XAutoCompletePrefix}`,\r\n templateUrl: './auto-complete.component.html',\r\n styleUrls: ['./auto-complete.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XAutoCompleteComponent)]\r\n})\r\nexport class XAutoCompleteComponent extends XAutoCompleteProperty implements OnInit, OnChanges {\r\n @ViewChild('inputCom', { static: true }) inputCom!: XInputComponent;\r\n @ViewChild('autoComplete', { static: true }) autoComplete!: ElementRef<HTMLElement>;\r\n\r\n override writeValue(value: any) {\r\n this.value = value;\r\n this.valueChange.next(this.value);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n enter: boolean = false;\r\n displayValue: any = '';\r\n nodes: XAutoCompleteNode[] = [];\r\n searchNodes: XAutoCompleteNode[] = [];\r\n cloneNodes!: XAutoCompleteNode[];\r\n portal!: XPortalOverlayRef<XAutoCompletePortalComponent>;\r\n icon: string = '';\r\n iconSpin: boolean = false;\r\n box!: DOMRect;\r\n protalHeight!: number;\r\n maxNodes: number = 6;\r\n protalTobottom: boolean = true;\r\n asyncLoading = false;\r\n animating = false;\r\n\r\n override valueTplContext: { $node: any; $isValue: boolean } = { $node: null, $isValue: true };\r\n valueChange: Subject<any> = new Subject();\r\n positionChange: Subject<any> = new Subject();\r\n dataChange = new BehaviorSubject<XAutoCompleteNode[]>([]);\r\n inputChange = new BehaviorSubject<any>(null);\r\n closeSubject: Subject<void> = new Subject();\r\n keydownSubject: Subject<KeyboardEvent> = new Subject();\r\n private _unSubject = new Subject<void>();\r\n document = inject(DOCUMENT);\r\n\r\n constructor(\r\n public renderer: Renderer2,\r\n public override cdr: ChangeDetectorRef,\r\n private portalService: XPortalService,\r\n private viewContainerRef: ViewContainerRef,\r\n private overlay: Overlay,\r\n private elementRef: ElementRef,\r\n public configService: XConfigService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.setFlex(this.autoComplete.nativeElement, this.renderer, this.justify, this.align, this.direction);\r\n this.setClassMap();\r\n this.setSubject();\r\n this.setParantScroll();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { data } = changes;\r\n XIsChange(data) && this.setData();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setPortal();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n }\r\n\r\n setClassMap() {\r\n XClearClass(this.labelMap);\r\n this.labelMap[`x-text-align-${this.labelAlign}`] = this.labelAlign ? true : false;\r\n }\r\n\r\n setData() {\r\n if (XIsObservable(this.data) || XIsFunction(this.data)) return;\r\n XSetData<XAutoCompleteNode>(this.data, this._unSubject).subscribe((x) => {\r\n this.nodes = x;\r\n this.dataChange.next(x);\r\n this.setPortal();\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n\r\n setSubject() {\r\n this.closeSubject.pipe(takeUntil(this._unSubject)).subscribe(() => {\r\n this.closePortal();\r\n });\r\n this.inputChange\r\n .pipe(\r\n filter((x) => x !== null),\r\n debounceTime(this.debounceTime as number),\r\n distinctUntilChanged(),\r\n takeUntil(this._unSubject)\r\n )\r\n .subscribe((x) => {\r\n this.modelChange(x);\r\n });\r\n this.keydownSubject.pipe(takeUntil(this._unSubject)).subscribe((x) => {\r\n const keyCode = x.keyCode;\r\n if (!this.portalAttached() && [DOWN_ARROW, UP_ARROW, ENTER, MAC_ENTER].includes(keyCode)) {\r\n this.inputChange.next(this.value);\r\n }\r\n if (this.portalAttached() && [ESCAPE].includes(keyCode)) {\r\n this.closeSubject.next();\r\n }\r\n });\r\n }\r\n\r\n setParantScroll() {\r\n if (!this.document) return;\r\n const parents = XParents(this.elementRef.nativeElement);\r\n let firstScroll: HTMLElement | null = null;\r\n for (let item of parents) {\r\n if (item.clientHeight < item.scrollHeight) {\r\n firstScroll = item;\r\n break;\r\n }\r\n }\r\n if (firstScroll && firstScroll.tagName !== 'BODY') {\r\n fromEvent(firstScroll, 'scroll')\r\n .pipe(\r\n filter(() => this.portalAttached()!),\r\n takeUntil(this._unSubject)\r\n )\r\n .subscribe(() => {\r\n this.portal?.overlayRef?.updatePosition();\r\n const eract = this.elementRef.nativeElement.getBoundingClientRect();\r\n const frect = firstScroll!.getBoundingClientRect();\r\n if (eract.top + eract.height - frect.top < 0 || eract.bottom > frect.bottom) {\r\n this.closeSubject.next();\r\n }\r\n });\r\n }\r\n }\r\n\r\n portalAttached() {\r\n return this.portal?.overlayRef?.hasAttached();\r\n }\r\n\r\n closePortal() {\r\n if (this.portalAttached()) {\r\n this.portal?.overlayRef?.detach();\r\n this.active = false;\r\n if (this.onlySelect) {\r\n if (!this.nodes.map((x) => x.label).includes(this.value)) {\r\n this.value = '';\r\n if (this.onChange) this.onChange(this.value);\r\n this.inputChange.next(this.value);\r\n }\r\n }\r\n this.cdr.detectChanges();\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n destroyPortal() {\r\n this.portal?.overlayRef?.dispose();\r\n }\r\n\r\n showPortal() {\r\n if (XIsEmpty(this.value) || this.disabled || this.iconSpin || this.animating) return;\r\n this.active = true;\r\n if ((XIsObservable(this.data) && this.nodes.length === 0) || XIsFunction(this.data)) {\r\n this.icon = 'fto-loader';\r\n this.iconSpin = true;\r\n this.cdr.detectChanges();\r\n XSetData<XAutoCompleteNode>(this.data, this._unSubject, true, this.value).subscribe((x) => {\r\n this.icon = '';\r\n this.iconSpin = false;\r\n this.nodes = x;\r\n this.dataChange.next(this.nodes);\r\n this.createPortal();\r\n this.cdr.detectChanges();\r\n });\r\n } else {\r\n this.createPortal();\r\n }\r\n }\r\n\r\n createPortal() {\r\n this.nodes.filter((x) => x.selected).map((x) => (x.selected = false));\r\n if (XIsFunction(this.data)) {\r\n this.searchNodes = this.nodes;\r\n } else if (!XIsEmpty(this.value)) {\r\n this.setSearchNodes(this.value);\r\n this.dataChange.next(this.searchNodes);\r\n }\r\n this.box = this.inputCom.inputRef.nativeElement.getBoundingClientRect();\r\n const config: OverlayConfig = {\r\n backdropClass: '',\r\n width: this.box.width,\r\n positionStrategy: this.setPlacement(),\r\n scrollStrategy: this.overlay.scrollStrategies.reposition()\r\n };\r\n this.setPosition(config);\r\n this.portal = this.portalService.attach({\r\n content: XAutoCompletePortalComponent,\r\n viewContainerRef: this.viewContainerRef,\r\n overlayConfig: config\r\n });\r\n this.portal.overlayRef\r\n ?.outsidePointerEvents()\r\n .pipe(takeUntil(this._unSubject))\r\n .subscribe(() => {\r\n this.closeSubject.next();\r\n });\r\n this.setInstance();\r\n }\r\n\r\n setPosition(config: OverlayConfig) {\r\n let position = config.positionStrategy as FlexibleConnectedPositionStrategy;\r\n position.positionChanges.pipe(takeUntil(this._unSubject)).subscribe((pos: ConnectedOverlayPositionChange) => {\r\n const place = XPortalConnectedPosition.get(pos.connectionPair) as XPositionTopBottom;\r\n place !== this.placement && this.positionChange.next(place);\r\n });\r\n }\r\n\r\n setInstance() {\r\n let componentRef = this.portal.componentRef;\r\n if (!componentRef) return;\r\n Object.assign(componentRef.instance, {\r\n data: this.searchNodes,\r\n value: this.value,\r\n placement: this.placement,\r\n nodeTpl: this.nodeTpl,\r\n valueChange: this.valueChange,\r\n dataChange: this.dataChange,\r\n positionChange: this.positionChange,\r\n closeSubject: this.closeSubject,\r\n keydownSubject: this.keydownSubject,\r\n inputCom: this.inputCom,\r\n inputChange: this.inputChange,\r\n destroyPortal: () => this.destroyPortal(),\r\n nodeEmit: (node: XAutoCompleteNode) => this.onNodeClick(node),\r\n animating: (ing: boolean) => (this.animating = ing)\r\n });\r\n componentRef.changeDetectorRef.detectChanges();\r\n }\r\n\r\n onNodeClick(node: XAutoCompleteNode | XAutoCompleteNode[]) {\r\n node = node as XAutoCompleteNode;\r\n if (this.value === node.label) {\r\n this.nodeEmit.emit(node);\r\n this.closeSubject.next();\r\n return;\r\n }\r\n this.value = node.label;\r\n this.valueTplContext.$node = node;\r\n this.inputCom.inputFocus();\r\n if (this.onChange) this.onChange(this.value);\r\n this.nodeEmit.emit(node);\r\n this.closeSubject.next();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n setPlacement() {\r\n return this.portalService.setPlacement({\r\n elementRef: this.inputCom.inputRef,\r\n placement: [this.placement as XPositionTopBottom, 'bottom-start', 'bottom-end', 'top-start', 'top-end'],\r\n transformOriginOn: 'x-auto-complete-portal'\r\n });\r\n }\r\n\r\n setPortal() {\r\n this.portalAttached() && this.portal?.overlayRef?.updatePositionStrategy(this.setPlacement());\r\n }\r\n\r\n setSearchNodes(value: string | number) {\r\n if (this.caseSensitive) {\r\n this.searchNodes = this.nodes.filter((x) => x.label.indexOf(value) >= 0);\r\n } else {\r\n this.searchNodes = this.nodes.filter((x) => (x.label as string).toLowerCase().indexOf((value as string).toLowerCase()) >= 0);\r\n }\r\n }\r\n\r\n modelChange(value: string | number) {\r\n if (XIsFunction(this.data)) {\r\n if (!this.portalAttached()) {\r\n this.showPortal();\r\n } else {\r\n if (XIsEmpty(value)) {\r\n this.closeSubject.next();\r\n } else {\r\n this.icon = 'fto-loader';\r\n this.iconSpin = true;\r\n this.cdr.detectChanges();\r\n XSetData<XAutoCompleteNode>(this.data, this._unSubject, true, value as any).subscribe((x) => {\r\n this.icon = '';\r\n this.iconSpin = false;\r\n this.nodes = x;\r\n this.dataChange.next(this.nodes);\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n }\r\n return;\r\n }\r\n if (this.nodes) {\r\n if (!this.portalAttached()) {\r\n this.showPortal();\r\n } else {\r\n if (XIsEmpty(value)) {\r\n this.closeSubject.next();\r\n } else {\r\n this.setSearchNodes(value);\r\n this.dataChange.next(this.searchNodes);\r\n }\r\n }\r\n }\r\n }\r\n\r\n formControlChanges() {\r\n this.setData();\r\n this.ngOnInit();\r\n this.writeValue(this.value);\r\n this.ngAfterViewInit();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n onKeydown($event: KeyboardEvent) {\r\n this.keydownSubject.next($event);\r\n }\r\n\r\n onInput(_event: Event) {\r\n this.formControlValidator();\r\n setTimeout(() => {\r\n this.inputChange.next(this.value);\r\n });\r\n }\r\n\r\n onFocus(_event: Event) {}\r\n\r\n onBlur(_event: Event) {}\r\n}\r\n","<div #autoComplete class=\"x-auto-complete\">\r\n <div class=\"x-auto-complete-row\">\r\n <x-input\r\n #inputCom\r\n type=\"text\"\r\n [label]=\"label\"\r\n [labelWidth]=\"labelWidth\"\r\n [labelAlign]=\"labelAlign\"\r\n [justify]=\"justify\"\r\n [align]=\"align\"\r\n [direction]=\"direction\"\r\n [disabled]=\"disabled\"\r\n [required]=\"required\"\r\n [icon]=\"icon\"\r\n [iconSpin]=\"iconSpin\"\r\n [placeholder]=\"placeholder\"\r\n [readonly]=\"readonly\"\r\n [clearable]=\"false\"\r\n [(ngModel)]=\"value\"\r\n [valueTpl]=\"valueTpl\"\r\n [valueTplContext]=\"valueTplContext\"\r\n [size]=\"size\"\r\n [bordered]=\"bordered\"\r\n [before]=\"before\"\r\n [after]=\"after\"\r\n [pattern]=\"pattern\"\r\n [message]=\"message\"\r\n [pointer]=\"pointer\"\r\n [(active)]=\"active\"\r\n (xInput)=\"onInput($event)\"\r\n (xKeydown)=\"onKeydown($event)\"\r\n (xFocus)=\"onFocus($event)\"\r\n (xBlur)=\"onBlur($event)\"\r\n (xClick)=\"showPortal()\"\r\n ></x-input>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { XAutoCompleteComponent } from './auto-complete.component';\r\nimport { XInputModule } from '@ng-nest/ui/input';\r\nimport { XPortalModule } from '@ng-nest/ui/portal';\r\nimport { XListModule } from '@ng-nest/ui/list';\r\nimport { XBaseFormModule } from '@ng-nest/ui/base-form';\r\nimport { XAutoCompletePortalComponent } from './auto-complete-portal.component';\r\nimport { XAutoCompleteProperty } from './auto-complete.property';\r\n\r\n@NgModule({\r\n declarations: [XAutoCompleteComponent, XAutoCompletePortalComponent, XAutoCompleteProperty],\r\n exports: [XAutoCompleteComponent, XAutoCompletePortalComponent],\r\n imports: [CommonModule, FormsModule, ReactiveFormsModule, XPortalModule, XInputModule, XListModule, XBaseFormModule]\r\n})\r\nexport class XAutoCompleteModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-nest-ui-auto-complete.mjs","sources":["../../../../lib/ng-nest/ui/auto-complete/auto-complete.property.ts","../../../../lib/ng-nest/ui/auto-complete/auto-complete-portal.component.ts","../../../../lib/ng-nest/ui/auto-complete/auto-complete-portal.component.html","../../../../lib/ng-nest/ui/auto-complete/auto-complete.component.ts","../../../../lib/ng-nest/ui/auto-complete/auto-complete.component.html","../../../../lib/ng-nest/ui/auto-complete/auto-complete.module.ts","../../../../lib/ng-nest/ui/auto-complete/ng-nest-ui-auto-complete.ts"],"sourcesContent":["import {\r\n XParentIdentityProperty,\r\n XDataConvert,\r\n XData,\r\n XWithConfig,\r\n XPositionTopBottom,\r\n XSize,\r\n XInputBoolean,\r\n XBoolean\r\n} from '@ng-nest/ui/core';\r\nimport { Input, Component, TemplateRef, EventEmitter, Output } from '@angular/core';\r\nimport { XControlValueAccessor, XFormOption } from '@ng-nest/ui/base-form';\r\n\r\n/**\r\n * AutoComplete\r\n * @selector x-auto-complete\r\n * @decorator component\r\n */\r\nexport const XAutoCompletePrefix = 'x-auto-complete';\r\nconst X_CONFIG_NAME = 'autoComplete';\r\n\r\n/**\r\n * AutoComplete Property\r\n */\r\n@Component({ selector: `${XAutoCompletePrefix}-property`, template: '' })\r\nexport class XAutoCompleteProperty extends XControlValueAccessor<any> {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n @Input() @XDataConvert() data: XData<XAutoCompleteNode> = [];\r\n /**\r\n * @zh_CN 输入延迟执行时间,ms\r\n * @en_US Enter a delay execution time, ms\r\n */\r\n @Input() @XWithConfig<number>(X_CONFIG_NAME, 200) debounceTime?: number;\r\n /**\r\n * @zh_CN 展示方位\r\n * @en_US Display position\r\n */\r\n @Input() @XWithConfig<XPositionTopBottom>(X_CONFIG_NAME, 'bottom') placement?: XPositionTopBottom;\r\n /**\r\n * @zh_CN 节点模板\r\n * @en_US Node template\r\n */\r\n @Input() nodeTpl?: TemplateRef<any>;\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n @Input() @XWithConfig<XSize>(X_CONFIG_NAME, 'medium') override size!: XSize;\r\n /**\r\n * @zh_CN 显示边框\r\n * @en_US Display Border\r\n */\r\n @Input() @XInputBoolean() @XWithConfig<XBoolean>(X_CONFIG_NAME, true) bordered!: XBoolean;\r\n /**\r\n * @zh_CN 匹配区分大小写\r\n * @en_US Case-sensitive\r\n */\r\n @Input() @XInputBoolean() @XWithConfig<XBoolean>(X_CONFIG_NAME, true) caseSensitive!: XBoolean;\r\n /**\r\n * @zh_CN 只能是选择的值\r\n * @en_US Can only be the value of choice\r\n */\r\n @Input() @XInputBoolean() @XWithConfig<XBoolean>(X_CONFIG_NAME, false) onlySelect!: XBoolean;\r\n /**\r\n * @zh_CN 选择节点事件\r\n * @en_US Node click event\r\n */\r\n @Output() nodeEmit = new EventEmitter<XAutoCompleteNode>();\r\n}\r\n\r\n/**\r\n * AutoComplete Option\r\n * @undocument true\r\n */\r\nexport interface XAutoCompleteOption extends XFormOption {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n data?: XData<XAutoCompleteNode>;\r\n /**\r\n * @zh_CN 输入延迟执行时间,ms\r\n * @en_US Enter a delay execution time, ms\r\n */\r\n debounceTime?: number;\r\n /**\r\n * @zh_CN 展示方位\r\n * @en_US Display position\r\n */\r\n placement?: XPositionTopBottom;\r\n /**\r\n * @zh_CN 节点模板\r\n * @en_US Node template\r\n */\r\n nodeTpl?: TemplateRef<any>;\r\n /**\r\n * @zh_CN 选择节点事件\r\n * @en_US Node click event\r\n */\r\n nodeClick?: (value: XAutoCompleteNode) => void;\r\n}\r\n\r\n/**\r\n * @zh_CN AutoComplete 数据对象\r\n * @en_US AutoComplete data object\r\n */\r\nexport interface XAutoCompleteNode extends XParentIdentityProperty<XAutoCompleteNode> {}\r\n\r\n/**\r\n * AutoComplete Portal\r\n * @selector x-auto-complete-portal\r\n * @decorator component\r\n */\r\nexport const XAutoCompletePortalPrefix = 'x-auto-complete-portal';\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n OnInit,\r\n OnDestroy,\r\n Renderer2,\r\n HostBinding,\r\n HostListener,\r\n ViewChild,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { XAutoCompleteNode, XAutoCompletePortalPrefix } from './auto-complete.property';\r\nimport { Subject, BehaviorSubject } from 'rxjs';\r\nimport { XBoolean, XConnectBaseAnimation, XNumber, XPositionTopBottom } from '@ng-nest/ui/core';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\nimport { XListComponent } from '@ng-nest/ui/list';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\n\r\n@Component({\r\n selector: `${XAutoCompletePortalPrefix}`,\r\n templateUrl: './auto-complete-portal.component.html',\r\n styleUrls: ['./auto-complete-portal.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [XConnectBaseAnimation]\r\n})\r\nexport class XAutoCompletePortalComponent implements OnInit, OnDestroy {\r\n @HostBinding('@x-connect-base-animation') public placement!: XPositionTopBottom;\r\n @HostListener('@x-connect-base-animation.done', ['$event']) done(event: { toState: any }) {\r\n this.animating(false);\r\n event.toState === 'void' && this.destroyPortal();\r\n }\r\n @HostListener('@x-connect-base-animation.start', ['$event']) start() {\r\n this.animating(true);\r\n }\r\n @ViewChild('list') list!: XListComponent;\r\n\r\n data!: XAutoCompleteNode[];\r\n value: any;\r\n valueChange!: Subject<any>;\r\n positionChange!: Subject<any>;\r\n dataChange!: BehaviorSubject<XAutoCompleteNode[]>;\r\n inputChange!: BehaviorSubject<any>;\r\n animating!: Function;\r\n destroyPortal!: Function;\r\n closeSubject!: Subject<void>;\r\n keydownSubject!: Subject<KeyboardEvent>;\r\n nodeEmit!: Function;\r\n multiple: XNumber = 1;\r\n nodeTpl!: TemplateRef<any>;\r\n show: boolean = false;\r\n active: number = -1;\r\n inputCom!: XInputComponent;\r\n keywordText!: string;\r\n caseSensitive!: XBoolean;\r\n private _unSubject = new Subject<void>();\r\n\r\n constructor(public renderer: Renderer2, public cdr: ChangeDetectorRef) {}\r\n\r\n ngOnInit(): void {\r\n this.valueChange.pipe(takeUntil(this._unSubject)).subscribe((x) => {\r\n this.value = x;\r\n this.cdr.detectChanges();\r\n });\r\n this.positionChange.pipe(takeUntil(this._unSubject)).subscribe((x) => {\r\n this.placement = x;\r\n this.cdr.detectChanges();\r\n });\r\n this.dataChange.pipe(takeUntil(this._unSubject)).subscribe((x) => {\r\n this.data = x;\r\n this.cdr.detectChanges();\r\n });\r\n this.closeSubject.pipe(takeUntil(this._unSubject)).subscribe(() => {\r\n this.list.setUnActive(this.active);\r\n });\r\n this.keydownSubject.pipe(takeUntil(this._unSubject)).subscribe((x) => {\r\n this.list.keydown(x);\r\n });\r\n this.inputChange\r\n .pipe(\r\n filter((x) => x !== null),\r\n takeUntil(this._unSubject)\r\n )\r\n .subscribe((x) => {\r\n this.keywordText = x;\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n }\r\n\r\n stopPropagation(event: Event): void {\r\n event.stopPropagation();\r\n }\r\n\r\n nodeClick(node: XAutoCompleteNode) {\r\n this.keywordText = node.label;\r\n this.nodeEmit(node);\r\n }\r\n\r\n onActive(num: number) {\r\n this.active = num;\r\n }\r\n\r\n onTabOut() {\r\n this.closeSubject.next();\r\n }\r\n}\r\n","<div #autoCompletePortal class=\"x-auto-complete-portal\" tabindex=\"-1\" (click)=\"inputCom.inputFocus(); stopPropagation($event)\">\r\n <x-list\r\n #list\r\n [data]=\"data\"\r\n (nodeClick)=\"nodeClick($event)\"\r\n (keyManagerChange)=\"onActive($event)\"\r\n (keyManagerTabOut)=\"onTabOut()\"\r\n [nodeTpl]=\"nodeTpl\"\r\n [scrollElement]=\"autoCompletePortal\"\r\n [keywordText]=\"keywordText\"\r\n [caseSensitive]=\"caseSensitive\"\r\n ></x-list>\r\n</div>\r\n","import { BehaviorSubject, Subject, fromEvent } from 'rxjs';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Renderer2,\r\n ElementRef,\r\n SimpleChanges,\r\n OnChanges,\r\n ViewContainerRef,\r\n ViewChild,\r\n inject\r\n} from '@angular/core';\r\nimport { XAutoCompleteNode, XAutoCompleteProperty, XAutoCompletePrefix } from './auto-complete.property';\r\nimport {\r\n XIsEmpty,\r\n XIsObservable,\r\n XIsChange,\r\n XSetData,\r\n XClearClass,\r\n XConfigService,\r\n XPositionTopBottom,\r\n XIsFunction,\r\n XParents\r\n} from '@ng-nest/ui/core';\r\nimport { XPortalService, XPortalOverlayRef, XPortalConnectedPosition } from '@ng-nest/ui/portal';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\nimport { XAutoCompletePortalComponent } from './auto-complete-portal.component';\r\nimport { Overlay, FlexibleConnectedPositionStrategy, ConnectedOverlayPositionChange, OverlayConfig } from '@angular/cdk/overlay';\r\nimport { debounceTime, distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';\r\nimport { DOWN_ARROW, UP_ARROW, ENTER, MAC_ENTER, ESCAPE } from '@angular/cdk/keycodes';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Component({\r\n selector: `${XAutoCompletePrefix}`,\r\n templateUrl: './auto-complete.component.html',\r\n styleUrls: ['./auto-complete.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XAutoCompleteComponent)]\r\n})\r\nexport class XAutoCompleteComponent extends XAutoCompleteProperty implements OnInit, OnChanges {\r\n @ViewChild('inputCom', { static: true }) inputCom!: XInputComponent;\r\n @ViewChild('autoComplete', { static: true }) autoComplete!: ElementRef<HTMLElement>;\r\n\r\n override writeValue(value: any) {\r\n this.value = value;\r\n this.valueChange.next(this.value);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n enter: boolean = false;\r\n displayValue: any = '';\r\n nodes: XAutoCompleteNode[] = [];\r\n searchNodes: XAutoCompleteNode[] = [];\r\n cloneNodes!: XAutoCompleteNode[];\r\n portal!: XPortalOverlayRef<XAutoCompletePortalComponent>;\r\n icon: string = '';\r\n iconSpin: boolean = false;\r\n box!: DOMRect;\r\n protalHeight!: number;\r\n maxNodes: number = 6;\r\n protalTobottom: boolean = true;\r\n asyncLoading = false;\r\n animating = false;\r\n\r\n override valueTplContext: { $node: any; $isValue: boolean } = { $node: null, $isValue: true };\r\n valueChange: Subject<any> = new Subject();\r\n positionChange: Subject<any> = new Subject();\r\n dataChange = new BehaviorSubject<XAutoCompleteNode[]>([]);\r\n inputChange = new BehaviorSubject<any>(null);\r\n closeSubject: Subject<void> = new Subject();\r\n keydownSubject: Subject<KeyboardEvent> = new Subject();\r\n private _unSubject = new Subject<void>();\r\n document = inject(DOCUMENT);\r\n\r\n constructor(\r\n public renderer: Renderer2,\r\n public override cdr: ChangeDetectorRef,\r\n private portalService: XPortalService,\r\n private viewContainerRef: ViewContainerRef,\r\n private overlay: Overlay,\r\n private elementRef: ElementRef,\r\n public configService: XConfigService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.setFlex(this.autoComplete.nativeElement, this.renderer, this.justify, this.align, this.direction);\r\n this.setClassMap();\r\n this.setSubject();\r\n this.setParantScroll();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { data } = changes;\r\n XIsChange(data) && this.setData();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setPortal();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n }\r\n\r\n setClassMap() {\r\n XClearClass(this.labelMap);\r\n this.labelMap[`x-text-align-${this.labelAlign}`] = this.labelAlign ? true : false;\r\n }\r\n\r\n setData() {\r\n if (XIsObservable(this.data) || XIsFunction(this.data)) return;\r\n XSetData<XAutoCompleteNode>(this.data, this._unSubject).subscribe((x) => {\r\n this.nodes = x;\r\n this.dataChange.next(x);\r\n this.setPortal();\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n\r\n setSubject() {\r\n this.closeSubject.pipe(takeUntil(this._unSubject)).subscribe(() => {\r\n this.closePortal();\r\n });\r\n this.inputChange\r\n .pipe(\r\n filter((x) => x !== null),\r\n debounceTime(this.debounceTime as number),\r\n distinctUntilChanged(),\r\n takeUntil(this._unSubject)\r\n )\r\n .subscribe((x) => {\r\n this.modelChange(x);\r\n });\r\n this.keydownSubject.pipe(takeUntil(this._unSubject)).subscribe((x) => {\r\n const keyCode = x.keyCode;\r\n if (!this.portalAttached() && [DOWN_ARROW, UP_ARROW, ENTER, MAC_ENTER].includes(keyCode)) {\r\n this.inputChange.next(this.value);\r\n }\r\n if (this.portalAttached() && [ESCAPE].includes(keyCode)) {\r\n this.closeSubject.next();\r\n }\r\n });\r\n }\r\n\r\n setParantScroll() {\r\n if (!this.document) return;\r\n const parents = XParents(this.elementRef.nativeElement);\r\n let firstScroll: HTMLElement | null = null;\r\n for (let item of parents) {\r\n if (item.clientHeight < item.scrollHeight) {\r\n firstScroll = item;\r\n break;\r\n }\r\n }\r\n if (firstScroll && firstScroll.tagName !== 'BODY') {\r\n fromEvent(firstScroll, 'scroll')\r\n .pipe(\r\n filter(() => this.portalAttached()!),\r\n takeUntil(this._unSubject)\r\n )\r\n .subscribe(() => {\r\n this.portal?.overlayRef?.updatePosition();\r\n const eract = this.elementRef.nativeElement.getBoundingClientRect();\r\n const frect = firstScroll!.getBoundingClientRect();\r\n if (eract.top + eract.height - frect.top < 0 || eract.bottom > frect.bottom) {\r\n this.closeSubject.next();\r\n }\r\n });\r\n }\r\n }\r\n\r\n portalAttached() {\r\n return this.portal?.overlayRef?.hasAttached();\r\n }\r\n\r\n closePortal() {\r\n if (this.portalAttached()) {\r\n this.portal?.overlayRef?.detach();\r\n this.active = false;\r\n if (this.onlySelect) {\r\n if (!this.nodes.map((x) => x.label).includes(this.value)) {\r\n this.value = '';\r\n if (this.onChange) this.onChange(this.value);\r\n this.inputChange.next(this.value);\r\n }\r\n }\r\n this.cdr.detectChanges();\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n destroyPortal() {\r\n this.portal?.overlayRef?.dispose();\r\n }\r\n\r\n showPortal() {\r\n if (XIsEmpty(this.value) || this.disabled || this.iconSpin || this.animating) return;\r\n this.active = true;\r\n if ((XIsObservable(this.data) && this.nodes.length === 0) || XIsFunction(this.data)) {\r\n this.icon = 'fto-loader';\r\n this.iconSpin = true;\r\n this.cdr.detectChanges();\r\n XSetData<XAutoCompleteNode>(this.data, this._unSubject, true, this.value).subscribe((x) => {\r\n this.icon = '';\r\n this.iconSpin = false;\r\n this.nodes = x;\r\n this.dataChange.next(this.nodes);\r\n this.createPortal();\r\n this.cdr.detectChanges();\r\n });\r\n } else {\r\n this.createPortal();\r\n }\r\n }\r\n\r\n createPortal() {\r\n this.nodes.filter((x) => x.selected).map((x) => (x.selected = false));\r\n if (XIsFunction(this.data)) {\r\n this.searchNodes = this.nodes;\r\n } else if (!XIsEmpty(this.value)) {\r\n this.setSearchNodes(this.value);\r\n this.dataChange.next(this.searchNodes);\r\n }\r\n this.box = this.inputCom.inputRef.nativeElement.getBoundingClientRect();\r\n const config: OverlayConfig = {\r\n backdropClass: '',\r\n width: this.box.width,\r\n positionStrategy: this.setPlacement(),\r\n scrollStrategy: this.overlay.scrollStrategies.reposition()\r\n };\r\n this.setPosition(config);\r\n this.portal = this.portalService.attach({\r\n content: XAutoCompletePortalComponent,\r\n viewContainerRef: this.viewContainerRef,\r\n overlayConfig: config\r\n });\r\n this.portal.overlayRef\r\n ?.outsidePointerEvents()\r\n .pipe(takeUntil(this._unSubject))\r\n .subscribe(() => {\r\n this.closeSubject.next();\r\n });\r\n this.setInstance();\r\n }\r\n\r\n setPosition(config: OverlayConfig) {\r\n let position = config.positionStrategy as FlexibleConnectedPositionStrategy;\r\n position.positionChanges.pipe(takeUntil(this._unSubject)).subscribe((pos: ConnectedOverlayPositionChange) => {\r\n const place = XPortalConnectedPosition.get(pos.connectionPair) as XPositionTopBottom;\r\n place !== this.placement && this.positionChange.next(place);\r\n });\r\n }\r\n\r\n setInstance() {\r\n let componentRef = this.portal.componentRef;\r\n if (!componentRef) return;\r\n Object.assign(componentRef.instance, {\r\n data: this.searchNodes,\r\n value: this.value,\r\n placement: this.placement,\r\n nodeTpl: this.nodeTpl,\r\n valueChange: this.valueChange,\r\n dataChange: this.dataChange,\r\n positionChange: this.positionChange,\r\n closeSubject: this.closeSubject,\r\n keydownSubject: this.keydownSubject,\r\n inputCom: this.inputCom,\r\n inputChange: this.inputChange,\r\n destroyPortal: () => this.destroyPortal(),\r\n nodeEmit: (node: XAutoCompleteNode) => this.onNodeClick(node),\r\n animating: (ing: boolean) => (this.animating = ing)\r\n });\r\n componentRef.changeDetectorRef.detectChanges();\r\n }\r\n\r\n onNodeClick(node: XAutoCompleteNode | XAutoCompleteNode[]) {\r\n node = node as XAutoCompleteNode;\r\n if (this.value === node.label) {\r\n this.nodeEmit.emit(node);\r\n this.closeSubject.next();\r\n return;\r\n }\r\n this.value = node.label;\r\n this.valueTplContext.$node = node;\r\n this.inputCom.inputFocus();\r\n if (this.onChange) this.onChange(this.value);\r\n this.nodeEmit.emit(node);\r\n this.closeSubject.next();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n setPlacement() {\r\n return this.portalService.setPlacement({\r\n elementRef: this.inputCom.inputRef,\r\n placement: [this.placement as XPositionTopBottom, 'bottom-start', 'bottom-end', 'top-start', 'top-end'],\r\n transformOriginOn: 'x-auto-complete-portal'\r\n });\r\n }\r\n\r\n setPortal() {\r\n this.portalAttached() && this.portal?.overlayRef?.updatePositionStrategy(this.setPlacement());\r\n }\r\n\r\n setSearchNodes(value: string | number) {\r\n if (this.caseSensitive) {\r\n this.searchNodes = this.nodes.filter((x) => x.label.indexOf(value) >= 0);\r\n } else {\r\n this.searchNodes = this.nodes.filter((x) => (x.label as string).toLowerCase().indexOf((value as string).toLowerCase()) >= 0);\r\n }\r\n }\r\n\r\n modelChange(value: string | number) {\r\n if (XIsFunction(this.data)) {\r\n if (!this.portalAttached()) {\r\n this.showPortal();\r\n } else {\r\n if (XIsEmpty(value)) {\r\n this.closeSubject.next();\r\n } else {\r\n this.icon = 'fto-loader';\r\n this.iconSpin = true;\r\n this.cdr.detectChanges();\r\n XSetData<XAutoCompleteNode>(this.data, this._unSubject, true, value as any).subscribe((x) => {\r\n this.icon = '';\r\n this.iconSpin = false;\r\n this.nodes = x;\r\n this.dataChange.next(this.nodes);\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n }\r\n if (!this.onlySelect) {\r\n this.onChange && this.onChange(value);\r\n }\r\n return;\r\n }\r\n if (this.nodes) {\r\n if (!this.portalAttached()) {\r\n this.showPortal();\r\n } else {\r\n if (XIsEmpty(value)) {\r\n this.closeSubject.next();\r\n } else {\r\n this.setSearchNodes(value);\r\n this.dataChange.next(this.searchNodes);\r\n }\r\n }\r\n }\r\n if (!this.onlySelect) {\r\n this.onChange && this.onChange(value);\r\n }\r\n }\r\n\r\n formControlChanges() {\r\n this.setData();\r\n this.ngOnInit();\r\n this.writeValue(this.value);\r\n this.ngAfterViewInit();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n onKeydown($event: KeyboardEvent) {\r\n this.keydownSubject.next($event);\r\n }\r\n\r\n onInput(_event: Event) {\r\n this.formControlValidator();\r\n setTimeout(() => {\r\n this.inputChange.next(this.value);\r\n });\r\n }\r\n\r\n onFocus(_event: Event) {}\r\n\r\n onBlur(_event: Event) {}\r\n}\r\n","<div #autoComplete class=\"x-auto-complete\">\r\n <div class=\"x-auto-complete-row\">\r\n <x-input\r\n #inputCom\r\n type=\"text\"\r\n [label]=\"label\"\r\n [labelWidth]=\"labelWidth\"\r\n [labelAlign]=\"labelAlign\"\r\n [justify]=\"justify\"\r\n [align]=\"align\"\r\n [direction]=\"direction\"\r\n [disabled]=\"disabled\"\r\n [required]=\"required\"\r\n [icon]=\"icon\"\r\n [iconSpin]=\"iconSpin\"\r\n [placeholder]=\"placeholder\"\r\n [readonly]=\"readonly\"\r\n [clearable]=\"false\"\r\n [(ngModel)]=\"value\"\r\n [valueTpl]=\"valueTpl\"\r\n [valueTplContext]=\"valueTplContext\"\r\n [size]=\"size\"\r\n [bordered]=\"bordered\"\r\n [before]=\"before\"\r\n [after]=\"after\"\r\n [pattern]=\"pattern\"\r\n [message]=\"message\"\r\n [pointer]=\"pointer\"\r\n [(active)]=\"active\"\r\n (xInput)=\"onInput($event)\"\r\n (xKeydown)=\"onKeydown($event)\"\r\n (xFocus)=\"onFocus($event)\"\r\n (xBlur)=\"onBlur($event)\"\r\n (xClick)=\"showPortal()\"\r\n ></x-input>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { XAutoCompleteComponent } from './auto-complete.component';\r\nimport { XInputModule } from '@ng-nest/ui/input';\r\nimport { XPortalModule } from '@ng-nest/ui/portal';\r\nimport { XListModule } from '@ng-nest/ui/list';\r\nimport { XBaseFormModule } from '@ng-nest/ui/base-form';\r\nimport { XAutoCompletePortalComponent } from './auto-complete-portal.component';\r\nimport { XAutoCompleteProperty } from './auto-complete.property';\r\n\r\n@NgModule({\r\n declarations: [XAutoCompleteComponent, XAutoCompletePortalComponent, XAutoCompleteProperty],\r\n exports: [XAutoCompleteComponent, XAutoCompletePortalComponent],\r\n imports: [CommonModule, FormsModule, ReactiveFormsModule, XPortalModule, XInputModule, XListModule, XBaseFormModule]\r\n})\r\nexport class XAutoCompleteModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":";;;;;;;;;;;;;;;;;;;;AAaA;;;;AAIG;AACI,MAAM,mBAAmB,GAAG,kBAAkB;AACrD,MAAM,aAAa,GAAG,cAAc,CAAC;AAErC;;AAEG;AACH,MACa,qBAAsB,SAAQ,qBAA0B,CAAA;AADrE,IAAA,WAAA,GAAA;;AAEE;;;AAGG;QACsB,IAAI,CAAA,IAAA,GAA6B,EAAE,CAAC;AAoC7D;;;AAGG;AACO,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAqB,CAAC;AAC5D,KAAA;iIA9CY,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,4TADkC,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;AAM3C,UAAA,CAAA;AAAf,IAAA,YAAY,EAAE;AAAqC,CAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAKX,UAAA,CAAA;AAAxC,IAAA,WAAW,CAAS,aAAa,EAAE,GAAG,CAAC;AAAuB,CAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,cAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAKL,UAAA,CAAA;AAAzD,IAAA,WAAW,CAAqB,aAAa,EAAE,QAAQ,CAAC;AAAgC,CAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAUnC,UAAA,CAAA;AAArD,IAAA,WAAW,CAAQ,aAAa,EAAE,QAAQ,CAAC;AAAuB,CAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAKN,UAAA,CAAA;AAA5D,IAAA,aAAa,EAAE;AAAE,IAAA,WAAW,CAAW,aAAa,EAAE,IAAI,CAAC;AAAqB,CAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAKpB,UAAA,CAAA;AAA5D,IAAA,aAAa,EAAE;AAAE,IAAA,WAAW,CAAW,aAAa,EAAE,IAAI,CAAC;AAA0B,CAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAKxB,UAAA,CAAA;AAA7D,IAAA,aAAa,EAAE;AAAE,IAAA,WAAW,CAAW,aAAa,EAAE,KAAK,CAAC;AAAuB,CAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;2FAxClF,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,SAAS;mBAAC,EAAE,QAAQ,EAAE,CAAG,EAAA,mBAAmB,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;8BAM7C,IAAI,EAAA,CAAA;sBAA5B,KAAK;gBAK4C,YAAY,EAAA,CAAA;sBAA7D,KAAK;gBAK6D,SAAS,EAAA,CAAA;sBAA3E,KAAK;gBAKG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAKyD,IAAI,EAAA,CAAA;sBAAlE,KAAK;gBAKgE,QAAQ,EAAA,CAAA;sBAA7E,KAAK;gBAKgE,aAAa,EAAA,CAAA;sBAAlF,KAAK;gBAKiE,UAAU,EAAA,CAAA;sBAAhF,KAAK;gBAKI,QAAQ,EAAA,CAAA;sBAAjB,MAAM;;AAyCT;;;;AAIG;AACI,MAAM,yBAAyB,GAAG;;AChGzC,MAQa,4BAA4B,CAAA;AAEqB,IAAA,IAAI,CAAC,KAAuB,EAAA;AACtF,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACtB,KAAK,CAAC,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;KAClD;IAC4D,KAAK,GAAA;AAChE,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KACtB;IAuBD,WAAmB,CAAA,QAAmB,EAAS,GAAsB,EAAA;QAAlD,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAAS,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QATrE,IAAQ,CAAA,QAAA,GAAY,CAAC,CAAC;QAEtB,IAAI,CAAA,IAAA,GAAY,KAAK,CAAC;QACtB,IAAM,CAAA,MAAA,GAAW,CAAC,CAAC,CAAC;AAIZ,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAQ,CAAC;KAEgC;IAEzE,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AAChE,YAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACf,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AAC3B,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AACnE,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACnB,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AAC3B,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AAC/D,YAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AACd,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AAC3B,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YAChE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrC,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AACnE,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACvB,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,WAAW;AACb,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,EACzB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;AACA,aAAA,SAAS,CAAC,CAAC,CAAC,KAAI;AACf,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AACvB,SAAC,CAAC,CAAC;KACN;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;KAC/B;AAED,IAAA,eAAe,CAAC,KAAY,EAAA;QAC1B,KAAK,CAAC,eAAe,EAAE,CAAC;KACzB;AAED,IAAA,SAAS,CAAC,IAAuB,EAAA;AAC/B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACrB;AAED,IAAA,QAAQ,CAAC,GAAW,EAAA;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;KACnB;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;KAC1B;iIAlFU,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA5B,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EC5BzC,QAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gCAAA,EAAA,cAAA,EAAA,iCAAA,EAAA,eAAA,EAAA,EAAA,UAAA,EAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,gfAaA,EDac,MAAA,EAAA,CAAA,6hBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAC,qBAAqB,CAAC,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAExB,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBARxC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAG,yBAAyB,CAAA,CAAE,EAGzB,aAAA,EAAA,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACnC,UAAA,EAAA,CAAC,qBAAqB,CAAC,EAAA,QAAA,EAAA,gfAAA,EAAA,MAAA,EAAA,CAAA,6hBAAA,CAAA,EAAA,CAAA;gIAGc,SAAS,EAAA,CAAA;sBAAzD,WAAW;uBAAC,2BAA2B,CAAA;gBACoB,IAAI,EAAA,CAAA;sBAA/D,YAAY;uBAAC,gCAAgC,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAIG,KAAK,EAAA,CAAA;sBAAjE,YAAY;uBAAC,iCAAiC,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAGxC,IAAI,EAAA,CAAA;sBAAtB,SAAS;uBAAC,MAAM,CAAA;;;AEDnB,MAQa,sBAAuB,SAAQ,qBAAqB,CAAA;AAItD,IAAA,UAAU,CAAC,KAAU,EAAA;AAC5B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC1B;AA2BD,IAAA,WAAA,CACS,QAAmB,EACV,GAAsB,EAC9B,aAA6B,EAC7B,gBAAkC,EAClC,OAAgB,EAChB,UAAsB,EACvB,aAA6B,EAAA;AAEpC,QAAA,KAAK,EAAE,CAAC;QARD,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACV,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QAC9B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAgB;QAC7B,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;QAChB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACvB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAgB;QAhCtC,IAAK,CAAA,KAAA,GAAY,KAAK,CAAC;QACvB,IAAY,CAAA,YAAA,GAAQ,EAAE,CAAC;QACvB,IAAK,CAAA,KAAA,GAAwB,EAAE,CAAC;QAChC,IAAW,CAAA,WAAA,GAAwB,EAAE,CAAC;QAGtC,IAAI,CAAA,IAAA,GAAW,EAAE,CAAC;QAClB,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAG1B,IAAQ,CAAA,QAAA,GAAW,CAAC,CAAC;QACrB,IAAc,CAAA,cAAA,GAAY,IAAI,CAAC;QAC/B,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;QACrB,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAET,IAAe,CAAA,eAAA,GAAsC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC9F,QAAA,IAAA,CAAA,WAAW,GAAiB,IAAI,OAAO,EAAE,CAAC;AAC1C,QAAA,IAAA,CAAA,cAAc,GAAiB,IAAI,OAAO,EAAE,CAAC;AAC7C,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAsB,EAAE,CAAC,CAAC;AAC1D,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAM,IAAI,CAAC,CAAC;AAC7C,QAAA,IAAA,CAAA,YAAY,GAAkB,IAAI,OAAO,EAAE,CAAC;AAC5C,QAAA,IAAA,CAAA,cAAc,GAA2B,IAAI,OAAO,EAAE,CAAC;AAC/C,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAQ,CAAC;AACzC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;KAY3B;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACvG,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QACzB,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;KACnC;IAED,eAAe,GAAA;QACb,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;KAC/B;IAED,WAAW,GAAA;AACT,QAAA,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,CAAA,aAAA,EAAgB,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,KAAK,CAAC;KACnF;IAED,OAAO,GAAA;AACL,QAAA,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO;AAC/D,QAAA,QAAQ,CAAoB,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AACtE,YAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACf,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AAC3B,SAAC,CAAC,CAAC;KACJ;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YAChE,IAAI,CAAC,WAAW,EAAE,CAAC;AACrB,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,WAAW;AACb,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,EACzB,YAAY,CAAC,IAAI,CAAC,YAAsB,CAAC,EACzC,oBAAoB,EAAE,EACtB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;AACA,aAAA,SAAS,CAAC,CAAC,CAAC,KAAI;AACf,YAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACtB,SAAC,CAAC,CAAC;AACL,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AACnE,YAAA,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;gBACxF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,aAAA;AACD,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACvD,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC1B,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAED,eAAe,GAAA;QACb,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC3B,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QACxD,IAAI,WAAW,GAAuB,IAAI,CAAC;AAC3C,QAAA,KAAK,IAAI,IAAI,IAAI,OAAO,EAAE;AACxB,YAAA,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;gBACzC,WAAW,GAAG,IAAI,CAAC;gBACnB,MAAM;AACP,aAAA;AACF,SAAA;AACD,QAAA,IAAI,WAAW,IAAI,WAAW,CAAC,OAAO,KAAK,MAAM,EAAE;AACjD,YAAA,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC;AAC7B,iBAAA,IAAI,CACH,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAG,CAAC,EACpC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;iBACA,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;gBAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;AACpE,gBAAA,MAAM,KAAK,GAAG,WAAY,CAAC,qBAAqB,EAAE,CAAC;gBACnD,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE;AAC3E,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC1B,iBAAA;AACH,aAAC,CAAC,CAAC;AACN,SAAA;KACF;IAED,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;KAC/C;IAED,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AACzB,YAAA,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AAClC,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACxD,oBAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;oBAChB,IAAI,IAAI,CAAC,QAAQ;AAAE,wBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC7C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AACzB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;KACpC;IAED,UAAU,GAAA;AACR,QAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;AACrF,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,KAAK,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACnF,YAAA,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;AACzB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;YACzB,QAAQ,CAAoB,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AACxF,gBAAA,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AACf,gBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,gBAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;gBACf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACjC,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,gBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AAC3B,aAAC,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,YAAY,EAAE,CAAC;AACrB,SAAA;KACF;IAED,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC;AACtE,QAAA,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;AAC/B,SAAA;AAAM,aAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACxC,SAAA;AACD,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;AACxE,QAAA,MAAM,MAAM,GAAkB;AAC5B,YAAA,aAAa,EAAE,EAAE;AACjB,YAAA,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK;AACrB,YAAA,gBAAgB,EAAE,IAAI,CAAC,YAAY,EAAE;YACrC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE;SAC3D,CAAC;AACF,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AACtC,YAAA,OAAO,EAAE,4BAA4B;YACrC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;AACvC,YAAA,aAAa,EAAE,MAAM;AACtB,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,UAAU;AACpB,cAAE,oBAAoB,EAAE;AACvB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAChC,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC3B,SAAC,CAAC,CAAC;QACL,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;AAED,IAAA,WAAW,CAAC,MAAqB,EAAA;AAC/B,QAAA,IAAI,QAAQ,GAAG,MAAM,CAAC,gBAAqD,CAAC;AAC5E,QAAA,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAmC,KAAI;YAC1G,MAAM,KAAK,GAAG,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAuB,CAAC;AACrF,YAAA,KAAK,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9D,SAAC,CAAC,CAAC;KACJ;IAED,WAAW,GAAA;AACT,QAAA,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;AAC5C,QAAA,IAAI,CAAC,YAAY;YAAE,OAAO;AAC1B,QAAA,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE;YACnC,IAAI,EAAE,IAAI,CAAC,WAAW;YACtB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,YAAA,aAAa,EAAE,MAAM,IAAI,CAAC,aAAa,EAAE;YACzC,QAAQ,EAAE,CAAC,IAAuB,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAC7D,YAAA,SAAS,EAAE,CAAC,GAAY,MAAM,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;AACpD,SAAA,CAAC,CAAC;AACH,QAAA,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;KAChD;AAED,IAAA,WAAW,CAAC,IAA6C,EAAA;QACvD,IAAI,GAAG,IAAyB,CAAC;AACjC,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;AAC7B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YACzB,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,QAAQ;AAAE,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC1B;IAED,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC;AACrC,YAAA,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ;AAClC,YAAA,SAAS,EAAE,CAAC,IAAI,CAAC,SAA+B,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,CAAC;AACvG,YAAA,iBAAiB,EAAE,wBAAwB;AAC5C,SAAA,CAAC,CAAC;KACJ;IAED,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,sBAAsB,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;KAC/F;AAED,IAAA,cAAc,CAAC,KAAsB,EAAA;QACnC,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1E,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAM,CAAC,CAAC,KAAgB,CAAC,WAAW,EAAE,CAAC,OAAO,CAAE,KAAgB,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9H,SAAA;KACF;AAED,IAAA,WAAW,CAAC,KAAsB,EAAA;AAChC,QAAA,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;gBAC1B,IAAI,CAAC,UAAU,EAAE,CAAC;AACnB,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;AACnB,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC1B,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;AACzB,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,oBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AACzB,oBAAA,QAAQ,CAAoB,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,KAAY,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AAC1F,wBAAA,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AACf,wBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,wBAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;wBACf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,wBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AAC3B,qBAAC,CAAC,CAAC;AACJ,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACpB,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACvC,aAAA;YACD,OAAO;AACR,SAAA;QACD,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;gBAC1B,IAAI,CAAC,UAAU,EAAE,CAAC;AACnB,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;AACnB,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC1B,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;oBAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACxC,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACvC,SAAA;KACF;IAED,kBAAkB,GAAA;QAChB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,QAAQ,EAAE,CAAC;AAChB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC1B;AAED,IAAA,SAAS,CAAC,MAAqB,EAAA;AAC7B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAClC;AAED,IAAA,OAAO,CAAC,MAAa,EAAA;QACnB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpC,SAAC,CAAC,CAAC;KACJ;IAED,OAAO,CAAC,MAAa,EAAA,GAAI;IAEzB,MAAM,CAAC,MAAa,EAAA,GAAI;iIAnVb,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;qHAAtB,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,SAAA,EAFtB,CAAC,cAAc,CAAC,sBAAsB,CAAC,CAAC,uSC1CrD,8nCAqCA,EAAA,MAAA,EAAA,CAAA,+nBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,sEAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDOa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBARlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAG,mBAAmB,CAAA,CAAE,EAGnB,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC,CAAC,cAAc,wBAAwB,CAAC,EAAA,QAAA,EAAA,8nCAAA,EAAA,MAAA,EAAA,CAAA,+nBAAA,CAAA,EAAA,CAAA;0QAGV,QAAQ,EAAA,CAAA;sBAAhD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBACM,YAAY,EAAA,CAAA;sBAAxD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;AEnC7C,MAKa,mBAAmB,CAAA;iIAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;kIAAnB,mBAAmB,EAAA,YAAA,EAAA,CAJb,sBAAsB,EAAE,4BAA4B,EAAE,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAEhF,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,CAAA,EAAA,OAAA,EAAA,CADzG,sBAAsB,EAAE,4BAA4B,CAAA,EAAA,CAAA,CAAA,EAAA;AAGrD,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EAFlB,OAAA,EAAA,CAAA,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAE1G,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE,CAAC,sBAAsB,EAAE,4BAA4B,EAAE,qBAAqB,CAAC;AAC3F,oBAAA,OAAO,EAAE,CAAC,sBAAsB,EAAE,4BAA4B,CAAC;AAC/D,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,CAAC;AACvH,iBAAA,CAAA;;;ACfD;;AAEG;;;;"}
|