@seniorsistemas/angular-components 19.9.3 → 19.9.4
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/checkbox/lib/checkbox/checkbox.component.d.ts +1 -6
- package/checkbox-list/lib/checkbox-list/checkbox-list.component.d.ts +8 -0
- package/content-generator/lib/content-generator/content-generator.component.d.ts +2 -2
- package/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.d.ts +2 -0
- package/drawer/README.md +9 -2
- package/drawer/lib/drawer/drawer.component.d.ts +12 -1
- package/editor/lib/editor/editor.component.d.ts +1 -1
- package/esm2022/button/lib/button/button.component.mjs +3 -3
- package/esm2022/checkbox/lib/checkbox/checkbox.component.mjs +3 -9
- package/esm2022/checkbox-list/lib/checkbox-list/checkbox-list.component.mjs +17 -5
- package/esm2022/content-generator/lib/content-generator/content-generator.component.mjs +9 -8
- package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs +18 -3
- package/esm2022/drawer/lib/drawer/drawer.component.mjs +33 -11
- package/esm2022/drawer/lib/drawer/drawer.module.mjs +2 -2
- package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/boolean/boolean-switch-field/boolean-switch-field.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/checkbox/checkbox-field.component.mjs +4 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/password/password-field.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.mjs +3 -3
- package/esm2022/editor/lib/editor/editor.component.mjs +8 -8
- package/esm2022/file-picker/lib/file-picker/file-picker.component.mjs +4 -4
- package/esm2022/global-search/lib/global-search/components/dropdown/global-search-dropdown-item.component.mjs +4 -4
- package/esm2022/global-search/lib/global-search/global-search.module.mjs +2 -2
- package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +3 -3
- package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-text/inline-edit-text.component.mjs +2 -3
- package/esm2022/paginator/lib/models/paginator.models.mjs +1 -1
- package/esm2022/paginator/lib/paginator/paginator.component.mjs +19 -13
- package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.mjs +19 -8
- package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.module.mjs +3 -4
- package/esm2022/select/lib/select/select.component.mjs +3 -3
- package/esm2022/side-sheet/lib/side-sheet/side-sheet.component.mjs +6 -5
- package/esm2022/slider/lib/slider/slider.component.mjs +3 -3
- package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.mjs +54 -8
- package/esm2022/star-rating/star-rating/star-rating.component.mjs +3 -3
- package/esm2022/table-header/lib/table-header/table-header-checkbox.component.mjs +14 -21
- package/esm2022/text-area/lib/text-area/text-area.component.mjs +3 -3
- package/esm2022/tooltip/lib/tooltip/tooltip.directive.mjs +3 -2
- package/esm2022/utils/lib/utils/utils.mjs +49 -3
- package/fesm2022/seniorsistemas-angular-components-button.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs +16 -4
- package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-checkbox.mjs +2 -8
- package/fesm2022/seniorsistemas-angular-components-checkbox.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-content-generator.mjs +8 -6
- package/fesm2022/seniorsistemas-angular-components-content-generator.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +17 -2
- package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-drawer.mjs +32 -9
- package/fesm2022/seniorsistemas-angular-components-drawer.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +16 -16
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-editor.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-editor.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +3 -3
- package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-global-search.mjs +3 -3
- package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +3 -4
- package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-paginator.mjs +18 -12
- package/fesm2022/seniorsistemas-angular-components-paginator.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +20 -9
- package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-select.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-side-sheet.mjs +5 -4
- package/fesm2022/seniorsistemas-angular-components-side-sheet.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-slider.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-slider.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs +53 -7
- package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-star-rating.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-star-rating.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-table-header.mjs +13 -20
- package/fesm2022/seniorsistemas-angular-components-table-header.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-text-area.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-text-area.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tooltip.mjs +2 -1
- package/fesm2022/seniorsistemas-angular-components-tooltip.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-utils.mjs +49 -3
- package/fesm2022/seniorsistemas-angular-components-utils.mjs.map +1 -1
- package/global-search/lib/global-search/global-search.module.d.ts +1 -1
- package/package.json +7 -9
- package/paginator/lib/models/paginator.models.d.ts +1 -0
- package/paginator/lib/paginator/paginator.component.d.ts +3 -1
- package/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.d.ts +3 -1
- package/side-sheet/README.md +4 -4
- package/side-sheet/lib/side-sheet/side-sheet.component.d.ts +1 -0
- package/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.d.ts +2 -1
- package/table-header/lib/table-header/table-header-checkbox.component.d.ts +1 -4
- package/utils/lib/utils/utils.d.ts +21 -0
|
@@ -165,7 +165,8 @@ export class TooltipDirective {
|
|
|
165
165
|
});
|
|
166
166
|
}
|
|
167
167
|
_createTooltip(useShowDelay = false, autoDestroy = true) {
|
|
168
|
-
const
|
|
168
|
+
const tooltipValue = this.tooltip();
|
|
169
|
+
const tooltipText = tooltipValue === undefined || tooltipValue === null ? '' : String(tooltipValue);
|
|
169
170
|
if (!tooltipText.length || this.overlayRef !== null)
|
|
170
171
|
return;
|
|
171
172
|
if (this.checkTruncatedText() && !this.contentIsTruncated)
|
|
@@ -274,4 +275,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
274
275
|
type: HostListener,
|
|
275
276
|
args: ['touchend']
|
|
276
277
|
}] } });
|
|
277
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdG9vbHRpcC9zcmMvbGliL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3RCxPQUFPLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUNqSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUVILFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUdaLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxHQUNSLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUkxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFFdkQ7Ozs7Ozs7Ozs7O0dBV0c7QUFLSCxNQUFNLE9BQU8sZ0JBQWdCO0lBQ3pCOztPQUVHO0lBQ2EsT0FBTyxHQUFHLEtBQUssQ0FBcUIsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFFdEY7Ozs7O09BS0c7SUFDYSxlQUFlLEdBQUcsS0FBSyxDQUFtQixLQUFLLENBQUMsQ0FBQztJQUVqRTs7OztPQUlHO0lBQ2EsU0FBUyxHQUFHLEtBQUssQ0FBUyxHQUFHLENBQUMsQ0FBQztJQUUvQzs7O09BR0c7SUFDYSxXQUFXLEdBQUcsS0FBSyxDQUFxQixTQUFTLENBQUMsQ0FBQztJQUVuRTs7Ozs7OztPQU9HO0lBQ2EsWUFBWSxHQUFHLEtBQUssQ0FBZSxPQUFPLENBQUMsQ0FBQztJQUU1RDs7OztPQUlHO0lBQ2EsTUFBTSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUUvQzs7Ozs7T0FLRztJQUNhLE9BQU8sR0FBRyxLQUFLLENBQVUsSUFBSSxDQUFD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QUFDLFNBQVM7Z0JBWWhCLE9BQU87c0JBRGIsWUFBWTt1QkFBQyxPQUFPO2dCQVFkLE1BQU07c0JBRFosWUFBWTt1QkFBQyxNQUFNO2dCQVFiLFlBQVk7c0JBRGxCLFlBQVk7dUJBQUMsWUFBWTtnQkFTbkIsWUFBWTtzQkFGbEIsWUFBWTt1QkFBQyxZQUFZOztzQkFDekIsWUFBWTt1QkFBQyxPQUFPO2dCQVFkLFlBQVk7c0JBRGxCLFlBQVk7dUJBQUMsWUFBWTtnQkFZbkIsVUFBVTtzQkFEaEIsWUFBWTt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29ubmVjdGVkUG9zaXRpb24sIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSwgT3ZlcmxheSwgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnRSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgUmVuZGVyZXIyLFxuICAgIGluamVjdCxcbiAgICBpbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERlYm91bmNlVXRpbHMgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2NvbW1vbic7XG5pbXBvcnQgeyBNb2JpbGVCZWhhdmlvciB9IGZyb20gJy4vbW9kZWxzL21vYmlsZS1iZWhhdmlvcic7XG5pbXBvcnQgeyBUb29sdGlwRXZlbnQgfSBmcm9tICcuL21vZGVscy90b29sdGlwLWV2ZW50JztcbmltcG9ydCB7IFRvb2x0aXBQb3NpdGlvbnMgfSBmcm9tICcuL21vZGVscy90b29sdGlwLXBvc2l0aW9uJztcbmltcG9ydCB7IFRvb2x0aXBDb21wb25lbnQgfSBmcm9tICcuL3Rvb2x0aXAuY29tcG9uZW50JztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRGlyZXRpdmEgcXVlIGV4aWJlIHVtIHRvb2x0aXAgKGRpY2EgZGUgZmVycmFtZW50YSkgZmx1dHVhbnRlIGFvIGludGVyYWdpciBjb20gbyBlbGVtZW50byBob3NwZWRlaXJvLlxuICogUG9zaWNpb25hLXNlIGF1dG9tYXRpY2FtZW50ZSBjb25zaWRlcmFuZG8gbyBlc3Bhw6dvIGRpc3BvbsOtdmVsIG5hIHRlbGEsIHV0aWxpemFuZG8gbyBDREsgT3ZlcmxheS5cbiAqIFN1cG9ydGEgZXZlbnRvcyBkZSBob3ZlciwgY2xpY2sgZSBmb2N1cywgYWzDqW0gZGUgY29tcG9ydGFtZW50b3MgY3VzdG9taXphZG9zIHBhcmEgbW9iaWxlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8YnV0dG9uIHNUb29sdGlwPVwiQ2xpcXVlIGFxdWlcIiB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5Bw6fDo288L2J1dHRvbj5cbiAqIGBgYFxuICpcbiAqIEBjYXRlZ29yeSBPdmVybGF5XG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3NUb29sdGlwXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgVG9vbHRpcERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGV4dG8gZXhpYmlkbyBubyB0b29sdGlwLiBRdWFuZG8gdmF6aW8gb3UgYHVuZGVmaW5lZGAsIG8gdG9vbHRpcCBuw6NvIMOpIHJlbmRlcml6YWRvLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSB0b29sdGlwID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQsIHsgYWxpYXM6ICdzVG9vbHRpcCcgfSk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUG9zacOnw6NvIHByZWZlcmVuY2lhbCBkbyB0b29sdGlwIGVtIHJlbGHDp8OjbyBhbyBlbGVtZW50byBob3NwZWRlaXJvLlxuICAgICAqIE8gdG9vbHRpcCBzZSByZXBvc2ljaW9uYSBhdXRvbWF0aWNhbWVudGUgc2UgbsOjbyBob3V2ZXIgZXNwYcOnbyBzdWZpY2llbnRlLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgJ3RvcCdcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgdG9vbHRpcFBvc2l0aW9uID0gaW5wdXQ8VG9vbHRpcFBvc2l0aW9ucz4oJ3RvcCcpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRlbXBvIGVtIG1pbGlzc2VndW5kb3MgYW50ZXMgZG8gdG9vbHRpcCBhcGFyZWNlciBhcMOzcyBvIGV2ZW50byBkZSBhdGl2YcOnw6NvLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgNTAwXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHNob3dEZWxheSA9IGlucHV0PG51bWJlcj4oNTAwKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUZW1wbyBlbSBtaWxpc3NlZ3VuZG9zIHF1ZSBvIHRvb2x0aXAgcGVybWFuZWNlIHZpc8OtdmVsIGFww7NzIGFwYXJlY2VyLlxuICAgICAqIFF1YW5kbyBuw6NvIGluZm9ybWFkbywgbyB0b29sdGlwIHBlcm1hbmVjZSBhdMOpIG8gdXN1w6FyaW8gc2FpciBkbyBlbGVtZW50by5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgZGlzcGxheVRpbWUgPSBpbnB1dDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRXZlbnRvIGRvIGVsZW1lbnRvIGhvc3BlZGVpcm8gcXVlIGRpc3BhcmEgYSBleGliacOnw6NvIGRvIHRvb2x0aXAuXG4gICAgICogLSBgJ2hvdmVyJ2A6IGV4aWJlIGFvIHBhc3NhciBvIG1vdXNlIChwYWRyw6NvKS5cbiAgICAgKiAtIGAnY2xpY2snYDogZXhpYmUgYW8gY2xpY2FyLlxuICAgICAqIC0gYCdmb2N1cydgOiBleGliZSBhbyBmb2NhciBubyBlbGVtZW50by5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICdob3ZlcidcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgdG9vbHRpcEV2ZW50ID0gaW5wdXQ8VG9vbHRpcEV2ZW50PignaG92ZXInKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBRdWFuZG8gYHRydWVgLCBvIGNvbnRlw7pkbyBIVE1MIGRvIHRvb2x0aXAgw6kgZXNjYXBhZG8gYW50ZXMgZGUgc2VyIHJlbmRlcml6YWRvLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgZXNjYXBlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFF1YW5kbyBgZmFsc2VgLCBvIHRvb2x0aXAgbnVuY2Egw6kgZXhpYmlkbywgbWVzbW8gcXVlIGhhamEgaW50ZXJhw6fDo28gZG8gdXN1w6FyaW8uXG4gICAgICogw5p0aWwgcGFyYSBkZXNhYmlsaXRhciB0b29sdGlwcyBkaW5hbWljYW1lbnRlLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSB2aXNpYmxlID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29tcG9ydGFtZW50byBkbyB0b29sdGlwIGVtIGRpc3Bvc2l0aXZvcyBtw7N2ZWlzICh0b3VjaCkuXG4gICAgICogLSBgJ3ByZXNzaW5nJ2A6IGV4aWJlIGFvIHByZXNzaW9uYXIgZSBtYW50ZXIgbyB0b3F1ZSAocGFkcsOjbykuXG4gICAgICogLSBgJ25vbmUnYDogZGVzYWJpbGl0YSBvIHRvb2x0aXAgZW0gZGlzcG9zaXRpdm9zIHTDoXRlaXMuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAncHJlc3NpbmcnXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IG1vYmlsZUJlaGF2aW9yID0gaW5wdXQ8TW9iaWxlQmVoYXZpb3I+KCdwcmVzc2luZycpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlZmVyw6puY2lhIGEgdW0gaW5wdXQgSFRNTCBwYXJhIHNpbmNyb25pemFyIGEgZXhpYmnDp8OjbyBkbyB0b29sdGlwIGNvbSBvIGZvY28gbm8gY2FtcG8uXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGZvY3VzZWRJbnB1dFJlZiA9IGlucHV0PEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsPihudWxsKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBRdWFuZG8gYHRydWVgLCBvIHRvb2x0aXAgc8OzIMOpIGV4aWJpZG8gc2UgbyB0ZXh0byBkbyBlbGVtZW50byBlc3RpdmVyIHRydW5jYWRvIChvdmVyZmxvdykuXG4gICAgICogw5p0aWwgcGFyYSBjZWxscyBkZSB0YWJlbGEgb3UgZWxlbWVudG9zIGNvbSBgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXNgLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgY2hlY2tUcnVuY2F0ZWRUZXh0ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXkgPSBpbmplY3QoT3ZlcmxheSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWJvdW5jZVV0aWxzID0gaW5qZWN0KERlYm91bmNlVXRpbHMpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcblxuICAgIHByaXZhdGUgb3ZlcmxheVJlZjogT3ZlcmxheVJlZiB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8VG9vbHRpcENvbXBvbmVudD4gfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIHBvc2l0aW9uQ2hhbmdlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIHNob3dUaW1lb3V0PzogbnVtYmVyO1xuICAgIHByaXZhdGUgdG91Y2hUaW1lb3V0PzogbnVtYmVyO1xuICAgIHByaXZhdGUgdG9vbHRpcENyZWF0ZWRCeUZvY3VzID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWJvdW5jZUNyZWF0ZVRvb2x0aXBGdW5jdGlvbiA9IHRoaXMuZGVib3VuY2VVdGlscy5kZWJvdW5jZUxlYWRpbmcoKCkgPT5cbiAgICAgICAgdGhpcy5fY3JlYXRlVG9vbHRpcCh0cnVlLCB0cnVlKSxcbiAgICApO1xuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbGlkYXRlUG9zaXRpb24oKTtcbiAgICAgICAgdGhpcy51cGRhdGVUb29sdGlwVmlzaWJpbGl0eVdoZW5Gb2N1c09uSW5wdXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIC8vIHdoZW5ldmVyIHRoZSBjb21wb25lbnQgd2l0aCB0aGUgdG9vbHRpcCBpcyBjbGlja2VkIEkgZGVzdHJveSB0aGUgdG9vbHRpcC5cbiAgICAvLyB3aGVuZXZlciBhIGtleSBpcyBwcmVzc2VkIG9uIHRoZSBjb21wb25lbnQgd2l0aCB0aGUgdG9vbHRpcCBJIGRlc3Ryb3kgdGhlIHRvb2x0aXAuXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nKVxuICAgIHB1YmxpYyBvbkNsaWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnRvb2x0aXBFdmVudCgpID09PSAnaG92ZXInICYmXG4gICAgICAgICAgICAhbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvQW5kcm9pZC9pKSAmJlxuICAgICAgICAgICAgIW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL2lQaG9uZS9pKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZm9jdXMnKVxuICAgIHB1YmxpYyBvbkZvY3VzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy50b29sdGlwRXZlbnQoKSA9PT0gJ2ZvY3VzJykge1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlVG9vbHRpcCh0cnVlLCB0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2JsdXInKVxuICAgIHB1YmxpYyBvbkJsdXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBFdmVudCgpID09PSAnZm9jdXMnKSB7XG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlZW50ZXInKVxuICAgIHB1YmxpYyBvbk1vdXNlRW50ZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBFdmVudCgpID09PSAnaG92ZXInIHx8IHRoaXMuZm9jdXNlZElucHV0UmVmKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZGVib3VuY2VDcmVhdGVUb29sdGlwRnVuY3Rpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKVxuICAgIEBIb3N0TGlzdGVuZXIoJ3doZWVsJylcbiAgICBwdWJsaWMgb25Nb3VzZUxlYXZlKCk6IHZvaWQge1xuICAgICAgICBpZiAoKHRoaXMudG9vbHRpcEV2ZW50KCkgPT09ICdob3ZlcicgfHwgdGhpcy5mb2N1c2VkSW5wdXRSZWYoKSkgJiYgIXRoaXMudG9vbHRpcENyZWF0ZWRCeUZvY3VzKSB7XG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3RvdWNoc3RhcnQnKVxuICAgIHB1YmxpYyBvblRvdWNoU3RhcnQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBFdmVudCgpID09PSAnaG92ZXInKSB7XG4gICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMudG91Y2hUaW1lb3V0KTtcbiAgICAgICAgICAgIGNvbnN0IGRlbGF5ID0gdGhpcy5tb2JpbGVCZWhhdmlvcigpID09PSAncHJlc3NpbmcnID8gdGhpcy5zaG93RGVsYXkoKSA6IDA7XG4gICAgICAgICAgICB0aGlzLnRvdWNoVGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVUb29sdGlwKHRydWUsIHRydWUpO1xuICAgICAgICAgICAgfSwgZGVsYXkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigndG91Y2hlbmQnKVxuICAgIHB1YmxpYyBvblRvdWNoRW5kKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy50b29sdGlwRXZlbnQoKSA9PT0gJ2hvdmVyJyAmJiB0aGlzLm1vYmlsZUJlaGF2aW9yKCkgPT09ICdwcmVzc2luZycpIHtcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy50b3VjaFRpbWVvdXQpO1xuICAgICAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlUG9zaXRpb24oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5zUG9zaXRpb24gPSBbJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddLmluY2x1ZGVzKHRoaXMudG9vbHRpcFBvc2l0aW9uKCkpO1xuICAgICAgICBpZiAoIWNvbnRhaW5zUG9zaXRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVG9vbHRpcCBwb3NpdGlvbiBcIiR7dGhpcy50b29sdGlwUG9zaXRpb24oKX1cIiBpcyB1bmV4cGVjdGVkYCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNYW5pcHVsYSBhIHZpc2liaWxpZGFkZSBkbyB0b29sdGlwIHF1YW5kbyBob3V2ZXIgdW1hIHJlZmVyw6puY2lhIGRlIGlucHV0LlxuICAgICAqL1xuICAgIHByaXZhdGUgdXBkYXRlVG9vbHRpcFZpc2liaWxpdHlXaGVuRm9jdXNPbklucHV0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnB1dFJlZiA9IHRoaXMuZm9jdXNlZElucHV0UmVmKCk7XG4gICAgICAgIGlmICghaW5wdXRSZWYpIHJldHVybjtcblxuICAgICAgICB0aGlzLnJlbmRlcmVyLmxpc3RlbihpbnB1dFJlZiwgJ2ZvY3VzJywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlVG9vbHRpcChmYWxzZSwgZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy50b29sdGlwQ3JlYXRlZEJ5Rm9jdXMgPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oaW5wdXRSZWYsICdibHVyJywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICAgICAgICB0aGlzLnRvb2x0aXBDcmVhdGVkQnlGb2N1cyA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jcmVhdGVUb29sdGlwKHVzZVNob3dEZWxheSA9IGZhbHNlLCBhdXRvRGVzdHJveSA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdG9vbHRpcFRleHQgPSB0aGlzLnRvb2x0aXAoKSA/PyAnJztcbiAgICAgICAgaWYgKCF0b29sdGlwVGV4dC5sZW5ndGggfHwgdGhpcy5vdmVybGF5UmVmICE9PSBudWxsKSByZXR1cm47XG5cbiAgICAgICAgaWYgKHRoaXMuY2hlY2tUcnVuY2F0ZWRUZXh0KCkgJiYgIXRoaXMuY29udGVudElzVHJ1bmNhdGVkKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMuYnVpbGRQb3NpdGlvblN0cmF0ZWd5KCk7XG4gICAgICAgIGNvbnN0IHNjcm9sbFN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpO1xuXG4gICAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoeyBwb3NpdGlvblN0cmF0ZWd5LCBzY3JvbGxTdHJhdGVneSB9KTtcblxuICAgICAgICBjb25zdCBwb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKFRvb2x0aXBDb21wb25lbnQpO1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMub3ZlcmxheVJlZi5hdHRhY2gocG9ydGFsKTtcblxuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgndG9vbHRpcCcsIHRvb2x0aXBUZXh0KTtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ2VzY2FwZScsIHRoaXMuZXNjYXBlKCkpO1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgncG9zaXRpb24nLCB0aGlzLnRvb2x0aXBQb3NpdGlvbigpKTtcblxuICAgICAgICB0aGlzLnBvc2l0aW9uQ2hhbmdlU3Vic2NyaXB0aW9uID0gcG9zaXRpb25TdHJhdGVneS5wb3NpdGlvbkNoYW5nZXMuc3Vic2NyaWJlKChjaGFuZ2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1hcHBlZFBvc2l0aW9uID0gdGhpcy5tYXBDZGtQb3NpdGlvblRvVG9vbHRpcFBvc2l0aW9uKGNoYW5nZS5jb25uZWN0aW9uUGFpcik7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZj8uc2V0SW5wdXQoJ3Bvc2l0aW9uJywgbWFwcGVkUG9zaXRpb24pO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBkZWxheSA9IHVzZVNob3dEZWxheSA/IHRoaXMuc2hvd0RlbGF5KCkgOiAwO1xuICAgICAgICB0aGlzLnNob3dUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWY/LnNldElucHV0KCd2aXNpYmxlJywgdGhpcy52aXNpYmxlKCkpO1xuICAgICAgICB9LCBkZWxheSk7XG5cbiAgICAgICAgaWYgKGF1dG9EZXN0cm95ICYmIHRoaXMuZGlzcGxheVRpbWUoKSkge1xuICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICAgICAgfSwgdGhpcy5kaXNwbGF5VGltZSgpISk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGJ1aWxkUG9zaXRpb25TdHJhdGVneSgpOiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kge1xuICAgICAgICBjb25zdCBwcmVmZXJyZWQgPSB0aGlzLnRvb2x0aXBQb3NpdGlvbigpO1xuICAgICAgICBjb25zdCBhbGxQb3NpdGlvbnM6IFRvb2x0aXBQb3NpdGlvbnNbXSA9IFsndG9wJywgJ2JvdHRvbScsICdsZWZ0JywgJ3JpZ2h0J107XG4gICAgICAgIGNvbnN0IG9yZGVyZWRQb3NpdGlvbnMgPSBbcHJlZmVycmVkLCAuLi5hbGxQb3NpdGlvbnMuZmlsdGVyKChwKSA9PiBwICE9PSBwcmVmZXJyZWQpXTtcblxuICAgICAgICByZXR1cm4gdGhpcy5vdmVybGF5XG4gICAgICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5lbGVtZW50UmVmKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMob3JkZXJlZFBvc2l0aW9ucy5tYXAoKHApID0+IHRoaXMuZ2V0Q29ubmVjdGVkUG9zaXRpb24ocCkpKVxuICAgICAgICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoZmFsc2UpXG4gICAgICAgICAgICAud2l0aFB1c2goZmFsc2UpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q29ubmVjdGVkUG9zaXRpb24ocG9zOiBUb29sdGlwUG9zaXRpb25zKTogQ29ubmVjdGVkUG9zaXRpb24ge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSAxMDtcbiAgICAgICAgY29uc3QgcG9zaXRpb25NYXA6IFJlY29yZDxUb29sdGlwUG9zaXRpb25zLCBDb25uZWN0ZWRQb3NpdGlvbj4gPSB7XG4gICAgICAgICAgICB0b3A6IHsgb3JpZ2luWDogJ2NlbnRlcicsIG9yaWdpblk6ICd0b3AnLCBvdmVybGF5WDogJ2NlbnRlcicsIG92ZXJsYXlZOiAnYm90dG9tJywgb2Zmc2V0WTogLW9mZnNldCB9LFxuICAgICAgICAgICAgYm90dG9tOiB7IG9yaWdpblg6ICdjZW50ZXInLCBvcmlnaW5ZOiAnYm90dG9tJywgb3ZlcmxheVg6ICdjZW50ZXInLCBvdmVybGF5WTogJ3RvcCcsIG9mZnNldFk6IG9mZnNldCB9LFxuICAgICAgICAgICAgbGVmdDogeyBvcmlnaW5YOiAnc3RhcnQnLCBvcmlnaW5ZOiAnY2VudGVyJywgb3ZlcmxheVg6ICdlbmQnLCBvdmVybGF5WTogJ2NlbnRlcicsIG9mZnNldFg6IC1vZmZzZXQgfSxcbiAgICAgICAgICAgIHJpZ2h0OiB7IG9yaWdpblg6ICdlbmQnLCBvcmlnaW5ZOiAnY2VudGVyJywgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAnY2VudGVyJywgb2Zmc2V0WDogb2Zmc2V0IH0sXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBwb3NpdGlvbk1hcFtwb3NdO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWFwQ2RrUG9zaXRpb25Ub1Rvb2x0aXBQb3NpdGlvbihwYWlyOiB7IG92ZXJsYXlYOiBzdHJpbmc7IG92ZXJsYXlZOiBzdHJpbmcgfSk6IFRvb2x0aXBQb3NpdGlvbnMge1xuICAgICAgICBpZiAocGFpci5vdmVybGF5WSA9PT0gJ2JvdHRvbScpIHJldHVybiAndG9wJztcbiAgICAgICAgaWYgKHBhaXIub3ZlcmxheVkgPT09ICd0b3AnKSByZXR1cm4gJ2JvdHRvbSc7XG4gICAgICAgIGlmIChwYWlyLm92ZXJsYXlYID09PSAnZW5kJykgcmV0dXJuICdsZWZ0JztcbiAgICAgICAgcmV0dXJuICdyaWdodCc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuc2hvd1RpbWVvdXQpO1xuICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMudG91Y2hUaW1lb3V0KTtcbiAgICAgICAgdGhpcy5wb3NpdGlvbkNoYW5nZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5wb3NpdGlvbkNoYW5nZVN1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgY29udGVudElzVHJ1bmNhdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIHJldHVybiBlbGVtZW50LnNjcm9sbEhlaWdodCA+IGVsZW1lbnQuY2xpZW50SGVpZ2h0IHx8IGVsZW1lbnQuc2Nyb2xsV2lkdGggPiBlbGVtZW50LmNsaWVudFdpZHRoO1xuICAgIH1cbn1cblxuIl19
|
|
278
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdG9vbHRpcC9zcmMvbGliL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3RCxPQUFPLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUNqSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUVILFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUdaLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxHQUNSLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUkxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFFdkQ7Ozs7Ozs7Ozs7O0dBV0c7QUFLSCxNQUFNLE9BQU8sZ0JBQWdCO0lBQ3pCOztPQUVHO0lBQ2EsT0FBTyxHQUFHLEtBQUssQ0FBcUIsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFFdEY7Ozs7O09BS0c7SUFDYSxlQUFlLEdBQUcsS0FBSyxDQUFtQixLQUFLLENBQUMsQ0FBQztJQUVqRTs7OztPQUlHO0lBQ2EsU0FBUyxHQUFHLEtBQUssQ0FBUyxHQUFHLENBQUMsQ0FBQztJQUUvQzs7O09BR0c7SUFDYSxXQUFXLEdBQUcsS0FBSyxDQUFxQixTQUFTLENBQUMsQ0FBQztJQUVuRTs7Ozs7OztPQU9HO0lBQ2EsWUFBWSxHQUFHLEtBQUssQ0FBZSxPQUFPLENBQUMsQ0FBQztJQUU1RDs7OztPQUlHO0lBQ2EsTUFBTSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUUvQzs7Ozs7T0FLRztJQUNhLE9BQU8sR0FBRyxLQUFLLENBQVUsSUFBSSxDQUFD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O21CQUFDO29CQUNQLFFBQVEsRUFBRSxZQUFZO29CQUN0QixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OEJBdUdVLE9BQU87c0JBRmIsWUFBWTt1QkFBQyxPQUFPOztzQkFDcEIsWUFBWTt1QkFBQyxTQUFTO2dCQVloQixPQUFPO3NCQURiLFlBQVk7dUJBQUMsT0FBTztnQkFRZCxNQUFNO3NCQURaLFlBQVk7dUJBQUMsTUFBTTtnQkFRYixZQUFZO3NCQURsQixZQUFZO3VCQUFDLFlBQVk7Z0JBU25CLFlBQVk7c0JBRmxCLFlBQVk7dUJBQUMsWUFBWTs7c0JBQ3pCLFlBQVk7dUJBQUMsT0FBTztnQkFRZCxZQUFZO3NCQURsQixZQUFZO3VCQUFDLFlBQVk7Z0JBWW5CLFVBQVU7c0JBRGhCLFlBQVk7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbm5lY3RlZFBvc2l0aW9uLCBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3ksIE92ZXJsYXksIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50UmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFJlbmRlcmVyMixcbiAgICBpbmplY3QsXG4gICAgaW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEZWJvdW5jZVV0aWxzIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9jb21tb24nO1xuaW1wb3J0IHsgTW9iaWxlQmVoYXZpb3IgfSBmcm9tICcuL21vZGVscy9tb2JpbGUtYmVoYXZpb3InO1xuaW1wb3J0IHsgVG9vbHRpcEV2ZW50IH0gZnJvbSAnLi9tb2RlbHMvdG9vbHRpcC1ldmVudCc7XG5pbXBvcnQgeyBUb29sdGlwUG9zaXRpb25zIH0gZnJvbSAnLi9tb2RlbHMvdG9vbHRpcC1wb3NpdGlvbic7XG5pbXBvcnQgeyBUb29sdGlwQ29tcG9uZW50IH0gZnJvbSAnLi90b29sdGlwLmNvbXBvbmVudCc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIERpcmV0aXZhIHF1ZSBleGliZSB1bSB0b29sdGlwIChkaWNhIGRlIGZlcnJhbWVudGEpIGZsdXR1YW50ZSBhbyBpbnRlcmFnaXIgY29tIG8gZWxlbWVudG8gaG9zcGVkZWlyby5cbiAqIFBvc2ljaW9uYS1zZSBhdXRvbWF0aWNhbWVudGUgY29uc2lkZXJhbmRvIG8gZXNwYcOnbyBkaXNwb27DrXZlbCBuYSB0ZWxhLCB1dGlsaXphbmRvIG8gQ0RLIE92ZXJsYXkuXG4gKiBTdXBvcnRhIGV2ZW50b3MgZGUgaG92ZXIsIGNsaWNrIGUgZm9jdXMsIGFsw6ltIGRlIGNvbXBvcnRhbWVudG9zIGN1c3RvbWl6YWRvcyBwYXJhIG1vYmlsZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPGJ1dHRvbiBzVG9vbHRpcD1cIkNsaXF1ZSBhcXVpXCIgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+QcOnw6NvPC9idXR0b24+XG4gKiBgYGBcbiAqXG4gKiBAY2F0ZWdvcnkgT3ZlcmxheVxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tzVG9vbHRpcF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFRvb2x0aXBEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRleHRvIGV4aWJpZG8gbm8gdG9vbHRpcC4gUXVhbmRvIHZhemlvIG91IGB1bmRlZmluZWRgLCBvIHRvb2x0aXAgbsOjbyDDqSByZW5kZXJpemFkby5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgdG9vbHRpcCA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkLCB7IGFsaWFzOiAnc1Rvb2x0aXAnIH0pO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFBvc2nDp8OjbyBwcmVmZXJlbmNpYWwgZG8gdG9vbHRpcCBlbSByZWxhw6fDo28gYW8gZWxlbWVudG8gaG9zcGVkZWlyby5cbiAgICAgKiBPIHRvb2x0aXAgc2UgcmVwb3NpY2lvbmEgYXV0b21hdGljYW1lbnRlIHNlIG7Do28gaG91dmVyIGVzcGHDp28gc3VmaWNpZW50ZS5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICd0b3AnXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHRvb2x0aXBQb3NpdGlvbiA9IGlucHV0PFRvb2x0aXBQb3NpdGlvbnM+KCd0b3AnKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUZW1wbyBlbSBtaWxpc3NlZ3VuZG9zIGFudGVzIGRvIHRvb2x0aXAgYXBhcmVjZXIgYXDDs3MgbyBldmVudG8gZGUgYXRpdmHDp8Ojby5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IDUwMFxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBzaG93RGVsYXkgPSBpbnB1dDxudW1iZXI+KDUwMCk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGVtcG8gZW0gbWlsaXNzZWd1bmRvcyBxdWUgbyB0b29sdGlwIHBlcm1hbmVjZSB2aXPDrXZlbCBhcMOzcyBhcGFyZWNlci5cbiAgICAgKiBRdWFuZG8gbsOjbyBpbmZvcm1hZG8sIG8gdG9vbHRpcCBwZXJtYW5lY2UgYXTDqSBvIHVzdcOhcmlvIHNhaXIgZG8gZWxlbWVudG8uXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGRpc3BsYXlUaW1lID0gaW5wdXQ8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEV2ZW50byBkbyBlbGVtZW50byBob3NwZWRlaXJvIHF1ZSBkaXNwYXJhIGEgZXhpYmnDp8OjbyBkbyB0b29sdGlwLlxuICAgICAqIC0gYCdob3ZlcidgOiBleGliZSBhbyBwYXNzYXIgbyBtb3VzZSAocGFkcsOjbykuXG4gICAgICogLSBgJ2NsaWNrJ2A6IGV4aWJlIGFvIGNsaWNhci5cbiAgICAgKiAtIGAnZm9jdXMnYDogZXhpYmUgYW8gZm9jYXIgbm8gZWxlbWVudG8uXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAnaG92ZXInXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHRvb2x0aXBFdmVudCA9IGlucHV0PFRvb2x0aXBFdmVudD4oJ2hvdmVyJyk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUXVhbmRvIGB0cnVlYCwgbyBjb250ZcO6ZG8gSFRNTCBkbyB0b29sdGlwIMOpIGVzY2FwYWRvIGFudGVzIGRlIHNlciByZW5kZXJpemFkby5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGVzY2FwZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBRdWFuZG8gYGZhbHNlYCwgbyB0b29sdGlwIG51bmNhIMOpIGV4aWJpZG8sIG1lc21vIHF1ZSBoYWphIGludGVyYcOnw6NvIGRvIHVzdcOhcmlvLlxuICAgICAqIMOadGlsIHBhcmEgZGVzYWJpbGl0YXIgdG9vbHRpcHMgZGluYW1pY2FtZW50ZS5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgdmlzaWJsZSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENvbXBvcnRhbWVudG8gZG8gdG9vbHRpcCBlbSBkaXNwb3NpdGl2b3MgbcOzdmVpcyAodG91Y2gpLlxuICAgICAqIC0gYCdwcmVzc2luZydgOiBleGliZSBhbyBwcmVzc2lvbmFyIGUgbWFudGVyIG8gdG9xdWUgKHBhZHLDo28pLlxuICAgICAqIC0gYCdub25lJ2A6IGRlc2FiaWxpdGEgbyB0b29sdGlwIGVtIGRpc3Bvc2l0aXZvcyB0w6F0ZWlzLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgJ3ByZXNzaW5nJ1xuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBtb2JpbGVCZWhhdmlvciA9IGlucHV0PE1vYmlsZUJlaGF2aW9yPigncHJlc3NpbmcnKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZWZlcsOqbmNpYSBhIHVtIGlucHV0IEhUTUwgcGFyYSBzaW5jcm9uaXphciBhIGV4aWJpw6fDo28gZG8gdG9vbHRpcCBjb20gbyBmb2NvIG5vIGNhbXBvLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBmb2N1c2VkSW5wdXRSZWYgPSBpbnB1dDxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4obnVsbCk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUXVhbmRvIGB0cnVlYCwgbyB0b29sdGlwIHPDsyDDqSBleGliaWRvIHNlIG8gdGV4dG8gZG8gZWxlbWVudG8gZXN0aXZlciB0cnVuY2FkbyAob3ZlcmZsb3cpLlxuICAgICAqIMOadGlsIHBhcmEgY2VsbHMgZGUgdGFiZWxhIG91IGVsZW1lbnRvcyBjb20gYHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzYC5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGNoZWNrVHJ1bmNhdGVkVGV4dCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBvdmVybGF5ID0gaW5qZWN0KE92ZXJsYXkpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVib3VuY2VVdGlscyA9IGluamVjdChEZWJvdW5jZVV0aWxzKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG5cbiAgICBwcml2YXRlIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYgfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPFRvb2x0aXBDb21wb25lbnQ+IHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBwb3NpdGlvbkNoYW5nZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBzaG93VGltZW91dD86IG51bWJlcjtcbiAgICBwcml2YXRlIHRvdWNoVGltZW91dD86IG51bWJlcjtcbiAgICBwcml2YXRlIHRvb2x0aXBDcmVhdGVkQnlGb2N1cyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVib3VuY2VDcmVhdGVUb29sdGlwRnVuY3Rpb24gPSB0aGlzLmRlYm91bmNlVXRpbHMuZGVib3VuY2VMZWFkaW5nKCgpID0+XG4gICAgICAgIHRoaXMuX2NyZWF0ZVRvb2x0aXAodHJ1ZSwgdHJ1ZSksXG4gICAgKTtcblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZVBvc2l0aW9uKCk7XG4gICAgICAgIHRoaXMudXBkYXRlVG9vbHRpcFZpc2liaWxpdHlXaGVuRm9jdXNPbklucHV0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICAvLyB3aGVuZXZlciB0aGUgY29tcG9uZW50IHdpdGggdGhlIHRvb2x0aXAgaXMgY2xpY2tlZCBJIGRlc3Ryb3kgdGhlIHRvb2x0aXAuXG4gICAgLy8gd2hlbmV2ZXIgYSBrZXkgaXMgcHJlc3NlZCBvbiB0aGUgY29tcG9uZW50IHdpdGggdGhlIHRvb2x0aXAgSSBkZXN0cm95IHRoZSB0b29sdGlwLlxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJylcbiAgICBwdWJsaWMgb25DbGljaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy50b29sdGlwRXZlbnQoKSA9PT0gJ2hvdmVyJyAmJlxuICAgICAgICAgICAgIW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0FuZHJvaWQvaSkgJiZcbiAgICAgICAgICAgICFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9pUGhvbmUvaSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJylcbiAgICBwdWJsaWMgb25Gb2N1cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcEV2ZW50KCkgPT09ICdmb2N1cycpIHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVRvb2x0aXAodHJ1ZSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdibHVyJylcbiAgICBwdWJsaWMgb25CbHVyKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy50b29sdGlwRXZlbnQoKSA9PT0gJ2ZvY3VzJykge1xuICAgICAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJylcbiAgICBwdWJsaWMgb25Nb3VzZUVudGVyKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy50b29sdGlwRXZlbnQoKSA9PT0gJ2hvdmVyJyB8fCB0aGlzLmZvY3VzZWRJbnB1dFJlZigpKSB7XG4gICAgICAgICAgICB0aGlzLmRlYm91bmNlQ3JlYXRlVG9vbHRpcEZ1bmN0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJylcbiAgICBASG9zdExpc3RlbmVyKCd3aGVlbCcpXG4gICAgcHVibGljIG9uTW91c2VMZWF2ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCh0aGlzLnRvb2x0aXBFdmVudCgpID09PSAnaG92ZXInIHx8IHRoaXMuZm9jdXNlZElucHV0UmVmKCkpICYmICF0aGlzLnRvb2x0aXBDcmVhdGVkQnlGb2N1cykge1xuICAgICAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCd0b3VjaHN0YXJ0JylcbiAgICBwdWJsaWMgb25Ub3VjaFN0YXJ0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy50b29sdGlwRXZlbnQoKSA9PT0gJ2hvdmVyJykge1xuICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnRvdWNoVGltZW91dCk7XG4gICAgICAgICAgICBjb25zdCBkZWxheSA9IHRoaXMubW9iaWxlQmVoYXZpb3IoKSA9PT0gJ3ByZXNzaW5nJyA/IHRoaXMuc2hvd0RlbGF5KCkgOiAwO1xuICAgICAgICAgICAgdGhpcy50b3VjaFRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlVG9vbHRpcCh0cnVlLCB0cnVlKTtcbiAgICAgICAgICAgIH0sIGRlbGF5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3RvdWNoZW5kJylcbiAgICBwdWJsaWMgb25Ub3VjaEVuZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcEV2ZW50KCkgPT09ICdob3ZlcicgJiYgdGhpcy5tb2JpbGVCZWhhdmlvcigpID09PSAncHJlc3NpbmcnKSB7XG4gICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMudG91Y2hUaW1lb3V0KTtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZVBvc2l0aW9uKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb250YWluc1Bvc2l0aW9uID0gWyd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXS5pbmNsdWRlcyh0aGlzLnRvb2x0aXBQb3NpdGlvbigpKTtcbiAgICAgICAgaWYgKCFjb250YWluc1Bvc2l0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRvb2x0aXAgcG9zaXRpb24gXCIke3RoaXMudG9vbHRpcFBvc2l0aW9uKCl9XCIgaXMgdW5leHBlY3RlZGApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWFuaXB1bGEgYSB2aXNpYmlsaWRhZGUgZG8gdG9vbHRpcCBxdWFuZG8gaG91dmVyIHVtYSByZWZlcsOqbmNpYSBkZSBpbnB1dC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHVwZGF0ZVRvb2x0aXBWaXNpYmlsaXR5V2hlbkZvY3VzT25JbnB1dCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5wdXRSZWYgPSB0aGlzLmZvY3VzZWRJbnB1dFJlZigpO1xuICAgICAgICBpZiAoIWlucHV0UmVmKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oaW5wdXRSZWYsICdmb2N1cycsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVRvb2x0aXAoZmFsc2UsIGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcENyZWF0ZWRCeUZvY3VzID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGlucHV0UmVmLCAnYmx1cicsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy50b29sdGlwQ3JlYXRlZEJ5Rm9jdXMgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY3JlYXRlVG9vbHRpcCh1c2VTaG93RGVsYXkgPSBmYWxzZSwgYXV0b0Rlc3Ryb3kgPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRvb2x0aXBWYWx1ZSA9IHRoaXMudG9vbHRpcCgpO1xuICAgICAgICBjb25zdCB0b29sdGlwVGV4dCA9IHRvb2x0aXBWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHRvb2x0aXBWYWx1ZSA9PT0gbnVsbCA/ICcnIDogU3RyaW5nKHRvb2x0aXBWYWx1ZSk7XG4gICAgICAgIGlmICghdG9vbHRpcFRleHQubGVuZ3RoIHx8IHRoaXMub3ZlcmxheVJlZiAhPT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgICAgIGlmICh0aGlzLmNoZWNrVHJ1bmNhdGVkVGV4dCgpICYmICF0aGlzLmNvbnRlbnRJc1RydW5jYXRlZCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLmJ1aWxkUG9zaXRpb25TdHJhdGVneSgpO1xuICAgICAgICBjb25zdCBzY3JvbGxTdHJhdGVneSA9IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKTtcblxuICAgICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHsgcG9zaXRpb25TdHJhdGVneSwgc2Nyb2xsU3RyYXRlZ3kgfSk7XG5cbiAgICAgICAgY29uc3QgcG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChUb29sdGlwQ29tcG9uZW50KTtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKHBvcnRhbCk7XG5cbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ3Rvb2x0aXAnLCB0b29sdGlwVGV4dCk7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdlc2NhcGUnLCB0aGlzLmVzY2FwZSgpKTtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ3Bvc2l0aW9uJywgdGhpcy50b29sdGlwUG9zaXRpb24oKSk7XG5cbiAgICAgICAgdGhpcy5wb3NpdGlvbkNoYW5nZVN1YnNjcmlwdGlvbiA9IHBvc2l0aW9uU3RyYXRlZ3kucG9zaXRpb25DaGFuZ2VzLnN1YnNjcmliZSgoY2hhbmdlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtYXBwZWRQb3NpdGlvbiA9IHRoaXMubWFwQ2RrUG9zaXRpb25Ub1Rvb2x0aXBQb3NpdGlvbihjaGFuZ2UuY29ubmVjdGlvblBhaXIpO1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWY/LnNldElucHV0KCdwb3NpdGlvbicsIG1hcHBlZFBvc2l0aW9uKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgZGVsYXkgPSB1c2VTaG93RGVsYXkgPyB0aGlzLnNob3dEZWxheSgpIDogMDtcbiAgICAgICAgdGhpcy5zaG93VGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmPy5zZXRJbnB1dCgndmlzaWJsZScsIHRoaXMudmlzaWJsZSgpKTtcbiAgICAgICAgfSwgZGVsYXkpO1xuXG4gICAgICAgIGlmIChhdXRvRGVzdHJveSAmJiB0aGlzLmRpc3BsYXlUaW1lKCkpIHtcbiAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIH0sIHRoaXMuZGlzcGxheVRpbWUoKSEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBidWlsZFBvc2l0aW9uU3RyYXRlZ3koKTogRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5IHtcbiAgICAgICAgY29uc3QgcHJlZmVycmVkID0gdGhpcy50b29sdGlwUG9zaXRpb24oKTtcbiAgICAgICAgY29uc3QgYWxsUG9zaXRpb25zOiBUb29sdGlwUG9zaXRpb25zW10gPSBbJ3RvcCcsICdib3R0b20nLCAnbGVmdCcsICdyaWdodCddO1xuICAgICAgICBjb25zdCBvcmRlcmVkUG9zaXRpb25zID0gW3ByZWZlcnJlZCwgLi4uYWxsUG9zaXRpb25zLmZpbHRlcigocCkgPT4gcCAhPT0gcHJlZmVycmVkKV07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMub3ZlcmxheVxuICAgICAgICAgICAgLnBvc2l0aW9uKClcbiAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZWxlbWVudFJlZilcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb25zKG9yZGVyZWRQb3NpdGlvbnMubWFwKChwKSA9PiB0aGlzLmdldENvbm5lY3RlZFBvc2l0aW9uKHApKSlcbiAgICAgICAgICAgIC53aXRoRmxleGlibGVEaW1lbnNpb25zKGZhbHNlKVxuICAgICAgICAgICAgLndpdGhQdXNoKGZhbHNlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvbm5lY3RlZFBvc2l0aW9uKHBvczogVG9vbHRpcFBvc2l0aW9ucyk6IENvbm5lY3RlZFBvc2l0aW9uIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gMTA7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uTWFwOiBSZWNvcmQ8VG9vbHRpcFBvc2l0aW9ucywgQ29ubmVjdGVkUG9zaXRpb24+ID0ge1xuICAgICAgICAgICAgdG9wOiB7IG9yaWdpblg6ICdjZW50ZXInLCBvcmlnaW5ZOiAndG9wJywgb3ZlcmxheVg6ICdjZW50ZXInLCBvdmVybGF5WTogJ2JvdHRvbScsIG9mZnNldFk6IC1vZmZzZXQgfSxcbiAgICAgICAgICAgIGJvdHRvbTogeyBvcmlnaW5YOiAnY2VudGVyJywgb3JpZ2luWTogJ2JvdHRvbScsIG92ZXJsYXlYOiAnY2VudGVyJywgb3ZlcmxheVk6ICd0b3AnLCBvZmZzZXRZOiBvZmZzZXQgfSxcbiAgICAgICAgICAgIGxlZnQ6IHsgb3JpZ2luWDogJ3N0YXJ0Jywgb3JpZ2luWTogJ2NlbnRlcicsIG92ZXJsYXlYOiAnZW5kJywgb3ZlcmxheVk6ICdjZW50ZXInLCBvZmZzZXRYOiAtb2Zmc2V0IH0sXG4gICAgICAgICAgICByaWdodDogeyBvcmlnaW5YOiAnZW5kJywgb3JpZ2luWTogJ2NlbnRlcicsIG92ZXJsYXlYOiAnc3RhcnQnLCBvdmVybGF5WTogJ2NlbnRlcicsIG9mZnNldFg6IG9mZnNldCB9LFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gcG9zaXRpb25NYXBbcG9zXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hcENka1Bvc2l0aW9uVG9Ub29sdGlwUG9zaXRpb24ocGFpcjogeyBvdmVybGF5WDogc3RyaW5nOyBvdmVybGF5WTogc3RyaW5nIH0pOiBUb29sdGlwUG9zaXRpb25zIHtcbiAgICAgICAgaWYgKHBhaXIub3ZlcmxheVkgPT09ICdib3R0b20nKSByZXR1cm4gJ3RvcCc7XG4gICAgICAgIGlmIChwYWlyLm92ZXJsYXlZID09PSAndG9wJykgcmV0dXJuICdib3R0b20nO1xuICAgICAgICBpZiAocGFpci5vdmVybGF5WCA9PT0gJ2VuZCcpIHJldHVybiAnbGVmdCc7XG4gICAgICAgIHJldHVybiAncmlnaHQnO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnNob3dUaW1lb3V0KTtcbiAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnRvdWNoVGltZW91dCk7XG4gICAgICAgIHRoaXMucG9zaXRpb25DaGFuZ2VTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMucG9zaXRpb25DaGFuZ2VTdWJzY3JpcHRpb24gPSBudWxsO1xuICAgICAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGNvbnRlbnRJc1RydW5jYXRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICByZXR1cm4gZWxlbWVudC5zY3JvbGxIZWlnaHQgPiBlbGVtZW50LmNsaWVudEhlaWdodCB8fCBlbGVtZW50LnNjcm9sbFdpZHRoID4gZWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICB9XG59XG5cbiJdfQ==
|
|
@@ -42,11 +42,57 @@ export const getElementLeftoverContentAvailable = (element) => {
|
|
|
42
42
|
freeDistanceToRight,
|
|
43
43
|
};
|
|
44
44
|
};
|
|
45
|
+
let scrollLockCount = 0;
|
|
46
|
+
let previousBodyOverflow = null;
|
|
47
|
+
/**
|
|
48
|
+
* @description Libera um lock de scroll adquirido via `disableScroll`. Como múltiplos overlays
|
|
49
|
+
* (ex: Drawer, SideSheet) podem estar abertos ao mesmo tempo e todos chamam essa mesma função,
|
|
50
|
+
* o scroll só é de fato reativado quando o último lock pendente é liberado — e restaura o valor
|
|
51
|
+
* de `overflow` anterior ao primeiro `disableScroll`, em vez de sempre forçar `'auto'`.
|
|
52
|
+
*/
|
|
45
53
|
export const enableScroll = () => {
|
|
46
|
-
|
|
54
|
+
if (scrollLockCount === 0) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
scrollLockCount--;
|
|
58
|
+
if (scrollLockCount === 0) {
|
|
59
|
+
document.body.style.overflow = previousBodyOverflow ?? '';
|
|
60
|
+
previousBodyOverflow = null;
|
|
61
|
+
}
|
|
47
62
|
};
|
|
63
|
+
/**
|
|
64
|
+
* @description Bloqueia o scroll da página. Contabiliza quantos overlays pediram o bloqueio
|
|
65
|
+
* simultaneamente, para que fechar um não reative o scroll enquanto outro ainda estiver aberto.
|
|
66
|
+
*/
|
|
48
67
|
export const disableScroll = () => {
|
|
49
|
-
|
|
68
|
+
if (scrollLockCount === 0) {
|
|
69
|
+
previousBodyOverflow = document.body.style.overflow;
|
|
70
|
+
document.body.style.overflow = 'hidden';
|
|
71
|
+
}
|
|
72
|
+
scrollLockCount++;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* @description Cria um controle de lock de scroll para uma instância (ex: um componente de
|
|
76
|
+
* overlay). Chamar `lock`/`unlock` várias vezes seguidas é seguro — cada instância só chama
|
|
77
|
+
* `disableScroll`/`enableScroll` (que ela mesma adquiriu, evitando liberar o lock de outro overlay
|
|
78
|
+
* por engano) na primeira vez que necessário.
|
|
79
|
+
*/
|
|
80
|
+
export const createScrollLock = () => {
|
|
81
|
+
let locked = false;
|
|
82
|
+
return {
|
|
83
|
+
lock: () => {
|
|
84
|
+
if (!locked) {
|
|
85
|
+
disableScroll();
|
|
86
|
+
locked = true;
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
unlock: () => {
|
|
90
|
+
if (locked) {
|
|
91
|
+
enableScroll();
|
|
92
|
+
locked = false;
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
};
|
|
50
96
|
};
|
|
51
97
|
export function deepClone(value, weakMap = new WeakMap()) {
|
|
52
98
|
if (value !== null && typeof value === 'object') {
|
|
@@ -101,4 +147,4 @@ export function deepClone(value, weakMap = new WeakMap()) {
|
|
|
101
147
|
});
|
|
102
148
|
return obj;
|
|
103
149
|
}
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdXRpbHMvc3JjL2xpYi91dGlscy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQkEsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsTUFBTSxHQUFHLElBQUksRUFBRSxFQUFFO0lBQ3hDLE9BQU8sR0FBRyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUNoRyxDQUFDLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQWMsRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxDQUFDO0FBQzNGLE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLENBQzNDLEtBQWdDLEVBQ2hDLFdBS0MsRUFDSCxFQUFFO0lBQ0EsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUM3QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQzdCLE9BQU8sQ0FDSCxNQUFNLEdBQUcsV0FBVyxDQUFDLElBQUk7UUFDekIsTUFBTSxJQUFJLFdBQVcsQ0FBQyxLQUFLO1FBQzNCLE1BQU0sR0FBRyxXQUFXLENBQUMsR0FBRztRQUN4QixNQUFNLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FDL0IsQ0FBQztBQUNOLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsT0FBb0IsRUFBbUIsRUFBRTtJQUM1RSxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMscUJBQXFCLEVBQUUs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RUFBRSxDQUFDO1FBQy9CLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQVEsQ0FBQztJQUNqQyxDQUFDO0lBRUQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDeEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFeEIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVwQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDakIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLEtBQUssRUFBRSxHQUFHLENBQUUsQ0FBQztRQUUxRCxJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBRSxLQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDekQsQ0FBQztRQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMxQyxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sR0FBRyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEVsZW1lbnRQb3NpdGlvbiA9IHtcbiAgICB0b3A6IG51bWJlcjtcbiAgICBsZWZ0OiBudW1iZXI7XG4gICAgcmlnaHQ6IG51bWJlcjtcbiAgICBlbGVtZW50SGVpZ2h0OiBudW1iZXI7XG4gICAgZWxlbWVudFdpZHRoOiBudW1iZXI7XG4gICAgZWxlbWVudFZlcnRpY2FsQ2VudGVyOiBudW1iZXI7XG4gICAgZWxlbWVudEhvcml6b250YWxDZW50ZXI6IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIEVsZW1lbnRMZWZ0b3ZlclBvc2l0aW9uID0ge1xuICAgIGZyZWVEaXN0YW5jZVRvQm90dG9tOiBudW1iZXI7XG4gICAgZnJlZURpc3RhbmNlVG9Ub3A6IG51bWJlcjtcbiAgICBmcmVlRGlzdGFuY2VUb0xlZnQ6IG51bWJlcjtcbiAgICBmcmVlRGlzdGFuY2VUb1JpZ2h0OiBudW1iZXI7XG59O1xuXG5leHBvcnQgY29uc3QgcmFuZG9tSGFzaCA9IChwcmVmaXggPSAnaWQnKSA9PiB7XG4gICAgcmV0dXJuIGAke3ByZWZpeH0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiwgOSl9LSR7RGF0ZS5ub3coKS50b1N0cmluZygzNil9YDtcbn07XG5leHBvcnQgY29uc3QgaXNOdWxsT3JVbmRlZmluZWQgPSAodmFsdWU6IHVua25vd24pID0+IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQ7XG5leHBvcnQgY29uc3QgaXNNb3VzZVBvc2l0aW9uT3V0c2lkZU9mRWxlbWVudCA9IChcbiAgICBldmVudDogTW91c2VFdmVudCB8IFBvaW50ZXJFdmVudCxcbiAgICBlbGVtZW50QXJlYToge1xuICAgICAgICB0b3A6IG51bWJlcjtcbiAgICAgICAgcmlnaHQ6IG51bWJlcjtcbiAgICAgICAgbGVmdDogbnVtYmVyO1xuICAgICAgICBib3R0b206IG51bWJlcjtcbiAgICB9LFxuKSA9PiB7XG4gICAgY29uc3QgZXZlbnRYID0gZXZlbnQuY2xpZW50WDtcbiAgICBjb25zdCBldmVudFkgPSBldmVudC5jbGllbnRZO1xuICAgIHJldHVybiAoXG4gICAgICAgIGV2ZW50WCA8IGVsZW1lbnRBcmVhLmxlZnQgfHxcbiAgICAgICAgZXZlbnRYID49IGVsZW1lbnRBcmVhLnJpZ2h0IHx8XG4gICAgICAgIGV2ZW50WSA8IGVsZW1lbnRBcmVhLnRvcCB8fFxuICAgICAgICBldmVudFkgPj0gZWxlbWVudEFyZWEuYm90dG9tXG4gICAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFbGVtZW50UG9zaXRpb25JbmZvID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogRWxlbWVudFBvc2l0aW9uID0+IHtcbiAgICBjb25zdCByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBzY3JvbGxUb3AgPSB3aW5kb3cuc2Nyb2xsWSB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wO1xuICAgIGNvbnN0IHNjcm9sbExlZnQgPSB3aW5kb3cuc2Nyb2xsWCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdDtcblxuICAgIGNvbnN0IGVsZW1lbnRIZWlnaHQgPSByZWN0LmhlaWdodDtcbiAgICBjb25zdCBlbGVtZW50V2lkdGggPSByZWN0LndpZHRoO1xuICAgIGNvbnN0IGVsZW1lbnRWZXJ0aWNhbENlbnRlciA9IGVsZW1lbnRIZWlnaHQgLyAyO1xuICAgIGNvbnN0IGVsZW1lbnRIb3Jpem9udGFsQ2VudGVyID0gZWxlbWVudFdpZHRoIC8gMjtcblxuICAgIHJldHVybiB7XG4gICAgICAgIHRvcDogcmVjdC50b3AgKyBzY3JvbGxUb3AsXG4gICAgICAgIGxlZnQ6IHJlY3QubGVmdCArIHNjcm9sbExlZnQsXG4gICAgICAgIHJpZ2h0OiByZWN0LmxlZnQgKyBzY3JvbGxMZWZ0ICsgZWxlbWVudFdpZHRoLFxuICAgICAgICBlbGVtZW50SGVpZ2h0LFxuICAgICAgICBlbGVtZW50V2lkdGgsXG4gICAgICAgIGVsZW1lbnRWZXJ0aWNhbENlbnRlcixcbiAgICAgICAgZWxlbWVudEhvcml6b250YWxDZW50ZXIsXG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFbGVtZW50TGVmdG92ZXJDb250ZW50QXZhaWxhYmxlID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogRWxlbWVudExlZnRvdmVyUG9zaXRpb24gPT4ge1xuICAgIGNvbnN0IHdpbmRvd1dpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgY29uc3QgcG9wb3ZlckVsZW1lbnRUcmlnZ2VyUmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgZnJlZURpc3RhbmNlVG9Cb3R0b20gPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSBwb3BvdmVyRWxlbWVudFRyaWdnZXJSZWN0LmJvdHRvbTtcbiAgICBjb25zdCBmcmVlRGlzdGFuY2VUb1RvcCA9IHBvcG92ZXJFbGVtZW50VHJpZ2dlclJlY3QudG9wO1xuICAgIGNvbnN0IGZyZWVEaXN0YW5jZVRvTGVmdCA9IHBvcG92ZXJFbGVtZW50VHJpZ2dlclJlY3QubGVmdDtcbiAgICBjb25zdCBmcmVlRGlzdGFuY2VUb1JpZ2h0ID0gd2luZG93V2lkdGggLSBwb3BvdmVyRWxlbWVudFRyaWdnZXJSZWN0LnJpZ2h0O1xuICAgIHJldHVybiB7XG4gICAgICAgIGZyZWVEaXN0YW5jZVRvQm90dG9tLFxuICAgICAgICBmcmVlRGlzdGFuY2VUb1RvcCxcbiAgICAgICAgZnJlZURpc3RhbmNlVG9MZWZ0LFxuICAgICAgICBmcmVlRGlzdGFuY2VUb1JpZ2h0LFxuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgZW5hYmxlU2Nyb2xsID0gKCk6IHZvaWQgPT4ge1xuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnYXV0byc7XG59O1xuXG5leHBvcnQgY29uc3QgZGlzYWJsZVNjcm9sbCA9ICgpOiB2b2lkID0+IHtcbiAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGVlcENsb25lPFQ+KHZhbHVlOiBULCB3ZWFrTWFwID0gbmV3IFdlYWtNYXAoKSk6IFQge1xuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGlmICh3ZWFrTWFwLmhhcyh2YWx1ZSkpIHJldHVybiB3ZWFrTWFwLmdldCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgfHwgdmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUodmFsdWUuZ2V0VGltZSgpKSBhcyBhbnk7XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IGFycjogYW55W10gPSBbXTtcbiAgICAgICAgd2Vha01hcC5zZXQodmFsdWUsIGFycik7XG4gICAgICAgIHZhbHVlLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcbiAgICAgICAgICAgIGFycltpXSA9IGRlZXBDbG9uZShpdGVtLCB3ZWFrTWFwKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBhcnIgYXMgYW55O1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE1hcCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgTWFwKCk7XG4gICAgICAgIHdlYWtNYXAuc2V0KHZhbHVlLCByZXN1bHQpO1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKCh2LCBrKSA9PiB7XG4gICAgICAgICAgICByZXN1bHQuc2V0KGRlZXBDbG9uZShrLCB3ZWFrTWFwKSwgZGVlcENsb25lKHYsIHdlYWtNYXApKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQgYXMgYW55O1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFNldCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgU2V0KCk7XG4gICAgICAgIHdlYWtNYXAuc2V0KHZhbHVlLCByZXN1bHQpO1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgICAgICByZXN1bHQuYWRkKGRlZXBDbG9uZSh2LCB3ZWFrTWFwKSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0IGFzIGFueTtcbiAgICB9XG5cbiAgICBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gbmV3ICh2YWx1ZS5jb25zdHJ1Y3RvciBhcyBhbnkpKHZhbHVlKSBhcyBhbnk7XG4gICAgfVxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5zbGljZSgwKSBhcyBhbnk7XG4gICAgfVxuXG4gICAgY29uc3Qgb2JqID0gT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpKTtcbiAgICB3ZWFrTWFwLnNldCh2YWx1ZSwgb2JqKTtcblxuICAgIGNvbnN0IGtleXMgPSBSZWZsZWN0Lm93bktleXModmFsdWUpO1xuXG4gICAga2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgY29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodmFsdWUsIGtleSkhO1xuXG4gICAgICAgIGlmICgndmFsdWUnIGluIGRlc2MpIHtcbiAgICAgICAgICAgIGRlc2MudmFsdWUgPSBkZWVwQ2xvbmUoKHZhbHVlIGFzIGFueSlba2V5XSwgd2Vha01hcCk7XG4gICAgICAgIH1cblxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIGRlc2MpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG9iajtcbn1cbiJdfQ==
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdXRpbHMvc3JjL2xpYi91dGlscy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQkEsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsTUFBTSxHQUFHLElBQUksRUFBRSxFQUFFO0lBQ3hDLE9BQU8sR0FBRyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUNoRyxDQUFDLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQWMsRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxDQUFDO0FBQzNGLE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLENBQzNDLEtBQWdDLEVBQ2hDLFdBS0MsRUFDSCxFQUFFO0lBQ0EsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUM3QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQzdCLE9BQU8sQ0FDSCxNQUFNLEdBQUcsV0FBVyxDQUFDLElBQUk7UUFDekIsTUFBTSxJQUFJLFdBQVcsQ0FBQyxLQUFLO1FBQzNCLE1BQU0sR0FBRyxXQUFXLENBQUMsR0FBRztRQUN4QixNQUFNLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FDL0IsQ0FBQztBQUNOLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsT0FBb0IsRUFBbUIsRUFBRTtJQUM1RSxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMscUJBQXFCLEVBQUUs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TyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFeEIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVwQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDakIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLEtBQUssRUFBRSxHQUFHLENBQUUsQ0FBQztRQUUxRCxJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBRSxLQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDekQsQ0FBQztRQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMxQyxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sR0FBRyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEVsZW1lbnRQb3NpdGlvbiA9IHtcbiAgICB0b3A6IG51bWJlcjtcbiAgICBsZWZ0OiBudW1iZXI7XG4gICAgcmlnaHQ6IG51bWJlcjtcbiAgICBlbGVtZW50SGVpZ2h0OiBudW1iZXI7XG4gICAgZWxlbWVudFdpZHRoOiBudW1iZXI7XG4gICAgZWxlbWVudFZlcnRpY2FsQ2VudGVyOiBudW1iZXI7XG4gICAgZWxlbWVudEhvcml6b250YWxDZW50ZXI6IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIEVsZW1lbnRMZWZ0b3ZlclBvc2l0aW9uID0ge1xuICAgIGZyZWVEaXN0YW5jZVRvQm90dG9tOiBudW1iZXI7XG4gICAgZnJlZURpc3RhbmNlVG9Ub3A6IG51bWJlcjtcbiAgICBmcmVlRGlzdGFuY2VUb0xlZnQ6IG51bWJlcjtcbiAgICBmcmVlRGlzdGFuY2VUb1JpZ2h0OiBudW1iZXI7XG59O1xuXG5leHBvcnQgY29uc3QgcmFuZG9tSGFzaCA9IChwcmVmaXggPSAnaWQnKSA9PiB7XG4gICAgcmV0dXJuIGAke3ByZWZpeH0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiwgOSl9LSR7RGF0ZS5ub3coKS50b1N0cmluZygzNil9YDtcbn07XG5leHBvcnQgY29uc3QgaXNOdWxsT3JVbmRlZmluZWQgPSAodmFsdWU6IHVua25vd24pID0+IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQ7XG5leHBvcnQgY29uc3QgaXNNb3VzZVBvc2l0aW9uT3V0c2lkZU9mRWxlbWVudCA9IChcbiAgICBldmVudDogTW91c2VFdmVudCB8IFBvaW50ZXJFdmVudCxcbiAgICBlbGVtZW50QXJlYToge1xuICAgICAgICB0b3A6IG51bWJlcjtcbiAgICAgICAgcmlnaHQ6IG51bWJlcjtcbiAgICAgICAgbGVmdDogbnVtYmVyO1xuICAgICAgICBib3R0b206IG51bWJlcjtcbiAgICB9LFxuKSA9PiB7XG4gICAgY29uc3QgZXZlbnRYID0gZXZlbnQuY2xpZW50WDtcbiAgICBjb25zdCBldmVudFkgPSBldmVudC5jbGllbnRZO1xuICAgIHJldHVybiAoXG4gICAgICAgIGV2ZW50WCA8IGVsZW1lbnRBcmVhLmxlZnQgfHxcbiAgICAgICAgZXZlbnRYID49IGVsZW1lbnRBcmVhLnJpZ2h0IHx8XG4gICAgICAgIGV2ZW50WSA8IGVsZW1lbnRBcmVhLnRvcCB8fFxuICAgICAgICBldmVudFkgPj0gZWxlbWVudEFyZWEuYm90dG9tXG4gICAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFbGVtZW50UG9zaXRpb25JbmZvID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogRWxlbWVudFBvc2l0aW9uID0+IHtcbiAgICBjb25zdCByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBzY3JvbGxUb3AgPSB3aW5kb3cuc2Nyb2xsWSB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wO1xuICAgIGNvbnN0IHNjcm9sbExlZnQgPSB3aW5kb3cuc2Nyb2xsWCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdDtcblxuICAgIGNvbnN0IGVsZW1lbnRIZWlnaHQgPSByZWN0LmhlaWdodDtcbiAgICBjb25zdCBlbGVtZW50V2lkdGggPSByZWN0LndpZHRoO1xuICAgIGNvbnN0IGVsZW1lbnRWZXJ0aWNhbENlbnRlciA9IGVsZW1lbnRIZWlnaHQgLyAyO1xuICAgIGNvbnN0IGVsZW1lbnRIb3Jpem9udGFsQ2VudGVyID0gZWxlbWVudFdpZHRoIC8gMjtcblxuICAgIHJldHVybiB7XG4gICAgICAgIHRvcDogcmVjdC50b3AgKyBzY3JvbGxUb3AsXG4gICAgICAgIGxlZnQ6IHJlY3QubGVmdCArIHNjcm9sbExlZnQsXG4gICAgICAgIHJpZ2h0OiByZWN0LmxlZnQgKyBzY3JvbGxMZWZ0ICsgZWxlbWVudFdpZHRoLFxuICAgICAgICBlbGVtZW50SGVpZ2h0LFxuICAgICAgICBlbGVtZW50V2lkdGgsXG4gICAgICAgIGVsZW1lbnRWZXJ0aWNhbENlbnRlcixcbiAgICAgICAgZWxlbWVudEhvcml6b250YWxDZW50ZXIsXG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFbGVtZW50TGVmdG92ZXJDb250ZW50QXZhaWxhYmxlID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogRWxlbWVudExlZnRvdmVyUG9zaXRpb24gPT4ge1xuICAgIGNvbnN0IHdpbmRvd1dpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgY29uc3QgcG9wb3ZlckVsZW1lbnRUcmlnZ2VyUmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgZnJlZURpc3RhbmNlVG9Cb3R0b20gPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSBwb3BvdmVyRWxlbWVudFRyaWdnZXJSZWN0LmJvdHRvbTtcbiAgICBjb25zdCBmcmVlRGlzdGFuY2VUb1RvcCA9IHBvcG92ZXJFbGVtZW50VHJpZ2dlclJlY3QudG9wO1xuICAgIGNvbnN0IGZyZWVEaXN0YW5jZVRvTGVmdCA9IHBvcG92ZXJFbGVtZW50VHJpZ2dlclJlY3QubGVmdDtcbiAgICBjb25zdCBmcmVlRGlzdGFuY2VUb1JpZ2h0ID0gd2luZG93V2lkdGggLSBwb3BvdmVyRWxlbWVudFRyaWdnZXJSZWN0LnJpZ2h0O1xuICAgIHJldHVybiB7XG4gICAgICAgIGZyZWVEaXN0YW5jZVRvQm90dG9tLFxuICAgICAgICBmcmVlRGlzdGFuY2VUb1RvcCxcbiAgICAgICAgZnJlZURpc3RhbmNlVG9MZWZ0LFxuICAgICAgICBmcmVlRGlzdGFuY2VUb1JpZ2h0LFxuICAgIH07XG59O1xuXG5sZXQgc2Nyb2xsTG9ja0NvdW50ID0gMDtcbmxldCBwcmV2aW91c0JvZHlPdmVyZmxvdzogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIExpYmVyYSB1bSBsb2NrIGRlIHNjcm9sbCBhZHF1aXJpZG8gdmlhIGBkaXNhYmxlU2Nyb2xsYC4gQ29tbyBtw7psdGlwbG9zIG92ZXJsYXlzXG4gKiAoZXg6IERyYXdlciwgU2lkZVNoZWV0KSBwb2RlbSBlc3RhciBhYmVydG9zIGFvIG1lc21vIHRlbXBvIGUgdG9kb3MgY2hhbWFtIGVzc2EgbWVzbWEgZnVuw6fDo28sXG4gKiBvIHNjcm9sbCBzw7Mgw6kgZGUgZmF0byByZWF0aXZhZG8gcXVhbmRvIG8gw7psdGltbyBsb2NrIHBlbmRlbnRlIMOpIGxpYmVyYWRvIOKAlCBlIHJlc3RhdXJhIG8gdmFsb3JcbiAqIGRlIGBvdmVyZmxvd2AgYW50ZXJpb3IgYW8gcHJpbWVpcm8gYGRpc2FibGVTY3JvbGxgLCBlbSB2ZXogZGUgc2VtcHJlIGZvcsOnYXIgYCdhdXRvJ2AuXG4gKi9cbmV4cG9ydCBjb25zdCBlbmFibGVTY3JvbGwgPSAoKTogdm9pZCA9PiB7XG4gICAgaWYgKHNjcm9sbExvY2tDb3VudCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHNjcm9sbExvY2tDb3VudC0tO1xuICAgIGlmIChzY3JvbGxMb2NrQ291bnQgPT09IDApIHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9IHByZXZpb3VzQm9keU92ZXJmbG93ID8/ICcnO1xuICAgICAgICBwcmV2aW91c0JvZHlPdmVyZmxvdyA9IG51bGw7XG4gICAgfVxufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQmxvcXVlaWEgbyBzY3JvbGwgZGEgcMOhZ2luYS4gQ29udGFiaWxpemEgcXVhbnRvcyBvdmVybGF5cyBwZWRpcmFtIG8gYmxvcXVlaW9cbiAqIHNpbXVsdGFuZWFtZW50ZSwgcGFyYSBxdWUgZmVjaGFyIHVtIG7Do28gcmVhdGl2ZSBvIHNjcm9sbCBlbnF1YW50byBvdXRybyBhaW5kYSBlc3RpdmVyIGFiZXJ0by5cbiAqL1xuZXhwb3J0IGNvbnN0IGRpc2FibGVTY3JvbGwgPSAoKTogdm9pZCA9PiB7XG4gICAgaWYgKHNjcm9sbExvY2tDb3VudCA9PT0gMCkge1xuICAgICAgICBwcmV2aW91c0JvZHlPdmVyZmxvdyA9IGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3c7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICB9XG4gICAgc2Nyb2xsTG9ja0NvdW50Kys7XG59O1xuXG5leHBvcnQgdHlwZSBTY3JvbGxMb2NrID0ge1xuICAgIGxvY2s6ICgpID0+IHZvaWQ7XG4gICAgdW5sb2NrOiAoKSA9PiB2b2lkO1xufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ3JpYSB1bSBjb250cm9sZSBkZSBsb2NrIGRlIHNjcm9sbCBwYXJhIHVtYSBpbnN0w6JuY2lhIChleDogdW0gY29tcG9uZW50ZSBkZVxuICogb3ZlcmxheSkuIENoYW1hciBgbG9ja2AvYHVubG9ja2AgdsOhcmlhcyB2ZXplcyBzZWd1aWRhcyDDqSBzZWd1cm8g4oCUIGNhZGEgaW5zdMOibmNpYSBzw7MgY2hhbWFcbiAqIGBkaXNhYmxlU2Nyb2xsYC9gZW5hYmxlU2Nyb2xsYCAocXVlIGVsYSBtZXNtYSBhZHF1aXJpdSwgZXZpdGFuZG8gbGliZXJhciBvIGxvY2sgZGUgb3V0cm8gb3ZlcmxheVxuICogcG9yIGVuZ2FubykgbmEgcHJpbWVpcmEgdmV6IHF1ZSBuZWNlc3PDoXJpby5cbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZVNjcm9sbExvY2sgPSAoKTogU2Nyb2xsTG9jayA9PiB7XG4gICAgbGV0IGxvY2tlZCA9IGZhbHNlO1xuICAgIHJldHVybiB7XG4gICAgICAgIGxvY2s6ICgpID0+IHtcbiAgICAgICAgICAgIGlmICghbG9ja2VkKSB7XG4gICAgICAgICAgICAgICAgZGlzYWJsZVNjcm9sbCgpO1xuICAgICAgICAgICAgICAgIGxvY2tlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHVubG9jazogKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGxvY2tlZCkge1xuICAgICAgICAgICAgICAgIGVuYWJsZVNjcm9sbCgpO1xuICAgICAgICAgICAgICAgIGxvY2tlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH07XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGVlcENsb25lPFQ+KHZhbHVlOiBULCB3ZWFrTWFwID0gbmV3IFdlYWtNYXAoKSk6IFQge1xuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGlmICh3ZWFrTWFwLmhhcyh2YWx1ZSkpIHJldHVybiB3ZWFrTWFwLmdldCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgfHwgdmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUodmFsdWUuZ2V0VGltZSgpKSBhcyBhbnk7XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IGFycjogYW55W10gPSBbXTtcbiAgICAgICAgd2Vha01hcC5zZXQodmFsdWUsIGFycik7XG4gICAgICAgIHZhbHVlLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcbiAgICAgICAgICAgIGFycltpXSA9IGRlZXBDbG9uZShpdGVtLCB3ZWFrTWFwKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBhcnIgYXMgYW55O1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE1hcCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgTWFwKCk7XG4gICAgICAgIHdlYWtNYXAuc2V0KHZhbHVlLCByZXN1bHQpO1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKCh2LCBrKSA9PiB7XG4gICAgICAgICAgICByZXN1bHQuc2V0KGRlZXBDbG9uZShrLCB3ZWFrTWFwKSwgZGVlcENsb25lKHYsIHdlYWtNYXApKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQgYXMgYW55O1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFNldCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgU2V0KCk7XG4gICAgICAgIHdlYWtNYXAuc2V0KHZhbHVlLCByZXN1bHQpO1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgICAgICByZXN1bHQuYWRkKGRlZXBDbG9uZSh2LCB3ZWFrTWFwKSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0IGFzIGFueTtcbiAgICB9XG5cbiAgICBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gbmV3ICh2YWx1ZS5jb25zdHJ1Y3RvciBhcyBhbnkpKHZhbHVlKSBhcyBhbnk7XG4gICAgfVxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5zbGljZSgwKSBhcyBhbnk7XG4gICAgfVxuXG4gICAgY29uc3Qgb2JqID0gT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpKTtcbiAgICB3ZWFrTWFwLnNldCh2YWx1ZSwgb2JqKTtcblxuICAgIGNvbnN0IGtleXMgPSBSZWZsZWN0Lm93bktleXModmFsdWUpO1xuXG4gICAga2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgY29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodmFsdWUsIGtleSkhO1xuXG4gICAgICAgIGlmICgndmFsdWUnIGluIGRlc2MpIHtcbiAgICAgICAgICAgIGRlc2MudmFsdWUgPSBkZWVwQ2xvbmUoKHZhbHVlIGFzIGFueSlba2V5XSwgd2Vha01hcCk7XG4gICAgICAgIH1cblxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIGRlc2MpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG9iajtcbn1cbiJdfQ==
|
|
@@ -165,13 +165,13 @@ class ButtonComponent {
|
|
|
165
165
|
this.isMenuOpen = false;
|
|
166
166
|
}
|
|
167
167
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
168
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ButtonComponent, isStandalone: true, selector: "s-button", inputs: { id: "id", label: "label", tooltip: "tooltip", tooltipPosition: "tooltipPosition", iconClass: "iconClass", rightIconClass: "rightIconClass", caret: "caret", styleClass: "styleClass", baseZIndex: "baseZIndex", disabled: "disabled", auxiliary: "auxiliary", type: "type", priority: "priority", menuOptions: "menuOptions", size: "size", slide: "slide", animation: "animation", badge: "badge", iconColor: "iconColor", menuAriaLabel: "menuAriaLabel", ariaLabel: "ariaLabel" }, outputs: { clicked: "clicked" }, host: { properties: { "class.s-button-with-badge": "!!badge", "style.min-width": "this.minWidth" } }, usesOnChanges: true, ngImport: i0, template: "<button\n [id]=\"id\"\n [type]=\"type\"\n [class]=\"styleClass\"\n class=\"inline-flex items-center justify-center border border-solid cursor-pointer font-open-sans text-sm max-w-full min-w-[40px] outline-none overflow-visible py-[5px] px-[10px] relative no-underline normal-case transition-[background-color,border-color,color] duration-200 ease-out text-grayscale-0 disabled:cursor-text disabled:opacity-50\"\n [ngClass]=\"{\n 'rounded-medium': !auxiliary,\n 'rounded-[20px]': auxiliary && !(iconClass && !label && !menuOptions.length),\n 'rounded-[50%]': auxiliary && !!(iconClass && !label && !menuOptions.length),\n 'h-[35px]': size !== 'small',\n 'h-[25px]': size === 'small',\n 'max-w-6 max-h-6 min-w-6': size === 'small' && !!(iconClass && !label && !menuOptions.length),\n 's-button-auxiliary': auxiliary,\n 's-button-with-icon': !!iconClass,\n 's-button-with-text': !!label,\n 's-button-only-icon': !!(iconClass && !label && !menuOptions.length),\n 's-button-empty': !iconClass && !label,\n 's-button-size-default': size === 'default',\n 's-button-size-small': size === 'small',\n 's-button-priority-default': priority === 'default',\n 's-button-priority-primary': priority === 'primary',\n 's-button-priority-secondary': priority === 'secondary',\n 's-button-priority-link': priority === 'link',\n 's-button-priority-danger': priority === 'danger',\n 's-button-multiple': (caret && menuOptions.length) || !!rightIconClass,\n 's-button--slide': validateSlideButton(),\n 's-button--rotate-animation': isRotateAnimation(),\n }\"\n sTieredMenu\n [items]=\"menuOptions\"\n [ariaLabel]=\"menuAriaLabel\"\n [attr.aria-haspopup]=\"menuOptions.length ? 'menu' : null\"\n [attr.aria-expanded]=\"menuOptions.length ? isMenuOpen : null\"\n [attr.aria-label]=\"ariaLabel\"\n [disabled]=\"disabled\"\n [sTooltip]=\"tooltip\"\n [tooltipPosition]=\"tooltipPosition\"\n (tieredMenuOpened)=\"onTieredMenuOpened()\"\n (tieredMenuClosed)=\"onTieredMenuClosed()\"\n (click)=\"clicked.emit($event)\"\n>\n @if (iconClass) {\n <span\n [class]=\"iconClass\"\n [ngClass]=\"{\n 's-button-icon inline-flex items-center justify-center': true,\n 'mr-[10px]': !label && menuOptions.length,\n }\"\n [ngStyle]=\"{ color: iconColor }\"\n aria-hidden=\"true\"\n >\n </span>\n }\n @if (label) {\n <span\n class=\"s-button-text block overflow-hidden text-ellipsis whitespace-nowrap\"\n [ngClass]=\"{\n 'mr-[10px]': !!rightIconClass || menuOptions.length,\n 'ml-[10px]': !!iconClass,\n }\"\n >\n {{ label }}\n </span>\n }\n <ng-content></ng-content>\n @if (rightIconClass) {\n <span\n [class]=\"rightIconClass\"\n [ngClass]=\"{ 's-button-right-icon inline-flex items-center justify-center': true }\"\n [ngStyle]=\"{ color: iconColor }\"\n aria-hidden=\"true\"\n >\n </span>\n }\n @if ((caret && menuOptions.length) || (menuOptions && menuOptions.length)) {\n <span\n class=\"menu-options-icon fa fa-fw fa-caret-down\"\n aria-hidden=\"true\"\n >\n </span>\n }\n</button>\n@if (badge) {\n <div class=\"z-[99] relative right-[15px] bottom-[16px]\">\n <s-badge\n [color]=\"badge.color\"\n [text]=\"badge.text\"\n [iconClass]=\"badge.iconClass\"\n >\n </s-badge>\n </div>\n}\n\n", styles: [":host{display:inline-flex;position:relative}:host.s-button-with-badge{margin-right:-15px}button.s-button-priority-primary{background-color:#428bca;border-color:#428bca}button.s-button-priority-primary .menu-options-icon{color:#fff}button.s-button-priority-primary:hover{background-color:#2b6597}button.s-button-priority-primary:focus{background-color:#2b6597;border-color:#22dce6}button.s-button-priority-primary:active:not(:disabled),button.s-button-priority-primary.s-button-active:not(:disabled){background-color:#255783;border-color:#255783}button.s-button-priority-secondary{background-color:#7892a1;border-color:#7892a1}button.s-button-priority-secondary .menu-options-icon{color:#fff}button.s-button-priority-secondary:hover{background-color:#546b79}button.s-button-priority-secondary:focus{background-color:#546b79;border-color:#22dce6}button.s-button-priority-secondary:active:not(:disabled),button.s-button-priority-secondary.s-button-active:not(:disabled){background-color:#4a5e6a;border-color:#4a5e6a}button.s-button-priority-default{background-color:#fff;border-color:#ccc;color:#333}button.s-button-priority-default .menu-options-icon{color:#333}button.s-button-priority-default:hover{background-color:#d9d9d9}button.s-button-priority-default:focus{background-color:#d9d9d9;border-color:#22dce6}button.s-button-priority-default:active:not(:disabled),button.s-button-priority-default.s-button-active:not(:disabled){background-color:#ccc;border-color:#ccc}button.s-button-priority-danger{background-color:#9c3a3a;border-color:#9c3a3a}button.s-button-priority-danger .menu-options-icon{color:#fff}button.s-button-priority-danger:hover{background-color:#642525}button.s-button-priority-danger:focus{background-color:#642525;border-color:#22dce6}button.s-button-priority-danger:active:not(:disabled),button.s-button-priority-danger.s-button-active:not(:disabled){background-color:#521e1e;border-color:#521e1e}button.s-button-priority-link{background-color:transparent;border-color:transparent}button.s-button-priority-link .s-button-icon,button.s-button-priority-link .s-button-right-icon,button.s-button-priority-link .s-button-text,button.s-button-priority-link .s-button-menu-icon{color:#428bca}button.s-button-priority-link:hover{background-color:transparent}button.s-button-priority-link:hover .s-button-icon,button.s-button-priority-link:hover .s-button-right-icon,button.s-button-priority-link:hover .s-button-text,button.s-button-priority-link:hover .s-button-menu-icon{color:#2b6597}button.s-button-priority-link:focus{background-color:transparent;border-color:#22dce6}button.s-button-priority-link:focus .s-button-icon,button.s-button-priority-link:focus .s-button-right-icon,button.s-button-priority-link:focus .s-button-text,button.s-button-priority-link:focus .s-button-menu-icon{color:#2b6597}button.s-button-priority-link:active:not(:disabled),button.s-button-priority-link.s-button-active:not(:disabled){background-color:transparent;border-color:transparent}button.s-button-priority-link:active:not(:disabled) .s-button-icon,button.s-button-priority-link:active:not(:disabled) .s-button-right-icon,button.s-button-priority-link:active:not(:disabled) .s-button-text,button.s-button-priority-link:active:not(:disabled) .s-button-menu-icon,button.s-button-priority-link.s-button-active:not(:disabled) .s-button-icon,button.s-button-priority-link.s-button-active:not(:disabled) .s-button-right-icon,button.s-button-priority-link.s-button-active:not(:disabled) .s-button-text,button.s-button-priority-link.s-button-active:not(:disabled) .s-button-menu-icon{color:#255783}button.s-button-with-text,button.s-button-with-icon.s-button-multiple{min-width:80px}button.s-button-with-icon.s-button-with-text.s-button-multiple{min-width:100px}button.s-button-multiple.s-button-size-small.s-button-empty{width:25px;min-width:25px}.s-button--slide.s-button-with-text,.s-button--slide.s-button-with-icon.s-button-multiple{min-width:40px}.s-button--slide .s-button-text{opacity:0;position:absolute;width:0}.s-button--slide:hover .s-button-text{opacity:1;position:relative;transition:1s ease;width:auto}.s-button--slide:hover.s-button--rotate-animation .s-button-icon,.s-button--slide:hover.s-button--rotate-animation .s-button-right-icon{transform:rotate(360deg);transition:1.5s ease}.s-button-active .s-button-menu-icon{transform:rotateX(180deg)}.menu-options-icon{color:#212533}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: BadgeModule }, { kind: "component", type: i1.BadgeComponent, selector: "s-badge", inputs: ["type", "color", "title", "text", "selectable", "iconClass", "iconPosition", "infoSign", "enableTruncateText"], outputs: ["selected"] }, { kind: "ngmodule", type: TieredMenuModule }, { kind: "directive", type: i2.TieredMenuDirective, selector: "[sTieredMenu]", inputs: ["items", "focusedItem", "triggerEvent", "ariaLabel"], outputs: ["tieredMenuOpened", "tieredMenuClosed"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i3.TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef", "checkTruncatedText"] }] });
|
|
168
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ButtonComponent, isStandalone: true, selector: "s-button", inputs: { id: "id", label: "label", tooltip: "tooltip", tooltipPosition: "tooltipPosition", iconClass: "iconClass", rightIconClass: "rightIconClass", caret: "caret", styleClass: "styleClass", baseZIndex: "baseZIndex", disabled: "disabled", auxiliary: "auxiliary", type: "type", priority: "priority", menuOptions: "menuOptions", size: "size", slide: "slide", animation: "animation", badge: "badge", iconColor: "iconColor", menuAriaLabel: "menuAriaLabel", ariaLabel: "ariaLabel" }, outputs: { clicked: "clicked" }, host: { properties: { "class.s-button-with-badge": "!!badge", "style.min-width": "this.minWidth" } }, usesOnChanges: true, ngImport: i0, template: "<button\n [id]=\"id\"\n [type]=\"type\"\n [class]=\"styleClass\"\n class=\"inline-flex items-center justify-center border border-solid cursor-pointer font-open-sans text-sm max-w-full min-w-[40px] outline-none overflow-visible py-[5px] px-[10px] relative no-underline normal-case transition-[background-color,border-color,color] duration-200 ease-out text-grayscale-0 disabled:cursor-text disabled:opacity-50\"\n [ngClass]=\"{\n 'rounded-medium': !auxiliary,\n 'rounded-[20px]': auxiliary && !(iconClass && !label && !menuOptions.length),\n 'rounded-[50%]': auxiliary && !!(iconClass && !label && !menuOptions.length),\n 'h-[35px]': size !== 'small',\n 'h-[25px]': size === 'small',\n 'max-w-6 max-h-6 min-w-6': size === 'small' && !!(iconClass && !label && !menuOptions.length),\n 's-button-auxiliary': auxiliary,\n 's-button-with-icon': !!iconClass,\n 's-button-with-text': !!label,\n 's-button-only-icon': !!(iconClass && !label && !menuOptions.length),\n 's-button-empty': !iconClass && !label,\n 's-button-size-default': size === 'default',\n 's-button-size-small': size === 'small',\n 's-button-priority-default': priority === 'default',\n 's-button-priority-primary': priority === 'primary',\n 's-button-priority-secondary': priority === 'secondary',\n 's-button-priority-link': priority === 'link',\n 's-button-priority-danger': priority === 'danger',\n 's-button-multiple': (caret && menuOptions.length) || !!rightIconClass,\n 's-button--slide': validateSlideButton(),\n 's-button--rotate-animation': isRotateAnimation(),\n }\"\n sTieredMenu\n [items]=\"menuOptions\"\n [ariaLabel]=\"menuAriaLabel\"\n [attr.aria-haspopup]=\"menuOptions.length ? 'menu' : null\"\n [attr.aria-expanded]=\"menuOptions.length ? isMenuOpen : null\"\n [attr.aria-label]=\"ariaLabel\"\n [disabled]=\"disabled\"\n [sTooltip]=\"tooltip\"\n [tooltipPosition]=\"tooltipPosition\"\n (tieredMenuOpened)=\"onTieredMenuOpened()\"\n (tieredMenuClosed)=\"onTieredMenuClosed()\"\n (click)=\"clicked.emit($event)\"\n>\n @if (iconClass) {\n <span\n [class]=\"iconClass\"\n [ngClass]=\"{\n 's-button-icon inline-flex items-center justify-center': true,\n 'mr-[10px]': !label && menuOptions.length,\n }\"\n [ngStyle]=\"{ color: iconColor }\"\n aria-hidden=\"true\"\n >\n </span>\n }\n @if (label) {\n <span\n class=\"s-button-text block overflow-hidden text-ellipsis whitespace-nowrap\"\n [ngClass]=\"{\n 'mr-[10px]': !!rightIconClass || menuOptions.length,\n 'ml-[10px]': !!iconClass,\n }\"\n >\n {{ label }}\n </span>\n }\n <ng-content></ng-content>\n @if (rightIconClass) {\n <span\n [class]=\"rightIconClass\"\n [ngClass]=\"{ 's-button-right-icon inline-flex items-center justify-center': true }\"\n [ngStyle]=\"{ color: iconColor }\"\n aria-hidden=\"true\"\n >\n </span>\n }\n @if ((caret && menuOptions.length) || (menuOptions && menuOptions.length)) {\n <span\n class=\"menu-options-icon fa fa-fw fa-caret-down\"\n aria-hidden=\"true\"\n >\n </span>\n }\n</button>\n@if (badge) {\n <div class=\"z-[99] relative right-[15px] bottom-[16px]\">\n <s-badge\n [color]=\"badge.color\"\n [text]=\"badge.text\"\n [iconClass]=\"badge.iconClass\"\n >\n </s-badge>\n </div>\n}\n\n", styles: [":host{display:inline-flex;position:relative}:host.s-button-with-badge{margin-right:-15px}button.s-button-priority-primary{background-color:#428bca;border-color:#428bca}button.s-button-priority-primary .menu-options-icon{color:#fff}button.s-button-priority-primary:hover:not(:disabled){background-color:#2b6597}button.s-button-priority-primary:focus{background-color:#2b6597;border-color:#22dce6}button.s-button-priority-primary:active:not(:disabled),button.s-button-priority-primary.s-button-active:not(:disabled){background-color:#255783;border-color:#255783}button.s-button-priority-secondary{background-color:#7892a1;border-color:#7892a1}button.s-button-priority-secondary .menu-options-icon{color:#fff}button.s-button-priority-secondary:hover:not(:disabled){background-color:#546b79}button.s-button-priority-secondary:focus{background-color:#546b79;border-color:#22dce6}button.s-button-priority-secondary:active:not(:disabled),button.s-button-priority-secondary.s-button-active:not(:disabled){background-color:#4a5e6a;border-color:#4a5e6a}button.s-button-priority-default{background-color:#fff;border-color:#ccc;color:#333}button.s-button-priority-default .menu-options-icon{color:#333}button.s-button-priority-default:hover:not(:disabled){background-color:#d9d9d9}button.s-button-priority-default:focus{background-color:#d9d9d9;border-color:#22dce6}button.s-button-priority-default:active:not(:disabled),button.s-button-priority-default.s-button-active:not(:disabled){background-color:#ccc;border-color:#ccc}button.s-button-priority-danger{background-color:#9c3a3a;border-color:#9c3a3a}button.s-button-priority-danger .menu-options-icon{color:#fff}button.s-button-priority-danger:hover:not(:disabled){background-color:#642525}button.s-button-priority-danger:focus{background-color:#642525;border-color:#22dce6}button.s-button-priority-danger:active:not(:disabled),button.s-button-priority-danger.s-button-active:not(:disabled){background-color:#521e1e;border-color:#521e1e}button.s-button-priority-link{background-color:transparent;border-color:transparent}button.s-button-priority-link .s-button-icon,button.s-button-priority-link .s-button-right-icon,button.s-button-priority-link .s-button-text,button.s-button-priority-link .s-button-menu-icon{color:#428bca}button.s-button-priority-link:hover:not(:disabled){background-color:transparent}button.s-button-priority-link:hover:not(:disabled) .s-button-icon,button.s-button-priority-link:hover:not(:disabled) .s-button-right-icon,button.s-button-priority-link:hover:not(:disabled) .s-button-text,button.s-button-priority-link:hover:not(:disabled) .s-button-menu-icon{color:#2b6597}button.s-button-priority-link:focus{background-color:transparent;border-color:#22dce6}button.s-button-priority-link:focus .s-button-icon,button.s-button-priority-link:focus .s-button-right-icon,button.s-button-priority-link:focus .s-button-text,button.s-button-priority-link:focus .s-button-menu-icon{color:#2b6597}button.s-button-priority-link:active:not(:disabled),button.s-button-priority-link.s-button-active:not(:disabled){background-color:transparent;border-color:transparent}button.s-button-priority-link:active:not(:disabled) .s-button-icon,button.s-button-priority-link:active:not(:disabled) .s-button-right-icon,button.s-button-priority-link:active:not(:disabled) .s-button-text,button.s-button-priority-link:active:not(:disabled) .s-button-menu-icon,button.s-button-priority-link.s-button-active:not(:disabled) .s-button-icon,button.s-button-priority-link.s-button-active:not(:disabled) .s-button-right-icon,button.s-button-priority-link.s-button-active:not(:disabled) .s-button-text,button.s-button-priority-link.s-button-active:not(:disabled) .s-button-menu-icon{color:#255783}button.s-button-with-text,button.s-button-with-icon.s-button-multiple{min-width:80px}button.s-button-with-icon.s-button-with-text.s-button-multiple{min-width:100px}button.s-button-multiple.s-button-size-small.s-button-empty{width:25px;min-width:25px}.s-button--slide.s-button-with-text,.s-button--slide.s-button-with-icon.s-button-multiple{min-width:40px}.s-button--slide .s-button-text{opacity:0;position:absolute;width:0}.s-button--slide:hover:not(:disabled) .s-button-text{opacity:1;position:relative;transition:1s ease;width:auto}.s-button--slide:hover:not(:disabled).s-button--rotate-animation .s-button-icon,.s-button--slide:hover:not(:disabled).s-button--rotate-animation .s-button-right-icon{transform:rotate(360deg);transition:1.5s ease}.s-button-active .s-button-menu-icon{transform:rotateX(180deg)}.menu-options-icon{color:#212533}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: BadgeModule }, { kind: "component", type: i1.BadgeComponent, selector: "s-badge", inputs: ["type", "color", "title", "text", "selectable", "iconClass", "iconPosition", "infoSign", "enableTruncateText"], outputs: ["selected"] }, { kind: "ngmodule", type: TieredMenuModule }, { kind: "directive", type: i2.TieredMenuDirective, selector: "[sTieredMenu]", inputs: ["items", "focusedItem", "triggerEvent", "ariaLabel"], outputs: ["tieredMenuOpened", "tieredMenuClosed"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i3.TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef", "checkTruncatedText"] }] });
|
|
169
169
|
}
|
|
170
170
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ButtonComponent, decorators: [{
|
|
171
171
|
type: Component,
|
|
172
172
|
args: [{ selector: 's-button', host: {
|
|
173
173
|
'[class.s-button-with-badge]': '!!badge',
|
|
174
|
-
}, standalone: true, imports: [NgClass, NgStyle, BadgeModule, TieredMenuModule, TooltipModule], template: "<button\n [id]=\"id\"\n [type]=\"type\"\n [class]=\"styleClass\"\n class=\"inline-flex items-center justify-center border border-solid cursor-pointer font-open-sans text-sm max-w-full min-w-[40px] outline-none overflow-visible py-[5px] px-[10px] relative no-underline normal-case transition-[background-color,border-color,color] duration-200 ease-out text-grayscale-0 disabled:cursor-text disabled:opacity-50\"\n [ngClass]=\"{\n 'rounded-medium': !auxiliary,\n 'rounded-[20px]': auxiliary && !(iconClass && !label && !menuOptions.length),\n 'rounded-[50%]': auxiliary && !!(iconClass && !label && !menuOptions.length),\n 'h-[35px]': size !== 'small',\n 'h-[25px]': size === 'small',\n 'max-w-6 max-h-6 min-w-6': size === 'small' && !!(iconClass && !label && !menuOptions.length),\n 's-button-auxiliary': auxiliary,\n 's-button-with-icon': !!iconClass,\n 's-button-with-text': !!label,\n 's-button-only-icon': !!(iconClass && !label && !menuOptions.length),\n 's-button-empty': !iconClass && !label,\n 's-button-size-default': size === 'default',\n 's-button-size-small': size === 'small',\n 's-button-priority-default': priority === 'default',\n 's-button-priority-primary': priority === 'primary',\n 's-button-priority-secondary': priority === 'secondary',\n 's-button-priority-link': priority === 'link',\n 's-button-priority-danger': priority === 'danger',\n 's-button-multiple': (caret && menuOptions.length) || !!rightIconClass,\n 's-button--slide': validateSlideButton(),\n 's-button--rotate-animation': isRotateAnimation(),\n }\"\n sTieredMenu\n [items]=\"menuOptions\"\n [ariaLabel]=\"menuAriaLabel\"\n [attr.aria-haspopup]=\"menuOptions.length ? 'menu' : null\"\n [attr.aria-expanded]=\"menuOptions.length ? isMenuOpen : null\"\n [attr.aria-label]=\"ariaLabel\"\n [disabled]=\"disabled\"\n [sTooltip]=\"tooltip\"\n [tooltipPosition]=\"tooltipPosition\"\n (tieredMenuOpened)=\"onTieredMenuOpened()\"\n (tieredMenuClosed)=\"onTieredMenuClosed()\"\n (click)=\"clicked.emit($event)\"\n>\n @if (iconClass) {\n <span\n [class]=\"iconClass\"\n [ngClass]=\"{\n 's-button-icon inline-flex items-center justify-center': true,\n 'mr-[10px]': !label && menuOptions.length,\n }\"\n [ngStyle]=\"{ color: iconColor }\"\n aria-hidden=\"true\"\n >\n </span>\n }\n @if (label) {\n <span\n class=\"s-button-text block overflow-hidden text-ellipsis whitespace-nowrap\"\n [ngClass]=\"{\n 'mr-[10px]': !!rightIconClass || menuOptions.length,\n 'ml-[10px]': !!iconClass,\n }\"\n >\n {{ label }}\n </span>\n }\n <ng-content></ng-content>\n @if (rightIconClass) {\n <span\n [class]=\"rightIconClass\"\n [ngClass]=\"{ 's-button-right-icon inline-flex items-center justify-center': true }\"\n [ngStyle]=\"{ color: iconColor }\"\n aria-hidden=\"true\"\n >\n </span>\n }\n @if ((caret && menuOptions.length) || (menuOptions && menuOptions.length)) {\n <span\n class=\"menu-options-icon fa fa-fw fa-caret-down\"\n aria-hidden=\"true\"\n >\n </span>\n }\n</button>\n@if (badge) {\n <div class=\"z-[99] relative right-[15px] bottom-[16px]\">\n <s-badge\n [color]=\"badge.color\"\n [text]=\"badge.text\"\n [iconClass]=\"badge.iconClass\"\n >\n </s-badge>\n </div>\n}\n\n", styles: [":host{display:inline-flex;position:relative}:host.s-button-with-badge{margin-right:-15px}button.s-button-priority-primary{background-color:#428bca;border-color:#428bca}button.s-button-priority-primary .menu-options-icon{color:#fff}button.s-button-priority-primary:hover{background-color:#2b6597}button.s-button-priority-primary:focus{background-color:#2b6597;border-color:#22dce6}button.s-button-priority-primary:active:not(:disabled),button.s-button-priority-primary.s-button-active:not(:disabled){background-color:#255783;border-color:#255783}button.s-button-priority-secondary{background-color:#7892a1;border-color:#7892a1}button.s-button-priority-secondary .menu-options-icon{color:#fff}button.s-button-priority-secondary:hover{background-color:#546b79}button.s-button-priority-secondary:focus{background-color:#546b79;border-color:#22dce6}button.s-button-priority-secondary:active:not(:disabled),button.s-button-priority-secondary.s-button-active:not(:disabled){background-color:#4a5e6a;border-color:#4a5e6a}button.s-button-priority-default{background-color:#fff;border-color:#ccc;color:#333}button.s-button-priority-default .menu-options-icon{color:#333}button.s-button-priority-default:hover{background-color:#d9d9d9}button.s-button-priority-default:focus{background-color:#d9d9d9;border-color:#22dce6}button.s-button-priority-default:active:not(:disabled),button.s-button-priority-default.s-button-active:not(:disabled){background-color:#ccc;border-color:#ccc}button.s-button-priority-danger{background-color:#9c3a3a;border-color:#9c3a3a}button.s-button-priority-danger .menu-options-icon{color:#fff}button.s-button-priority-danger:hover{background-color:#642525}button.s-button-priority-danger:focus{background-color:#642525;border-color:#22dce6}button.s-button-priority-danger:active:not(:disabled),button.s-button-priority-danger.s-button-active:not(:disabled){background-color:#521e1e;border-color:#521e1e}button.s-button-priority-link{background-color:transparent;border-color:transparent}button.s-button-priority-link .s-button-icon,button.s-button-priority-link .s-button-right-icon,button.s-button-priority-link .s-button-text,button.s-button-priority-link .s-button-menu-icon{color:#428bca}button.s-button-priority-link:hover{background-color:transparent}button.s-button-priority-link:hover .s-button-icon,button.s-button-priority-link:hover .s-button-right-icon,button.s-button-priority-link:hover .s-button-text,button.s-button-priority-link:hover .s-button-menu-icon{color:#2b6597}button.s-button-priority-link:focus{background-color:transparent;border-color:#22dce6}button.s-button-priority-link:focus .s-button-icon,button.s-button-priority-link:focus .s-button-right-icon,button.s-button-priority-link:focus .s-button-text,button.s-button-priority-link:focus .s-button-menu-icon{color:#2b6597}button.s-button-priority-link:active:not(:disabled),button.s-button-priority-link.s-button-active:not(:disabled){background-color:transparent;border-color:transparent}button.s-button-priority-link:active:not(:disabled) .s-button-icon,button.s-button-priority-link:active:not(:disabled) .s-button-right-icon,button.s-button-priority-link:active:not(:disabled) .s-button-text,button.s-button-priority-link:active:not(:disabled) .s-button-menu-icon,button.s-button-priority-link.s-button-active:not(:disabled) .s-button-icon,button.s-button-priority-link.s-button-active:not(:disabled) .s-button-right-icon,button.s-button-priority-link.s-button-active:not(:disabled) .s-button-text,button.s-button-priority-link.s-button-active:not(:disabled) .s-button-menu-icon{color:#255783}button.s-button-with-text,button.s-button-with-icon.s-button-multiple{min-width:80px}button.s-button-with-icon.s-button-with-text.s-button-multiple{min-width:100px}button.s-button-multiple.s-button-size-small.s-button-empty{width:25px;min-width:25px}.s-button--slide.s-button-with-text,.s-button--slide.s-button-with-icon.s-button-multiple{min-width:40px}.s-button--slide .s-button-text{opacity:0;position:absolute;width:0}.s-button--slide:hover .s-button-text{opacity:1;position:relative;transition:1s ease;width:auto}.s-button--slide:hover.s-button--rotate-animation .s-button-icon,.s-button--slide:hover.s-button--rotate-animation .s-button-right-icon{transform:rotate(360deg);transition:1.5s ease}.s-button-active .s-button-menu-icon{transform:rotateX(180deg)}.menu-options-icon{color:#212533}\n"] }]
|
|
174
|
+
}, standalone: true, imports: [NgClass, NgStyle, BadgeModule, TieredMenuModule, TooltipModule], template: "<button\n [id]=\"id\"\n [type]=\"type\"\n [class]=\"styleClass\"\n class=\"inline-flex items-center justify-center border border-solid cursor-pointer font-open-sans text-sm max-w-full min-w-[40px] outline-none overflow-visible py-[5px] px-[10px] relative no-underline normal-case transition-[background-color,border-color,color] duration-200 ease-out text-grayscale-0 disabled:cursor-text disabled:opacity-50\"\n [ngClass]=\"{\n 'rounded-medium': !auxiliary,\n 'rounded-[20px]': auxiliary && !(iconClass && !label && !menuOptions.length),\n 'rounded-[50%]': auxiliary && !!(iconClass && !label && !menuOptions.length),\n 'h-[35px]': size !== 'small',\n 'h-[25px]': size === 'small',\n 'max-w-6 max-h-6 min-w-6': size === 'small' && !!(iconClass && !label && !menuOptions.length),\n 's-button-auxiliary': auxiliary,\n 's-button-with-icon': !!iconClass,\n 's-button-with-text': !!label,\n 's-button-only-icon': !!(iconClass && !label && !menuOptions.length),\n 's-button-empty': !iconClass && !label,\n 's-button-size-default': size === 'default',\n 's-button-size-small': size === 'small',\n 's-button-priority-default': priority === 'default',\n 's-button-priority-primary': priority === 'primary',\n 's-button-priority-secondary': priority === 'secondary',\n 's-button-priority-link': priority === 'link',\n 's-button-priority-danger': priority === 'danger',\n 's-button-multiple': (caret && menuOptions.length) || !!rightIconClass,\n 's-button--slide': validateSlideButton(),\n 's-button--rotate-animation': isRotateAnimation(),\n }\"\n sTieredMenu\n [items]=\"menuOptions\"\n [ariaLabel]=\"menuAriaLabel\"\n [attr.aria-haspopup]=\"menuOptions.length ? 'menu' : null\"\n [attr.aria-expanded]=\"menuOptions.length ? isMenuOpen : null\"\n [attr.aria-label]=\"ariaLabel\"\n [disabled]=\"disabled\"\n [sTooltip]=\"tooltip\"\n [tooltipPosition]=\"tooltipPosition\"\n (tieredMenuOpened)=\"onTieredMenuOpened()\"\n (tieredMenuClosed)=\"onTieredMenuClosed()\"\n (click)=\"clicked.emit($event)\"\n>\n @if (iconClass) {\n <span\n [class]=\"iconClass\"\n [ngClass]=\"{\n 's-button-icon inline-flex items-center justify-center': true,\n 'mr-[10px]': !label && menuOptions.length,\n }\"\n [ngStyle]=\"{ color: iconColor }\"\n aria-hidden=\"true\"\n >\n </span>\n }\n @if (label) {\n <span\n class=\"s-button-text block overflow-hidden text-ellipsis whitespace-nowrap\"\n [ngClass]=\"{\n 'mr-[10px]': !!rightIconClass || menuOptions.length,\n 'ml-[10px]': !!iconClass,\n }\"\n >\n {{ label }}\n </span>\n }\n <ng-content></ng-content>\n @if (rightIconClass) {\n <span\n [class]=\"rightIconClass\"\n [ngClass]=\"{ 's-button-right-icon inline-flex items-center justify-center': true }\"\n [ngStyle]=\"{ color: iconColor }\"\n aria-hidden=\"true\"\n >\n </span>\n }\n @if ((caret && menuOptions.length) || (menuOptions && menuOptions.length)) {\n <span\n class=\"menu-options-icon fa fa-fw fa-caret-down\"\n aria-hidden=\"true\"\n >\n </span>\n }\n</button>\n@if (badge) {\n <div class=\"z-[99] relative right-[15px] bottom-[16px]\">\n <s-badge\n [color]=\"badge.color\"\n [text]=\"badge.text\"\n [iconClass]=\"badge.iconClass\"\n >\n </s-badge>\n </div>\n}\n\n", styles: [":host{display:inline-flex;position:relative}:host.s-button-with-badge{margin-right:-15px}button.s-button-priority-primary{background-color:#428bca;border-color:#428bca}button.s-button-priority-primary .menu-options-icon{color:#fff}button.s-button-priority-primary:hover:not(:disabled){background-color:#2b6597}button.s-button-priority-primary:focus{background-color:#2b6597;border-color:#22dce6}button.s-button-priority-primary:active:not(:disabled),button.s-button-priority-primary.s-button-active:not(:disabled){background-color:#255783;border-color:#255783}button.s-button-priority-secondary{background-color:#7892a1;border-color:#7892a1}button.s-button-priority-secondary .menu-options-icon{color:#fff}button.s-button-priority-secondary:hover:not(:disabled){background-color:#546b79}button.s-button-priority-secondary:focus{background-color:#546b79;border-color:#22dce6}button.s-button-priority-secondary:active:not(:disabled),button.s-button-priority-secondary.s-button-active:not(:disabled){background-color:#4a5e6a;border-color:#4a5e6a}button.s-button-priority-default{background-color:#fff;border-color:#ccc;color:#333}button.s-button-priority-default .menu-options-icon{color:#333}button.s-button-priority-default:hover:not(:disabled){background-color:#d9d9d9}button.s-button-priority-default:focus{background-color:#d9d9d9;border-color:#22dce6}button.s-button-priority-default:active:not(:disabled),button.s-button-priority-default.s-button-active:not(:disabled){background-color:#ccc;border-color:#ccc}button.s-button-priority-danger{background-color:#9c3a3a;border-color:#9c3a3a}button.s-button-priority-danger .menu-options-icon{color:#fff}button.s-button-priority-danger:hover:not(:disabled){background-color:#642525}button.s-button-priority-danger:focus{background-color:#642525;border-color:#22dce6}button.s-button-priority-danger:active:not(:disabled),button.s-button-priority-danger.s-button-active:not(:disabled){background-color:#521e1e;border-color:#521e1e}button.s-button-priority-link{background-color:transparent;border-color:transparent}button.s-button-priority-link .s-button-icon,button.s-button-priority-link .s-button-right-icon,button.s-button-priority-link .s-button-text,button.s-button-priority-link .s-button-menu-icon{color:#428bca}button.s-button-priority-link:hover:not(:disabled){background-color:transparent}button.s-button-priority-link:hover:not(:disabled) .s-button-icon,button.s-button-priority-link:hover:not(:disabled) .s-button-right-icon,button.s-button-priority-link:hover:not(:disabled) .s-button-text,button.s-button-priority-link:hover:not(:disabled) .s-button-menu-icon{color:#2b6597}button.s-button-priority-link:focus{background-color:transparent;border-color:#22dce6}button.s-button-priority-link:focus .s-button-icon,button.s-button-priority-link:focus .s-button-right-icon,button.s-button-priority-link:focus .s-button-text,button.s-button-priority-link:focus .s-button-menu-icon{color:#2b6597}button.s-button-priority-link:active:not(:disabled),button.s-button-priority-link.s-button-active:not(:disabled){background-color:transparent;border-color:transparent}button.s-button-priority-link:active:not(:disabled) .s-button-icon,button.s-button-priority-link:active:not(:disabled) .s-button-right-icon,button.s-button-priority-link:active:not(:disabled) .s-button-text,button.s-button-priority-link:active:not(:disabled) .s-button-menu-icon,button.s-button-priority-link.s-button-active:not(:disabled) .s-button-icon,button.s-button-priority-link.s-button-active:not(:disabled) .s-button-right-icon,button.s-button-priority-link.s-button-active:not(:disabled) .s-button-text,button.s-button-priority-link.s-button-active:not(:disabled) .s-button-menu-icon{color:#255783}button.s-button-with-text,button.s-button-with-icon.s-button-multiple{min-width:80px}button.s-button-with-icon.s-button-with-text.s-button-multiple{min-width:100px}button.s-button-multiple.s-button-size-small.s-button-empty{width:25px;min-width:25px}.s-button--slide.s-button-with-text,.s-button--slide.s-button-with-icon.s-button-multiple{min-width:40px}.s-button--slide .s-button-text{opacity:0;position:absolute;width:0}.s-button--slide:hover:not(:disabled) .s-button-text{opacity:1;position:relative;transition:1s ease;width:auto}.s-button--slide:hover:not(:disabled).s-button--rotate-animation .s-button-icon,.s-button--slide:hover:not(:disabled).s-button--rotate-animation .s-button-right-icon{transform:rotate(360deg);transition:1.5s ease}.s-button-active .s-button-menu-icon{transform:rotateX(180deg)}.menu-options-icon{color:#212533}\n"] }]
|
|
175
175
|
}], propDecorators: { minWidth: [{
|
|
176
176
|
type: HostBinding,
|
|
177
177
|
args: ['style.min-width']
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seniorsistemas-angular-components-button.mjs","sources":["../../projects/angular-components/button/src/lib/button/button.component.ts","../../projects/angular-components/button/src/lib/button/button.component.html","../../projects/angular-components/button/src/lib/button/button.module.ts","../../projects/angular-components/button/src/seniorsistemas-angular-components-button.ts"],"sourcesContent":["import { Component, EventEmitter, HostBinding, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\n\nimport { NgClass, NgStyle } from '@angular/common';\nimport { BadgeModule } from '@seniorsistemas/angular-components/badge';\nimport { TieredMenuItemData, TieredMenuModule } from '@seniorsistemas/angular-components/tiered-menu';\nimport { TooltipModule, TooltipPositions } from '@seniorsistemas/angular-components/tooltip';\nimport { randomHash } from '@seniorsistemas/angular-components/utils';\nimport { ButtonAnimations } from './models/button-animations';\nimport { ButtonBadgeConfig } from './models/button-badge-config';\nimport { ButtonPriority } from './models/button-priority';\n\n/**\n * @description Componente de botão versátil que suporta ícones, tooltip, menu de opções\n * (tiered menu), badge, animações e diferentes prioridades visuais. Pode ser configurado\n * como botão de ação simples, botão com menu dropdown ou botão deslizante (slide).\n *\n * @example\n * ```html\n * <s-button\n * label=\"Salvar\"\n * iconClass=\"fas fa-save\"\n * priority=\"primary\"\n * (clicked)=\"onSave()\" />\n * ```\n *\n * @category Inputs\n */\n@Component({\n selector: 's-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n host: {\n '[class.s-button-with-badge]': '!!badge',\n },\n standalone: true,\n imports: [NgClass, NgStyle, BadgeModule, TieredMenuModule, TooltipModule],\n})\nexport class ButtonComponent implements OnChanges {\n @HostBinding('style.min-width')\n public minWidth = '40px';\n\n /**\n * @description Identificador único do elemento botão no DOM.\n * Gerado automaticamente se não informado.\n */\n @Input()\n public id? = `s-button-${randomHash()}`;\n\n /**\n * @description Texto exibido dentro do botão.\n */\n @Input()\n public label?: string;\n\n /**\n * @description Texto do tooltip exibido ao passar o mouse sobre o botão.\n */\n @Input()\n public tooltip?: string;\n\n /**\n * @description Posição do tooltip em relação ao botão.\n *\n * @default 'top'\n */\n @Input()\n public tooltipPosition: TooltipPositions = 'top';\n\n /**\n * @description Classe de ícone exibida à esquerda do label (ex.: `'fas fa-save'`).\n */\n @Input()\n public iconClass?: string;\n\n /**\n * @description Classe de ícone exibida à direita do label.\n */\n @Input()\n public rightIconClass?: string;\n\n /**\n * @description Exibe o ícone de caret (seta) quando o botão possui um menu de opções.\n *\n * @default true\n */\n @Input()\n public caret = true;\n\n /**\n * @description Classe CSS adicional aplicada ao elemento `<button>` interno.\n *\n * @default ''\n */\n @Input()\n public styleClass = '';\n\n /**\n * @description Z-index base do painel do menu dropdown associado ao botão.\n *\n * @default 0\n */\n @Input()\n public baseZIndex = 0;\n\n /**\n * @description Desabilita o botão, impedindo cliques e interação do usuário.\n *\n * @default false\n */\n @Input()\n public disabled = false;\n\n /**\n * @description Aplica estilo auxiliar (menos destaque visual) ao botão.\n *\n * @default false\n */\n @Input()\n public auxiliary = false;\n\n /**\n * @description Tipo do elemento `<button>` HTML (`'button'`, `'submit'`, `'reset'`).\n *\n * @default 'button'\n */\n @Input()\n public type? = 'button';\n\n /**\n * @description Prioridade visual do botão, que determina seu estilo.\n * Aceita `'primary'`, `'default'`, `'danger'`, `'link'`, entre outros.\n *\n * @default 'primary'\n */\n @Input()\n public priority?: ButtonPriority = 'primary';\n\n /**\n * @description Lista de itens do menu dropdown exibido ao clicar no caret do botão.\n *\n * @default []\n */\n @Input()\n public menuOptions: TieredMenuItemData[] = [];\n\n /**\n * @description Tamanho visual do botão. Aceita `'default'` ou `'small'`.\n *\n * @default 'default'\n */\n @Input()\n public size?: 'default' | 'small' = 'default';\n\n /**\n * @description Habilita o modo slide, que exibe uma animação de deslize ao passar o mouse.\n * Requer `priority` igual a `'default'` ou `'link'` e um `label` definido.\n *\n * @default false\n */\n @Input()\n public slide = false;\n\n /**\n * @description Tipo de animação aplicada ao botão (`'rotate'`, `'pulse'`, etc.).\n */\n @Input()\n public animation?: ButtonAnimations;\n\n /**\n * @description Configuração do badge exibido sobre o botão, com contador ou indicador visual.\n */\n @Input()\n public badge?: ButtonBadgeConfig;\n\n /**\n * @description Cor aplicada ao ícone do botão, sobrescrevendo a cor padrão do tema.\n */\n @Input()\n public iconColor?: string;\n\n /**\n * @description Texto alternativo para o menu associado ao botão, utilizado para acessibilidade.\n */\n @Input()\n public menuAriaLabel?: string;\n\n /**\n * @description Texto alternativo para quando o botão não tiver um texto explicito, utilizado para acessibilidade.\n */\n @Input()\n public ariaLabel?: string;\n\n /**\n * @description Emitido ao clicar no botão, desde que não esteja desabilitado.\n */\n @Output()\n public clicked: EventEmitter<any> = new EventEmitter();\n\n public isMenuOpen = false;\n\n public validateSlideButton(): boolean {\n return !!(this.slide && (this.priority === 'default' || this.priority === 'link') && this.label?.length);\n }\n\n public ngOnChanges(_: SimpleChanges): void {\n const hasIcon = this.iconClass;\n const hasText = this.label;\n\n const isMultiple = this.menuOptions?.length;\n\n if (hasText || (hasIcon && isMultiple)) {\n this.minWidth = '80px';\n }\n if (hasText && hasIcon && isMultiple) {\n this.minWidth = '100px';\n }\n }\n\n public isRotateAnimation(): boolean {\n return this.animation === 'rotate';\n }\n\n public onTieredMenuOpened(): void {\n this.isMenuOpen = true;\n }\n\n public onTieredMenuClosed(): void {\n this.isMenuOpen = false;\n }\n}\n\n","<button\n [id]=\"id\"\n [type]=\"type\"\n [class]=\"styleClass\"\n class=\"inline-flex items-center justify-center border border-solid cursor-pointer font-open-sans text-sm max-w-full min-w-[40px] outline-none overflow-visible py-[5px] px-[10px] relative no-underline normal-case transition-[background-color,border-color,color] duration-200 ease-out text-grayscale-0 disabled:cursor-text disabled:opacity-50\"\n [ngClass]=\"{\n 'rounded-medium': !auxiliary,\n 'rounded-[20px]': auxiliary && !(iconClass && !label && !menuOptions.length),\n 'rounded-[50%]': auxiliary && !!(iconClass && !label && !menuOptions.length),\n 'h-[35px]': size !== 'small',\n 'h-[25px]': size === 'small',\n 'max-w-6 max-h-6 min-w-6': size === 'small' && !!(iconClass && !label && !menuOptions.length),\n 's-button-auxiliary': auxiliary,\n 's-button-with-icon': !!iconClass,\n 's-button-with-text': !!label,\n 's-button-only-icon': !!(iconClass && !label && !menuOptions.length),\n 's-button-empty': !iconClass && !label,\n 's-button-size-default': size === 'default',\n 's-button-size-small': size === 'small',\n 's-button-priority-default': priority === 'default',\n 's-button-priority-primary': priority === 'primary',\n 's-button-priority-secondary': priority === 'secondary',\n 's-button-priority-link': priority === 'link',\n 's-button-priority-danger': priority === 'danger',\n 's-button-multiple': (caret && menuOptions.length) || !!rightIconClass,\n 's-button--slide': validateSlideButton(),\n 's-button--rotate-animation': isRotateAnimation(),\n }\"\n sTieredMenu\n [items]=\"menuOptions\"\n [ariaLabel]=\"menuAriaLabel\"\n [attr.aria-haspopup]=\"menuOptions.length ? 'menu' : null\"\n [attr.aria-expanded]=\"menuOptions.length ? isMenuOpen : null\"\n [attr.aria-label]=\"ariaLabel\"\n [disabled]=\"disabled\"\n [sTooltip]=\"tooltip\"\n [tooltipPosition]=\"tooltipPosition\"\n (tieredMenuOpened)=\"onTieredMenuOpened()\"\n (tieredMenuClosed)=\"onTieredMenuClosed()\"\n (click)=\"clicked.emit($event)\"\n>\n @if (iconClass) {\n <span\n [class]=\"iconClass\"\n [ngClass]=\"{\n 's-button-icon inline-flex items-center justify-center': true,\n 'mr-[10px]': !label && menuOptions.length,\n }\"\n [ngStyle]=\"{ color: iconColor }\"\n aria-hidden=\"true\"\n >\n </span>\n }\n @if (label) {\n <span\n class=\"s-button-text block overflow-hidden text-ellipsis whitespace-nowrap\"\n [ngClass]=\"{\n 'mr-[10px]': !!rightIconClass || menuOptions.length,\n 'ml-[10px]': !!iconClass,\n }\"\n >\n {{ label }}\n </span>\n }\n <ng-content></ng-content>\n @if (rightIconClass) {\n <span\n [class]=\"rightIconClass\"\n [ngClass]=\"{ 's-button-right-icon inline-flex items-center justify-center': true }\"\n [ngStyle]=\"{ color: iconColor }\"\n aria-hidden=\"true\"\n >\n </span>\n }\n @if ((caret && menuOptions.length) || (menuOptions && menuOptions.length)) {\n <span\n class=\"menu-options-icon fa fa-fw fa-caret-down\"\n aria-hidden=\"true\"\n >\n </span>\n }\n</button>\n@if (badge) {\n <div class=\"z-[99] relative right-[15px] bottom-[16px]\">\n <s-badge\n [color]=\"badge.color\"\n [text]=\"badge.text\"\n [iconClass]=\"badge.iconClass\"\n >\n </s-badge>\n </div>\n}\n\n","import { NgModule } from '@angular/core';\n\nimport { ButtonComponent } from './button.component';\n\n@NgModule({\n imports: [\n ButtonComponent,\n ],\n exports: [ButtonComponent],\n})\nexport class ButtonModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"seniorsistemas-angular-components-button.mjs","sources":["../../projects/angular-components/button/src/lib/button/button.component.ts","../../projects/angular-components/button/src/lib/button/button.component.html","../../projects/angular-components/button/src/lib/button/button.module.ts","../../projects/angular-components/button/src/seniorsistemas-angular-components-button.ts"],"sourcesContent":["import { Component, EventEmitter, HostBinding, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\n\nimport { NgClass, NgStyle } from '@angular/common';\nimport { BadgeModule } from '@seniorsistemas/angular-components/badge';\nimport { TieredMenuItemData, TieredMenuModule } from '@seniorsistemas/angular-components/tiered-menu';\nimport { TooltipModule, TooltipPositions } from '@seniorsistemas/angular-components/tooltip';\nimport { randomHash } from '@seniorsistemas/angular-components/utils';\nimport { ButtonAnimations } from './models/button-animations';\nimport { ButtonBadgeConfig } from './models/button-badge-config';\nimport { ButtonPriority } from './models/button-priority';\n\n/**\n * @description Componente de botão versátil que suporta ícones, tooltip, menu de opções\n * (tiered menu), badge, animações e diferentes prioridades visuais. Pode ser configurado\n * como botão de ação simples, botão com menu dropdown ou botão deslizante (slide).\n *\n * @example\n * ```html\n * <s-button\n * label=\"Salvar\"\n * iconClass=\"fas fa-save\"\n * priority=\"primary\"\n * (clicked)=\"onSave()\" />\n * ```\n *\n * @category Inputs\n */\n@Component({\n selector: 's-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n host: {\n '[class.s-button-with-badge]': '!!badge',\n },\n standalone: true,\n imports: [NgClass, NgStyle, BadgeModule, TieredMenuModule, TooltipModule],\n})\nexport class ButtonComponent implements OnChanges {\n @HostBinding('style.min-width')\n public minWidth = '40px';\n\n /**\n * @description Identificador único do elemento botão no DOM.\n * Gerado automaticamente se não informado.\n */\n @Input()\n public id? = `s-button-${randomHash()}`;\n\n /**\n * @description Texto exibido dentro do botão.\n */\n @Input()\n public label?: string;\n\n /**\n * @description Texto do tooltip exibido ao passar o mouse sobre o botão.\n */\n @Input()\n public tooltip?: string;\n\n /**\n * @description Posição do tooltip em relação ao botão.\n *\n * @default 'top'\n */\n @Input()\n public tooltipPosition: TooltipPositions = 'top';\n\n /**\n * @description Classe de ícone exibida à esquerda do label (ex.: `'fas fa-save'`).\n */\n @Input()\n public iconClass?: string;\n\n /**\n * @description Classe de ícone exibida à direita do label.\n */\n @Input()\n public rightIconClass?: string;\n\n /**\n * @description Exibe o ícone de caret (seta) quando o botão possui um menu de opções.\n *\n * @default true\n */\n @Input()\n public caret = true;\n\n /**\n * @description Classe CSS adicional aplicada ao elemento `<button>` interno.\n *\n * @default ''\n */\n @Input()\n public styleClass = '';\n\n /**\n * @description Z-index base do painel do menu dropdown associado ao botão.\n *\n * @default 0\n */\n @Input()\n public baseZIndex = 0;\n\n /**\n * @description Desabilita o botão, impedindo cliques e interação do usuário.\n *\n * @default false\n */\n @Input()\n public disabled = false;\n\n /**\n * @description Aplica estilo auxiliar (menos destaque visual) ao botão.\n *\n * @default false\n */\n @Input()\n public auxiliary = false;\n\n /**\n * @description Tipo do elemento `<button>` HTML (`'button'`, `'submit'`, `'reset'`).\n *\n * @default 'button'\n */\n @Input()\n public type? = 'button';\n\n /**\n * @description Prioridade visual do botão, que determina seu estilo.\n * Aceita `'primary'`, `'default'`, `'danger'`, `'link'`, entre outros.\n *\n * @default 'primary'\n */\n @Input()\n public priority?: ButtonPriority = 'primary';\n\n /**\n * @description Lista de itens do menu dropdown exibido ao clicar no caret do botão.\n *\n * @default []\n */\n @Input()\n public menuOptions: TieredMenuItemData[] = [];\n\n /**\n * @description Tamanho visual do botão. Aceita `'default'` ou `'small'`.\n *\n * @default 'default'\n */\n @Input()\n public size?: 'default' | 'small' = 'default';\n\n /**\n * @description Habilita o modo slide, que exibe uma animação de deslize ao passar o mouse.\n * Requer `priority` igual a `'default'` ou `'link'` e um `label` definido.\n *\n * @default false\n */\n @Input()\n public slide = false;\n\n /**\n * @description Tipo de animação aplicada ao botão (`'rotate'`, `'pulse'`, etc.).\n */\n @Input()\n public animation?: ButtonAnimations;\n\n /**\n * @description Configuração do badge exibido sobre o botão, com contador ou indicador visual.\n */\n @Input()\n public badge?: ButtonBadgeConfig;\n\n /**\n * @description Cor aplicada ao ícone do botão, sobrescrevendo a cor padrão do tema.\n */\n @Input()\n public iconColor?: string;\n\n /**\n * @description Texto alternativo para o menu associado ao botão, utilizado para acessibilidade.\n */\n @Input()\n public menuAriaLabel?: string;\n\n /**\n * @description Texto alternativo para quando o botão não tiver um texto explicito, utilizado para acessibilidade.\n */\n @Input()\n public ariaLabel?: string;\n\n /**\n * @description Emitido ao clicar no botão, desde que não esteja desabilitado.\n */\n @Output()\n public clicked: EventEmitter<any> = new EventEmitter();\n\n public isMenuOpen = false;\n\n public validateSlideButton(): boolean {\n return !!(this.slide && (this.priority === 'default' || this.priority === 'link') && this.label?.length);\n }\n\n public ngOnChanges(_: SimpleChanges): void {\n const hasIcon = this.iconClass;\n const hasText = this.label;\n\n const isMultiple = this.menuOptions?.length;\n\n if (hasText || (hasIcon && isMultiple)) {\n this.minWidth = '80px';\n }\n if (hasText && hasIcon && isMultiple) {\n this.minWidth = '100px';\n }\n }\n\n public isRotateAnimation(): boolean {\n return this.animation === 'rotate';\n }\n\n public onTieredMenuOpened(): void {\n this.isMenuOpen = true;\n }\n\n public onTieredMenuClosed(): void {\n this.isMenuOpen = false;\n }\n}\n\n","<button\n [id]=\"id\"\n [type]=\"type\"\n [class]=\"styleClass\"\n class=\"inline-flex items-center justify-center border border-solid cursor-pointer font-open-sans text-sm max-w-full min-w-[40px] outline-none overflow-visible py-[5px] px-[10px] relative no-underline normal-case transition-[background-color,border-color,color] duration-200 ease-out text-grayscale-0 disabled:cursor-text disabled:opacity-50\"\n [ngClass]=\"{\n 'rounded-medium': !auxiliary,\n 'rounded-[20px]': auxiliary && !(iconClass && !label && !menuOptions.length),\n 'rounded-[50%]': auxiliary && !!(iconClass && !label && !menuOptions.length),\n 'h-[35px]': size !== 'small',\n 'h-[25px]': size === 'small',\n 'max-w-6 max-h-6 min-w-6': size === 'small' && !!(iconClass && !label && !menuOptions.length),\n 's-button-auxiliary': auxiliary,\n 's-button-with-icon': !!iconClass,\n 's-button-with-text': !!label,\n 's-button-only-icon': !!(iconClass && !label && !menuOptions.length),\n 's-button-empty': !iconClass && !label,\n 's-button-size-default': size === 'default',\n 's-button-size-small': size === 'small',\n 's-button-priority-default': priority === 'default',\n 's-button-priority-primary': priority === 'primary',\n 's-button-priority-secondary': priority === 'secondary',\n 's-button-priority-link': priority === 'link',\n 's-button-priority-danger': priority === 'danger',\n 's-button-multiple': (caret && menuOptions.length) || !!rightIconClass,\n 's-button--slide': validateSlideButton(),\n 's-button--rotate-animation': isRotateAnimation(),\n }\"\n sTieredMenu\n [items]=\"menuOptions\"\n [ariaLabel]=\"menuAriaLabel\"\n [attr.aria-haspopup]=\"menuOptions.length ? 'menu' : null\"\n [attr.aria-expanded]=\"menuOptions.length ? isMenuOpen : null\"\n [attr.aria-label]=\"ariaLabel\"\n [disabled]=\"disabled\"\n [sTooltip]=\"tooltip\"\n [tooltipPosition]=\"tooltipPosition\"\n (tieredMenuOpened)=\"onTieredMenuOpened()\"\n (tieredMenuClosed)=\"onTieredMenuClosed()\"\n (click)=\"clicked.emit($event)\"\n>\n @if (iconClass) {\n <span\n [class]=\"iconClass\"\n [ngClass]=\"{\n 's-button-icon inline-flex items-center justify-center': true,\n 'mr-[10px]': !label && menuOptions.length,\n }\"\n [ngStyle]=\"{ color: iconColor }\"\n aria-hidden=\"true\"\n >\n </span>\n }\n @if (label) {\n <span\n class=\"s-button-text block overflow-hidden text-ellipsis whitespace-nowrap\"\n [ngClass]=\"{\n 'mr-[10px]': !!rightIconClass || menuOptions.length,\n 'ml-[10px]': !!iconClass,\n }\"\n >\n {{ label }}\n </span>\n }\n <ng-content></ng-content>\n @if (rightIconClass) {\n <span\n [class]=\"rightIconClass\"\n [ngClass]=\"{ 's-button-right-icon inline-flex items-center justify-center': true }\"\n [ngStyle]=\"{ color: iconColor }\"\n aria-hidden=\"true\"\n >\n </span>\n }\n @if ((caret && menuOptions.length) || (menuOptions && menuOptions.length)) {\n <span\n class=\"menu-options-icon fa fa-fw fa-caret-down\"\n aria-hidden=\"true\"\n >\n </span>\n }\n</button>\n@if (badge) {\n <div class=\"z-[99] relative right-[15px] bottom-[16px]\">\n <s-badge\n [color]=\"badge.color\"\n [text]=\"badge.text\"\n [iconClass]=\"badge.iconClass\"\n >\n </s-badge>\n </div>\n}\n\n","import { NgModule } from '@angular/core';\n\nimport { ButtonComponent } from './button.component';\n\n@NgModule({\n imports: [\n ButtonComponent,\n ],\n exports: [ButtonComponent],\n})\nexport class ButtonModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { forwardRef, Component, Input, NgModule } from '@angular/core';
|
|
2
|
+
import { inject, forwardRef, Component, Input, NgModule } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/forms';
|
|
4
4
|
import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
|
|
5
5
|
|
|
@@ -25,6 +25,12 @@ class CheckboxListComponent {
|
|
|
25
25
|
* Campo obrigatório.
|
|
26
26
|
*/
|
|
27
27
|
data;
|
|
28
|
+
/**
|
|
29
|
+
* @description Instância do nó pai na árvore recursiva, obtida via DI (`@SkipSelf`).
|
|
30
|
+
* `null` para o nó raiz. Usada para herdar o estado `disabled` sem expor um `@Input`
|
|
31
|
+
* paralelo ao contrato de `ControlValueAccessor`.
|
|
32
|
+
*/
|
|
33
|
+
_parent = inject(CheckboxListComponent, { skipSelf: true, optional: true });
|
|
28
34
|
state = {
|
|
29
35
|
checked: false,
|
|
30
36
|
indeterminate: false,
|
|
@@ -48,12 +54,18 @@ class CheckboxListComponent {
|
|
|
48
54
|
get renderType() {
|
|
49
55
|
return this.data.renderType ?? 'inline';
|
|
50
56
|
}
|
|
57
|
+
get isDisabled() {
|
|
58
|
+
return !!this.state.disabled || !!this._parent?.isDisabled;
|
|
59
|
+
}
|
|
51
60
|
registerOnChange(onChange) {
|
|
52
61
|
this._onChange = onChange;
|
|
53
62
|
}
|
|
54
63
|
registerOnTouched(onTouched) {
|
|
55
64
|
this._onTouched = onTouched;
|
|
56
65
|
}
|
|
66
|
+
setDisabledState(isDisabled) {
|
|
67
|
+
this.state.disabled = isDisabled;
|
|
68
|
+
}
|
|
57
69
|
_initializeChildren(item) {
|
|
58
70
|
const childrenState = {};
|
|
59
71
|
if (item.children) {
|
|
@@ -95,7 +107,7 @@ class CheckboxListComponent {
|
|
|
95
107
|
this._onTouched();
|
|
96
108
|
}
|
|
97
109
|
onCheckboxChange() {
|
|
98
|
-
if (this.
|
|
110
|
+
if (this.isDisabled) {
|
|
99
111
|
return;
|
|
100
112
|
}
|
|
101
113
|
this.state.checked = !this.state.checked;
|
|
@@ -131,7 +143,7 @@ class CheckboxListComponent {
|
|
|
131
143
|
useExisting: forwardRef(() => CheckboxListComponent),
|
|
132
144
|
multi: true,
|
|
133
145
|
},
|
|
134
|
-
], ngImport: i0, template: "<div class=\"flex flex-col gap-[10px] mb-[10px]\">\r\n <label>\r\n <div\r\n class=\"flex text-grayscale-90 font-open-sans text-sm gap-3\"\r\n [class.items-center]=\"renderType === 'inline'\"\r\n [class.flex-col-reverse]=\"renderType === 'block'\"\r\n [class.opacity-50]=\"
|
|
146
|
+
], ngImport: i0, template: "<div class=\"flex flex-col gap-[10px] mb-[10px]\">\r\n <label>\r\n <div\r\n class=\"flex text-grayscale-90 font-open-sans text-sm gap-3\"\r\n [class.items-center]=\"renderType === 'inline'\"\r\n [class.flex-col-reverse]=\"renderType === 'block'\"\r\n [class.opacity-50]=\"isDisabled\"\r\n [class.cursor-default]=\"isDisabled\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"checkbox-input appearance-none border rounded-medium shrink-0 h-5 w-5 relative\"\r\n [class.bg-grayscale-0]=\"!state.checked && !state.indeterminate\"\r\n [class.border-grayscale-30]=\"!state.checked && !state.indeterminate\"\r\n [class.bg-criticality-blue]=\"state.checked || state.indeterminate\"\r\n [class.border-criticality-blue]=\"state.checked || state.indeterminate\"\r\n [class.checkbox-input--checked]=\"state.checked\"\r\n [class.checkbox-input--indeterminate]=\"state.indeterminate\"\r\n [class.hover:bg-hippie-blue-50]=\"!isDisabled && !state.checked && !state.indeterminate\"\r\n [class.cursor-pointer]=\"!isDisabled\"\r\n [class.cursor-default]=\"isDisabled\"\r\n [disabled]=\"isDisabled\"\r\n (change)=\"onCheckboxChange()\"\r\n [attr.aria-checked]=\"state.indeterminate ? 'mixed' : state.checked\"\r\n [attr.aria-disabled]=\"isDisabled\"\r\n />\r\n {{ data.label }}\r\n </div>\r\n </label>\r\n @if (data.children && data.children.length) {\r\n <div class=\"ml-5\">\r\n @for (child of data.children; track child) {\r\n <s-checkbox-list\r\n [data]=\"child\"\r\n [ngModel]=\"getCheckboxState(state.children, child.label)\"\r\n (ngModelChange)=\"updateParent()\"\r\n >\r\n </s-checkbox-list>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [".checkbox-input--checked:after{border:solid white;border-width:0 2px 2px 0;content:\"\";height:12px;left:6px;position:absolute;top:2px;transform:rotate(45deg);width:6px}.checkbox-input--indeterminate:after{background-color:#fff;content:\"\";height:2px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:10px}\n"], dependencies: [{ kind: "component", type: CheckboxListComponent, selector: "s-checkbox-list", inputs: ["data"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
135
147
|
}
|
|
136
148
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CheckboxListComponent, decorators: [{
|
|
137
149
|
type: Component,
|
|
@@ -141,7 +153,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
141
153
|
useExisting: forwardRef(() => CheckboxListComponent),
|
|
142
154
|
multi: true,
|
|
143
155
|
},
|
|
144
|
-
], standalone: true, imports: [CheckboxListComponent, FormsModule], template: "<div class=\"flex flex-col gap-[10px] mb-[10px]\">\r\n <label>\r\n <div\r\n class=\"flex text-grayscale-90 font-open-sans text-sm gap-3\"\r\n [class.items-center]=\"renderType === 'inline'\"\r\n [class.flex-col-reverse]=\"renderType === 'block'\"\r\n [class.opacity-50]=\"
|
|
156
|
+
], standalone: true, imports: [CheckboxListComponent, FormsModule], template: "<div class=\"flex flex-col gap-[10px] mb-[10px]\">\r\n <label>\r\n <div\r\n class=\"flex text-grayscale-90 font-open-sans text-sm gap-3\"\r\n [class.items-center]=\"renderType === 'inline'\"\r\n [class.flex-col-reverse]=\"renderType === 'block'\"\r\n [class.opacity-50]=\"isDisabled\"\r\n [class.cursor-default]=\"isDisabled\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"checkbox-input appearance-none border rounded-medium shrink-0 h-5 w-5 relative\"\r\n [class.bg-grayscale-0]=\"!state.checked && !state.indeterminate\"\r\n [class.border-grayscale-30]=\"!state.checked && !state.indeterminate\"\r\n [class.bg-criticality-blue]=\"state.checked || state.indeterminate\"\r\n [class.border-criticality-blue]=\"state.checked || state.indeterminate\"\r\n [class.checkbox-input--checked]=\"state.checked\"\r\n [class.checkbox-input--indeterminate]=\"state.indeterminate\"\r\n [class.hover:bg-hippie-blue-50]=\"!isDisabled && !state.checked && !state.indeterminate\"\r\n [class.cursor-pointer]=\"!isDisabled\"\r\n [class.cursor-default]=\"isDisabled\"\r\n [disabled]=\"isDisabled\"\r\n (change)=\"onCheckboxChange()\"\r\n [attr.aria-checked]=\"state.indeterminate ? 'mixed' : state.checked\"\r\n [attr.aria-disabled]=\"isDisabled\"\r\n />\r\n {{ data.label }}\r\n </div>\r\n </label>\r\n @if (data.children && data.children.length) {\r\n <div class=\"ml-5\">\r\n @for (child of data.children; track child) {\r\n <s-checkbox-list\r\n [data]=\"child\"\r\n [ngModel]=\"getCheckboxState(state.children, child.label)\"\r\n (ngModelChange)=\"updateParent()\"\r\n >\r\n </s-checkbox-list>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [".checkbox-input--checked:after{border:solid white;border-width:0 2px 2px 0;content:\"\";height:12px;left:6px;position:absolute;top:2px;transform:rotate(45deg);width:6px}.checkbox-input--indeterminate:after{background-color:#fff;content:\"\";height:2px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:10px}\n"] }]
|
|
145
157
|
}], propDecorators: { data: [{
|
|
146
158
|
type: Input,
|
|
147
159
|
args: [{ required: true }]
|