@bravobit/bb-foundation 0.33.0 → 0.40.1
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/auth/lib/auth.config.d.ts +5 -0
- package/auth/lib/auth.interceptor.d.ts +2 -2
- package/auth/lib/auth.module.d.ts +1 -4
- package/auth/lib/auth.service.d.ts +2 -2
- package/auth/lib/directives/authenticated.directive.d.ts +11 -4
- package/auth/lib/guards/anonymous.guard.d.ts +2 -15
- package/auth/lib/guards/authenticated.guard.d.ts +2 -15
- package/auth/lib/interfaces/config.interface.d.ts +2 -1
- package/auth/public_api.d.ts +1 -0
- package/collections/lib/collections.module.d.ts +12 -3
- package/collections/lib/components/collections-actions/collections-actions.component.d.ts +10 -0
- package/collections/lib/components/collections-grid/collections-grid.component.d.ts +18 -0
- package/collections/lib/components/collections-pager/collections-pager.component.d.ts +15 -14
- package/collections/lib/components/collections-table/collections-table.component.d.ts +24 -0
- package/collections/lib/components/collections-table-label/collections-table-label.component.d.ts +11 -0
- package/collections/lib/components/collections-table-sorting/collections-table-sorting.component.d.ts +18 -0
- package/collections/lib/components/collections-viewer/collections-viewer.component.d.ts +9 -5
- package/collections/lib/directives/collections-data-row.directive.d.ts +14 -0
- package/collections/lib/directives/collections-data.directive.d.ts +14 -0
- package/collections/lib/directives/collections-empty.directive.d.ts +14 -0
- package/collections/lib/directives/collections-error.directive.d.ts +14 -0
- package/collections/lib/directives/collections-initial.directive.d.ts +11 -0
- package/collections/lib/directives/collections-item.directive.d.ts +14 -0
- package/collections/public_api.d.ts +11 -1
- package/dashboard/lib/dashboard/dashboard.component.d.ts +5 -8
- package/dashboard/lib/dashboard-header/dashboard-header.component.d.ts +3 -5
- package/dashboard/lib/dashboard-menu/dashboard-menu.component.d.ts +1 -1
- package/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.d.ts +4 -7
- package/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.d.ts +3 -5
- package/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.d.ts +6 -11
- package/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.d.ts +2 -2
- package/dashboard/lib/dashboard.module.d.ts +1 -4
- package/dialog/lib/dialog-actions/dialog-actions.component.d.ts +1 -1
- package/dialog/lib/dialog-confirm/dialog-confirm.component.d.ts +2 -2
- package/dialog/lib/dialog-container/dialog-container.component.d.ts +2 -2
- package/dialog/lib/dialog-header/dialog-header.component.d.ts +1 -1
- package/dialog/lib/dialog-link/dialog-link.component.d.ts +1 -1
- package/dialog/lib/dialog-modal/dialog-modal.component.d.ts +1 -1
- package/dialog/lib/dialog-overlay/dialog-overlay.component.d.ts +2 -2
- package/dialog/lib/dialog.config.d.ts +3 -0
- package/dialog/lib/dialog.insertion.d.ts +1 -1
- package/dialog/lib/dialog.interfaces.d.ts +2 -0
- package/dialog/lib/dialog.module.d.ts +2 -4
- package/dialog/lib/directives/confirm.directive.d.ts +13 -0
- package/dialog/public_api.d.ts +2 -0
- package/elements/lib/avatar/avatar.component.d.ts +2 -1
- package/elements/lib/button/button.component.d.ts +12 -14
- package/elements/lib/checkbox/checkbox.component.d.ts +29 -22
- package/elements/lib/checkbox-group/checkbox-group.component.d.ts +13 -0
- package/elements/lib/date-picker/date-picker.component.d.ts +17 -10
- package/elements/lib/directives/addon.directive.d.ts +2 -2
- package/elements/lib/directives/extra-error-controls.directive.d.ts +13 -0
- package/elements/lib/directives/form-submit.directive.d.ts +1 -1
- package/elements/lib/directives/form-submitter.directive.d.ts +1 -1
- package/elements/lib/directives/image-upload.directive.d.ts +1 -1
- package/elements/lib/directives/input.directive.d.ts +9 -31
- package/elements/lib/elements.config.d.ts +84 -0
- package/elements/lib/elements.module.d.ts +20 -102
- package/elements/lib/file-picker/file-picker.component.d.ts +14 -10
- package/elements/lib/form-control/form-control.component.d.ts +8 -9
- package/elements/lib/form-error/form-error.component.d.ts +12 -9
- package/elements/lib/form-group/form-group.component.d.ts +4 -7
- package/elements/lib/icon/icon.component.d.ts +4 -4
- package/elements/lib/image-picker/image-picker.component.d.ts +9 -9
- package/elements/lib/multi-file-control/multi-file-control.component.d.ts +58 -0
- package/elements/lib/pipes/date.pipe.d.ts +9 -0
- package/elements/lib/pipes/file-image.pipe.d.ts +1 -1
- package/elements/lib/pipes/file-size.pipe.d.ts +1 -1
- package/elements/lib/pipes/relative-time.pipe.d.ts +1 -1
- package/elements/lib/radio-button/radio-button.component.d.ts +18 -0
- package/elements/lib/radio-group/radio-group.component.d.ts +38 -0
- package/elements/lib/spinner/spinner.component.d.ts +4 -7
- package/elements/public_api.d.ts +8 -3
- package/esm2022/auth/lib/auth.config.mjs +16 -0
- package/esm2022/auth/lib/auth.interceptor.mjs +10 -7
- package/esm2022/auth/lib/auth.module.mjs +9 -19
- package/esm2022/auth/lib/auth.service.mjs +22 -13
- package/esm2022/auth/lib/directives/authenticated.directive.mjs +45 -11
- package/esm2022/auth/lib/guards/anonymous.guard.mjs +27 -51
- package/esm2022/auth/lib/guards/authenticated.guard.mjs +30 -54
- package/esm2022/auth/lib/helpers/jwt.helper.mjs +2 -2
- package/esm2022/auth/lib/interfaces/config.interface.mjs +2 -3
- package/esm2022/auth/public_api.mjs +2 -1
- package/esm2022/collections/lib/collections.module.mjs +53 -23
- package/esm2022/collections/lib/components/collections-actions/collections-actions.component.mjs +39 -0
- package/esm2022/collections/lib/components/collections-grid/collections-grid.component.mjs +52 -0
- package/esm2022/collections/lib/components/collections-pager/collections-pager.component.mjs +51 -60
- package/esm2022/collections/lib/components/collections-table/collections-table.component.mjs +86 -0
- package/esm2022/collections/lib/components/collections-table-label/collections-table-label.component.mjs +33 -0
- package/esm2022/collections/lib/components/collections-table-sorting/collections-table-sorting.component.mjs +62 -0
- package/esm2022/collections/lib/components/collections-viewer/collections-viewer.component.mjs +10 -7
- package/esm2022/collections/lib/directives/collections-data-row.directive.mjs +26 -0
- package/esm2022/collections/lib/directives/collections-data.directive.mjs +26 -0
- package/esm2022/collections/lib/directives/collections-empty.directive.mjs +26 -0
- package/esm2022/collections/lib/directives/collections-error.directive.mjs +26 -0
- package/esm2022/collections/lib/directives/collections-initial.directive.mjs +22 -0
- package/esm2022/collections/lib/directives/collections-item.directive.mjs +26 -0
- package/esm2022/collections/public_api.mjs +12 -2
- package/esm2022/combobox/combobox/combobox-container.directive.mjs +3 -3
- package/esm2022/combobox/combobox/combobox.component.mjs +6 -6
- package/esm2022/combobox/combobox-label.directive.mjs +3 -3
- package/esm2022/combobox/combobox-option.directive.mjs +3 -3
- package/esm2022/combobox/combobox-panel/combobox-panel.component.mjs +5 -5
- package/esm2022/dashboard/lib/dashboard/dashboard.component.mjs +17 -24
- package/esm2022/dashboard/lib/dashboard-header/dashboard-header.component.mjs +12 -15
- package/esm2022/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +7 -8
- package/esm2022/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +20 -15
- package/esm2022/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +15 -14
- package/esm2022/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +20 -27
- package/esm2022/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +6 -10
- package/esm2022/dashboard/lib/dashboard.module.mjs +30 -27
- package/esm2022/dialog/lib/dialog-actions/dialog-actions.component.mjs +6 -6
- package/esm2022/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +12 -15
- package/esm2022/dialog/lib/dialog-container/dialog-container.component.mjs +10 -7
- package/esm2022/dialog/lib/dialog-header/dialog-header.component.mjs +5 -6
- package/esm2022/dialog/lib/dialog-link/dialog-link.component.mjs +5 -5
- package/esm2022/dialog/lib/dialog-modal/dialog-modal.component.mjs +7 -7
- package/esm2022/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +11 -7
- package/esm2022/dialog/lib/dialog.config.mjs +8 -0
- package/esm2022/dialog/lib/dialog.insertion.mjs +6 -5
- package/esm2022/dialog/lib/dialog.interfaces.mjs +3 -1
- package/esm2022/dialog/lib/dialog.module.mjs +17 -25
- package/esm2022/dialog/lib/dialog.service.mjs +8 -5
- package/esm2022/dialog/lib/directives/confirm.directive.mjs +50 -0
- package/esm2022/dialog/public_api.mjs +3 -1
- package/esm2022/elements/lib/avatar/avatar.component.mjs +15 -14
- package/esm2022/elements/lib/button/button.component.mjs +37 -32
- package/esm2022/elements/lib/checkbox/checkbox.component.mjs +86 -47
- package/esm2022/elements/lib/checkbox-group/checkbox-group.component.mjs +36 -0
- package/esm2022/elements/lib/date-picker/date-picker.component.mjs +64 -51
- package/esm2022/elements/lib/directives/addon.directive.mjs +11 -13
- package/esm2022/elements/lib/directives/extra-error-controls.directive.mjs +43 -0
- package/esm2022/elements/lib/directives/form-submit.directive.mjs +6 -5
- package/esm2022/elements/lib/directives/form-submitter.directive.mjs +6 -5
- package/esm2022/elements/lib/directives/image-upload.directive.mjs +6 -5
- package/esm2022/elements/lib/directives/input.directive.mjs +21 -110
- package/esm2022/elements/lib/elements.config.mjs +42 -0
- package/esm2022/elements/lib/elements.module.mjs +38 -77
- package/esm2022/elements/lib/file-picker/file-picker.component.mjs +36 -24
- package/esm2022/elements/lib/form-control/form-control.component.mjs +21 -24
- package/esm2022/elements/lib/form-error/form-error.component.mjs +35 -60
- package/esm2022/elements/lib/form-group/form-group.component.mjs +15 -12
- package/esm2022/elements/lib/icon/icon.component.mjs +19 -24
- package/esm2022/elements/lib/image-picker/image-picker.component.mjs +33 -19
- package/esm2022/elements/lib/multi-file-control/multi-file-control.component.mjs +165 -0
- package/esm2022/elements/lib/pipes/date.pipe.mjs +30 -0
- package/esm2022/elements/lib/pipes/file-image.pipe.mjs +6 -5
- package/esm2022/elements/lib/pipes/file-size.pipe.mjs +6 -5
- package/esm2022/elements/lib/pipes/relative-time.pipe.mjs +6 -5
- package/esm2022/elements/lib/radio-button/radio-button.component.mjs +59 -0
- package/esm2022/elements/lib/radio-group/radio-group.component.mjs +102 -0
- package/esm2022/elements/lib/spinner/spinner.component.mjs +12 -13
- package/esm2022/elements/public_api.mjs +9 -4
- package/esm2022/http/lib/http.config.mjs +18 -0
- package/esm2022/http/lib/http.interfaces.mjs +4 -2
- package/esm2022/http/lib/http.module.mjs +9 -22
- package/esm2022/http/lib/interceptors/base-url.interceptor.mjs +9 -5
- package/esm2022/http/lib/interceptors/error.interceptor.mjs +10 -6
- package/esm2022/http/public_api.mjs +2 -1
- package/esm2022/lib/core/miscellaneous/coercion.mjs +5 -0
- package/esm2022/lib/core/services/exif.service.mjs +3 -3
- package/esm2022/lib/core/services/file-loader.service.mjs +3 -3
- package/esm2022/lib/core/services/files.service.mjs +3 -3
- package/esm2022/lib/core/services/image-converter.service.mjs +3 -3
- package/esm2022/lib/core/services/languages.service.mjs +3 -3
- package/esm2022/lib/core/services/network.service.mjs +3 -3
- package/esm2022/lib/core/services/patch.service.mjs +3 -3
- package/esm2022/localize/lib/interfaces/config.interfaces.mjs +2 -7
- package/esm2022/localize/lib/interfaces/functions.interfaces.mjs +6 -6
- package/esm2022/localize/lib/localizations/dutch.localization.mjs +19 -1
- package/esm2022/localize/lib/localizations/english.localization.mjs +19 -1
- package/esm2022/localize/lib/localize.config.mjs +43 -0
- package/esm2022/localize/lib/localize.module.mjs +10 -54
- package/esm2022/localize/lib/localize.pipe.mjs +6 -5
- package/esm2022/localize/lib/localize.service.mjs +26 -13
- package/esm2022/localize/lib/localize.tokens.mjs +18 -0
- package/esm2022/localize/lib/transforms/interpolate.transform.mjs +3 -2
- package/esm2022/localize/lib/transforms/plural.transform.mjs +5 -3
- package/esm2022/localize/lib/transforms/reference.transform.mjs +5 -3
- package/esm2022/localize/lib/views/localize-string/localize-string.component.mjs +6 -10
- package/esm2022/localize/lib/views/localize-template.directive.mjs +6 -5
- package/esm2022/localize/public_api.mjs +3 -3
- package/esm2022/masking/lib/directives/currency-mask.directive.mjs +6 -5
- package/esm2022/masking/lib/directives/date-mask.directive.mjs +6 -5
- package/esm2022/masking/lib/directives/input-mask.directive.mjs +6 -5
- package/esm2022/masking/lib/masking.module.mjs +6 -6
- package/esm2022/masking/lib/masking.service.mjs +3 -3
- package/esm2022/notifications/lib/notifications-item/notifications-item.component.mjs +7 -9
- package/esm2022/notifications/lib/notifications-list/notifications-list.component.mjs +8 -8
- package/esm2022/notifications/lib/notifications.config.mjs +8 -0
- package/esm2022/notifications/lib/notifications.interfaces.mjs +3 -1
- package/esm2022/notifications/lib/notifications.module.mjs +8 -18
- package/esm2022/notifications/lib/notifications.service.mjs +14 -8
- package/esm2022/notifications/public_api.mjs +2 -1
- package/esm2022/permissions/lib/directives/permission.directive.mjs +6 -5
- package/esm2022/permissions/lib/guards/permission.guard.mjs +23 -54
- package/esm2022/permissions/lib/permissions.config.mjs +20 -0
- package/esm2022/permissions/lib/permissions.interface.mjs +3 -1
- package/esm2022/permissions/lib/permissions.module.mjs +9 -23
- package/esm2022/permissions/lib/permissions.service.mjs +8 -5
- package/esm2022/permissions/public_api.mjs +2 -1
- package/esm2022/public_api.mjs +2 -10
- package/esm2022/recaptcha/lib/recaptcha/recaptcha.component.mjs +12 -13
- package/esm2022/recaptcha/lib/recaptcha-loader.service.mjs +21 -36
- package/esm2022/recaptcha/lib/recaptcha.config.mjs +8 -0
- package/esm2022/recaptcha/lib/recaptcha.module.mjs +8 -8
- package/esm2022/recaptcha/public_api.mjs +2 -1
- package/esm2022/select/bravobit-bb-foundation-select.mjs +5 -0
- package/esm2022/select/lib/select/select.component.mjs +214 -0
- package/esm2022/select/lib/select-label.directive.mjs +17 -0
- package/esm2022/select/lib/select-option-group.directive.mjs +17 -0
- package/esm2022/select/lib/select-option.directive.mjs +17 -0
- package/esm2022/select/lib/select.module.mjs +35 -0
- package/esm2022/select/public_api.mjs +6 -0
- package/esm2022/storage/lib/storage.service.mjs +3 -3
- package/esm2022/storage/lib/strategies/polyfill-storage.strategy.mjs +2 -5
- package/esm2022/table/lib/components/table/table.component.mjs +21 -22
- package/esm2022/table/lib/components/table-cell/table-cell.component.mjs +5 -5
- package/esm2022/table/lib/components/table-header-cell/table-header-cell.component.mjs +14 -14
- package/esm2022/table/lib/components/table-pager/table-pager.component.mjs +15 -17
- package/esm2022/table/lib/table.module.mjs +23 -21
- package/esm2022/tooltip/lib/tooltip-container/tooltip-container.component.mjs +11 -17
- package/esm2022/tooltip/lib/tooltip.directive.mjs +17 -27
- package/esm2022/tooltip/lib/tooltip.module.mjs +7 -22
- package/esm2022/tooltip/public_api.mjs +2 -2
- package/esm2022/utils/lib/directives/autosize.directive.mjs +9 -7
- package/esm2022/utils/lib/directives/focus-trap.directive.mjs +6 -5
- package/esm2022/utils/lib/directives/focus.directive.mjs +6 -5
- package/esm2022/utils/lib/directives/template.directive.mjs +6 -5
- package/esm2022/utils/lib/utils.module.mjs +6 -6
- package/fesm2022/bravobit-bb-foundation-auth.mjs +140 -175
- package/fesm2022/bravobit-bb-foundation-auth.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-collections.mjs +451 -106
- package/fesm2022/bravobit-bb-foundation-collections.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-combobox.mjs +18 -18
- package/fesm2022/bravobit-bb-foundation-combobox.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-dashboard.mjs +106 -116
- package/fesm2022/bravobit-bb-foundation-dashboard.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-dialog.mjs +125 -70
- package/fesm2022/bravobit-bb-foundation-dialog.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-elements.mjs +1652 -1378
- package/fesm2022/bravobit-bb-foundation-elements.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-http.mjs +38 -27
- package/fesm2022/bravobit-bb-foundation-http.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-localize.mjs +310 -264
- package/fesm2022/bravobit-bb-foundation-localize.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-masking.mjs +23 -20
- package/fesm2022/bravobit-bb-foundation-masking.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-notifications.mjs +67 -62
- package/fesm2022/bravobit-bb-foundation-notifications.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-permissions.mjs +54 -72
- package/fesm2022/bravobit-bb-foundation-permissions.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-recaptcha.mjs +44 -54
- package/fesm2022/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-select.mjs +292 -0
- package/fesm2022/bravobit-bb-foundation-select.mjs.map +1 -0
- package/fesm2022/bravobit-bb-foundation-storage.mjs +4 -7
- package/fesm2022/bravobit-bb-foundation-storage.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-table.mjs +67 -66
- package/fesm2022/bravobit-bb-foundation-table.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-tooltip.mjs +31 -61
- package/fesm2022/bravobit-bb-foundation-tooltip.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-utils.mjs +28 -23
- package/fesm2022/bravobit-bb-foundation-utils.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation.mjs +27 -144
- package/fesm2022/bravobit-bb-foundation.mjs.map +1 -1
- package/http/lib/http.config.d.ts +5 -0
- package/http/lib/http.interfaces.d.ts +3 -0
- package/http/lib/http.module.d.ts +2 -6
- package/http/public_api.d.ts +1 -0
- package/lib/core/miscellaneous/coercion.d.ts +2 -0
- package/localize/lib/interfaces/config.interfaces.d.ts +1 -1
- package/localize/lib/interfaces/functions.interfaces.d.ts +0 -2
- package/localize/lib/localizations/dutch.localization.d.ts +18 -0
- package/localize/lib/localizations/english.localization.d.ts +18 -0
- package/localize/lib/localize.config.d.ts +6 -0
- package/localize/lib/localize.module.d.ts +2 -7
- package/localize/lib/localize.pipe.d.ts +1 -1
- package/localize/lib/localize.service.d.ts +4 -4
- package/localize/lib/localize.tokens.d.ts +11 -0
- package/localize/lib/views/localize-string/localize-string.component.d.ts +1 -1
- package/localize/lib/views/localize-template.directive.d.ts +1 -1
- package/localize/public_api.d.ts +2 -2
- package/masking/lib/directives/currency-mask.directive.d.ts +1 -1
- package/masking/lib/directives/date-mask.directive.d.ts +1 -1
- package/masking/lib/directives/input-mask.directive.d.ts +1 -1
- package/masking/lib/masking.module.d.ts +1 -1
- package/notifications/lib/notifications-item/notifications-item.component.d.ts +1 -1
- package/notifications/lib/notifications-list/notifications-list.component.d.ts +1 -1
- package/notifications/lib/notifications.config.d.ts +3 -0
- package/notifications/lib/notifications.interfaces.d.ts +2 -1
- package/notifications/lib/notifications.module.d.ts +1 -5
- package/notifications/public_api.d.ts +1 -0
- package/package.json +17 -22
- package/permissions/lib/directives/permission.directive.d.ts +1 -1
- package/permissions/lib/guards/permission.guard.d.ts +3 -15
- package/permissions/lib/permissions.config.d.ts +3 -0
- package/permissions/lib/permissions.interface.d.ts +2 -1
- package/permissions/lib/permissions.module.d.ts +1 -1
- package/permissions/public_api.d.ts +1 -0
- package/public_api.d.ts +1 -9
- package/recaptcha/lib/recaptcha/recaptcha.component.d.ts +4 -7
- package/recaptcha/lib/recaptcha-loader.service.d.ts +9 -13
- package/recaptcha/lib/recaptcha.config.d.ts +3 -0
- package/recaptcha/lib/recaptcha.module.d.ts +2 -2
- package/recaptcha/public_api.d.ts +1 -0
- package/{theming → select}/index.d.ts +1 -1
- package/select/lib/select/select.component.d.ts +77 -0
- package/select/lib/select-label.directive.d.ts +8 -0
- package/select/lib/select-option-group.directive.d.ts +8 -0
- package/select/lib/select-option.directive.d.ts +8 -0
- package/select/lib/select.module.d.ts +10 -0
- package/select/public_api.d.ts +5 -0
- package/styles/colors.scss +20 -0
- package/styles/grid.scss +98 -0
- package/styles/reset.scss +65 -0
- package/styles/theme.scss +88 -0
- package/table/lib/components/table/table.component.d.ts +4 -6
- package/table/lib/components/table-cell/table-cell.component.d.ts +1 -1
- package/table/lib/components/table-header-cell/table-header-cell.component.d.ts +4 -7
- package/table/lib/components/table-pager/table-pager.component.d.ts +4 -8
- package/table/lib/table.module.d.ts +1 -5
- package/tooltip/lib/tooltip-container/tooltip-container.component.d.ts +3 -4
- package/tooltip/lib/tooltip.directive.d.ts +8 -17
- package/tooltip/lib/tooltip.module.d.ts +2 -5
- package/tooltip/public_api.d.ts +1 -1
- package/utils/lib/directives/autosize.directive.d.ts +2 -1
- package/utils/lib/directives/focus-trap.directive.d.ts +1 -1
- package/utils/lib/directives/focus.directive.d.ts +1 -1
- package/utils/lib/directives/template.directive.d.ts +1 -1
- package/utils/lib/utils.module.d.ts +1 -1
- package/auth/lib/directives/abstract.directive.d.ts +0 -12
- package/collections/lib/components/collections.directive.d.ts +0 -17
- package/controls/index.d.ts +0 -5
- package/controls/lib/checkbox/checkbox/checkbox.component.d.ts +0 -51
- package/controls/lib/checkbox/checkbox-group/checkbox-group.component.d.ts +0 -23
- package/controls/lib/checkbox/checkbox.module.d.ts +0 -10
- package/controls/lib/control-error/control-error/control-error.animation.d.ts +0 -1
- package/controls/lib/control-error/control-error/control-error.component.d.ts +0 -17
- package/controls/lib/control-error/control-error-submit.directive.d.ts +0 -15
- package/controls/lib/control-error/control-error.defaults.d.ts +0 -2
- package/controls/lib/control-error/control-error.interface.d.ts +0 -12
- package/controls/lib/control-error/control-error.module.d.ts +0 -9
- package/controls/lib/control-error/control-error.utils.d.ts +0 -3
- package/controls/lib/controls.interfaces.d.ts +0 -4
- package/controls/lib/controls.module.d.ts +0 -14
- package/controls/lib/form-control/form-control/form-control.component.d.ts +0 -29
- package/controls/lib/form-control/form-control-addon/form-control-addon.component.d.ts +0 -6
- package/controls/lib/form-control/form-control-input.directive.d.ts +0 -35
- package/controls/lib/form-control/form-control.module.d.ts +0 -12
- package/controls/lib/radio/radio-button/radio-button.component.d.ts +0 -24
- package/controls/lib/radio/radio-group/radio-group.component.d.ts +0 -53
- package/controls/lib/radio/radio.module.d.ts +0 -11
- package/controls/lib/toggle/toggle/toggle.component.d.ts +0 -45
- package/controls/lib/toggle/toggle-group/toggle-group.component.d.ts +0 -23
- package/controls/lib/toggle/toggle.module.d.ts +0 -10
- package/controls/public_api.d.ts +0 -20
- package/elements/lib/dropdown/dropdown.component.d.ts +0 -21
- package/elements/lib/tag/tag.component.d.ts +0 -7
- package/esm2022/auth/lib/directives/abstract.directive.mjs +0 -40
- package/esm2022/collections/lib/components/collections.directive.mjs +0 -43
- package/esm2022/controls/bravobit-bb-foundation-controls.mjs +0 -5
- package/esm2022/controls/lib/checkbox/checkbox/checkbox.component.mjs +0 -178
- package/esm2022/controls/lib/checkbox/checkbox-group/checkbox-group.component.mjs +0 -68
- package/esm2022/controls/lib/checkbox/checkbox.module.mjs +0 -20
- package/esm2022/controls/lib/control-error/control-error/control-error.animation.mjs +0 -14
- package/esm2022/controls/lib/control-error/control-error/control-error.component.mjs +0 -63
- package/esm2022/controls/lib/control-error/control-error-submit.directive.mjs +0 -47
- package/esm2022/controls/lib/control-error/control-error.defaults.mjs +0 -26
- package/esm2022/controls/lib/control-error/control-error.interface.mjs +0 -3
- package/esm2022/controls/lib/control-error/control-error.module.mjs +0 -19
- package/esm2022/controls/lib/control-error/control-error.utils.mjs +0 -20
- package/esm2022/controls/lib/controls.interfaces.mjs +0 -2
- package/esm2022/controls/lib/controls.module.mjs +0 -62
- package/esm2022/controls/lib/form-control/form-control/form-control.component.mjs +0 -79
- package/esm2022/controls/lib/form-control/form-control-addon/form-control-addon.component.mjs +0 -22
- package/esm2022/controls/lib/form-control/form-control-input.directive.mjs +0 -124
- package/esm2022/controls/lib/form-control/form-control.module.mjs +0 -34
- package/esm2022/controls/lib/radio/radio-button/radio-button.component.mjs +0 -75
- package/esm2022/controls/lib/radio/radio-group/radio-group.component.mjs +0 -168
- package/esm2022/controls/lib/radio/radio.module.mjs +0 -21
- package/esm2022/controls/lib/toggle/toggle/toggle.component.mjs +0 -153
- package/esm2022/controls/lib/toggle/toggle-group/toggle-group.component.mjs +0 -62
- package/esm2022/controls/lib/toggle/toggle.module.mjs +0 -20
- package/esm2022/controls/public_api.mjs +0 -21
- package/esm2022/elements/lib/dropdown/dropdown.component.mjs +0 -100
- package/esm2022/elements/lib/tag/tag.component.mjs +0 -18
- package/esm2022/lib/core/mixins/can-disable.mjs +0 -16
- package/esm2022/lib/core/mixins/can-hide-errors.mjs +0 -16
- package/esm2022/lib/core/mixins/can-load.mjs +0 -16
- package/esm2022/lib/core/mixins/constructor.mjs +0 -2
- package/esm2022/lib/core/mixins/has-error.mjs +0 -16
- package/esm2022/lib/core/mixins/is-focused.mjs +0 -16
- package/esm2022/lib/core/mixins/is-grouped.mjs +0 -16
- package/esm2022/lib/core/mixins/is-readonly.mjs +0 -16
- package/esm2022/lib/core/mixins/is-required.mjs +0 -16
- package/esm2022/localize/lib/interfaces/transforms.interfaces.mjs +0 -3
- package/esm2022/localize/lib/locale.token.mjs +0 -14
- package/esm2022/theming/bravobit-bb-foundation-theming.mjs +0 -5
- package/esm2022/theming/lib/themes/checkbox-group.theme.mjs +0 -17
- package/esm2022/theming/lib/themes/checkbox.theme.mjs +0 -35
- package/esm2022/theming/lib/themes/control-error.theme.mjs +0 -11
- package/esm2022/theming/lib/themes/form-control-addon.theme.mjs +0 -6
- package/esm2022/theming/lib/themes/form-control.theme.mjs +0 -45
- package/esm2022/theming/lib/themes/radio-button.theme.mjs +0 -29
- package/esm2022/theming/lib/themes/radio-group.theme.mjs +0 -20
- package/esm2022/theming/lib/themes/toggle-group.theme.mjs +0 -17
- package/esm2022/theming/lib/themes/toggle.theme.mjs +0 -28
- package/esm2022/theming/lib/theming.data.mjs +0 -90
- package/esm2022/theming/lib/theming.directive.mjs +0 -38
- package/esm2022/theming/lib/theming.interface.mjs +0 -2
- package/esm2022/theming/lib/theming.module.mjs +0 -16
- package/esm2022/theming/lib/utils/theming.variable.mjs +0 -41
- package/esm2022/theming/public_api.mjs +0 -10
- package/fesm2022/bravobit-bb-foundation-controls.mjs +0 -1191
- package/fesm2022/bravobit-bb-foundation-controls.mjs.map +0 -1
- package/fesm2022/bravobit-bb-foundation-theming.mjs +0 -381
- package/fesm2022/bravobit-bb-foundation-theming.mjs.map +0 -1
- package/lib/core/mixins/can-disable.d.ts +0 -6
- package/lib/core/mixins/can-hide-errors.d.ts +0 -6
- package/lib/core/mixins/can-load.d.ts +0 -6
- package/lib/core/mixins/constructor.d.ts +0 -1
- package/lib/core/mixins/has-error.d.ts +0 -6
- package/lib/core/mixins/is-focused.d.ts +0 -6
- package/lib/core/mixins/is-grouped.d.ts +0 -6
- package/lib/core/mixins/is-readonly.d.ts +0 -6
- package/lib/core/mixins/is-required.d.ts +0 -6
- package/localize/lib/interfaces/transforms.interfaces.d.ts +0 -3
- package/localize/lib/locale.token.d.ts +0 -3
- package/theming/lib/themes/checkbox-group.theme.d.ts +0 -16
- package/theming/lib/themes/checkbox.theme.d.ts +0 -32
- package/theming/lib/themes/control-error.theme.d.ts +0 -9
- package/theming/lib/themes/form-control-addon.theme.d.ts +0 -5
- package/theming/lib/themes/form-control.theme.d.ts +0 -32
- package/theming/lib/themes/radio-button.theme.d.ts +0 -26
- package/theming/lib/themes/radio-group.theme.d.ts +0 -17
- package/theming/lib/themes/toggle-group.theme.d.ts +0 -16
- package/theming/lib/themes/toggle.theme.d.ts +0 -25
- package/theming/lib/theming.data.d.ts +0 -17
- package/theming/lib/theming.directive.d.ts +0 -13
- package/theming/lib/theming.interface.d.ts +0 -34
- package/theming/lib/theming.module.d.ts +0 -7
- package/theming/lib/utils/theming.variable.d.ts +0 -16
- package/theming/public_api.d.ts +0 -9
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Directive, EventEmitter, booleanAttribute, forwardRef, TemplateRef, Component, ChangeDetectionStrategy, ViewEncapsulation, ContentChild, ViewChild, Input, Output, NgModule } from '@angular/core';
|
|
3
|
+
import * as i2 from '@angular/forms';
|
|
4
|
+
import { FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';
|
|
5
|
+
import * as i1 from '@ng-select/ng-select';
|
|
6
|
+
import { NgSelectComponent, NgSelectModule } from '@ng-select/ng-select';
|
|
7
|
+
import { BbFormError } from '@bravobit/bb-foundation/elements';
|
|
8
|
+
import { AsyncPipe, NgTemplateOutlet } from '@angular/common';
|
|
9
|
+
import { observableAttribute } from '@bravobit/bb-foundation';
|
|
10
|
+
import { BbLocalize } from '@bravobit/bb-foundation/localize';
|
|
11
|
+
import { BbTemplate } from '@bravobit/bb-foundation/utils';
|
|
12
|
+
import { Subscription } from 'rxjs';
|
|
13
|
+
|
|
14
|
+
class BbSelectOptionGroup {
|
|
15
|
+
constructor(template) {
|
|
16
|
+
this.template = template;
|
|
17
|
+
}
|
|
18
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbSelectOptionGroup, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
19
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.5", type: BbSelectOptionGroup, isStandalone: true, selector: "ng-template[bbSelectOptionGroup]", ngImport: i0 }); }
|
|
20
|
+
}
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbSelectOptionGroup, decorators: [{
|
|
22
|
+
type: Directive,
|
|
23
|
+
args: [{
|
|
24
|
+
selector: 'ng-template[bbSelectOptionGroup]',
|
|
25
|
+
standalone: true
|
|
26
|
+
}]
|
|
27
|
+
}], ctorParameters: () => [{ type: i0.TemplateRef }] });
|
|
28
|
+
|
|
29
|
+
class BbSelectOption {
|
|
30
|
+
constructor(template) {
|
|
31
|
+
this.template = template;
|
|
32
|
+
}
|
|
33
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbSelectOption, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
34
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.5", type: BbSelectOption, isStandalone: true, selector: "ng-template[bbSelectOption]", ngImport: i0 }); }
|
|
35
|
+
}
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbSelectOption, decorators: [{
|
|
37
|
+
type: Directive,
|
|
38
|
+
args: [{
|
|
39
|
+
selector: 'ng-template[bbSelectOption]',
|
|
40
|
+
standalone: true
|
|
41
|
+
}]
|
|
42
|
+
}], ctorParameters: () => [{ type: i0.TemplateRef }] });
|
|
43
|
+
|
|
44
|
+
class BbSelectLabel {
|
|
45
|
+
constructor(template) {
|
|
46
|
+
this.template = template;
|
|
47
|
+
}
|
|
48
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbSelectLabel, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
49
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.5", type: BbSelectLabel, isStandalone: true, selector: "ng-template[bbSelectLabel]", ngImport: i0 }); }
|
|
50
|
+
}
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbSelectLabel, decorators: [{
|
|
52
|
+
type: Directive,
|
|
53
|
+
args: [{
|
|
54
|
+
selector: 'ng-template[bbSelectLabel]',
|
|
55
|
+
standalone: true
|
|
56
|
+
}]
|
|
57
|
+
}], ctorParameters: () => [{ type: i0.TemplateRef }] });
|
|
58
|
+
|
|
59
|
+
let nextUniqueId = 0;
|
|
60
|
+
class BbSelect {
|
|
61
|
+
constructor() {
|
|
62
|
+
// Readonly data.
|
|
63
|
+
this.labelId = `bb-select-${nextUniqueId++}`;
|
|
64
|
+
this.control = new FormControl();
|
|
65
|
+
// Inputs.
|
|
66
|
+
this.label = null;
|
|
67
|
+
this.hint = null;
|
|
68
|
+
this.data = null;
|
|
69
|
+
this.required = false;
|
|
70
|
+
this.disabled = false;
|
|
71
|
+
this.grouped = false;
|
|
72
|
+
this.hideErrors = false;
|
|
73
|
+
this.loading = false;
|
|
74
|
+
this.multiple = false;
|
|
75
|
+
this.clearable = true;
|
|
76
|
+
this.searchable = true;
|
|
77
|
+
this.virtualScroll = true;
|
|
78
|
+
this.closeOnSelect = true;
|
|
79
|
+
this.selectableGroup = false;
|
|
80
|
+
this.selectableGroupAsModel = false;
|
|
81
|
+
this.hideArrow = false;
|
|
82
|
+
this.selectOnTab = false;
|
|
83
|
+
this.bindLabel = null;
|
|
84
|
+
this.bindValue = null;
|
|
85
|
+
this.placeholder = null;
|
|
86
|
+
this.typeahead = null;
|
|
87
|
+
this.trackByFn = null;
|
|
88
|
+
this.groupBy = null;
|
|
89
|
+
this.isOpen = null;
|
|
90
|
+
this.clearSearchOnAdd = null;
|
|
91
|
+
this.addTag = false;
|
|
92
|
+
this.appendTo = 'body';
|
|
93
|
+
this.valueChange = new EventEmitter();
|
|
94
|
+
this.onBlur = new EventEmitter();
|
|
95
|
+
this.onChange = new EventEmitter();
|
|
96
|
+
// State.
|
|
97
|
+
this.error = false;
|
|
98
|
+
// Callbacks.
|
|
99
|
+
this.onTouchedCallback = () => ({});
|
|
100
|
+
this.onChangeCallback = () => ({});
|
|
101
|
+
// Subscriptions.
|
|
102
|
+
this._subscription = new Subscription();
|
|
103
|
+
}
|
|
104
|
+
get value() {
|
|
105
|
+
return this.control.value;
|
|
106
|
+
}
|
|
107
|
+
set value(value) {
|
|
108
|
+
this.control.setValue(value);
|
|
109
|
+
this.valueChange.emit(value);
|
|
110
|
+
}
|
|
111
|
+
ngOnInit() {
|
|
112
|
+
this.handleValueChanges();
|
|
113
|
+
}
|
|
114
|
+
ngOnDestroy() {
|
|
115
|
+
this._subscription?.unsubscribe();
|
|
116
|
+
}
|
|
117
|
+
writeValue(value) {
|
|
118
|
+
this.control.patchValue(value, { emitEvent: false });
|
|
119
|
+
}
|
|
120
|
+
registerOnChange(method) {
|
|
121
|
+
this.onChangeCallback = method;
|
|
122
|
+
}
|
|
123
|
+
registerOnTouched(method) {
|
|
124
|
+
this.onTouchedCallback = method;
|
|
125
|
+
}
|
|
126
|
+
setDisabledState(isDisabled) {
|
|
127
|
+
this.disabled = isDisabled;
|
|
128
|
+
this.disabled ? this.control?.disable() : this.control?.enable();
|
|
129
|
+
}
|
|
130
|
+
onErrorChange(error) {
|
|
131
|
+
this.error = !!error;
|
|
132
|
+
}
|
|
133
|
+
handleValueChanges() {
|
|
134
|
+
const subscription = this.control.valueChanges
|
|
135
|
+
.subscribe(value => this.onChangeCallback?.(value));
|
|
136
|
+
this._subscription.add(subscription);
|
|
137
|
+
}
|
|
138
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbSelect, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
139
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.5", type: BbSelect, isStandalone: true, selector: "bb-select", inputs: { label: "label", hint: "hint", data: ["data", "data", observableAttribute], required: ["required", "required", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], grouped: ["grouped", "grouped", booleanAttribute], hideErrors: ["hideErrors", "hideErrors", booleanAttribute], loading: ["loading", "loading", booleanAttribute], multiple: ["multiple", "multiple", booleanAttribute], clearable: ["clearable", "clearable", booleanAttribute], searchable: ["searchable", "searchable", booleanAttribute], virtualScroll: ["virtualScroll", "virtualScroll", booleanAttribute], closeOnSelect: ["closeOnSelect", "closeOnSelect", booleanAttribute], selectableGroup: ["selectableGroup", "selectableGroup", booleanAttribute], selectableGroupAsModel: ["selectableGroupAsModel", "selectableGroupAsModel", booleanAttribute], hideArrow: ["hideArrow", "hideArrow", booleanAttribute], selectOnTab: ["selectOnTab", "selectOnTab", booleanAttribute], bindLabel: "bindLabel", bindValue: "bindValue", placeholder: "placeholder", typeahead: "typeahead", trackByFn: "trackByFn", groupBy: "groupBy", isOpen: "isOpen", clearSearchOnAdd: "clearSearchOnAdd", addTag: "addTag", appendTo: "appendTo", value: "value" }, outputs: { valueChange: "valueChange", onBlur: "onBlur", onChange: "onChange" }, host: { properties: { "class.required": "required", "class.disabled": "disabled", "class.grouped": "grouped", "class.error": "error", "class.hide-arrow": "hideArrow" }, classAttribute: "bb-select" }, providers: [{
|
|
140
|
+
provide: NG_VALUE_ACCESSOR,
|
|
141
|
+
useExisting: forwardRef(() => BbSelect),
|
|
142
|
+
multi: true
|
|
143
|
+
}], queries: [{ propertyName: "optionTemplate", first: true, predicate: BbSelectOption, descendants: true, read: TemplateRef }, { propertyName: "optionGroupTemplate", first: true, predicate: BbSelectOptionGroup, descendants: true, read: TemplateRef }, { propertyName: "labelTemplate", first: true, predicate: BbSelectLabel, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "selectComponent", first: true, predicate: NgSelectComponent, descendants: true, static: true }], ngImport: i0, template: "<!-- Label of the form control. -->\n@if (label; as labelContent) {\n <label [attr.for]=\"labelId\"\n class=\"bb-select-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<ng-select [formControl]=\"control\"\n [notFoundText]=\"'select.not_found_text' | bbLocalize\"\n [clearAllText]=\"'select.clear_all_text' | bbLocalize\"\n [loadingText]=\"'select.loading_text' | bbLocalize\"\n [typeToSearchText]=\"'select.type_to_search_text' | bbLocalize\"\n [addTagText]=\"'select.add_tag_text' | bbLocalize\"\n [virtualScroll]=\"virtualScroll\"\n [items]=\"data | async\"\n [multiple]=\"multiple\"\n [loading]=\"loading\"\n [labelForId]=\"labelId\"\n [searchable]=\"searchable\"\n [placeholder]=\"placeholder\"\n [clearable]=\"clearable\"\n [closeOnSelect]=\"closeOnSelect\"\n [trackByFn]=\"trackByFn\"\n [typeahead]=\"typeahead\"\n [bindLabel]=\"bindLabel\"\n [bindValue]=\"bindValue\"\n [selectableGroup]=\"selectableGroup\"\n [selectableGroupAsModel]=\"selectableGroupAsModel\"\n [clearSearchOnAdd]=\"clearSearchOnAdd\"\n [groupBy]=\"groupBy\"\n [isOpen]=\"isOpen\"\n [addTag]=\"addTag\"\n [inputAttrs]=\"{autocorrect: 'off', autocapitalize: 'none', spellcheck: 'false', autocomplete: 'off'}\"\n [appendTo]=\"appendTo\"\n (blur)=\"onBlur?.emit($event)\"\n (change)=\"onChange?.emit($event)\">\n @if (optionTemplate) {\n <ng-template ng-option-tmp\n let-item=\"item\"\n let-item$=\"item$\"\n let-index=\"index\">\n <ng-container\n *ngTemplateOutlet=\"optionTemplate; context: {item: item, item$: item$, index: index}\"></ng-container>\n </ng-template>\n }\n @if (labelTemplate) {\n <ng-template ng-label-tmp\n let-item=\"item\"\n let-item$=\"item$\"\n let-index=\"index\">\n <ng-container\n *ngTemplateOutlet=\"labelTemplate; context: {item: item, item$: item$, index: index}\"></ng-container>\n </ng-template>\n }\n @if (optionGroupTemplate) {\n <ng-template ng-optgroup-tmp\n let-item=\"item\"\n let-item$=\"item$\"\n let-index=\"index\">\n <ng-container\n *ngTemplateOutlet=\"optionGroupTemplate; context: {item: item, item$: item$, index: index}\"></ng-container>\n </ng-template>\n }\n</ng-select>\n\n@if (!hideErrors) {\n <bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n}\n\n<!-- The form control hint. -->\n@if (hint; as hintContent) {\n <p class=\"bb-select-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n", styles: [".bb-select{color:#2d3c4d;display:block;font-size:1rem}.bb-select.grouped{margin-bottom:1rem}.bb-select.required>.bb-select-label:after{content:\"*\";font-size:.75rem;vertical-align:top;color:var(--bb-form-label-required-color)}.bb-select.error>.bb-select-label{color:#c23934}.bb-select.error>.ng-select>.ng-select-container,.bb-select.error>.ng-select.ng-select-opened>.ng-select-container:hover{box-shadow:0 .375rem .375rem -.375rem #0000001a,0 0 0 .1875rem #f8d3d3}.bb-select.error>.ng-select>.ng-select-container{border:1px solid hsl(0,73%,30%);background-color:#f8d3d3}.bb-select.error>.ng-select>.ng-select-container>.ng-value-container>.ng-placeholder{color:#ea7b7b}.bb-select.hide-arrow .ng-arrow-wrapper{width:0;opacity:0;overflow:hidden;-webkit-user-select:none;user-select:none;pointer-events:none}.bb-select-label{display:block;margin-bottom:.25rem;color:var(--bb-form-label-color);font-size:var(--bb-form-label-font-size);font-weight:var(--bb-form-label-font-weight)}.bb-select-hint{display:block;line-height:1.5;margin-top:.25rem;font-size:.8125rem;color:#758795}.ng-select.ng-select-opened>.ng-select-container{background:#fff}.ng-select.ng-select-opened>.ng-select-container:hover{box-shadow:none}.ng-select.ng-select-opened>.ng-select-container .ng-arrow{top:-.125rem;border-width:0 .3125rem .3125rem;border-color:transparent transparent #808993}.ng-select.ng-select-opened>.ng-select-container .ng-arrow:hover{border-color:transparent transparent #212327}.ng-select.ng-select-opened.ng-select-top>.ng-select-container{border-top-left-radius:0;border-top-right-radius:0}.ng-select.ng-select-opened.ng-select-right>.ng-select-container{border-top-right-radius:0;border-bottom-right-radius:0}.ng-select.ng-select-opened.ng-select-bottom>.ng-select-container{border-bottom-right-radius:0;border-bottom-left-radius:0}.ng-select.ng-select-opened.ng-select-left>.ng-select-container{border-top-left-radius:0;border-bottom-left-radius:0}.ng-select.ng-select-focused:not(.ng-select-opened)>.ng-select-container{box-shadow:0 .375rem .375rem -.375rem #0000001a,var(--select-box-shadow);border-color:#757e8a}.ng-select.ng-select-disabled>.ng-select-container{color:gray;background-color:#e6e6e6}.ng-select .ng-has-value .ng-placeholder{display:none}.ng-select .ng-select-container{align-items:center;transition-duration:.25s;min-height:2.5rem;color:#111;background-color:#fff;border:1px solid hsl(213,8%,74%);border-radius:.5rem;transition-property:background-color,box-shadow;transition-timing-function:cubic-bezier(0,0,.2,1);box-shadow:0 .375rem .375rem -.375rem #0000001a}.ng-select .ng-select-container .ng-value-container{align-items:center;padding-left:.5rem}.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#d1d1d1}.ng-select.ng-select-single .ng-select-container{height:2.5rem}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{left:0;top:50%;padding-right:3.125rem;transform:translateY(-50%);padding-left:.5rem}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value{border-radius:.25rem;background-color:#f9f9f9;border:1px solid #d3d6d9}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-label{padding:0 .3125rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-top:.3125rem;padding-left:.4375rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{line-height:1.6;margin-right:.3125rem;border-radius:.125rem;margin-bottom:.3125rem;color:#111;font-size:1rem;background-color:#ebf5ff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled{background-color:#f9f9f9}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:.3125rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label,.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:inline-block;padding:.0625rem .3125rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{background-color:#d1e8ff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-right:1px solid #b8dbff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:1px solid #b8dbff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 0 .1875rem .1875rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input>input{color:#111}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{top:.3125rem;padding-left:.1875rem;padding-bottom:.3125rem}.ng-select .ng-clear-wrapper{color:#808993}.ng-select .ng-clear-wrapper:hover .ng-clear{color:#d0021b}.ng-select .ng-clear-wrapper:focus .ng-clear{color:#d0021b}.ng-select .ng-clear-wrapper:focus{outline:none}.ng-select .ng-spinner-zone{padding:.3125rem .3125rem 0 0}.ng-select .ng-arrow-wrapper{width:1.5625rem;padding-right:.3125rem}.ng-select .ng-arrow-wrapper:hover .ng-arrow{border-top-color:#50565e}.ng-select .ng-arrow-wrapper .ng-arrow{border-style:solid;border-width:.3125rem .3125rem .15625rem;border-color:#808993 transparent transparent}.ng-dropdown-panel{left:0;box-shadow:0 1px #0000000f;background-color:#fff;border:1px solid hsl(213,8%,74%)}.ng-dropdown-panel.ng-select-top{bottom:100%;margin-bottom:-1px;border-top-left-radius:.5rem;border-top-right-radius:.5rem;border-bottom-color:#d3d6d9}.ng-dropdown-panel.ng-select-top .ng-dropdown-panel-items .ng-option:first-child{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.ng-dropdown-panel.ng-select-right{top:0;left:100%;margin-bottom:-1px;border-top-right-radius:.5rem;border-bottom-left-radius:.5rem;border-bottom-color:#d3d6d9;border-bottom-right-radius:.5rem}.ng-dropdown-panel.ng-select-right .ng-dropdown-panel-items .ng-option:first-child{border-top-right-radius:.5rem}.ng-dropdown-panel.ng-select-bottom{top:100%;margin-top:-1px;border-top-color:#d3d6d9;border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem}.ng-dropdown-panel.ng-select-bottom .ng-dropdown-panel-items .ng-option:last-child{border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem}.ng-dropdown-panel.ng-select-left{top:0;left:-100%;margin-bottom:-1px;border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;border-bottom-color:#d3d6d9;border-bottom-right-radius:.5rem}.ng-dropdown-panel.ng-select-left .ng-dropdown-panel-items .ng-option:first-child{border-top-left-radius:.5rem}.ng-dropdown-panel .ng-dropdown-header{padding:.3125rem .4375rem;border-bottom:1px solid hsl(213,8%,74%)}.ng-dropdown-panel .ng-dropdown-footer{padding:.3125rem .4375rem;border-top:1px solid hsl(213,8%,74%)}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{cursor:pointer;font-weight:500;-webkit-user-select:none;user-select:none;padding:.5rem .625rem;color:#0000008a}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-disabled{cursor:default}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-marked{background-color:#f5faff}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected.ng-option-marked{font-weight:500;background-color:#ebf5ff;color:#0000008a}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{font-size:1rem;font-weight:400;padding:.5rem .625rem;color:#000000de;background-color:#fff}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked{color:#111;background-color:#ebf5ff}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected .ng-option-label,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked .ng-option-label{font-weight:500}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{color:#111;background-color:#f5faff}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-disabled{color:#aaa}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-left:1.375rem}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{font-size:80%;font-weight:400;padding-right:.3125rem}\n"], dependencies: [{ kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i1.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i1.NgOptgroupTemplateDirective, selector: "[ng-optgroup-tmp]" }, { kind: "directive", type: i1.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i1.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: BbTemplate, selector: "[bbTemplate]", inputs: ["bbTemplate"] }, { kind: "component", type: BbFormError, selector: "bb-form-error", inputs: ["control"], outputs: ["errorChange"] }, { kind: "pipe", type: BbLocalize, name: "bbLocalize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
144
|
+
}
|
|
145
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbSelect, decorators: [{
|
|
146
|
+
type: Component,
|
|
147
|
+
args: [{ selector: 'bb-select', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [{
|
|
148
|
+
provide: NG_VALUE_ACCESSOR,
|
|
149
|
+
useExisting: forwardRef(() => BbSelect),
|
|
150
|
+
multi: true
|
|
151
|
+
}], host: {
|
|
152
|
+
'class': 'bb-select',
|
|
153
|
+
'[class.required]': 'required',
|
|
154
|
+
'[class.disabled]': 'disabled',
|
|
155
|
+
'[class.grouped]': 'grouped',
|
|
156
|
+
'[class.error]': 'error',
|
|
157
|
+
'[class.hide-arrow]': 'hideArrow'
|
|
158
|
+
}, preserveWhitespaces: false, standalone: true, imports: [
|
|
159
|
+
NgSelectModule,
|
|
160
|
+
ReactiveFormsModule,
|
|
161
|
+
AsyncPipe,
|
|
162
|
+
NgTemplateOutlet,
|
|
163
|
+
BbTemplate,
|
|
164
|
+
BbFormError,
|
|
165
|
+
BbLocalize
|
|
166
|
+
], template: "<!-- Label of the form control. -->\n@if (label; as labelContent) {\n <label [attr.for]=\"labelId\"\n class=\"bb-select-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<ng-select [formControl]=\"control\"\n [notFoundText]=\"'select.not_found_text' | bbLocalize\"\n [clearAllText]=\"'select.clear_all_text' | bbLocalize\"\n [loadingText]=\"'select.loading_text' | bbLocalize\"\n [typeToSearchText]=\"'select.type_to_search_text' | bbLocalize\"\n [addTagText]=\"'select.add_tag_text' | bbLocalize\"\n [virtualScroll]=\"virtualScroll\"\n [items]=\"data | async\"\n [multiple]=\"multiple\"\n [loading]=\"loading\"\n [labelForId]=\"labelId\"\n [searchable]=\"searchable\"\n [placeholder]=\"placeholder\"\n [clearable]=\"clearable\"\n [closeOnSelect]=\"closeOnSelect\"\n [trackByFn]=\"trackByFn\"\n [typeahead]=\"typeahead\"\n [bindLabel]=\"bindLabel\"\n [bindValue]=\"bindValue\"\n [selectableGroup]=\"selectableGroup\"\n [selectableGroupAsModel]=\"selectableGroupAsModel\"\n [clearSearchOnAdd]=\"clearSearchOnAdd\"\n [groupBy]=\"groupBy\"\n [isOpen]=\"isOpen\"\n [addTag]=\"addTag\"\n [inputAttrs]=\"{autocorrect: 'off', autocapitalize: 'none', spellcheck: 'false', autocomplete: 'off'}\"\n [appendTo]=\"appendTo\"\n (blur)=\"onBlur?.emit($event)\"\n (change)=\"onChange?.emit($event)\">\n @if (optionTemplate) {\n <ng-template ng-option-tmp\n let-item=\"item\"\n let-item$=\"item$\"\n let-index=\"index\">\n <ng-container\n *ngTemplateOutlet=\"optionTemplate; context: {item: item, item$: item$, index: index}\"></ng-container>\n </ng-template>\n }\n @if (labelTemplate) {\n <ng-template ng-label-tmp\n let-item=\"item\"\n let-item$=\"item$\"\n let-index=\"index\">\n <ng-container\n *ngTemplateOutlet=\"labelTemplate; context: {item: item, item$: item$, index: index}\"></ng-container>\n </ng-template>\n }\n @if (optionGroupTemplate) {\n <ng-template ng-optgroup-tmp\n let-item=\"item\"\n let-item$=\"item$\"\n let-index=\"index\">\n <ng-container\n *ngTemplateOutlet=\"optionGroupTemplate; context: {item: item, item$: item$, index: index}\"></ng-container>\n </ng-template>\n }\n</ng-select>\n\n@if (!hideErrors) {\n <bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n}\n\n<!-- The form control hint. -->\n@if (hint; as hintContent) {\n <p class=\"bb-select-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n", styles: [".bb-select{color:#2d3c4d;display:block;font-size:1rem}.bb-select.grouped{margin-bottom:1rem}.bb-select.required>.bb-select-label:after{content:\"*\";font-size:.75rem;vertical-align:top;color:var(--bb-form-label-required-color)}.bb-select.error>.bb-select-label{color:#c23934}.bb-select.error>.ng-select>.ng-select-container,.bb-select.error>.ng-select.ng-select-opened>.ng-select-container:hover{box-shadow:0 .375rem .375rem -.375rem #0000001a,0 0 0 .1875rem #f8d3d3}.bb-select.error>.ng-select>.ng-select-container{border:1px solid hsl(0,73%,30%);background-color:#f8d3d3}.bb-select.error>.ng-select>.ng-select-container>.ng-value-container>.ng-placeholder{color:#ea7b7b}.bb-select.hide-arrow .ng-arrow-wrapper{width:0;opacity:0;overflow:hidden;-webkit-user-select:none;user-select:none;pointer-events:none}.bb-select-label{display:block;margin-bottom:.25rem;color:var(--bb-form-label-color);font-size:var(--bb-form-label-font-size);font-weight:var(--bb-form-label-font-weight)}.bb-select-hint{display:block;line-height:1.5;margin-top:.25rem;font-size:.8125rem;color:#758795}.ng-select.ng-select-opened>.ng-select-container{background:#fff}.ng-select.ng-select-opened>.ng-select-container:hover{box-shadow:none}.ng-select.ng-select-opened>.ng-select-container .ng-arrow{top:-.125rem;border-width:0 .3125rem .3125rem;border-color:transparent transparent #808993}.ng-select.ng-select-opened>.ng-select-container .ng-arrow:hover{border-color:transparent transparent #212327}.ng-select.ng-select-opened.ng-select-top>.ng-select-container{border-top-left-radius:0;border-top-right-radius:0}.ng-select.ng-select-opened.ng-select-right>.ng-select-container{border-top-right-radius:0;border-bottom-right-radius:0}.ng-select.ng-select-opened.ng-select-bottom>.ng-select-container{border-bottom-right-radius:0;border-bottom-left-radius:0}.ng-select.ng-select-opened.ng-select-left>.ng-select-container{border-top-left-radius:0;border-bottom-left-radius:0}.ng-select.ng-select-focused:not(.ng-select-opened)>.ng-select-container{box-shadow:0 .375rem .375rem -.375rem #0000001a,var(--select-box-shadow);border-color:#757e8a}.ng-select.ng-select-disabled>.ng-select-container{color:gray;background-color:#e6e6e6}.ng-select .ng-has-value .ng-placeholder{display:none}.ng-select .ng-select-container{align-items:center;transition-duration:.25s;min-height:2.5rem;color:#111;background-color:#fff;border:1px solid hsl(213,8%,74%);border-radius:.5rem;transition-property:background-color,box-shadow;transition-timing-function:cubic-bezier(0,0,.2,1);box-shadow:0 .375rem .375rem -.375rem #0000001a}.ng-select .ng-select-container .ng-value-container{align-items:center;padding-left:.5rem}.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#d1d1d1}.ng-select.ng-select-single .ng-select-container{height:2.5rem}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{left:0;top:50%;padding-right:3.125rem;transform:translateY(-50%);padding-left:.5rem}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value{border-radius:.25rem;background-color:#f9f9f9;border:1px solid #d3d6d9}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-label{padding:0 .3125rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-top:.3125rem;padding-left:.4375rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{line-height:1.6;margin-right:.3125rem;border-radius:.125rem;margin-bottom:.3125rem;color:#111;font-size:1rem;background-color:#ebf5ff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled{background-color:#f9f9f9}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:.3125rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label,.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:inline-block;padding:.0625rem .3125rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{background-color:#d1e8ff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-right:1px solid #b8dbff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:1px solid #b8dbff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 0 .1875rem .1875rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input>input{color:#111}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{top:.3125rem;padding-left:.1875rem;padding-bottom:.3125rem}.ng-select .ng-clear-wrapper{color:#808993}.ng-select .ng-clear-wrapper:hover .ng-clear{color:#d0021b}.ng-select .ng-clear-wrapper:focus .ng-clear{color:#d0021b}.ng-select .ng-clear-wrapper:focus{outline:none}.ng-select .ng-spinner-zone{padding:.3125rem .3125rem 0 0}.ng-select .ng-arrow-wrapper{width:1.5625rem;padding-right:.3125rem}.ng-select .ng-arrow-wrapper:hover .ng-arrow{border-top-color:#50565e}.ng-select .ng-arrow-wrapper .ng-arrow{border-style:solid;border-width:.3125rem .3125rem .15625rem;border-color:#808993 transparent transparent}.ng-dropdown-panel{left:0;box-shadow:0 1px #0000000f;background-color:#fff;border:1px solid hsl(213,8%,74%)}.ng-dropdown-panel.ng-select-top{bottom:100%;margin-bottom:-1px;border-top-left-radius:.5rem;border-top-right-radius:.5rem;border-bottom-color:#d3d6d9}.ng-dropdown-panel.ng-select-top .ng-dropdown-panel-items .ng-option:first-child{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.ng-dropdown-panel.ng-select-right{top:0;left:100%;margin-bottom:-1px;border-top-right-radius:.5rem;border-bottom-left-radius:.5rem;border-bottom-color:#d3d6d9;border-bottom-right-radius:.5rem}.ng-dropdown-panel.ng-select-right .ng-dropdown-panel-items .ng-option:first-child{border-top-right-radius:.5rem}.ng-dropdown-panel.ng-select-bottom{top:100%;margin-top:-1px;border-top-color:#d3d6d9;border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem}.ng-dropdown-panel.ng-select-bottom .ng-dropdown-panel-items .ng-option:last-child{border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem}.ng-dropdown-panel.ng-select-left{top:0;left:-100%;margin-bottom:-1px;border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;border-bottom-color:#d3d6d9;border-bottom-right-radius:.5rem}.ng-dropdown-panel.ng-select-left .ng-dropdown-panel-items .ng-option:first-child{border-top-left-radius:.5rem}.ng-dropdown-panel .ng-dropdown-header{padding:.3125rem .4375rem;border-bottom:1px solid hsl(213,8%,74%)}.ng-dropdown-panel .ng-dropdown-footer{padding:.3125rem .4375rem;border-top:1px solid hsl(213,8%,74%)}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{cursor:pointer;font-weight:500;-webkit-user-select:none;user-select:none;padding:.5rem .625rem;color:#0000008a}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-disabled{cursor:default}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-marked{background-color:#f5faff}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected.ng-option-marked{font-weight:500;background-color:#ebf5ff;color:#0000008a}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{font-size:1rem;font-weight:400;padding:.5rem .625rem;color:#000000de;background-color:#fff}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked{color:#111;background-color:#ebf5ff}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected .ng-option-label,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked .ng-option-label{font-weight:500}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{color:#111;background-color:#f5faff}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-disabled{color:#aaa}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-left:1.375rem}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{font-size:80%;font-weight:400;padding-right:.3125rem}\n"] }]
|
|
167
|
+
}], propDecorators: { optionTemplate: [{
|
|
168
|
+
type: ContentChild,
|
|
169
|
+
args: [BbSelectOption, { read: TemplateRef }]
|
|
170
|
+
}], optionGroupTemplate: [{
|
|
171
|
+
type: ContentChild,
|
|
172
|
+
args: [BbSelectOptionGroup, { read: TemplateRef }]
|
|
173
|
+
}], labelTemplate: [{
|
|
174
|
+
type: ContentChild,
|
|
175
|
+
args: [BbSelectLabel, { read: TemplateRef }]
|
|
176
|
+
}], selectComponent: [{
|
|
177
|
+
type: ViewChild,
|
|
178
|
+
args: [NgSelectComponent, { static: true }]
|
|
179
|
+
}], label: [{
|
|
180
|
+
type: Input
|
|
181
|
+
}], hint: [{
|
|
182
|
+
type: Input
|
|
183
|
+
}], data: [{
|
|
184
|
+
type: Input,
|
|
185
|
+
args: [{ transform: observableAttribute }]
|
|
186
|
+
}], required: [{
|
|
187
|
+
type: Input,
|
|
188
|
+
args: [{ transform: booleanAttribute }]
|
|
189
|
+
}], disabled: [{
|
|
190
|
+
type: Input,
|
|
191
|
+
args: [{ transform: booleanAttribute }]
|
|
192
|
+
}], grouped: [{
|
|
193
|
+
type: Input,
|
|
194
|
+
args: [{ transform: booleanAttribute }]
|
|
195
|
+
}], hideErrors: [{
|
|
196
|
+
type: Input,
|
|
197
|
+
args: [{ transform: booleanAttribute }]
|
|
198
|
+
}], loading: [{
|
|
199
|
+
type: Input,
|
|
200
|
+
args: [{ transform: booleanAttribute }]
|
|
201
|
+
}], multiple: [{
|
|
202
|
+
type: Input,
|
|
203
|
+
args: [{ transform: booleanAttribute }]
|
|
204
|
+
}], clearable: [{
|
|
205
|
+
type: Input,
|
|
206
|
+
args: [{ transform: booleanAttribute }]
|
|
207
|
+
}], searchable: [{
|
|
208
|
+
type: Input,
|
|
209
|
+
args: [{ transform: booleanAttribute }]
|
|
210
|
+
}], virtualScroll: [{
|
|
211
|
+
type: Input,
|
|
212
|
+
args: [{ transform: booleanAttribute }]
|
|
213
|
+
}], closeOnSelect: [{
|
|
214
|
+
type: Input,
|
|
215
|
+
args: [{ transform: booleanAttribute }]
|
|
216
|
+
}], selectableGroup: [{
|
|
217
|
+
type: Input,
|
|
218
|
+
args: [{ transform: booleanAttribute }]
|
|
219
|
+
}], selectableGroupAsModel: [{
|
|
220
|
+
type: Input,
|
|
221
|
+
args: [{ transform: booleanAttribute }]
|
|
222
|
+
}], hideArrow: [{
|
|
223
|
+
type: Input,
|
|
224
|
+
args: [{ transform: booleanAttribute }]
|
|
225
|
+
}], selectOnTab: [{
|
|
226
|
+
type: Input,
|
|
227
|
+
args: [{ transform: booleanAttribute }]
|
|
228
|
+
}], bindLabel: [{
|
|
229
|
+
type: Input
|
|
230
|
+
}], bindValue: [{
|
|
231
|
+
type: Input
|
|
232
|
+
}], placeholder: [{
|
|
233
|
+
type: Input
|
|
234
|
+
}], typeahead: [{
|
|
235
|
+
type: Input
|
|
236
|
+
}], trackByFn: [{
|
|
237
|
+
type: Input
|
|
238
|
+
}], groupBy: [{
|
|
239
|
+
type: Input
|
|
240
|
+
}], isOpen: [{
|
|
241
|
+
type: Input
|
|
242
|
+
}], clearSearchOnAdd: [{
|
|
243
|
+
type: Input
|
|
244
|
+
}], addTag: [{
|
|
245
|
+
type: Input
|
|
246
|
+
}], appendTo: [{
|
|
247
|
+
type: Input
|
|
248
|
+
}], value: [{
|
|
249
|
+
type: Input
|
|
250
|
+
}], valueChange: [{
|
|
251
|
+
type: Output
|
|
252
|
+
}], onBlur: [{
|
|
253
|
+
type: Output
|
|
254
|
+
}], onChange: [{
|
|
255
|
+
type: Output
|
|
256
|
+
}] } });
|
|
257
|
+
|
|
258
|
+
class SelectModule {
|
|
259
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: SelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
260
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.5", ngImport: i0, type: SelectModule, imports: [BbSelect,
|
|
261
|
+
BbSelectLabel,
|
|
262
|
+
BbSelectOption,
|
|
263
|
+
BbSelectOptionGroup], exports: [BbSelect,
|
|
264
|
+
BbSelectLabel,
|
|
265
|
+
BbSelectOption,
|
|
266
|
+
BbSelectOptionGroup] }); }
|
|
267
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: SelectModule, imports: [BbSelect] }); }
|
|
268
|
+
}
|
|
269
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: SelectModule, decorators: [{
|
|
270
|
+
type: NgModule,
|
|
271
|
+
args: [{
|
|
272
|
+
imports: [
|
|
273
|
+
BbSelect,
|
|
274
|
+
BbSelectLabel,
|
|
275
|
+
BbSelectOption,
|
|
276
|
+
BbSelectOptionGroup
|
|
277
|
+
],
|
|
278
|
+
exports: [
|
|
279
|
+
BbSelect,
|
|
280
|
+
BbSelectLabel,
|
|
281
|
+
BbSelectOption,
|
|
282
|
+
BbSelectOptionGroup
|
|
283
|
+
]
|
|
284
|
+
}]
|
|
285
|
+
}] });
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* Generated bundle index. Do not edit.
|
|
289
|
+
*/
|
|
290
|
+
|
|
291
|
+
export { BbSelect, BbSelectLabel, BbSelectOption, BbSelectOptionGroup, SelectModule };
|
|
292
|
+
//# sourceMappingURL=bravobit-bb-foundation-select.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bravobit-bb-foundation-select.mjs","sources":["../../../projects/bb-foundation/select/src/lib/select-option-group.directive.ts","../../../projects/bb-foundation/select/src/lib/select-option.directive.ts","../../../projects/bb-foundation/select/src/lib/select-label.directive.ts","../../../projects/bb-foundation/select/src/lib/select/select.component.ts","../../../projects/bb-foundation/select/src/lib/select/select.component.html","../../../projects/bb-foundation/select/src/lib/select.module.ts","../../../projects/bb-foundation/select/src/bravobit-bb-foundation-select.ts"],"sourcesContent":["import {Directive, TemplateRef} from '@angular/core';\n\n@Directive({\n selector: 'ng-template[bbSelectOptionGroup]',\n standalone: true\n})\nexport class BbSelectOptionGroup {\n\n constructor(public template: TemplateRef<any>) {\n }\n\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\n@Directive({\n selector: 'ng-template[bbSelectOption]',\n standalone: true\n})\nexport class BbSelectOption {\n\n constructor(public template: TemplateRef<any>) {\n }\n\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\n@Directive({\n selector: 'ng-template[bbSelectLabel]',\n standalone: true\n})\nexport class BbSelectLabel {\n\n constructor(public template: TemplateRef<any>) {\n }\n\n}\n","import {booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, EventEmitter, forwardRef, Input, OnDestroy, OnInit, Output, TemplateRef, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR, FormControl, ReactiveFormsModule} from '@angular/forms';\nimport {NgSelectComponent, NgSelectModule} from '@ng-select/ng-select';\nimport {BbSelectOptionGroup} from '../select-option-group.directive';\nimport {BbFormError} from '@bravobit/bb-foundation/elements';\nimport {AsyncPipe, NgTemplateOutlet} from '@angular/common';\nimport {observableAttribute} from '@bravobit/bb-foundation';\nimport {BbLocalize} from '@bravobit/bb-foundation/localize';\nimport {BbSelectOption} from '../select-option.directive';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\nimport {BbSelectLabel} from '../select-label.directive';\nimport {Observable, Subject, Subscription} from 'rxjs';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'bb-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BbSelect),\n multi: true\n }],\n host: {\n 'class': 'bb-select',\n '[class.required]': 'required',\n '[class.disabled]': 'disabled',\n '[class.grouped]': 'grouped',\n '[class.error]': 'error',\n '[class.hide-arrow]': 'hideArrow'\n },\n preserveWhitespaces: false,\n standalone: true,\n imports: [\n NgSelectModule,\n ReactiveFormsModule,\n AsyncPipe,\n NgTemplateOutlet,\n BbTemplate,\n BbFormError,\n BbLocalize\n ]\n})\nexport class BbSelect<T> implements ControlValueAccessor, OnInit, OnDestroy {\n\n // Readonly data.\n readonly labelId = `bb-select-${nextUniqueId++}`;\n readonly control = new FormControl();\n\n // Content children.\n @ContentChild(BbSelectOption, {read: TemplateRef}) optionTemplate: TemplateRef<any>;\n @ContentChild(BbSelectOptionGroup, {read: TemplateRef}) optionGroupTemplate: TemplateRef<any>;\n @ContentChild(BbSelectLabel, {read: TemplateRef}) labelTemplate: TemplateRef<any>;\n\n // View children.\n @ViewChild(NgSelectComponent, {static: true}) selectComponent: NgSelectComponent;\n\n // Inputs.\n @Input() label: string | TemplateRef<any> | null = null;\n @Input() hint: string | TemplateRef<any> | null = null;\n @Input({transform: observableAttribute}) data: Observable<T[]> | null = null;\n @Input({transform: booleanAttribute}) required: boolean = false;\n @Input({transform: booleanAttribute}) disabled: boolean = false;\n @Input({transform: booleanAttribute}) grouped: boolean = false;\n @Input({transform: booleanAttribute}) hideErrors: boolean = false;\n @Input({transform: booleanAttribute}) loading: boolean = false;\n @Input({transform: booleanAttribute}) multiple: boolean = false;\n @Input({transform: booleanAttribute}) clearable: boolean = true;\n @Input({transform: booleanAttribute}) searchable: boolean = true;\n @Input({transform: booleanAttribute}) virtualScroll: boolean = true;\n @Input({transform: booleanAttribute}) closeOnSelect: boolean = true;\n @Input({transform: booleanAttribute}) selectableGroup: boolean = false;\n @Input({transform: booleanAttribute}) selectableGroupAsModel: boolean = false;\n @Input({transform: booleanAttribute}) hideArrow: boolean = false;\n @Input({transform: booleanAttribute}) selectOnTab: boolean = false;\n @Input() bindLabel: string | null = null;\n @Input() bindValue: string | null = null;\n @Input() placeholder: string | null = null;\n @Input() typeahead: Subject<string> | null = null;\n @Input() trackByFn: any | null = null;\n @Input() groupBy: string | null = null;\n @Input() isOpen: boolean = null;\n @Input() clearSearchOnAdd: boolean = null;\n @Input() addTag: boolean | ((term: string) => any | Promise<any>) = false;\n @Input() appendTo: string | null = 'body';\n\n @Input()\n get value() {\n return this.control.value;\n }\n\n @Output() valueChange = new EventEmitter<any | null>();\n @Output() onBlur = new EventEmitter<FocusEvent>();\n @Output() onChange = new EventEmitter<any | null>();\n\n set value(value: any | null) {\n this.control.setValue(value);\n this.valueChange.emit(value);\n }\n\n // State.\n error: boolean = false;\n\n // Callbacks.\n onTouchedCallback: () => void = () => ({});\n onChangeCallback: (_: T | null) => void = () => ({});\n\n // Subscriptions.\n private _subscription = new Subscription();\n\n ngOnInit() {\n this.handleValueChanges();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n writeValue(value: T | null) {\n this.control.patchValue(value, {emitEvent: false});\n }\n\n registerOnChange(method: (_: T | null) => void) {\n this.onChangeCallback = method;\n }\n\n registerOnTouched(method: () => void) {\n this.onTouchedCallback = method;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.disabled ? this.control?.disable() : this.control?.enable();\n }\n\n onErrorChange(error: { token: string, data?: any } | null) {\n this.error = !!error;\n }\n\n private handleValueChanges() {\n const subscription = this.control.valueChanges\n .subscribe(value => this.onChangeCallback?.(value));\n this._subscription.add(subscription);\n }\n\n}\n","<!-- Label of the form control. -->\n@if (label; as labelContent) {\n <label [attr.for]=\"labelId\"\n class=\"bb-select-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<ng-select [formControl]=\"control\"\n [notFoundText]=\"'select.not_found_text' | bbLocalize\"\n [clearAllText]=\"'select.clear_all_text' | bbLocalize\"\n [loadingText]=\"'select.loading_text' | bbLocalize\"\n [typeToSearchText]=\"'select.type_to_search_text' | bbLocalize\"\n [addTagText]=\"'select.add_tag_text' | bbLocalize\"\n [virtualScroll]=\"virtualScroll\"\n [items]=\"data | async\"\n [multiple]=\"multiple\"\n [loading]=\"loading\"\n [labelForId]=\"labelId\"\n [searchable]=\"searchable\"\n [placeholder]=\"placeholder\"\n [clearable]=\"clearable\"\n [closeOnSelect]=\"closeOnSelect\"\n [trackByFn]=\"trackByFn\"\n [typeahead]=\"typeahead\"\n [bindLabel]=\"bindLabel\"\n [bindValue]=\"bindValue\"\n [selectableGroup]=\"selectableGroup\"\n [selectableGroupAsModel]=\"selectableGroupAsModel\"\n [clearSearchOnAdd]=\"clearSearchOnAdd\"\n [groupBy]=\"groupBy\"\n [isOpen]=\"isOpen\"\n [addTag]=\"addTag\"\n [inputAttrs]=\"{autocorrect: 'off', autocapitalize: 'none', spellcheck: 'false', autocomplete: 'off'}\"\n [appendTo]=\"appendTo\"\n (blur)=\"onBlur?.emit($event)\"\n (change)=\"onChange?.emit($event)\">\n @if (optionTemplate) {\n <ng-template ng-option-tmp\n let-item=\"item\"\n let-item$=\"item$\"\n let-index=\"index\">\n <ng-container\n *ngTemplateOutlet=\"optionTemplate; context: {item: item, item$: item$, index: index}\"></ng-container>\n </ng-template>\n }\n @if (labelTemplate) {\n <ng-template ng-label-tmp\n let-item=\"item\"\n let-item$=\"item$\"\n let-index=\"index\">\n <ng-container\n *ngTemplateOutlet=\"labelTemplate; context: {item: item, item$: item$, index: index}\"></ng-container>\n </ng-template>\n }\n @if (optionGroupTemplate) {\n <ng-template ng-optgroup-tmp\n let-item=\"item\"\n let-item$=\"item$\"\n let-index=\"index\">\n <ng-container\n *ngTemplateOutlet=\"optionGroupTemplate; context: {item: item, item$: item$, index: index}\"></ng-container>\n </ng-template>\n }\n</ng-select>\n\n@if (!hideErrors) {\n <bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n}\n\n<!-- The form control hint. -->\n@if (hint; as hintContent) {\n <p class=\"bb-select-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n","import {BbSelectOptionGroup} from './select-option-group.directive';\nimport {BbSelectOption} from './select-option.directive';\nimport {BbSelectLabel} from './select-label.directive';\nimport {BbSelect} from './select/select.component';\nimport {NgModule} from '@angular/core';\n\n@NgModule({\n imports: [\n BbSelect,\n BbSelectLabel,\n BbSelectOption,\n BbSelectOptionGroup\n ],\n exports: [\n BbSelect,\n BbSelectLabel,\n BbSelectOption,\n BbSelectOptionGroup\n ]\n})\nexport class SelectModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -31,10 +31,7 @@ class PolyfillStorage {
|
|
|
31
31
|
}
|
|
32
32
|
catch (error) {
|
|
33
33
|
return error instanceof DOMException
|
|
34
|
-
&& (error.
|
|
35
|
-
error.code === 1014 ||
|
|
36
|
-
error.name === 'QuotaExceededError' ||
|
|
37
|
-
error.name === 'NS_ERROR_DOM_QUOTA_REACHED')
|
|
34
|
+
&& (error.name === 'QuotaExceededError' || error.name === 'NS_ERROR_DOM_QUOTA_REACHED')
|
|
38
35
|
&& (this._storage && this._storage.length !== 0);
|
|
39
36
|
}
|
|
40
37
|
};
|
|
@@ -390,10 +387,10 @@ class Storage {
|
|
|
390
387
|
}
|
|
391
388
|
return this._strategies.memory;
|
|
392
389
|
}
|
|
393
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.
|
|
394
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.
|
|
390
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: Storage, deps: [{ token: i1.Platform }, { token: COOKIE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
391
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: Storage, providedIn: 'root' }); }
|
|
395
392
|
}
|
|
396
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.
|
|
393
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: Storage, decorators: [{
|
|
397
394
|
type: Injectable,
|
|
398
395
|
args: [{
|
|
399
396
|
providedIn: 'root'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bravobit-bb-foundation-storage.mjs","sources":["../../../projects/bb-foundation/storage/src/lib/strategies/polyfill-storage.strategy.ts","../../../projects/bb-foundation/storage/src/lib/strategies/cookie-storage.strategy.ts","../../../projects/bb-foundation/storage/src/lib/strategies/memory-storage.strategy.ts","../../../projects/bb-foundation/storage/src/lib/storage.service.ts","../../../projects/bb-foundation/storage/src/bravobit-bb-foundation-storage.ts"],"sourcesContent":["import {PolyfillStorageAttributes} from '../interfaces/attributes.interface';\nimport {StorageStrategy} from '../interfaces/strategy.interface';\n\nexport class PolyfillStorage implements StorageStrategy {\n\n // State.\n private readonly _isSupported: boolean = false;\n\n constructor(private _storage?: Storage) {\n // Check if the storage is supported.\n this._isSupported = this.testIfSupported();\n }\n\n get<T = any>(token: string) {\n // Validate that the storage is supported.\n if (!this._isSupported) {\n return undefined;\n }\n\n return this.decode<T>(token);\n }\n\n set<T = any>(token: string, value: T, attributes?: PolyfillStorageAttributes) {\n // Validate that the storage is supported.\n if (!this._isSupported) {\n return;\n }\n\n // Stringify the data.\n const rawData = this.encode<T>(value, {...attributes});\n\n // Set the raw data in the storage.\n this._storage.setItem(token, rawData);\n }\n\n remove(token: string) {\n // Validate that the storage is supported.\n if (!this._isSupported) {\n return;\n }\n\n // Remove the item in the storage.\n this._storage.removeItem(token);\n }\n\n clear() {\n // Validate that the storage is supported.\n if (!this._isSupported) {\n return;\n }\n\n // Clear the storage.\n this._storage.clear();\n }\n\n isSupported() {\n return this._isSupported;\n }\n\n private decode<T>(token: string) {\n // Retrieve the raw data from the storage.\n const rawData = this._storage.getItem(token);\n\n // Try to parse the data.\n let parsedData: T | undefined = undefined;\n\n // Only parse the data when it is not null.\n if (rawData !== null) {\n try {\n const {value, expires} = JSON.parse(rawData);\n\n if (expires !== undefined) {\n const now = Date.now();\n const expireDate = new Date(expires).getTime();\n\n if (expireDate <= now) {\n this.remove(token);\n return undefined;\n }\n }\n\n parsedData = value;\n } catch {\n // We dont do anything with failed parsing.\n }\n }\n\n // Return the parsed data.\n return parsedData;\n }\n\n private encode = <T>(value: T, attributes: PolyfillStorageAttributes) => {\n // Make sure the expires attribute is a date and not a number.\n const data = {value};\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(attributes.expires);\n }\n\n if (attributes.expires) {\n data['expires'] = attributes.expires;\n }\n\n return JSON.stringify(data);\n };\n\n private testIfSupported = () => {\n if (typeof this._storage === 'undefined') {\n return false;\n }\n\n try {\n const x = '__storage_test__';\n this._storage.setItem(x, x);\n this._storage.removeItem(x);\n return true;\n } catch (error) {\n return error instanceof DOMException\n && (\n error.code === 22 ||\n error.code === 1014 ||\n error.name === 'QuotaExceededError' ||\n error.name === 'NS_ERROR_DOM_QUOTA_REACHED'\n )\n && (this._storage && this._storage.length !== 0);\n }\n };\n\n}\n","import {CookieStorageAttributes} from '../interfaces/attributes.interface';\nimport {StorageStrategy} from '../interfaces/strategy.interface';\n\nexport class CookieStorage implements StorageStrategy {\n\n // State.\n private readonly _isSupported: boolean = false;\n\n constructor(private _isBrowser: boolean,\n private _cookieString?: string) {\n // Check if the storage is supported.\n this._isSupported = this.testIfSupported();\n }\n\n get<T = any>(token: string) {\n // Get all values and pick one out.\n const values = this.all();\n return values?.[token] as T;\n }\n\n set<T = any>(token: string, value: T, attributes?: CookieStorageAttributes) {\n // Validate that the storage is supported.\n if (!this._isSupported) {\n return;\n }\n\n // Write a new cookie.\n document.cookie = this.encode(token, value, {path: '/', sameSite: 'Lax', ...attributes});\n }\n\n remove(token: string, attributes?: CookieStorageAttributes) {\n // Validate that the storage is supported.\n if (!this._isSupported) {\n return;\n }\n\n this.set(token, '', {...attributes, expires: -1});\n }\n\n clear(attributes?: CookieStorageAttributes) {\n // Validate that the storage is supported.\n if (!this._isSupported) {\n return;\n }\n\n const items = this.all();\n\n for (const token in items) {\n this.remove(token, attributes);\n }\n }\n\n isSupported() {\n return this._isSupported;\n }\n\n private all() {\n const cookieString = this._isBrowser\n ? document?.cookie\n : this._cookieString;\n\n return this.decode(cookieString);\n }\n\n private encode(token: string, value: any, attributes: CookieStorageAttributes) {\n // Encode the token.\n const encodedToken = encodeURIComponent(token)\n .replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n .replace(/\\(/g, '%28').replace(/\\)/g, '%29');\n\n const rawValue = JSON.stringify(value);\n\n // Encode the value.\n const encodedValue = encodeURIComponent(rawValue)\n .replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n // Return the completed encoded string.\n return [encodedToken, '=', encodedValue, this.stringifyCookie(attributes)].join('');\n }\n\n private decode = (cookieString: string) => {\n const result: { [token: string]: any } = {};\n const cookies = cookieString ? cookieString.split('; ') : [];\n const rdecode = /(%[0-9A-Z]{2})+/g;\n\n for (let index = 0; index < cookies.length; index++) {\n const parts = cookies[index].split('=');\n let cookie = parts.slice(1).join('=');\n\n if (cookie.charAt(0) === '\"') {\n cookie = cookie.slice(1, -1);\n }\n\n try {\n const name = parts[0].replace(rdecode, decodeURIComponent);\n const value = cookie.replace(rdecode, decodeURIComponent);\n result[name] = this.jsonParse(value);\n } catch {\n // Ignore cookies with an invalid name/value encoding.\n }\n }\n\n return result;\n };\n\n private jsonParse = <T = any>(rawValue: string) => {\n // Try to parse the data.\n let parsedValue: T | undefined = undefined;\n\n // Only parse the value when it is not null.\n if (rawValue !== undefined) {\n try {\n parsedValue = JSON.parse(rawValue);\n } catch {\n // The string could not be parsed to JSON.\n }\n }\n\n // Return the parsed value.\n return parsedValue;\n };\n\n private stringifyCookie(attributes: CookieStorageAttributes) {\n // Make sure the expires attribute is a date and not a number.\n if (typeof attributes.expires === 'number') {\n const expires = new Date();\n expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5);\n attributes.expires = expires;\n }\n\n // Force secure when sameSite=None.\n if (attributes.sameSite === 'None') {\n attributes.secure = true;\n console?.warn?.('Cooke was forced with secure flag because sameSite=None');\n }\n\n // Stringify all attributes.\n return this.stringifyAttribute('Expires', attributes.expires ? attributes.expires.toUTCString() : '')\n + this.stringifyAttribute('Domain', attributes.domain)\n + this.stringifyAttribute('Path', attributes.path)\n + this.stringifyAttribute('Secure', attributes.secure)\n + this.stringifyAttribute('SameSite', attributes.sameSite);\n }\n\n private stringifyAttribute = (token: string, value: string | boolean | undefined) => {\n if (!value) {\n return '';\n }\n\n const stringified = `; ${token}`;\n\n // Boolean attributes should not have a value.\n if (value === true) {\n return stringified;\n }\n\n return stringified + `= ${value}`;\n };\n\n private testIfSupported = () => {\n // We are using an aggressive test here, because we cannot rely on navigator.cookieEnabled\n // it does not return the correct value at all times.\n const testCookieString = `bbcookietest`;\n try {\n document.cookie = `${testCookieString}=1`;\n const result = document.cookie.indexOf(`${testCookieString}=`) !== -1;\n document.cookie = `${testCookieString}=1; expires=Thu, 01-Jan-1970 00:00:01 GMT`;\n return result;\n } catch {\n return false;\n }\n };\n\n}\n","import {MemoryStorageAttributes} from '../interfaces/attributes.interface';\nimport {MemoryStorageData} from '../interfaces/memory.interface';\nimport {StorageStrategy} from '../interfaces/strategy.interface';\n\nexport class MemoryStorage implements StorageStrategy {\n\n // State.\n private _storage: MemoryStorageData = {};\n\n get<T = any>(token: string): T {\n // Grab the data from the memory storage.\n const result = this._storage[token];\n\n // Validate the data exists.\n if (result === undefined) {\n return undefined;\n }\n\n // Extract the value and expire date.\n const {value, expires} = result;\n\n // Validate the value is still valid.\n if (expires !== undefined) {\n const now = Date.now();\n const expireDate = new Date(expires).getTime();\n\n // Remove the value if it is expired.\n if (expireDate <= now) {\n this.remove(token);\n return undefined;\n }\n }\n\n // Return the value.\n return value;\n }\n\n set<T = any>(token: string, value: T, attributes?: MemoryStorageAttributes) {\n // Save the encoded value with the attributes.\n this._storage[token] = this.encode<T>(value, {...attributes});\n }\n\n remove(token: string) {\n delete this._storage[token];\n }\n\n clear() {\n this._storage = {};\n }\n\n isSupported() {\n // The memory storage is always supported.\n return true;\n }\n\n private encode = <T>(value: T, attributes: MemoryStorageAttributes) => {\n const data = {value};\n\n // Make sure the expires is a date object.\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(attributes.expires);\n }\n\n // Add the expire date if it was set.\n if (attributes.expires) {\n data['expires'] = attributes.expires;\n }\n\n // Return the encoded data.\n return data;\n };\n\n}\n","import {StorageOption, StorageStrategy} from './interfaces/strategy.interface';\nimport {PolyfillStorage} from './strategies/polyfill-storage.strategy';\nimport {StorageAttributes} from './interfaces/attributes.interface';\nimport {CookieStorage} from './strategies/cookie-storage.strategy';\nimport {MemoryStorage} from './strategies/memory-storage.strategy';\nimport {Inject, Injectable, Optional} from '@angular/core';\nimport {Platform} from '@angular/cdk/platform';\nimport {COOKIE} from '@bravobit/bb-foundation';\n\ndeclare let ngDevMode;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Storage implements StorageStrategy {\n\n // All available strategies (sorted best to last).\n private readonly _strategies: { [key in `${StorageOption}`]: StorageStrategy };\n\n // Current selected storage strategy.\n private readonly _current: StorageStrategy | null = null;\n\n constructor(private _platform: Platform,\n @Optional() @Inject(COOKIE) private _cookieString?: string) {\n this._strategies = {\n [StorageOption.Local]: new PolyfillStorage(this.getLocalStorage()),\n [StorageOption.Cookie]: new CookieStorage(this._platform.isBrowser, this._cookieString),\n [StorageOption.Session]: new PolyfillStorage(this.getSessionStorage()),\n [StorageOption.Memory]: new MemoryStorage()\n };\n\n this._current = this.findBestStorageStrategy();\n }\n\n select(option: StorageOption | StorageOption[]) {\n const items = Array.isArray(option) ? option : [option];\n for (const item of items) {\n const strategy = this._strategies?.[item] ?? null;\n if (strategy && strategy.isSupported()) {\n return strategy;\n }\n }\n\n if (this._platform.isBrowser && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n console?.warn?.('[Storage]: Could not select proper storage option, using memory fallback.');\n }\n\n // Always return as a fallback the memory storage since it should be always available.\n return this._strategies.memory;\n }\n\n get local() {\n return this._strategies.local;\n }\n\n get cookie() {\n return this._strategies.cookie;\n }\n\n get session() {\n return this._strategies.session;\n }\n\n get memory() {\n return this._strategies.memory;\n }\n\n get<T = any>(token: string): T {\n return this._current.get(token);\n }\n\n set<T = any>(token: string, value: T, attributes?: StorageAttributes) {\n this._current.set<T>(token, value, attributes);\n }\n\n remove(token: string, attributes?: StorageAttributes) {\n this._current.remove(token, attributes);\n }\n\n clear(attributes?: StorageAttributes) {\n this._current.clear(attributes);\n }\n\n isSupported() {\n return !!this._current;\n }\n\n private findBestStorageStrategy() {\n // Loop through all available strategies to find the best.\n for (const type in this._strategies) {\n const strategy = this._strategies?.[type];\n\n // The first supported strategy is the best.\n if (strategy?.isSupported()) {\n return strategy;\n }\n }\n\n // If no strategy was returned we fallback to memory\n // storage since it should be available always.\n if (this._platform.isBrowser && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n console?.warn?.('[Storage]: Could not select proper storage option, using memory fallback.');\n }\n\n return this._strategies.memory;\n }\n\n private getLocalStorage = () => {\n try {\n return (typeof window !== 'undefined') ? window?.localStorage : null;\n } catch {\n return null;\n }\n };\n\n private getSessionStorage = () => {\n try {\n return (typeof window !== 'undefined') ? window?.sessionStorage : null;\n } catch {\n return null;\n }\n };\n\n}\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":"bravobit-bb-foundation-storage.mjs","sources":["../../../projects/bb-foundation/storage/src/lib/strategies/polyfill-storage.strategy.ts","../../../projects/bb-foundation/storage/src/lib/strategies/cookie-storage.strategy.ts","../../../projects/bb-foundation/storage/src/lib/strategies/memory-storage.strategy.ts","../../../projects/bb-foundation/storage/src/lib/storage.service.ts","../../../projects/bb-foundation/storage/src/bravobit-bb-foundation-storage.ts"],"sourcesContent":["import {PolyfillStorageAttributes} from '../interfaces/attributes.interface';\nimport {StorageStrategy} from '../interfaces/strategy.interface';\n\nexport class PolyfillStorage implements StorageStrategy {\n\n // State.\n private readonly _isSupported: boolean = false;\n\n constructor(private _storage?: Storage) {\n // Check if the storage is supported.\n this._isSupported = this.testIfSupported();\n }\n\n get<T = any>(token: string) {\n // Validate that the storage is supported.\n if (!this._isSupported) {\n return undefined;\n }\n\n return this.decode<T>(token);\n }\n\n set<T = any>(token: string, value: T, attributes?: PolyfillStorageAttributes) {\n // Validate that the storage is supported.\n if (!this._isSupported) {\n return;\n }\n\n // Stringify the data.\n const rawData = this.encode<T>(value, {...attributes});\n\n // Set the raw data in the storage.\n this._storage.setItem(token, rawData);\n }\n\n remove(token: string) {\n // Validate that the storage is supported.\n if (!this._isSupported) {\n return;\n }\n\n // Remove the item in the storage.\n this._storage.removeItem(token);\n }\n\n clear() {\n // Validate that the storage is supported.\n if (!this._isSupported) {\n return;\n }\n\n // Clear the storage.\n this._storage.clear();\n }\n\n isSupported() {\n return this._isSupported;\n }\n\n private decode<T>(token: string) {\n // Retrieve the raw data from the storage.\n const rawData = this._storage.getItem(token);\n\n // Try to parse the data.\n let parsedData: T | undefined = undefined;\n\n // Only parse the data when it is not null.\n if (rawData !== null) {\n try {\n const {value, expires} = JSON.parse(rawData);\n\n if (expires !== undefined) {\n const now = Date.now();\n const expireDate = new Date(expires).getTime();\n\n if (expireDate <= now) {\n this.remove(token);\n return undefined;\n }\n }\n\n parsedData = value;\n } catch {\n // We dont do anything with failed parsing.\n }\n }\n\n // Return the parsed data.\n return parsedData;\n }\n\n private encode = <T>(value: T, attributes: PolyfillStorageAttributes) => {\n // Make sure the expires attribute is a date and not a number.\n const data = {value};\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(attributes.expires);\n }\n\n if (attributes.expires) {\n data['expires'] = attributes.expires;\n }\n\n return JSON.stringify(data);\n };\n\n private testIfSupported = () => {\n if (typeof this._storage === 'undefined') {\n return false;\n }\n\n try {\n const x = '__storage_test__';\n this._storage.setItem(x, x);\n this._storage.removeItem(x);\n return true;\n } catch (error) {\n return error instanceof DOMException\n && (error.name === 'QuotaExceededError' || error.name === 'NS_ERROR_DOM_QUOTA_REACHED')\n && (this._storage && this._storage.length !== 0);\n }\n };\n\n}\n","import {CookieStorageAttributes} from '../interfaces/attributes.interface';\nimport {StorageStrategy} from '../interfaces/strategy.interface';\n\nexport class CookieStorage implements StorageStrategy {\n\n // State.\n private readonly _isSupported: boolean = false;\n\n constructor(private _isBrowser: boolean,\n private _cookieString?: string) {\n // Check if the storage is supported.\n this._isSupported = this.testIfSupported();\n }\n\n get<T = any>(token: string) {\n // Get all values and pick one out.\n const values = this.all();\n return values?.[token] as T;\n }\n\n set<T = any>(token: string, value: T, attributes?: CookieStorageAttributes) {\n // Validate that the storage is supported.\n if (!this._isSupported) {\n return;\n }\n\n // Write a new cookie.\n document.cookie = this.encode(token, value, {path: '/', sameSite: 'Lax', ...attributes});\n }\n\n remove(token: string, attributes?: CookieStorageAttributes) {\n // Validate that the storage is supported.\n if (!this._isSupported) {\n return;\n }\n\n this.set(token, '', {...attributes, expires: -1});\n }\n\n clear(attributes?: CookieStorageAttributes) {\n // Validate that the storage is supported.\n if (!this._isSupported) {\n return;\n }\n\n const items = this.all();\n\n for (const token in items) {\n this.remove(token, attributes);\n }\n }\n\n isSupported() {\n return this._isSupported;\n }\n\n private all() {\n const cookieString = this._isBrowser\n ? document?.cookie\n : this._cookieString;\n\n return this.decode(cookieString);\n }\n\n private encode(token: string, value: any, attributes: CookieStorageAttributes) {\n // Encode the token.\n const encodedToken = encodeURIComponent(token)\n .replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n .replace(/\\(/g, '%28').replace(/\\)/g, '%29');\n\n const rawValue = JSON.stringify(value);\n\n // Encode the value.\n const encodedValue = encodeURIComponent(rawValue)\n .replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n // Return the completed encoded string.\n return [encodedToken, '=', encodedValue, this.stringifyCookie(attributes)].join('');\n }\n\n private decode = (cookieString: string) => {\n const result: { [token: string]: any } = {};\n const cookies = cookieString ? cookieString.split('; ') : [];\n const rdecode = /(%[0-9A-Z]{2})+/g;\n\n for (let index = 0; index < cookies.length; index++) {\n const parts = cookies[index].split('=');\n let cookie = parts.slice(1).join('=');\n\n if (cookie.charAt(0) === '\"') {\n cookie = cookie.slice(1, -1);\n }\n\n try {\n const name = parts[0].replace(rdecode, decodeURIComponent);\n const value = cookie.replace(rdecode, decodeURIComponent);\n result[name] = this.jsonParse(value);\n } catch {\n // Ignore cookies with an invalid name/value encoding.\n }\n }\n\n return result;\n };\n\n private jsonParse = <T = any>(rawValue: string) => {\n // Try to parse the data.\n let parsedValue: T | undefined = undefined;\n\n // Only parse the value when it is not null.\n if (rawValue !== undefined) {\n try {\n parsedValue = JSON.parse(rawValue);\n } catch {\n // The string could not be parsed to JSON.\n }\n }\n\n // Return the parsed value.\n return parsedValue;\n };\n\n private stringifyCookie(attributes: CookieStorageAttributes) {\n // Make sure the expires attribute is a date and not a number.\n if (typeof attributes.expires === 'number') {\n const expires = new Date();\n expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5);\n attributes.expires = expires;\n }\n\n // Force secure when sameSite=None.\n if (attributes.sameSite === 'None') {\n attributes.secure = true;\n console?.warn?.('Cooke was forced with secure flag because sameSite=None');\n }\n\n // Stringify all attributes.\n return this.stringifyAttribute('Expires', attributes.expires ? attributes.expires.toUTCString() : '')\n + this.stringifyAttribute('Domain', attributes.domain)\n + this.stringifyAttribute('Path', attributes.path)\n + this.stringifyAttribute('Secure', attributes.secure)\n + this.stringifyAttribute('SameSite', attributes.sameSite);\n }\n\n private stringifyAttribute = (token: string, value: string | boolean | undefined) => {\n if (!value) {\n return '';\n }\n\n const stringified = `; ${token}`;\n\n // Boolean attributes should not have a value.\n if (value === true) {\n return stringified;\n }\n\n return stringified + `= ${value}`;\n };\n\n private testIfSupported = () => {\n // We are using an aggressive test here, because we cannot rely on navigator.cookieEnabled\n // it does not return the correct value at all times.\n const testCookieString = `bbcookietest`;\n try {\n document.cookie = `${testCookieString}=1`;\n const result = document.cookie.indexOf(`${testCookieString}=`) !== -1;\n document.cookie = `${testCookieString}=1; expires=Thu, 01-Jan-1970 00:00:01 GMT`;\n return result;\n } catch {\n return false;\n }\n };\n\n}\n","import {MemoryStorageAttributes} from '../interfaces/attributes.interface';\nimport {MemoryStorageData} from '../interfaces/memory.interface';\nimport {StorageStrategy} from '../interfaces/strategy.interface';\n\nexport class MemoryStorage implements StorageStrategy {\n\n // State.\n private _storage: MemoryStorageData = {};\n\n get<T = any>(token: string): T {\n // Grab the data from the memory storage.\n const result = this._storage[token];\n\n // Validate the data exists.\n if (result === undefined) {\n return undefined;\n }\n\n // Extract the value and expire date.\n const {value, expires} = result;\n\n // Validate the value is still valid.\n if (expires !== undefined) {\n const now = Date.now();\n const expireDate = new Date(expires).getTime();\n\n // Remove the value if it is expired.\n if (expireDate <= now) {\n this.remove(token);\n return undefined;\n }\n }\n\n // Return the value.\n return value;\n }\n\n set<T = any>(token: string, value: T, attributes?: MemoryStorageAttributes) {\n // Save the encoded value with the attributes.\n this._storage[token] = this.encode<T>(value, {...attributes});\n }\n\n remove(token: string) {\n delete this._storage[token];\n }\n\n clear() {\n this._storage = {};\n }\n\n isSupported() {\n // The memory storage is always supported.\n return true;\n }\n\n private encode = <T>(value: T, attributes: MemoryStorageAttributes) => {\n const data = {value};\n\n // Make sure the expires is a date object.\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(attributes.expires);\n }\n\n // Add the expire date if it was set.\n if (attributes.expires) {\n data['expires'] = attributes.expires;\n }\n\n // Return the encoded data.\n return data;\n };\n\n}\n","import {StorageOption, StorageStrategy} from './interfaces/strategy.interface';\nimport {PolyfillStorage} from './strategies/polyfill-storage.strategy';\nimport {StorageAttributes} from './interfaces/attributes.interface';\nimport {CookieStorage} from './strategies/cookie-storage.strategy';\nimport {MemoryStorage} from './strategies/memory-storage.strategy';\nimport {Inject, Injectable, Optional} from '@angular/core';\nimport {Platform} from '@angular/cdk/platform';\nimport {COOKIE} from '@bravobit/bb-foundation';\n\ndeclare let ngDevMode;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Storage implements StorageStrategy {\n\n // All available strategies (sorted best to last).\n private readonly _strategies: { [key in `${StorageOption}`]: StorageStrategy };\n\n // Current selected storage strategy.\n private readonly _current: StorageStrategy | null = null;\n\n constructor(private _platform: Platform,\n @Optional() @Inject(COOKIE) private _cookieString?: string) {\n this._strategies = {\n [StorageOption.Local]: new PolyfillStorage(this.getLocalStorage()),\n [StorageOption.Cookie]: new CookieStorage(this._platform.isBrowser, this._cookieString),\n [StorageOption.Session]: new PolyfillStorage(this.getSessionStorage()),\n [StorageOption.Memory]: new MemoryStorage()\n };\n\n this._current = this.findBestStorageStrategy();\n }\n\n select(option: StorageOption | StorageOption[]) {\n const items = Array.isArray(option) ? option : [option];\n for (const item of items) {\n const strategy = this._strategies?.[item] ?? null;\n if (strategy && strategy.isSupported()) {\n return strategy;\n }\n }\n\n if (this._platform.isBrowser && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n console?.warn?.('[Storage]: Could not select proper storage option, using memory fallback.');\n }\n\n // Always return as a fallback the memory storage since it should be always available.\n return this._strategies.memory;\n }\n\n get local() {\n return this._strategies.local;\n }\n\n get cookie() {\n return this._strategies.cookie;\n }\n\n get session() {\n return this._strategies.session;\n }\n\n get memory() {\n return this._strategies.memory;\n }\n\n get<T = any>(token: string): T {\n return this._current.get(token);\n }\n\n set<T = any>(token: string, value: T, attributes?: StorageAttributes) {\n this._current.set<T>(token, value, attributes);\n }\n\n remove(token: string, attributes?: StorageAttributes) {\n this._current.remove(token, attributes);\n }\n\n clear(attributes?: StorageAttributes) {\n this._current.clear(attributes);\n }\n\n isSupported() {\n return !!this._current;\n }\n\n private findBestStorageStrategy() {\n // Loop through all available strategies to find the best.\n for (const type in this._strategies) {\n const strategy = this._strategies?.[type];\n\n // The first supported strategy is the best.\n if (strategy?.isSupported()) {\n return strategy;\n }\n }\n\n // If no strategy was returned we fallback to memory\n // storage since it should be available always.\n if (this._platform.isBrowser && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n console?.warn?.('[Storage]: Could not select proper storage option, using memory fallback.');\n }\n\n return this._strategies.memory;\n }\n\n private getLocalStorage = () => {\n try {\n return (typeof window !== 'undefined') ? window?.localStorage : null;\n } catch {\n return null;\n }\n };\n\n private getSessionStorage = () => {\n try {\n return (typeof window !== 'undefined') ? window?.sessionStorage : null;\n } catch {\n return null;\n }\n };\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;MAGa,eAAe,CAAA;AAKxB,IAAA,WAAA,CAAoB,QAAkB,EAAA;QAAlB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;;QAFrB,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;AAqFvC,QAAA,IAAA,CAAA,MAAM,GAAG,CAAI,KAAQ,EAAE,UAAqC,KAAI;;AAEpE,YAAA,MAAM,IAAI,GAAG,EAAC,KAAK,EAAC,CAAC;AAErB,YAAA,IAAI,OAAO,UAAU,CAAC,OAAO,KAAK,QAAQ,EAAE;gBACxC,UAAU,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;aACrD;AAED,YAAA,IAAI,UAAU,CAAC,OAAO,EAAE;AACpB,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC;aACxC;AAED,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAChC,SAAC,CAAC;QAEM,IAAe,CAAA,eAAA,GAAG,MAAK;AAC3B,YAAA,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,WAAW,EAAE;AACtC,gBAAA,OAAO,KAAK,CAAC;aAChB;AAED,YAAA,IAAI;gBACA,MAAM,CAAC,GAAG,kBAAkB,CAAC;gBAC7B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5B,gBAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC5B,gBAAA,OAAO,IAAI,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACZ,OAAO,KAAK,YAAY,YAAY;wBAC5B,KAAK,CAAC,IAAI,KAAK,oBAAoB,IAAI,KAAK,CAAC,IAAI,KAAK,4BAA4B,CAAC;AACpF,wBAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;aACxD;AACL,SAAC,CAAC;;AA/GE,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;KAC9C;AAED,IAAA,GAAG,CAAU,KAAa,EAAA;;AAEtB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACpB,YAAA,OAAO,SAAS,CAAC;SACpB;AAED,QAAA,OAAO,IAAI,CAAC,MAAM,CAAI,KAAK,CAAC,CAAC;KAChC;AAED,IAAA,GAAG,CAAU,KAAa,EAAE,KAAQ,EAAE,UAAsC,EAAA;;AAExE,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,OAAO;SACV;;AAGD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAI,KAAK,EAAE,EAAC,GAAG,UAAU,EAAC,CAAC,CAAC;;QAGvD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;KACzC;AAED,IAAA,MAAM,CAAC,KAAa,EAAA;;AAEhB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,OAAO;SACV;;AAGD,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KACnC;IAED,KAAK,GAAA;;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,OAAO;SACV;;AAGD,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;KACzB;IAED,WAAW,GAAA;QACP,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAEO,IAAA,MAAM,CAAI,KAAa,EAAA;;QAE3B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;;QAG7C,IAAI,UAAU,GAAkB,SAAS,CAAC;;AAG1C,QAAA,IAAI,OAAO,KAAK,IAAI,EAAE;AAClB,YAAA,IAAI;AACA,gBAAA,MAAM,EAAC,KAAK,EAAE,OAAO,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAE7C,gBAAA,IAAI,OAAO,KAAK,SAAS,EAAE;AACvB,oBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBACvB,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;AAE/C,oBAAA,IAAI,UAAU,IAAI,GAAG,EAAE;AACnB,wBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,wBAAA,OAAO,SAAS,CAAC;qBACpB;iBACJ;gBAED,UAAU,GAAG,KAAK,CAAC;aACtB;AAAC,YAAA,MAAM;;aAEP;SACJ;;AAGD,QAAA,OAAO,UAAU,CAAC;KACrB;AAkCJ;;MCxHY,aAAa,CAAA;IAKtB,WAAoB,CAAA,UAAmB,EACnB,aAAsB,EAAA;QADtB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAS;QACnB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAS;;QAHzB,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;AA0EvC,QAAA,IAAA,CAAA,MAAM,GAAG,CAAC,YAAoB,KAAI;YACtC,MAAM,MAAM,GAA6B,EAAE,CAAC;AAC5C,YAAA,MAAM,OAAO,GAAG,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7D,MAAM,OAAO,GAAG,kBAAkB,CAAC;AAEnC,YAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACjD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACxC,gBAAA,IAAI,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAEtC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;oBAC1B,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;iBAChC;AAED,gBAAA,IAAI;AACA,oBAAA,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;oBAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;oBAC1D,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;iBACxC;AAAC,gBAAA,MAAM;;iBAEP;aACJ;AAED,YAAA,OAAO,MAAM,CAAC;AAClB,SAAC,CAAC;AAEM,QAAA,IAAA,CAAA,SAAS,GAAG,CAAU,QAAgB,KAAI;;YAE9C,IAAI,WAAW,GAAkB,SAAS,CAAC;;AAG3C,YAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;AACxB,gBAAA,IAAI;AACA,oBAAA,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;iBACtC;AAAC,gBAAA,MAAM;;iBAEP;aACJ;;AAGD,YAAA,OAAO,WAAW,CAAC;AACvB,SAAC,CAAC;AAwBM,QAAA,IAAA,CAAA,kBAAkB,GAAG,CAAC,KAAa,EAAE,KAAmC,KAAI;YAChF,IAAI,CAAC,KAAK,EAAE;AACR,gBAAA,OAAO,EAAE,CAAC;aACb;AAED,YAAA,MAAM,WAAW,GAAG,CAAK,EAAA,EAAA,KAAK,EAAE,CAAC;;AAGjC,YAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAChB,gBAAA,OAAO,WAAW,CAAC;aACtB;AAED,YAAA,OAAO,WAAW,GAAG,CAAK,EAAA,EAAA,KAAK,EAAE,CAAC;AACtC,SAAC,CAAC;QAEM,IAAe,CAAA,eAAA,GAAG,MAAK;;;YAG3B,MAAM,gBAAgB,GAAG,CAAA,YAAA,CAAc,CAAC;AACxC,YAAA,IAAI;AACA,gBAAA,QAAQ,CAAC,MAAM,GAAG,CAAG,EAAA,gBAAgB,IAAI,CAAC;AAC1C,gBAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA,EAAG,gBAAgB,CAAG,CAAA,CAAA,CAAC,KAAK,CAAC,CAAC,CAAC;AACtE,gBAAA,QAAQ,CAAC,MAAM,GAAG,CAAG,EAAA,gBAAgB,2CAA2C,CAAC;AACjF,gBAAA,OAAO,MAAM,CAAC;aACjB;AAAC,YAAA,MAAM;AACJ,gBAAA,OAAO,KAAK,CAAC;aAChB;AACL,SAAC,CAAC;;AAhKE,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;KAC9C;AAED,IAAA,GAAG,CAAU,KAAa,EAAA;;AAEtB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC1B,QAAA,OAAO,MAAM,GAAG,KAAK,CAAM,CAAC;KAC/B;AAED,IAAA,GAAG,CAAU,KAAa,EAAE,KAAQ,EAAE,UAAoC,EAAA;;AAEtE,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,OAAO;SACV;;QAGD,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,EAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,UAAU,EAAC,CAAC,CAAC;KAC5F;IAED,MAAM,CAAC,KAAa,EAAE,UAAoC,EAAA;;AAEtD,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,OAAO;SACV;AAED,QAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAC,GAAG,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC;KACrD;AAED,IAAA,KAAK,CAAC,UAAoC,EAAA;;AAEtC,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,OAAO;SACV;AAED,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAEzB,QAAA,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE;AACvB,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;SAClC;KACJ;IAED,WAAW,GAAA;QACP,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;IAEO,GAAG,GAAA;AACP,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU;cAC9B,QAAQ,EAAE,MAAM;AAClB,cAAE,IAAI,CAAC,aAAa,CAAC;AAEzB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;KACpC;AAEO,IAAA,MAAM,CAAC,KAAa,EAAE,KAAU,EAAE,UAAmC,EAAA;;AAEzE,QAAA,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC;AACzC,aAAA,OAAO,CAAC,0BAA0B,EAAE,kBAAkB,CAAC;AACvD,aAAA,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAEjD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;;AAGvC,QAAA,MAAM,YAAY,GAAG,kBAAkB,CAAC,QAAQ,CAAC;AAC5C,aAAA,OAAO,CAAC,2DAA2D,EAAE,kBAAkB,CAAC,CAAC;;AAG9F,QAAA,OAAO,CAAC,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACvF;AA4CO,IAAA,eAAe,CAAC,UAAmC,EAAA;;AAEvD,QAAA,IAAI,OAAO,UAAU,CAAC,OAAO,KAAK,QAAQ,EAAE;AACxC,YAAA,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;AAC3B,YAAA,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,UAAU,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC;AACjF,YAAA,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;SAChC;;AAGD,QAAA,IAAI,UAAU,CAAC,QAAQ,KAAK,MAAM,EAAE;AAChC,YAAA,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;AACzB,YAAA,OAAO,EAAE,IAAI,GAAG,yDAAyD,CAAC,CAAC;SAC9E;;QAGD,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,UAAU,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC;cAC/F,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC;cACpD,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC;cAChD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC;cACpD,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;KAClE;AA+BJ;;MCzKY,aAAa,CAAA;AAA1B,IAAA,WAAA,GAAA;;QAGY,IAAQ,CAAA,QAAA,GAAsB,EAAE,CAAC;AAgDjC,QAAA,IAAA,CAAA,MAAM,GAAG,CAAI,KAAQ,EAAE,UAAmC,KAAI;AAClE,YAAA,MAAM,IAAI,GAAG,EAAC,KAAK,EAAC,CAAC;;AAGrB,YAAA,IAAI,OAAO,UAAU,CAAC,OAAO,KAAK,QAAQ,EAAE;gBACxC,UAAU,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;aACrD;;AAGD,YAAA,IAAI,UAAU,CAAC,OAAO,EAAE;AACpB,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC;aACxC;;AAGD,YAAA,OAAO,IAAI,CAAC;AAChB,SAAC,CAAC;KAEL;AA/DG,IAAA,GAAG,CAAU,KAAa,EAAA;;QAEtB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;;AAGpC,QAAA,IAAI,MAAM,KAAK,SAAS,EAAE;AACtB,YAAA,OAAO,SAAS,CAAC;SACpB;;AAGD,QAAA,MAAM,EAAC,KAAK,EAAE,OAAO,EAAC,GAAG,MAAM,CAAC;;AAGhC,QAAA,IAAI,OAAO,KAAK,SAAS,EAAE;AACvB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;;AAG/C,YAAA,IAAI,UAAU,IAAI,GAAG,EAAE;AACnB,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,gBAAA,OAAO,SAAS,CAAC;aACpB;SACJ;;AAGD,QAAA,OAAO,KAAK,CAAC;KAChB;AAED,IAAA,GAAG,CAAU,KAAa,EAAE,KAAQ,EAAE,UAAoC,EAAA;;AAEtE,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAI,KAAK,EAAE,EAAC,GAAG,UAAU,EAAC,CAAC,CAAC;KACjE;AAED,IAAA,MAAM,CAAC,KAAa,EAAA;AAChB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAC/B;IAED,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;IAED,WAAW,GAAA;;AAEP,QAAA,OAAO,IAAI,CAAC;KACf;AAmBJ;;MC1DY,OAAO,CAAA;IAQhB,WAAoB,CAAA,SAAmB,EACS,aAAsB,EAAA;QADlD,IAAS,CAAA,SAAA,GAAT,SAAS,CAAU;QACS,IAAa,CAAA,aAAA,GAAb,aAAa,CAAS;;QAHrD,IAAQ,CAAA,QAAA,GAA2B,IAAI,CAAC;QAuFjD,IAAe,CAAA,eAAA,GAAG,MAAK;AAC3B,YAAA,IAAI;AACA,gBAAA,OAAO,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;aACxE;AAAC,YAAA,MAAM;AACJ,gBAAA,OAAO,IAAI,CAAC;aACf;AACL,SAAC,CAAC;QAEM,IAAiB,CAAA,iBAAA,GAAG,MAAK;AAC7B,YAAA,IAAI;AACA,gBAAA,OAAO,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;aAC1E;AAAC,YAAA,MAAM;AACJ,gBAAA,OAAO,IAAI,CAAC;aACf;AACL,SAAC,CAAC;QAjGE,IAAI,CAAC,WAAW,GAAG;YACf,CAAqB,OAAA,6BAAE,IAAI,eAAe,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;AAClE,YAAA,CAAA,QAAA,8BAAwB,IAAI,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC;YACvF,CAAuB,SAAA,+BAAE,IAAI,eAAe,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACtE,CAAsB,QAAA,8BAAE,IAAI,aAAa,EAAE;SAC9C,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAClD;AAED,IAAA,MAAM,CAAC,MAAuC,EAAA;AAC1C,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC;AACxD,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC;AAClD,YAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,WAAW,EAAE,EAAE;AACpC,gBAAA,OAAO,QAAQ,CAAC;aACnB;SACJ;AAED,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,EAAE;AAC7E,YAAA,OAAO,EAAE,IAAI,GAAG,2EAA2E,CAAC,CAAC;SAChG;;AAGD,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;KAClC;AAED,IAAA,IAAI,KAAK,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;KACjC;AAED,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;KAClC;AAED,IAAA,IAAI,OAAO,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;KACnC;AAED,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;KAClC;AAED,IAAA,GAAG,CAAU,KAAa,EAAA;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACnC;AAED,IAAA,GAAG,CAAU,KAAa,EAAE,KAAQ,EAAE,UAA8B,EAAA;QAChE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAI,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;KAClD;IAED,MAAM,CAAC,KAAa,EAAE,UAA8B,EAAA;QAChD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;KAC3C;AAED,IAAA,KAAK,CAAC,UAA8B,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;KACnC;IAED,WAAW,GAAA;AACP,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;KAC1B;IAEO,uBAAuB,GAAA;;AAE3B,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;;AAG1C,YAAA,IAAI,QAAQ,EAAE,WAAW,EAAE,EAAE;AACzB,gBAAA,OAAO,QAAQ,CAAC;aACnB;SACJ;;;AAID,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,EAAE;AAC7E,YAAA,OAAO,EAAE,IAAI,GAAG,2EAA2E,CAAC,CAAC;SAChG;AAED,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;KAClC;AA3FQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,OAAO,0CASgB,MAAM,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAT7B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,OAAO,cAFJ,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAET,OAAO,EAAA,UAAA,EAAA,CAAA;kBAHnB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;0BAUgB,QAAQ;;0BAAI,MAAM;2BAAC,MAAM,CAAA;;;ACvB1C;;AAEG;;;;"}
|