@taiga-ui/addon-mobile 4.0.0-rc.5 → 4.0.0-rc.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/esm2022/components/mobile-calendar/mobile-calendar.component.mjs +3 -4
- package/esm2022/components/swipe-action/swipe-actions.component.mjs +4 -4
- package/esm2022/directives/dropdown-mobile/dropdown-mobile.component.mjs +12 -11
- package/fesm2022/taiga-ui-addon-mobile-components-mobile-calendar.mjs +2 -3
- package/fesm2022/taiga-ui-addon-mobile-components-mobile-calendar.mjs.map +1 -1
- package/fesm2022/taiga-ui-addon-mobile-components-swipe-action.mjs +3 -3
- package/fesm2022/taiga-ui-addon-mobile-components-swipe-action.mjs.map +1 -1
- package/fesm2022/taiga-ui-addon-mobile-directives-dropdown-mobile.mjs +11 -10
- package/fesm2022/taiga-ui-addon-mobile-directives-dropdown-mobile.mjs.map +1 -1
- package/package.json +5 -5
|
@@ -138,7 +138,7 @@ class TuiMobileCalendar {
|
|
|
138
138
|
if (!(this.value instanceof TuiDayRange)) {
|
|
139
139
|
return this.value?.[0]?.year ?? this.today.year;
|
|
140
140
|
}
|
|
141
|
-
return this.value.
|
|
141
|
+
return this.value.to.year;
|
|
142
142
|
}
|
|
143
143
|
get initialMonth() {
|
|
144
144
|
if (!this.value) {
|
|
@@ -152,8 +152,7 @@ class TuiMobileCalendar {
|
|
|
152
152
|
((this.value?.[0]?.year ?? this.today.year) - STARTING_YEAR) *
|
|
153
153
|
MONTHS_IN_YEAR);
|
|
154
154
|
}
|
|
155
|
-
return (this.value.
|
|
156
|
-
(this.value.from.year - STARTING_YEAR) * MONTHS_IN_YEAR);
|
|
155
|
+
return (this.value.to.month + (this.value.to.year - STARTING_YEAR) * MONTHS_IN_YEAR);
|
|
157
156
|
}
|
|
158
157
|
isMultiValue(day) {
|
|
159
158
|
return !(day instanceof TuiDay) && !(day instanceof TuiDayRange) && this.multi;
|
|
@@ -285,4 +284,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
285
284
|
}], confirm: [{
|
|
286
285
|
type: Output
|
|
287
286
|
}] } });
|
|
288
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9iaWxlLWNhbGVuZGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLW1vYmlsZS9jb21wb25lbnRzL21vYmlsZS1jYWxlbmRhci9tb2JpbGUtY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRkb24tbW9iaWxlL2NvbXBvbmVudHMvbW9iaWxlLWNhbGVuZGFyL21vYmlsZS1jYWxlbmRhci50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx5QkFBeUIsRUFDekIsZUFBZSxFQUNmLHdCQUF3QixHQUMzQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUVuRSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0seURBQXlELENBQUM7QUFDL0YsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQ0gsY0FBYyxFQUNkLGFBQWEsRUFDYixZQUFZLEVBQ1osTUFBTSxFQUNOLFdBQVcsRUFDWCxRQUFRLEdBQ1gsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsV0FBVyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDekUs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O3dCQUN0QixZQUFZO3dCQUNaLE9BQU87d0JBQ1AsSUFBSTt3QkFDSixhQUFhO3FCQUNoQixtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyw2QkFBNkIsUUFDbEM7d0JBQ0YsY0FBYyxFQUFFLE9BQU87d0JBQ3ZCLHNCQUFzQixFQUFFLGFBQWE7cUJBQ3hDOzBFQUlnQixjQUFjO3NCQUQ5QixTQUFTO3VCQUFDLGdCQUFnQjtnQkFJVixlQUFlO3NCQUQvQixTQUFTO3VCQUFDLGlCQUFpQjtnQkFnQ3JCLE1BQU07c0JBRFosS0FBSztnQkFJQyxLQUFLO3NCQURYLEtBQUs7Z0JBSUMsR0FBRztzQkFEVCxLQUFLO2dCQUlDLEdBQUc7c0JBRFQsS0FBSztnQkFJQyxtQkFBbUI7c0JBRHpCLEtBQUs7Z0JBSVUsTUFBTTtzQkFEckIsTUFBTTtnQkFJUyxPQUFPO3NCQUR0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDZGtGaXhlZFNpemVWaXJ0dWFsU2Nyb2xsLFxuICAgIENka1ZpcnR1YWxGb3JPZixcbiAgICBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHtBc3luY1BpcGUsIERPQ1VNRU5ULCBOZ0Zvck9mLCBOZ0lmfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHR5cGUge0FmdGVyVmlld0luaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRGVzdHJveVJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge1R1aU1vYmlsZUNhbGVuZGFyU2hlZXR9IGZyb20gJ0B0YWlnYS11aS9hZGRvbi1tb2JpbGUvY29tcG9uZW50cy9tb2JpbGUtY2FsZW5kYXItc2hlZXQnO1xuaW1wb3J0IHtUdWlSaXBwbGUsIFR1aVRvdWNoYWJsZX0gZnJvbSAnQHRhaWdhLXVpL2FkZG9uLW1vYmlsZS9kaXJlY3RpdmVzJztcbmltcG9ydCB7VFVJX0ZBTFNFX0hBTkRMRVJ9IGZyb20gJ0B0YWlnYS11aS9jZGsvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gICAgTU9OVEhTX0lOX1lFQVIsXG4gICAgVFVJX0ZJUlNUX0RBWSxcbiAgICBUVUlfTEFTVF9EQVksXG4gICAgVHVpRGF5LFxuICAgIFR1aURheVJhbmdlLFxuICAgIFR1aU1vbnRoLFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RhdGUtdGltZSc7XG5pbXBvcnQge3R1aVR5cGVkRnJvbUV2ZW50LCB0dWlab25lZnJlZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9vYnNlcnZhYmxlcyc7XG5pbXBvcnQge1R1aU1hcHBlclBpcGV9IGZyb20gJ0B0YWlnYS11aS9jZGsvcGlwZXMvbWFwcGVyJztcbmltcG9ydCB7VFVJX0lTX0UyRSwgVFVJX0lTX0lPU30gZnJvbSAnQHRhaWdhLXVpL2Nkay90b2tlbnMnO1xuaW1wb3J0IHR5cGUge1R1aUJvb2xlYW5IYW5kbGVyLCBUdWlNYXBwZXJ9IGZyb20gJ0B0YWlnYS11aS9jZGsvdHlwZXMnO1xuaW1wb3J0IHtUdWlCdXR0b259IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7VHVpTGlua30gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy9saW5rJztcbmltcG9ydCB7VHVpTW9udGhQaXBlfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9waXBlcy9tb250aCc7XG5pbXBvcnQge1R1aU9yZGVyV2Vla0RheXNQaXBlfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9waXBlcy9vcmRlci13ZWVrLWRheXMnO1xuaW1wb3J0IHtcbiAgICBUVUlfQU5JTUFUSU9OU19TUEVFRCxcbiAgICBUVUlfQ0xPU0VfV09SRCxcbiAgICBUVUlfQ09NTU9OX0lDT05TLFxuICAgIFRVSV9TSE9SVF9XRUVLX0RBWVMsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlL3Rva2Vucyc7XG5pbXBvcnQge3R1aUdldER1cmF0aW9ufSBmcm9tICdAdGFpZ2EtdWkvY29yZS91dGlscy9taXNjZWxsYW5lb3VzJztcbmltcG9ydCB7XG4gICAgVFVJX0NBTkNFTF9XT1JELFxuICAgIFRVSV9DSE9PU0VfREFZX09SX1JBTkdFX1RFWFRTLFxuICAgIFRVSV9ET05FX1dPUkQsXG59IGZyb20gJ0B0YWlnYS11aS9raXQvdG9rZW5zJztcbmltcG9ydCB7dHVpVG9nZ2xlRGF5fSBmcm9tICdAdGFpZ2EtdWkva2l0L3V0aWxzJztcbmltcG9ydCB0eXBlIHtNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBkZWJvdW5jZVRpbWUsXG4gICAgZGVsYXksXG4gICAgZmlsdGVyLFxuICAgIGlkZW50aXR5LFxuICAgIG1hcCxcbiAgICBtZXJnZU1hcCxcbiAgICByYWNlLFxuICAgIHN3aXRjaE1hcCxcbiAgICB0YWtlLFxuICAgIHRha2VVbnRpbCxcbiAgICB0aW1lcixcbiAgICB3aW5kb3dUb2dnbGUsXG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICAgIFJBTkdFLFxuICAgIFNDUk9MTF9ERUJPVU5DRV9USU1FLFxuICAgIFNUQVJUSU5HX1lFQVIsXG4gICAgWUVBUlNfSU5fUk9XLFxufSBmcm9tICcuL21vYmlsZS1jYWxlbmRhci5jb25zdCc7XG5pbXBvcnQge1xuICAgIFRVSV9NT0JJTEVfQ0FMRU5EQVJfUFJPVklERVJTLFxuICAgIFRVSV9WQUxVRV9TVFJFQU0sXG59IGZyb20gJy4vbW9iaWxlLWNhbGVuZGFyLnByb3ZpZGVycyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICd0dWktbW9iaWxlLWNhbGVuZGFyJyxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIFR1aUJ1dHRvbixcbiAgICAgICAgQXN5bmNQaXBlLFxuICAgICAgICBUdWlSaXBwbGUsXG4gICAgICAgIFR1aUxpbmssXG4gICAgICAgIFR1aVRvdWNoYWJsZSxcbiAgICAgICAgQ2RrRml4ZWRTaXplVmlydHVhbFNjcm9sbCxcbiAgICAgICAgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LFxuICAgICAgICBDZGtWaXJ0dWFsRm9yT2YsXG4gICAgICAgIFR1aU9yZGVyV2Vla0RheXNQaXBlLFxuICAgICAgICBUdWlNb2JpbGVDYWxlbmRhclNoZWV0LFxuICAgICAgICBUdWlNb250aFBpcGUsXG4gICAgICAgIE5nRm9yT2YsXG4gICAgICAgIE5nSWYsXG4gICAgICAgIFR1aU1hcHBlclBpcGUsXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbW9iaWxlLWNhbGVuZGFyLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL21vYmlsZS1jYWxlbmRhci5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBUVUlfTU9CSUxFX0NBTEVOREFSX1BST1ZJREVSUyxcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3MuX2lvc10nOiAnaXNJT1MnLFxuICAgICAgICAnW2NsYXNzLl9pbml0aWFsaXplZF0nOiAnaW5pdGlhbGl6ZWQnLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aU1vYmlsZUNhbGVuZGFyIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgQFZpZXdDaGlsZCgneWVhcnNTY3JvbGxSZWYnKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgeWVhcnNTY3JvbGxSZWY/OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XG5cbiAgICBAVmlld0NoaWxkKCdtb250aHNTY3JvbGxSZWYnKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgbW9udGhzU2Nyb2xsUmVmPzogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSB0b2RheSA9IFR1aURheS5jdXJyZW50TG9jYWwoKTtcbiAgICBwcml2YXRlIGFjdGl2ZVllYXIgPSAwO1xuICAgIHByaXZhdGUgYWN0aXZlTW9udGggPSAwO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvYyA9IGluamVjdChET0NVTUVOVCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzcGVlZCA9IGluamVjdChUVUlfQU5JTUFUSU9OU19TUEVFRCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcblxuICAgIHByb3RlY3RlZCBpbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCB2YWx1ZTogVHVpRGF5IHwgVHVpRGF5UmFuZ2UgfCByZWFkb25seSBUdWlEYXlbXSB8IG51bGwgPSBudWxsO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpc0lPUyA9IGluamVjdChUVUlfSVNfSU9TKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNFMkUgPSBpbmplY3QoVFVJX0lTX0UyRSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGljb25zID0gaW5qZWN0KFRVSV9DT01NT05fSUNPTlMpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjbG9zZVdvcmQkID0gaW5qZWN0KFRVSV9DTE9TRV9XT1JEKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2FuY2VsV29yZCQgPSBpbmplY3QoVFVJX0NBTkNFTF9XT1JEKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZG9uZVdvcmQkID0gaW5qZWN0KFRVSV9ET05FX1dPUkQpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSB1bm9yZGVyZWRXZWVrRGF5cyQgPSBpbmplY3QoVFVJX1NIT1JUX1dFRUtfREFZUyk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNob29zZURheU9yUmFuZ2VUZXh0cyQgPSBpbmplY3QoVFVJX0NIT09TRV9EQVlfT1JfUkFOR0VfVEVYVFMpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSB5ZWFycyA9IEFycmF5LmZyb20oe2xlbmd0aDogUkFOR0V9LCAoXywgaSkgPT4gaSArIFNUQVJUSU5HX1lFQVIpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBtb250aHMgPSBBcnJheS5mcm9tKFxuICAgICAgICB7bGVuZ3RoOiBSQU5HRSAqIDEyfSxcbiAgICAgICAgKF8sIGkpID0+XG4gICAgICAgICAgICBuZXcgVHVpTW9udGgoXG4gICAgICAgICAgICAgICAgTWF0aC5mbG9vcihpIC8gTU9OVEhTX0lOX1lFQVIpICsgU1RBUlRJTkdfWUVBUixcbiAgICAgICAgICAgICAgICBpICUgTU9OVEhTX0lOX1lFQVIsXG4gICAgICAgICAgICApLFxuICAgICk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaW5nbGUgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbXVsdGkgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1pbiA9IFRVSV9GSVJTVF9EQVk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtYXggPSBUVUlfTEFTVF9EQVk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkaXNhYmxlZEl0ZW1IYW5kbGVyOiBUdWlCb29sZWFuSGFuZGxlcjxUdWlEYXk+ID0gVFVJX0ZBTFNFX0hBTkRMRVI7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVhZG9ubHkgY2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbmZpcm0gPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgICAgICBUdWlEYXkgfCBUdWlEYXlSYW5nZSB8IHJlYWRvbmx5IFR1aURheVtdXG4gICAgPigpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGluamVjdChUVUlfVkFMVUVfU1RSRUFNKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aXZlWWVhciA9IHRoaXMuaW5pdGlhbFllYXI7XG4gICAgICAgIHRoaXMuYWN0aXZlTW9udGggPSB0aGlzLmluaXRpYWxNb250aDtcblxuICAgICAgICAvLyBWaXJ0dWFsIHNjcm9sbCBoYXMgbm90IHlldCByZW5kZXJlZCBpdGVtcyBldmVuIGluIG5nQWZ0ZXJWaWV3SW5pdFxuICAgICAgICB0aGlzLndhaXRTY3JvbGxlZENoYW5nZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRZZWFyKHllYXI6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hY3RpdmVZZWFyID09PSB5ZWFyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFjdGl2ZU1vbnRoICs9IHRoaXMuZ2V0TW9udGhPZmZzZXQoeWVhcik7XG4gICAgICAgIHRoaXMuYWN0aXZlWWVhciA9IHllYXI7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG9BY3RpdmVZZWFyKCdzbW9vdGgnKTtcblxuICAgICAgICB0aW1lcigwKVxuICAgICAgICAgICAgLnBpcGUodHVpWm9uZWZyZWUodGhpcy5uZ1pvbmUpLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zY3JvbGxUb0FjdGl2ZU1vbnRoKCkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgeWVhcldpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmRvYy5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggLyBZRUFSU19JTl9ST1c7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uQ2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2FuY2VsLmVtaXQoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Db25maXJtKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5jb25maXJtLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNhbmNlbC5lbWl0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25EYXlDbGljayhkYXk6IFR1aURheSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zaW5nbGUpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBkYXk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc011bHRpVmFsdWUodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0dWlUb2dnbGVEYXkodGhpcy52YWx1ZSwgZGF5KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzU2luZ2xlVmFsdWUodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBuZXcgVHVpRGF5UmFuZ2UoZGF5LCBkYXkpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudmFsdWUgaW5zdGFuY2VvZiBUdWlEYXlSYW5nZSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IFR1aURheVJhbmdlLnNvcnQodGhpcy52YWx1ZS5mcm9tLCBkYXkpO1xuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gbmV3IFR1aURheVJhbmdlKGRheSwgZGF5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRTdGF0ZShpbmRleDogbnVtYmVyKTogJ2FjdGl2ZScgfCAnYWRqYWNlbnQnIHwgbnVsbCB7XG4gICAgICAgIGlmICh0aGlzLmlzWWVhckFjdGl2ZShpbmRleCkpIHtcbiAgICAgICAgICAgIHJldHVybiAnYWN0aXZlJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzWWVhckFjdGl2ZShpbmRleCAtIDEpIHx8IHRoaXMuaXNZZWFyQWN0aXZlKGluZGV4ICsgMSkpIHtcbiAgICAgICAgICAgIHJldHVybiAnYWRqYWNlbnQnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uTW9udGhDaGFuZ2UobW9udGg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICAvLyBTa2lwcGluZyBpbml0aWFsIGNhbGxiYWNrIHdoZXJlIGluZGV4ID09PSAwXG4gICAgICAgIGlmICghbW9udGggfHwgdGhpcy5hY3RpdmVNb250aCA9PT0gbW9udGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWN0aXZlTW9udGggPSBtb250aDtcblxuICAgICAgICBjb25zdCBhY3RpdmVZZWFyID0gdGhpcy5tb250aFRvWWVhcihtb250aCk7XG5cbiAgICAgICAgaWYgKGFjdGl2ZVllYXIgPT09IHRoaXMuYWN0aXZlWWVhcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hY3RpdmVZZWFyID0gYWN0aXZlWWVhcjtcbiAgICAgICAgdGhpcy5zY3JvbGxUb0FjdGl2ZVllYXIoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGlzYWJsZWRJdGVtSGFuZGxlck1hcHBlcjogVHVpTWFwcGVyPFxuICAgICAgICBbVHVpQm9vbGVhbkhhbmRsZXI8VHVpRGF5PiwgVHVpRGF5LCBUdWlEYXldLFxuICAgICAgICBUdWlCb29sZWFuSGFuZGxlcjxUdWlEYXk+XG4gICAgPiA9IChkaXNhYmxlZEl0ZW1IYW5kbGVyLCBtaW4sIG1heCkgPT4gKGl0ZW0pID0+XG4gICAgICAgIGl0ZW0uZGF5QmVmb3JlKG1pbikgfHxcbiAgICAgICAgKG1heCAhPT0gbnVsbCAmJiBpdGVtLmRheUFmdGVyKG1heCkpIHx8XG4gICAgICAgIGRpc2FibGVkSXRlbUhhbmRsZXIoaXRlbSk7XG5cbiAgICBwcml2YXRlIGdldCBpbml0aWFsWWVhcigpOiBudW1iZXIge1xuICAgICAgICBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRvZGF5LnllYXI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy52YWx1ZSBpbnN0YW5jZW9mIFR1aURheSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUueWVhcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghKHRoaXMudmFsdWUgaW5zdGFuY2VvZiBUdWlEYXlSYW5nZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlPy5bMF0/LnllYXIgPz8gdGhpcy50b2RheS55ZWFyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUuZnJvbS55ZWFyO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGluaXRpYWxNb250aCgpOiBudW1iZXIge1xuICAgICAgICBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRvZGF5Lm1vbnRoICsgKHRoaXMudG9kYXkueWVhciAtIFNUQVJUSU5HX1lFQVIpICogTU9OVEhTX0lOX1lFQVI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy52YWx1ZSBpbnN0YW5jZW9mIFR1aURheSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUubW9udGggKyAodGhpcy52YWx1ZS55ZWFyIC0gU1RBUlRJTkdfWUVBUikgKiBNT05USFNfSU5fWUVBUjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghKHRoaXMudmFsdWUgaW5zdGFuY2VvZiBUdWlEYXlSYW5nZSkpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgKHRoaXMudmFsdWU/LlswXT8ubW9udGggPz8gdGhpcy50b2RheS5tb250aCkgK1xuICAgICAgICAgICAgICAgICgodGhpcy52YWx1ZT8uWzBdPy55ZWFyID8/IHRoaXMudG9kYXkueWVhcikgLSBTVEFSVElOR19ZRUFSKSAqXG4gICAgICAgICAgICAgICAgICAgIE1PTlRIU19JTl9ZRUFSXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMudmFsdWUuZnJvbS5tb250aCArXG4gICAgICAgICAgICAodGhpcy52YWx1ZS5mcm9tLnllYXIgLSBTVEFSVElOR19ZRUFSKSAqIE1PTlRIU19JTl9ZRUFSXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc011bHRpVmFsdWUoZGF5OiBhbnkpOiBkYXkgaXMgcmVhZG9ubHkgVHVpRGF5W10gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gIShkYXkgaW5zdGFuY2VvZiBUdWlEYXkpICYmICEoZGF5IGluc3RhbmNlb2YgVHVpRGF5UmFuZ2UpICYmIHRoaXMubXVsdGk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1NpbmdsZVZhbHVlKGRheTogYW55KTogZGF5IGlzIFR1aURheSB7XG4gICAgICAgIHJldHVybiBkYXkgaW5zdGFuY2VvZiBUdWlEYXkgfHwgKGRheSBpbnN0YW5jZW9mIFR1aURheVJhbmdlICYmICFkYXkuaXNTaW5nbGVEYXkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0WWVhcnNWaWV3cG9ydFNpemUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMueWVhcnNTY3JvbGxSZWY/LmdldFZpZXdwb3J0U2l6ZSgpIHx8IDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVWaWV3cG9ydERpbWVuc2lvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy55ZWFyc1Njcm9sbFJlZj8uY2hlY2tWaWV3cG9ydFNpemUoKTtcbiAgICAgICAgdGhpcy5tb250aHNTY3JvbGxSZWY/LmNoZWNrVmlld3BvcnRTaXplKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsYXRlSW5pdCgpOiBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb248bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFllYXJzVmlld3BvcnRTaXplKCkgPiAwID8gaWRlbnRpdHkgOiBkZWxheSgyMDApO1xuICAgIH1cblxuICAgIHByaXZhdGUgd2FpdFNjcm9sbGVkQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZVZpZXdwb3J0RGltZW5zaW9uKCk7XG5cbiAgICAgICAgdGhpcy5tb250aHNTY3JvbGxSZWY/LnNjcm9sbGVkSW5kZXhDaGFuZ2VcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGRlbGF5KHR1aUdldER1cmF0aW9uKHRoaXMuc3BlZWQpKSxcbiAgICAgICAgICAgICAgICB0aGlzLmxhdGVJbml0KCksXG4gICAgICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmlld3BvcnREaW1lbnNpb24oKTtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRZZWFyU2Nyb2xsKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0TW9udGhTY3JvbGwoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFRvQWN0aXZlWWVhcigpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9BY3RpdmVNb250aCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0WWVhclNjcm9sbCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qge3llYXJzU2Nyb2xsUmVmfSA9IHRoaXM7XG5cbiAgICAgICAgaWYgKCF5ZWFyc1Njcm9sbFJlZikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdG91Y2hzdGFydCQgPSB0dWlUeXBlZEZyb21FdmVudChcbiAgICAgICAgICAgIHllYXJzU2Nyb2xsUmVmLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICd0b3VjaHN0YXJ0JyxcbiAgICAgICAgICAgIHtwYXNzaXZlOiB0cnVlfSxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgdG91Y2hlbmQkID0gdHVpVHlwZWRGcm9tRXZlbnQoXG4gICAgICAgICAgICB5ZWFyc1Njcm9sbFJlZi5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAndG91Y2hlbmQnLFxuICAgICAgICAgICAge3Bhc3NpdmU6IHRydWV9LFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBjbGljayQgPSB0dWlUeXBlZEZyb21FdmVudChcbiAgICAgICAgICAgIHllYXJzU2Nyb2xsUmVmLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICdjbGljaycsXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gUmVmcmVzaCBhY3RpdmVZZWFyXG4gICAgICAgIHllYXJzU2Nyb2xsUmVmXG4gICAgICAgICAgICAuZWxlbWVudFNjcm9sbGVkKClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIC8vIElnbm9yZSBzbW9vdGggc2Nyb2xsIHJlc3VsdGluZyBmcm9tIGNsaWNrIG9uIHRoZSBleGFjdCB5ZWFyXG4gICAgICAgICAgICAgICAgd2luZG93VG9nZ2xlKHRvdWNoc3RhcnQkLCAoKSA9PiBjbGljayQpLFxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKCh4KSA9PiB4KSxcbiAgICAgICAgICAgICAgICAvLyBEZWxheSBpcyByZXF1aXJlZCB0byBydW4gbW9udGhzIHNjcm9sbCBpbiB0aGUgbmV4dCBmcmFtZSB0byBwcmV2ZW50IGZsaWNrZXJcbiAgICAgICAgICAgICAgICBkZWxheSgwKSxcbiAgICAgICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBNYXRoLnJvdW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllYXJzU2Nyb2xsUmVmLm1lYXN1cmVTY3JvbGxPZmZzZXQoKSAvIHRoaXMueWVhcldpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSArXG4gICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmZsb29yKFlFQVJTX0lOX1JPVyAvIDIpICtcbiAgICAgICAgICAgICAgICAgICAgICAgIFNUQVJUSU5HX1lFQVIsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKGFjdGl2ZVllYXIpID0+IGFjdGl2ZVllYXIgIT09IHRoaXMuYWN0aXZlWWVhciksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChhY3RpdmVZZWFyKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVNb250aCArPSB0aGlzLmdldE1vbnRoT2Zmc2V0KGFjdGl2ZVllYXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlWWVhciA9IGFjdGl2ZVllYXI7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxUb0FjdGl2ZU1vbnRoKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAvLyBTbW9vdGggc2Nyb2xsIHRvIGFjdGl2ZVllYXIgYWZ0ZXIgc2Nyb2xsaW5nIGlzIGRvbmVcbiAgICAgICAgdG91Y2hzdGFydCRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0b3VjaGVuZCQpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICAgICAgICAgICAgICByYWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgeWVhcnNTY3JvbGxSZWYuZWxlbWVudFNjcm9sbGVkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lcihTQ1JPTExfREVCT1VOQ0VfVElNRSksXG4gICAgICAgICAgICAgICAgICAgICkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZShTQ1JPTExfREVCT1VOQ0VfVElNRSAqIDIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0b3VjaHN0YXJ0JCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zY3JvbGxUb0FjdGl2ZVllYXIoJ3Ntb290aCcpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRNb250aFNjcm9sbCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qge21vbnRoc1Njcm9sbFJlZn0gPSB0aGlzO1xuXG4gICAgICAgIGlmICghbW9udGhzU2Nyb2xsUmVmKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0b3VjaHN0YXJ0JCA9IHR1aVR5cGVkRnJvbUV2ZW50KFxuICAgICAgICAgICAgbW9udGhzU2Nyb2xsUmVmLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICd0b3VjaHN0YXJ0JyxcbiAgICAgICAgICAgIHtwYXNzaXZlOiB0cnVlfSxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgdG91Y2hlbmQkID0gdHVpVHlwZWRGcm9tRXZlbnQoXG4gICAgICAgICAgICBtb250aHNTY3JvbGxSZWYuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgJ3RvdWNoZW5kJyxcbiAgICAgICAgICAgIHtwYXNzaXZlOiB0cnVlfSxcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBTbW9vdGggc2Nyb2xsIHRvIHRoZSBjbG9zZXN0IG1vbnRoIGFmdGVyIHNjcm9sbGluZyBpcyBkb25lXG4gICAgICAgIHRvdWNoc3RhcnQkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdG91Y2hlbmQkKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgcmFjZShcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoc1Njcm9sbFJlZi5lbGVtZW50U2Nyb2xsZWQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVyKFNDUk9MTF9ERUJPVU5DRV9USU1FKSxcbiAgICAgICAgICAgICAgICAgICAgKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKFNDUk9MTF9ERUJPVU5DRV9USU1FICogMiksXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRvdWNoc3RhcnQkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNjcm9sbFRvQWN0aXZlTW9udGgoJ3Ntb290aCcpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNjcm9sbFRvQWN0aXZlWWVhcihiZWhhdmlvcjogU2Nyb2xsQmVoYXZpb3IgPSAnYXV0bycpOiB2b2lkIHtcbiAgICAgICAgdGhpcy55ZWFyc1Njcm9sbFJlZj8uc2Nyb2xsVG9JbmRleChcbiAgICAgICAgICAgIE1hdGgubWF4KHRoaXMuYWN0aXZlWWVhciAtIFNUQVJUSU5HX1lFQVIgLSAyLCAwKSxcbiAgICAgICAgICAgIHRoaXMuaXNFMkUgPyAnYXV0bycgOiBiZWhhdmlvcixcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNjcm9sbFRvQWN0aXZlTW9udGgoYmVoYXZpb3I6IFNjcm9sbEJlaGF2aW9yID0gJ2F1dG8nKTogdm9pZCB7XG4gICAgICAgIHRoaXMubW9udGhzU2Nyb2xsUmVmPy5zY3JvbGxUb0luZGV4KFxuICAgICAgICAgICAgdGhpcy5hY3RpdmVNb250aCxcbiAgICAgICAgICAgIHRoaXMuaXNFMkUgPyAnYXV0bycgOiBiZWhhdmlvcixcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzWWVhckFjdGl2ZShpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpbmRleCA9PT0gdGhpcy5hY3RpdmVZZWFyO1xuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGhUb1llYXIobW9udGg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBNYXRoLmNlaWwoKG1vbnRoICsgMSkgLyBNT05USFNfSU5fWUVBUikgKyBTVEFSVElOR19ZRUFSIC0gMTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE1vbnRoT2Zmc2V0KHllYXI6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiAoeWVhciAtIHRoaXMuYWN0aXZlWWVhcikgKiBNT05USFNfSU5fWUVBUjtcbiAgICB9XG59XG4iLCI8aGVhZGVyIGNsYXNzPVwidC1oZWFkZXJcIj5cbiAgICA8YnV0dG9uXG4gICAgICAgIGFwcGVhcmFuY2U9XCJcIlxuICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLW1vYmlsZS1jYWxlbmRhcl9fY2FuY2VsXCJcbiAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICB0dWlSaXBwbGVcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwidC1jbG9zZVwiXG4gICAgICAgIFtpY29uU3RhcnRdPVwiaWNvbnMuY2xvc2VcIlxuICAgICAgICBbc3R5bGUuYm9yZGVyLXJhZGl1cy4lXT1cIjEwMFwiXG4gICAgICAgIChjbGljayk9XCJvbkNsb3NlKClcIlxuICAgID5cbiAgICAgICAge3sgY2xvc2VXb3JkJCB8IGFzeW5jIH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgICB0dWlMaW5rXG4gICAgICAgIHR1aVRvdWNoYWJsZT1cIm9wYWNpdHlcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJ0LWxpbmsgdC1saW5rX2Nsb3NlXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiXG4gICAgPlxuICAgICAgICB7eyBjYW5jZWxXb3JkJCB8IGFzeW5jIH19XG4gICAgPC9idXR0b24+XG4gICAgPGgyXG4gICAgICAgICpuZ0lmPVwiY2hvb3NlRGF5T3JSYW5nZVRleHRzJCB8IGFzeW5jIGFzIHRleHRzXCJcbiAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1tb2JpbGUtY2FsZW5kYXJfX2xhYmVsXCJcbiAgICAgICAgY2xhc3M9XCJ0LWxhYmVsXCJcbiAgICA+XG4gICAgICAgIHt7IHNpbmdsZSA/IHRleHRzPy5bMF0gOiBtdWx0aSA/IHRleHRzPy5bMl0gOiB0ZXh0cz8uWzFdIH19XG4gICAgPC9oMj5cbiAgICA8YnV0dG9uXG4gICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktbW9iaWxlLWNhbGVuZGFyX19jb25maXJtXCJcbiAgICAgICAgdHVpTGlua1xuICAgICAgICB0dWlUb3VjaGFibGU9XCJvcGFjaXR5XCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwidC1saW5rXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ29uZmlybSgpXCJcbiAgICA+XG4gICAgICAgIHt7IGRvbmVXb3JkJCB8IGFzeW5jIH19XG4gICAgPC9idXR0b24+XG48L2hlYWRlcj5cbjxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcbiAgICAjeWVhcnNTY3JvbGxSZWZcbiAgICBvcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAgIGNsYXNzPVwidC15ZWFyc1wiXG4gICAgW2l0ZW1TaXplXT1cInllYXJXaWR0aFwiXG4+XG4gICAgPGRpdiBjbGFzcz1cInQteWVhcnMtd3JhcHBlclwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqY2RrVmlydHVhbEZvcj1cImxldCBpbmRleCBvZiB5ZWFyc1wiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwidC15ZWFyXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtc3RhdGVdPVwiZ2V0U3RhdGUoaW5kZXgpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZXRZZWFyKGluZGV4KVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7IGluZGV4IH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG48ZGl2IGNsYXNzPVwidC13ZWVrXCI+XG4gICAgPGRpdlxuICAgICAgICAqbmdGb3I9XCJsZXQgZGF5IG9mIHVub3JkZXJlZFdlZWtEYXlzJCB8IHR1aU9yZGVyV2Vla0RheXMgfCBhc3luY1wiXG4gICAgICAgIGNsYXNzPVwidC1kYXlcIlxuICAgID5cbiAgICAgICAge3sgZGF5IH19XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcbiAgICAjbW9udGhzU2Nyb2xsUmVmXG4gICAgY2xhc3M9XCJ0LW1vbnRoc1wiXG4gICAgKHNjcm9sbGVkSW5kZXhDaGFuZ2UpPVwib25Nb250aENoYW5nZSgkZXZlbnQpXCJcbj5cbiAgICA8c2VjdGlvblxuICAgICAgICAqY2RrVmlydHVhbEZvcj1cImxldCBtb250aCBvZiBtb250aHM7IHRlbXBsYXRlQ2FjaGVTaXplOiAxMFwiXG4gICAgICAgIGNsYXNzPVwidC1tb250aC13cmFwcGVyXCJcbiAgICA+XG4gICAgICAgIDxoMiBjbGFzcz1cInQtbW9udGhcIj57eyBtb250aCB8IHR1aU1vbnRoIHwgYXN5bmMgfX08L2gyPlxuICAgICAgICA8dHVpLW1vYmlsZS1jYWxlbmRhci1zaGVldFxuICAgICAgICAgICAgY2xhc3M9XCJ0LWNhbGVuZGFyXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZEl0ZW1IYW5kbGVyXT1cImRpc2FibGVkSXRlbUhhbmRsZXIgfCB0dWlNYXBwZXI6IGRpc2FibGVkSXRlbUhhbmRsZXJNYXBwZXIgOiBtaW4gOiBtYXhcIlxuICAgICAgICAgICAgW21vbnRoXT1cIm1vbnRoXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAgICAgICAoZGF5Q2xpY2spPVwib25EYXlDbGljaygkZXZlbnQpXCJcbiAgICAgICAgLz5cbiAgICA8L3NlY3Rpb24+XG48L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbiJdfQ==
|
|
287
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9iaWxlLWNhbGVuZGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLW1vYmlsZS9jb21wb25lbnRzL21vYmlsZS1jYWxlbmRhci9tb2JpbGUtY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRkb24tbW9iaWxlL2NvbXBvbmVudHMvbW9iaWxlLWNhbGVuZGFyL21vYmlsZS1jYWxlbmRhci50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx5QkFBeUIsRUFDekIsZUFBZSxFQUNmLHdCQUF3QixHQUMzQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUVuRSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0seURBQXlELENBQUM7QUFDL0YsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQ0gsY0FBYyxFQUNkLGFBQWEsRUFDYixZQUFZLEVBQ1osTUFBTSxFQUNOLFdBQVcsRUFDWCxRQUFRLEdBQ1gsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsV0FBVyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDekUs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d0JBQ3RCLFlBQVk7d0JBQ1osT0FBTzt3QkFDUCxJQUFJO3dCQUNKLGFBQWE7cUJBQ2hCLG1CQUdnQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLDZCQUE2QixRQUNsQzt3QkFDRixjQUFjLEVBQUUsT0FBTzt3QkFDdkIsc0JBQXNCLEVBQUUsYUFBYTtxQkFDeEM7MEVBSWdCLGNBQWM7c0JBRDlCLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUlWLGVBQWU7c0JBRC9CLFNBQVM7dUJBQUMsaUJBQWlCO2dCQWdDckIsTUFBTTtzQkFEWixLQUFLO2dCQUlDLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxHQUFHO3NCQURULEtBQUs7Z0JBSUMsR0FBRztzQkFEVCxLQUFLO2dCQUlDLG1CQUFtQjtzQkFEekIsS0FBSztnQkFJVSxNQUFNO3NCQURyQixNQUFNO2dCQUlTLE9BQU87c0JBRHRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENka0ZpeGVkU2l6ZVZpcnR1YWxTY3JvbGwsXG4gICAgQ2RrVmlydHVhbEZvck9mLFxuICAgIENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQge0FzeW5jUGlwZSwgRE9DVU1FTlQsIE5nRm9yT2YsIE5nSWZ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgdHlwZSB7QWZ0ZXJWaWV3SW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBEZXN0cm95UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7VHVpTW9iaWxlQ2FsZW5kYXJTaGVldH0gZnJvbSAnQHRhaWdhLXVpL2FkZG9uLW1vYmlsZS9jb21wb25lbnRzL21vYmlsZS1jYWxlbmRhci1zaGVldCc7XG5pbXBvcnQge1R1aVJpcHBsZSwgVHVpVG91Y2hhYmxlfSBmcm9tICdAdGFpZ2EtdWkvYWRkb24tbW9iaWxlL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHtUVUlfRkFMU0VfSEFORExFUn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgICBNT05USFNfSU5fWUVBUixcbiAgICBUVUlfRklSU1RfREFZLFxuICAgIFRVSV9MQVNUX0RBWSxcbiAgICBUdWlEYXksXG4gICAgVHVpRGF5UmFuZ2UsXG4gICAgVHVpTW9udGgsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsvZGF0ZS10aW1lJztcbmltcG9ydCB7dHVpVHlwZWRGcm9tRXZlbnQsIHR1aVpvbmVmcmVlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL29ic2VydmFibGVzJztcbmltcG9ydCB7VHVpTWFwcGVyUGlwZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9waXBlcy9tYXBwZXInO1xuaW1wb3J0IHtUVUlfSVNfRTJFLCBUVUlfSVNfSU9TfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3Rva2Vucyc7XG5pbXBvcnQgdHlwZSB7VHVpQm9vbGVhbkhhbmRsZXIsIFR1aU1hcHBlcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay90eXBlcyc7XG5pbXBvcnQge1R1aUJ1dHRvbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHtUdWlMaW5rfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL2xpbmsnO1xuaW1wb3J0IHtUdWlNb250aFBpcGV9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3BpcGVzL21vbnRoJztcbmltcG9ydCB7VHVpT3JkZXJXZWVrRGF5c1BpcGV9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3BpcGVzL29yZGVyLXdlZWstZGF5cyc7XG5pbXBvcnQge1xuICAgIFRVSV9BTklNQVRJT05TX1NQRUVELFxuICAgIFRVSV9DTE9TRV9XT1JELFxuICAgIFRVSV9DT01NT05fSUNPTlMsXG4gICAgVFVJX1NIT1JUX1dFRUtfREFZUyxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdG9rZW5zJztcbmltcG9ydCB7dHVpR2V0RHVyYXRpb259IGZyb20gJ0B0YWlnYS11aS9jb3JlL3V0aWxzL21pc2NlbGxhbmVvdXMnO1xuaW1wb3J0IHtcbiAgICBUVUlfQ0FOQ0VMX1dPUkQsXG4gICAgVFVJX0NIT09TRV9EQVlfT1JfUkFOR0VfVEVYVFMsXG4gICAgVFVJX0RPTkVfV09SRCxcbn0gZnJvbSAnQHRhaWdhLXVpL2tpdC90b2tlbnMnO1xuaW1wb3J0IHt0dWlUb2dnbGVEYXl9IGZyb20gJ0B0YWlnYS11aS9raXQvdXRpbHMnO1xuaW1wb3J0IHR5cGUge01vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICAgIGRlYm91bmNlVGltZSxcbiAgICBkZWxheSxcbiAgICBmaWx0ZXIsXG4gICAgaWRlbnRpdHksXG4gICAgbWFwLFxuICAgIG1lcmdlTWFwLFxuICAgIHJhY2UsXG4gICAgc3dpdGNoTWFwLFxuICAgIHRha2UsXG4gICAgdGFrZVVudGlsLFxuICAgIHRpbWVyLFxuICAgIHdpbmRvd1RvZ2dsZSxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gICAgUkFOR0UsXG4gICAgU0NST0xMX0RFQk9VTkNFX1RJTUUsXG4gICAgU1RBUlRJTkdfWUVBUixcbiAgICBZRUFSU19JTl9ST1csXG59IGZyb20gJy4vbW9iaWxlLWNhbGVuZGFyLmNvbnN0JztcbmltcG9ydCB7XG4gICAgVFVJX01PQklMRV9DQUxFTkRBUl9QUk9WSURFUlMsXG4gICAgVFVJX1ZBTFVFX1NUUkVBTSxcbn0gZnJvbSAnLi9tb2JpbGUtY2FsZW5kYXIucHJvdmlkZXJzJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3R1aS1tb2JpbGUtY2FsZW5kYXInLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgVHVpQnV0dG9uLFxuICAgICAgICBBc3luY1BpcGUsXG4gICAgICAgIFR1aVJpcHBsZSxcbiAgICAgICAgVHVpTGluayxcbiAgICAgICAgVHVpVG91Y2hhYmxlLFxuICAgICAgICBDZGtGaXhlZFNpemVWaXJ0dWFsU2Nyb2xsLFxuICAgICAgICBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsXG4gICAgICAgIENka1ZpcnR1YWxGb3JPZixcbiAgICAgICAgVHVpT3JkZXJXZWVrRGF5c1BpcGUsXG4gICAgICAgIFR1aU1vYmlsZUNhbGVuZGFyU2hlZXQsXG4gICAgICAgIFR1aU1vbnRoUGlwZSxcbiAgICAgICAgTmdGb3JPZixcbiAgICAgICAgTmdJZixcbiAgICAgICAgVHVpTWFwcGVyUGlwZSxcbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9tb2JpbGUtY2FsZW5kYXIudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbW9iaWxlLWNhbGVuZGFyLnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFRVSV9NT0JJTEVfQ0FMRU5EQVJfUFJPVklERVJTLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tjbGFzcy5faW9zXSc6ICdpc0lPUycsXG4gICAgICAgICdbY2xhc3MuX2luaXRpYWxpemVkXSc6ICdpbml0aWFsaXplZCcsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpTW9iaWxlQ2FsZW5kYXIgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICBAVmlld0NoaWxkKCd5ZWFyc1Njcm9sbFJlZicpXG4gICAgcHJpdmF0ZSByZWFkb25seSB5ZWFyc1Njcm9sbFJlZj86IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydDtcblxuICAgIEBWaWV3Q2hpbGQoJ21vbnRoc1Njcm9sbFJlZicpXG4gICAgcHJpdmF0ZSByZWFkb25seSBtb250aHNTY3JvbGxSZWY/OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHRvZGF5ID0gVHVpRGF5LmN1cnJlbnRMb2NhbCgpO1xuICAgIHByaXZhdGUgYWN0aXZlWWVhciA9IDA7XG4gICAgcHJpdmF0ZSBhY3RpdmVNb250aCA9IDA7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNwZWVkID0gaW5qZWN0KFRVSV9BTklNQVRJT05TX1NQRUVEKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gICAgcHJvdGVjdGVkIGluaXRpYWxpemVkID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIHZhbHVlOiBUdWlEYXkgfCBUdWlEYXlSYW5nZSB8IHJlYWRvbmx5IFR1aURheVtdIHwgbnVsbCA9IG51bGw7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzSU9TID0gaW5qZWN0KFRVSV9JU19JT1MpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpc0UyRSA9IGluamVjdChUVUlfSVNfRTJFKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaWNvbnMgPSBpbmplY3QoVFVJX0NPTU1PTl9JQ09OUyk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNsb3NlV29yZCQgPSBpbmplY3QoVFVJX0NMT1NFX1dPUkQpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjYW5jZWxXb3JkJCA9IGluamVjdChUVUlfQ0FOQ0VMX1dPUkQpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBkb25lV29yZCQgPSBpbmplY3QoVFVJX0RPTkVfV09SRCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHVub3JkZXJlZFdlZWtEYXlzJCA9IGluamVjdChUVUlfU0hPUlRfV0VFS19EQVlTKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2hvb3NlRGF5T3JSYW5nZVRleHRzJCA9IGluamVjdChUVUlfQ0hPT1NFX0RBWV9PUl9SQU5HRV9URVhUUyk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHllYXJzID0gQXJyYXkuZnJvbSh7bGVuZ3RoOiBSQU5HRX0sIChfLCBpKSA9PiBpICsgU1RBUlRJTkdfWUVBUik7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG1vbnRocyA9IEFycmF5LmZyb20oXG4gICAgICAgIHtsZW5ndGg6IFJBTkdFICogMTJ9LFxuICAgICAgICAoXywgaSkgPT5cbiAgICAgICAgICAgIG5ldyBUdWlNb250aChcbiAgICAgICAgICAgICAgICBNYXRoLmZsb29yKGkgLyBNT05USFNfSU5fWUVBUikgKyBTVEFSVElOR19ZRUFSLFxuICAgICAgICAgICAgICAgIGkgJSBNT05USFNfSU5fWUVBUixcbiAgICAgICAgICAgICksXG4gICAgKTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNpbmdsZSA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtdWx0aSA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWluID0gVFVJX0ZJUlNUX0RBWTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1heCA9IFRVSV9MQVNUX0RBWTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc2FibGVkSXRlbUhhbmRsZXI6IFR1aUJvb2xlYW5IYW5kbGVyPFR1aURheT4gPSBUVUlfRkFMU0VfSEFORExFUjtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSBjYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29uZmlybSA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgICAgIFR1aURheSB8IFR1aURheVJhbmdlIHwgcmVhZG9ubHkgVHVpRGF5W11cbiAgICA+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgaW5qZWN0KFRVSV9WQUxVRV9TVFJFQU0pXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmVZZWFyID0gdGhpcy5pbml0aWFsWWVhcjtcbiAgICAgICAgdGhpcy5hY3RpdmVNb250aCA9IHRoaXMuaW5pdGlhbE1vbnRoO1xuXG4gICAgICAgIC8vIFZpcnR1YWwgc2Nyb2xsIGhhcyBub3QgeWV0IHJlbmRlcmVkIGl0ZW1zIGV2ZW4gaW4gbmdBZnRlclZpZXdJbml0XG4gICAgICAgIHRoaXMud2FpdFNjcm9sbGVkQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFllYXIoeWVhcjogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZVllYXIgPT09IHllYXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWN0aXZlTW9udGggKz0gdGhpcy5nZXRNb250aE9mZnNldCh5ZWFyKTtcbiAgICAgICAgdGhpcy5hY3RpdmVZZWFyID0geWVhcjtcbiAgICAgICAgdGhpcy5zY3JvbGxUb0FjdGl2ZVllYXIoJ3Ntb290aCcpO1xuXG4gICAgICAgIHRpbWVyKDApXG4gICAgICAgICAgICAucGlwZSh0dWlab25lZnJlZSh0aGlzLm5nWm9uZSksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNjcm9sbFRvQWN0aXZlTW9udGgoKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCB5ZWFyV2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZG9jLmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCAvIFlFQVJTX0lOX1JPVztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25DbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYW5jZWwuZW1pdCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkNvbmZpcm0oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpcm0uZW1pdCh0aGlzLnZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2FuY2VsLmVtaXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkRheUNsaWNrKGRheTogVHVpRGF5KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNpbmdsZSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IGRheTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzTXVsdGlWYWx1ZSh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHR1aVRvZ2dsZURheSh0aGlzLnZhbHVlLCBkYXkpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNTaW5nbGVWYWx1ZSh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG5ldyBUdWlEYXlSYW5nZShkYXksIGRheSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy52YWx1ZSBpbnN0YW5jZW9mIFR1aURheVJhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gVHVpRGF5UmFuZ2Uuc29ydCh0aGlzLnZhbHVlLmZyb20sIGRheSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBuZXcgVHVpRGF5UmFuZ2UoZGF5LCBkYXkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldFN0YXRlKGluZGV4OiBudW1iZXIpOiAnYWN0aXZlJyB8ICdhZGphY2VudCcgfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMuaXNZZWFyQWN0aXZlKGluZGV4KSkge1xuICAgICAgICAgICAgcmV0dXJuICdhY3RpdmUnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNZZWFyQWN0aXZlKGluZGV4IC0gMSkgfHwgdGhpcy5pc1llYXJBY3RpdmUoaW5kZXggKyAxKSkge1xuICAgICAgICAgICAgcmV0dXJuICdhZGphY2VudCc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Nb250aENoYW5nZShtb250aDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIC8vIFNraXBwaW5nIGluaXRpYWwgY2FsbGJhY2sgd2hlcmUgaW5kZXggPT09IDBcbiAgICAgICAgaWYgKCFtb250aCB8fCB0aGlzLmFjdGl2ZU1vbnRoID09PSBtb250aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hY3RpdmVNb250aCA9IG1vbnRoO1xuXG4gICAgICAgIGNvbnN0IGFjdGl2ZVllYXIgPSB0aGlzLm1vbnRoVG9ZZWFyKG1vbnRoKTtcblxuICAgICAgICBpZiAoYWN0aXZlWWVhciA9PT0gdGhpcy5hY3RpdmVZZWFyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFjdGl2ZVllYXIgPSBhY3RpdmVZZWFyO1xuICAgICAgICB0aGlzLnNjcm9sbFRvQWN0aXZlWWVhcigpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCByZWFkb25seSBkaXNhYmxlZEl0ZW1IYW5kbGVyTWFwcGVyOiBUdWlNYXBwZXI8XG4gICAgICAgIFtUdWlCb29sZWFuSGFuZGxlcjxUdWlEYXk+LCBUdWlEYXksIFR1aURheV0sXG4gICAgICAgIFR1aUJvb2xlYW5IYW5kbGVyPFR1aURheT5cbiAgICA+ID0gKGRpc2FibGVkSXRlbUhhbmRsZXIsIG1pbiwgbWF4KSA9PiAoaXRlbSkgPT5cbiAgICAgICAgaXRlbS5kYXlCZWZvcmUobWluKSB8fFxuICAgICAgICAobWF4ICE9PSBudWxsICYmIGl0ZW0uZGF5QWZ0ZXIobWF4KSkgfHxcbiAgICAgICAgZGlzYWJsZWRJdGVtSGFuZGxlcihpdGVtKTtcblxuICAgIHByaXZhdGUgZ2V0IGluaXRpYWxZZWFyKCk6IG51bWJlciB7XG4gICAgICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9kYXkueWVhcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnZhbHVlIGluc3RhbmNlb2YgVHVpRGF5KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS55ZWFyO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCEodGhpcy52YWx1ZSBpbnN0YW5jZW9mIFR1aURheVJhbmdlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU/LlswXT8ueWVhciA/PyB0aGlzLnRvZGF5LnllYXI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS50by55ZWFyO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGluaXRpYWxNb250aCgpOiBudW1iZXIge1xuICAgICAgICBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRvZGF5Lm1vbnRoICsgKHRoaXMudG9kYXkueWVhciAtIFNUQVJUSU5HX1lFQVIpICogTU9OVEhTX0lOX1lFQVI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy52YWx1ZSBpbnN0YW5jZW9mIFR1aURheSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUubW9udGggKyAodGhpcy52YWx1ZS55ZWFyIC0gU1RBUlRJTkdfWUVBUikgKiBNT05USFNfSU5fWUVBUjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghKHRoaXMudmFsdWUgaW5zdGFuY2VvZiBUdWlEYXlSYW5nZSkpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgKHRoaXMudmFsdWU/LlswXT8ubW9udGggPz8gdGhpcy50b2RheS5tb250aCkgK1xuICAgICAgICAgICAgICAgICgodGhpcy52YWx1ZT8uWzBdPy55ZWFyID8/IHRoaXMudG9kYXkueWVhcikgLSBTVEFSVElOR19ZRUFSKSAqXG4gICAgICAgICAgICAgICAgICAgIE1PTlRIU19JTl9ZRUFSXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMudmFsdWUudG8ubW9udGggKyAodGhpcy52YWx1ZS50by55ZWFyIC0gU1RBUlRJTkdfWUVBUikgKiBNT05USFNfSU5fWUVBUlxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNNdWx0aVZhbHVlKGRheTogYW55KTogZGF5IGlzIHJlYWRvbmx5IFR1aURheVtdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuICEoZGF5IGluc3RhbmNlb2YgVHVpRGF5KSAmJiAhKGRheSBpbnN0YW5jZW9mIFR1aURheVJhbmdlKSAmJiB0aGlzLm11bHRpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNTaW5nbGVWYWx1ZShkYXk6IGFueSk6IGRheSBpcyBUdWlEYXkge1xuICAgICAgICByZXR1cm4gZGF5IGluc3RhbmNlb2YgVHVpRGF5IHx8IChkYXkgaW5zdGFuY2VvZiBUdWlEYXlSYW5nZSAmJiAhZGF5LmlzU2luZ2xlRGF5KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFllYXJzVmlld3BvcnRTaXplKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnllYXJzU2Nyb2xsUmVmPy5nZXRWaWV3cG9ydFNpemUoKSB8fCAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlVmlld3BvcnREaW1lbnNpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMueWVhcnNTY3JvbGxSZWY/LmNoZWNrVmlld3BvcnRTaXplKCk7XG4gICAgICAgIHRoaXMubW9udGhzU2Nyb2xsUmVmPy5jaGVja1ZpZXdwb3J0U2l6ZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbGF0ZUluaXQoKTogTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRZZWFyc1ZpZXdwb3J0U2l6ZSgpID4gMCA/IGlkZW50aXR5IDogZGVsYXkoMjAwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHdhaXRTY3JvbGxlZENoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVWaWV3cG9ydERpbWVuc2lvbigpO1xuXG4gICAgICAgIHRoaXMubW9udGhzU2Nyb2xsUmVmPy5zY3JvbGxlZEluZGV4Q2hhbmdlXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBkZWxheSh0dWlHZXREdXJhdGlvbih0aGlzLnNwZWVkKSksXG4gICAgICAgICAgICAgICAgdGhpcy5sYXRlSW5pdCgpLFxuICAgICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZpZXdwb3J0RGltZW5zaW9uKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0WWVhclNjcm9sbCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdE1vbnRoU2Nyb2xsKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxUb0FjdGl2ZVllYXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFRvQWN0aXZlTW9udGgoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFllYXJTY3JvbGwoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHt5ZWFyc1Njcm9sbFJlZn0gPSB0aGlzO1xuXG4gICAgICAgIGlmICgheWVhcnNTY3JvbGxSZWYpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRvdWNoc3RhcnQkID0gdHVpVHlwZWRGcm9tRXZlbnQoXG4gICAgICAgICAgICB5ZWFyc1Njcm9sbFJlZi5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAndG91Y2hzdGFydCcsXG4gICAgICAgICAgICB7cGFzc2l2ZTogdHJ1ZX0sXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHRvdWNoZW5kJCA9IHR1aVR5cGVkRnJvbUV2ZW50KFxuICAgICAgICAgICAgeWVhcnNTY3JvbGxSZWYuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgJ3RvdWNoZW5kJyxcbiAgICAgICAgICAgIHtwYXNzaXZlOiB0cnVlfSxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgY2xpY2skID0gdHVpVHlwZWRGcm9tRXZlbnQoXG4gICAgICAgICAgICB5ZWFyc1Njcm9sbFJlZi5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAnY2xpY2snLFxuICAgICAgICApO1xuXG4gICAgICAgIC8vIFJlZnJlc2ggYWN0aXZlWWVhclxuICAgICAgICB5ZWFyc1Njcm9sbFJlZlxuICAgICAgICAgICAgLmVsZW1lbnRTY3JvbGxlZCgpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAvLyBJZ25vcmUgc21vb3RoIHNjcm9sbCByZXN1bHRpbmcgZnJvbSBjbGljayBvbiB0aGUgZXhhY3QgeWVhclxuICAgICAgICAgICAgICAgIHdpbmRvd1RvZ2dsZSh0b3VjaHN0YXJ0JCwgKCkgPT4gY2xpY2skKSxcbiAgICAgICAgICAgICAgICBtZXJnZU1hcCgoeCkgPT4geCksXG4gICAgICAgICAgICAgICAgLy8gRGVsYXkgaXMgcmVxdWlyZWQgdG8gcnVuIG1vbnRocyBzY3JvbGwgaW4gdGhlIG5leHQgZnJhbWUgdG8gcHJldmVudCBmbGlja2VyXG4gICAgICAgICAgICAgICAgZGVsYXkoMCksXG4gICAgICAgICAgICAgICAgbWFwKFxuICAgICAgICAgICAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5yb3VuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZWFyc1Njcm9sbFJlZi5tZWFzdXJlU2Nyb2xsT2Zmc2V0KCkgLyB0aGlzLnllYXJXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5mbG9vcihZRUFSU19JTl9ST1cgLyAyKSArXG4gICAgICAgICAgICAgICAgICAgICAgICBTVEFSVElOR19ZRUFSLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZmlsdGVyKChhY3RpdmVZZWFyKSA9PiBhY3RpdmVZZWFyICE9PSB0aGlzLmFjdGl2ZVllYXIpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoYWN0aXZlWWVhcikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlTW9udGggKz0gdGhpcy5nZXRNb250aE9mZnNldChhY3RpdmVZZWFyKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVllYXIgPSBhY3RpdmVZZWFyO1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9BY3RpdmVNb250aCgpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU21vb3RoIHNjcm9sbCB0byBhY3RpdmVZZWFyIGFmdGVyIHNjcm9sbGluZyBpcyBkb25lXG4gICAgICAgIHRvdWNoc3RhcnQkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdG91Y2hlbmQkKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgcmFjZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHllYXJzU2Nyb2xsUmVmLmVsZW1lbnRTY3JvbGxlZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZXIoU0NST0xMX0RFQk9VTkNFX1RJTUUpLFxuICAgICAgICAgICAgICAgICAgICApLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoU0NST0xMX0RFQk9VTkNFX1RJTUUgKiAyKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodG91Y2hzdGFydCQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuc2Nyb2xsVG9BY3RpdmVZZWFyKCdzbW9vdGgnKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0TW9udGhTY3JvbGwoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHttb250aHNTY3JvbGxSZWZ9ID0gdGhpcztcblxuICAgICAgICBpZiAoIW1vbnRoc1Njcm9sbFJlZikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdG91Y2hzdGFydCQgPSB0dWlUeXBlZEZyb21FdmVudChcbiAgICAgICAgICAgIG1vbnRoc1Njcm9sbFJlZi5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAndG91Y2hzdGFydCcsXG4gICAgICAgICAgICB7cGFzc2l2ZTogdHJ1ZX0sXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHRvdWNoZW5kJCA9IHR1aVR5cGVkRnJvbUV2ZW50KFxuICAgICAgICAgICAgbW9udGhzU2Nyb2xsUmVmLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICd0b3VjaGVuZCcsXG4gICAgICAgICAgICB7cGFzc2l2ZTogdHJ1ZX0sXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gU21vb3RoIHNjcm9sbCB0byB0aGUgY2xvc2VzdCBtb250aCBhZnRlciBzY3JvbGxpbmcgaXMgZG9uZVxuICAgICAgICB0b3VjaHN0YXJ0JFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRvdWNoZW5kJCksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgICAgICAgICAgIHJhY2UoXG4gICAgICAgICAgICAgICAgICAgICAgICBtb250aHNTY3JvbGxSZWYuZWxlbWVudFNjcm9sbGVkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lcihTQ1JPTExfREVCT1VOQ0VfVElNRSksXG4gICAgICAgICAgICAgICAgICAgICkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZShTQ1JPTExfREVCT1VOQ0VfVElNRSAqIDIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0b3VjaHN0YXJ0JCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zY3JvbGxUb0FjdGl2ZU1vbnRoKCdzbW9vdGgnKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzY3JvbGxUb0FjdGl2ZVllYXIoYmVoYXZpb3I6IFNjcm9sbEJlaGF2aW9yID0gJ2F1dG8nKTogdm9pZCB7XG4gICAgICAgIHRoaXMueWVhcnNTY3JvbGxSZWY/LnNjcm9sbFRvSW5kZXgoXG4gICAgICAgICAgICBNYXRoLm1heCh0aGlzLmFjdGl2ZVllYXIgLSBTVEFSVElOR19ZRUFSIC0gMiwgMCksXG4gICAgICAgICAgICB0aGlzLmlzRTJFID8gJ2F1dG8nIDogYmVoYXZpb3IsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzY3JvbGxUb0FjdGl2ZU1vbnRoKGJlaGF2aW9yOiBTY3JvbGxCZWhhdmlvciA9ICdhdXRvJyk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vbnRoc1Njcm9sbFJlZj8uc2Nyb2xsVG9JbmRleChcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlTW9udGgsXG4gICAgICAgICAgICB0aGlzLmlzRTJFID8gJ2F1dG8nIDogYmVoYXZpb3IsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1llYXJBY3RpdmUoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaW5kZXggPT09IHRoaXMuYWN0aXZlWWVhcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRoVG9ZZWFyKG1vbnRoOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gTWF0aC5jZWlsKChtb250aCArIDEpIC8gTU9OVEhTX0lOX1lFQVIpICsgU1RBUlRJTkdfWUVBUiAtIDE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRNb250aE9mZnNldCh5ZWFyOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gKHllYXIgLSB0aGlzLmFjdGl2ZVllYXIpICogTU9OVEhTX0lOX1lFQVI7XG4gICAgfVxufVxuIiwiPGhlYWRlciBjbGFzcz1cInQtaGVhZGVyXCI+XG4gICAgPGJ1dHRvblxuICAgICAgICBhcHBlYXJhbmNlPVwiXCJcbiAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1tb2JpbGUtY2FsZW5kYXJfX2NhbmNlbFwiXG4gICAgICAgIHR1aUljb25CdXR0b25cbiAgICAgICAgdHVpUmlwcGxlXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cInQtY2xvc2VcIlxuICAgICAgICBbaWNvblN0YXJ0XT1cImljb25zLmNsb3NlXCJcbiAgICAgICAgW3N0eWxlLmJvcmRlci1yYWRpdXMuJV09XCIxMDBcIlxuICAgICAgICAoY2xpY2spPVwib25DbG9zZSgpXCJcbiAgICA+XG4gICAgICAgIHt7IGNsb3NlV29yZCQgfCBhc3luYyB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgICAgdHVpTGlua1xuICAgICAgICB0dWlUb3VjaGFibGU9XCJvcGFjaXR5XCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwidC1saW5rIHQtbGlua19jbG9zZVwiXG4gICAgICAgIChjbGljayk9XCJvbkNsb3NlKClcIlxuICAgID5cbiAgICAgICAge3sgY2FuY2VsV29yZCQgfCBhc3luYyB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxoMlxuICAgICAgICAqbmdJZj1cImNob29zZURheU9yUmFuZ2VUZXh0cyQgfCBhc3luYyBhcyB0ZXh0c1wiXG4gICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktbW9iaWxlLWNhbGVuZGFyX19sYWJlbFwiXG4gICAgICAgIGNsYXNzPVwidC1sYWJlbFwiXG4gICAgPlxuICAgICAgICB7eyBzaW5nbGUgPyB0ZXh0cz8uWzBdIDogbXVsdGkgPyB0ZXh0cz8uWzJdIDogdGV4dHM/LlsxXSB9fVxuICAgIDwvaDI+XG4gICAgPGJ1dHRvblxuICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLW1vYmlsZS1jYWxlbmRhcl9fY29uZmlybVwiXG4gICAgICAgIHR1aUxpbmtcbiAgICAgICAgdHVpVG91Y2hhYmxlPVwib3BhY2l0eVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cInQtbGlua1wiXG4gICAgICAgIChjbGljayk9XCJvbkNvbmZpcm0oKVwiXG4gICAgPlxuICAgICAgICB7eyBkb25lV29yZCQgfCBhc3luYyB9fVxuICAgIDwvYnV0dG9uPlxuPC9oZWFkZXI+XG48Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICAgI3llYXJzU2Nyb2xsUmVmXG4gICAgb3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcbiAgICBjbGFzcz1cInQteWVhcnNcIlxuICAgIFtpdGVtU2l6ZV09XCJ5ZWFyV2lkdGhcIlxuPlxuICAgIDxkaXYgY2xhc3M9XCJ0LXllYXJzLXdyYXBwZXJcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgaW5kZXggb2YgeWVhcnNcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cInQteWVhclwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXN0YXRlXT1cImdldFN0YXRlKGluZGV4KVwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2V0WWVhcihpbmRleClcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyBpbmRleCB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuPGRpdiBjbGFzcz1cInQtd2Vla1wiPlxuICAgIDxkaXZcbiAgICAgICAgKm5nRm9yPVwibGV0IGRheSBvZiB1bm9yZGVyZWRXZWVrRGF5cyQgfCB0dWlPcmRlcldlZWtEYXlzIHwgYXN5bmNcIlxuICAgICAgICBjbGFzcz1cInQtZGF5XCJcbiAgICA+XG4gICAgICAgIHt7IGRheSB9fVxuICAgIDwvZGl2PlxuPC9kaXY+XG48Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICAgI21vbnRoc1Njcm9sbFJlZlxuICAgIGNsYXNzPVwidC1tb250aHNcIlxuICAgIChzY3JvbGxlZEluZGV4Q2hhbmdlKT1cIm9uTW9udGhDaGFuZ2UoJGV2ZW50KVwiXG4+XG4gICAgPHNlY3Rpb25cbiAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgbW9udGggb2YgbW9udGhzOyB0ZW1wbGF0ZUNhY2hlU2l6ZTogMTBcIlxuICAgICAgICBjbGFzcz1cInQtbW9udGgtd3JhcHBlclwiXG4gICAgPlxuICAgICAgICA8aDIgY2xhc3M9XCJ0LW1vbnRoXCI+e3sgbW9udGggfCB0dWlNb250aCB8IGFzeW5jIH19PC9oMj5cbiAgICAgICAgPHR1aS1tb2JpbGUtY2FsZW5kYXItc2hlZXRcbiAgICAgICAgICAgIGNsYXNzPVwidC1jYWxlbmRhclwiXG4gICAgICAgICAgICBbZGlzYWJsZWRJdGVtSGFuZGxlcl09XCJkaXNhYmxlZEl0ZW1IYW5kbGVyIHwgdHVpTWFwcGVyOiBkaXNhYmxlZEl0ZW1IYW5kbGVyTWFwcGVyIDogbWluIDogbWF4XCJcbiAgICAgICAgICAgIFttb250aF09XCJtb250aFwiXG4gICAgICAgICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgICAgICAgKGRheUNsaWNrKT1cIm9uRGF5Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgIC8+XG4gICAgPC9zZWN0aW9uPlxuPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { WaResizeObserver } from '@ng-web-apis/resize-observer';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
class TuiSwipeActions {
|
|
5
5
|
constructor() {
|
|
@@ -9,13 +9,13 @@ class TuiSwipeActions {
|
|
|
9
9
|
this.actionsWidth = target.clientWidth;
|
|
10
10
|
}
|
|
11
11
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiSwipeActions, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiSwipeActions, isStandalone: true, selector: "tui-swipe-actions", host: { properties: { "style.--t-actions-width": "actionsWidth" } }, ngImport: i0, template: "<div class=\"t-content\">\n <ng-content />\n</div>\n\n<div\n class=\"t-actions\"\n (waResizeObserver)=\"onResize($event[0])\"\n>\n <ng-content select=\"[tuiSwipeAction]\" />\n</div>\n", styles: [":host{scrollbar-width:none;-ms-overflow-style:none;--tui-action-gap: 24;--tui-actions-padding: .5rem;--tui-item-size: 44;display:flex;width:-webkit-fill-available;width:-moz-available;width:stretch;align-items:center;overflow-x:scroll;overflow-y:hidden;scroll-snap-type:x mandatory;perspective:1px;perspective-origin:calc(100% + calc(1px * var(--tui-item-size) / 2) + var(--tui-actions-padding))}:host::-webkit-scrollbar,:host::-webkit-scrollbar-thumb{display:none}.t-content{scroll-snap-align:start;flex-shrink:0;width:100%}.t-actions{display:flex;gap:calc(1px * var(--tui-action-gap));padding:0 1rem 0 var(--tui-actions-padding);scroll-snap-align:start;align-items:center;transform-style:preserve-3d}.t-actions:empty{display:none}::ng-deep .t-actions>*:nth-child(2){--t-distance: calc(var(--tui-item-size) + var(--tui-action-gap)) * 1 ;--t-factor: calc((var(--t-actions-width) - var(--t-distance)) / var(--t-actions-width));--t-scale: calc(1 / var(--t-factor));--t-translate: calc(1px * (1 - 1 / var(--t-factor)));transform:translate3d(calc(calc((-100% - calc(1px * var(--tui-action-gap))) * (2 - 1)) / var(--t-scale)),0,var(--t-translate));scale:var(--t-scale)}::ng-deep .t-actions>*:nth-child(3){--t-distance: calc(var(--tui-item-size) + var(--tui-action-gap)) * 2 ;--t-factor: calc((var(--t-actions-width) - var(--t-distance)) / var(--t-actions-width));--t-scale: calc(1 / var(--t-factor));--t-translate: calc(1px * (1 - 1 / var(--t-factor)));transform:translate3d(calc(calc((-100% - calc(1px * var(--tui-action-gap))) * (3 - 1)) / var(--t-scale)),0,var(--t-translate));scale:var(--t-scale)}::ng-deep .t-actions>*:nth-child(4){--t-distance: calc(var(--tui-item-size) + var(--tui-action-gap)) * 3 ;--t-factor: calc((var(--t-actions-width) - var(--t-distance)) / var(--t-actions-width));--t-scale: calc(1 / var(--t-factor));--t-translate: calc(1px * (1 - 1 / var(--t-factor)));transform:translate3d(calc(calc((-100% - calc(1px * var(--tui-action-gap))) * (4 - 1)) / var(--t-scale)),0,var(--t-translate));scale:var(--t-scale)}::ng-deep .t-actions>*:nth-child(5){--t-distance: calc(var(--tui-item-size) + var(--tui-action-gap)) * 4 ;--t-factor: calc((var(--t-actions-width) - var(--t-distance)) / var(--t-actions-width));--t-scale: calc(1 / var(--t-factor));--t-translate: calc(1px * (1 - 1 / var(--t-factor)));transform:translate3d(calc(calc((-100% - calc(1px * var(--tui-action-gap))) * (5 - 1)) / var(--t-scale)),0,var(--t-translate));scale:var(--t-scale)}::ng-deep .t-actions>*:nth-child(6){--t-distance: calc(var(--tui-item-size) + var(--tui-action-gap)) * 5 ;--t-factor: calc((var(--t-actions-width) - var(--t-distance)) / var(--t-actions-width));--t-scale: calc(1 / var(--t-factor));--t-translate: calc(1px * (1 - 1 / var(--t-factor)));transform:translate3d(calc(calc((-100% - calc(1px * var(--tui-action-gap))) * (6 - 1)) / var(--t-scale)),0,var(--t-translate));scale:var(--t-scale)}@media (hover: hover) and (pointer: fine){.t-actions{display:none}}\n"], dependencies: [{ kind: "directive", type:
|
|
12
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiSwipeActions, isStandalone: true, selector: "tui-swipe-actions", host: { properties: { "style.--t-actions-width": "actionsWidth" } }, ngImport: i0, template: "<div class=\"t-content\">\n <ng-content />\n</div>\n\n<div\n class=\"t-actions\"\n (waResizeObserver)=\"onResize($event[0])\"\n>\n <ng-content select=\"[tuiSwipeAction]\" />\n</div>\n", styles: [":host{scrollbar-width:none;-ms-overflow-style:none;--tui-action-gap: 24;--tui-actions-padding: .5rem;--tui-item-size: 44;display:flex;width:-webkit-fill-available;width:-moz-available;width:stretch;align-items:center;overflow-x:scroll;overflow-y:hidden;scroll-snap-type:x mandatory;perspective:1px;perspective-origin:calc(100% + calc(1px * var(--tui-item-size) / 2) + var(--tui-actions-padding))}:host::-webkit-scrollbar,:host::-webkit-scrollbar-thumb{display:none}.t-content{scroll-snap-align:start;flex-shrink:0;width:100%}.t-actions{display:flex;gap:calc(1px * var(--tui-action-gap));padding:0 1rem 0 var(--tui-actions-padding);scroll-snap-align:start;align-items:center;transform-style:preserve-3d}.t-actions:empty{display:none}::ng-deep .t-actions>*:nth-child(2){--t-distance: calc(var(--tui-item-size) + var(--tui-action-gap)) * 1 ;--t-factor: calc((var(--t-actions-width) - var(--t-distance)) / var(--t-actions-width));--t-scale: calc(1 / var(--t-factor));--t-translate: calc(1px * (1 - 1 / var(--t-factor)));transform:translate3d(calc(calc((-100% - calc(1px * var(--tui-action-gap))) * (2 - 1)) / var(--t-scale)),0,var(--t-translate));scale:var(--t-scale)}::ng-deep .t-actions>*:nth-child(3){--t-distance: calc(var(--tui-item-size) + var(--tui-action-gap)) * 2 ;--t-factor: calc((var(--t-actions-width) - var(--t-distance)) / var(--t-actions-width));--t-scale: calc(1 / var(--t-factor));--t-translate: calc(1px * (1 - 1 / var(--t-factor)));transform:translate3d(calc(calc((-100% - calc(1px * var(--tui-action-gap))) * (3 - 1)) / var(--t-scale)),0,var(--t-translate));scale:var(--t-scale)}::ng-deep .t-actions>*:nth-child(4){--t-distance: calc(var(--tui-item-size) + var(--tui-action-gap)) * 3 ;--t-factor: calc((var(--t-actions-width) - var(--t-distance)) / var(--t-actions-width));--t-scale: calc(1 / var(--t-factor));--t-translate: calc(1px * (1 - 1 / var(--t-factor)));transform:translate3d(calc(calc((-100% - calc(1px * var(--tui-action-gap))) * (4 - 1)) / var(--t-scale)),0,var(--t-translate));scale:var(--t-scale)}::ng-deep .t-actions>*:nth-child(5){--t-distance: calc(var(--tui-item-size) + var(--tui-action-gap)) * 4 ;--t-factor: calc((var(--t-actions-width) - var(--t-distance)) / var(--t-actions-width));--t-scale: calc(1 / var(--t-factor));--t-translate: calc(1px * (1 - 1 / var(--t-factor)));transform:translate3d(calc(calc((-100% - calc(1px * var(--tui-action-gap))) * (5 - 1)) / var(--t-scale)),0,var(--t-translate));scale:var(--t-scale)}::ng-deep .t-actions>*:nth-child(6){--t-distance: calc(var(--tui-item-size) + var(--tui-action-gap)) * 5 ;--t-factor: calc((var(--t-actions-width) - var(--t-distance)) / var(--t-actions-width));--t-scale: calc(1 / var(--t-factor));--t-translate: calc(1px * (1 - 1 / var(--t-factor)));transform:translate3d(calc(calc((-100% - calc(1px * var(--tui-action-gap))) * (6 - 1)) / var(--t-scale)),0,var(--t-translate));scale:var(--t-scale)}@media (hover: hover) and (pointer: fine){.t-actions{display:none}}\n"], dependencies: [{ kind: "directive", type: WaResizeObserver, selector: "[waResizeObserver]", inputs: ["box"], outputs: ["waResizeObserver"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
13
13
|
}
|
|
14
14
|
export { TuiSwipeActions };
|
|
15
15
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiSwipeActions, decorators: [{
|
|
16
16
|
type: Component,
|
|
17
|
-
args: [{ standalone: true, selector: 'tui-swipe-actions', imports: [
|
|
17
|
+
args: [{ standalone: true, selector: 'tui-swipe-actions', imports: [WaResizeObserver], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
18
18
|
'[style.--t-actions-width]': 'actionsWidth',
|
|
19
19
|
}, template: "<div class=\"t-content\">\n <ng-content />\n</div>\n\n<div\n class=\"t-actions\"\n (waResizeObserver)=\"onResize($event[0])\"\n>\n <ng-content select=\"[tuiSwipeAction]\" />\n</div>\n", styles: [":host{scrollbar-width:none;-ms-overflow-style:none;--tui-action-gap: 24;--tui-actions-padding: .5rem;--tui-item-size: 44;display:flex;width:-webkit-fill-available;width:-moz-available;width:stretch;align-items:center;overflow-x:scroll;overflow-y:hidden;scroll-snap-type:x mandatory;perspective:1px;perspective-origin:calc(100% + calc(1px * var(--tui-item-size) / 2) + var(--tui-actions-padding))}:host::-webkit-scrollbar,:host::-webkit-scrollbar-thumb{display:none}.t-content{scroll-snap-align:start;flex-shrink:0;width:100%}.t-actions{display:flex;gap:calc(1px * var(--tui-action-gap));padding:0 1rem 0 var(--tui-actions-padding);scroll-snap-align:start;align-items:center;transform-style:preserve-3d}.t-actions:empty{display:none}::ng-deep .t-actions>*:nth-child(2){--t-distance: calc(var(--tui-item-size) + var(--tui-action-gap)) * 1 ;--t-factor: calc((var(--t-actions-width) - var(--t-distance)) / var(--t-actions-width));--t-scale: calc(1 / var(--t-factor));--t-translate: calc(1px * (1 - 1 / var(--t-factor)));transform:translate3d(calc(calc((-100% - calc(1px * var(--tui-action-gap))) * (2 - 1)) / var(--t-scale)),0,var(--t-translate));scale:var(--t-scale)}::ng-deep .t-actions>*:nth-child(3){--t-distance: calc(var(--tui-item-size) + var(--tui-action-gap)) * 2 ;--t-factor: calc((var(--t-actions-width) - var(--t-distance)) / var(--t-actions-width));--t-scale: calc(1 / var(--t-factor));--t-translate: calc(1px * (1 - 1 / var(--t-factor)));transform:translate3d(calc(calc((-100% - calc(1px * var(--tui-action-gap))) * (3 - 1)) / var(--t-scale)),0,var(--t-translate));scale:var(--t-scale)}::ng-deep .t-actions>*:nth-child(4){--t-distance: calc(var(--tui-item-size) + var(--tui-action-gap)) * 3 ;--t-factor: calc((var(--t-actions-width) - var(--t-distance)) / var(--t-actions-width));--t-scale: calc(1 / var(--t-factor));--t-translate: calc(1px * (1 - 1 / var(--t-factor)));transform:translate3d(calc(calc((-100% - calc(1px * var(--tui-action-gap))) * (4 - 1)) / var(--t-scale)),0,var(--t-translate));scale:var(--t-scale)}::ng-deep .t-actions>*:nth-child(5){--t-distance: calc(var(--tui-item-size) + var(--tui-action-gap)) * 4 ;--t-factor: calc((var(--t-actions-width) - var(--t-distance)) / var(--t-actions-width));--t-scale: calc(1 / var(--t-factor));--t-translate: calc(1px * (1 - 1 / var(--t-factor)));transform:translate3d(calc(calc((-100% - calc(1px * var(--tui-action-gap))) * (5 - 1)) / var(--t-scale)),0,var(--t-translate));scale:var(--t-scale)}::ng-deep .t-actions>*:nth-child(6){--t-distance: calc(var(--tui-item-size) + var(--tui-action-gap)) * 5 ;--t-factor: calc((var(--t-actions-width) - var(--t-distance)) / var(--t-actions-width));--t-scale: calc(1 / var(--t-factor));--t-translate: calc(1px * (1 - 1 / var(--t-factor)));transform:translate3d(calc(calc((-100% - calc(1px * var(--tui-action-gap))) * (6 - 1)) / var(--t-scale)),0,var(--t-translate));scale:var(--t-scale)}@media (hover: hover) and (pointer: fine){.t-actions{display:none}}\n"] }]
|
|
20
20
|
}] });
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpcGUtYWN0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi1tb2JpbGUvY29tcG9uZW50cy9zd2lwZS1hY3Rpb24vc3dpcGUtYWN0aW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi1tb2JpbGUvY29tcG9uZW50cy9zd2lwZS1hY3Rpb24vc3dpcGUtYWN0aW9ucy50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sOEJBQThCLENBQUM7O0FBRTlELE1BV2EsZUFBZTtJQVg1QjtRQVljLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO0tBSzlCO0lBSGEsUUFBUSxDQUFDLEVBQUMsTUFBTSxFQUFzQjtRQUM1QyxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7SUFDM0MsQ0FBQzsrR0FMUSxlQUFlO21HQUFmLGVBQWUsa0pDZDVCLHFNQVVBLDI4RkRKYyxnQkFBZ0I7O1NBUWpCLGVBQWU7NEZBQWYsZUFBZTtrQkFYM0IsU0FBUztpQ0FDTSxJQUFJLFlBQ04sbUJBQW1CLFdBQ3BCLENBQUMsZ0JBQWdCLENBQUMsbUJBR1YsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDRiwyQkFBMkIsRUFBRSxjQUFjO3FCQUM5QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1dhUmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BuZy13ZWItYXBpcy9yZXNpemUtb2JzZXJ2ZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAndHVpLXN3aXBlLWFjdGlvbnMnLFxuICAgIGltcG9ydHM6IFtXYVJlc2l6ZU9ic2VydmVyXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc3dpcGUtYWN0aW9ucy50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zd2lwZS1hY3Rpb25zLnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBob3N0OiB7XG4gICAgICAgICdbc3R5bGUuLS10LWFjdGlvbnMtd2lkdGhdJzogJ2FjdGlvbnNXaWR0aCcsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpU3dpcGVBY3Rpb25zIHtcbiAgICBwcm90ZWN0ZWQgYWN0aW9uc1dpZHRoID0gMDtcblxuICAgIHByb3RlY3RlZCBvblJlc2l6ZSh7dGFyZ2V0fTogUmVzaXplT2JzZXJ2ZXJFbnRyeSk6IHZvaWQge1xuICAgICAgICB0aGlzLmFjdGlvbnNXaWR0aCA9IHRhcmdldC5jbGllbnRXaWR0aDtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidC1jb250ZW50XCI+XG4gICAgPG5nLWNvbnRlbnQgLz5cbjwvZGl2PlxuXG48ZGl2XG4gICAgY2xhc3M9XCJ0LWFjdGlvbnNcIlxuICAgICh3YVJlc2l6ZU9ic2VydmVyKT1cIm9uUmVzaXplKCRldmVudFswXSlcIlxuPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlt0dWlTd2lwZUFjdGlvbl1cIiAvPlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { DOCUMENT, NgIf } from '@angular/common';
|
|
2
2
|
import { ChangeDetectionStrategy, Component, inject, ViewEncapsulation, } from '@angular/core';
|
|
3
|
-
import {
|
|
3
|
+
import { WaIntersectionObserver } from '@ng-web-apis/intersection-observer';
|
|
4
4
|
import { TuiKeyboardService } from '@taiga-ui/addon-mobile/services';
|
|
5
5
|
import { TuiActiveZone } from '@taiga-ui/cdk/directives/active-zone';
|
|
6
6
|
import { TuiSwipe } from '@taiga-ui/cdk/directives/swipe';
|
|
7
|
-
import { tuiInjectElement, tuiIsElement
|
|
7
|
+
import { tuiInjectElement, tuiIsElement } from '@taiga-ui/cdk/utils/dom';
|
|
8
8
|
import { tuiGetNativeFocused } from '@taiga-ui/cdk/utils/focus';
|
|
9
9
|
import { tuiPx } from '@taiga-ui/cdk/utils/miscellaneous';
|
|
10
10
|
import { tuiFadeIn, tuiSlideInTop } from '@taiga-ui/core/animations';
|
|
@@ -50,10 +50,10 @@ class TuiDropdownMobileComponent {
|
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
onClick(event) {
|
|
53
|
-
if (
|
|
54
|
-
|
|
55
|
-
!(
|
|
56
|
-
|
|
53
|
+
if (tuiIsElement(event.target) &&
|
|
54
|
+
!this.el.contains(event.target) &&
|
|
55
|
+
(!this.dropdown.el.contains(event.target) ||
|
|
56
|
+
event.target.matches('input,textarea'))) {
|
|
57
57
|
event.stopPropagation();
|
|
58
58
|
}
|
|
59
59
|
}
|
|
@@ -80,23 +80,24 @@ class TuiDropdownMobileComponent {
|
|
|
80
80
|
}
|
|
81
81
|
this.doc.documentElement.scrollTop = 0;
|
|
82
82
|
const rect = this.dropdown.el.getBoundingClientRect();
|
|
83
|
+
const top = offsetTop + GAP - rect.top;
|
|
83
84
|
const offset = rect.height + GAP * 2;
|
|
84
85
|
this.el.style.setProperty('top', tuiPx(offsetTop + offset));
|
|
85
86
|
this.el.style.setProperty('height', tuiPx(height - offset));
|
|
86
87
|
this.doc.body.classList.add('t-dropdown-mobile');
|
|
87
|
-
this.doc.body.style.setProperty('--t-root-top', tuiPx(
|
|
88
|
+
this.doc.body.style.setProperty('--t-root-top', tuiPx(top));
|
|
88
89
|
}
|
|
89
90
|
get focused() {
|
|
90
91
|
return this.dropdown.el.contains(tuiGetNativeFocused(this.doc));
|
|
91
92
|
}
|
|
92
93
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownMobileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
93
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdownMobileComponent, isStandalone: true, selector: "tui-dropdown-mobile", host: { listeners: { "document:click.silent.capture": "onClick($event)", "window>scroll.silent.capture": "refresh($event.currentTarget.visualViewport)", "visualViewport>resize.silent": "refresh($event.target)", "visualViewport>scroll.silent": "refresh($event.target)" }, properties: { "@tuiFadeIn": "animation", "@tuiSlideInTop": "animation", "class._sheet": "directive.tuiDropdownMobile" } }, hostDirectives: [{ directive: i1.TuiActiveZone }], ngImport: i0, template: "<div\n *ngIf=\"directive.tuiDropdownMobile\"\n waIntersectionObserver\n waIntersectionThreshold=\"1\"\n class=\"t-filler\"\n (touchstart.prevent)=\"close()\"\n (waIntersectionObservee)=\"onIntersection($event)\"\n></div>\n<div\n #container\n class=\"t-container\"\n (tuiSwipe)=\"onSwipe($event, container)\"\n>\n <h2\n *ngIf=\"directive.tuiDropdownMobile\"\n class=\"t-heading\"\n >\n {{ directive.tuiDropdownMobile }}\n </h2>\n <div class=\"t-content\">\n <ng-container *polymorpheusOutlet=\"dropdown.content as text\">\n {{ text }}\n </ng-container>\n </div>\n</div>\n", styles: ["tui-dropdown-mobile:not(._sheet){scrollbar-width:none;-ms-overflow-style:none;position:fixed;top:0;left:0;width:100%;height:100%;transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;visibility:visible!important;transform:translateZ(0);background:var(--tui-background-base);overscroll-behavior:contain;overflow:auto;box-shadow:0 -.5rem .5rem var(--tui-background-base),0 10rem var(--tui-background-base),0 20rem var(--tui-background-base),0 30rem var(--tui-background-base)}tui-dropdown-mobile:not(._sheet)::-webkit-scrollbar,tui-dropdown-mobile:not(._sheet)::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile:not(._sheet):after{content:\"\";display:block;height:1px}tui-dropdown-mobile:not(._sheet)>.t-container{scrollbar-width:none;-ms-overflow-style:none;position:sticky;top:0;height:100%;overflow:auto;margin:0 .75rem;touch-action:pan-y!important}tui-dropdown-mobile:not(._sheet)>.t-container::-webkit-scrollbar,tui-dropdown-mobile:not(._sheet)>.t-container::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile:not(._sheet) [tuiDropdownButton][tuiDropdownButton]{position:fixed;right:1rem;bottom:1rem;display:inline-flex}tui-dropdown-mobile._sheet{position:fixed;top:0;left:0;bottom:0;right:0;scrollbar-width:none;-ms-overflow-style:none;overflow:auto;background:var(--tui-service-backdrop);box-shadow:0 -
|
|
94
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdownMobileComponent, isStandalone: true, selector: "tui-dropdown-mobile", host: { listeners: { "document:click.silent.capture": "onClick($event)", "window>scroll.silent.capture": "refresh($event.currentTarget.visualViewport)", "visualViewport>resize.silent": "refresh($event.target)", "visualViewport>scroll.silent": "refresh($event.target)" }, properties: { "@tuiFadeIn": "animation", "@tuiSlideInTop": "animation", "class._sheet": "directive.tuiDropdownMobile" } }, hostDirectives: [{ directive: i1.TuiActiveZone }], ngImport: i0, template: "<div\n *ngIf=\"directive.tuiDropdownMobile\"\n waIntersectionObserver\n waIntersectionThreshold=\"1\"\n class=\"t-filler\"\n (touchstart.prevent)=\"close()\"\n (waIntersectionObservee)=\"onIntersection($event)\"\n></div>\n<div\n #container\n class=\"t-container\"\n (tuiSwipe)=\"onSwipe($event, container)\"\n>\n <h2\n *ngIf=\"directive.tuiDropdownMobile\"\n class=\"t-heading\"\n >\n {{ directive.tuiDropdownMobile }}\n </h2>\n <div class=\"t-content\">\n <ng-container *polymorpheusOutlet=\"dropdown.content as text\">\n {{ text }}\n </ng-container>\n </div>\n</div>\n", styles: ["tui-dropdown-mobile:not(._sheet){scrollbar-width:none;-ms-overflow-style:none;position:fixed;top:0;left:0;width:100%;height:100%;transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;visibility:visible!important;transform:translateZ(0);background:var(--tui-background-base);overscroll-behavior:contain;overflow:auto;box-shadow:0 -.5rem .5rem var(--tui-background-base),0 10rem var(--tui-background-base),0 20rem var(--tui-background-base),0 30rem var(--tui-background-base)}tui-dropdown-mobile:not(._sheet)::-webkit-scrollbar,tui-dropdown-mobile:not(._sheet)::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile:not(._sheet):after{content:\"\";display:block;height:1px}tui-dropdown-mobile:not(._sheet)>.t-container{scrollbar-width:none;-ms-overflow-style:none;position:sticky;top:0;height:100%;overflow:auto;margin:0 .75rem;touch-action:pan-y!important}tui-dropdown-mobile:not(._sheet)>.t-container::-webkit-scrollbar,tui-dropdown-mobile:not(._sheet)>.t-container::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile:not(._sheet) [tuiDropdownButton][tuiDropdownButton]{position:fixed;right:1rem;bottom:1rem;display:inline-flex}tui-dropdown-mobile._sheet{position:fixed;top:0;left:0;bottom:0;right:0;scrollbar-width:none;-ms-overflow-style:none;overflow:auto;background:var(--tui-service-backdrop);box-shadow:0 -80vh 0 5rem var(--tui-service-backdrop);overflow-y:scroll;scroll-snap-type:y mandatory;overscroll-behavior:none}tui-dropdown-mobile._sheet::-webkit-scrollbar,tui-dropdown-mobile._sheet::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile._sheet>.t-filler{height:100%;scroll-snap-stop:always;scroll-snap-align:start}tui-dropdown-mobile._sheet>.t-container{display:flex;max-height:calc(100% - 1rem);flex-direction:column;border-top-left-radius:1rem;border-top-right-radius:1rem;padding:0 .5rem;scroll-snap-stop:always;scroll-snap-align:start;background:var(--tui-background-elevation-1)}tui-dropdown-mobile._sheet>.t-container>.t-heading{position:relative;margin:0;padding:2rem .5rem .75rem;font:var(--tui-font-heading-6)}tui-dropdown-mobile._sheet>.t-container>.t-heading:before{content:\"\";position:absolute;left:50%;top:.75rem;width:2rem;height:.25rem;border-radius:1rem;background:var(--tui-background-neutral-2);transform:translate(-50%,-50%)}tui-dropdown-mobile._sheet>.t-container>.t-content{scrollbar-width:none;-ms-overflow-style:none;overflow:auto}tui-dropdown-mobile._sheet>.t-container>.t-content::-webkit-scrollbar,tui-dropdown-mobile._sheet>.t-container>.t-content::-webkit-scrollbar-thumb{display:none}.t-dropdown-mobile{touch-action:none;visibility:hidden}.t-dropdown-mobile *{touch-action:inherit;visibility:inherit}\n"], dependencies: [{ kind: "directive", type: i2.WaIntersectionObserverDirective, selector: "[waIntersectionObserver]", inputs: ["margin", "threshold"], exportAs: ["IntersectionObserver"] }, { kind: "directive", type: i2.WaIntersectionObservee, selector: "[waIntersectionObservee]", outputs: ["waIntersectionObservee"] }, { kind: "directive", type: TuiSwipe, selector: "[tuiSwipe]", outputs: ["tuiSwipe"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], animations: [tuiSlideInTop, tuiFadeIn], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
94
95
|
}
|
|
95
96
|
export { TuiDropdownMobileComponent };
|
|
96
97
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownMobileComponent, decorators: [{
|
|
97
98
|
type: Component,
|
|
98
99
|
args: [{ standalone: true, selector: 'tui-dropdown-mobile', imports: [
|
|
99
|
-
|
|
100
|
+
WaIntersectionObserver,
|
|
100
101
|
TuiSwipe,
|
|
101
102
|
NgIf,
|
|
102
103
|
PolymorpheusOutlet,
|
|
@@ -109,6 +110,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
109
110
|
'(window>scroll.silent.capture)': 'refresh($event.currentTarget.visualViewport)',
|
|
110
111
|
'(visualViewport>resize.silent)': 'refresh($event.target)',
|
|
111
112
|
'(visualViewport>scroll.silent)': 'refresh($event.target)',
|
|
112
|
-
}, template: "<div\n *ngIf=\"directive.tuiDropdownMobile\"\n waIntersectionObserver\n waIntersectionThreshold=\"1\"\n class=\"t-filler\"\n (touchstart.prevent)=\"close()\"\n (waIntersectionObservee)=\"onIntersection($event)\"\n></div>\n<div\n #container\n class=\"t-container\"\n (tuiSwipe)=\"onSwipe($event, container)\"\n>\n <h2\n *ngIf=\"directive.tuiDropdownMobile\"\n class=\"t-heading\"\n >\n {{ directive.tuiDropdownMobile }}\n </h2>\n <div class=\"t-content\">\n <ng-container *polymorpheusOutlet=\"dropdown.content as text\">\n {{ text }}\n </ng-container>\n </div>\n</div>\n", styles: ["tui-dropdown-mobile:not(._sheet){scrollbar-width:none;-ms-overflow-style:none;position:fixed;top:0;left:0;width:100%;height:100%;transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;visibility:visible!important;transform:translateZ(0);background:var(--tui-background-base);overscroll-behavior:contain;overflow:auto;box-shadow:0 -.5rem .5rem var(--tui-background-base),0 10rem var(--tui-background-base),0 20rem var(--tui-background-base),0 30rem var(--tui-background-base)}tui-dropdown-mobile:not(._sheet)::-webkit-scrollbar,tui-dropdown-mobile:not(._sheet)::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile:not(._sheet):after{content:\"\";display:block;height:1px}tui-dropdown-mobile:not(._sheet)>.t-container{scrollbar-width:none;-ms-overflow-style:none;position:sticky;top:0;height:100%;overflow:auto;margin:0 .75rem;touch-action:pan-y!important}tui-dropdown-mobile:not(._sheet)>.t-container::-webkit-scrollbar,tui-dropdown-mobile:not(._sheet)>.t-container::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile:not(._sheet) [tuiDropdownButton][tuiDropdownButton]{position:fixed;right:1rem;bottom:1rem;display:inline-flex}tui-dropdown-mobile._sheet{position:fixed;top:0;left:0;bottom:0;right:0;scrollbar-width:none;-ms-overflow-style:none;overflow:auto;background:var(--tui-service-backdrop);box-shadow:0 -
|
|
113
|
+
}, template: "<div\n *ngIf=\"directive.tuiDropdownMobile\"\n waIntersectionObserver\n waIntersectionThreshold=\"1\"\n class=\"t-filler\"\n (touchstart.prevent)=\"close()\"\n (waIntersectionObservee)=\"onIntersection($event)\"\n></div>\n<div\n #container\n class=\"t-container\"\n (tuiSwipe)=\"onSwipe($event, container)\"\n>\n <h2\n *ngIf=\"directive.tuiDropdownMobile\"\n class=\"t-heading\"\n >\n {{ directive.tuiDropdownMobile }}\n </h2>\n <div class=\"t-content\">\n <ng-container *polymorpheusOutlet=\"dropdown.content as text\">\n {{ text }}\n </ng-container>\n </div>\n</div>\n", styles: ["tui-dropdown-mobile:not(._sheet){scrollbar-width:none;-ms-overflow-style:none;position:fixed;top:0;left:0;width:100%;height:100%;transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;visibility:visible!important;transform:translateZ(0);background:var(--tui-background-base);overscroll-behavior:contain;overflow:auto;box-shadow:0 -.5rem .5rem var(--tui-background-base),0 10rem var(--tui-background-base),0 20rem var(--tui-background-base),0 30rem var(--tui-background-base)}tui-dropdown-mobile:not(._sheet)::-webkit-scrollbar,tui-dropdown-mobile:not(._sheet)::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile:not(._sheet):after{content:\"\";display:block;height:1px}tui-dropdown-mobile:not(._sheet)>.t-container{scrollbar-width:none;-ms-overflow-style:none;position:sticky;top:0;height:100%;overflow:auto;margin:0 .75rem;touch-action:pan-y!important}tui-dropdown-mobile:not(._sheet)>.t-container::-webkit-scrollbar,tui-dropdown-mobile:not(._sheet)>.t-container::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile:not(._sheet) [tuiDropdownButton][tuiDropdownButton]{position:fixed;right:1rem;bottom:1rem;display:inline-flex}tui-dropdown-mobile._sheet{position:fixed;top:0;left:0;bottom:0;right:0;scrollbar-width:none;-ms-overflow-style:none;overflow:auto;background:var(--tui-service-backdrop);box-shadow:0 -80vh 0 5rem var(--tui-service-backdrop);overflow-y:scroll;scroll-snap-type:y mandatory;overscroll-behavior:none}tui-dropdown-mobile._sheet::-webkit-scrollbar,tui-dropdown-mobile._sheet::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile._sheet>.t-filler{height:100%;scroll-snap-stop:always;scroll-snap-align:start}tui-dropdown-mobile._sheet>.t-container{display:flex;max-height:calc(100% - 1rem);flex-direction:column;border-top-left-radius:1rem;border-top-right-radius:1rem;padding:0 .5rem;scroll-snap-stop:always;scroll-snap-align:start;background:var(--tui-background-elevation-1)}tui-dropdown-mobile._sheet>.t-container>.t-heading{position:relative;margin:0;padding:2rem .5rem .75rem;font:var(--tui-font-heading-6)}tui-dropdown-mobile._sheet>.t-container>.t-heading:before{content:\"\";position:absolute;left:50%;top:.75rem;width:2rem;height:.25rem;border-radius:1rem;background:var(--tui-background-neutral-2);transform:translate(-50%,-50%)}tui-dropdown-mobile._sheet>.t-container>.t-content{scrollbar-width:none;-ms-overflow-style:none;overflow:auto}tui-dropdown-mobile._sheet>.t-container>.t-content::-webkit-scrollbar,tui-dropdown-mobile._sheet>.t-container>.t-content::-webkit-scrollbar-thumb{display:none}.t-dropdown-mobile{touch-action:none;visibility:hidden}.t-dropdown-mobile *{touch-action:inherit;visibility:inherit}\n"] }]
|
|
113
114
|
}], ctorParameters: function () { return []; } });
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbW9iaWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLW1vYmlsZS9kaXJlY3RpdmVzL2Ryb3Bkb3duLW1vYmlsZS9kcm9wZG93bi1tb2JpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRkb24tbW9iaWxlL2RpcmVjdGl2ZXMvZHJvcGRvd24tbW9iaWxlL2Ryb3Bkb3duLW1vYmlsZS50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsTUFBTSxFQUNOLGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFFbkUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hELE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDcEYsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hELE9BQU8sRUFBQyxTQUFTLEVBQUUsYUFBYSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDeEUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDM0Qs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QyxFQUFFLDhDQUE4Qzt3QkFDaEYsZ0NBQWdDLEVBQUUsd0JBQXdCO3dCQUMxRCxnQ0FBZ0MsRUFBRSx3QkFBd0I7cUJBQzdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtET0NVTUVOVCwgTmdJZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB0eXBlIHtBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgaW5qZWN0LFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SW50ZXJzZWN0aW9uT2JzZXJ2ZXJNb2R1bGV9IGZyb20gJ0BuZy13ZWItYXBpcy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXInO1xuaW1wb3J0IHtUdWlLZXlib2FyZFNlcnZpY2V9IGZyb20gJ0B0YWlnYS11aS9hZGRvbi1tb2JpbGUvc2VydmljZXMnO1xuaW1wb3J0IHtUdWlBY3RpdmVab25lfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RpcmVjdGl2ZXMvYWN0aXZlLXpvbmUnO1xuaW1wb3J0IHR5cGUge1R1aVN3aXBlRXZlbnR9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGlyZWN0aXZlcy9zd2lwZSc7XG5pbXBvcnQge1R1aVN3aXBlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RpcmVjdGl2ZXMvc3dpcGUnO1xuaW1wb3J0IHt0dWlJbmplY3RFbGVtZW50LCB0dWlJc0VsZW1lbnQsIHR1aUlzTm9kZUlufSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL2RvbSc7XG5pbXBvcnQge3R1aUdldE5hdGl2ZUZvY3VzZWR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvZm9jdXMnO1xuaW1wb3J0IHt0dWlQeH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9taXNjZWxsYW5lb3VzJztcbmltcG9ydCB7dHVpRmFkZUluLCB0dWlTbGlkZUluVG9wfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9hbmltYXRpb25zJztcbmltcG9ydCB7VHVpRHJvcGRvd25EaXJlY3RpdmV9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2RpcmVjdGl2ZXMvZHJvcGRvd24nO1xuaW1wb3J0IHtUVUlfQU5JTUFUSU9OU19TUEVFRH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdG9rZW5zJztcbmltcG9ydCB7dHVpR2V0RHVyYXRpb259IGZyb20gJ0B0YWlnYS11aS9jb3JlL3V0aWxzL21pc2NlbGxhbmVvdXMnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNPdXRsZXQsIFBvbHltb3JwaGV1c1RlbXBsYXRlfSBmcm9tICdAdGFpZ2EtdWkvcG9seW1vcnBoZXVzJztcblxuaW1wb3J0IHtUdWlEcm9wZG93bk1vYmlsZX0gZnJvbSAnLi9kcm9wZG93bi1tb2JpbGUuZGlyZWN0aXZlJztcblxuY29uc3QgR0FQID0gMTY7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICd0dWktZHJvcGRvd24tbW9iaWxlJyxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIEludGVyc2VjdGlvbk9ic2VydmVyTW9kdWxlLFxuICAgICAgICBUdWlTd2lwZSxcbiAgICAgICAgTmdJZixcbiAgICAgICAgUG9seW1vcnBoZXVzT3V0bGV0LFxuICAgICAgICBQb2x5bW9ycGhldXNUZW1wbGF0ZSxcbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kcm9wZG93bi1tb2JpbGUudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZHJvcGRvd24tbW9iaWxlLnN0eWxlLmxlc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGFuaW1hdGlvbnM6IFt0dWlTbGlkZUluVG9wLCB0dWlGYWRlSW5dLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbVHVpQWN0aXZlWm9uZV0sXG4gICAgaG9zdDoge1xuICAgICAgICAnW0B0dWlGYWRlSW5dJzogJ2FuaW1hdGlvbicsXG4gICAgICAgICdbQHR1aVNsaWRlSW5Ub3BdJzogJ2FuaW1hdGlvbicsXG4gICAgICAgICdbY2xhc3MuX3NoZWV0XSc6ICdkaXJlY3RpdmUudHVpRHJvcGRvd25Nb2JpbGUnLFxuICAgICAgICAnKGRvY3VtZW50OmNsaWNrLnNpbGVudC5jYXB0dXJlKSc6ICdvbkNsaWNrKCRldmVudCknLFxuICAgICAgICAnKHdpbmRvdz5zY3JvbGwuc2lsZW50LmNhcHR1cmUpJzogJ3JlZnJlc2goJGV2ZW50LmN1cnJlbnRUYXJnZXQudmlzdWFsVmlld3BvcnQpJyxcbiAgICAgICAgJyh2aXN1YWxWaWV3cG9ydD5yZXNpemUuc2lsZW50KSc6ICdyZWZyZXNoKCRldmVudC50YXJnZXQpJyxcbiAgICAgICAgJyh2aXN1YWxWaWV3cG9ydD5zY3JvbGwuc2lsZW50KSc6ICdyZWZyZXNoKCRldmVudC50YXJnZXQpJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBUdWlEcm9wZG93bk1vYmlsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbCA9IHR1aUluamVjdEVsZW1lbnQoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGtleWJvYXJkID0gaW5qZWN0KFR1aUtleWJvYXJkU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2MgPSBpbmplY3QoRE9DVU1FTlQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc2Nyb2xsVG9wID0gdGhpcy5kb2MuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+XG4gICAgICAgIHRoaXMucmVmcmVzaCh0aGlzLmRvYy5kZWZhdWx0VmlldyEudmlzdWFsVmlld3BvcnQhKSxcbiAgICApO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRpcmVjdGl2ZSA9IGluamVjdChUdWlEcm9wZG93bk1vYmlsZSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRyb3Bkb3duID0gaW5qZWN0KFR1aURyb3Bkb3duRGlyZWN0aXZlKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYW5pbWF0aW9uID0ge1xuICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgc3RhcnQ6ICcxMDB2aCcsXG4gICAgICAgICAgICBkdXJhdGlvbjogdHVpR2V0RHVyYXRpb24oaW5qZWN0KFRVSV9BTklNQVRJT05TX1NQRUVEKSksXG4gICAgICAgIH0sXG4gICAgfSBhcyBjb25zdDtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy5kcm9wZG93bi5lbCk7XG4gICAgICAgIHRoaXMuZG9jLmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnc2Nyb2xsLWJlaGF2aW9yJywgJ2luaXRpYWwnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVsLnNjcm9sbFRvcCA9IHRoaXMuZGlyZWN0aXZlLnR1aURyb3Bkb3duTW9iaWxlID8gdGhpcy5lbC5jbGllbnRIZWlnaHQgOiAwO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgIHRoaXMuZG9jLmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgndC1kcm9wZG93bi1tb2JpbGUnKTtcbiAgICAgICAgdGhpcy5kb2MuYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS10LXJvb3QtdG9wJyk7XG4gICAgICAgIHRoaXMuZG9jLmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgPSB0aGlzLnNjcm9sbFRvcDtcbiAgICAgICAgdGhpcy5kb2MuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdzY3JvbGwtYmVoYXZpb3InKTtcblxuICAgICAgICBpZiAodGhpcy5mb2N1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLmtleWJvYXJkLmhpZGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICF0aGlzLmVsLmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICAgLy8gVE9ETzogZmluZCBhIGJldHRlciB3YXkgdG8gY2hlY2sgaWYgdGhlIGNsaWNrIGlzIGluc2lkZSBpbnRlcmFjdGl2ZSBlbGVtZW50IGluIHRleHRmaWVsZFxuICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICB0dWlJc05vZGVJbihldmVudC50YXJnZXQgYXMgTm9kZSwgJ3R1aS1zdmcnKSB8fFxuICAgICAgICAgICAgICAgICh0dWlJc0VsZW1lbnQoZXZlbnQudGFyZ2V0KSAmJiBldmVudC50YXJnZXQudGFnTmFtZSA9PT0gJ2J1dHRvbicpXG4gICAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Td2lwZSh7ZGlyZWN0aW9ufTogVHVpU3dpcGVFdmVudCwgZWw6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGRpcmVjdGlvbiA9PT0gJ2JvdHRvbScgJiZcbiAgICAgICAgICAgIGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSA+IE51bWJlcih0aGlzLmRvYy5kZWZhdWx0Vmlldz8uaW5uZXJIZWlnaHQpXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uSW50ZXJzZWN0aW9uKFt7aXNJbnRlcnNlY3Rpbmd9XTogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeVtdKTogdm9pZCB7XG4gICAgICAgIGlmIChpc0ludGVyc2VjdGluZykge1xuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRyb3Bkb3duLnRvZ2dsZShmYWxzZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlZnJlc2goe29mZnNldFRvcCwgaGVpZ2h0fTogVmlzdWFsVmlld3BvcnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kb2MuYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS10LXJvb3QtdG9wJyk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIXRoaXMuZm9jdXNlZCB8fFxuICAgICAgICAgICAgdGhpcy5kaXJlY3RpdmUudHVpRHJvcGRvd25Nb2JpbGUgfHxcbiAgICAgICAgICAgICF0aGlzLmRvYy5kb2N1bWVudEVsZW1lbnQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnc2Nyb2xsLWJlaGF2aW9yJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRvYy5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcblxuICAgICAgICBjb25zdCByZWN0ID0gdGhpcy5kcm9wZG93bi5lbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gcmVjdC5oZWlnaHQgKyBHQVAgKiAyO1xuXG4gICAgICAgIHRoaXMuZWwuc3R5bGUuc2V0UHJvcGVydHkoJ3RvcCcsIHR1aVB4KG9mZnNldFRvcCArIG9mZnNldCkpO1xuICAgICAgICB0aGlzLmVsLnN0eWxlLnNldFByb3BlcnR5KCdoZWlnaHQnLCB0dWlQeChoZWlnaHQgLSBvZmZzZXQpKTtcbiAgICAgICAgdGhpcy5kb2MuYm9keS5jbGFzc0xpc3QuYWRkKCd0LWRyb3Bkb3duLW1vYmlsZScpO1xuICAgICAgICB0aGlzLmRvYy5ib2R5LnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgICAgICAgJy0tdC1yb290LXRvcCcsXG4gICAgICAgICAgICB0dWlQeChvZmZzZXRUb3AgKyBHQVAgLSByZWN0LnRvcCksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgZm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZHJvcGRvd24uZWwuY29udGFpbnModHVpR2V0TmF0aXZlRm9jdXNlZCh0aGlzLmRvYykpO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICAqbmdJZj1cImRpcmVjdGl2ZS50dWlEcm9wZG93bk1vYmlsZVwiXG4gICAgd2FJbnRlcnNlY3Rpb25PYnNlcnZlclxuICAgIHdhSW50ZXJzZWN0aW9uVGhyZXNob2xkPVwiMVwiXG4gICAgY2xhc3M9XCJ0LWZpbGxlclwiXG4gICAgKHRvdWNoc3RhcnQucHJldmVudCk9XCJjbG9zZSgpXCJcbiAgICAod2FJbnRlcnNlY3Rpb25PYnNlcnZlZSk9XCJvbkludGVyc2VjdGlvbigkZXZlbnQpXCJcbj48L2Rpdj5cbjxkaXZcbiAgICAjY29udGFpbmVyXG4gICAgY2xhc3M9XCJ0LWNvbnRhaW5lclwiXG4gICAgKHR1aVN3aXBlKT1cIm9uU3dpcGUoJGV2ZW50LCBjb250YWluZXIpXCJcbj5cbiAgICA8aDJcbiAgICAgICAgKm5nSWY9XCJkaXJlY3RpdmUudHVpRHJvcGRvd25Nb2JpbGVcIlxuICAgICAgICBjbGFzcz1cInQtaGVhZGluZ1wiXG4gICAgPlxuICAgICAgICB7eyBkaXJlY3RpdmUudHVpRHJvcGRvd25Nb2JpbGUgfX1cbiAgICA8L2gyPlxuICAgIDxkaXYgY2xhc3M9XCJ0LWNvbnRlbnRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqcG9seW1vcnBoZXVzT3V0bGV0PVwiZHJvcGRvd24uY29udGVudCBhcyB0ZXh0XCI+XG4gICAgICAgICAgICB7eyB0ZXh0IH19XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbW9iaWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLW1vYmlsZS9kaXJlY3RpdmVzL2Ryb3Bkb3duLW1vYmlsZS9kcm9wZG93bi1tb2JpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRkb24tbW9iaWxlL2RpcmVjdGl2ZXMvZHJvcGRvd24tbW9iaWxlL2Ryb3Bkb3duLW1vYmlsZS50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsTUFBTSxFQUNOLGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUMxRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFFbkUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hELE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxZQUFZLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDeEQsT0FBTyxFQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRCxPQUFPLEVBQUMs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QkFDcEQsZ0NBQWdDLEVBQUUsOENBQThDO3dCQUNoRixnQ0FBZ0MsRUFBRSx3QkFBd0I7d0JBQzFELGdDQUFnQyxFQUFFLHdCQUF3QjtxQkFDN0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RPQ1VNRU5ULCBOZ0lmfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHR5cGUge0FmdGVyVmlld0luaXQsIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBpbmplY3QsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtXYUludGVyc2VjdGlvbk9ic2VydmVyfSBmcm9tICdAbmctd2ViLWFwaXMvaW50ZXJzZWN0aW9uLW9ic2VydmVyJztcbmltcG9ydCB7VHVpS2V5Ym9hcmRTZXJ2aWNlfSBmcm9tICdAdGFpZ2EtdWkvYWRkb24tbW9iaWxlL3NlcnZpY2VzJztcbmltcG9ydCB7VHVpQWN0aXZlWm9uZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9kaXJlY3RpdmVzL2FjdGl2ZS16b25lJztcbmltcG9ydCB0eXBlIHtUdWlTd2lwZUV2ZW50fSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RpcmVjdGl2ZXMvc3dpcGUnO1xuaW1wb3J0IHtUdWlTd2lwZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9kaXJlY3RpdmVzL3N3aXBlJztcbmltcG9ydCB7dHVpSW5qZWN0RWxlbWVudCwgdHVpSXNFbGVtZW50fSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL2RvbSc7XG5pbXBvcnQge3R1aUdldE5hdGl2ZUZvY3VzZWR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvZm9jdXMnO1xuaW1wb3J0IHt0dWlQeH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9taXNjZWxsYW5lb3VzJztcbmltcG9ydCB7dHVpRmFkZUluLCB0dWlTbGlkZUluVG9wfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9hbmltYXRpb25zJztcbmltcG9ydCB7VHVpRHJvcGRvd25EaXJlY3RpdmV9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2RpcmVjdGl2ZXMvZHJvcGRvd24nO1xuaW1wb3J0IHtUVUlfQU5JTUFUSU9OU19TUEVFRH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdG9rZW5zJztcbmltcG9ydCB7dHVpR2V0RHVyYXRpb259IGZyb20gJ0B0YWlnYS11aS9jb3JlL3V0aWxzL21pc2NlbGxhbmVvdXMnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNPdXRsZXQsIFBvbHltb3JwaGV1c1RlbXBsYXRlfSBmcm9tICdAdGFpZ2EtdWkvcG9seW1vcnBoZXVzJztcblxuaW1wb3J0IHtUdWlEcm9wZG93bk1vYmlsZX0gZnJvbSAnLi9kcm9wZG93bi1tb2JpbGUuZGlyZWN0aXZlJztcblxuY29uc3QgR0FQID0gMTY7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICd0dWktZHJvcGRvd24tbW9iaWxlJyxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIFdhSW50ZXJzZWN0aW9uT2JzZXJ2ZXIsXG4gICAgICAgIFR1aVN3aXBlLFxuICAgICAgICBOZ0lmLFxuICAgICAgICBQb2x5bW9ycGhldXNPdXRsZXQsXG4gICAgICAgIFBvbHltb3JwaGV1c1RlbXBsYXRlLFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLW1vYmlsZS50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kcm9wZG93bi1tb2JpbGUuc3R5bGUubGVzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgYW5pbWF0aW9uczogW3R1aVNsaWRlSW5Ub3AsIHR1aUZhZGVJbl0sXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtUdWlBY3RpdmVab25lXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbQHR1aUZhZGVJbl0nOiAnYW5pbWF0aW9uJyxcbiAgICAgICAgJ1tAdHVpU2xpZGVJblRvcF0nOiAnYW5pbWF0aW9uJyxcbiAgICAgICAgJ1tjbGFzcy5fc2hlZXRdJzogJ2RpcmVjdGl2ZS50dWlEcm9wZG93bk1vYmlsZScsXG4gICAgICAgICcoZG9jdW1lbnQ6Y2xpY2suc2lsZW50LmNhcHR1cmUpJzogJ29uQ2xpY2soJGV2ZW50KScsXG4gICAgICAgICcod2luZG93PnNjcm9sbC5zaWxlbnQuY2FwdHVyZSknOiAncmVmcmVzaCgkZXZlbnQuY3VycmVudFRhcmdldC52aXN1YWxWaWV3cG9ydCknLFxuICAgICAgICAnKHZpc3VhbFZpZXdwb3J0PnJlc2l6ZS5zaWxlbnQpJzogJ3JlZnJlc2goJGV2ZW50LnRhcmdldCknLFxuICAgICAgICAnKHZpc3VhbFZpZXdwb3J0PnNjcm9sbC5zaWxlbnQpJzogJ3JlZnJlc2goJGV2ZW50LnRhcmdldCknLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aURyb3Bkb3duTW9iaWxlQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsID0gdHVpSW5qZWN0RWxlbWVudCgpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkga2V5Ym9hcmQgPSBpbmplY3QoVHVpS2V5Ym9hcmRTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvYyA9IGluamVjdChET0NVTUVOVCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzY3JvbGxUb3AgPSB0aGlzLmRvYy5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT5cbiAgICAgICAgdGhpcy5yZWZyZXNoKHRoaXMuZG9jLmRlZmF1bHRWaWV3IS52aXN1YWxWaWV3cG9ydCEpLFxuICAgICk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGlyZWN0aXZlID0gaW5qZWN0KFR1aURyb3Bkb3duTW9iaWxlKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZHJvcGRvd24gPSBpbmplY3QoVHVpRHJvcGRvd25EaXJlY3RpdmUpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBhbmltYXRpb24gPSB7XG4gICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICBzdGFydDogJzEwMHZoJyxcbiAgICAgICAgICAgIGR1cmF0aW9uOiB0dWlHZXREdXJhdGlvbihpbmplY3QoVFVJX0FOSU1BVElPTlNfU1BFRUQpKSxcbiAgICAgICAgfSxcbiAgICB9IGFzIGNvbnN0O1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmRyb3Bkb3duLmVsKTtcbiAgICAgICAgdGhpcy5kb2MuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCdzY3JvbGwtYmVoYXZpb3InLCAnaW5pdGlhbCcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWwuc2Nyb2xsVG9wID0gdGhpcy5kaXJlY3RpdmUudHVpRHJvcGRvd25Nb2JpbGUgPyB0aGlzLmVsLmNsaWVudEhlaWdodCA6IDA7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgdGhpcy5kb2MuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCd0LWRyb3Bkb3duLW1vYmlsZScpO1xuICAgICAgICB0aGlzLmRvYy5ib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLXQtcm9vdC10b3AnKTtcbiAgICAgICAgdGhpcy5kb2MuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCA9IHRoaXMuc2Nyb2xsVG9wO1xuICAgICAgICB0aGlzLmRvYy5kb2N1bWVudEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ3Njcm9sbC1iZWhhdmlvcicpO1xuXG4gICAgICAgIGlmICh0aGlzLmZvY3VzZWQpIHtcbiAgICAgICAgICAgIHRoaXMua2V5Ym9hcmQuaGlkZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdHVpSXNFbGVtZW50KGV2ZW50LnRhcmdldCkgJiZcbiAgICAgICAgICAgICF0aGlzLmVsLmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiZcbiAgICAgICAgICAgICghdGhpcy5kcm9wZG93bi5lbC5jb250YWlucyhldmVudC50YXJnZXQpIHx8XG4gICAgICAgICAgICAgICAgZXZlbnQudGFyZ2V0Lm1hdGNoZXMoJ2lucHV0LHRleHRhcmVhJykpXG4gICAgICAgICkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Td2lwZSh7ZGlyZWN0aW9ufTogVHVpU3dpcGVFdmVudCwgZWw6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGRpcmVjdGlvbiA9PT0gJ2JvdHRvbScgJiZcbiAgICAgICAgICAgIGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSA+IE51bWJlcih0aGlzLmRvYy5kZWZhdWx0Vmlldz8uaW5uZXJIZWlnaHQpXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uSW50ZXJzZWN0aW9uKFt7aXNJbnRlcnNlY3Rpbmd9XTogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeVtdKTogdm9pZCB7XG4gICAgICAgIGlmIChpc0ludGVyc2VjdGluZykge1xuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRyb3Bkb3duLnRvZ2dsZShmYWxzZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlZnJlc2goe29mZnNldFRvcCwgaGVpZ2h0fTogVmlzdWFsVmlld3BvcnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kb2MuYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS10LXJvb3QtdG9wJyk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIXRoaXMuZm9jdXNlZCB8fFxuICAgICAgICAgICAgdGhpcy5kaXJlY3RpdmUudHVpRHJvcGRvd25Nb2JpbGUgfHxcbiAgICAgICAgICAgICF0aGlzLmRvYy5kb2N1bWVudEVsZW1lbnQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnc2Nyb2xsLWJlaGF2aW9yJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRvYy5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcblxuICAgICAgICBjb25zdCByZWN0ID0gdGhpcy5kcm9wZG93bi5lbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgdG9wID0gb2Zmc2V0VG9wICsgR0FQIC0gcmVjdC50b3A7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IHJlY3QuaGVpZ2h0ICsgR0FQICogMjtcblxuICAgICAgICB0aGlzLmVsLnN0eWxlLnNldFByb3BlcnR5KCd0b3AnLCB0dWlQeChvZmZzZXRUb3AgKyBvZmZzZXQpKTtcbiAgICAgICAgdGhpcy5lbC5zdHlsZS5zZXRQcm9wZXJ0eSgnaGVpZ2h0JywgdHVpUHgoaGVpZ2h0IC0gb2Zmc2V0KSk7XG4gICAgICAgIHRoaXMuZG9jLmJvZHkuY2xhc3NMaXN0LmFkZCgndC1kcm9wZG93bi1tb2JpbGUnKTtcbiAgICAgICAgdGhpcy5kb2MuYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS10LXJvb3QtdG9wJywgdHVpUHgodG9wKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgZm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZHJvcGRvd24uZWwuY29udGFpbnModHVpR2V0TmF0aXZlRm9jdXNlZCh0aGlzLmRvYykpO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICAqbmdJZj1cImRpcmVjdGl2ZS50dWlEcm9wZG93bk1vYmlsZVwiXG4gICAgd2FJbnRlcnNlY3Rpb25PYnNlcnZlclxuICAgIHdhSW50ZXJzZWN0aW9uVGhyZXNob2xkPVwiMVwiXG4gICAgY2xhc3M9XCJ0LWZpbGxlclwiXG4gICAgKHRvdWNoc3RhcnQucHJldmVudCk9XCJjbG9zZSgpXCJcbiAgICAod2FJbnRlcnNlY3Rpb25PYnNlcnZlZSk9XCJvbkludGVyc2VjdGlvbigkZXZlbnQpXCJcbj48L2Rpdj5cbjxkaXZcbiAgICAjY29udGFpbmVyXG4gICAgY2xhc3M9XCJ0LWNvbnRhaW5lclwiXG4gICAgKHR1aVN3aXBlKT1cIm9uU3dpcGUoJGV2ZW50LCBjb250YWluZXIpXCJcbj5cbiAgICA8aDJcbiAgICAgICAgKm5nSWY9XCJkaXJlY3RpdmUudHVpRHJvcGRvd25Nb2JpbGVcIlxuICAgICAgICBjbGFzcz1cInQtaGVhZGluZ1wiXG4gICAgPlxuICAgICAgICB7eyBkaXJlY3RpdmUudHVpRHJvcGRvd25Nb2JpbGUgfX1cbiAgICA8L2gyPlxuICAgIDxkaXYgY2xhc3M9XCJ0LWNvbnRlbnRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqcG9seW1vcnBoZXVzT3V0bGV0PVwiZHJvcGRvd24uY29udGVudCBhcyB0ZXh0XCI+XG4gICAgICAgICAgICB7eyB0ZXh0IH19XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -313,7 +313,7 @@ class TuiMobileCalendar {
|
|
|
313
313
|
if (!(this.value instanceof TuiDayRange)) {
|
|
314
314
|
return this.value?.[0]?.year ?? this.today.year;
|
|
315
315
|
}
|
|
316
|
-
return this.value.
|
|
316
|
+
return this.value.to.year;
|
|
317
317
|
}
|
|
318
318
|
get initialMonth() {
|
|
319
319
|
if (!this.value) {
|
|
@@ -327,8 +327,7 @@ class TuiMobileCalendar {
|
|
|
327
327
|
((this.value?.[0]?.year ?? this.today.year) - STARTING_YEAR) *
|
|
328
328
|
MONTHS_IN_YEAR);
|
|
329
329
|
}
|
|
330
|
-
return (this.value.
|
|
331
|
-
(this.value.from.year - STARTING_YEAR) * MONTHS_IN_YEAR);
|
|
330
|
+
return (this.value.to.month + (this.value.to.year - STARTING_YEAR) * MONTHS_IN_YEAR);
|
|
332
331
|
}
|
|
333
332
|
isMultiValue(day) {
|
|
334
333
|
return !(day instanceof TuiDay) && !(day instanceof TuiDayRange) && this.multi;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-addon-mobile-components-mobile-calendar.mjs","sources":["../../../projects/addon-mobile/components/mobile-calendar/mobile-calendar.const.ts","../../../projects/addon-mobile/components/mobile-calendar/mobile-calendar.strategy.ts","../../../projects/addon-mobile/components/mobile-calendar/mobile-calendar.providers.ts","../../../projects/addon-mobile/components/mobile-calendar/mobile-calendar.component.ts","../../../projects/addon-mobile/components/mobile-calendar/mobile-calendar.template.html","../../../projects/addon-mobile/components/mobile-calendar/taiga-ui-addon-mobile-components-mobile-calendar.ts"],"sourcesContent":["import {MONTHS_IN_YEAR} from '@taiga-ui/cdk/date-time';\n\nfunction getCycle(options: {\n label: number;\n week: number;\n yearCycle: number;\n startingYear: number;\n}): ReadonlyArray<readonly number[]> {\n return Array.from({length: options.yearCycle}, (_, i) =>\n Array.from(\n {length: MONTHS_IN_YEAR},\n (_, month) =>\n options.label +\n weekCount({year: i, month, startingYear: options.startingYear}) *\n options.week,\n ),\n );\n}\n\nfunction weekCount(options: {year: number; month: number; startingYear: number}): number {\n const firstOfMonth = new Date(options.year + options.startingYear, options.month, 1);\n const lastOfMonth = new Date(\n options.year + options.startingYear,\n options.month + 1,\n 0,\n );\n const days = lastOfMonth.getDate() + (firstOfMonth.getDay() || 7) - 1;\n\n return Math.ceil(days / 7);\n}\n\nexport const SCROLL_DEBOUNCE_TIME = 80;\nexport const YEARS_IN_ROW = 5;\nexport const STARTING_YEAR = 1900;\nexport const RANGE = 196;\nexport const BUFFER = 500;\nexport const ANDROID_LABEL = 64;\nexport const ANDROID_WEEK = 48;\nexport const IOS_LABEL = 50;\nexport const IOS_WEEK = 50;\nexport const YEARLY_CYCLE = 28;\n\nexport const ANDROID_CYCLE = getCycle({\n label: ANDROID_LABEL,\n week: ANDROID_WEEK,\n yearCycle: YEARLY_CYCLE,\n startingYear: STARTING_YEAR,\n});\n\nexport const IOS_CYCLE = getCycle({\n label: IOS_LABEL,\n week: IOS_WEEK,\n yearCycle: YEARLY_CYCLE,\n startingYear: STARTING_YEAR,\n});\n","import type {\n CdkVirtualScrollViewport,\n VirtualScrollStrategy,\n} from '@angular/cdk/scrolling';\nimport {MONTHS_IN_YEAR} from '@taiga-ui/cdk/date-time';\nimport type {TuiScrollService} from '@taiga-ui/cdk/services';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {Observable} from 'rxjs';\nimport {distinctUntilChanged, Subject, takeUntil} from 'rxjs';\n\nimport {\n ANDROID_CYCLE,\n BUFFER,\n IOS_CYCLE,\n RANGE,\n YEARLY_CYCLE,\n} from './mobile-calendar.const';\n\nconst ANDROID_CYCLE_HEIGHT = reduceCycle(ANDROID_CYCLE);\nconst IOS_CYCLE_HEIGHT = reduceCycle(IOS_CYCLE);\n\nfunction reduceCycle(\n cycle: ReadonlyArray<readonly number[]>,\n lastYear = 28,\n lastMonth = 12,\n): number {\n return cycle.reduce(\n (total, year, yearIndex) =>\n yearIndex <= lastYear\n ? total +\n year.reduce(\n (sum, month, monthIndex) =>\n yearIndex < lastYear ||\n (yearIndex === lastYear && monthIndex < lastMonth)\n ? sum + month\n : sum,\n 0,\n )\n : total,\n 0,\n );\n}\n\n/**\n * This scroll strategy is hard wired with styles for iOS and Android.\n * It is dependent on month height on those platforms and is designed to\n * work for {@link TuiMobileCalendar} with years 1906 to 2102\n */\nexport class TuiMobileCalendarStrategy implements VirtualScrollStrategy {\n private readonly index$ = new Subject<number>();\n\n private viewport: CdkVirtualScrollViewport | null = null;\n\n private readonly destroy$ = new Subject<void>();\n\n constructor(\n private readonly isIOS: boolean,\n private readonly scrollService: TuiScrollService,\n ) {}\n\n @tuiPure\n public get scrolledIndexChange(): Observable<number> {\n return this.index$.pipe(distinctUntilChanged());\n }\n\n public attach(viewport: CdkVirtualScrollViewport): void {\n const cycle = this.isIOS ? IOS_CYCLE_HEIGHT : ANDROID_CYCLE_HEIGHT;\n\n this.viewport = viewport;\n this.viewport.setTotalContentSize(cycle * 7);\n this.updateRenderedRange(this.viewport);\n }\n\n public detach(): void {\n this.index$.complete();\n this.viewport = null;\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n public onContentScrolled(): void {\n if (this.viewport) {\n this.updateRenderedRange(this.viewport);\n }\n }\n\n /** These do not matter for this case */\n public onDataLengthChanged(): void {}\n public onContentRendered(): void {}\n public onRenderedOffsetChanged(): void {}\n\n public scrollToIndex(index: number, behavior: ScrollBehavior): void {\n if (!this.viewport) {\n return;\n }\n\n const scrollTop = this.getOffsetForIndex(index);\n\n if (behavior !== 'smooth') {\n this.viewport.scrollToOffset(scrollTop, behavior);\n\n return;\n }\n\n this.scrollService\n .scroll$(this.viewport.elementRef.nativeElement, scrollTop)\n .pipe(takeUntil(this.destroy$))\n .subscribe();\n }\n\n private getOffsetForIndex(index: number): number {\n const month = index % MONTHS_IN_YEAR;\n const year = (index - month) / MONTHS_IN_YEAR;\n\n return this.computeHeight(year, month);\n }\n\n private getIndexForOffset(offset: number): number {\n const cycle = this.isIOS ? IOS_CYCLE : ANDROID_CYCLE;\n const cycleHeight = this.isIOS ? IOS_CYCLE_HEIGHT : ANDROID_CYCLE_HEIGHT;\n const remainder = offset % cycleHeight;\n const years = ((offset - remainder) / cycleHeight) * YEARLY_CYCLE;\n\n let accumulator = 0;\n\n for (let year = 0; year < cycle.length; year++) {\n for (let month = 0; month < cycle[year].length; month++) {\n accumulator += cycle[year][month];\n\n if (accumulator - cycle[year][month] / 2 > remainder) {\n return Math.max((years + year) * MONTHS_IN_YEAR + month, 0);\n }\n }\n }\n\n return RANGE;\n }\n\n private computeHeight(year: number, month?: number): number {\n const cycle = this.isIOS ? IOS_CYCLE : ANDROID_CYCLE;\n const remainder = year % YEARLY_CYCLE;\n const remainderHeight = reduceCycle(cycle, remainder, month);\n const fullCycles = (year - remainder) / YEARLY_CYCLE;\n const fullCyclesHeight = this.isIOS\n ? fullCycles * IOS_CYCLE_HEIGHT\n : fullCycles * ANDROID_CYCLE_HEIGHT;\n\n return fullCyclesHeight + remainderHeight;\n }\n\n private updateRenderedRange(viewport: CdkVirtualScrollViewport): void {\n const offset = viewport.measureScrollOffset();\n const {start, end} = viewport.getRenderedRange();\n const viewportSize = viewport.getViewportSize();\n const dataLength = viewport.getDataLength();\n const newRange = {start, end};\n const firstVisibleIndex = this.getIndexForOffset(offset);\n const startBuffer = offset - this.getOffsetForIndex(start);\n\n if (startBuffer < BUFFER && start !== 0) {\n newRange.start = Math.max(0, this.getIndexForOffset(offset - BUFFER * 2));\n newRange.end = Math.min(\n dataLength,\n this.getIndexForOffset(offset + viewportSize + BUFFER),\n );\n } else {\n const endBuffer = this.getOffsetForIndex(end) - offset - viewportSize;\n\n if (endBuffer < BUFFER && end !== dataLength) {\n newRange.start = Math.max(0, this.getIndexForOffset(offset - BUFFER));\n newRange.end = Math.min(\n dataLength,\n this.getIndexForOffset(offset + viewportSize + BUFFER * 2),\n );\n }\n }\n\n viewport.setRenderedRange(newRange);\n viewport.setRenderedContentOffset(this.getOffsetForIndex(newRange.start));\n this.index$.next(firstVisibleIndex);\n }\n}\n","import {VIRTUAL_SCROLL_STRATEGY} from '@angular/cdk/scrolling';\nimport type {Provider} from '@angular/core';\nimport {ChangeDetectorRef, InjectionToken, Optional} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport type {TuiDayRange} from '@taiga-ui/cdk/date-time';\nimport {tuiWatch} from '@taiga-ui/cdk/observables';\nimport {TuiScrollService} from '@taiga-ui/cdk/services';\nimport {TUI_IS_IOS} from '@taiga-ui/cdk/tokens';\nimport {TUI_CALENDAR_DATE_STREAM} from '@taiga-ui/kit/tokens';\nimport type {Observable} from 'rxjs';\nimport {EMPTY} from 'rxjs';\n\nimport {TuiMobileCalendarStrategy} from './mobile-calendar.strategy';\n\n/**\n * Stream for updating value\n */\nexport const TUI_VALUE_STREAM = new InjectionToken<Observable<TuiDayRange | null>>(\n '[TUI_VALUE_STREAM]',\n);\n\nexport const TUI_MOBILE_CALENDAR_PROVIDERS: Provider[] = [\n TuiScrollService,\n {\n provide: VIRTUAL_SCROLL_STRATEGY,\n deps: [TUI_IS_IOS, TuiScrollService],\n useClass: TuiMobileCalendarStrategy,\n },\n {\n provide: TUI_VALUE_STREAM,\n deps: [[new Optional(), TUI_CALENDAR_DATE_STREAM], ChangeDetectorRef],\n useFactory: (\n value$: Observable<TuiDayRange | null> | null,\n cdr: ChangeDetectorRef,\n ): Observable<TuiDayRange | null> =>\n (value$ || EMPTY).pipe(tuiWatch(cdr), takeUntilDestroyed()),\n },\n];\n","import {\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollViewport,\n} from '@angular/cdk/scrolling';\nimport {AsyncPipe, DOCUMENT, NgForOf, NgIf} from '@angular/common';\nimport type {AfterViewInit} from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n EventEmitter,\n inject,\n Input,\n NgZone,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TuiMobileCalendarSheet} from '@taiga-ui/addon-mobile/components/mobile-calendar-sheet';\nimport {TuiRipple, TuiTouchable} from '@taiga-ui/addon-mobile/directives';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {\n MONTHS_IN_YEAR,\n TUI_FIRST_DAY,\n TUI_LAST_DAY,\n TuiDay,\n TuiDayRange,\n TuiMonth,\n} from '@taiga-ui/cdk/date-time';\nimport {tuiTypedFromEvent, tuiZonefree} from '@taiga-ui/cdk/observables';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {TUI_IS_E2E, TUI_IS_IOS} from '@taiga-ui/cdk/tokens';\nimport type {TuiBooleanHandler, TuiMapper} from '@taiga-ui/cdk/types';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiLink} from '@taiga-ui/core/components/link';\nimport {TuiMonthPipe} from '@taiga-ui/core/pipes/month';\nimport {TuiOrderWeekDaysPipe} from '@taiga-ui/core/pipes/order-week-days';\nimport {\n TUI_ANIMATIONS_SPEED,\n TUI_CLOSE_WORD,\n TUI_COMMON_ICONS,\n TUI_SHORT_WEEK_DAYS,\n} from '@taiga-ui/core/tokens';\nimport {tuiGetDuration} from '@taiga-ui/core/utils/miscellaneous';\nimport {\n TUI_CANCEL_WORD,\n TUI_CHOOSE_DAY_OR_RANGE_TEXTS,\n TUI_DONE_WORD,\n} from '@taiga-ui/kit/tokens';\nimport {tuiToggleDay} from '@taiga-ui/kit/utils';\nimport type {MonoTypeOperatorFunction} from 'rxjs';\nimport {\n debounceTime,\n delay,\n filter,\n identity,\n map,\n mergeMap,\n race,\n switchMap,\n take,\n takeUntil,\n timer,\n windowToggle,\n} from 'rxjs';\n\nimport {\n RANGE,\n SCROLL_DEBOUNCE_TIME,\n STARTING_YEAR,\n YEARS_IN_ROW,\n} from './mobile-calendar.const';\nimport {\n TUI_MOBILE_CALENDAR_PROVIDERS,\n TUI_VALUE_STREAM,\n} from './mobile-calendar.providers';\n\n@Component({\n standalone: true,\n selector: 'tui-mobile-calendar',\n imports: [\n TuiButton,\n AsyncPipe,\n TuiRipple,\n TuiLink,\n TuiTouchable,\n CdkFixedSizeVirtualScroll,\n CdkVirtualScrollViewport,\n CdkVirtualForOf,\n TuiOrderWeekDaysPipe,\n TuiMobileCalendarSheet,\n TuiMonthPipe,\n NgForOf,\n NgIf,\n TuiMapperPipe,\n ],\n templateUrl: './mobile-calendar.template.html',\n styleUrls: ['./mobile-calendar.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: TUI_MOBILE_CALENDAR_PROVIDERS,\n host: {\n '[class._ios]': 'isIOS',\n '[class._initialized]': 'initialized',\n },\n})\nexport class TuiMobileCalendar implements AfterViewInit {\n @ViewChild('yearsScrollRef')\n private readonly yearsScrollRef?: CdkVirtualScrollViewport;\n\n @ViewChild('monthsScrollRef')\n private readonly monthsScrollRef?: CdkVirtualScrollViewport;\n\n private readonly today = TuiDay.currentLocal();\n private activeYear = 0;\n private activeMonth = 0;\n private readonly destroyRef = inject(DestroyRef);\n private readonly doc = inject(DOCUMENT);\n private readonly speed = inject(TUI_ANIMATIONS_SPEED);\n private readonly ngZone = inject(NgZone);\n\n protected initialized = false;\n protected value: TuiDay | TuiDayRange | readonly TuiDay[] | null = null;\n protected readonly isIOS = inject(TUI_IS_IOS);\n protected readonly isE2E = inject(TUI_IS_E2E);\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly closeWord$ = inject(TUI_CLOSE_WORD);\n protected readonly cancelWord$ = inject(TUI_CANCEL_WORD);\n protected readonly doneWord$ = inject(TUI_DONE_WORD);\n protected readonly unorderedWeekDays$ = inject(TUI_SHORT_WEEK_DAYS);\n protected readonly chooseDayOrRangeTexts$ = inject(TUI_CHOOSE_DAY_OR_RANGE_TEXTS);\n protected readonly years = Array.from({length: RANGE}, (_, i) => i + STARTING_YEAR);\n protected readonly months = Array.from(\n {length: RANGE * 12},\n (_, i) =>\n new TuiMonth(\n Math.floor(i / MONTHS_IN_YEAR) + STARTING_YEAR,\n i % MONTHS_IN_YEAR,\n ),\n );\n\n @Input()\n public single = true;\n\n @Input()\n public multi = false;\n\n @Input()\n public min = TUI_FIRST_DAY;\n\n @Input()\n public max = TUI_LAST_DAY;\n\n @Input()\n public disabledItemHandler: TuiBooleanHandler<TuiDay> = TUI_FALSE_HANDLER;\n\n @Output()\n public readonly cancel = new EventEmitter<void>();\n\n @Output()\n public readonly confirm = new EventEmitter<\n TuiDay | TuiDayRange | readonly TuiDay[]\n >();\n\n constructor() {\n inject(TUI_VALUE_STREAM)\n .pipe(takeUntilDestroyed())\n .subscribe((value) => {\n this.value = value;\n });\n }\n\n public ngAfterViewInit(): void {\n this.activeYear = this.initialYear;\n this.activeMonth = this.initialMonth;\n\n // Virtual scroll has not yet rendered items even in ngAfterViewInit\n this.waitScrolledChange();\n }\n\n public setYear(year: number): void {\n if (this.activeYear === year) {\n return;\n }\n\n this.activeMonth += this.getMonthOffset(year);\n this.activeYear = year;\n this.scrollToActiveYear('smooth');\n\n timer(0)\n .pipe(tuiZonefree(this.ngZone), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.scrollToActiveMonth());\n }\n\n protected get yearWidth(): number {\n return this.doc.documentElement.clientWidth / YEARS_IN_ROW;\n }\n\n protected onClose(): void {\n this.cancel.emit();\n }\n\n protected onConfirm(): void {\n if (this.value) {\n this.confirm.emit(this.value);\n } else {\n this.cancel.emit();\n }\n }\n\n protected onDayClick(day: TuiDay): void {\n if (this.single) {\n this.value = day;\n } else if (this.isMultiValue(this.value)) {\n this.value = tuiToggleDay(this.value, day);\n } else if (this.isSingleValue(this.value)) {\n this.value = new TuiDayRange(day, day);\n } else if (this.value instanceof TuiDayRange) {\n this.value = TuiDayRange.sort(this.value.from, day);\n } else if (!this.value) {\n this.value = new TuiDayRange(day, day);\n }\n }\n\n protected getState(index: number): 'active' | 'adjacent' | null {\n if (this.isYearActive(index)) {\n return 'active';\n }\n\n if (this.isYearActive(index - 1) || this.isYearActive(index + 1)) {\n return 'adjacent';\n }\n\n return null;\n }\n\n protected onMonthChange(month: number): void {\n // Skipping initial callback where index === 0\n if (!month || this.activeMonth === month) {\n return;\n }\n\n this.activeMonth = month;\n\n const activeYear = this.monthToYear(month);\n\n if (activeYear === this.activeYear) {\n return;\n }\n\n this.activeYear = activeYear;\n this.scrollToActiveYear();\n }\n\n protected readonly disabledItemHandlerMapper: TuiMapper<\n [TuiBooleanHandler<TuiDay>, TuiDay, TuiDay],\n TuiBooleanHandler<TuiDay>\n > = (disabledItemHandler, min, max) => (item) =>\n item.dayBefore(min) ||\n (max !== null && item.dayAfter(max)) ||\n disabledItemHandler(item);\n\n private get initialYear(): number {\n if (!this.value) {\n return this.today.year;\n }\n\n if (this.value instanceof TuiDay) {\n return this.value.year;\n }\n\n if (!(this.value instanceof TuiDayRange)) {\n return this.value?.[0]?.year ?? this.today.year;\n }\n\n return this.value.from.year;\n }\n\n private get initialMonth(): number {\n if (!this.value) {\n return this.today.month + (this.today.year - STARTING_YEAR) * MONTHS_IN_YEAR;\n }\n\n if (this.value instanceof TuiDay) {\n return this.value.month + (this.value.year - STARTING_YEAR) * MONTHS_IN_YEAR;\n }\n\n if (!(this.value instanceof TuiDayRange)) {\n return (\n (this.value?.[0]?.month ?? this.today.month) +\n ((this.value?.[0]?.year ?? this.today.year) - STARTING_YEAR) *\n MONTHS_IN_YEAR\n );\n }\n\n return (\n this.value.from.month +\n (this.value.from.year - STARTING_YEAR) * MONTHS_IN_YEAR\n );\n }\n\n private isMultiValue(day: any): day is readonly TuiDay[] | undefined {\n return !(day instanceof TuiDay) && !(day instanceof TuiDayRange) && this.multi;\n }\n\n private isSingleValue(day: any): day is TuiDay {\n return day instanceof TuiDay || (day instanceof TuiDayRange && !day.isSingleDay);\n }\n\n private getYearsViewportSize(): number {\n return this.yearsScrollRef?.getViewportSize() || 0;\n }\n\n private updateViewportDimension(): void {\n this.yearsScrollRef?.checkViewportSize();\n this.monthsScrollRef?.checkViewportSize();\n }\n\n private lateInit(): MonoTypeOperatorFunction<number> {\n return this.getYearsViewportSize() > 0 ? identity : delay(200);\n }\n\n private waitScrolledChange(): void {\n this.updateViewportDimension();\n\n this.monthsScrollRef?.scrolledIndexChange\n .pipe(\n delay(tuiGetDuration(this.speed)),\n this.lateInit(),\n take(1),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() => {\n this.initialized = true;\n this.updateViewportDimension();\n this.initYearScroll();\n this.initMonthScroll();\n this.scrollToActiveYear();\n this.scrollToActiveMonth();\n });\n }\n\n private initYearScroll(): void {\n const {yearsScrollRef} = this;\n\n if (!yearsScrollRef) {\n return;\n }\n\n const touchstart$ = tuiTypedFromEvent(\n yearsScrollRef.elementRef.nativeElement,\n 'touchstart',\n {passive: true},\n );\n const touchend$ = tuiTypedFromEvent(\n yearsScrollRef.elementRef.nativeElement,\n 'touchend',\n {passive: true},\n );\n const click$ = tuiTypedFromEvent(\n yearsScrollRef.elementRef.nativeElement,\n 'click',\n );\n\n // Refresh activeYear\n yearsScrollRef\n .elementScrolled()\n .pipe(\n // Ignore smooth scroll resulting from click on the exact year\n windowToggle(touchstart$, () => click$),\n mergeMap((x) => x),\n // Delay is required to run months scroll in the next frame to prevent flicker\n delay(0),\n map(\n () =>\n Math.round(\n yearsScrollRef.measureScrollOffset() / this.yearWidth,\n ) +\n Math.floor(YEARS_IN_ROW / 2) +\n STARTING_YEAR,\n ),\n filter((activeYear) => activeYear !== this.activeYear),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe((activeYear) => {\n this.activeMonth += this.getMonthOffset(activeYear);\n this.activeYear = activeYear;\n this.scrollToActiveMonth();\n });\n\n // Smooth scroll to activeYear after scrolling is done\n touchstart$\n .pipe(\n switchMap(() => touchend$),\n switchMap(() =>\n race(\n yearsScrollRef.elementScrolled(),\n timer(SCROLL_DEBOUNCE_TIME),\n ).pipe(\n debounceTime(SCROLL_DEBOUNCE_TIME * 2),\n take(1),\n takeUntil(touchstart$),\n ),\n ),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() => this.scrollToActiveYear('smooth'));\n }\n\n private initMonthScroll(): void {\n const {monthsScrollRef} = this;\n\n if (!monthsScrollRef) {\n return;\n }\n\n const touchstart$ = tuiTypedFromEvent(\n monthsScrollRef.elementRef.nativeElement,\n 'touchstart',\n {passive: true},\n );\n const touchend$ = tuiTypedFromEvent(\n monthsScrollRef.elementRef.nativeElement,\n 'touchend',\n {passive: true},\n );\n\n // Smooth scroll to the closest month after scrolling is done\n touchstart$\n .pipe(\n switchMap(() => touchend$),\n switchMap(() =>\n race(\n monthsScrollRef.elementScrolled(),\n timer(SCROLL_DEBOUNCE_TIME),\n ).pipe(\n debounceTime(SCROLL_DEBOUNCE_TIME * 2),\n take(1),\n takeUntil(touchstart$),\n ),\n ),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() => this.scrollToActiveMonth('smooth'));\n }\n\n private scrollToActiveYear(behavior: ScrollBehavior = 'auto'): void {\n this.yearsScrollRef?.scrollToIndex(\n Math.max(this.activeYear - STARTING_YEAR - 2, 0),\n this.isE2E ? 'auto' : behavior,\n );\n }\n\n private scrollToActiveMonth(behavior: ScrollBehavior = 'auto'): void {\n this.monthsScrollRef?.scrollToIndex(\n this.activeMonth,\n this.isE2E ? 'auto' : behavior,\n );\n }\n\n private isYearActive(index: number): boolean {\n return index === this.activeYear;\n }\n\n private monthToYear(month: number): number {\n return Math.ceil((month + 1) / MONTHS_IN_YEAR) + STARTING_YEAR - 1;\n }\n\n private getMonthOffset(year: number): number {\n return (year - this.activeYear) * MONTHS_IN_YEAR;\n }\n}\n","<header class=\"t-header\">\n <button\n appearance=\"\"\n automation-id=\"tui-mobile-calendar__cancel\"\n tuiIconButton\n tuiRipple\n type=\"button\"\n class=\"t-close\"\n [iconStart]=\"icons.close\"\n [style.border-radius.%]=\"100\"\n (click)=\"onClose()\"\n >\n {{ closeWord$ | async }}\n </button>\n <button\n tuiLink\n tuiTouchable=\"opacity\"\n type=\"button\"\n class=\"t-link t-link_close\"\n (click)=\"onClose()\"\n >\n {{ cancelWord$ | async }}\n </button>\n <h2\n *ngIf=\"chooseDayOrRangeTexts$ | async as texts\"\n automation-id=\"tui-mobile-calendar__label\"\n class=\"t-label\"\n >\n {{ single ? texts?.[0] : multi ? texts?.[2] : texts?.[1] }}\n </h2>\n <button\n automation-id=\"tui-mobile-calendar__confirm\"\n tuiLink\n tuiTouchable=\"opacity\"\n type=\"button\"\n class=\"t-link\"\n (click)=\"onConfirm()\"\n >\n {{ doneWord$ | async }}\n </button>\n</header>\n<cdk-virtual-scroll-viewport\n #yearsScrollRef\n orientation=\"horizontal\"\n class=\"t-years\"\n [itemSize]=\"yearWidth\"\n>\n <div class=\"t-years-wrapper\">\n <button\n *cdkVirtualFor=\"let index of years\"\n type=\"button\"\n class=\"t-year\"\n [attr.data-state]=\"getState(index)\"\n (click)=\"setYear(index)\"\n >\n {{ index }}\n </button>\n </div>\n</cdk-virtual-scroll-viewport>\n<div class=\"t-week\">\n <div\n *ngFor=\"let day of unorderedWeekDays$ | tuiOrderWeekDays | async\"\n class=\"t-day\"\n >\n {{ day }}\n </div>\n</div>\n<cdk-virtual-scroll-viewport\n #monthsScrollRef\n class=\"t-months\"\n (scrolledIndexChange)=\"onMonthChange($event)\"\n>\n <section\n *cdkVirtualFor=\"let month of months; templateCacheSize: 10\"\n class=\"t-month-wrapper\"\n >\n <h2 class=\"t-month\">{{ month | tuiMonth | async }}</h2>\n <tui-mobile-calendar-sheet\n class=\"t-calendar\"\n [disabledItemHandler]=\"disabledItemHandler | tuiMapper: disabledItemHandlerMapper : min : max\"\n [month]=\"month\"\n [value]=\"value\"\n (dayClick)=\"onDayClick($event)\"\n />\n </section>\n</cdk-virtual-scroll-viewport>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taiga-ui-addon-mobile-components-mobile-calendar.mjs","sources":["../../../projects/addon-mobile/components/mobile-calendar/mobile-calendar.const.ts","../../../projects/addon-mobile/components/mobile-calendar/mobile-calendar.strategy.ts","../../../projects/addon-mobile/components/mobile-calendar/mobile-calendar.providers.ts","../../../projects/addon-mobile/components/mobile-calendar/mobile-calendar.component.ts","../../../projects/addon-mobile/components/mobile-calendar/mobile-calendar.template.html","../../../projects/addon-mobile/components/mobile-calendar/taiga-ui-addon-mobile-components-mobile-calendar.ts"],"sourcesContent":["import {MONTHS_IN_YEAR} from '@taiga-ui/cdk/date-time';\n\nfunction getCycle(options: {\n label: number;\n week: number;\n yearCycle: number;\n startingYear: number;\n}): ReadonlyArray<readonly number[]> {\n return Array.from({length: options.yearCycle}, (_, i) =>\n Array.from(\n {length: MONTHS_IN_YEAR},\n (_, month) =>\n options.label +\n weekCount({year: i, month, startingYear: options.startingYear}) *\n options.week,\n ),\n );\n}\n\nfunction weekCount(options: {year: number; month: number; startingYear: number}): number {\n const firstOfMonth = new Date(options.year + options.startingYear, options.month, 1);\n const lastOfMonth = new Date(\n options.year + options.startingYear,\n options.month + 1,\n 0,\n );\n const days = lastOfMonth.getDate() + (firstOfMonth.getDay() || 7) - 1;\n\n return Math.ceil(days / 7);\n}\n\nexport const SCROLL_DEBOUNCE_TIME = 80;\nexport const YEARS_IN_ROW = 5;\nexport const STARTING_YEAR = 1900;\nexport const RANGE = 196;\nexport const BUFFER = 500;\nexport const ANDROID_LABEL = 64;\nexport const ANDROID_WEEK = 48;\nexport const IOS_LABEL = 50;\nexport const IOS_WEEK = 50;\nexport const YEARLY_CYCLE = 28;\n\nexport const ANDROID_CYCLE = getCycle({\n label: ANDROID_LABEL,\n week: ANDROID_WEEK,\n yearCycle: YEARLY_CYCLE,\n startingYear: STARTING_YEAR,\n});\n\nexport const IOS_CYCLE = getCycle({\n label: IOS_LABEL,\n week: IOS_WEEK,\n yearCycle: YEARLY_CYCLE,\n startingYear: STARTING_YEAR,\n});\n","import type {\n CdkVirtualScrollViewport,\n VirtualScrollStrategy,\n} from '@angular/cdk/scrolling';\nimport {MONTHS_IN_YEAR} from '@taiga-ui/cdk/date-time';\nimport type {TuiScrollService} from '@taiga-ui/cdk/services';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {Observable} from 'rxjs';\nimport {distinctUntilChanged, Subject, takeUntil} from 'rxjs';\n\nimport {\n ANDROID_CYCLE,\n BUFFER,\n IOS_CYCLE,\n RANGE,\n YEARLY_CYCLE,\n} from './mobile-calendar.const';\n\nconst ANDROID_CYCLE_HEIGHT = reduceCycle(ANDROID_CYCLE);\nconst IOS_CYCLE_HEIGHT = reduceCycle(IOS_CYCLE);\n\nfunction reduceCycle(\n cycle: ReadonlyArray<readonly number[]>,\n lastYear = 28,\n lastMonth = 12,\n): number {\n return cycle.reduce(\n (total, year, yearIndex) =>\n yearIndex <= lastYear\n ? total +\n year.reduce(\n (sum, month, monthIndex) =>\n yearIndex < lastYear ||\n (yearIndex === lastYear && monthIndex < lastMonth)\n ? sum + month\n : sum,\n 0,\n )\n : total,\n 0,\n );\n}\n\n/**\n * This scroll strategy is hard wired with styles for iOS and Android.\n * It is dependent on month height on those platforms and is designed to\n * work for {@link TuiMobileCalendar} with years 1906 to 2102\n */\nexport class TuiMobileCalendarStrategy implements VirtualScrollStrategy {\n private readonly index$ = new Subject<number>();\n\n private viewport: CdkVirtualScrollViewport | null = null;\n\n private readonly destroy$ = new Subject<void>();\n\n constructor(\n private readonly isIOS: boolean,\n private readonly scrollService: TuiScrollService,\n ) {}\n\n @tuiPure\n public get scrolledIndexChange(): Observable<number> {\n return this.index$.pipe(distinctUntilChanged());\n }\n\n public attach(viewport: CdkVirtualScrollViewport): void {\n const cycle = this.isIOS ? IOS_CYCLE_HEIGHT : ANDROID_CYCLE_HEIGHT;\n\n this.viewport = viewport;\n this.viewport.setTotalContentSize(cycle * 7);\n this.updateRenderedRange(this.viewport);\n }\n\n public detach(): void {\n this.index$.complete();\n this.viewport = null;\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n public onContentScrolled(): void {\n if (this.viewport) {\n this.updateRenderedRange(this.viewport);\n }\n }\n\n /** These do not matter for this case */\n public onDataLengthChanged(): void {}\n public onContentRendered(): void {}\n public onRenderedOffsetChanged(): void {}\n\n public scrollToIndex(index: number, behavior: ScrollBehavior): void {\n if (!this.viewport) {\n return;\n }\n\n const scrollTop = this.getOffsetForIndex(index);\n\n if (behavior !== 'smooth') {\n this.viewport.scrollToOffset(scrollTop, behavior);\n\n return;\n }\n\n this.scrollService\n .scroll$(this.viewport.elementRef.nativeElement, scrollTop)\n .pipe(takeUntil(this.destroy$))\n .subscribe();\n }\n\n private getOffsetForIndex(index: number): number {\n const month = index % MONTHS_IN_YEAR;\n const year = (index - month) / MONTHS_IN_YEAR;\n\n return this.computeHeight(year, month);\n }\n\n private getIndexForOffset(offset: number): number {\n const cycle = this.isIOS ? IOS_CYCLE : ANDROID_CYCLE;\n const cycleHeight = this.isIOS ? IOS_CYCLE_HEIGHT : ANDROID_CYCLE_HEIGHT;\n const remainder = offset % cycleHeight;\n const years = ((offset - remainder) / cycleHeight) * YEARLY_CYCLE;\n\n let accumulator = 0;\n\n for (let year = 0; year < cycle.length; year++) {\n for (let month = 0; month < cycle[year].length; month++) {\n accumulator += cycle[year][month];\n\n if (accumulator - cycle[year][month] / 2 > remainder) {\n return Math.max((years + year) * MONTHS_IN_YEAR + month, 0);\n }\n }\n }\n\n return RANGE;\n }\n\n private computeHeight(year: number, month?: number): number {\n const cycle = this.isIOS ? IOS_CYCLE : ANDROID_CYCLE;\n const remainder = year % YEARLY_CYCLE;\n const remainderHeight = reduceCycle(cycle, remainder, month);\n const fullCycles = (year - remainder) / YEARLY_CYCLE;\n const fullCyclesHeight = this.isIOS\n ? fullCycles * IOS_CYCLE_HEIGHT\n : fullCycles * ANDROID_CYCLE_HEIGHT;\n\n return fullCyclesHeight + remainderHeight;\n }\n\n private updateRenderedRange(viewport: CdkVirtualScrollViewport): void {\n const offset = viewport.measureScrollOffset();\n const {start, end} = viewport.getRenderedRange();\n const viewportSize = viewport.getViewportSize();\n const dataLength = viewport.getDataLength();\n const newRange = {start, end};\n const firstVisibleIndex = this.getIndexForOffset(offset);\n const startBuffer = offset - this.getOffsetForIndex(start);\n\n if (startBuffer < BUFFER && start !== 0) {\n newRange.start = Math.max(0, this.getIndexForOffset(offset - BUFFER * 2));\n newRange.end = Math.min(\n dataLength,\n this.getIndexForOffset(offset + viewportSize + BUFFER),\n );\n } else {\n const endBuffer = this.getOffsetForIndex(end) - offset - viewportSize;\n\n if (endBuffer < BUFFER && end !== dataLength) {\n newRange.start = Math.max(0, this.getIndexForOffset(offset - BUFFER));\n newRange.end = Math.min(\n dataLength,\n this.getIndexForOffset(offset + viewportSize + BUFFER * 2),\n );\n }\n }\n\n viewport.setRenderedRange(newRange);\n viewport.setRenderedContentOffset(this.getOffsetForIndex(newRange.start));\n this.index$.next(firstVisibleIndex);\n }\n}\n","import {VIRTUAL_SCROLL_STRATEGY} from '@angular/cdk/scrolling';\nimport type {Provider} from '@angular/core';\nimport {ChangeDetectorRef, InjectionToken, Optional} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport type {TuiDayRange} from '@taiga-ui/cdk/date-time';\nimport {tuiWatch} from '@taiga-ui/cdk/observables';\nimport {TuiScrollService} from '@taiga-ui/cdk/services';\nimport {TUI_IS_IOS} from '@taiga-ui/cdk/tokens';\nimport {TUI_CALENDAR_DATE_STREAM} from '@taiga-ui/kit/tokens';\nimport type {Observable} from 'rxjs';\nimport {EMPTY} from 'rxjs';\n\nimport {TuiMobileCalendarStrategy} from './mobile-calendar.strategy';\n\n/**\n * Stream for updating value\n */\nexport const TUI_VALUE_STREAM = new InjectionToken<Observable<TuiDayRange | null>>(\n '[TUI_VALUE_STREAM]',\n);\n\nexport const TUI_MOBILE_CALENDAR_PROVIDERS: Provider[] = [\n TuiScrollService,\n {\n provide: VIRTUAL_SCROLL_STRATEGY,\n deps: [TUI_IS_IOS, TuiScrollService],\n useClass: TuiMobileCalendarStrategy,\n },\n {\n provide: TUI_VALUE_STREAM,\n deps: [[new Optional(), TUI_CALENDAR_DATE_STREAM], ChangeDetectorRef],\n useFactory: (\n value$: Observable<TuiDayRange | null> | null,\n cdr: ChangeDetectorRef,\n ): Observable<TuiDayRange | null> =>\n (value$ || EMPTY).pipe(tuiWatch(cdr), takeUntilDestroyed()),\n },\n];\n","import {\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollViewport,\n} from '@angular/cdk/scrolling';\nimport {AsyncPipe, DOCUMENT, NgForOf, NgIf} from '@angular/common';\nimport type {AfterViewInit} from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n EventEmitter,\n inject,\n Input,\n NgZone,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TuiMobileCalendarSheet} from '@taiga-ui/addon-mobile/components/mobile-calendar-sheet';\nimport {TuiRipple, TuiTouchable} from '@taiga-ui/addon-mobile/directives';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {\n MONTHS_IN_YEAR,\n TUI_FIRST_DAY,\n TUI_LAST_DAY,\n TuiDay,\n TuiDayRange,\n TuiMonth,\n} from '@taiga-ui/cdk/date-time';\nimport {tuiTypedFromEvent, tuiZonefree} from '@taiga-ui/cdk/observables';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {TUI_IS_E2E, TUI_IS_IOS} from '@taiga-ui/cdk/tokens';\nimport type {TuiBooleanHandler, TuiMapper} from '@taiga-ui/cdk/types';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiLink} from '@taiga-ui/core/components/link';\nimport {TuiMonthPipe} from '@taiga-ui/core/pipes/month';\nimport {TuiOrderWeekDaysPipe} from '@taiga-ui/core/pipes/order-week-days';\nimport {\n TUI_ANIMATIONS_SPEED,\n TUI_CLOSE_WORD,\n TUI_COMMON_ICONS,\n TUI_SHORT_WEEK_DAYS,\n} from '@taiga-ui/core/tokens';\nimport {tuiGetDuration} from '@taiga-ui/core/utils/miscellaneous';\nimport {\n TUI_CANCEL_WORD,\n TUI_CHOOSE_DAY_OR_RANGE_TEXTS,\n TUI_DONE_WORD,\n} from '@taiga-ui/kit/tokens';\nimport {tuiToggleDay} from '@taiga-ui/kit/utils';\nimport type {MonoTypeOperatorFunction} from 'rxjs';\nimport {\n debounceTime,\n delay,\n filter,\n identity,\n map,\n mergeMap,\n race,\n switchMap,\n take,\n takeUntil,\n timer,\n windowToggle,\n} from 'rxjs';\n\nimport {\n RANGE,\n SCROLL_DEBOUNCE_TIME,\n STARTING_YEAR,\n YEARS_IN_ROW,\n} from './mobile-calendar.const';\nimport {\n TUI_MOBILE_CALENDAR_PROVIDERS,\n TUI_VALUE_STREAM,\n} from './mobile-calendar.providers';\n\n@Component({\n standalone: true,\n selector: 'tui-mobile-calendar',\n imports: [\n TuiButton,\n AsyncPipe,\n TuiRipple,\n TuiLink,\n TuiTouchable,\n CdkFixedSizeVirtualScroll,\n CdkVirtualScrollViewport,\n CdkVirtualForOf,\n TuiOrderWeekDaysPipe,\n TuiMobileCalendarSheet,\n TuiMonthPipe,\n NgForOf,\n NgIf,\n TuiMapperPipe,\n ],\n templateUrl: './mobile-calendar.template.html',\n styleUrls: ['./mobile-calendar.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: TUI_MOBILE_CALENDAR_PROVIDERS,\n host: {\n '[class._ios]': 'isIOS',\n '[class._initialized]': 'initialized',\n },\n})\nexport class TuiMobileCalendar implements AfterViewInit {\n @ViewChild('yearsScrollRef')\n private readonly yearsScrollRef?: CdkVirtualScrollViewport;\n\n @ViewChild('monthsScrollRef')\n private readonly monthsScrollRef?: CdkVirtualScrollViewport;\n\n private readonly today = TuiDay.currentLocal();\n private activeYear = 0;\n private activeMonth = 0;\n private readonly destroyRef = inject(DestroyRef);\n private readonly doc = inject(DOCUMENT);\n private readonly speed = inject(TUI_ANIMATIONS_SPEED);\n private readonly ngZone = inject(NgZone);\n\n protected initialized = false;\n protected value: TuiDay | TuiDayRange | readonly TuiDay[] | null = null;\n protected readonly isIOS = inject(TUI_IS_IOS);\n protected readonly isE2E = inject(TUI_IS_E2E);\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly closeWord$ = inject(TUI_CLOSE_WORD);\n protected readonly cancelWord$ = inject(TUI_CANCEL_WORD);\n protected readonly doneWord$ = inject(TUI_DONE_WORD);\n protected readonly unorderedWeekDays$ = inject(TUI_SHORT_WEEK_DAYS);\n protected readonly chooseDayOrRangeTexts$ = inject(TUI_CHOOSE_DAY_OR_RANGE_TEXTS);\n protected readonly years = Array.from({length: RANGE}, (_, i) => i + STARTING_YEAR);\n protected readonly months = Array.from(\n {length: RANGE * 12},\n (_, i) =>\n new TuiMonth(\n Math.floor(i / MONTHS_IN_YEAR) + STARTING_YEAR,\n i % MONTHS_IN_YEAR,\n ),\n );\n\n @Input()\n public single = true;\n\n @Input()\n public multi = false;\n\n @Input()\n public min = TUI_FIRST_DAY;\n\n @Input()\n public max = TUI_LAST_DAY;\n\n @Input()\n public disabledItemHandler: TuiBooleanHandler<TuiDay> = TUI_FALSE_HANDLER;\n\n @Output()\n public readonly cancel = new EventEmitter<void>();\n\n @Output()\n public readonly confirm = new EventEmitter<\n TuiDay | TuiDayRange | readonly TuiDay[]\n >();\n\n constructor() {\n inject(TUI_VALUE_STREAM)\n .pipe(takeUntilDestroyed())\n .subscribe((value) => {\n this.value = value;\n });\n }\n\n public ngAfterViewInit(): void {\n this.activeYear = this.initialYear;\n this.activeMonth = this.initialMonth;\n\n // Virtual scroll has not yet rendered items even in ngAfterViewInit\n this.waitScrolledChange();\n }\n\n public setYear(year: number): void {\n if (this.activeYear === year) {\n return;\n }\n\n this.activeMonth += this.getMonthOffset(year);\n this.activeYear = year;\n this.scrollToActiveYear('smooth');\n\n timer(0)\n .pipe(tuiZonefree(this.ngZone), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.scrollToActiveMonth());\n }\n\n protected get yearWidth(): number {\n return this.doc.documentElement.clientWidth / YEARS_IN_ROW;\n }\n\n protected onClose(): void {\n this.cancel.emit();\n }\n\n protected onConfirm(): void {\n if (this.value) {\n this.confirm.emit(this.value);\n } else {\n this.cancel.emit();\n }\n }\n\n protected onDayClick(day: TuiDay): void {\n if (this.single) {\n this.value = day;\n } else if (this.isMultiValue(this.value)) {\n this.value = tuiToggleDay(this.value, day);\n } else if (this.isSingleValue(this.value)) {\n this.value = new TuiDayRange(day, day);\n } else if (this.value instanceof TuiDayRange) {\n this.value = TuiDayRange.sort(this.value.from, day);\n } else if (!this.value) {\n this.value = new TuiDayRange(day, day);\n }\n }\n\n protected getState(index: number): 'active' | 'adjacent' | null {\n if (this.isYearActive(index)) {\n return 'active';\n }\n\n if (this.isYearActive(index - 1) || this.isYearActive(index + 1)) {\n return 'adjacent';\n }\n\n return null;\n }\n\n protected onMonthChange(month: number): void {\n // Skipping initial callback where index === 0\n if (!month || this.activeMonth === month) {\n return;\n }\n\n this.activeMonth = month;\n\n const activeYear = this.monthToYear(month);\n\n if (activeYear === this.activeYear) {\n return;\n }\n\n this.activeYear = activeYear;\n this.scrollToActiveYear();\n }\n\n protected readonly disabledItemHandlerMapper: TuiMapper<\n [TuiBooleanHandler<TuiDay>, TuiDay, TuiDay],\n TuiBooleanHandler<TuiDay>\n > = (disabledItemHandler, min, max) => (item) =>\n item.dayBefore(min) ||\n (max !== null && item.dayAfter(max)) ||\n disabledItemHandler(item);\n\n private get initialYear(): number {\n if (!this.value) {\n return this.today.year;\n }\n\n if (this.value instanceof TuiDay) {\n return this.value.year;\n }\n\n if (!(this.value instanceof TuiDayRange)) {\n return this.value?.[0]?.year ?? this.today.year;\n }\n\n return this.value.to.year;\n }\n\n private get initialMonth(): number {\n if (!this.value) {\n return this.today.month + (this.today.year - STARTING_YEAR) * MONTHS_IN_YEAR;\n }\n\n if (this.value instanceof TuiDay) {\n return this.value.month + (this.value.year - STARTING_YEAR) * MONTHS_IN_YEAR;\n }\n\n if (!(this.value instanceof TuiDayRange)) {\n return (\n (this.value?.[0]?.month ?? this.today.month) +\n ((this.value?.[0]?.year ?? this.today.year) - STARTING_YEAR) *\n MONTHS_IN_YEAR\n );\n }\n\n return (\n this.value.to.month + (this.value.to.year - STARTING_YEAR) * MONTHS_IN_YEAR\n );\n }\n\n private isMultiValue(day: any): day is readonly TuiDay[] | undefined {\n return !(day instanceof TuiDay) && !(day instanceof TuiDayRange) && this.multi;\n }\n\n private isSingleValue(day: any): day is TuiDay {\n return day instanceof TuiDay || (day instanceof TuiDayRange && !day.isSingleDay);\n }\n\n private getYearsViewportSize(): number {\n return this.yearsScrollRef?.getViewportSize() || 0;\n }\n\n private updateViewportDimension(): void {\n this.yearsScrollRef?.checkViewportSize();\n this.monthsScrollRef?.checkViewportSize();\n }\n\n private lateInit(): MonoTypeOperatorFunction<number> {\n return this.getYearsViewportSize() > 0 ? identity : delay(200);\n }\n\n private waitScrolledChange(): void {\n this.updateViewportDimension();\n\n this.monthsScrollRef?.scrolledIndexChange\n .pipe(\n delay(tuiGetDuration(this.speed)),\n this.lateInit(),\n take(1),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() => {\n this.initialized = true;\n this.updateViewportDimension();\n this.initYearScroll();\n this.initMonthScroll();\n this.scrollToActiveYear();\n this.scrollToActiveMonth();\n });\n }\n\n private initYearScroll(): void {\n const {yearsScrollRef} = this;\n\n if (!yearsScrollRef) {\n return;\n }\n\n const touchstart$ = tuiTypedFromEvent(\n yearsScrollRef.elementRef.nativeElement,\n 'touchstart',\n {passive: true},\n );\n const touchend$ = tuiTypedFromEvent(\n yearsScrollRef.elementRef.nativeElement,\n 'touchend',\n {passive: true},\n );\n const click$ = tuiTypedFromEvent(\n yearsScrollRef.elementRef.nativeElement,\n 'click',\n );\n\n // Refresh activeYear\n yearsScrollRef\n .elementScrolled()\n .pipe(\n // Ignore smooth scroll resulting from click on the exact year\n windowToggle(touchstart$, () => click$),\n mergeMap((x) => x),\n // Delay is required to run months scroll in the next frame to prevent flicker\n delay(0),\n map(\n () =>\n Math.round(\n yearsScrollRef.measureScrollOffset() / this.yearWidth,\n ) +\n Math.floor(YEARS_IN_ROW / 2) +\n STARTING_YEAR,\n ),\n filter((activeYear) => activeYear !== this.activeYear),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe((activeYear) => {\n this.activeMonth += this.getMonthOffset(activeYear);\n this.activeYear = activeYear;\n this.scrollToActiveMonth();\n });\n\n // Smooth scroll to activeYear after scrolling is done\n touchstart$\n .pipe(\n switchMap(() => touchend$),\n switchMap(() =>\n race(\n yearsScrollRef.elementScrolled(),\n timer(SCROLL_DEBOUNCE_TIME),\n ).pipe(\n debounceTime(SCROLL_DEBOUNCE_TIME * 2),\n take(1),\n takeUntil(touchstart$),\n ),\n ),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() => this.scrollToActiveYear('smooth'));\n }\n\n private initMonthScroll(): void {\n const {monthsScrollRef} = this;\n\n if (!monthsScrollRef) {\n return;\n }\n\n const touchstart$ = tuiTypedFromEvent(\n monthsScrollRef.elementRef.nativeElement,\n 'touchstart',\n {passive: true},\n );\n const touchend$ = tuiTypedFromEvent(\n monthsScrollRef.elementRef.nativeElement,\n 'touchend',\n {passive: true},\n );\n\n // Smooth scroll to the closest month after scrolling is done\n touchstart$\n .pipe(\n switchMap(() => touchend$),\n switchMap(() =>\n race(\n monthsScrollRef.elementScrolled(),\n timer(SCROLL_DEBOUNCE_TIME),\n ).pipe(\n debounceTime(SCROLL_DEBOUNCE_TIME * 2),\n take(1),\n takeUntil(touchstart$),\n ),\n ),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() => this.scrollToActiveMonth('smooth'));\n }\n\n private scrollToActiveYear(behavior: ScrollBehavior = 'auto'): void {\n this.yearsScrollRef?.scrollToIndex(\n Math.max(this.activeYear - STARTING_YEAR - 2, 0),\n this.isE2E ? 'auto' : behavior,\n );\n }\n\n private scrollToActiveMonth(behavior: ScrollBehavior = 'auto'): void {\n this.monthsScrollRef?.scrollToIndex(\n this.activeMonth,\n this.isE2E ? 'auto' : behavior,\n );\n }\n\n private isYearActive(index: number): boolean {\n return index === this.activeYear;\n }\n\n private monthToYear(month: number): number {\n return Math.ceil((month + 1) / MONTHS_IN_YEAR) + STARTING_YEAR - 1;\n }\n\n private getMonthOffset(year: number): number {\n return (year - this.activeYear) * MONTHS_IN_YEAR;\n }\n}\n","<header class=\"t-header\">\n <button\n appearance=\"\"\n automation-id=\"tui-mobile-calendar__cancel\"\n tuiIconButton\n tuiRipple\n type=\"button\"\n class=\"t-close\"\n [iconStart]=\"icons.close\"\n [style.border-radius.%]=\"100\"\n (click)=\"onClose()\"\n >\n {{ closeWord$ | async }}\n </button>\n <button\n tuiLink\n tuiTouchable=\"opacity\"\n type=\"button\"\n class=\"t-link t-link_close\"\n (click)=\"onClose()\"\n >\n {{ cancelWord$ | async }}\n </button>\n <h2\n *ngIf=\"chooseDayOrRangeTexts$ | async as texts\"\n automation-id=\"tui-mobile-calendar__label\"\n class=\"t-label\"\n >\n {{ single ? texts?.[0] : multi ? texts?.[2] : texts?.[1] }}\n </h2>\n <button\n automation-id=\"tui-mobile-calendar__confirm\"\n tuiLink\n tuiTouchable=\"opacity\"\n type=\"button\"\n class=\"t-link\"\n (click)=\"onConfirm()\"\n >\n {{ doneWord$ | async }}\n </button>\n</header>\n<cdk-virtual-scroll-viewport\n #yearsScrollRef\n orientation=\"horizontal\"\n class=\"t-years\"\n [itemSize]=\"yearWidth\"\n>\n <div class=\"t-years-wrapper\">\n <button\n *cdkVirtualFor=\"let index of years\"\n type=\"button\"\n class=\"t-year\"\n [attr.data-state]=\"getState(index)\"\n (click)=\"setYear(index)\"\n >\n {{ index }}\n </button>\n </div>\n</cdk-virtual-scroll-viewport>\n<div class=\"t-week\">\n <div\n *ngFor=\"let day of unorderedWeekDays$ | tuiOrderWeekDays | async\"\n class=\"t-day\"\n >\n {{ day }}\n </div>\n</div>\n<cdk-virtual-scroll-viewport\n #monthsScrollRef\n class=\"t-months\"\n (scrolledIndexChange)=\"onMonthChange($event)\"\n>\n <section\n *cdkVirtualFor=\"let month of months; templateCacheSize: 10\"\n class=\"t-month-wrapper\"\n >\n <h2 class=\"t-month\">{{ month | tuiMonth | async }}</h2>\n <tui-mobile-calendar-sheet\n class=\"t-calendar\"\n [disabledItemHandler]=\"disabledItemHandler | tuiMapper: disabledItemHandlerMapper : min : max\"\n [month]=\"month\"\n [value]=\"value\"\n (dayClick)=\"onDayClick($event)\"\n />\n </section>\n</cdk-virtual-scroll-viewport>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Component, ChangeDetectionStrategy, Directive, Input } from '@angular/core';
|
|
3
|
-
import {
|
|
3
|
+
import { WaResizeObserver } from '@ng-web-apis/resize-observer';
|
|
4
4
|
import { tuiInjectElement, tuiGetActualTarget } from '@taiga-ui/cdk/utils/dom';
|
|
5
5
|
|
|
6
6
|
class TuiSwipeActions {
|
|
@@ -11,11 +11,11 @@ class TuiSwipeActions {
|
|
|
11
11
|
this.actionsWidth = target.clientWidth;
|
|
12
12
|
}
|
|
13
13
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiSwipeActions, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
14
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiSwipeActions, isStandalone: true, selector: "tui-swipe-actions", host: { properties: { "style.--t-actions-width": "actionsWidth" } }, ngImport: i0, template: "<div class=\"t-content\">\n <ng-content />\n</div>\n\n<div\n class=\"t-actions\"\n (waResizeObserver)=\"onResize($event[0])\"\n>\n <ng-content select=\"[tuiSwipeAction]\" />\n</div>\n", styles: [":host{scrollbar-width:none;-ms-overflow-style:none;--tui-action-gap: 24;--tui-actions-padding: .5rem;--tui-item-size: 44;display:flex;width:-webkit-fill-available;width:-moz-available;width:stretch;align-items:center;overflow-x:scroll;overflow-y:hidden;scroll-snap-type:x mandatory;perspective:1px;perspective-origin:calc(100% + calc(1px * var(--tui-item-size) / 2) + var(--tui-actions-padding))}:host::-webkit-scrollbar,:host::-webkit-scrollbar-thumb{display:none}.t-content{scroll-snap-align:start;flex-shrink:0;width:100%}.t-actions{display:flex;gap:calc(1px * var(--tui-action-gap));padding:0 1rem 0 var(--tui-actions-padding);scroll-snap-align:start;align-items:center;transform-style:preserve-3d}.t-actions:empty{display:none}::ng-deep .t-actions>*:nth-child(2){--t-distance: calc(var(--tui-item-size) + var(--tui-action-gap)) * 1 ;--t-factor: calc((var(--t-actions-width) - var(--t-distance)) / var(--t-actions-width));--t-scale: calc(1 / var(--t-factor));--t-translate: calc(1px * (1 - 1 / var(--t-factor)));transform:translate3d(calc(calc((-100% - calc(1px * var(--tui-action-gap))) * (2 - 1)) / var(--t-scale)),0,var(--t-translate));scale:var(--t-scale)}::ng-deep .t-actions>*:nth-child(3){--t-distance: calc(var(--tui-item-size) + var(--tui-action-gap)) * 2 ;--t-factor: calc((var(--t-actions-width) - var(--t-distance)) / var(--t-actions-width));--t-scale: calc(1 / var(--t-factor));--t-translate: calc(1px * (1 - 1 / var(--t-factor)));transform:translate3d(calc(calc((-100% - calc(1px * var(--tui-action-gap))) * (3 - 1)) / var(--t-scale)),0,var(--t-translate));scale:var(--t-scale)}::ng-deep .t-actions>*:nth-child(4){--t-distance: calc(var(--tui-item-size) + var(--tui-action-gap)) * 3 ;--t-factor: calc((var(--t-actions-width) - var(--t-distance)) / var(--t-actions-width));--t-scale: calc(1 / var(--t-factor));--t-translate: calc(1px * (1 - 1 / var(--t-factor)));transform:translate3d(calc(calc((-100% - calc(1px * var(--tui-action-gap))) * (4 - 1)) / var(--t-scale)),0,var(--t-translate));scale:var(--t-scale)}::ng-deep .t-actions>*:nth-child(5){--t-distance: calc(var(--tui-item-size) + var(--tui-action-gap)) * 4 ;--t-factor: calc((var(--t-actions-width) - var(--t-distance)) / var(--t-actions-width));--t-scale: calc(1 / var(--t-factor));--t-translate: calc(1px * (1 - 1 / var(--t-factor)));transform:translate3d(calc(calc((-100% - calc(1px * var(--tui-action-gap))) * (5 - 1)) / var(--t-scale)),0,var(--t-translate));scale:var(--t-scale)}::ng-deep .t-actions>*:nth-child(6){--t-distance: calc(var(--tui-item-size) + var(--tui-action-gap)) * 5 ;--t-factor: calc((var(--t-actions-width) - var(--t-distance)) / var(--t-actions-width));--t-scale: calc(1 / var(--t-factor));--t-translate: calc(1px * (1 - 1 / var(--t-factor)));transform:translate3d(calc(calc((-100% - calc(1px * var(--tui-action-gap))) * (6 - 1)) / var(--t-scale)),0,var(--t-translate));scale:var(--t-scale)}@media (hover: hover) and (pointer: fine){.t-actions{display:none}}\n"], dependencies: [{ kind: "directive", type:
|
|
14
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiSwipeActions, isStandalone: true, selector: "tui-swipe-actions", host: { properties: { "style.--t-actions-width": "actionsWidth" } }, ngImport: i0, template: "<div class=\"t-content\">\n <ng-content />\n</div>\n\n<div\n class=\"t-actions\"\n (waResizeObserver)=\"onResize($event[0])\"\n>\n <ng-content select=\"[tuiSwipeAction]\" />\n</div>\n", styles: [":host{scrollbar-width:none;-ms-overflow-style:none;--tui-action-gap: 24;--tui-actions-padding: .5rem;--tui-item-size: 44;display:flex;width:-webkit-fill-available;width:-moz-available;width:stretch;align-items:center;overflow-x:scroll;overflow-y:hidden;scroll-snap-type:x mandatory;perspective:1px;perspective-origin:calc(100% + calc(1px * var(--tui-item-size) / 2) + var(--tui-actions-padding))}:host::-webkit-scrollbar,:host::-webkit-scrollbar-thumb{display:none}.t-content{scroll-snap-align:start;flex-shrink:0;width:100%}.t-actions{display:flex;gap:calc(1px * var(--tui-action-gap));padding:0 1rem 0 var(--tui-actions-padding);scroll-snap-align:start;align-items:center;transform-style:preserve-3d}.t-actions:empty{display:none}::ng-deep .t-actions>*:nth-child(2){--t-distance: calc(var(--tui-item-size) + var(--tui-action-gap)) * 1 ;--t-factor: calc((var(--t-actions-width) - var(--t-distance)) / var(--t-actions-width));--t-scale: calc(1 / var(--t-factor));--t-translate: calc(1px * (1 - 1 / var(--t-factor)));transform:translate3d(calc(calc((-100% - calc(1px * var(--tui-action-gap))) * (2 - 1)) / var(--t-scale)),0,var(--t-translate));scale:var(--t-scale)}::ng-deep .t-actions>*:nth-child(3){--t-distance: calc(var(--tui-item-size) + var(--tui-action-gap)) * 2 ;--t-factor: calc((var(--t-actions-width) - var(--t-distance)) / var(--t-actions-width));--t-scale: calc(1 / var(--t-factor));--t-translate: calc(1px * (1 - 1 / var(--t-factor)));transform:translate3d(calc(calc((-100% - calc(1px * var(--tui-action-gap))) * (3 - 1)) / var(--t-scale)),0,var(--t-translate));scale:var(--t-scale)}::ng-deep .t-actions>*:nth-child(4){--t-distance: calc(var(--tui-item-size) + var(--tui-action-gap)) * 3 ;--t-factor: calc((var(--t-actions-width) - var(--t-distance)) / var(--t-actions-width));--t-scale: calc(1 / var(--t-factor));--t-translate: calc(1px * (1 - 1 / var(--t-factor)));transform:translate3d(calc(calc((-100% - calc(1px * var(--tui-action-gap))) * (4 - 1)) / var(--t-scale)),0,var(--t-translate));scale:var(--t-scale)}::ng-deep .t-actions>*:nth-child(5){--t-distance: calc(var(--tui-item-size) + var(--tui-action-gap)) * 4 ;--t-factor: calc((var(--t-actions-width) - var(--t-distance)) / var(--t-actions-width));--t-scale: calc(1 / var(--t-factor));--t-translate: calc(1px * (1 - 1 / var(--t-factor)));transform:translate3d(calc(calc((-100% - calc(1px * var(--tui-action-gap))) * (5 - 1)) / var(--t-scale)),0,var(--t-translate));scale:var(--t-scale)}::ng-deep .t-actions>*:nth-child(6){--t-distance: calc(var(--tui-item-size) + var(--tui-action-gap)) * 5 ;--t-factor: calc((var(--t-actions-width) - var(--t-distance)) / var(--t-actions-width));--t-scale: calc(1 / var(--t-factor));--t-translate: calc(1px * (1 - 1 / var(--t-factor)));transform:translate3d(calc(calc((-100% - calc(1px * var(--tui-action-gap))) * (6 - 1)) / var(--t-scale)),0,var(--t-translate));scale:var(--t-scale)}@media (hover: hover) and (pointer: fine){.t-actions{display:none}}\n"], dependencies: [{ kind: "directive", type: WaResizeObserver, selector: "[waResizeObserver]", inputs: ["box"], outputs: ["waResizeObserver"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
15
15
|
}
|
|
16
16
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiSwipeActions, decorators: [{
|
|
17
17
|
type: Component,
|
|
18
|
-
args: [{ standalone: true, selector: 'tui-swipe-actions', imports: [
|
|
18
|
+
args: [{ standalone: true, selector: 'tui-swipe-actions', imports: [WaResizeObserver], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
19
19
|
'[style.--t-actions-width]': 'actionsWidth',
|
|
20
20
|
}, template: "<div class=\"t-content\">\n <ng-content />\n</div>\n\n<div\n class=\"t-actions\"\n (waResizeObserver)=\"onResize($event[0])\"\n>\n <ng-content select=\"[tuiSwipeAction]\" />\n</div>\n", styles: [":host{scrollbar-width:none;-ms-overflow-style:none;--tui-action-gap: 24;--tui-actions-padding: .5rem;--tui-item-size: 44;display:flex;width:-webkit-fill-available;width:-moz-available;width:stretch;align-items:center;overflow-x:scroll;overflow-y:hidden;scroll-snap-type:x mandatory;perspective:1px;perspective-origin:calc(100% + calc(1px * var(--tui-item-size) / 2) + var(--tui-actions-padding))}:host::-webkit-scrollbar,:host::-webkit-scrollbar-thumb{display:none}.t-content{scroll-snap-align:start;flex-shrink:0;width:100%}.t-actions{display:flex;gap:calc(1px * var(--tui-action-gap));padding:0 1rem 0 var(--tui-actions-padding);scroll-snap-align:start;align-items:center;transform-style:preserve-3d}.t-actions:empty{display:none}::ng-deep .t-actions>*:nth-child(2){--t-distance: calc(var(--tui-item-size) + var(--tui-action-gap)) * 1 ;--t-factor: calc((var(--t-actions-width) - var(--t-distance)) / var(--t-actions-width));--t-scale: calc(1 / var(--t-factor));--t-translate: calc(1px * (1 - 1 / var(--t-factor)));transform:translate3d(calc(calc((-100% - calc(1px * var(--tui-action-gap))) * (2 - 1)) / var(--t-scale)),0,var(--t-translate));scale:var(--t-scale)}::ng-deep .t-actions>*:nth-child(3){--t-distance: calc(var(--tui-item-size) + var(--tui-action-gap)) * 2 ;--t-factor: calc((var(--t-actions-width) - var(--t-distance)) / var(--t-actions-width));--t-scale: calc(1 / var(--t-factor));--t-translate: calc(1px * (1 - 1 / var(--t-factor)));transform:translate3d(calc(calc((-100% - calc(1px * var(--tui-action-gap))) * (3 - 1)) / var(--t-scale)),0,var(--t-translate));scale:var(--t-scale)}::ng-deep .t-actions>*:nth-child(4){--t-distance: calc(var(--tui-item-size) + var(--tui-action-gap)) * 3 ;--t-factor: calc((var(--t-actions-width) - var(--t-distance)) / var(--t-actions-width));--t-scale: calc(1 / var(--t-factor));--t-translate: calc(1px * (1 - 1 / var(--t-factor)));transform:translate3d(calc(calc((-100% - calc(1px * var(--tui-action-gap))) * (4 - 1)) / var(--t-scale)),0,var(--t-translate));scale:var(--t-scale)}::ng-deep .t-actions>*:nth-child(5){--t-distance: calc(var(--tui-item-size) + var(--tui-action-gap)) * 4 ;--t-factor: calc((var(--t-actions-width) - var(--t-distance)) / var(--t-actions-width));--t-scale: calc(1 / var(--t-factor));--t-translate: calc(1px * (1 - 1 / var(--t-factor)));transform:translate3d(calc(calc((-100% - calc(1px * var(--tui-action-gap))) * (5 - 1)) / var(--t-scale)),0,var(--t-translate));scale:var(--t-scale)}::ng-deep .t-actions>*:nth-child(6){--t-distance: calc(var(--tui-item-size) + var(--tui-action-gap)) * 5 ;--t-factor: calc((var(--t-actions-width) - var(--t-distance)) / var(--t-actions-width));--t-scale: calc(1 / var(--t-factor));--t-translate: calc(1px * (1 - 1 / var(--t-factor)));transform:translate3d(calc(calc((-100% - calc(1px * var(--tui-action-gap))) * (6 - 1)) / var(--t-scale)),0,var(--t-translate));scale:var(--t-scale)}@media (hover: hover) and (pointer: fine){.t-actions{display:none}}\n"] }]
|
|
21
21
|
}] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-addon-mobile-components-swipe-action.mjs","sources":["../../../projects/addon-mobile/components/swipe-action/swipe-actions.component.ts","../../../projects/addon-mobile/components/swipe-action/swipe-actions.template.html","../../../projects/addon-mobile/components/swipe-action/swipe-actions-auto-close.directive.ts","../../../projects/addon-mobile/components/swipe-action/taiga-ui-addon-mobile-components-swipe-action.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component} from '@angular/core';\nimport {
|
|
1
|
+
{"version":3,"file":"taiga-ui-addon-mobile-components-swipe-action.mjs","sources":["../../../projects/addon-mobile/components/swipe-action/swipe-actions.component.ts","../../../projects/addon-mobile/components/swipe-action/swipe-actions.template.html","../../../projects/addon-mobile/components/swipe-action/swipe-actions-auto-close.directive.ts","../../../projects/addon-mobile/components/swipe-action/taiga-ui-addon-mobile-components-swipe-action.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component} from '@angular/core';\nimport {WaResizeObserver} from '@ng-web-apis/resize-observer';\n\n@Component({\n standalone: true,\n selector: 'tui-swipe-actions',\n imports: [WaResizeObserver],\n templateUrl: './swipe-actions.template.html',\n styleUrls: ['./swipe-actions.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.--t-actions-width]': 'actionsWidth',\n },\n})\nexport class TuiSwipeActions {\n protected actionsWidth = 0;\n\n protected onResize({target}: ResizeObserverEntry): void {\n this.actionsWidth = target.clientWidth;\n }\n}\n","<div class=\"t-content\">\n <ng-content />\n</div>\n\n<div\n class=\"t-actions\"\n (waResizeObserver)=\"onResize($event[0])\"\n>\n <ng-content select=\"[tuiSwipeAction]\" />\n</div>\n","import {Directive, Input} from '@angular/core';\nimport {tuiGetActualTarget, tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\n\n@Directive({\n standalone: true,\n selector: 'tui-swipe-actions[autoClose]',\n host: {\n '(document:pointerdown.silent)': 'handleEvent($event)',\n '(document:focusin.silent)': 'handleEvent($event)',\n },\n})\nexport class TuiSwipeActionsAutoClose {\n private readonly el = tuiInjectElement();\n\n @Input()\n public autoClose: boolean | string = true;\n\n protected handleEvent(event: Event): void {\n if (this.autoClose !== false && !this.el.contains(tuiGetActualTarget(event))) {\n this.el.scrollTo({\n left: 0,\n behavior: 'smooth',\n });\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAGA,MAWa,eAAe,CAAA;AAX5B,IAAA,WAAA,GAAA;QAYc,IAAY,CAAA,YAAA,GAAG,CAAC,CAAC;AAK9B,KAAA;IAHa,QAAQ,CAAC,EAAC,MAAM,EAAsB,EAAA;AAC5C,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;KAC1C;+GALQ,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,yBAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECd5B,qMAUA,EAAA,MAAA,EAAA,CAAA,m5FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDJc,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;4FAQjB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAX3B,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,mBAAmB,EAAA,OAAA,EACpB,CAAC,gBAAgB,CAAC,EAGV,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACF,wBAAA,2BAA2B,EAAE,cAAc;AAC9C,qBAAA,EAAA,QAAA,EAAA,qMAAA,EAAA,MAAA,EAAA,CAAA,m5FAAA,CAAA,EAAA,CAAA;;;AETL,MAQa,wBAAwB,CAAA;AARrC,IAAA,WAAA,GAAA;QASqB,IAAE,CAAA,EAAA,GAAG,gBAAgB,EAAE,CAAC;QAGlC,IAAS,CAAA,SAAA,GAAqB,IAAI,CAAC;AAU7C,KAAA;AARa,IAAA,WAAW,CAAC,KAAY,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE;AAC1E,YAAA,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC;AACb,gBAAA,IAAI,EAAE,CAAC;AACP,gBAAA,QAAQ,EAAE,QAAQ;AACrB,aAAA,CAAC,CAAC;AACN,SAAA;KACJ;+GAbQ,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,6BAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBARpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,IAAI,EAAE;AACF,wBAAA,+BAA+B,EAAE,qBAAqB;AACtD,wBAAA,2BAA2B,EAAE,qBAAqB;AACrD,qBAAA;AACJ,iBAAA,CAAA;8BAKU,SAAS,EAAA,CAAA;sBADf,KAAK;;;ACdV;;AAEG;;;;"}
|
|
@@ -2,12 +2,12 @@ import { DOCUMENT, NgIf } from '@angular/common';
|
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
3
|
import { inject, Directive, Input, HostListener, Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';
|
|
4
4
|
import * as i2 from '@ng-web-apis/intersection-observer';
|
|
5
|
-
import {
|
|
5
|
+
import { WaIntersectionObserver } from '@ng-web-apis/intersection-observer';
|
|
6
6
|
import { TuiKeyboardService } from '@taiga-ui/addon-mobile/services';
|
|
7
7
|
import * as i1 from '@taiga-ui/cdk/directives/active-zone';
|
|
8
8
|
import { TuiActiveZone } from '@taiga-ui/cdk/directives/active-zone';
|
|
9
9
|
import { TuiSwipe } from '@taiga-ui/cdk/directives/swipe';
|
|
10
|
-
import { tuiIsHTMLElement, tuiInjectElement,
|
|
10
|
+
import { tuiIsHTMLElement, tuiInjectElement, tuiIsElement } from '@taiga-ui/cdk/utils/dom';
|
|
11
11
|
import { tuiGetNativeFocused } from '@taiga-ui/cdk/utils/focus';
|
|
12
12
|
import { tuiPx } from '@taiga-ui/cdk/utils/miscellaneous';
|
|
13
13
|
import { tuiSlideInTop, tuiFadeIn } from '@taiga-ui/core/animations';
|
|
@@ -99,10 +99,10 @@ class TuiDropdownMobileComponent {
|
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
101
|
onClick(event) {
|
|
102
|
-
if (
|
|
103
|
-
|
|
104
|
-
!(
|
|
105
|
-
|
|
102
|
+
if (tuiIsElement(event.target) &&
|
|
103
|
+
!this.el.contains(event.target) &&
|
|
104
|
+
(!this.dropdown.el.contains(event.target) ||
|
|
105
|
+
event.target.matches('input,textarea'))) {
|
|
106
106
|
event.stopPropagation();
|
|
107
107
|
}
|
|
108
108
|
}
|
|
@@ -129,22 +129,23 @@ class TuiDropdownMobileComponent {
|
|
|
129
129
|
}
|
|
130
130
|
this.doc.documentElement.scrollTop = 0;
|
|
131
131
|
const rect = this.dropdown.el.getBoundingClientRect();
|
|
132
|
+
const top = offsetTop + GAP - rect.top;
|
|
132
133
|
const offset = rect.height + GAP * 2;
|
|
133
134
|
this.el.style.setProperty('top', tuiPx(offsetTop + offset));
|
|
134
135
|
this.el.style.setProperty('height', tuiPx(height - offset));
|
|
135
136
|
this.doc.body.classList.add('t-dropdown-mobile');
|
|
136
|
-
this.doc.body.style.setProperty('--t-root-top', tuiPx(
|
|
137
|
+
this.doc.body.style.setProperty('--t-root-top', tuiPx(top));
|
|
137
138
|
}
|
|
138
139
|
get focused() {
|
|
139
140
|
return this.dropdown.el.contains(tuiGetNativeFocused(this.doc));
|
|
140
141
|
}
|
|
141
142
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownMobileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
142
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdownMobileComponent, isStandalone: true, selector: "tui-dropdown-mobile", host: { listeners: { "document:click.silent.capture": "onClick($event)", "window>scroll.silent.capture": "refresh($event.currentTarget.visualViewport)", "visualViewport>resize.silent": "refresh($event.target)", "visualViewport>scroll.silent": "refresh($event.target)" }, properties: { "@tuiFadeIn": "animation", "@tuiSlideInTop": "animation", "class._sheet": "directive.tuiDropdownMobile" } }, hostDirectives: [{ directive: i1.TuiActiveZone }], ngImport: i0, template: "<div\n *ngIf=\"directive.tuiDropdownMobile\"\n waIntersectionObserver\n waIntersectionThreshold=\"1\"\n class=\"t-filler\"\n (touchstart.prevent)=\"close()\"\n (waIntersectionObservee)=\"onIntersection($event)\"\n></div>\n<div\n #container\n class=\"t-container\"\n (tuiSwipe)=\"onSwipe($event, container)\"\n>\n <h2\n *ngIf=\"directive.tuiDropdownMobile\"\n class=\"t-heading\"\n >\n {{ directive.tuiDropdownMobile }}\n </h2>\n <div class=\"t-content\">\n <ng-container *polymorpheusOutlet=\"dropdown.content as text\">\n {{ text }}\n </ng-container>\n </div>\n</div>\n", styles: ["tui-dropdown-mobile:not(._sheet){scrollbar-width:none;-ms-overflow-style:none;position:fixed;top:0;left:0;width:100%;height:100%;transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;visibility:visible!important;transform:translateZ(0);background:var(--tui-background-base);overscroll-behavior:contain;overflow:auto;box-shadow:0 -.5rem .5rem var(--tui-background-base),0 10rem var(--tui-background-base),0 20rem var(--tui-background-base),0 30rem var(--tui-background-base)}tui-dropdown-mobile:not(._sheet)::-webkit-scrollbar,tui-dropdown-mobile:not(._sheet)::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile:not(._sheet):after{content:\"\";display:block;height:1px}tui-dropdown-mobile:not(._sheet)>.t-container{scrollbar-width:none;-ms-overflow-style:none;position:sticky;top:0;height:100%;overflow:auto;margin:0 .75rem;touch-action:pan-y!important}tui-dropdown-mobile:not(._sheet)>.t-container::-webkit-scrollbar,tui-dropdown-mobile:not(._sheet)>.t-container::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile:not(._sheet) [tuiDropdownButton][tuiDropdownButton]{position:fixed;right:1rem;bottom:1rem;display:inline-flex}tui-dropdown-mobile._sheet{position:fixed;top:0;left:0;bottom:0;right:0;scrollbar-width:none;-ms-overflow-style:none;overflow:auto;background:var(--tui-service-backdrop);box-shadow:0 -
|
|
143
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdownMobileComponent, isStandalone: true, selector: "tui-dropdown-mobile", host: { listeners: { "document:click.silent.capture": "onClick($event)", "window>scroll.silent.capture": "refresh($event.currentTarget.visualViewport)", "visualViewport>resize.silent": "refresh($event.target)", "visualViewport>scroll.silent": "refresh($event.target)" }, properties: { "@tuiFadeIn": "animation", "@tuiSlideInTop": "animation", "class._sheet": "directive.tuiDropdownMobile" } }, hostDirectives: [{ directive: i1.TuiActiveZone }], ngImport: i0, template: "<div\n *ngIf=\"directive.tuiDropdownMobile\"\n waIntersectionObserver\n waIntersectionThreshold=\"1\"\n class=\"t-filler\"\n (touchstart.prevent)=\"close()\"\n (waIntersectionObservee)=\"onIntersection($event)\"\n></div>\n<div\n #container\n class=\"t-container\"\n (tuiSwipe)=\"onSwipe($event, container)\"\n>\n <h2\n *ngIf=\"directive.tuiDropdownMobile\"\n class=\"t-heading\"\n >\n {{ directive.tuiDropdownMobile }}\n </h2>\n <div class=\"t-content\">\n <ng-container *polymorpheusOutlet=\"dropdown.content as text\">\n {{ text }}\n </ng-container>\n </div>\n</div>\n", styles: ["tui-dropdown-mobile:not(._sheet){scrollbar-width:none;-ms-overflow-style:none;position:fixed;top:0;left:0;width:100%;height:100%;transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;visibility:visible!important;transform:translateZ(0);background:var(--tui-background-base);overscroll-behavior:contain;overflow:auto;box-shadow:0 -.5rem .5rem var(--tui-background-base),0 10rem var(--tui-background-base),0 20rem var(--tui-background-base),0 30rem var(--tui-background-base)}tui-dropdown-mobile:not(._sheet)::-webkit-scrollbar,tui-dropdown-mobile:not(._sheet)::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile:not(._sheet):after{content:\"\";display:block;height:1px}tui-dropdown-mobile:not(._sheet)>.t-container{scrollbar-width:none;-ms-overflow-style:none;position:sticky;top:0;height:100%;overflow:auto;margin:0 .75rem;touch-action:pan-y!important}tui-dropdown-mobile:not(._sheet)>.t-container::-webkit-scrollbar,tui-dropdown-mobile:not(._sheet)>.t-container::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile:not(._sheet) [tuiDropdownButton][tuiDropdownButton]{position:fixed;right:1rem;bottom:1rem;display:inline-flex}tui-dropdown-mobile._sheet{position:fixed;top:0;left:0;bottom:0;right:0;scrollbar-width:none;-ms-overflow-style:none;overflow:auto;background:var(--tui-service-backdrop);box-shadow:0 -80vh 0 5rem var(--tui-service-backdrop);overflow-y:scroll;scroll-snap-type:y mandatory;overscroll-behavior:none}tui-dropdown-mobile._sheet::-webkit-scrollbar,tui-dropdown-mobile._sheet::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile._sheet>.t-filler{height:100%;scroll-snap-stop:always;scroll-snap-align:start}tui-dropdown-mobile._sheet>.t-container{display:flex;max-height:calc(100% - 1rem);flex-direction:column;border-top-left-radius:1rem;border-top-right-radius:1rem;padding:0 .5rem;scroll-snap-stop:always;scroll-snap-align:start;background:var(--tui-background-elevation-1)}tui-dropdown-mobile._sheet>.t-container>.t-heading{position:relative;margin:0;padding:2rem .5rem .75rem;font:var(--tui-font-heading-6)}tui-dropdown-mobile._sheet>.t-container>.t-heading:before{content:\"\";position:absolute;left:50%;top:.75rem;width:2rem;height:.25rem;border-radius:1rem;background:var(--tui-background-neutral-2);transform:translate(-50%,-50%)}tui-dropdown-mobile._sheet>.t-container>.t-content{scrollbar-width:none;-ms-overflow-style:none;overflow:auto}tui-dropdown-mobile._sheet>.t-container>.t-content::-webkit-scrollbar,tui-dropdown-mobile._sheet>.t-container>.t-content::-webkit-scrollbar-thumb{display:none}.t-dropdown-mobile{touch-action:none;visibility:hidden}.t-dropdown-mobile *{touch-action:inherit;visibility:inherit}\n"], dependencies: [{ kind: "directive", type: i2.WaIntersectionObserverDirective, selector: "[waIntersectionObserver]", inputs: ["margin", "threshold"], exportAs: ["IntersectionObserver"] }, { kind: "directive", type: i2.WaIntersectionObservee, selector: "[waIntersectionObservee]", outputs: ["waIntersectionObservee"] }, { kind: "directive", type: TuiSwipe, selector: "[tuiSwipe]", outputs: ["tuiSwipe"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], animations: [tuiSlideInTop, tuiFadeIn], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
143
144
|
}
|
|
144
145
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownMobileComponent, decorators: [{
|
|
145
146
|
type: Component,
|
|
146
147
|
args: [{ standalone: true, selector: 'tui-dropdown-mobile', imports: [
|
|
147
|
-
|
|
148
|
+
WaIntersectionObserver,
|
|
148
149
|
TuiSwipe,
|
|
149
150
|
NgIf,
|
|
150
151
|
PolymorpheusOutlet,
|
|
@@ -157,7 +158,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
157
158
|
'(window>scroll.silent.capture)': 'refresh($event.currentTarget.visualViewport)',
|
|
158
159
|
'(visualViewport>resize.silent)': 'refresh($event.target)',
|
|
159
160
|
'(visualViewport>scroll.silent)': 'refresh($event.target)',
|
|
160
|
-
}, template: "<div\n *ngIf=\"directive.tuiDropdownMobile\"\n waIntersectionObserver\n waIntersectionThreshold=\"1\"\n class=\"t-filler\"\n (touchstart.prevent)=\"close()\"\n (waIntersectionObservee)=\"onIntersection($event)\"\n></div>\n<div\n #container\n class=\"t-container\"\n (tuiSwipe)=\"onSwipe($event, container)\"\n>\n <h2\n *ngIf=\"directive.tuiDropdownMobile\"\n class=\"t-heading\"\n >\n {{ directive.tuiDropdownMobile }}\n </h2>\n <div class=\"t-content\">\n <ng-container *polymorpheusOutlet=\"dropdown.content as text\">\n {{ text }}\n </ng-container>\n </div>\n</div>\n", styles: ["tui-dropdown-mobile:not(._sheet){scrollbar-width:none;-ms-overflow-style:none;position:fixed;top:0;left:0;width:100%;height:100%;transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;visibility:visible!important;transform:translateZ(0);background:var(--tui-background-base);overscroll-behavior:contain;overflow:auto;box-shadow:0 -.5rem .5rem var(--tui-background-base),0 10rem var(--tui-background-base),0 20rem var(--tui-background-base),0 30rem var(--tui-background-base)}tui-dropdown-mobile:not(._sheet)::-webkit-scrollbar,tui-dropdown-mobile:not(._sheet)::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile:not(._sheet):after{content:\"\";display:block;height:1px}tui-dropdown-mobile:not(._sheet)>.t-container{scrollbar-width:none;-ms-overflow-style:none;position:sticky;top:0;height:100%;overflow:auto;margin:0 .75rem;touch-action:pan-y!important}tui-dropdown-mobile:not(._sheet)>.t-container::-webkit-scrollbar,tui-dropdown-mobile:not(._sheet)>.t-container::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile:not(._sheet) [tuiDropdownButton][tuiDropdownButton]{position:fixed;right:1rem;bottom:1rem;display:inline-flex}tui-dropdown-mobile._sheet{position:fixed;top:0;left:0;bottom:0;right:0;scrollbar-width:none;-ms-overflow-style:none;overflow:auto;background:var(--tui-service-backdrop);box-shadow:0 -
|
|
161
|
+
}, template: "<div\n *ngIf=\"directive.tuiDropdownMobile\"\n waIntersectionObserver\n waIntersectionThreshold=\"1\"\n class=\"t-filler\"\n (touchstart.prevent)=\"close()\"\n (waIntersectionObservee)=\"onIntersection($event)\"\n></div>\n<div\n #container\n class=\"t-container\"\n (tuiSwipe)=\"onSwipe($event, container)\"\n>\n <h2\n *ngIf=\"directive.tuiDropdownMobile\"\n class=\"t-heading\"\n >\n {{ directive.tuiDropdownMobile }}\n </h2>\n <div class=\"t-content\">\n <ng-container *polymorpheusOutlet=\"dropdown.content as text\">\n {{ text }}\n </ng-container>\n </div>\n</div>\n", styles: ["tui-dropdown-mobile:not(._sheet){scrollbar-width:none;-ms-overflow-style:none;position:fixed;top:0;left:0;width:100%;height:100%;transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;visibility:visible!important;transform:translateZ(0);background:var(--tui-background-base);overscroll-behavior:contain;overflow:auto;box-shadow:0 -.5rem .5rem var(--tui-background-base),0 10rem var(--tui-background-base),0 20rem var(--tui-background-base),0 30rem var(--tui-background-base)}tui-dropdown-mobile:not(._sheet)::-webkit-scrollbar,tui-dropdown-mobile:not(._sheet)::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile:not(._sheet):after{content:\"\";display:block;height:1px}tui-dropdown-mobile:not(._sheet)>.t-container{scrollbar-width:none;-ms-overflow-style:none;position:sticky;top:0;height:100%;overflow:auto;margin:0 .75rem;touch-action:pan-y!important}tui-dropdown-mobile:not(._sheet)>.t-container::-webkit-scrollbar,tui-dropdown-mobile:not(._sheet)>.t-container::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile:not(._sheet) [tuiDropdownButton][tuiDropdownButton]{position:fixed;right:1rem;bottom:1rem;display:inline-flex}tui-dropdown-mobile._sheet{position:fixed;top:0;left:0;bottom:0;right:0;scrollbar-width:none;-ms-overflow-style:none;overflow:auto;background:var(--tui-service-backdrop);box-shadow:0 -80vh 0 5rem var(--tui-service-backdrop);overflow-y:scroll;scroll-snap-type:y mandatory;overscroll-behavior:none}tui-dropdown-mobile._sheet::-webkit-scrollbar,tui-dropdown-mobile._sheet::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile._sheet>.t-filler{height:100%;scroll-snap-stop:always;scroll-snap-align:start}tui-dropdown-mobile._sheet>.t-container{display:flex;max-height:calc(100% - 1rem);flex-direction:column;border-top-left-radius:1rem;border-top-right-radius:1rem;padding:0 .5rem;scroll-snap-stop:always;scroll-snap-align:start;background:var(--tui-background-elevation-1)}tui-dropdown-mobile._sheet>.t-container>.t-heading{position:relative;margin:0;padding:2rem .5rem .75rem;font:var(--tui-font-heading-6)}tui-dropdown-mobile._sheet>.t-container>.t-heading:before{content:\"\";position:absolute;left:50%;top:.75rem;width:2rem;height:.25rem;border-radius:1rem;background:var(--tui-background-neutral-2);transform:translate(-50%,-50%)}tui-dropdown-mobile._sheet>.t-container>.t-content{scrollbar-width:none;-ms-overflow-style:none;overflow:auto}tui-dropdown-mobile._sheet>.t-container>.t-content::-webkit-scrollbar,tui-dropdown-mobile._sheet>.t-container>.t-content::-webkit-scrollbar-thumb{display:none}.t-dropdown-mobile{touch-action:none;visibility:hidden}.t-dropdown-mobile *{touch-action:inherit;visibility:inherit}\n"] }]
|
|
161
162
|
}], ctorParameters: function () { return []; } });
|
|
162
163
|
|
|
163
164
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-addon-mobile-directives-dropdown-mobile.mjs","sources":["../../../projects/addon-mobile/directives/dropdown-mobile/dropdown-mobile.directive.ts","../../../projects/addon-mobile/directives/dropdown-mobile/dropdown-mobile.component.ts","../../../projects/addon-mobile/directives/dropdown-mobile/dropdown-mobile.template.html","../../../projects/addon-mobile/directives/dropdown-mobile/taiga-ui-addon-mobile-directives-dropdown-mobile.ts"],"sourcesContent":["import {Directive, HostListener, inject, Input} from '@angular/core';\nimport {TUI_IS_MOBILE} from '@taiga-ui/cdk/tokens';\nimport {tuiIsHTMLElement} from '@taiga-ui/cdk/utils/dom';\nimport {TUI_DROPDOWN_COMPONENT} from '@taiga-ui/core/directives/dropdown';\n\nimport {TuiDropdownMobileComponent} from './dropdown-mobile.component';\n\n@Directive({\n standalone: true,\n selector: '[tuiDropdownMobile]',\n providers: [\n {\n provide: TUI_DROPDOWN_COMPONENT,\n useFactory: () =>\n inject(TUI_IS_MOBILE)\n ? TuiDropdownMobileComponent\n : inject(TUI_DROPDOWN_COMPONENT, {skipSelf: true}),\n },\n ],\n host: {\n '[style.visibility]': '\"visible\"',\n },\n})\nexport class TuiDropdownMobile {\n private readonly isMobile = inject(TUI_IS_MOBILE);\n\n @Input()\n public tuiDropdownMobile = '';\n\n @HostListener('mousedown', ['$event'])\n protected onMouseDown(event: MouseEvent): void {\n if (\n !this.isMobile ||\n !tuiIsHTMLElement(event.target) ||\n !event.target.matches('input,textarea')\n ) {\n return;\n }\n\n event.preventDefault();\n event.target.focus({preventScroll: true});\n }\n}\n","import {DOCUMENT, NgIf} from '@angular/common';\nimport type {AfterViewInit, OnDestroy} from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport {IntersectionObserverModule} from '@ng-web-apis/intersection-observer';\nimport {TuiKeyboardService} from '@taiga-ui/addon-mobile/services';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport type {TuiSwipeEvent} from '@taiga-ui/cdk/directives/swipe';\nimport {TuiSwipe} from '@taiga-ui/cdk/directives/swipe';\nimport {tuiInjectElement, tuiIsElement, tuiIsNodeIn} from '@taiga-ui/cdk/utils/dom';\nimport {tuiGetNativeFocused} from '@taiga-ui/cdk/utils/focus';\nimport {tuiPx} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiFadeIn, tuiSlideInTop} from '@taiga-ui/core/animations';\nimport {TuiDropdownDirective} from '@taiga-ui/core/directives/dropdown';\nimport {TUI_ANIMATIONS_SPEED} from '@taiga-ui/core/tokens';\nimport {tuiGetDuration} from '@taiga-ui/core/utils/miscellaneous';\nimport {PolymorpheusOutlet, PolymorpheusTemplate} from '@taiga-ui/polymorpheus';\n\nimport {TuiDropdownMobile} from './dropdown-mobile.directive';\n\nconst GAP = 16;\n\n@Component({\n standalone: true,\n selector: 'tui-dropdown-mobile',\n imports: [\n IntersectionObserverModule,\n TuiSwipe,\n NgIf,\n PolymorpheusOutlet,\n PolymorpheusTemplate,\n ],\n templateUrl: './dropdown-mobile.template.html',\n styleUrls: ['./dropdown-mobile.style.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [tuiSlideInTop, tuiFadeIn],\n hostDirectives: [TuiActiveZone],\n host: {\n '[@tuiFadeIn]': 'animation',\n '[@tuiSlideInTop]': 'animation',\n '[class._sheet]': 'directive.tuiDropdownMobile',\n '(document:click.silent.capture)': 'onClick($event)',\n '(window>scroll.silent.capture)': 'refresh($event.currentTarget.visualViewport)',\n '(visualViewport>resize.silent)': 'refresh($event.target)',\n '(visualViewport>scroll.silent)': 'refresh($event.target)',\n },\n})\nexport class TuiDropdownMobileComponent implements OnDestroy, AfterViewInit {\n private readonly el = tuiInjectElement();\n private readonly keyboard = inject(TuiKeyboardService);\n private readonly doc = inject(DOCUMENT);\n private readonly scrollTop = this.doc.documentElement.scrollTop;\n private readonly observer = new ResizeObserver(() =>\n this.refresh(this.doc.defaultView!.visualViewport!),\n );\n\n protected readonly directive = inject(TuiDropdownMobile);\n protected readonly dropdown = inject(TuiDropdownDirective);\n protected readonly animation = {\n value: '',\n params: {\n start: '100vh',\n duration: tuiGetDuration(inject(TUI_ANIMATIONS_SPEED)),\n },\n } as const;\n\n constructor() {\n this.observer.observe(this.dropdown.el);\n this.doc.documentElement.style.setProperty('scroll-behavior', 'initial');\n }\n\n public ngAfterViewInit(): void {\n this.el.scrollTop = this.directive.tuiDropdownMobile ? this.el.clientHeight : 0;\n }\n\n public ngOnDestroy(): void {\n this.observer.disconnect();\n this.doc.body.classList.remove('t-dropdown-mobile');\n this.doc.body.style.removeProperty('--t-root-top');\n this.doc.documentElement.scrollTop = this.scrollTop;\n this.doc.documentElement.style.removeProperty('scroll-behavior');\n\n if (this.focused) {\n this.keyboard.hide();\n }\n }\n\n protected onClick(event: MouseEvent): void {\n if (\n !this.el.contains(event.target as Node) &&\n // TODO: find a better way to check if the click is inside interactive element in textfield\n !(\n tuiIsNodeIn(event.target as Node, 'tui-svg') ||\n (tuiIsElement(event.target) && event.target.tagName === 'button')\n )\n ) {\n event.stopPropagation();\n }\n }\n\n protected onSwipe({direction}: TuiSwipeEvent, el: HTMLElement): void {\n if (\n direction === 'bottom' &&\n el.getBoundingClientRect().bottom > Number(this.doc.defaultView?.innerHeight)\n ) {\n this.close();\n }\n }\n\n protected onIntersection([{isIntersecting}]: IntersectionObserverEntry[]): void {\n if (isIntersecting) {\n this.close();\n }\n }\n\n protected close(): void {\n this.dropdown.toggle(false);\n }\n\n protected refresh({offsetTop, height}: VisualViewport): void {\n this.doc.body.style.removeProperty('--t-root-top');\n\n if (\n !this.focused ||\n this.directive.tuiDropdownMobile ||\n !this.doc.documentElement.style.getPropertyValue('scroll-behavior')\n ) {\n return;\n }\n\n this.doc.documentElement.scrollTop = 0;\n\n const rect = this.dropdown.el.getBoundingClientRect();\n const offset = rect.height + GAP * 2;\n\n this.el.style.setProperty('top', tuiPx(offsetTop + offset));\n this.el.style.setProperty('height', tuiPx(height - offset));\n this.doc.body.classList.add('t-dropdown-mobile');\n this.doc.body.style.setProperty(\n '--t-root-top',\n tuiPx(offsetTop + GAP - rect.top),\n );\n }\n\n private get focused(): boolean {\n return this.dropdown.el.contains(tuiGetNativeFocused(this.doc));\n }\n}\n","<div\n *ngIf=\"directive.tuiDropdownMobile\"\n waIntersectionObserver\n waIntersectionThreshold=\"1\"\n class=\"t-filler\"\n (touchstart.prevent)=\"close()\"\n (waIntersectionObservee)=\"onIntersection($event)\"\n></div>\n<div\n #container\n class=\"t-container\"\n (tuiSwipe)=\"onSwipe($event, container)\"\n>\n <h2\n *ngIf=\"directive.tuiDropdownMobile\"\n class=\"t-heading\"\n >\n {{ directive.tuiDropdownMobile }}\n </h2>\n <div class=\"t-content\">\n <ng-container *polymorpheusOutlet=\"dropdown.content as text\">\n {{ text }}\n </ng-container>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taiga-ui-addon-mobile-directives-dropdown-mobile.mjs","sources":["../../../projects/addon-mobile/directives/dropdown-mobile/dropdown-mobile.directive.ts","../../../projects/addon-mobile/directives/dropdown-mobile/dropdown-mobile.component.ts","../../../projects/addon-mobile/directives/dropdown-mobile/dropdown-mobile.template.html","../../../projects/addon-mobile/directives/dropdown-mobile/taiga-ui-addon-mobile-directives-dropdown-mobile.ts"],"sourcesContent":["import {Directive, HostListener, inject, Input} from '@angular/core';\nimport {TUI_IS_MOBILE} from '@taiga-ui/cdk/tokens';\nimport {tuiIsHTMLElement} from '@taiga-ui/cdk/utils/dom';\nimport {TUI_DROPDOWN_COMPONENT} from '@taiga-ui/core/directives/dropdown';\n\nimport {TuiDropdownMobileComponent} from './dropdown-mobile.component';\n\n@Directive({\n standalone: true,\n selector: '[tuiDropdownMobile]',\n providers: [\n {\n provide: TUI_DROPDOWN_COMPONENT,\n useFactory: () =>\n inject(TUI_IS_MOBILE)\n ? TuiDropdownMobileComponent\n : inject(TUI_DROPDOWN_COMPONENT, {skipSelf: true}),\n },\n ],\n host: {\n '[style.visibility]': '\"visible\"',\n },\n})\nexport class TuiDropdownMobile {\n private readonly isMobile = inject(TUI_IS_MOBILE);\n\n @Input()\n public tuiDropdownMobile = '';\n\n @HostListener('mousedown', ['$event'])\n protected onMouseDown(event: MouseEvent): void {\n if (\n !this.isMobile ||\n !tuiIsHTMLElement(event.target) ||\n !event.target.matches('input,textarea')\n ) {\n return;\n }\n\n event.preventDefault();\n event.target.focus({preventScroll: true});\n }\n}\n","import {DOCUMENT, NgIf} from '@angular/common';\nimport type {AfterViewInit, OnDestroy} from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport {WaIntersectionObserver} from '@ng-web-apis/intersection-observer';\nimport {TuiKeyboardService} from '@taiga-ui/addon-mobile/services';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport type {TuiSwipeEvent} from '@taiga-ui/cdk/directives/swipe';\nimport {TuiSwipe} from '@taiga-ui/cdk/directives/swipe';\nimport {tuiInjectElement, tuiIsElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiGetNativeFocused} from '@taiga-ui/cdk/utils/focus';\nimport {tuiPx} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiFadeIn, tuiSlideInTop} from '@taiga-ui/core/animations';\nimport {TuiDropdownDirective} from '@taiga-ui/core/directives/dropdown';\nimport {TUI_ANIMATIONS_SPEED} from '@taiga-ui/core/tokens';\nimport {tuiGetDuration} from '@taiga-ui/core/utils/miscellaneous';\nimport {PolymorpheusOutlet, PolymorpheusTemplate} from '@taiga-ui/polymorpheus';\n\nimport {TuiDropdownMobile} from './dropdown-mobile.directive';\n\nconst GAP = 16;\n\n@Component({\n standalone: true,\n selector: 'tui-dropdown-mobile',\n imports: [\n WaIntersectionObserver,\n TuiSwipe,\n NgIf,\n PolymorpheusOutlet,\n PolymorpheusTemplate,\n ],\n templateUrl: './dropdown-mobile.template.html',\n styleUrls: ['./dropdown-mobile.style.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [tuiSlideInTop, tuiFadeIn],\n hostDirectives: [TuiActiveZone],\n host: {\n '[@tuiFadeIn]': 'animation',\n '[@tuiSlideInTop]': 'animation',\n '[class._sheet]': 'directive.tuiDropdownMobile',\n '(document:click.silent.capture)': 'onClick($event)',\n '(window>scroll.silent.capture)': 'refresh($event.currentTarget.visualViewport)',\n '(visualViewport>resize.silent)': 'refresh($event.target)',\n '(visualViewport>scroll.silent)': 'refresh($event.target)',\n },\n})\nexport class TuiDropdownMobileComponent implements OnDestroy, AfterViewInit {\n private readonly el = tuiInjectElement();\n private readonly keyboard = inject(TuiKeyboardService);\n private readonly doc = inject(DOCUMENT);\n private readonly scrollTop = this.doc.documentElement.scrollTop;\n private readonly observer = new ResizeObserver(() =>\n this.refresh(this.doc.defaultView!.visualViewport!),\n );\n\n protected readonly directive = inject(TuiDropdownMobile);\n protected readonly dropdown = inject(TuiDropdownDirective);\n protected readonly animation = {\n value: '',\n params: {\n start: '100vh',\n duration: tuiGetDuration(inject(TUI_ANIMATIONS_SPEED)),\n },\n } as const;\n\n constructor() {\n this.observer.observe(this.dropdown.el);\n this.doc.documentElement.style.setProperty('scroll-behavior', 'initial');\n }\n\n public ngAfterViewInit(): void {\n this.el.scrollTop = this.directive.tuiDropdownMobile ? this.el.clientHeight : 0;\n }\n\n public ngOnDestroy(): void {\n this.observer.disconnect();\n this.doc.body.classList.remove('t-dropdown-mobile');\n this.doc.body.style.removeProperty('--t-root-top');\n this.doc.documentElement.scrollTop = this.scrollTop;\n this.doc.documentElement.style.removeProperty('scroll-behavior');\n\n if (this.focused) {\n this.keyboard.hide();\n }\n }\n\n protected onClick(event: MouseEvent): void {\n if (\n tuiIsElement(event.target) &&\n !this.el.contains(event.target) &&\n (!this.dropdown.el.contains(event.target) ||\n event.target.matches('input,textarea'))\n ) {\n event.stopPropagation();\n }\n }\n\n protected onSwipe({direction}: TuiSwipeEvent, el: HTMLElement): void {\n if (\n direction === 'bottom' &&\n el.getBoundingClientRect().bottom > Number(this.doc.defaultView?.innerHeight)\n ) {\n this.close();\n }\n }\n\n protected onIntersection([{isIntersecting}]: IntersectionObserverEntry[]): void {\n if (isIntersecting) {\n this.close();\n }\n }\n\n protected close(): void {\n this.dropdown.toggle(false);\n }\n\n protected refresh({offsetTop, height}: VisualViewport): void {\n this.doc.body.style.removeProperty('--t-root-top');\n\n if (\n !this.focused ||\n this.directive.tuiDropdownMobile ||\n !this.doc.documentElement.style.getPropertyValue('scroll-behavior')\n ) {\n return;\n }\n\n this.doc.documentElement.scrollTop = 0;\n\n const rect = this.dropdown.el.getBoundingClientRect();\n const top = offsetTop + GAP - rect.top;\n const offset = rect.height + GAP * 2;\n\n this.el.style.setProperty('top', tuiPx(offsetTop + offset));\n this.el.style.setProperty('height', tuiPx(height - offset));\n this.doc.body.classList.add('t-dropdown-mobile');\n this.doc.body.style.setProperty('--t-root-top', tuiPx(top));\n }\n\n private get focused(): boolean {\n return this.dropdown.el.contains(tuiGetNativeFocused(this.doc));\n }\n}\n","<div\n *ngIf=\"directive.tuiDropdownMobile\"\n waIntersectionObserver\n waIntersectionThreshold=\"1\"\n class=\"t-filler\"\n (touchstart.prevent)=\"close()\"\n (waIntersectionObservee)=\"onIntersection($event)\"\n></div>\n<div\n #container\n class=\"t-container\"\n (tuiSwipe)=\"onSwipe($event, container)\"\n>\n <h2\n *ngIf=\"directive.tuiDropdownMobile\"\n class=\"t-heading\"\n >\n {{ directive.tuiDropdownMobile }}\n </h2>\n <div class=\"t-content\">\n <ng-container *polymorpheusOutlet=\"dropdown.content as text\">\n {{ text }}\n </ng-container>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@taiga-ui/addon-mobile",
|
|
3
|
-
"version": "4.0.0-rc.
|
|
3
|
+
"version": "4.0.0-rc.7",
|
|
4
4
|
"description": "Extension package for Taiga UI that adds support for mobile specific behaviors such as custom data pickers, dropdowns, etc.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"angular",
|
|
@@ -14,10 +14,10 @@
|
|
|
14
14
|
"@angular/cdk": ">=16.0.0",
|
|
15
15
|
"@angular/common": ">=16.0.0",
|
|
16
16
|
"@angular/core": ">=16.0.0",
|
|
17
|
-
"@ng-web-apis/common": "^4.
|
|
18
|
-
"@taiga-ui/cdk": "^4.0.0-rc.
|
|
19
|
-
"@taiga-ui/core": "^4.0.0-rc.
|
|
20
|
-
"@taiga-ui/kit": "^4.0.0-rc.
|
|
17
|
+
"@ng-web-apis/common": "^4.2.0",
|
|
18
|
+
"@taiga-ui/cdk": "^4.0.0-rc.7",
|
|
19
|
+
"@taiga-ui/core": "^4.0.0-rc.7",
|
|
20
|
+
"@taiga-ui/kit": "^4.0.0-rc.7",
|
|
21
21
|
"@taiga-ui/polymorpheus": "^4.6.4",
|
|
22
22
|
"rxjs": ">=7.0.0"
|
|
23
23
|
},
|