@bravobit/bb-foundation 0.33.0 → 0.40.0
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 +210 -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 +288 -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 +28 -33
- 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 +75 -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
|
@@ -1,43 +1,34 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, Input, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { BbFormError } from '../form-error/form-error.component';
|
|
3
|
+
import { BbTemplate } from '@bravobit/bb-foundation/utils';
|
|
3
4
|
import { NgControl } from '@angular/forms';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/common";
|
|
6
|
-
import * as i2 from "@bravobit/bb-foundation/utils";
|
|
7
|
-
import * as i3 from "../form-error/form-error.component";
|
|
8
6
|
let nextUniqueId = 0;
|
|
9
|
-
class
|
|
10
|
-
}
|
|
11
|
-
const BbFormControlMixinBase = mixinDisabled(mixinFocused(mixinReadonly(mixinGrouped(mixinRequired(mixinError(mixinHideErrors(BbFormControlBase)))))));
|
|
12
|
-
export class BbFormControl extends BbFormControlMixinBase {
|
|
7
|
+
export class BbFormControl {
|
|
13
8
|
constructor() {
|
|
14
|
-
|
|
9
|
+
// Readonly data.
|
|
10
|
+
this.labelId = `bb-form-control-${nextUniqueId++}`;
|
|
15
11
|
// Inputs.
|
|
16
12
|
this.label = null;
|
|
17
13
|
this.hint = null;
|
|
18
|
-
|
|
19
|
-
this.
|
|
20
|
-
//
|
|
21
|
-
this.
|
|
14
|
+
this.grouped = false;
|
|
15
|
+
this.hideErrors = false;
|
|
16
|
+
// State.
|
|
17
|
+
this.error = false;
|
|
22
18
|
}
|
|
23
19
|
onErrorChange(error) {
|
|
24
20
|
this.error = !!error;
|
|
25
21
|
}
|
|
26
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.
|
|
27
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
22
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbFormControl, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.5", type: BbFormControl, isStandalone: true, selector: "bb-form-control", inputs: { label: "label", hint: "hint", grouped: ["grouped", "grouped", booleanAttribute], hideErrors: ["hideErrors", "hideErrors", booleanAttribute] }, host: { properties: { "class.grouped": "grouped", "class.error": "error" }, classAttribute: "bb-form-control" }, queries: [{ propertyName: "ngControl", first: true, predicate: NgControl, descendants: true }], ngImport: i0, template: "<!-- Label of the form control. -->\n@if (label; as labelContent) {\n <label [attr.for]=\"labelId\"\n class=\"bb-form-control-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<!-- The input with the addons. -->\n<div class=\"bb-form-control-container\">\n <ng-content select=\"[bbPrefix]\"></ng-content>\n <ng-content select=\"[bbInput]\"></ng-content>\n <ng-content select=\"[bbSuffix]\"></ng-content>\n</div>\n\n<!-- The error component. -->\n@if (!hideErrors) {\n <bb-form-error [control]=\"ngControl\"\n (errorChange)=\"onErrorChange($event)\">\n </bb-form-error>\n}\n\n<!-- The form control hint. -->\n@if (hint; as hintContent) {\n <p class=\"bb-form-control-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n", styles: [".bb-form-control{color:#111;display:block}.bb-form-control>.bb-form-control-container>*.bb-prefix,.bb-form-control>.bb-form-control-container>*.bb-suffix{color:#b4b4b4;transition:color .3s cubic-bezier(0,0,.2,1)}.bb-form-control>.bb-form-control-container>*.bb-prefix{margin-left:.5rem}.bb-form-control>.bb-form-control-container>*.bb-suffix{margin-right:.5rem}.bb-form-control.grouped{margin-bottom:1.5rem}.bb-form-control.small{max-width:15rem}.bb-form-control.medium{max-width:30rem}.bb-form-control.large{max-width:45rem}.bb-form-control:has(input:required,textarea:required,select:required)>.bb-form-control-label:after{content:\"*\";font-size:.75rem;vertical-align:top;color:var(--bb-form-label-required-color)}.bb-form-control-container:has(input:not(:disabled):not(:read-only):focus,textarea:not(:disabled):not(:read-only):focus,select:not(:disabled):focus){border-color:#757e8a;box-shadow:0 .375rem .375rem -.375rem #0000001a,var(--bb-form-control-box-shadow)}.bb-form-control-container:has(input:not(:disabled):read-only,textarea:not(:disabled):read-only){cursor:default;border-style:dotted;border-color:#bdc4c9}.bb-form-control-container:has(input:disabled,textarea:disabled,select:disabled){cursor:default;pointer-events:none;color:gray;background-color:#e6e6e6}.bb-form-control.error>.bb-form-control-label{color:#c23934}.bb-form-control.error>.bb-form-control-hint{display:none}.bb-form-control.error>.bb-form-control-container>*.bb-prefix,.bb-form-control.error>.bb-form-control-container>.bb-suffix{color:#b51c1c}.bb-form-control.error>.bb-form-control-container>input::placeholder,.bb-form-control.error>.bb-form-control-container>textarea::placeholder{color:#ea7b7b}.bb-form-control.error>.bb-form-control-container,.bb-form-control.error>.bb-form-control-container:has(input:not(:disabled):not(:read-only):focus,textarea:not(:disabled):not(:read-only):focus,select:not(:disabled):focus){border:1px solid hsl(0,73%,30%);background-color:#f8d3d3;box-shadow:0 .375rem .375rem -.375rem #0000001a,0 0 0 .1875rem #f8d3d3}.bb-form-control-container:has(select):after{top:0;right:0;bottom:0;content:\"\";width:1.5rem;display:flex;height:2.5rem;min-width:1.5rem;position:absolute;pointer-events:none;background-repeat:no-repeat;background-size:.75rem .375rem;background-position:calc(100% - .5rem) center;background-image:url('data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 6\"%3E%3Cpath fill=\"%23D8D8D8\" fill-rule=\"evenodd\" d=\"m6 6 6-6H0z\"/%3E%3C/svg%3E')}.bb-form-control-container{width:100%;display:flex;color:#111;overflow:hidden;position:relative;align-items:center;border-radius:.5rem;background-color:#fff;transition-duration:.25s;border:1px solid hsl(213,8%,74%);transition-property:background-color,box-shadow;transition-timing-function:cubic-bezier(0,0,.2,1);box-shadow:0 .375rem .375rem -.375rem #0000001a}.bb-form-control-container>input::placeholder,.bb-form-control-container>textarea::placeholder{color:#d1d1d1;transition:color .3s cubic-bezier(0,0,.2,1)}.bb-form-control-container>input,.bb-form-control-container>textarea,.bb-form-control-container>select{margin:0;width:100%;border:none;color:inherit;font-size:1rem;appearance:none;background-color:transparent}.bb-form-control-container>input,.bb-form-control-container>select{height:2.5rem;padding:0 .5rem}.bb-form-control-container>select{padding-right:2rem}.bb-form-control-container>select>::-ms-expand{display:none}.bb-form-control-container>input::-ms-clear,.bb-form-control-container>input::-ms-reveal{width:0;height:0;display:none}.bb-form-control-container>input::-webkit-search-decoration,.bb-form-control-container>input::-webkit-search-cancel-button,.bb-form-control-container>input::-webkit-search-results-button,.bb-form-control-container>input::-webkit-search-results-decoration{display:none}.bb-form-control-container>textarea{resize:none;padding:.5rem}.bb-form-control-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-form-control-hint{display:block;line-height:1.5;margin-top:.25rem;font-size:.8125rem;color:#758795}\n"], dependencies: [{ kind: "directive", type: BbTemplate, selector: "[bbTemplate]", inputs: ["bbTemplate"] }, { kind: "component", type: BbFormError, selector: "bb-form-error", inputs: ["control"], outputs: ["errorChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
28
24
|
}
|
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbFormControl, decorators: [{
|
|
30
26
|
type: Component,
|
|
31
27
|
args: [{ selector: 'bb-form-control', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
32
28
|
'class': 'bb-form-control',
|
|
33
|
-
'[class.readonly]': 'readonly',
|
|
34
|
-
'[class.required]': 'required',
|
|
35
|
-
'[class.disabled]': 'disabled',
|
|
36
|
-
'[class.focused]': 'focused',
|
|
37
29
|
'[class.grouped]': 'grouped',
|
|
38
|
-
'[class.arrow]': 'arrow',
|
|
39
30
|
'[class.error]': 'error'
|
|
40
|
-
},
|
|
31
|
+
}, preserveWhitespaces: false, standalone: true, imports: [BbTemplate, BbFormError], template: "<!-- Label of the form control. -->\n@if (label; as labelContent) {\n <label [attr.for]=\"labelId\"\n class=\"bb-form-control-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<!-- The input with the addons. -->\n<div class=\"bb-form-control-container\">\n <ng-content select=\"[bbPrefix]\"></ng-content>\n <ng-content select=\"[bbInput]\"></ng-content>\n <ng-content select=\"[bbSuffix]\"></ng-content>\n</div>\n\n<!-- The error component. -->\n@if (!hideErrors) {\n <bb-form-error [control]=\"ngControl\"\n (errorChange)=\"onErrorChange($event)\">\n </bb-form-error>\n}\n\n<!-- The form control hint. -->\n@if (hint; as hintContent) {\n <p class=\"bb-form-control-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n", styles: [".bb-form-control{color:#111;display:block}.bb-form-control>.bb-form-control-container>*.bb-prefix,.bb-form-control>.bb-form-control-container>*.bb-suffix{color:#b4b4b4;transition:color .3s cubic-bezier(0,0,.2,1)}.bb-form-control>.bb-form-control-container>*.bb-prefix{margin-left:.5rem}.bb-form-control>.bb-form-control-container>*.bb-suffix{margin-right:.5rem}.bb-form-control.grouped{margin-bottom:1.5rem}.bb-form-control.small{max-width:15rem}.bb-form-control.medium{max-width:30rem}.bb-form-control.large{max-width:45rem}.bb-form-control:has(input:required,textarea:required,select:required)>.bb-form-control-label:after{content:\"*\";font-size:.75rem;vertical-align:top;color:var(--bb-form-label-required-color)}.bb-form-control-container:has(input:not(:disabled):not(:read-only):focus,textarea:not(:disabled):not(:read-only):focus,select:not(:disabled):focus){border-color:#757e8a;box-shadow:0 .375rem .375rem -.375rem #0000001a,var(--bb-form-control-box-shadow)}.bb-form-control-container:has(input:not(:disabled):read-only,textarea:not(:disabled):read-only){cursor:default;border-style:dotted;border-color:#bdc4c9}.bb-form-control-container:has(input:disabled,textarea:disabled,select:disabled){cursor:default;pointer-events:none;color:gray;background-color:#e6e6e6}.bb-form-control.error>.bb-form-control-label{color:#c23934}.bb-form-control.error>.bb-form-control-hint{display:none}.bb-form-control.error>.bb-form-control-container>*.bb-prefix,.bb-form-control.error>.bb-form-control-container>.bb-suffix{color:#b51c1c}.bb-form-control.error>.bb-form-control-container>input::placeholder,.bb-form-control.error>.bb-form-control-container>textarea::placeholder{color:#ea7b7b}.bb-form-control.error>.bb-form-control-container,.bb-form-control.error>.bb-form-control-container:has(input:not(:disabled):not(:read-only):focus,textarea:not(:disabled):not(:read-only):focus,select:not(:disabled):focus){border:1px solid hsl(0,73%,30%);background-color:#f8d3d3;box-shadow:0 .375rem .375rem -.375rem #0000001a,0 0 0 .1875rem #f8d3d3}.bb-form-control-container:has(select):after{top:0;right:0;bottom:0;content:\"\";width:1.5rem;display:flex;height:2.5rem;min-width:1.5rem;position:absolute;pointer-events:none;background-repeat:no-repeat;background-size:.75rem .375rem;background-position:calc(100% - .5rem) center;background-image:url('data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 6\"%3E%3Cpath fill=\"%23D8D8D8\" fill-rule=\"evenodd\" d=\"m6 6 6-6H0z\"/%3E%3C/svg%3E')}.bb-form-control-container{width:100%;display:flex;color:#111;overflow:hidden;position:relative;align-items:center;border-radius:.5rem;background-color:#fff;transition-duration:.25s;border:1px solid hsl(213,8%,74%);transition-property:background-color,box-shadow;transition-timing-function:cubic-bezier(0,0,.2,1);box-shadow:0 .375rem .375rem -.375rem #0000001a}.bb-form-control-container>input::placeholder,.bb-form-control-container>textarea::placeholder{color:#d1d1d1;transition:color .3s cubic-bezier(0,0,.2,1)}.bb-form-control-container>input,.bb-form-control-container>textarea,.bb-form-control-container>select{margin:0;width:100%;border:none;color:inherit;font-size:1rem;appearance:none;background-color:transparent}.bb-form-control-container>input,.bb-form-control-container>select{height:2.5rem;padding:0 .5rem}.bb-form-control-container>select{padding-right:2rem}.bb-form-control-container>select>::-ms-expand{display:none}.bb-form-control-container>input::-ms-clear,.bb-form-control-container>input::-ms-reveal{width:0;height:0;display:none}.bb-form-control-container>input::-webkit-search-decoration,.bb-form-control-container>input::-webkit-search-cancel-button,.bb-form-control-container>input::-webkit-search-results-button,.bb-form-control-container>input::-webkit-search-results-decoration{display:none}.bb-form-control-container>textarea{resize:none;padding:.5rem}.bb-form-control-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-form-control-hint{display:block;line-height:1.5;margin-top:.25rem;font-size:.8125rem;color:#758795}\n"] }]
|
|
41
32
|
}], propDecorators: { ngControl: [{
|
|
42
33
|
type: ContentChild,
|
|
43
34
|
args: [NgControl]
|
|
@@ -45,5 +36,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
|
|
|
45
36
|
type: Input
|
|
46
37
|
}], hint: [{
|
|
47
38
|
type: Input
|
|
39
|
+
}], grouped: [{
|
|
40
|
+
type: Input,
|
|
41
|
+
args: [{ transform: booleanAttribute }]
|
|
42
|
+
}], hideErrors: [{
|
|
43
|
+
type: Input,
|
|
44
|
+
args: [{ transform: booleanAttribute }]
|
|
48
45
|
}] } });
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vZWxlbWVudHMvc3JjL2xpYi9mb3JtLWNvbnRyb2wvZm9ybS1jb250cm9sLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vZWxlbWVudHMvc3JjL2xpYi9mb3JtLWNvbnRyb2wvZm9ybS1jb250cm9sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBZSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4SSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDL0QsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFekMsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBaUJyQixNQUFNLE9BQU8sYUFBYTtJQWYxQjtRQWlCSSxpQkFBaUI7UUFDUixZQUFPLEdBQVcsbUJBQW1CLFlBQVksRUFBRSxFQUFFLENBQUM7UUFLL0QsVUFBVTtRQUNELFVBQUssR0FBcUMsSUFBSSxDQUFDO1FBQy9DLFNBQUksR0FBcUMsSUFBSSxDQUFDO1FBQ2pCLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFDekIsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUVsRSxTQUFTO1FBQ1QsVUFBSyxHQUFZLEtBQUssQ0FBQztLQU0xQjtJQUpHLGFBQWEsQ0FBQyxLQUEyQztRQUNyRCxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDekIsQ0FBQzs4R0FuQlEsYUFBYTtrR0FBYixhQUFhLDJIQVdILGdCQUFnQiw0Q0FDaEIsZ0JBQWdCLHFMQU5yQixTQUFTLGdEQzVCM0IsczNCQTRCQSxvb0lEUmMsVUFBVSxpRkFBRSxXQUFXOzsyRkFFeEIsYUFBYTtrQkFmekIsU0FBUzsrQkFDSSxpQkFBaUIsbUJBR1YsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDRixPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixpQkFBaUIsRUFBRSxTQUFTO3dCQUM1QixlQUFlLEVBQUUsT0FBTztxQkFDM0IsdUJBQ29CLEtBQUssY0FDZCxJQUFJLFdBQ1AsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDOzhCQVFULFNBQVM7c0JBQWpDLFlBQVk7dUJBQUMsU0FBUztnQkFHZCxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNnQyxPQUFPO3NCQUE1QyxLQUFLO3VCQUFDLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFDO2dCQUNFLFVBQVU7c0JBQS9DLEtBQUs7dUJBQUMsRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Jvb2xlYW5BdHRyaWJ1dGUsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JiRm9ybUVycm9yfSBmcm9tICcuLi9mb3JtLWVycm9yL2Zvcm0tZXJyb3IuY29tcG9uZW50JztcbmltcG9ydCB7QmJUZW1wbGF0ZX0gZnJvbSAnQGJyYXZvYml0L2JiLWZvdW5kYXRpb24vdXRpbHMnO1xuaW1wb3J0IHtOZ0NvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxubGV0IG5leHRVbmlxdWVJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYmItZm9ybS1jb250cm9sJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1jb250cm9sLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mb3JtLWNvbnRyb2wuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ2JiLWZvcm0tY29udHJvbCcsXG4gICAgICAgICdbY2xhc3MuZ3JvdXBlZF0nOiAnZ3JvdXBlZCcsXG4gICAgICAgICdbY2xhc3MuZXJyb3JdJzogJ2Vycm9yJ1xuICAgIH0sXG4gICAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQmJUZW1wbGF0ZSwgQmJGb3JtRXJyb3JdXG59KVxuZXhwb3J0IGNsYXNzIEJiRm9ybUNvbnRyb2wge1xuXG4gICAgLy8gUmVhZG9ubHkgZGF0YS5cbiAgICByZWFkb25seSBsYWJlbElkOiBzdHJpbmcgPSBgYmItZm9ybS1jb250cm9sLSR7bmV4dFVuaXF1ZUlkKyt9YDtcblxuICAgIC8vIFZpZXdzLlxuICAgIEBDb250ZW50Q2hpbGQoTmdDb250cm9sKSBuZ0NvbnRyb2w6IE5nQ29udHJvbDtcblxuICAgIC8vIElucHV0cy5cbiAgICBASW5wdXQoKSBsYWJlbDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuICAgIEBJbnB1dCgpIGhpbnQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoe3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pIGdyb3VwZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoe3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pIGhpZGVFcnJvcnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8vIFN0YXRlLlxuICAgIGVycm9yOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBvbkVycm9yQ2hhbmdlKGVycm9yOiB7IHRva2VuOiBzdHJpbmcsIGRhdGE/OiBhbnkgfSB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5lcnJvciA9ICEhZXJyb3I7XG4gICAgfVxuXG59XG4iLCI8IS0tIExhYmVsIG9mIHRoZSBmb3JtIGNvbnRyb2wuIC0tPlxuQGlmIChsYWJlbDsgYXMgbGFiZWxDb250ZW50KSB7XG4gICAgPGxhYmVsIFthdHRyLmZvcl09XCJsYWJlbElkXCJcbiAgICAgICAgICAgY2xhc3M9XCJiYi1mb3JtLWNvbnRyb2wtbGFiZWxcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtiYlRlbXBsYXRlXT1cImxhYmVsQ29udGVudFwiPnt7IGxhYmVsQ29udGVudCB9fTwvbmctdGVtcGxhdGU+XG4gICAgPC9sYWJlbD5cbn1cblxuPCEtLSBUaGUgaW5wdXQgd2l0aCB0aGUgYWRkb25zLiAtLT5cbjxkaXYgY2xhc3M9XCJiYi1mb3JtLWNvbnRyb2wtY29udGFpbmVyXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2JiUHJlZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbYmJJbnB1dF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2JiU3VmZml4XVwiPjwvbmctY29udGVudD5cbjwvZGl2PlxuXG48IS0tIFRoZSBlcnJvciBjb21wb25lbnQuIC0tPlxuQGlmICghaGlkZUVycm9ycykge1xuICAgIDxiYi1mb3JtLWVycm9yIFtjb250cm9sXT1cIm5nQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgKGVycm9yQ2hhbmdlKT1cIm9uRXJyb3JDaGFuZ2UoJGV2ZW50KVwiPlxuICAgIDwvYmItZm9ybS1lcnJvcj5cbn1cblxuPCEtLSBUaGUgZm9ybSBjb250cm9sIGhpbnQuIC0tPlxuQGlmIChoaW50OyBhcyBoaW50Q29udGVudCkge1xuICAgIDxwIGNsYXNzPVwiYmItZm9ybS1jb250cm9sLWhpbnRcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtiYlRlbXBsYXRlXT1cImhpbnRDb250ZW50XCI+e3sgaGludENvbnRlbnQgfX08L25nLXRlbXBsYXRlPlxuICAgIDwvcD5cbn1cbiJdfQ==
|
|
@@ -1,73 +1,52 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Optional, Output, ViewEncapsulation } from '@angular/core';
|
|
2
2
|
import { delay, distinctUntilChanged, map, startWith, tap } from 'rxjs/operators';
|
|
3
3
|
import { ELEMENTS_ERRORS } from '../elements.interfaces';
|
|
4
|
-
import {
|
|
4
|
+
import { BbLocalize } from '@bravobit/bb-foundation/localize';
|
|
5
|
+
import { combineLatest, of } from 'rxjs';
|
|
6
|
+
import { AsyncPipe } from '@angular/common';
|
|
5
7
|
import * as i0 from "@angular/core";
|
|
6
8
|
import * as i1 from "../directives/form-submit.directive";
|
|
7
9
|
import * as i2 from "@angular/forms";
|
|
8
10
|
import * as i3 from "../directives/form-submitter.directive";
|
|
9
|
-
import * as i4 from "
|
|
10
|
-
import * as i5 from "@bravobit/bb-foundation/localize";
|
|
11
|
+
import * as i4 from "../directives/extra-error-controls.directive";
|
|
11
12
|
export class BbFormError {
|
|
12
|
-
|
|
13
|
-
set control(value) {
|
|
14
|
-
this._ngControl = value;
|
|
15
|
-
}
|
|
16
|
-
get control() {
|
|
17
|
-
return this._ngControl;
|
|
18
|
-
}
|
|
19
|
-
constructor(_form, _control, _formSubmitter, _errors) {
|
|
13
|
+
constructor(_form, _ngControl, _formSubmitter, _extraErrorControls, _errors) {
|
|
20
14
|
this._form = _form;
|
|
21
|
-
this.
|
|
15
|
+
this._ngControl = _ngControl;
|
|
22
16
|
this._formSubmitter = _formSubmitter;
|
|
17
|
+
this._extraErrorControls = _extraErrorControls;
|
|
23
18
|
this._errors = _errors;
|
|
19
|
+
// Readonly data.
|
|
20
|
+
this.errorsMap = this._errors.reduce((previous, current) => ({ ...previous, ...current }), {});
|
|
21
|
+
// Inputs.
|
|
22
|
+
this.control = null;
|
|
24
23
|
// Outputs.
|
|
25
24
|
this.errorChange = new EventEmitter();
|
|
26
|
-
// Subscriptions.
|
|
27
|
-
this._ngControl = null;
|
|
28
25
|
}
|
|
29
26
|
ngOnInit() {
|
|
30
|
-
|
|
27
|
+
this.setControl();
|
|
28
|
+
this.setError();
|
|
29
|
+
}
|
|
30
|
+
setControl() {
|
|
31
31
|
if (!this.control) {
|
|
32
|
-
this.control = this.
|
|
32
|
+
this.control = this._ngControl;
|
|
33
33
|
}
|
|
34
|
-
|
|
34
|
+
}
|
|
35
|
+
setError() {
|
|
35
36
|
const submitStatus$ = this.submitStatusChanges();
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
// Whenever the user submitted the form we want to
|
|
39
|
-
// listen for any error changes.
|
|
40
|
-
this.error$ = combineLatest([submitStatus$, errorChanges$]).pipe(map(([submitted, error]) => {
|
|
41
|
-
// If not submitted return null.
|
|
42
|
-
if (!submitted) {
|
|
43
|
-
return null;
|
|
44
|
-
}
|
|
45
|
-
// Return the error if submitted.
|
|
46
|
-
return error;
|
|
47
|
-
}), tap(value => this.errorChange.emit(value)));
|
|
37
|
+
const errorChanges$ = this.getErrors().pipe(map(errors => this.formatError(errors)), distinctUntilChanged(), map(error => typeof error === 'string' ? { token: error } : error));
|
|
38
|
+
this.error$ = combineLatest([submitStatus$, errorChanges$]).pipe(map(([submitted, error]) => submitted ? error : null), tap(value => this.errorChange.emit(value)));
|
|
48
39
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
return null;
|
|
53
|
-
}
|
|
54
|
-
// Get the first error in the errors.
|
|
55
|
-
const [errorName] = Object.keys(errors);
|
|
56
|
-
const error = errors[errorName];
|
|
57
|
-
// Validate the error exists.
|
|
40
|
+
formatError(errors) {
|
|
41
|
+
const [errorName] = Object.keys(errors ?? {});
|
|
42
|
+
const error = errors?.[errorName];
|
|
58
43
|
if (!error) {
|
|
59
44
|
return null;
|
|
60
45
|
}
|
|
61
|
-
|
|
62
|
-
// access the functions by a key-lookup.
|
|
63
|
-
const errorFunctions = this._errors.reduce((previous, current) => ({ ...previous, ...current }), {});
|
|
64
|
-
// Get the error function.
|
|
65
|
-
const errorFunction = errorFunctions[errorName] || errorFunctions['unknown'];
|
|
66
|
-
// Validate the error function exists.
|
|
46
|
+
const errorFunction = this.errorsMap?.[errorName] ?? this.errorsMap?.['unknown'];
|
|
67
47
|
if (!errorFunction) {
|
|
68
48
|
return null;
|
|
69
49
|
}
|
|
70
|
-
// Return the parsed error.
|
|
71
50
|
return errorFunction(error);
|
|
72
51
|
}
|
|
73
52
|
submitStatusChanges() {
|
|
@@ -87,29 +66,25 @@ export class BbFormError {
|
|
|
87
66
|
}
|
|
88
67
|
return this._formSubmitter.submitted$.pipe(distinctUntilChanged());
|
|
89
68
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
if (!this.control.statusChanges) {
|
|
95
|
-
return EMPTY;
|
|
96
|
-
}
|
|
97
|
-
return this.control.statusChanges.pipe(startWith(this.control.status), delay(0));
|
|
69
|
+
getErrors() {
|
|
70
|
+
const error$ = (this.control?.statusChanges ?? of(null)).pipe(startWith(this.control?.status), map(_ => this.control?.errors ?? null), delay(0));
|
|
71
|
+
const extraError$ = this._extraErrorControls?.changes?.asObservable() ?? of(null);
|
|
72
|
+
return combineLatest([error$, extraError$]).pipe(map(([error, extraError]) => error ?? extraError ?? null), distinctUntilChanged());
|
|
98
73
|
}
|
|
99
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.
|
|
100
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
74
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbFormError, deps: [{ token: i1.BbFormSubmit, optional: true }, { token: i2.NgControl, optional: true }, { token: i3.BbFormSubmitter, optional: true }, { token: i4.BbExtraErrorControls, optional: true }, { token: ELEMENTS_ERRORS, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
75
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.5", type: BbFormError, isStandalone: true, selector: "bb-form-error", inputs: { control: "control" }, outputs: { errorChange: "errorChange" }, host: { classAttribute: "bb-form-error" }, ngImport: i0, template: "@if (error$ | async; as error) {\n @if (error?.token | bbLocalize:{optional: true, data: error?.data}; as message) {\n <p class=\"bb-form-error-message\">{{ message }}</p>\n }\n}\n", styles: [".bb-form-error{display:block}.bb-form-error-message{color:#c23934;display:block;line-height:1.5;margin-top:.25rem;font-size:.8125rem}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: BbLocalize, name: "bbLocalize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
101
76
|
}
|
|
102
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.
|
|
77
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbFormError, decorators: [{
|
|
103
78
|
type: Component,
|
|
104
|
-
args: [{ selector: 'bb-form-error', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
105
|
-
'class': 'bb-form-error'
|
|
106
|
-
}, preserveWhitespaces: false, template: "<ng-container *ngIf=\"error$ | async as error\">\n <p *ngIf=\"error?.token | bbLocalize:{optional: true, data: error?.data} as message\"\n class=\"bb-form-error-message\">\n {{ message }}\n </p>\n</ng-container>", styles: [".bb-form-error{display:block}.bb-form-error-message{color:#c23934;display:block;font-size:13px;margin-top:4px}\n"] }]
|
|
79
|
+
args: [{ selector: 'bb-form-error', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'class': 'bb-form-error' }, preserveWhitespaces: false, standalone: true, imports: [AsyncPipe, BbLocalize], template: "@if (error$ | async; as error) {\n @if (error?.token | bbLocalize:{optional: true, data: error?.data}; as message) {\n <p class=\"bb-form-error-message\">{{ message }}</p>\n }\n}\n", styles: [".bb-form-error{display:block}.bb-form-error-message{color:#c23934;display:block;line-height:1.5;margin-top:.25rem;font-size:.8125rem}\n"] }]
|
|
107
80
|
}], ctorParameters: () => [{ type: i1.BbFormSubmit, decorators: [{
|
|
108
81
|
type: Optional
|
|
109
82
|
}] }, { type: i2.NgControl, decorators: [{
|
|
110
83
|
type: Optional
|
|
111
84
|
}] }, { type: i3.BbFormSubmitter, decorators: [{
|
|
112
85
|
type: Optional
|
|
86
|
+
}] }, { type: i4.BbExtraErrorControls, decorators: [{
|
|
87
|
+
type: Optional
|
|
113
88
|
}] }, { type: undefined, decorators: [{
|
|
114
89
|
type: Optional
|
|
115
90
|
}, {
|
|
@@ -120,4 +95,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
|
|
|
120
95
|
}], errorChange: [{
|
|
121
96
|
type: Output
|
|
122
97
|
}] } });
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2VsZW1lbnRzL3NyYy9saWIvZm9ybS1lcnJvci9mb3JtLWVycm9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vZWxlbWVudHMvc3JjL2xpYi9mb3JtLWVycm9yL2Zvcm0tZXJyb3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRWhGLE9BQU8sRUFBQyxlQUFlLEVBQWdCLE1BQU0sd0JBQXdCLENBQUM7QUFHdEUsT0FBTyxFQUFDLGFBQWEsRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBYTFELE1BQU0sT0FBTyxXQUFXO0lBRXBCLFVBQVU7SUFDVixJQUNJLE9BQU8sQ0FBQyxLQUFnQjtRQUN4QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFXRCxZQUFnQyxLQUFvQixFQUNwQixRQUFvQixFQUNwQixjQUFnQyxFQUNQLE9BQXlCO1FBSGxELFVBQUssR0FBTCxLQUFLLENBQWU7UUFDcEIsYUFBUSxHQUFSLFFBQVEsQ0FBWTtRQUNwQixtQkFBYyxHQUFkLGNBQWMsQ0FBa0I7UUFDUCxZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQVpsRixXQUFXO1FBQ0QsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBd0MsQ0FBQztRQUtqRixpQkFBaUI7UUFDVCxlQUFVLEdBQXFCLElBQUksQ0FBQztJQU01QyxDQUFDO0lBRUQsUUFBUTtRQUNKLDRDQUE0QztRQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNqQyxDQUFDO1FBRUQsZ0NBQWdDO1FBQ2hDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBRWpELDBDQUEwQztRQUMxQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsSUFBSSxDQUMzQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQzdDLG9CQUFvQixFQUFFLEVBQ3RCLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBQyxLQUFLLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUNuRSxDQUFDO1FBRUYsa0RBQWtEO1FBQ2xELGdDQUFnQztRQUNoQyxJQUFJLENBQUMsTUFBTSxHQUFHLGFBQWEsQ0FBQyxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDNUQsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUN2QixnQ0FBZ0M7WUFDaEMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNiLE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7WUFFRCxpQ0FBaUM7WUFDakMsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDN0MsQ0FBQztJQUNOLENBQUM7SUFFTyxRQUFRLENBQUMsTUFBeUI7UUFDdEMsNkJBQTZCO1FBQzdCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNWLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxxQ0FBcUM7UUFDckMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRWhDLDZCQUE2QjtRQUM3QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDVCxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRUQseUNBQXlDO1FBQ3pDLHdDQUF3QztRQUN4QyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBQyxHQUFHLFFBQVEsRUFBRSxHQUFHLE9BQU8sRUFBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFbkcsMEJBQTBCO1FBQzFCLE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFN0Usc0NBQXNDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNqQixPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRUQsMkJBQTJCO1FBQzNCLE9BQU8sYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTyxtQkFBbUI7UUFDdkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0MsT0FBTyxhQUFhLENBQUMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3pDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLEVBQzNDLG9CQUFvQixFQUFFLENBQ3pCLENBQUM7SUFDTixDQUFDO0lBRU8sbUJBQW1CO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQztJQUNwQyxDQUFDO0lBRU8sbUJBQW1CO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUN0QyxvQkFBb0IsRUFBRSxDQUN6QixDQUFDO0lBQ04sQ0FBQztJQUVPLGFBQWE7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNoQixPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDOUIsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNsQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFpQixDQUFDLEVBQ3pDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDWCxDQUFDO0lBQ04sQ0FBQzs4R0FsSVEsV0FBVyxzSkF3QlksZUFBZTtrR0F4QnRDLFdBQVcseUtDN0J4Qix3T0FLZTs7MkZEd0JGLFdBQVc7a0JBWHZCLFNBQVM7K0JBQ0ksZUFBZSxtQkFHUix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNGLE9BQU8sRUFBRSxlQUFlO3FCQUMzQix1QkFDb0IsS0FBSzs7MEJBdUJiLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZUFBZTt5Q0FwQjNDLE9BQU87c0JBRFYsS0FBSztnQkFVSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtkZWxheSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc3RhcnRXaXRoLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7QmJGb3JtU3VibWl0dGVyfSBmcm9tICcuLi9kaXJlY3RpdmVzL2Zvcm0tc3VibWl0dGVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQge0VMRU1FTlRTX0VSUk9SUywgRWxlbWVudHNFcnJvcn0gZnJvbSAnLi4vZWxlbWVudHMuaW50ZXJmYWNlcyc7XG5pbXBvcnQge0JiRm9ybVN1Ym1pdH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9mb3JtLXN1Ym1pdC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtOZ0NvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7Y29tYmluZUxhdGVzdCwgRU1QVFksIE9ic2VydmFibGUsIG9mfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdiYi1mb3JtLWVycm9yJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1lcnJvci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZm9ybS1lcnJvci5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAnYmItZm9ybS1lcnJvcidcbiAgICB9LFxuICAgIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIEJiRm9ybUVycm9yIGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIC8vIElucHV0cy5cbiAgICBASW5wdXQoKVxuICAgIHNldCBjb250cm9sKHZhbHVlOiBOZ0NvbnRyb2wpIHtcbiAgICAgICAgdGhpcy5fbmdDb250cm9sID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGNvbnRyb2woKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9uZ0NvbnRyb2w7XG4gICAgfVxuXG4gICAgLy8gT3V0cHV0cy5cbiAgICBAT3V0cHV0KCkgZXJyb3JDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHsgdG9rZW46IHN0cmluZywgZGF0YT86IGFueSB9IHwgbnVsbD4oKTtcblxuICAgIC8vIFN0YXRlLlxuICAgIGVycm9yJDogT2JzZXJ2YWJsZTx7IHRva2VuOiBzdHJpbmcsIGRhdGE/OiBhbnkgfSB8IG51bGw+O1xuXG4gICAgLy8gU3Vic2NyaXB0aW9ucy5cbiAgICBwcml2YXRlIF9uZ0NvbnRyb2w6IE5nQ29udHJvbCB8IG51bGwgPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZm9ybT86IEJiRm9ybVN1Ym1pdCxcbiAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9jb250cm9sPzogTmdDb250cm9sLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2Zvcm1TdWJtaXR0ZXI/OiBCYkZvcm1TdWJtaXR0ZXIsXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChFTEVNRU5UU19FUlJPUlMpIHByaXZhdGUgX2Vycm9ycz86IEVsZW1lbnRzRXJyb3JbXSkge1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICAvLyBTZXQgdGhlIGNvbnRyb2wgaWYgaXQgd2FzIG5vdCBzZXQgYmVmb3JlLlxuICAgICAgICBpZiAoIXRoaXMuY29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5jb250cm9sID0gdGhpcy5fY29udHJvbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIExpc3RlbiBmb3IgdGhlIHN1Ym1pdCBjaGFuZ2VzXG4gICAgICAgIGNvbnN0IHN1Ym1pdFN0YXR1cyQgPSB0aGlzLnN1Ym1pdFN0YXR1c0NoYW5nZXMoKTtcblxuICAgICAgICAvLyBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgZXJyb3IgY2hhbmdlcy5cbiAgICAgICAgY29uc3QgZXJyb3JDaGFuZ2VzJCA9IHRoaXMuc3RhdHVzQ2hhbmdlcygpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKCkgPT4gdGhpcy5nZXRFcnJvcih0aGlzLmNvbnRyb2wuZXJyb3JzKSksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgbWFwKGVycm9yID0+IHR5cGVvZiBlcnJvciA9PT0gJ3N0cmluZycgPyB7dG9rZW46IGVycm9yfSA6IGVycm9yKVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIFdoZW5ldmVyIHRoZSB1c2VyIHN1Ym1pdHRlZCB0aGUgZm9ybSB3ZSB3YW50IHRvXG4gICAgICAgIC8vIGxpc3RlbiBmb3IgYW55IGVycm9yIGNoYW5nZXMuXG4gICAgICAgIHRoaXMuZXJyb3IkID0gY29tYmluZUxhdGVzdChbc3VibWl0U3RhdHVzJCwgZXJyb3JDaGFuZ2VzJF0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKFtzdWJtaXR0ZWQsIGVycm9yXSkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIElmIG5vdCBzdWJtaXR0ZWQgcmV0dXJuIG51bGwuXG4gICAgICAgICAgICAgICAgaWYgKCFzdWJtaXR0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gUmV0dXJuIHRoZSBlcnJvciBpZiBzdWJtaXR0ZWQuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YXAodmFsdWUgPT4gdGhpcy5lcnJvckNoYW5nZS5lbWl0KHZhbHVlKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEVycm9yKGVycm9ycz86IFZhbGlkYXRpb25FcnJvcnMpIHtcbiAgICAgICAgLy8gVmFsaWRhdGUgdGhlIGVycm9ycyBleGlzdC5cbiAgICAgICAgaWYgKCFlcnJvcnMpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gR2V0IHRoZSBmaXJzdCBlcnJvciBpbiB0aGUgZXJyb3JzLlxuICAgICAgICBjb25zdCBbZXJyb3JOYW1lXSA9IE9iamVjdC5rZXlzKGVycm9ycyk7XG4gICAgICAgIGNvbnN0IGVycm9yID0gZXJyb3JzW2Vycm9yTmFtZV07XG5cbiAgICAgICAgLy8gVmFsaWRhdGUgdGhlIGVycm9yIGV4aXN0cy5cbiAgICAgICAgaWYgKCFlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNYXAgdGhlIGFycmF5cyBpbnRvIGEgb2JqZWN0IHNvIHdlIGNhblxuICAgICAgICAvLyBhY2Nlc3MgdGhlIGZ1bmN0aW9ucyBieSBhIGtleS1sb29rdXAuXG4gICAgICAgIGNvbnN0IGVycm9yRnVuY3Rpb25zID0gdGhpcy5fZXJyb3JzLnJlZHVjZSgocHJldmlvdXMsIGN1cnJlbnQpID0+ICh7Li4ucHJldmlvdXMsIC4uLmN1cnJlbnR9KSwge30pO1xuXG4gICAgICAgIC8vIEdldCB0aGUgZXJyb3IgZnVuY3Rpb24uXG4gICAgICAgIGNvbnN0IGVycm9yRnVuY3Rpb24gPSBlcnJvckZ1bmN0aW9uc1tlcnJvck5hbWVdIHx8IGVycm9yRnVuY3Rpb25zWyd1bmtub3duJ107XG5cbiAgICAgICAgLy8gVmFsaWRhdGUgdGhlIGVycm9yIGZ1bmN0aW9uIGV4aXN0cy5cbiAgICAgICAgaWYgKCFlcnJvckZ1bmN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJldHVybiB0aGUgcGFyc2VkIGVycm9yLlxuICAgICAgICByZXR1cm4gZXJyb3JGdW5jdGlvbihlcnJvcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdWJtaXRTdGF0dXNDaGFuZ2VzKCkge1xuICAgICAgICBjb25zdCBuYXRpdmUkID0gdGhpcy5nZXROYXRpdmVGb3JtU3VibWl0KCk7XG4gICAgICAgIGNvbnN0IG1hbnVhbCQgPSB0aGlzLmdldE1hbnVhbEZvcm1TdWJtaXQoKTtcbiAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW25hdGl2ZSQsIG1hbnVhbCRdKS5waXBlKFxuICAgICAgICAgICAgbWFwKChbbmF0aXZlLCBtYW51YWxdKSA9PiBuYXRpdmUgfHwgbWFudWFsKSxcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE5hdGl2ZUZvcm1TdWJtaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5fZm9ybSkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2Zvcm0uc3VibWl0U3RhdHVzJDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE1hbnVhbEZvcm1TdWJtaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5fZm9ybVN1Ym1pdHRlcikge1xuICAgICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9mb3JtU3VibWl0dGVyLnN1Ym1pdHRlZCQucGlwZShcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXR1c0NoYW5nZXMoKSB7XG4gICAgICAgIGlmICghdGhpcy5jb250cm9sKSB7XG4gICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuY29udHJvbC5zdGF0dXNDaGFuZ2VzKSB7XG4gICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5jb250cm9sLnN0YXR1c0NoYW5nZXMucGlwZShcbiAgICAgICAgICAgIHN0YXJ0V2l0aCh0aGlzLmNvbnRyb2wuc3RhdHVzIGFzIHVua25vd24pLFxuICAgICAgICAgICAgZGVsYXkoMClcbiAgICAgICAgKTtcbiAgICB9XG5cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJlcnJvciQgfCBhc3luYyBhcyBlcnJvclwiPlxuICAgIDxwICpuZ0lmPVwiZXJyb3I/LnRva2VuIHwgYmJMb2NhbGl6ZTp7b3B0aW9uYWw6IHRydWUsIGRhdGE6IGVycm9yPy5kYXRhfSBhcyBtZXNzYWdlXCJcbiAgICAgICBjbGFzcz1cImJiLWZvcm0tZXJyb3ItbWVzc2FnZVwiPlxuICAgICAgICB7eyBtZXNzYWdlIH19XG4gICAgPC9wPlxuPC9uZy1jb250YWluZXI+Il19
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2VsZW1lbnRzL3NyYy9saWIvZm9ybS1lcnJvci9mb3JtLWVycm9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vZWxlbWVudHMvc3JjL2xpYi9mb3JtLWVycm9yL2Zvcm0tZXJyb3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTNJLE9BQU8sRUFBQyxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRixPQUFPLEVBQUMsZUFBZSxFQUFnQixNQUFNLHdCQUF3QixDQUFDO0FBRXRFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUU1RCxPQUFPLEVBQUMsYUFBYSxFQUFjLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQWExQyxNQUFNLE9BQU8sV0FBVztJQWNwQixZQUFnQyxLQUFvQixFQUNwQixVQUFzQixFQUN0QixjQUFnQyxFQUNoQyxtQkFBMEMsRUFDakIsT0FBeUI7UUFKbEQsVUFBSyxHQUFMLEtBQUssQ0FBZTtRQUNwQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLG1CQUFjLEdBQWQsY0FBYyxDQUFrQjtRQUNoQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXVCO1FBQ2pCLFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBaEJsRixpQkFBaUI7UUFDUixjQUFTLEdBQWtCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFDLEdBQUcsUUFBUSxFQUFFLEdBQUcsT0FBTyxFQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVoSCxVQUFVO1FBQ0QsWUFBTyxHQUFxQixJQUFJLENBQUM7UUFFMUMsV0FBVztRQUNELGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXdDLENBQUM7SUFVakYsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFTyxVQUFVO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDbkMsQ0FBQztJQUNMLENBQUM7SUFFTyxRQUFRO1FBQ1osTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDakQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FDdkMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUN2QyxvQkFBb0IsRUFBRSxFQUN0QixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUMsS0FBSyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FDbkUsQ0FBQztRQUVGLElBQUksQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUM1RCxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUNyRCxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUM3QyxDQUFDO0lBQ04sQ0FBQztJQUVPLFdBQVcsQ0FBQyxNQUF5QjtRQUN6QyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUM7UUFDOUMsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1QsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUVELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakYsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ2pCLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxPQUFPLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU8sbUJBQW1CO1FBQ3ZCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzNDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzNDLE9BQU8sYUFBYSxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUN6QyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxFQUMzQyxvQkFBb0IsRUFBRSxDQUN6QixDQUFDO0lBQ04sQ0FBQztJQUVPLG1CQUFtQjtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2QsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7SUFDcEMsQ0FBQztJQUVPLG1CQUFtQjtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDdEMsb0JBQW9CLEVBQUUsQ0FDekIsQ0FBQztJQUNOLENBQUM7SUFFTyxTQUFTO1FBQ2IsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGFBQWEsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3pELFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUMvQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMsRUFDdEMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUNYLENBQUM7UUFFRixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVsRixPQUFPLGFBQWEsQ0FBQyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDNUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDLEVBQ3pELG9CQUFvQixFQUFFLENBQ3pCLENBQUM7SUFDTixDQUFDOzhHQXJHUSxXQUFXLDBNQWtCWSxlQUFlO2tHQWxCdEMsV0FBVyw2TEN0QnhCLG1NQUtBLDRMRGVjLFNBQVMseUNBQUUsVUFBVTs7MkZBRXRCLFdBQVc7a0JBWHZCLFNBQVM7K0JBQ0ksZUFBZSxtQkFHUix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CLEVBQUMsT0FBTyxFQUFFLGVBQWUsRUFBQyx1QkFDWCxLQUFLLGNBQ2QsSUFBSSxXQUNQLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQzs7MEJBZ0JuQixRQUFROzswQkFDUixRQUFROzswQkFDUixRQUFROzswQkFDUixRQUFROzswQkFDUixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGVBQWU7eUNBWnRDLE9BQU87c0JBQWYsS0FBSztnQkFHSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCYkV4dHJhRXJyb3JDb250cm9sc30gZnJvbSAnLi4vZGlyZWN0aXZlcy9leHRyYS1lcnJvci1jb250cm9scy5kaXJlY3RpdmUnO1xuaW1wb3J0IHtkZWxheSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc3RhcnRXaXRoLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7QmJGb3JtU3VibWl0dGVyfSBmcm9tICcuLi9kaXJlY3RpdmVzL2Zvcm0tc3VibWl0dGVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQge0VMRU1FTlRTX0VSUk9SUywgRWxlbWVudHNFcnJvcn0gZnJvbSAnLi4vZWxlbWVudHMuaW50ZXJmYWNlcyc7XG5pbXBvcnQge0JiRm9ybVN1Ym1pdH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9mb3JtLXN1Ym1pdC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtCYkxvY2FsaXplfSBmcm9tICdAYnJhdm9iaXQvYmItZm91bmRhdGlvbi9sb2NhbGl6ZSc7XG5pbXBvcnQge05nQ29udHJvbCwgVmFsaWRhdGlvbkVycm9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0FzeW5jUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdiYi1mb3JtLWVycm9yJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1lcnJvci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZm9ybS1lcnJvci5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDogeydjbGFzcyc6ICdiYi1mb3JtLWVycm9yJ30sXG4gICAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQXN5bmNQaXBlLCBCYkxvY2FsaXplXVxufSlcbmV4cG9ydCBjbGFzcyBCYkZvcm1FcnJvciBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICAvLyBSZWFkb25seSBkYXRhLlxuICAgIHJlYWRvbmx5IGVycm9yc01hcDogRWxlbWVudHNFcnJvciA9IHRoaXMuX2Vycm9ycy5yZWR1Y2UoKHByZXZpb3VzLCBjdXJyZW50KSA9PiAoey4uLnByZXZpb3VzLCAuLi5jdXJyZW50fSksIHt9KTtcblxuICAgIC8vIElucHV0cy5cbiAgICBASW5wdXQoKSBjb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsID0gbnVsbDtcblxuICAgIC8vIE91dHB1dHMuXG4gICAgQE91dHB1dCgpIGVycm9yQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHRva2VuOiBzdHJpbmcsIGRhdGE/OiBhbnkgfSB8IG51bGw+KCk7XG5cbiAgICAvLyBTdGF0ZS5cbiAgICBlcnJvciQ6IE9ic2VydmFibGU8eyB0b2tlbjogc3RyaW5nLCBkYXRhPzogYW55IH0gfCBudWxsPjtcblxuICAgIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIHByaXZhdGUgX2Zvcm0/OiBCYkZvcm1TdWJtaXQsXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfbmdDb250cm9sPzogTmdDb250cm9sLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2Zvcm1TdWJtaXR0ZXI/OiBCYkZvcm1TdWJtaXR0ZXIsXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZXh0cmFFcnJvckNvbnRyb2xzPzogQmJFeHRyYUVycm9yQ29udHJvbHMsXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChFTEVNRU5UU19FUlJPUlMpIHByaXZhdGUgX2Vycm9ycz86IEVsZW1lbnRzRXJyb3JbXSkge1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnNldENvbnRyb2woKTtcbiAgICAgICAgdGhpcy5zZXRFcnJvcigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Q29udHJvbCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbCA9IHRoaXMuX25nQ29udHJvbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RXJyb3IoKSB7XG4gICAgICAgIGNvbnN0IHN1Ym1pdFN0YXR1cyQgPSB0aGlzLnN1Ym1pdFN0YXR1c0NoYW5nZXMoKTtcbiAgICAgICAgY29uc3QgZXJyb3JDaGFuZ2VzJCA9IHRoaXMuZ2V0RXJyb3JzKCkucGlwZShcbiAgICAgICAgICAgIG1hcChlcnJvcnMgPT4gdGhpcy5mb3JtYXRFcnJvcihlcnJvcnMpKSxcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICBtYXAoZXJyb3IgPT4gdHlwZW9mIGVycm9yID09PSAnc3RyaW5nJyA/IHt0b2tlbjogZXJyb3J9IDogZXJyb3IpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5lcnJvciQgPSBjb21iaW5lTGF0ZXN0KFtzdWJtaXRTdGF0dXMkLCBlcnJvckNoYW5nZXMkXSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoW3N1Ym1pdHRlZCwgZXJyb3JdKSA9PiBzdWJtaXR0ZWQgPyBlcnJvciA6IG51bGwpLFxuICAgICAgICAgICAgdGFwKHZhbHVlID0+IHRoaXMuZXJyb3JDaGFuZ2UuZW1pdCh2YWx1ZSkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXRFcnJvcihlcnJvcnM/OiBWYWxpZGF0aW9uRXJyb3JzKSB7XG4gICAgICAgIGNvbnN0IFtlcnJvck5hbWVdID0gT2JqZWN0LmtleXMoZXJyb3JzID8/IHt9KTtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBlcnJvcnM/LltlcnJvck5hbWVdO1xuICAgICAgICBpZiAoIWVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVycm9yRnVuY3Rpb24gPSB0aGlzLmVycm9yc01hcD8uW2Vycm9yTmFtZV0gPz8gdGhpcy5lcnJvcnNNYXA/LlsndW5rbm93biddO1xuICAgICAgICBpZiAoIWVycm9yRnVuY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGVycm9yRnVuY3Rpb24oZXJyb3IpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3VibWl0U3RhdHVzQ2hhbmdlcygpIHtcbiAgICAgICAgY29uc3QgbmF0aXZlJCA9IHRoaXMuZ2V0TmF0aXZlRm9ybVN1Ym1pdCgpO1xuICAgICAgICBjb25zdCBtYW51YWwkID0gdGhpcy5nZXRNYW51YWxGb3JtU3VibWl0KCk7XG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtuYXRpdmUkLCBtYW51YWwkXSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoW25hdGl2ZSwgbWFudWFsXSkgPT4gbmF0aXZlIHx8IG1hbnVhbCksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXROYXRpdmVGb3JtU3VibWl0KCkge1xuICAgICAgICBpZiAoIXRoaXMuX2Zvcm0pIHtcbiAgICAgICAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9mb3JtLnN1Ym1pdFN0YXR1cyQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRNYW51YWxGb3JtU3VibWl0KCkge1xuICAgICAgICBpZiAoIXRoaXMuX2Zvcm1TdWJtaXR0ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fZm9ybVN1Ym1pdHRlci5zdWJtaXR0ZWQkLnBpcGUoXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRFcnJvcnMoKSB7XG4gICAgICAgIGNvbnN0IGVycm9yJCA9ICh0aGlzLmNvbnRyb2w/LnN0YXR1c0NoYW5nZXMgPz8gb2YobnVsbCkpLnBpcGUoXG4gICAgICAgICAgICBzdGFydFdpdGgodGhpcy5jb250cm9sPy5zdGF0dXMpLFxuICAgICAgICAgICAgbWFwKF8gPT4gdGhpcy5jb250cm9sPy5lcnJvcnMgPz8gbnVsbCksXG4gICAgICAgICAgICBkZWxheSgwKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGV4dHJhRXJyb3IkID0gdGhpcy5fZXh0cmFFcnJvckNvbnRyb2xzPy5jaGFuZ2VzPy5hc09ic2VydmFibGUoKSA/PyBvZihudWxsKTtcblxuICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChbZXJyb3IkLCBleHRyYUVycm9yJF0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKFtlcnJvciwgZXh0cmFFcnJvcl0pID0+IGVycm9yID8/IGV4dHJhRXJyb3IgPz8gbnVsbCksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICAgICk7XG4gICAgfVxuXG59XG4iLCJAaWYgKGVycm9yJCB8IGFzeW5jOyBhcyBlcnJvcikge1xuICAgIEBpZiAoZXJyb3I/LnRva2VuIHwgYmJMb2NhbGl6ZTp7b3B0aW9uYWw6IHRydWUsIGRhdGE6IGVycm9yPy5kYXRhfTsgYXMgbWVzc2FnZSkge1xuICAgICAgICA8cCBjbGFzcz1cImJiLWZvcm0tZXJyb3ItbWVzc2FnZVwiPnt7IG1lc3NhZ2UgfX08L3A+XG4gICAgfVxufVxuIl19
|
|
@@ -1,18 +1,21 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';
|
|
1
|
+
import { booleanAttribute, ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
|
-
class
|
|
3
|
+
export class BbFormGroup {
|
|
4
|
+
constructor() {
|
|
5
|
+
// Inputs.
|
|
6
|
+
this.grouped = false;
|
|
7
|
+
}
|
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbFormGroup, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.0.5", type: BbFormGroup, isStandalone: true, selector: "bb-form-group", inputs: { grouped: ["grouped", "grouped", booleanAttribute] }, host: { properties: { "class.grouped": "grouped" }, classAttribute: "bb-form-group" }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [".bb-form-group{width:100%;display:flex;flex-wrap:wrap;margin-top:-.75rem}.bb-form-group>*{margin-top:.75rem}.bb-form-group>*:not(:first-child){margin-left:.75rem}.bb-form-group.start{justify-content:flex-start}.bb-form-group.end{justify-content:flex-end}.bb-form-group.vertical{flex-direction:column;justify-content:normal}.bb-form-group.vertical>*{margin-left:0}.bb-form-group.vertical.start{align-items:flex-start}.bb-form-group.vertical.end{align-items:flex-end}.bb-form-group.grouped{margin-bottom:1.5rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
5
10
|
}
|
|
6
|
-
|
|
7
|
-
export class BbFormGroup extends BbFormGroupMixinBase {
|
|
8
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BbFormGroup, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
9
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: BbFormGroup, selector: "bb-form-group", inputs: { grouped: "grouped" }, host: { properties: { "class.grouped": "grouped" }, classAttribute: "bb-form-group" }, usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [".bb-form-group{width:100%;display:flex;flex-wrap:wrap;margin-top:-10px}.bb-form-group>*{margin-top:10px}.bb-form-group>*:not(:first-child){margin-left:10px}.bb-form-group.start{justify-content:flex-start}.bb-form-group.end{justify-content:flex-end}.bb-form-group.vertical{flex-direction:column;justify-content:normal}.bb-form-group.vertical>*{margin-left:0}.bb-form-group.vertical.start{align-items:flex-start}.bb-form-group.vertical.end{align-items:flex-end}.bb-form-group.grouped{margin-bottom:20px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
10
|
-
}
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BbFormGroup, decorators: [{
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbFormGroup, decorators: [{
|
|
12
12
|
type: Component,
|
|
13
13
|
args: [{ selector: 'bb-form-group', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
14
14
|
'class': 'bb-form-group',
|
|
15
15
|
'[class.grouped]': 'grouped'
|
|
16
|
-
},
|
|
17
|
-
}]
|
|
18
|
-
|
|
16
|
+
}, preserveWhitespaces: false, standalone: true, template: "<ng-content></ng-content>\n", styles: [".bb-form-group{width:100%;display:flex;flex-wrap:wrap;margin-top:-.75rem}.bb-form-group>*{margin-top:.75rem}.bb-form-group>*:not(:first-child){margin-left:.75rem}.bb-form-group.start{justify-content:flex-start}.bb-form-group.end{justify-content:flex-end}.bb-form-group.vertical{flex-direction:column;justify-content:normal}.bb-form-group.vertical>*{margin-left:0}.bb-form-group.vertical.start{align-items:flex-start}.bb-form-group.vertical.end{align-items:flex-end}.bb-form-group.grouped{margin-bottom:1.5rem}\n"] }]
|
|
17
|
+
}], propDecorators: { grouped: [{
|
|
18
|
+
type: Input,
|
|
19
|
+
args: [{ transform: booleanAttribute }]
|
|
20
|
+
}] } });
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2VsZW1lbnRzL3NyYy9saWIvZm9ybS1ncm91cC9mb3JtLWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vZWxlbWVudHMvc3JjL2xpYi9mb3JtLWdyb3VwL2Zvcm0tZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBZTdHLE1BQU0sT0FBTyxXQUFXO0lBYnhCO1FBZUksVUFBVTtRQUM0QixZQUFPLEdBQVksS0FBSyxDQUFDO0tBRWxFOzhHQUxZLFdBQVc7a0dBQVgsV0FBVywyRkFHRCxnQkFBZ0Isb0hDbEJ2Qyw2QkFDQTs7MkZEY2EsV0FBVztrQkFidkIsU0FBUzsrQkFDSSxlQUFlLG1CQUdSLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0YsT0FBTyxFQUFFLGVBQWU7d0JBQ3hCLGlCQUFpQixFQUFFLFNBQVM7cUJBQy9CLHVCQUNvQixLQUFLLGNBQ2QsSUFBSTs4QkFLc0IsT0FBTztzQkFBNUMsS0FBSzt1QkFBQyxFQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Ym9vbGVhbkF0dHJpYnV0ZSwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdiYi1mb3JtLWdyb3VwJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZm9ybS1ncm91cC5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAnYmItZm9ybS1ncm91cCcsXG4gICAgICAgICdbY2xhc3MuZ3JvdXBlZF0nOiAnZ3JvdXBlZCdcbiAgICB9LFxuICAgIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgQmJGb3JtR3JvdXAge1xuXG4gICAgLy8gSW5wdXRzLlxuICAgIEBJbnB1dCh7dHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlfSkgZ3JvdXBlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG59XG4iLCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4iXX0=
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, Inject, Input, Optional, ViewEncapsulation } from '@angular/core';
|
|
1
|
+
import { booleanAttribute, ChangeDetectionStrategy, Component, Inject, Input, numberAttribute, Optional, ViewEncapsulation } from '@angular/core';
|
|
2
2
|
import { ELEMENTS_ICONS } from '../elements.interfaces';
|
|
3
|
-
import {
|
|
3
|
+
import { AsyncPipe } from '@angular/common';
|
|
4
4
|
import { BehaviorSubject } from 'rxjs';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/common";
|
|
7
6
|
export class BbIcon {
|
|
8
7
|
set src(newValue) {
|
|
9
8
|
this.state$.next(this.convert(newValue));
|
|
@@ -12,12 +11,6 @@ export class BbIcon {
|
|
|
12
11
|
get src() {
|
|
13
12
|
return this._src;
|
|
14
13
|
}
|
|
15
|
-
set ariaHidden(newValue) {
|
|
16
|
-
this._ariaHidden = coerceBooleanProperty(newValue);
|
|
17
|
-
}
|
|
18
|
-
get ariaHidden() {
|
|
19
|
-
return this._ariaHidden;
|
|
20
|
-
}
|
|
21
14
|
constructor(_registry) {
|
|
22
15
|
this._registry = _registry;
|
|
23
16
|
// Data.
|
|
@@ -25,8 +18,8 @@ export class BbIcon {
|
|
|
25
18
|
// State.
|
|
26
19
|
this.state$ = new BehaviorSubject(null);
|
|
27
20
|
this.alt = null;
|
|
28
|
-
this.size =
|
|
29
|
-
this.
|
|
21
|
+
this.size = 1.5;
|
|
22
|
+
this.ariaHidden = true;
|
|
30
23
|
this.warn = (content) => {
|
|
31
24
|
return console && console.warn && console.warn(content);
|
|
32
25
|
};
|
|
@@ -71,20 +64,20 @@ export class BbIcon {
|
|
|
71
64
|
}
|
|
72
65
|
return { type: data['type'], className: data['className'], content };
|
|
73
66
|
}
|
|
74
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.
|
|
75
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
67
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbIcon, deps: [{ token: ELEMENTS_ICONS, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
68
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.5", type: BbIcon, isStandalone: true, selector: "bb-icon", inputs: { alt: "alt", size: ["size", "size", numberAttribute], ariaHidden: ["ariaHidden", "ariaHidden", booleanAttribute], src: "src" }, host: { properties: { "attr.aria-hidden": "ariaHidden", "style.width.rem": "size", "style.height.rem": "size", "style.min-width.rem": "size", "style.min-height.rem": "size", "style.font-size.rem": "size" }, classAttribute: "bb-icon" }, ngImport: i0, template: "@if (state$ | async; as data) {\n @switch (data?.type) {\n @case ('font') {\n <i [attr.data-icon]=\"data?.attribute\"\n [class]=\"data?.className\">\n {{ data?.content }}\n </i>\n }\n @case ('image') {\n <img [src]=\"data?.src\"\n [alt]=\"alt\">\n }\n @default {\n <svg viewBox=\"0 0 1 1\">\n <rect x=\"0\" y=\"0\" width=\"1\" height=\"1\" fill=\"#c5c5c5\"></rect>\n </svg>\n }\n }\n}\n", styles: [".bb-icon{display:flex;-webkit-user-select:none;user-select:none;align-items:center;justify-content:center}.bb-icon>i{font-size:inherit}.bb-icon>img,.bb-icon>svg{width:100%;height:100%;display:flex}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
76
69
|
}
|
|
77
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbIcon, decorators: [{
|
|
78
71
|
type: Component,
|
|
79
72
|
args: [{ selector: 'bb-icon', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
80
73
|
'class': 'bb-icon',
|
|
81
74
|
'[attr.aria-hidden]': 'ariaHidden',
|
|
82
|
-
'[style.width.
|
|
83
|
-
'[style.height.
|
|
84
|
-
'[style.min-width.
|
|
85
|
-
'[style.min-height.
|
|
86
|
-
'[style.font-size.
|
|
87
|
-
}, preserveWhitespaces: false, template: "
|
|
75
|
+
'[style.width.rem]': 'size',
|
|
76
|
+
'[style.height.rem]': 'size',
|
|
77
|
+
'[style.min-width.rem]': 'size',
|
|
78
|
+
'[style.min-height.rem]': 'size',
|
|
79
|
+
'[style.font-size.rem]': 'size'
|
|
80
|
+
}, preserveWhitespaces: false, standalone: true, imports: [AsyncPipe], template: "@if (state$ | async; as data) {\n @switch (data?.type) {\n @case ('font') {\n <i [attr.data-icon]=\"data?.attribute\"\n [class]=\"data?.className\">\n {{ data?.content }}\n </i>\n }\n @case ('image') {\n <img [src]=\"data?.src\"\n [alt]=\"alt\">\n }\n @default {\n <svg viewBox=\"0 0 1 1\">\n <rect x=\"0\" y=\"0\" width=\"1\" height=\"1\" fill=\"#c5c5c5\"></rect>\n </svg>\n }\n }\n}\n", styles: [".bb-icon{display:flex;-webkit-user-select:none;user-select:none;align-items:center;justify-content:center}.bb-icon>i{font-size:inherit}.bb-icon>img,.bb-icon>svg{width:100%;height:100%;display:flex}\n"] }]
|
|
88
81
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
89
82
|
type: Optional
|
|
90
83
|
}, {
|
|
@@ -93,10 +86,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
|
|
|
93
86
|
}] }], propDecorators: { alt: [{
|
|
94
87
|
type: Input
|
|
95
88
|
}], size: [{
|
|
96
|
-
type: Input
|
|
97
|
-
|
|
98
|
-
type: Input
|
|
89
|
+
type: Input,
|
|
90
|
+
args: [{ transform: numberAttribute }]
|
|
99
91
|
}], ariaHidden: [{
|
|
92
|
+
type: Input,
|
|
93
|
+
args: [{ transform: booleanAttribute }]
|
|
94
|
+
}], src: [{
|
|
100
95
|
type: Input
|
|
101
96
|
}] } });
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2VsZW1lbnRzL3NyYy9saWIvaWNvbi9pY29uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vZWxlbWVudHMvc3JjL2xpYi9pY29uL2ljb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDaEosT0FBTyxFQUFDLGNBQWMsRUFBZSxNQUFNLHdCQUF3QixDQUFDO0FBQ3BFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sTUFBTSxDQUFDOztBQXFCckMsTUFBTSxPQUFPLE1BQU07SUFZZixJQUNJLEdBQUcsQ0FBQyxRQUF1QjtRQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksR0FBRztRQUNILE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRUQsWUFBd0QsU0FBeUI7UUFBekIsY0FBUyxHQUFULFNBQVMsQ0FBZ0I7UUFwQmpGLFFBQVE7UUFDQSxTQUFJLEdBQWtCLElBQUksQ0FBQztRQUVuQyxTQUFTO1FBQ1QsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxDQUFDO1FBRS9CLFFBQUcsR0FBa0IsSUFBSSxDQUFDO1FBQ0Us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Qyx1aUJBbUJBLDRQREdjLFNBQVM7OzJGQUVWLE1BQU07a0JBbkJsQixTQUFTOytCQUNJLFNBQVMsbUJBR0YsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDRixPQUFPLEVBQUUsU0FBUzt3QkFDbEIsb0JBQW9CLEVBQUUsWUFBWTt3QkFDbEMsbUJBQW1CLEVBQUUsTUFBTTt3QkFDM0Isb0JBQW9CLEVBQUUsTUFBTTt3QkFDNUIsdUJBQXVCLEVBQUUsTUFBTTt3QkFDL0Isd0JBQXdCLEVBQUUsTUFBTTt3QkFDaEMsdUJBQXVCLEVBQUUsTUFBTTtxQkFDbEMsdUJBQ29CLEtBQUssY0FDZCxJQUFJLFdBQ1AsQ0FBQyxTQUFTLENBQUM7OzBCQXdCUCxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGNBQWM7eUNBZHJDLEdBQUc7c0JBQVgsS0FBSztnQkFDK0IsSUFBSTtzQkFBeEMsS0FBSzt1QkFBQyxFQUFDLFNBQVMsRUFBRSxlQUFlLEVBQUM7Z0JBQ0csVUFBVTtzQkFBL0MsS0FBSzt1QkFBQyxFQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBQztnQkFHaEMsR0FBRztzQkFETixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtib29sZWFuQXR0cmlidXRlLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbmplY3QsIElucHV0LCBudW1iZXJBdHRyaWJ1dGUsIE9wdGlvbmFsLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0VMRU1FTlRTX0lDT05TLCBFbGVtZW50c0ljb259IGZyb20gJy4uL2VsZW1lbnRzLmludGVyZmFjZXMnO1xuaW1wb3J0IHtBc3luY1BpcGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYmItaWNvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ljb24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ljb24uY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ2JiLWljb24nLFxuICAgICAgICAnW2F0dHIuYXJpYS1oaWRkZW5dJzogJ2FyaWFIaWRkZW4nLFxuICAgICAgICAnW3N0eWxlLndpZHRoLnJlbV0nOiAnc2l6ZScsXG4gICAgICAgICdbc3R5bGUuaGVpZ2h0LnJlbV0nOiAnc2l6ZScsXG4gICAgICAgICdbc3R5bGUubWluLXdpZHRoLnJlbV0nOiAnc2l6ZScsXG4gICAgICAgICdbc3R5bGUubWluLWhlaWdodC5yZW1dJzogJ3NpemUnLFxuICAgICAgICAnW3N0eWxlLmZvbnQtc2l6ZS5yZW1dJzogJ3NpemUnXG4gICAgfSxcbiAgICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtBc3luY1BpcGVdXG59KVxuZXhwb3J0IGNsYXNzIEJiSWNvbiB7XG5cbiAgICAvLyBEYXRhLlxuICAgIHByaXZhdGUgX3NyYzogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvLyBTdGF0ZS5cbiAgICBzdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG5cbiAgICBASW5wdXQoKSBhbHQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIEBJbnB1dCh7dHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGV9KSBzaXplOiBudW1iZXIgPSAxLjU7XG4gICAgQElucHV0KHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KSBhcmlhSGlkZGVuOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IHNyYyhuZXdWYWx1ZTogc3RyaW5nIHwgbnVsbCkge1xuICAgICAgICB0aGlzLnN0YXRlJC5uZXh0KHRoaXMuY29udmVydChuZXdWYWx1ZSkpO1xuICAgICAgICB0aGlzLl9zcmMgPSBuZXdWYWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgc3JjKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3JjO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoRUxFTUVOVFNfSUNPTlMpIHByaXZhdGUgX3JlZ2lzdHJ5OiBFbGVtZW50c0ljb25bXSkge1xuICAgIH1cblxuICAgIHByaXZhdGUgY29udmVydChzcmM6IHN0cmluZyB8IG51bGwpIHtcbiAgICAgICAgY29uc3QgW25hbWVzcGFjZSwgdmFsdWVdID0gKHNyYyB8fCAnJykuc3BsaXQoJzonKTtcblxuICAgICAgICBjb25zdCBvbkVycm9yID0gKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy53YXJuKGBFbGVtZW50c01vZHVsZTogVGhlIGljb24gd2l0aCBzcmMgXCIke3NyY31cIiBjb3VsZCBub3QgYmUgcmVuZGVyZWQgY29ycmVjdGx5OyBEaWQgeW91IHB1dCBhIGNvcnJlY3Qgc3JjIGF0dHJpYnV0ZT9gKTtcbiAgICAgICAgICAgIHJldHVybiB7dHlwZTogJ3Vua25vd24nfTtcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoIW5hbWVzcGFjZSB8fCAhdmFsdWUgfHwgIXRoaXMuX3JlZ2lzdHJ5KSB7XG4gICAgICAgICAgICByZXR1cm4gb25FcnJvcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVHJ5IHRvIGZpbmQgYSBpbWFnZSBpY29uLlxuICAgICAgICBjb25zdCBpbWFnZUljb24gPSB0aGlzLmZpbmRJbWFnZUljb24obmFtZXNwYWNlLCB2YWx1ZSk7XG4gICAgICAgIGlmIChpbWFnZUljb24pIHtcbiAgICAgICAgICAgIHJldHVybiBpbWFnZUljb247XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUcnkgdG8gZmluZCBhIGZvbnQgaWNvbi5cbiAgICAgICAgY29uc3QgZm9udEljb24gPSB0aGlzLmZpbmRGb250SWNvbihuYW1lc3BhY2UsIHZhbHVlKTtcbiAgICAgICAgaWYgKGZvbnRJY29uKSB7XG4gICAgICAgICAgICByZXR1cm4gZm9udEljb247XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZXR1cm4gdGhlIG9uIGVycm9yIGZ1bmN0aW9uLlxuICAgICAgICByZXR1cm4gb25FcnJvcigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmluZEltYWdlSWNvbihuYW1lc3BhY2U6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5fcmVnaXN0cnkuZmluZChpdGVtID0+IGl0ZW1bJ25hbWVzcGFjZSddID09PSBuYW1lc3BhY2UgJiYgaXRlbVsnbmFtZSddID09PSB2YWx1ZSk7XG5cbiAgICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7dHlwZTogZGF0YVsndHlwZSddLCBzcmM6IGRhdGFbJ3NyYyddfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmRGb250SWNvbihuYW1lc3BhY2U6IHN0cmluZywgY29udGVudDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9yZWdpc3RyeS5maW5kKGl0ZW0gPT4gaXRlbVsnbmFtZXNwYWNlJ10gPT09IG5hbWVzcGFjZSk7XG5cbiAgICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVzZXMgPSBkYXRhWyd1c2VzJ107XG4gICAgICAgIGlmICh1c2VzID09PSAnZGF0YS1hdHRyaWJ1dGUnKSB7XG4gICAgICAgICAgICByZXR1cm4ge3R5cGU6IGRhdGFbJ3R5cGUnXSwgY2xhc3NOYW1lOiBkYXRhWydjbGFzc05hbWUnXSwgYXR0cmlidXRlOiBjb250ZW50fTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7dHlwZTogZGF0YVsndHlwZSddLCBjbGFzc05hbWU6IGRhdGFbJ2NsYXNzTmFtZSddLCBjb250ZW50fTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHdhcm4gPSAoY29udGVudDogc3RyaW5nKSA9PiB7XG4gICAgICAgIHJldHVybiBjb25zb2xlICYmIGNvbnNvbGUud2FybiAmJiBjb25zb2xlLndhcm4oY29udGVudCk7XG4gICAgfTtcblxufVxuIiwiQGlmIChzdGF0ZSQgfCBhc3luYzsgYXMgZGF0YSkge1xuICAgIEBzd2l0Y2ggKGRhdGE/LnR5cGUpIHtcbiAgICAgICAgQGNhc2UgKCdmb250Jykge1xuICAgICAgICAgICAgPGkgW2F0dHIuZGF0YS1pY29uXT1cImRhdGE/LmF0dHJpYnV0ZVwiXG4gICAgICAgICAgICAgICBbY2xhc3NdPVwiZGF0YT8uY2xhc3NOYW1lXCI+XG4gICAgICAgICAgICAgICAge3sgZGF0YT8uY29udGVudCB9fVxuICAgICAgICAgICAgPC9pPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnaW1hZ2UnKSB7XG4gICAgICAgICAgICA8aW1nIFtzcmNdPVwiZGF0YT8uc3JjXCJcbiAgICAgICAgICAgICAgICAgW2FsdF09XCJhbHRcIj5cbiAgICAgICAgfVxuICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMSAxXCI+XG4gICAgICAgICAgICAgICAgPHJlY3QgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMVwiIGhlaWdodD1cIjFcIiBmaWxsPVwiI2M1YzVjNVwiPjwvcmVjdD5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICB9XG4gICAgfVxufVxuIl19
|