@bravobit/bb-foundation 0.26.2 → 0.27.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/directives/authenticated.directive.d.ts +1 -1
- package/collections/lib/components/collections-pager/collections-pager.component.d.ts +1 -1
- package/collections/lib/components/collections-viewer/collections-viewer.component.d.ts +1 -1
- package/controls/lib/checkbox/checkbox/checkbox.component.d.ts +1 -1
- package/controls/lib/checkbox/checkbox-group/checkbox-group.component.d.ts +1 -1
- package/controls/lib/control-error/control-error/control-error.component.d.ts +1 -1
- package/controls/lib/form-control/form-control/form-control.component.d.ts +1 -1
- package/controls/lib/form-control/form-control-addon/form-control-addon.component.d.ts +1 -1
- package/controls/lib/form-control/form-control-input.directive.d.ts +1 -1
- package/controls/lib/radio/radio-button/radio-button.component.d.ts +1 -1
- package/controls/lib/radio/radio-group/radio-group.component.d.ts +1 -1
- package/controls/lib/toggle/toggle/toggle.component.d.ts +1 -1
- package/controls/lib/toggle/toggle-group/toggle-group.component.d.ts +1 -1
- package/dashboard/lib/dashboard/dashboard.component.d.ts +1 -1
- package/dashboard/lib/dashboard-menu/dashboard-menu.component.d.ts +1 -1
- package/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.d.ts +1 -1
- package/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.d.ts +1 -1
- package/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.d.ts +1 -1
- package/dialog/lib/dialog-modal/dialog-modal.component.d.ts +1 -1
- package/elements/lib/avatar/avatar.component.d.ts +1 -1
- package/elements/lib/button/button.component.d.ts +2 -2
- package/elements/lib/checkbox/checkbox.component.d.ts +1 -1
- package/elements/lib/date-picker/date-picker.component.d.ts +1 -1
- package/elements/lib/directives/input.directive.d.ts +2 -2
- package/elements/lib/dropdown/dropdown.component.d.ts +1 -1
- package/elements/lib/file-picker/file-picker.component.d.ts +2 -2
- package/elements/lib/form-control/form-control.component.d.ts +1 -1
- package/elements/lib/form-error/form-error.component.d.ts +1 -1
- package/elements/lib/form-group/form-group.component.d.ts +1 -1
- package/elements/lib/icon/icon.component.d.ts +1 -1
- package/elements/lib/image-picker/image-picker.component.d.ts +1 -1
- package/elements/lib/spinner/spinner.component.d.ts +1 -1
- package/esm2022/auth/lib/auth.interceptor.mjs +91 -0
- package/esm2022/auth/lib/auth.module.mjs +36 -0
- package/esm2022/auth/lib/auth.service.mjs +271 -0
- package/esm2022/auth/lib/directives/authenticated.directive.mjs +43 -0
- package/esm2022/auth/lib/guards/anonymous.guard.mjs +54 -0
- package/esm2022/auth/lib/guards/authenticated.guard.mjs +57 -0
- package/esm2022/collections/lib/collections.module.mjs +55 -0
- package/esm2022/collections/lib/components/collections-pager/collections-pager.component.mjs +124 -0
- package/esm2022/collections/lib/components/collections-viewer/collections-viewer.component.mjs +32 -0
- package/esm2022/collections/lib/components/collections.directive.mjs +47 -0
- package/esm2022/controls/lib/checkbox/checkbox/checkbox.component.mjs +179 -0
- package/esm2022/controls/lib/checkbox/checkbox-group/checkbox-group.component.mjs +69 -0
- package/esm2022/controls/lib/checkbox/checkbox.module.mjs +21 -0
- package/esm2022/controls/lib/control-error/control-error/control-error.component.mjs +64 -0
- package/esm2022/controls/lib/control-error/control-error-submit.directive.mjs +48 -0
- package/esm2022/controls/lib/control-error/control-error.module.mjs +20 -0
- package/esm2022/controls/lib/controls.module.mjs +63 -0
- package/esm2022/controls/lib/form-control/form-control/form-control.component.mjs +80 -0
- package/esm2022/controls/lib/form-control/form-control-addon/form-control-addon.component.mjs +23 -0
- package/esm2022/controls/lib/form-control/form-control-input.directive.mjs +125 -0
- package/esm2022/controls/lib/form-control/form-control.module.mjs +35 -0
- package/esm2022/controls/lib/radio/radio-button/radio-button.component.mjs +76 -0
- package/esm2022/controls/lib/radio/radio-group/radio-group.component.mjs +169 -0
- package/esm2022/controls/lib/radio/radio.module.mjs +22 -0
- package/esm2022/controls/lib/toggle/toggle/toggle.component.mjs +154 -0
- package/esm2022/controls/lib/toggle/toggle-group/toggle-group.component.mjs +63 -0
- package/esm2022/controls/lib/toggle/toggle.module.mjs +21 -0
- package/esm2022/dashboard/lib/dashboard/dashboard.component.mjs +58 -0
- package/{esm2020 → esm2022}/dashboard/lib/dashboard-header/dashboard-header.component.mjs +6 -5
- package/esm2022/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +32 -0
- package/esm2022/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +30 -0
- package/esm2022/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +76 -0
- package/esm2022/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +100 -0
- package/esm2022/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +63 -0
- package/esm2022/dashboard/lib/dashboard.module.mjs +48 -0
- package/esm2022/dialog/lib/dialog-actions/dialog-actions.component.mjs +13 -0
- package/esm2022/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +47 -0
- package/esm2022/dialog/lib/dialog-container/dialog-container.component.mjs +78 -0
- package/esm2022/dialog/lib/dialog-header/dialog-header.component.mjs +19 -0
- package/esm2022/dialog/lib/dialog-link/dialog-link.component.mjs +12 -0
- package/esm2022/dialog/lib/dialog-modal/dialog-modal.component.mjs +68 -0
- package/esm2022/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +80 -0
- package/esm2022/dialog/lib/dialog.insertion.mjs +17 -0
- package/esm2022/dialog/lib/dialog.module.mjs +69 -0
- package/esm2022/dialog/lib/dialog.service.mjs +69 -0
- package/esm2022/elements/lib/avatar/avatar.component.mjs +150 -0
- package/esm2022/elements/lib/button/button.component.mjs +63 -0
- package/esm2022/elements/lib/checkbox/checkbox.component.mjs +74 -0
- package/esm2022/elements/lib/date-picker/date-picker.component.mjs +308 -0
- package/esm2022/elements/lib/directives/addon.directive.mjs +31 -0
- package/esm2022/elements/lib/directives/form-submit.directive.mjs +51 -0
- package/esm2022/elements/lib/directives/form-submitter.directive.mjs +26 -0
- package/esm2022/elements/lib/directives/input.directive.mjs +138 -0
- package/esm2022/elements/lib/dropdown/dropdown.component.mjs +102 -0
- package/esm2022/elements/lib/elements.module.mjs +178 -0
- package/esm2022/elements/lib/file-picker/file-picker.component.mjs +237 -0
- package/esm2022/elements/lib/form-control/form-control.component.mjs +50 -0
- package/esm2022/elements/lib/form-error/form-error.component.mjs +124 -0
- package/esm2022/elements/lib/form-group/form-group.component.mjs +19 -0
- package/esm2022/elements/lib/icon/icon.component.mjs +103 -0
- package/esm2022/elements/lib/image-picker/image-picker.component.mjs +107 -0
- package/esm2022/elements/lib/pipes/file-image.pipe.mjs +44 -0
- package/esm2022/elements/lib/pipes/file-size.pipe.mjs +29 -0
- package/esm2022/elements/lib/pipes/relative-time.pipe.mjs +97 -0
- package/esm2022/elements/lib/spinner/spinner.component.mjs +26 -0
- package/esm2022/elements/lib/tag/tag.component.mjs +19 -0
- package/esm2022/http/lib/http.module.mjs +44 -0
- package/esm2022/http/lib/interceptors/base-url.interceptor.mjs +51 -0
- package/esm2022/http/lib/interceptors/error.interceptor.mjs +33 -0
- package/esm2022/lib/core/services/clipboard.service.mjs +71 -0
- package/esm2022/lib/core/services/exif.service.mjs +164 -0
- package/esm2022/lib/core/services/file-loader.service.mjs +88 -0
- package/esm2022/lib/core/services/image-converter.service.mjs +124 -0
- package/esm2022/lib/core/services/languages.service.mjs +75 -0
- package/esm2022/lib/core/services/network.service.mjs +56 -0
- package/esm2022/lib/core/services/patch.service.mjs +64 -0
- package/esm2022/localize/lib/localize.module.mjs +82 -0
- package/esm2022/localize/lib/localize.pipe.mjs +47 -0
- package/esm2022/localize/lib/localize.service.mjs +186 -0
- package/{esm2020 → esm2022}/localize/lib/transforms/interpolate.transform.mjs +1 -1
- package/{esm2020 → esm2022}/localize/lib/transforms/reference.transform.mjs +1 -1
- package/esm2022/localize/lib/views/localize-string/localize-string.component.mjs +89 -0
- package/esm2022/localize/lib/views/localize-template.directive.mjs +22 -0
- package/esm2022/masking/lib/directives/currency-mask.directive.mjs +36 -0
- package/esm2022/masking/lib/directives/date-mask.directive.mjs +36 -0
- package/esm2022/masking/lib/directives/input-mask.directive.mjs +119 -0
- package/esm2022/masking/lib/masking.module.mjs +31 -0
- package/esm2022/masking/lib/masking.service.mjs +104 -0
- package/esm2022/notifications/lib/notifications-item/notifications-item.component.mjs +101 -0
- package/esm2022/notifications/lib/notifications-list/notifications-list.component.mjs +48 -0
- package/esm2022/notifications/lib/notifications.module.mjs +31 -0
- package/esm2022/notifications/lib/notifications.service.mjs +142 -0
- package/esm2022/permissions/lib/directives/permission.directive.mjs +89 -0
- package/esm2022/permissions/lib/guards/permission.guard.mjs +57 -0
- package/esm2022/permissions/lib/permissions.module.mjs +40 -0
- package/esm2022/permissions/lib/permissions.service.mjs +97 -0
- package/esm2022/recaptcha/lib/recaptcha/recaptcha.component.mjs +220 -0
- package/esm2022/recaptcha/lib/recaptcha-loader.service.mjs +96 -0
- package/esm2022/recaptcha/lib/recaptcha.module.mjs +28 -0
- package/esm2022/storage/lib/storage.service.mjs +110 -0
- package/esm2022/table/lib/components/table/table.component.mjs +194 -0
- package/esm2022/table/lib/components/table-cell/table-cell.component.mjs +12 -0
- package/esm2022/table/lib/components/table-header-cell/table-header-cell.component.mjs +132 -0
- package/esm2022/table/lib/components/table-pager/table-pager.component.mjs +137 -0
- package/esm2022/table/lib/data/generic.data.mjs +82 -0
- package/esm2022/table/lib/table.module.mjs +43 -0
- package/esm2022/theming/lib/theming.directive.mjs +39 -0
- package/esm2022/theming/lib/theming.module.mjs +17 -0
- package/esm2022/tooltip/lib/tooltip-container/tooltip-container.component.mjs +32 -0
- package/esm2022/tooltip/lib/tooltip.directive.mjs +141 -0
- package/esm2022/tooltip/lib/tooltip.module.mjs +32 -0
- package/esm2022/utils/lib/directives/autosize.directive.mjs +73 -0
- package/esm2022/utils/lib/directives/focus-trap.directive.mjs +78 -0
- package/esm2022/utils/lib/directives/focus.directive.mjs +38 -0
- package/esm2022/utils/lib/directives/template.directive.mjs +29 -0
- package/esm2022/utils/lib/functions/parse-date.function.mjs +19 -0
- package/esm2022/utils/lib/utils.module.mjs +36 -0
- package/esm2022/utils/public_api.mjs +7 -0
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-auth.mjs +19 -19
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-auth.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-collections.mjs +38 -38
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-collections.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-controls.mjs +83 -83
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-controls.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-dashboard.mjs +37 -37
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-dashboard.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-dialog.mjs +46 -46
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-dialog.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-elements.mjs +185 -185
- package/fesm2022/bravobit-bb-foundation-elements.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-http.mjs +10 -10
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-http.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-localize.mjs +20 -20
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-localize.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-masking.mjs +20 -20
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-masking.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-notifications.mjs +13 -13
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-notifications.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-permissions.mjs +13 -13
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-permissions.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-recaptcha.mjs +16 -16
- package/{fesm2015 → fesm2022}/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-storage.mjs +3 -3
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-storage.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-table.mjs +46 -36
- package/fesm2022/bravobit-bb-foundation-table.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-theming.mjs +7 -7
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-theming.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-tooltip.mjs +13 -13
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-tooltip.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation-utils.mjs +42 -23
- package/fesm2022/bravobit-bb-foundation-utils.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation.mjs +21 -21
- package/{fesm2020 → fesm2022}/bravobit-bb-foundation.mjs.map +1 -1
- 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/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/notifications/lib/notifications-item/notifications-item.component.d.ts +1 -1
- package/package.json +70 -112
- package/permissions/lib/directives/permission.directive.d.ts +1 -1
- package/recaptcha/lib/recaptcha/recaptcha.component.d.ts +1 -1
- package/table/lib/components/table/table.component.d.ts +1 -1
- package/table/lib/components/table-header-cell/table-header-cell.component.d.ts +1 -1
- package/table/lib/components/table-pager/table-pager.component.d.ts +1 -1
- package/table/lib/data/generic.data.d.ts +2 -0
- package/theming/lib/theming.directive.d.ts +1 -1
- package/tooltip/lib/tooltip.directive.d.ts +1 -1
- package/utils/lib/directives/autosize.directive.d.ts +1 -1
- package/utils/lib/directives/template.directive.d.ts +1 -1
- package/utils/lib/functions/parse-date.function.d.ts +1 -0
- package/utils/public_api.d.ts +1 -0
- package/esm2020/auth/lib/auth.interceptor.mjs +0 -90
- package/esm2020/auth/lib/auth.module.mjs +0 -35
- package/esm2020/auth/lib/auth.service.mjs +0 -270
- package/esm2020/auth/lib/directives/authenticated.directive.mjs +0 -42
- package/esm2020/auth/lib/guards/anonymous.guard.mjs +0 -53
- package/esm2020/auth/lib/guards/authenticated.guard.mjs +0 -56
- package/esm2020/collections/lib/collections.module.mjs +0 -54
- package/esm2020/collections/lib/components/collections-pager/collections-pager.component.mjs +0 -123
- package/esm2020/collections/lib/components/collections-viewer/collections-viewer.component.mjs +0 -31
- package/esm2020/collections/lib/components/collections.directive.mjs +0 -43
- package/esm2020/controls/lib/checkbox/checkbox/checkbox.component.mjs +0 -178
- package/esm2020/controls/lib/checkbox/checkbox-group/checkbox-group.component.mjs +0 -68
- package/esm2020/controls/lib/checkbox/checkbox.module.mjs +0 -20
- package/esm2020/controls/lib/control-error/control-error/control-error.component.mjs +0 -63
- package/esm2020/controls/lib/control-error/control-error-submit.directive.mjs +0 -47
- package/esm2020/controls/lib/control-error/control-error.module.mjs +0 -19
- package/esm2020/controls/lib/controls.module.mjs +0 -62
- package/esm2020/controls/lib/form-control/form-control/form-control.component.mjs +0 -79
- package/esm2020/controls/lib/form-control/form-control-addon/form-control-addon.component.mjs +0 -22
- package/esm2020/controls/lib/form-control/form-control-input.directive.mjs +0 -124
- package/esm2020/controls/lib/form-control/form-control.module.mjs +0 -34
- package/esm2020/controls/lib/radio/radio-button/radio-button.component.mjs +0 -75
- package/esm2020/controls/lib/radio/radio-group/radio-group.component.mjs +0 -168
- package/esm2020/controls/lib/radio/radio.module.mjs +0 -21
- package/esm2020/controls/lib/toggle/toggle/toggle.component.mjs +0 -153
- package/esm2020/controls/lib/toggle/toggle-group/toggle-group.component.mjs +0 -62
- package/esm2020/controls/lib/toggle/toggle.module.mjs +0 -20
- package/esm2020/dashboard/lib/dashboard/dashboard.component.mjs +0 -57
- package/esm2020/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +0 -31
- package/esm2020/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +0 -29
- package/esm2020/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +0 -75
- package/esm2020/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +0 -99
- package/esm2020/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +0 -62
- package/esm2020/dashboard/lib/dashboard.module.mjs +0 -47
- package/esm2020/dialog/lib/dialog-actions/dialog-actions.component.mjs +0 -12
- package/esm2020/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +0 -46
- package/esm2020/dialog/lib/dialog-container/dialog-container.component.mjs +0 -77
- package/esm2020/dialog/lib/dialog-header/dialog-header.component.mjs +0 -18
- package/esm2020/dialog/lib/dialog-link/dialog-link.component.mjs +0 -11
- package/esm2020/dialog/lib/dialog-modal/dialog-modal.component.mjs +0 -67
- package/esm2020/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +0 -79
- package/esm2020/dialog/lib/dialog.insertion.mjs +0 -16
- package/esm2020/dialog/lib/dialog.module.mjs +0 -68
- package/esm2020/dialog/lib/dialog.service.mjs +0 -68
- package/esm2020/elements/lib/avatar/avatar.component.mjs +0 -149
- package/esm2020/elements/lib/button/button.component.mjs +0 -61
- package/esm2020/elements/lib/checkbox/checkbox.component.mjs +0 -73
- package/esm2020/elements/lib/date-picker/date-picker.component.mjs +0 -307
- package/esm2020/elements/lib/directives/addon.directive.mjs +0 -29
- package/esm2020/elements/lib/directives/form-submit.directive.mjs +0 -50
- package/esm2020/elements/lib/directives/form-submitter.directive.mjs +0 -25
- package/esm2020/elements/lib/directives/input.directive.mjs +0 -136
- package/esm2020/elements/lib/dropdown/dropdown.component.mjs +0 -100
- package/esm2020/elements/lib/elements.module.mjs +0 -177
- package/esm2020/elements/lib/file-picker/file-picker.component.mjs +0 -236
- package/esm2020/elements/lib/form-control/form-control.component.mjs +0 -49
- package/esm2020/elements/lib/form-error/form-error.component.mjs +0 -123
- package/esm2020/elements/lib/form-group/form-group.component.mjs +0 -18
- package/esm2020/elements/lib/icon/icon.component.mjs +0 -102
- package/esm2020/elements/lib/image-picker/image-picker.component.mjs +0 -106
- package/esm2020/elements/lib/pipes/file-image.pipe.mjs +0 -43
- package/esm2020/elements/lib/pipes/file-size.pipe.mjs +0 -28
- package/esm2020/elements/lib/pipes/relative-time.pipe.mjs +0 -96
- package/esm2020/elements/lib/spinner/spinner.component.mjs +0 -25
- package/esm2020/elements/lib/tag/tag.component.mjs +0 -18
- package/esm2020/http/lib/http.module.mjs +0 -43
- package/esm2020/http/lib/interceptors/base-url.interceptor.mjs +0 -50
- package/esm2020/http/lib/interceptors/error.interceptor.mjs +0 -32
- package/esm2020/lib/core/services/clipboard.service.mjs +0 -70
- package/esm2020/lib/core/services/exif.service.mjs +0 -163
- package/esm2020/lib/core/services/file-loader.service.mjs +0 -87
- package/esm2020/lib/core/services/image-converter.service.mjs +0 -123
- package/esm2020/lib/core/services/languages.service.mjs +0 -74
- package/esm2020/lib/core/services/network.service.mjs +0 -55
- package/esm2020/lib/core/services/patch.service.mjs +0 -63
- package/esm2020/localize/lib/localize.module.mjs +0 -81
- package/esm2020/localize/lib/localize.pipe.mjs +0 -46
- package/esm2020/localize/lib/localize.service.mjs +0 -185
- package/esm2020/localize/lib/views/localize-string/localize-string.component.mjs +0 -88
- package/esm2020/localize/lib/views/localize-template.directive.mjs +0 -21
- package/esm2020/masking/lib/directives/currency-mask.directive.mjs +0 -35
- package/esm2020/masking/lib/directives/date-mask.directive.mjs +0 -35
- package/esm2020/masking/lib/directives/input-mask.directive.mjs +0 -118
- package/esm2020/masking/lib/masking.module.mjs +0 -30
- package/esm2020/masking/lib/masking.service.mjs +0 -103
- package/esm2020/notifications/lib/notifications-item/notifications-item.component.mjs +0 -100
- package/esm2020/notifications/lib/notifications-list/notifications-list.component.mjs +0 -47
- package/esm2020/notifications/lib/notifications.module.mjs +0 -30
- package/esm2020/notifications/lib/notifications.service.mjs +0 -141
- package/esm2020/permissions/lib/directives/permission.directive.mjs +0 -88
- package/esm2020/permissions/lib/guards/permission.guard.mjs +0 -56
- package/esm2020/permissions/lib/permissions.module.mjs +0 -39
- package/esm2020/permissions/lib/permissions.service.mjs +0 -96
- package/esm2020/recaptcha/lib/recaptcha/recaptcha.component.mjs +0 -219
- package/esm2020/recaptcha/lib/recaptcha-loader.service.mjs +0 -95
- package/esm2020/recaptcha/lib/recaptcha.module.mjs +0 -27
- package/esm2020/storage/lib/storage.service.mjs +0 -109
- package/esm2020/table/lib/components/table/table.component.mjs +0 -191
- package/esm2020/table/lib/components/table-cell/table-cell.component.mjs +0 -11
- package/esm2020/table/lib/components/table-header-cell/table-header-cell.component.mjs +0 -131
- package/esm2020/table/lib/components/table-pager/table-pager.component.mjs +0 -136
- package/esm2020/table/lib/data/generic.data.mjs +0 -72
- package/esm2020/table/lib/table.module.mjs +0 -42
- package/esm2020/theming/lib/theming.directive.mjs +0 -38
- package/esm2020/theming/lib/theming.module.mjs +0 -16
- package/esm2020/tooltip/lib/tooltip-container/tooltip-container.component.mjs +0 -31
- package/esm2020/tooltip/lib/tooltip.directive.mjs +0 -140
- package/esm2020/tooltip/lib/tooltip.module.mjs +0 -31
- package/esm2020/utils/lib/directives/autosize.directive.mjs +0 -72
- package/esm2020/utils/lib/directives/focus-trap.directive.mjs +0 -77
- package/esm2020/utils/lib/directives/focus.directive.mjs +0 -37
- package/esm2020/utils/lib/directives/template.directive.mjs +0 -28
- package/esm2020/utils/lib/utils.module.mjs +0 -35
- package/esm2020/utils/public_api.mjs +0 -6
- package/fesm2015/bravobit-bb-foundation-auth.mjs +0 -851
- package/fesm2015/bravobit-bb-foundation-auth.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation-collections.mjs +0 -474
- package/fesm2015/bravobit-bb-foundation-collections.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation-controls.mjs +0 -1217
- package/fesm2015/bravobit-bb-foundation-controls.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation-dashboard.mjs +0 -417
- package/fesm2015/bravobit-bb-foundation-dashboard.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation-dialog.mjs +0 -512
- package/fesm2015/bravobit-bb-foundation-dialog.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation-elements.mjs +0 -1883
- package/fesm2015/bravobit-bb-foundation-elements.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation-http.mjs +0 -176
- package/fesm2015/bravobit-bb-foundation-http.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation-localize.mjs +0 -835
- package/fesm2015/bravobit-bb-foundation-localize.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation-masking.mjs +0 -334
- package/fesm2015/bravobit-bb-foundation-masking.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation-notifications.mjs +0 -357
- package/fesm2015/bravobit-bb-foundation-notifications.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation-permissions.mjs +0 -310
- package/fesm2015/bravobit-bb-foundation-permissions.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation-recaptcha.mjs +0 -349
- package/fesm2015/bravobit-bb-foundation-rxjs.mjs +0 -22
- package/fesm2015/bravobit-bb-foundation-rxjs.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation-storage.mjs +0 -418
- package/fesm2015/bravobit-bb-foundation-storage.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation-table.mjs +0 -603
- package/fesm2015/bravobit-bb-foundation-table.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation-theming.mjs +0 -382
- package/fesm2015/bravobit-bb-foundation-theming.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation-tooltip.mjs +0 -210
- package/fesm2015/bravobit-bb-foundation-tooltip.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation-utils.mjs +0 -246
- package/fesm2015/bravobit-bb-foundation-utils.mjs.map +0 -1
- package/fesm2015/bravobit-bb-foundation.mjs +0 -929
- package/fesm2015/bravobit-bb-foundation.mjs.map +0 -1
- package/fesm2020/bravobit-bb-foundation-elements.mjs.map +0 -1
- package/fesm2020/bravobit-bb-foundation-recaptcha.mjs.map +0 -1
- package/fesm2020/bravobit-bb-foundation-table.mjs.map +0 -1
- package/fesm2020/bravobit-bb-foundation-utils.mjs.map +0 -1
- /package/{esm2020 → esm2022}/auth/bravobit-bb-foundation-auth.mjs +0 -0
- /package/{esm2020 → esm2022}/auth/lib/auth.session.mjs +0 -0
- /package/{esm2020 → esm2022}/auth/lib/directives/abstract.directive.mjs +0 -0
- /package/{esm2020 → esm2022}/auth/lib/helpers/jwt.helper.mjs +0 -0
- /package/{esm2020 → esm2022}/auth/lib/interfaces/config.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/auth/lib/interfaces/provider.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/auth/lib/interfaces/token.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/auth/lib/providers/email.provider.mjs +0 -0
- /package/{esm2020 → esm2022}/auth/lib/providers/verify.provider.mjs +0 -0
- /package/{esm2020 → esm2022}/auth/lib/tokens/use-authorization.token.mjs +0 -0
- /package/{esm2020 → esm2022}/auth/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/bravobit-bb-foundation.mjs +0 -0
- /package/{esm2020 → esm2022}/collections/bravobit-bb-foundation-collections.mjs +0 -0
- /package/{esm2020 → esm2022}/collections/lib/collection.mjs +0 -0
- /package/{esm2020 → esm2022}/collections/lib/interfaces/collection.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/collections/lib/providers/api-collection.provider.mjs +0 -0
- /package/{esm2020 → esm2022}/collections/lib/providers/collection.provider.mjs +0 -0
- /package/{esm2020 → esm2022}/collections/lib/providers/local-collection.provider.mjs +0 -0
- /package/{esm2020 → esm2022}/collections/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/controls/bravobit-bb-foundation-controls.mjs +0 -0
- /package/{esm2020 → esm2022}/controls/lib/control-error/control-error/control-error.animation.mjs +0 -0
- /package/{esm2020 → esm2022}/controls/lib/control-error/control-error.defaults.mjs +0 -0
- /package/{esm2020 → esm2022}/controls/lib/control-error/control-error.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/controls/lib/control-error/control-error.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/controls/lib/controls.interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/controls/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/dashboard/bravobit-bb-foundation-dashboard.mjs +0 -0
- /package/{esm2020 → esm2022}/dashboard/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/dialog/bravobit-bb-foundation-dialog.mjs +0 -0
- /package/{esm2020 → esm2022}/dialog/lib/dialog-container/dialog-container.animations.mjs +0 -0
- /package/{esm2020 → esm2022}/dialog/lib/dialog-overlay/dialog-overlay.animations.mjs +0 -0
- /package/{esm2020 → esm2022}/dialog/lib/dialog.interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/dialog/lib/dialog.ref.mjs +0 -0
- /package/{esm2020 → esm2022}/dialog/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/elements/bravobit-bb-foundation-elements.mjs +0 -0
- /package/{esm2020 → esm2022}/elements/lib/elements.interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/elements/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/http/bravobit-bb-foundation-http.mjs +0 -0
- /package/{esm2020 → esm2022}/http/lib/classes/http.config.mjs +0 -0
- /package/{esm2020 → esm2022}/http/lib/classes/http.error.mjs +0 -0
- /package/{esm2020 → esm2022}/http/lib/http.interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/http/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/functions/date.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/functions/password.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/miscellaneous/regex.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/miscellaneous/validator.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/mixins/can-disable.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/mixins/can-hide-errors.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/mixins/can-load.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/mixins/constructor.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/mixins/has-error.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/mixins/is-focused.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/mixins/is-grouped.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/mixins/is-readonly.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/mixins/is-required.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/tokens/accept-language.token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/tokens/base-url.token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/tokens/cookie.token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/tokens/location.token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/tokens/navigator.token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/tokens/window.token.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/bravobit-bb-foundation-localize.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/lib/dictionary/dictionary.class.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/lib/dictionary/dictionary.context.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/lib/dictionary/dictionary.data.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/lib/functions/date.function.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/lib/functions/lowercase.function.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/lib/functions/uppercase.function.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/lib/handlers/missing.handler.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/lib/interfaces/config.interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/lib/interfaces/functions.interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/lib/interfaces/handlers.interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/lib/interfaces/options.interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/lib/interfaces/transforms.interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/lib/locale.token.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/lib/localizations/dutch.localization.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/lib/localizations/english.localization.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/lib/transforms/abstract.transform.mjs +0 -0
- /package/{esm2020 → esm2022}/localize/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/masking/bravobit-bb-foundation-masking.mjs +0 -0
- /package/{esm2020 → esm2022}/masking/lib/input-mask.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/masking/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/notifications/bravobit-bb-foundation-notifications.mjs +0 -0
- /package/{esm2020 → esm2022}/notifications/lib/notifications.animations.mjs +0 -0
- /package/{esm2020 → esm2022}/notifications/lib/notifications.interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/notifications/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/permissions/bravobit-bb-foundation-permissions.mjs +0 -0
- /package/{esm2020 → esm2022}/permissions/lib/handlers/abstract.handler.mjs +0 -0
- /package/{esm2020 → esm2022}/permissions/lib/handlers/local.handler.mjs +0 -0
- /package/{esm2020 → esm2022}/permissions/lib/permissions.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/permissions/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/recaptcha/bravobit-bb-foundation-recaptcha.mjs +0 -0
- /package/{esm2020 → esm2022}/recaptcha/lib/recaptcha.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/recaptcha/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/rxjs/bravobit-bb-foundation-rxjs.mjs +0 -0
- /package/{esm2020 → esm2022}/rxjs/lib/observables/get-control-value.observable.mjs +0 -0
- /package/{esm2020 → esm2022}/rxjs/lib/operators/combine-latest-map.operator.mjs +0 -0
- /package/{esm2020 → esm2022}/rxjs/lib/operators/filter-nil.operator.mjs +0 -0
- /package/{esm2020 → esm2022}/rxjs/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/storage/bravobit-bb-foundation-storage.mjs +0 -0
- /package/{esm2020 → esm2022}/storage/lib/interfaces/attributes.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/storage/lib/interfaces/memory.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/storage/lib/interfaces/strategy.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/storage/lib/strategies/cookie-storage.strategy.mjs +0 -0
- /package/{esm2020 → esm2022}/storage/lib/strategies/memory-storage.strategy.mjs +0 -0
- /package/{esm2020 → esm2022}/storage/lib/strategies/polyfill-storage.strategy.mjs +0 -0
- /package/{esm2020 → esm2022}/storage/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/table/bravobit-bb-foundation-table.mjs +0 -0
- /package/{esm2020 → esm2022}/table/lib/data/datasource.data.mjs +0 -0
- /package/{esm2020 → esm2022}/table/lib/interfaces/datasource.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/table/lib/interfaces/table.interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/table/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/theming/bravobit-bb-foundation-theming.mjs +0 -0
- /package/{esm2020 → esm2022}/theming/lib/themes/checkbox-group.theme.mjs +0 -0
- /package/{esm2020 → esm2022}/theming/lib/themes/checkbox.theme.mjs +0 -0
- /package/{esm2020 → esm2022}/theming/lib/themes/control-error.theme.mjs +0 -0
- /package/{esm2020 → esm2022}/theming/lib/themes/form-control-addon.theme.mjs +0 -0
- /package/{esm2020 → esm2022}/theming/lib/themes/form-control.theme.mjs +0 -0
- /package/{esm2020 → esm2022}/theming/lib/themes/radio-button.theme.mjs +0 -0
- /package/{esm2020 → esm2022}/theming/lib/themes/radio-group.theme.mjs +0 -0
- /package/{esm2020 → esm2022}/theming/lib/themes/toggle-group.theme.mjs +0 -0
- /package/{esm2020 → esm2022}/theming/lib/themes/toggle.theme.mjs +0 -0
- /package/{esm2020 → esm2022}/theming/lib/theming.data.mjs +0 -0
- /package/{esm2020 → esm2022}/theming/lib/theming.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/theming/lib/utils/theming.variable.mjs +0 -0
- /package/{esm2020 → esm2022}/theming/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/tooltip/bravobit-bb-foundation-tooltip.mjs +0 -0
- /package/{esm2020 → esm2022}/tooltip/lib/tooltip.interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/tooltip/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/bravobit-bb-foundation-utils.mjs +0 -0
- /package/{fesm2020 → fesm2022}/bravobit-bb-foundation-rxjs.mjs +0 -0
- /package/{fesm2020 → fesm2022}/bravobit-bb-foundation-rxjs.mjs.map +0 -0
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { ACCEPT_LANGUAGE } from '../tokens/accept-language.token';
|
|
2
|
-
import { Inject, Injectable, Optional } from '@angular/core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class Languages {
|
|
5
|
-
constructor(_acceptLanguage) {
|
|
6
|
-
this._acceptLanguage = _acceptLanguage;
|
|
7
|
-
// Data.
|
|
8
|
-
this._data = [];
|
|
9
|
-
this.getLanguages = () => {
|
|
10
|
-
// If defined we must be in a server environment.
|
|
11
|
-
if (this._acceptLanguage) {
|
|
12
|
-
return this._acceptLanguage;
|
|
13
|
-
}
|
|
14
|
-
// Try to get the languages from the navigator.
|
|
15
|
-
if (typeof navigator !== 'object') {
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
18
|
-
let t = 'anguage';
|
|
19
|
-
let n = navigator;
|
|
20
|
-
let f = n['l' + t + 's'];
|
|
21
|
-
const data = f && f.length ? f : (t = n['l' + t] ||
|
|
22
|
-
n['browserL' + t] ||
|
|
23
|
-
n['userL' + t]) ? [t] : t;
|
|
24
|
-
return typeof data === 'string'
|
|
25
|
-
? data
|
|
26
|
-
: data.join(';');
|
|
27
|
-
};
|
|
28
|
-
this._data = this.initialize();
|
|
29
|
-
}
|
|
30
|
-
get all() {
|
|
31
|
-
return this._data;
|
|
32
|
-
}
|
|
33
|
-
initialize() {
|
|
34
|
-
// Get the languages.
|
|
35
|
-
const data = this.getLanguages();
|
|
36
|
-
// Parse all languages by using a regex.
|
|
37
|
-
const strings = (data || '')
|
|
38
|
-
.match(/((([a-zA-Z]+(-[a-zA-Z0-9]+){0,2})|\*)(;q=[0-1](\.[0-9]+)?)?)*/g);
|
|
39
|
-
// Get the content by parsing the strings.
|
|
40
|
-
const content = strings.map(item => {
|
|
41
|
-
if (!item) {
|
|
42
|
-
return null;
|
|
43
|
-
}
|
|
44
|
-
const bits = item.split(';');
|
|
45
|
-
const ietf = bits[0].split('-');
|
|
46
|
-
const hasScript = ietf.length === 3;
|
|
47
|
-
return {
|
|
48
|
-
code: ietf[0],
|
|
49
|
-
script: hasScript ? ietf[1] : null,
|
|
50
|
-
region: hasScript ? ietf[2] : ietf[1],
|
|
51
|
-
quality: bits[1] ? parseFloat(bits[1].split('=')[1]) : 1.0
|
|
52
|
-
};
|
|
53
|
-
});
|
|
54
|
-
// Filter out all the empty items
|
|
55
|
-
// and sort them by the quality.
|
|
56
|
-
return content
|
|
57
|
-
.filter(item => !!item)
|
|
58
|
-
.sort((a, b) => b.quality - a.quality);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
Languages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: Languages, deps: [{ token: ACCEPT_LANGUAGE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
62
|
-
Languages.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: Languages, providedIn: 'root' });
|
|
63
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: Languages, decorators: [{
|
|
64
|
-
type: Injectable,
|
|
65
|
-
args: [{
|
|
66
|
-
providedIn: 'root'
|
|
67
|
-
}]
|
|
68
|
-
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
69
|
-
type: Optional
|
|
70
|
-
}, {
|
|
71
|
-
type: Inject,
|
|
72
|
-
args: [ACCEPT_LANGUAGE]
|
|
73
|
-
}] }]; } });
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2VzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL3NyYy9saWIvY29yZS9zZXJ2aWNlcy9sYW5ndWFnZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDOztBQUszRCxNQUFNLE9BQU8sU0FBUztJQUtsQixZQUF5RCxlQUF3QjtRQUF4QixvQkFBZSxHQUFmLGVBQWUsQ0FBUztRQUhqRixRQUFRO1FBQ1MsVUFBSyxHQUEwRSxFQUFFLENBQUM7UUEyQzNGLGlCQUFZLEdBQUcsR0FBRyxFQUFFO1lBQ3hCLGlEQUFpRDtZQUNqRCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7Z0JBQ3RCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQzthQUMvQjtZQUVELCtDQUErQztZQUMvQyxJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsRUFBRTtnQkFDL0IsT0FBTyxJQUFJLENBQUM7YUFDZjtZQUVELElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQztZQUNsQixJQUFJLENBQUMsR0FBRyxTQUFTLENBQUM7WUFDbEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFFekIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7Z0JBQzVDLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO2dCQUNqQixDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUU5QixPQUFPLE9BQU8sSUFBSSxLQUFLLFFBQVE7Z0JBQzNCLENBQUMsQ0FBQyxJQUFJO2dCQUNOLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLENBQUMsQ0FBQztRQTlERSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBSSxHQUFHO1FBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFTyxVQUFVO1FBQ2QscUJBQXFCO1FBQ3JCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVqQyx3Q0FBd0M7UUFDeEMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO2FBQ3ZCLEtBQUssQ0FBQyxnRUFBZ0UsQ0FBQyxDQUFDO1FBRTdFLDBDQUEwQztRQUMxQyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQy9CLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ1AsT0FBTyxJQUFJLENBQUM7YUFDZjtZQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDN0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztZQUVwQyxPQUFPO2dCQUNILElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNiLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtnQkFDbEMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNyQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHO2FBQzdELENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztRQUVILGlDQUFpQztRQUNqQyxnQ0FBZ0M7UUFDaEMsT0FBTyxPQUFPO2FBQ1QsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQzthQUN0QixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQyxDQUFDOztzR0E1Q1EsU0FBUyxrQkFLYyxlQUFlOzBHQUx0QyxTQUFTLGNBRk4sTUFBTTsyRkFFVCxTQUFTO2tCQUhyQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBTWdCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QUNDRVBUX0xBTkdVQUdFfSBmcm9tICcuLi90b2tlbnMvYWNjZXB0LWxhbmd1YWdlLnRva2VuJztcbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTGFuZ3VhZ2VzIHtcblxuICAgIC8vIERhdGEuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGF0YTogeyBjb2RlOiBzdHJpbmcsIHNjcmlwdD86IHN0cmluZywgcmVnaW9uPzogc3RyaW5nLCBxdWFsaXR5OiBudW1iZXIgfVtdID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KEFDQ0VQVF9MQU5HVUFHRSkgcHJpdmF0ZSBfYWNjZXB0TGFuZ3VhZ2U/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fZGF0YSA9IHRoaXMuaW5pdGlhbGl6ZSgpO1xuICAgIH1cblxuICAgIGdldCBhbGwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZSgpIHtcbiAgICAgICAgLy8gR2V0IHRoZSBsYW5ndWFnZXMuXG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldExhbmd1YWdlcygpO1xuXG4gICAgICAgIC8vIFBhcnNlIGFsbCBsYW5ndWFnZXMgYnkgdXNpbmcgYSByZWdleC5cbiAgICAgICAgY29uc3Qgc3RyaW5ncyA9IChkYXRhIHx8ICcnKVxuICAgICAgICAgICAgLm1hdGNoKC8oKChbYS16QS1aXSsoLVthLXpBLVowLTldKyl7MCwyfSl8XFwqKSg7cT1bMC0xXShcXC5bMC05XSspPyk/KSovZyk7XG5cbiAgICAgICAgLy8gR2V0IHRoZSBjb250ZW50IGJ5IHBhcnNpbmcgdGhlIHN0cmluZ3MuXG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBzdHJpbmdzLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgIGlmICghaXRlbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBiaXRzID0gaXRlbS5zcGxpdCgnOycpO1xuICAgICAgICAgICAgY29uc3QgaWV0ZiA9IGJpdHNbMF0uc3BsaXQoJy0nKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1NjcmlwdCA9IGlldGYubGVuZ3RoID09PSAzO1xuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGNvZGU6IGlldGZbMF0sXG4gICAgICAgICAgICAgICAgc2NyaXB0OiBoYXNTY3JpcHQgPyBpZXRmWzFdIDogbnVsbCxcbiAgICAgICAgICAgICAgICByZWdpb246IGhhc1NjcmlwdCA/IGlldGZbMl0gOiBpZXRmWzFdLFxuICAgICAgICAgICAgICAgIHF1YWxpdHk6IGJpdHNbMV0gPyBwYXJzZUZsb2F0KGJpdHNbMV0uc3BsaXQoJz0nKVsxXSkgOiAxLjBcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEZpbHRlciBvdXQgYWxsIHRoZSBlbXB0eSBpdGVtc1xuICAgICAgICAvLyBhbmQgc29ydCB0aGVtIGJ5IHRoZSBxdWFsaXR5LlxuICAgICAgICByZXR1cm4gY29udGVudFxuICAgICAgICAgICAgLmZpbHRlcihpdGVtID0+ICEhaXRlbSlcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBiLnF1YWxpdHkgLSBhLnF1YWxpdHkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TGFuZ3VhZ2VzID0gKCkgPT4ge1xuICAgICAgICAvLyBJZiBkZWZpbmVkIHdlIG11c3QgYmUgaW4gYSBzZXJ2ZXIgZW52aXJvbm1lbnQuXG4gICAgICAgIGlmICh0aGlzLl9hY2NlcHRMYW5ndWFnZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FjY2VwdExhbmd1YWdlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVHJ5IHRvIGdldCB0aGUgbGFuZ3VhZ2VzIGZyb20gdGhlIG5hdmlnYXRvci5cbiAgICAgICAgaWYgKHR5cGVvZiBuYXZpZ2F0b3IgIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB0ID0gJ2FuZ3VhZ2UnO1xuICAgICAgICBsZXQgbiA9IG5hdmlnYXRvcjtcbiAgICAgICAgbGV0IGYgPSBuWydsJyArIHQgKyAncyddO1xuXG4gICAgICAgIGNvbnN0IGRhdGEgPSBmICYmIGYubGVuZ3RoID8gZiA6ICh0ID0gblsnbCcgKyB0XSB8fFxuICAgICAgICAgICAgblsnYnJvd3NlckwnICsgdF0gfHxcbiAgICAgICAgICAgIG5bJ3VzZXJMJyArIHRdKSA/IFt0XSA6IHQ7XG5cbiAgICAgICAgcmV0dXJuIHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgPyBkYXRhXG4gICAgICAgICAgICA6IGRhdGEuam9pbignOycpO1xuICAgIH07XG5cbn1cbiJdfQ==
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { distinctUntilChanged, map, shareReplay } from 'rxjs/operators';
|
|
2
|
-
import { Inject, Injectable, Optional } from '@angular/core';
|
|
3
|
-
import { fromEvent, merge, Observable, of } from 'rxjs';
|
|
4
|
-
import { NAVIGATOR } from '../tokens/navigator.token';
|
|
5
|
-
import { WINDOW } from '../tokens/window.token';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@angular/cdk/platform";
|
|
8
|
-
export class Network {
|
|
9
|
-
constructor(_platform, _window, _navigator) {
|
|
10
|
-
this._platform = _platform;
|
|
11
|
-
this._window = _window;
|
|
12
|
-
this._navigator = _navigator;
|
|
13
|
-
// Data.
|
|
14
|
-
this._online$ = of(true);
|
|
15
|
-
this.getOnlineObservable();
|
|
16
|
-
}
|
|
17
|
-
online() {
|
|
18
|
-
return this._online$;
|
|
19
|
-
}
|
|
20
|
-
getOnlineObservable() {
|
|
21
|
-
// Validate we are on a browser.
|
|
22
|
-
if (!this._platform.isBrowser) {
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
// Get all the events from the window.
|
|
26
|
-
const online$ = fromEvent(this._window, 'online').pipe(map(() => true));
|
|
27
|
-
const offline$ = fromEvent(this._window, 'offline').pipe(map(() => false));
|
|
28
|
-
const now$ = new Observable(subscriber => {
|
|
29
|
-
subscriber.next(this._navigator?.onLine);
|
|
30
|
-
subscriber.complete();
|
|
31
|
-
});
|
|
32
|
-
// Merge all event so we get notified when
|
|
33
|
-
// a user is online/offline.
|
|
34
|
-
this._online$ = merge(now$, online$, offline$).pipe(map(value => value), distinctUntilChanged(), shareReplay({ refCount: true, bufferSize: 1 }));
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
Network.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: Network, deps: [{ token: i1.Platform }, { token: WINDOW, optional: true }, { token: NAVIGATOR, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
38
|
-
Network.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: Network, providedIn: 'root' });
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: Network, decorators: [{
|
|
40
|
-
type: Injectable,
|
|
41
|
-
args: [{
|
|
42
|
-
providedIn: 'root'
|
|
43
|
-
}]
|
|
44
|
-
}], ctorParameters: function () { return [{ type: i1.Platform }, { type: Window, decorators: [{
|
|
45
|
-
type: Optional
|
|
46
|
-
}, {
|
|
47
|
-
type: Inject,
|
|
48
|
-
args: [WINDOW]
|
|
49
|
-
}] }, { type: Navigator, decorators: [{
|
|
50
|
-
type: Optional
|
|
51
|
-
}, {
|
|
52
|
-
type: Inject,
|
|
53
|
-
args: [NAVIGATOR]
|
|
54
|
-
}] }]; } });
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9zcmMvbGliL2NvcmUvc2VydmljZXMvbmV0d29yay5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRXBELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBSzlDLE1BQU0sT0FBTyxPQUFPO0lBS2hCLFlBQW9CLFNBQW1CLEVBQ1MsT0FBZ0IsRUFDYixVQUFzQjtRQUZyRCxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ1MsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNiLGVBQVUsR0FBVixVQUFVLENBQVk7UUFMekUsUUFBUTtRQUNBLGFBQVEsR0FBd0IsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBSzdDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxNQUFNO1FBQ0YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFTyxtQkFBbUI7UUFDdkIsZ0NBQWdDO1FBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRTtZQUMzQixPQUFPO1NBQ1Y7UUFFRCxzQ0FBc0M7UUFDdEMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMzRSxNQUFNLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNyQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDekMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO1FBRUgsMENBQTBDO1FBQzFDLDRCQUE0QjtRQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FDL0MsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBZ0IsQ0FBQyxFQUM5QixvQkFBb0IsRUFBRSxFQUN0QixXQUFXLENBQUMsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUMvQyxDQUFDO0lBQ04sQ0FBQzs7b0dBcENRLE9BQU8sMENBTWdCLE1BQU0sNkJBQ04sU0FBUzt3R0FQaEMsT0FBTyxjQUZKLE1BQU07MkZBRVQsT0FBTztrQkFIbkIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQU9nQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLE1BQU07OzBCQUN6QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Rpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHNoYXJlUmVwbGF5fSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtmcm9tRXZlbnQsIG1lcmdlLCBPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge05BVklHQVRPUn0gZnJvbSAnLi4vdG9rZW5zL25hdmlnYXRvci50b2tlbic7XG5pbXBvcnQge1BsYXRmb3JtfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHtXSU5ET1d9IGZyb20gJy4uL3Rva2Vucy93aW5kb3cudG9rZW4nO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE5ldHdvcmsge1xuXG4gICAgLy8gRGF0YS5cbiAgICBwcml2YXRlIF9vbmxpbmUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gb2YodHJ1ZSk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9wbGF0Zm9ybTogUGxhdGZvcm0sXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChXSU5ET1cpIHByaXZhdGUgX3dpbmRvdz86IFdpbmRvdyxcbiAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE5BVklHQVRPUikgcHJpdmF0ZSBfbmF2aWdhdG9yPzogTmF2aWdhdG9yKSB7XG4gICAgICAgIHRoaXMuZ2V0T25saW5lT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIG9ubGluZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29ubGluZSQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRPbmxpbmVPYnNlcnZhYmxlKCkge1xuICAgICAgICAvLyBWYWxpZGF0ZSB3ZSBhcmUgb24gYSBicm93c2VyLlxuICAgICAgICBpZiAoIXRoaXMuX3BsYXRmb3JtLmlzQnJvd3Nlcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gR2V0IGFsbCB0aGUgZXZlbnRzIGZyb20gdGhlIHdpbmRvdy5cbiAgICAgICAgY29uc3Qgb25saW5lJCA9IGZyb21FdmVudCh0aGlzLl93aW5kb3csICdvbmxpbmUnKS5waXBlKG1hcCgoKSA9PiB0cnVlKSk7XG4gICAgICAgIGNvbnN0IG9mZmxpbmUkID0gZnJvbUV2ZW50KHRoaXMuX3dpbmRvdywgJ29mZmxpbmUnKS5waXBlKG1hcCgoKSA9PiBmYWxzZSkpO1xuICAgICAgICBjb25zdCBub3ckID0gbmV3IE9ic2VydmFibGUoc3Vic2NyaWJlciA9PiB7XG4gICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQodGhpcy5fbmF2aWdhdG9yPy5vbkxpbmUpO1xuICAgICAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBNZXJnZSBhbGwgZXZlbnQgc28gd2UgZ2V0IG5vdGlmaWVkIHdoZW5cbiAgICAgICAgLy8gYSB1c2VyIGlzIG9ubGluZS9vZmZsaW5lLlxuICAgICAgICB0aGlzLl9vbmxpbmUkID0gbWVyZ2Uobm93JCwgb25saW5lJCwgb2ZmbGluZSQpLnBpcGUoXG4gICAgICAgICAgICBtYXAodmFsdWUgPT4gdmFsdWUgYXMgYm9vbGVhbiksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgc2hhcmVSZXBsYXkoe3JlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbn1cbiJdfQ==
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { Inject, Injectable, Optional } from '@angular/core';
|
|
2
|
-
import { debounceTime, startWith } from 'rxjs/operators';
|
|
3
|
-
import { WINDOW } from '../tokens/window.token';
|
|
4
|
-
import { fromEvent, Subscription } from 'rxjs';
|
|
5
|
-
import { DOCUMENT } from '@angular/common';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@angular/cdk/platform";
|
|
8
|
-
export class Patch {
|
|
9
|
-
constructor(_platform, _window, _document) {
|
|
10
|
-
this._platform = _platform;
|
|
11
|
-
this._window = _window;
|
|
12
|
-
this._document = _document;
|
|
13
|
-
this._hasPatchedMobileVerticalHeight = false;
|
|
14
|
-
// Subscriptions.
|
|
15
|
-
this._subscription = new Subscription();
|
|
16
|
-
}
|
|
17
|
-
mobileVerticalHeight() {
|
|
18
|
-
// Check if the user has already patched
|
|
19
|
-
// the mobile vertical height.
|
|
20
|
-
if (this._hasPatchedMobileVerticalHeight) {
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
this.periodicallySetDocumentVerticalProperty();
|
|
24
|
-
this._hasPatchedMobileVerticalHeight = true;
|
|
25
|
-
}
|
|
26
|
-
ngOnDestroy() {
|
|
27
|
-
this._subscription?.unsubscribe();
|
|
28
|
-
}
|
|
29
|
-
periodicallySetDocumentVerticalProperty() {
|
|
30
|
-
// Validate we are using a browser.
|
|
31
|
-
if (!this._platform.isBrowser) {
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
// Listen to a debounced window resize event.
|
|
35
|
-
const resize$ = fromEvent(this._window, 'resize').pipe(debounceTime(25), startWith(0));
|
|
36
|
-
// Subscribe to the resize observable.
|
|
37
|
-
const subscription = resize$.subscribe(() => {
|
|
38
|
-
const verticalHeight = this._window?.innerHeight * 0.01;
|
|
39
|
-
this._document?.documentElement?.style?.setProperty('--vh', `${verticalHeight}px`);
|
|
40
|
-
});
|
|
41
|
-
// Save the subscription so we can destroy it later.
|
|
42
|
-
this._subscription.add(subscription);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
Patch.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: Patch, deps: [{ token: i1.Platform }, { token: WINDOW, optional: true }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
46
|
-
Patch.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: Patch, providedIn: 'root' });
|
|
47
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: Patch, decorators: [{
|
|
48
|
-
type: Injectable,
|
|
49
|
-
args: [{
|
|
50
|
-
providedIn: 'root'
|
|
51
|
-
}]
|
|
52
|
-
}], ctorParameters: function () { return [{ type: i1.Platform }, { type: Window, decorators: [{
|
|
53
|
-
type: Optional
|
|
54
|
-
}, {
|
|
55
|
-
type: Inject,
|
|
56
|
-
args: [WINDOW]
|
|
57
|
-
}] }, { type: Document, decorators: [{
|
|
58
|
-
type: Optional
|
|
59
|
-
}, {
|
|
60
|
-
type: Inject,
|
|
61
|
-
args: [DOCUMENT]
|
|
62
|
-
}] }]; } });
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0Y2guc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vc3JjL2xpYi9jb3JlL3NlcnZpY2VzL3BhdGNoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQWEsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxZQUFZLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzlDLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBS3pDLE1BQU0sT0FBTyxLQUFLO0lBT2QsWUFBb0IsU0FBbUIsRUFDUyxPQUFnQixFQUNkLFNBQW9CO1FBRmxELGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDUyxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2QsY0FBUyxHQUFULFNBQVMsQ0FBVztRQVA5RCxvQ0FBK0IsR0FBWSxLQUFLLENBQUM7UUFFekQsaUJBQWlCO1FBQ1Qsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBSzNDLENBQUM7SUFFRCxvQkFBb0I7UUFDaEIsd0NBQXdDO1FBQ3hDLDhCQUE4QjtRQUM5QixJQUFJLElBQUksQ0FBQywrQkFBK0IsRUFBRTtZQUN0QyxPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsdUNBQXVDLEVBQUUsQ0FBQztRQUMvQyxJQUFJLENBQUMsK0JBQStCLEdBQUcsSUFBSSxDQUFDO0lBQ2hELENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRU8sdUNBQXVDO1FBQzNDLG1DQUFtQztRQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUU7WUFDM0IsT0FBTztTQUNWO1FBRUQsNkNBQTZDO1FBQzdDLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FDbEQsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUNoQixTQUFTLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztRQUVGLHNDQUFzQztRQUN0QyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN4QyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDeEQsSUFBSSxDQUFDLFNBQVMsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxjQUFjLElBQUksQ0FBQyxDQUFDO1FBQ3ZGLENBQUMsQ0FBQyxDQUFDO1FBRUgsb0RBQW9EO1FBQ3BELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7O2tHQS9DUSxLQUFLLDBDQVFrQixNQUFNLDZCQUNOLFFBQVE7c0dBVC9CLEtBQUssY0FGRixNQUFNOzJGQUVULEtBQUs7a0JBSGpCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFTZ0IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxNQUFNOzswQkFDekIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIE9uRGVzdHJveSwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIHN0YXJ0V2l0aH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtQbGF0Zm9ybX0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcbmltcG9ydCB7V0lORE9XfSBmcm9tICcuLi90b2tlbnMvd2luZG93LnRva2VuJztcbmltcG9ydCB7ZnJvbUV2ZW50LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBQYXRjaCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgICBwcml2YXRlIF9oYXNQYXRjaGVkTW9iaWxlVmVydGljYWxIZWlnaHQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8vIFN1YnNjcmlwdGlvbnMuXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfcGxhdGZvcm06IFBsYXRmb3JtLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoV0lORE9XKSBwcml2YXRlIF93aW5kb3c/OiBXaW5kb3csXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQ/OiBEb2N1bWVudCkge1xuICAgIH1cblxuICAgIG1vYmlsZVZlcnRpY2FsSGVpZ2h0KCkge1xuICAgICAgICAvLyBDaGVjayBpZiB0aGUgdXNlciBoYXMgYWxyZWFkeSBwYXRjaGVkXG4gICAgICAgIC8vIHRoZSBtb2JpbGUgdmVydGljYWwgaGVpZ2h0LlxuICAgICAgICBpZiAodGhpcy5faGFzUGF0Y2hlZE1vYmlsZVZlcnRpY2FsSGVpZ2h0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnBlcmlvZGljYWxseVNldERvY3VtZW50VmVydGljYWxQcm9wZXJ0eSgpO1xuICAgICAgICB0aGlzLl9oYXNQYXRjaGVkTW9iaWxlVmVydGljYWxIZWlnaHQgPSB0cnVlO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwZXJpb2RpY2FsbHlTZXREb2N1bWVudFZlcnRpY2FsUHJvcGVydHkoKSB7XG4gICAgICAgIC8vIFZhbGlkYXRlIHdlIGFyZSB1c2luZyBhIGJyb3dzZXIuXG4gICAgICAgIGlmICghdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBMaXN0ZW4gdG8gYSBkZWJvdW5jZWQgd2luZG93IHJlc2l6ZSBldmVudC5cbiAgICAgICAgY29uc3QgcmVzaXplJCA9IGZyb21FdmVudCh0aGlzLl93aW5kb3csICdyZXNpemUnKS5waXBlKFxuICAgICAgICAgICAgZGVib3VuY2VUaW1lKDI1KSxcbiAgICAgICAgICAgIHN0YXJ0V2l0aCgwKVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIFN1YnNjcmliZSB0byB0aGUgcmVzaXplIG9ic2VydmFibGUuXG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHJlc2l6ZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZlcnRpY2FsSGVpZ2h0ID0gdGhpcy5fd2luZG93Py5pbm5lckhlaWdodCAqIDAuMDE7XG4gICAgICAgICAgICB0aGlzLl9kb2N1bWVudD8uZG9jdW1lbnRFbGVtZW50Py5zdHlsZT8uc2V0UHJvcGVydHkoJy0tdmgnLCBgJHt2ZXJ0aWNhbEhlaWdodH1weGApO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTYXZlIHRoZSBzdWJzY3JpcHRpb24gc28gd2UgY2FuIGRlc3Ryb3kgaXQgbGF0ZXIuXG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoc3Vic2NyaXB0aW9uKTtcbiAgICB9XG5cbn1cbiJdfQ==
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { APP_INITIALIZER, LOCALE_ID, NgModule } from '@angular/core';
|
|
2
|
-
import { BbLocalizeString } from './views/localize-string/localize-string.component';
|
|
3
|
-
import { LocalizeInterpolateTransform } from './transforms/interpolate.transform';
|
|
4
|
-
import { LocalizeReferenceTransform } from './transforms/reference.transform';
|
|
5
|
-
import { LocalizeLowercaseFunction } from './functions/lowercase.function';
|
|
6
|
-
import { LocalizeUppercaseFunction } from './functions/uppercase.function';
|
|
7
|
-
import { BbLocalizeTemplate } from './views/localize-template.directive';
|
|
8
|
-
import { LOCALIZE_TRANSFORM } from './interfaces/transforms.interfaces';
|
|
9
|
-
import { LOCALIZE_FUNCTION } from './interfaces/functions.interfaces';
|
|
10
|
-
import { LocalizeMissingHandler } from './handlers/missing.handler';
|
|
11
|
-
import { LocalizeDateFunction } from './functions/date.function';
|
|
12
|
-
import { LocalizeConfig } from './interfaces/config.interfaces';
|
|
13
|
-
import { UtilsModule } from '@bravobit/bb-foundation/utils';
|
|
14
|
-
import { CommonModule } from '@angular/common';
|
|
15
|
-
import { Localize } from './localize.service';
|
|
16
|
-
import { BbLocalize } from './localize.pipe';
|
|
17
|
-
import * as i0 from "@angular/core";
|
|
18
|
-
export class LocalizeModule {
|
|
19
|
-
static forRoot(config) {
|
|
20
|
-
if (config?.languages?.length <= 0) {
|
|
21
|
-
throw new Error('One or more languages should be supplied.');
|
|
22
|
-
}
|
|
23
|
-
if (config?.compareDictionaries && config?.mode === 'manual') {
|
|
24
|
-
console?.warn?.('You cannot enable "compareDictionaries" when having mode set to "manual"; This setting will be ignored.');
|
|
25
|
-
}
|
|
26
|
-
const mode = config?.mode ?? 'automatic';
|
|
27
|
-
return {
|
|
28
|
-
ngModule: LocalizeModule,
|
|
29
|
-
providers: [
|
|
30
|
-
// Angular providers.
|
|
31
|
-
...(mode === 'automatic' ? [
|
|
32
|
-
{ provide: APP_INITIALIZER, deps: [Localize], useFactory: initializeLocale, multi: true },
|
|
33
|
-
{ provide: LOCALE_ID, deps: [Localize], useFactory: getLocale }
|
|
34
|
-
] : []),
|
|
35
|
-
// Config provider.
|
|
36
|
-
{ provide: LocalizeConfig, useValue: config },
|
|
37
|
-
// Function providers.
|
|
38
|
-
{ provide: LOCALIZE_FUNCTION, useClass: LocalizeLowercaseFunction, multi: true },
|
|
39
|
-
{ provide: LOCALIZE_FUNCTION, useClass: LocalizeUppercaseFunction, multi: true },
|
|
40
|
-
{ provide: LOCALIZE_FUNCTION, useClass: LocalizeDateFunction, multi: true },
|
|
41
|
-
// Transform providers.
|
|
42
|
-
{ provide: LOCALIZE_TRANSFORM, useClass: LocalizeReferenceTransform, deps: [LocalizeConfig], multi: true },
|
|
43
|
-
{ provide: LOCALIZE_TRANSFORM, useClass: LocalizeInterpolateTransform, deps: [LocalizeConfig, LOCALIZE_FUNCTION], multi: true },
|
|
44
|
-
// Handler providers.
|
|
45
|
-
{ provide: LocalizeMissingHandler, useClass: LocalizeMissingHandler },
|
|
46
|
-
// Service providers.
|
|
47
|
-
Localize
|
|
48
|
-
]
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
LocalizeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: LocalizeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
53
|
-
LocalizeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.6", ngImport: i0, type: LocalizeModule, declarations: [BbLocalize,
|
|
54
|
-
BbLocalizeString,
|
|
55
|
-
BbLocalizeTemplate], imports: [CommonModule, UtilsModule], exports: [BbLocalize,
|
|
56
|
-
BbLocalizeString,
|
|
57
|
-
BbLocalizeTemplate] });
|
|
58
|
-
LocalizeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: LocalizeModule, imports: [CommonModule, UtilsModule] });
|
|
59
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: LocalizeModule, decorators: [{
|
|
60
|
-
type: NgModule,
|
|
61
|
-
args: [{
|
|
62
|
-
imports: [CommonModule, UtilsModule],
|
|
63
|
-
declarations: [
|
|
64
|
-
BbLocalize,
|
|
65
|
-
BbLocalizeString,
|
|
66
|
-
BbLocalizeTemplate
|
|
67
|
-
],
|
|
68
|
-
exports: [
|
|
69
|
-
BbLocalize,
|
|
70
|
-
BbLocalizeString,
|
|
71
|
-
BbLocalizeTemplate
|
|
72
|
-
]
|
|
73
|
-
}]
|
|
74
|
-
}] });
|
|
75
|
-
export function initializeLocale(localize) {
|
|
76
|
-
return localize.initialize();
|
|
77
|
-
}
|
|
78
|
-
export function getLocale(localize) {
|
|
79
|
-
return localize?.current?.locale ?? null;
|
|
80
|
-
}
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9sb2NhbGl6ZS9zcmMvbGliL2xvY2FsaXplLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsZUFBZSxFQUFFLFNBQVMsRUFBdUIsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBQ25GLE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hGLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQzVFLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BFLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDMUQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0saUJBQWlCLENBQUM7O0FBZTND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TSxJQUFJLElBQUksQ0FBQztBQUM3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBUFBfSU5JVElBTElaRVIsIExPQ0FMRV9JRCwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCYkxvY2FsaXplU3RyaW5nfSBmcm9tICcuL3ZpZXdzL2xvY2FsaXplLXN0cmluZy9sb2NhbGl6ZS1zdHJpbmcuY29tcG9uZW50JztcbmltcG9ydCB7TG9jYWxpemVJbnRlcnBvbGF0ZVRyYW5zZm9ybX0gZnJvbSAnLi90cmFuc2Zvcm1zL2ludGVycG9sYXRlLnRyYW5zZm9ybSc7XG5pbXBvcnQge0xvY2FsaXplUmVmZXJlbmNlVHJhbnNmb3JtfSBmcm9tICcuL3RyYW5zZm9ybXMvcmVmZXJlbmNlLnRyYW5zZm9ybSc7XG5pbXBvcnQge0xvY2FsaXplTG93ZXJjYXNlRnVuY3Rpb259IGZyb20gJy4vZnVuY3Rpb25zL2xvd2VyY2FzZS5mdW5jdGlvbic7XG5pbXBvcnQge0xvY2FsaXplVXBwZXJjYXNlRnVuY3Rpb259IGZyb20gJy4vZnVuY3Rpb25zL3VwcGVyY2FzZS5mdW5jdGlvbic7XG5pbXBvcnQge0JiTG9jYWxpemVUZW1wbGF0ZX0gZnJvbSAnLi92aWV3cy9sb2NhbGl6ZS10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtMT0NBTElaRV9UUkFOU0ZPUk19IGZyb20gJy4vaW50ZXJmYWNlcy90cmFuc2Zvcm1zLmludGVyZmFjZXMnO1xuaW1wb3J0IHtMT0NBTElaRV9GVU5DVElPTn0gZnJvbSAnLi9pbnRlcmZhY2VzL2Z1bmN0aW9ucy5pbnRlcmZhY2VzJztcbmltcG9ydCB7TG9jYWxpemVNaXNzaW5nSGFuZGxlcn0gZnJvbSAnLi9oYW5kbGVycy9taXNzaW5nLmhhbmRsZXInO1xuaW1wb3J0IHtMb2NhbGl6ZURhdGVGdW5jdGlvbn0gZnJvbSAnLi9mdW5jdGlvbnMvZGF0ZS5mdW5jdGlvbic7XG5pbXBvcnQge0xvY2FsaXplQ29uZmlnfSBmcm9tICcuL2ludGVyZmFjZXMvY29uZmlnLmludGVyZmFjZXMnO1xuaW1wb3J0IHtVdGlsc01vZHVsZX0gZnJvbSAnQGJyYXZvYml0L2JiLWZvdW5kYXRpb24vdXRpbHMnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0xvY2FsaXplfSBmcm9tICcuL2xvY2FsaXplLnNlcnZpY2UnO1xuaW1wb3J0IHtCYkxvY2FsaXplfSBmcm9tICcuL2xvY2FsaXplLnBpcGUnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFV0aWxzTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtcbiAgICAgICAgQmJMb2NhbGl6ZSxcbiAgICAgICAgQmJMb2NhbGl6ZVN0cmluZyxcbiAgICAgICAgQmJMb2NhbGl6ZVRlbXBsYXRlXG4gICAgXSxcbiAgICBleHBvcnRzOiBbXG4gICAgICAgIEJiTG9jYWxpemUsXG4gICAgICAgIEJiTG9jYWxpemVTdHJpbmcsXG4gICAgICAgIEJiTG9jYWxpemVUZW1wbGF0ZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTG9jYWxpemVNb2R1bGUge1xuXG4gICAgc3RhdGljIGZvclJvb3QoY29uZmlnOiBMb2NhbGl6ZUNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8TG9jYWxpemVNb2R1bGU+IHtcbiAgICAgICAgaWYgKGNvbmZpZz8ubGFuZ3VhZ2VzPy5sZW5ndGggPD0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdPbmUgb3IgbW9yZSBsYW5ndWFnZXMgc2hvdWxkIGJlIHN1cHBsaWVkLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbmZpZz8uY29tcGFyZURpY3Rpb25hcmllcyAmJiBjb25maWc/Lm1vZGUgPT09ICdtYW51YWwnKSB7XG4gICAgICAgICAgICBjb25zb2xlPy53YXJuPy4oJ1lvdSBjYW5ub3QgZW5hYmxlIFwiY29tcGFyZURpY3Rpb25hcmllc1wiIHdoZW4gaGF2aW5nIG1vZGUgc2V0IHRvIFwibWFudWFsXCI7IFRoaXMgc2V0dGluZyB3aWxsIGJlIGlnbm9yZWQuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtb2RlID0gY29uZmlnPy5tb2RlID8/ICdhdXRvbWF0aWMnO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmdNb2R1bGU6IExvY2FsaXplTW9kdWxlLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICAgICAgLy8gQW5ndWxhciBwcm92aWRlcnMuXG4gICAgICAgICAgICAgICAgLi4uKG1vZGUgPT09ICdhdXRvbWF0aWMnID8gW1xuICAgICAgICAgICAgICAgICAgICB7cHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLCBkZXBzOiBbTG9jYWxpemVdLCB1c2VGYWN0b3J5OiBpbml0aWFsaXplTG9jYWxlLCBtdWx0aTogdHJ1ZX0sXG4gICAgICAgICAgICAgICAgICAgIHtwcm92aWRlOiBMT0NBTEVfSUQsIGRlcHM6IFtMb2NhbGl6ZV0sIHVzZUZhY3Rvcnk6IGdldExvY2FsZX1cbiAgICAgICAgICAgICAgICBdIDogW10pLFxuICAgICAgICAgICAgICAgIC8vIENvbmZpZyBwcm92aWRlci5cbiAgICAgICAgICAgICAgICB7cHJvdmlkZTogTG9jYWxpemVDb25maWcsIHVzZVZhbHVlOiBjb25maWd9LFxuICAgICAgICAgICAgICAgIC8vIEZ1bmN0aW9uIHByb3ZpZGVycy5cbiAgICAgICAgICAgICAgICB7cHJvdmlkZTogTE9DQUxJWkVfRlVOQ1RJT04sIHVzZUNsYXNzOiBMb2NhbGl6ZUxvd2VyY2FzZUZ1bmN0aW9uLCBtdWx0aTogdHJ1ZX0sXG4gICAgICAgICAgICAgICAge3Byb3ZpZGU6IExPQ0FMSVpFX0ZVTkNUSU9OLCB1c2VDbGFzczogTG9jYWxpemVVcHBlcmNhc2VGdW5jdGlvbiwgbXVsdGk6IHRydWV9LFxuICAgICAgICAgICAgICAgIHtwcm92aWRlOiBMT0NBTElaRV9GVU5DVElPTiwgdXNlQ2xhc3M6IExvY2FsaXplRGF0ZUZ1bmN0aW9uLCBtdWx0aTogdHJ1ZX0sXG4gICAgICAgICAgICAgICAgLy8gVHJhbnNmb3JtIHByb3ZpZGVycy5cbiAgICAgICAgICAgICAgICB7cHJvdmlkZTogTE9DQUxJWkVfVFJBTlNGT1JNLCB1c2VDbGFzczogTG9jYWxpemVSZWZlcmVuY2VUcmFuc2Zvcm0sIGRlcHM6IFtMb2NhbGl6ZUNvbmZpZ10sIG11bHRpOiB0cnVlfSxcbiAgICAgICAgICAgICAgICB7cHJvdmlkZTogTE9DQUxJWkVfVFJBTlNGT1JNLCB1c2VDbGFzczogTG9jYWxpemVJbnRlcnBvbGF0ZVRyYW5zZm9ybSwgZGVwczogW0xvY2FsaXplQ29uZmlnLCBMT0NBTElaRV9GVU5DVElPTl0sIG11bHRpOiB0cnVlfSxcbiAgICAgICAgICAgICAgICAvLyBIYW5kbGVyIHByb3ZpZGVycy5cbiAgICAgICAgICAgICAgICB7cHJvdmlkZTogTG9jYWxpemVNaXNzaW5nSGFuZGxlciwgdXNlQ2xhc3M6IExvY2FsaXplTWlzc2luZ0hhbmRsZXJ9LFxuICAgICAgICAgICAgICAgIC8vIFNlcnZpY2UgcHJvdmlkZXJzLlxuICAgICAgICAgICAgICAgIExvY2FsaXplXG4gICAgICAgICAgICBdXG4gICAgICAgIH07XG4gICAgfVxuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplTG9jYWxlKGxvY2FsaXplOiBMb2NhbGl6ZSkge1xuICAgIHJldHVybiBsb2NhbGl6ZS5pbml0aWFsaXplKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMb2NhbGUobG9jYWxpemU6IExvY2FsaXplKSB7XG4gICAgcmV0dXJuIGxvY2FsaXplPy5jdXJyZW50Py5sb2NhbGUgPz8gbnVsbDtcbn1cbiJdfQ==
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { Optional, Pipe } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "./localize.service";
|
|
4
|
-
export class BbLocalize {
|
|
5
|
-
constructor(_localize) {
|
|
6
|
-
this._localize = _localize;
|
|
7
|
-
}
|
|
8
|
-
transform(tokenOrParams, args) {
|
|
9
|
-
// Combine the params with the options to form the localize params.
|
|
10
|
-
const params = this.combineParamsWithOptions(tokenOrParams, args);
|
|
11
|
-
// Validate that the localize service exists in the pipe.
|
|
12
|
-
if (!this._localize) {
|
|
13
|
-
return params?.token ?? null;
|
|
14
|
-
}
|
|
15
|
-
// Try to localize the value.
|
|
16
|
-
return this._localize.translate(params);
|
|
17
|
-
}
|
|
18
|
-
combineParamsWithOptions(tokenOrParams, args) {
|
|
19
|
-
// Gather the extras.
|
|
20
|
-
const extras = args ?? {};
|
|
21
|
-
// Loop through all the keys to find the set options.
|
|
22
|
-
const options = Object.keys(extras).reduce((previous, current) => {
|
|
23
|
-
if (typeof extras?.[current] === 'undefined') {
|
|
24
|
-
return previous;
|
|
25
|
-
}
|
|
26
|
-
return { ...previous, [current]: extras?.[current] };
|
|
27
|
-
}, {});
|
|
28
|
-
// Convert the string token to a params object.
|
|
29
|
-
const params = typeof tokenOrParams === 'string'
|
|
30
|
-
? { token: tokenOrParams, optional: false, data: {}, dictionary: null }
|
|
31
|
-
: tokenOrParams;
|
|
32
|
-
// Return the combined params and options.
|
|
33
|
-
return { ...params, ...options };
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
BbLocalize.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: BbLocalize, deps: [{ token: i1.Localize, optional: true }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
37
|
-
BbLocalize.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.6", ngImport: i0, type: BbLocalize, name: "bbLocalize" });
|
|
38
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: BbLocalize, decorators: [{
|
|
39
|
-
type: Pipe,
|
|
40
|
-
args: [{
|
|
41
|
-
name: 'bbLocalize'
|
|
42
|
-
}]
|
|
43
|
-
}], ctorParameters: function () { return [{ type: i1.Localize, decorators: [{
|
|
44
|
-
type: Optional
|
|
45
|
-
}] }]; } });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vbG9jYWxpemUvc3JjL2xpYi9sb2NhbGl6ZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFnQixNQUFNLGVBQWUsQ0FBQzs7O0FBTTVELE1BQU0sT0FBTyxVQUFVO0lBRW5CLFlBQWdDLFNBQW9CO1FBQXBCLGNBQVMsR0FBVCxTQUFTLENBQVc7SUFDcEQsQ0FBQztJQUVELFNBQVMsQ0FBQyxhQUFzQyxFQUFFLElBQXNCO1FBQ3BFLG1FQUFtRTtRQUNuRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRWxFLHlEQUF5RDtRQUN6RCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNqQixPQUFPLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDO1NBQ2hDO1FBRUQsNkJBQTZCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVPLHdCQUF3QixDQUFDLGFBQXNDLEVBQUUsSUFBc0I7UUFDM0YscUJBQXFCO1FBQ3JCLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFFMUIscURBQXFEO1FBQ3JELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQzdELElBQUksT0FBTyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxXQUFXLEVBQUU7Z0JBQzFDLE9BQU8sUUFBUSxDQUFDO2FBQ25CO1lBRUQsT0FBTyxFQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQztRQUN2RCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFUCwrQ0FBK0M7UUFDL0MsTUFBTSxNQUFNLEdBQUcsT0FBTyxhQUFhLEtBQUssUUFBUTtZQUM1QyxDQUFDLENBQUMsRUFBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFDO1lBQ3JFLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFFcEIsMENBQTBDO1FBQzFDLE9BQU8sRUFBQyxHQUFHLE1BQU0sRUFBRSxHQUFHLE9BQU8sRUFBQyxDQUFDO0lBQ25DLENBQUM7O3VHQXRDUSxVQUFVO3FHQUFWLFVBQVU7MkZBQVYsVUFBVTtrQkFIdEIsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsWUFBWTtpQkFDckI7OzBCQUdnQixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtMb2NhbGl6ZU9wdGlvbnMsIExvY2FsaXplUGFyYW1zfSBmcm9tICcuL2ludGVyZmFjZXMvb3B0aW9ucy5pbnRlcmZhY2VzJztcbmltcG9ydCB7T3B0aW9uYWwsIFBpcGUsIFBpcGVUcmFuc2Zvcm19IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtMb2NhbGl6ZX0gZnJvbSAnLi9sb2NhbGl6ZS5zZXJ2aWNlJztcblxuQFBpcGUoe1xuICAgIG5hbWU6ICdiYkxvY2FsaXplJ1xufSlcbmV4cG9ydCBjbGFzcyBCYkxvY2FsaXplIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBwcml2YXRlIF9sb2NhbGl6ZT86IExvY2FsaXplKSB7XG4gICAgfVxuXG4gICAgdHJhbnNmb3JtKHRva2VuT3JQYXJhbXM6IHN0cmluZyB8IExvY2FsaXplUGFyYW1zLCBhcmdzPzogTG9jYWxpemVPcHRpb25zKSB7XG4gICAgICAgIC8vIENvbWJpbmUgdGhlIHBhcmFtcyB3aXRoIHRoZSBvcHRpb25zIHRvIGZvcm0gdGhlIGxvY2FsaXplIHBhcmFtcy5cbiAgICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy5jb21iaW5lUGFyYW1zV2l0aE9wdGlvbnModG9rZW5PclBhcmFtcywgYXJncyk7XG5cbiAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCB0aGUgbG9jYWxpemUgc2VydmljZSBleGlzdHMgaW4gdGhlIHBpcGUuXG4gICAgICAgIGlmICghdGhpcy5fbG9jYWxpemUpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJhbXM/LnRva2VuID8/IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUcnkgdG8gbG9jYWxpemUgdGhlIHZhbHVlLlxuICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxpemUudHJhbnNsYXRlKHBhcmFtcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb21iaW5lUGFyYW1zV2l0aE9wdGlvbnModG9rZW5PclBhcmFtczogc3RyaW5nIHwgTG9jYWxpemVQYXJhbXMsIGFyZ3M/OiBMb2NhbGl6ZU9wdGlvbnMpIHtcbiAgICAgICAgLy8gR2F0aGVyIHRoZSBleHRyYXMuXG4gICAgICAgIGNvbnN0IGV4dHJhcyA9IGFyZ3MgPz8ge307XG5cbiAgICAgICAgLy8gTG9vcCB0aHJvdWdoIGFsbCB0aGUga2V5cyB0byBmaW5kIHRoZSBzZXQgb3B0aW9ucy5cbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IE9iamVjdC5rZXlzKGV4dHJhcykucmVkdWNlKChwcmV2aW91cywgY3VycmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBleHRyYXM/LltjdXJyZW50XSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJldmlvdXM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB7Li4ucHJldmlvdXMsIFtjdXJyZW50XTogZXh0cmFzPy5bY3VycmVudF19O1xuICAgICAgICB9LCB7fSk7XG5cbiAgICAgICAgLy8gQ29udmVydCB0aGUgc3RyaW5nIHRva2VuIHRvIGEgcGFyYW1zIG9iamVjdC5cbiAgICAgICAgY29uc3QgcGFyYW1zID0gdHlwZW9mIHRva2VuT3JQYXJhbXMgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICA/IHt0b2tlbjogdG9rZW5PclBhcmFtcywgb3B0aW9uYWw6IGZhbHNlLCBkYXRhOiB7fSwgZGljdGlvbmFyeTogbnVsbH1cbiAgICAgICAgICAgIDogdG9rZW5PclBhcmFtcztcblxuICAgICAgICAvLyBSZXR1cm4gdGhlIGNvbWJpbmVkIHBhcmFtcyBhbmQgb3B0aW9ucy5cbiAgICAgICAgcmV0dXJuIHsuLi5wYXJhbXMsIC4uLm9wdGlvbnN9O1xuICAgIH1cblxufVxuIl19
|
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
import { LOCALIZE_TRANSFORM } from './interfaces/transforms.interfaces';
|
|
2
|
-
import { LocalizeDictionary } from './dictionary/dictionary.class';
|
|
3
|
-
import { Inject, Injectable, Optional } from '@angular/core';
|
|
4
|
-
import { WINDOW } from '@bravobit/bb-foundation';
|
|
5
|
-
import { DOCUMENT } from '@angular/common';
|
|
6
|
-
import { BehaviorSubject } from 'rxjs';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@bravobit/bb-foundation/storage";
|
|
9
|
-
import * as i2 from "@bravobit/bb-foundation";
|
|
10
|
-
import * as i3 from "./handlers/missing.handler";
|
|
11
|
-
import * as i4 from "./interfaces/config.interfaces";
|
|
12
|
-
export class Localize {
|
|
13
|
-
constructor(_storage, _languages, _missingHandler, _config, _window, _document, _transforms) {
|
|
14
|
-
this._storage = _storage;
|
|
15
|
-
this._languages = _languages;
|
|
16
|
-
this._missingHandler = _missingHandler;
|
|
17
|
-
this._config = _config;
|
|
18
|
-
this._window = _window;
|
|
19
|
-
this._document = _document;
|
|
20
|
-
this._transforms = _transforms;
|
|
21
|
-
// Readonly data.
|
|
22
|
-
this._storageToken = this._config?.storageToken ?? 'bb-language-dictionary-id';
|
|
23
|
-
this._availableLanguages = this?._config?.languages ?? [];
|
|
24
|
-
this._bestMatchingLanguage = this.retrieveBestMatchingLanguage();
|
|
25
|
-
this._loadedDictionaries = new Map();
|
|
26
|
-
// Current dictionary.
|
|
27
|
-
this._current$ = new BehaviorSubject(null);
|
|
28
|
-
// State changes.
|
|
29
|
-
this.dictionaryChanges$ = this._current$.asObservable();
|
|
30
|
-
this.convertToParams = (tokenOrParams) => {
|
|
31
|
-
if (typeof tokenOrParams !== 'string') {
|
|
32
|
-
// Destruct the params from the object.
|
|
33
|
-
const { token, optional, dictionary, data } = tokenOrParams;
|
|
34
|
-
// Make sure all parameters are valid
|
|
35
|
-
// by type safe adding them.
|
|
36
|
-
return { token: token, optional: optional ?? false, dictionary: dictionary ?? null, data: data ?? {} };
|
|
37
|
-
}
|
|
38
|
-
// If the parameter is a string fill in the blanks.
|
|
39
|
-
return { token: tokenOrParams, optional: false, dictionary: null, data: {} };
|
|
40
|
-
};
|
|
41
|
-
this.renderDocumentLanguage();
|
|
42
|
-
}
|
|
43
|
-
get languages() {
|
|
44
|
-
return this._availableLanguages ?? [];
|
|
45
|
-
}
|
|
46
|
-
get current() {
|
|
47
|
-
return this._current$.getValue();
|
|
48
|
-
}
|
|
49
|
-
async load(id) {
|
|
50
|
-
if (id === null || id === undefined) {
|
|
51
|
-
throw new Error(`Cannot load language with id: "${id}".`);
|
|
52
|
-
}
|
|
53
|
-
if (this._loadedDictionaries.has(id)) {
|
|
54
|
-
return this._loadedDictionaries.get(id);
|
|
55
|
-
}
|
|
56
|
-
const language = this.languages?.find(language => language?.id === id);
|
|
57
|
-
if (!language || !language?.data) {
|
|
58
|
-
console?.warn?.(`No language was found with id: "${id}"; Defaulting to first available language.`);
|
|
59
|
-
const languageId = this.languages?.[0]?.id ?? null;
|
|
60
|
-
return this.load(languageId);
|
|
61
|
-
}
|
|
62
|
-
const dictionaryDataValues = await language?.data?.();
|
|
63
|
-
const dictionary = this.createDictionary(dictionaryDataValues, language);
|
|
64
|
-
this._loadedDictionaries.set(id, dictionary);
|
|
65
|
-
return dictionary;
|
|
66
|
-
}
|
|
67
|
-
async loadAllLanguages() {
|
|
68
|
-
for (const language of this.languages) {
|
|
69
|
-
await this.load(this.current?.id);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
async switch(id, options) {
|
|
73
|
-
const dictionary = await this.load(id);
|
|
74
|
-
this._current$.next(dictionary);
|
|
75
|
-
const cache = options?.cache ?? true;
|
|
76
|
-
if (cache) {
|
|
77
|
-
this._storage.cookie.set(this._storageToken, dictionary?.id, {});
|
|
78
|
-
}
|
|
79
|
-
const reload = options?.reload ?? false;
|
|
80
|
-
if (reload) {
|
|
81
|
-
this._window?.location?.reload?.();
|
|
82
|
-
}
|
|
83
|
-
return dictionary;
|
|
84
|
-
}
|
|
85
|
-
select(id) {
|
|
86
|
-
if (!this._loadedDictionaries.has(id)) {
|
|
87
|
-
throw new Error(`Dictionary with id: "${id}" not loaded; Load dictionary first before using .select(:id).`);
|
|
88
|
-
}
|
|
89
|
-
return this._loadedDictionaries.get(id);
|
|
90
|
-
}
|
|
91
|
-
initialize() {
|
|
92
|
-
return async () => {
|
|
93
|
-
await this.switch(this._bestMatchingLanguage?.id, { reload: false, cache: false });
|
|
94
|
-
return this.compareDictionaries();
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
clear() {
|
|
98
|
-
this._storage.cookie.remove(this._storageToken);
|
|
99
|
-
}
|
|
100
|
-
transform(value, data = {}) {
|
|
101
|
-
return (this._transforms ?? []).reduce((previous, current) => {
|
|
102
|
-
return current.execute(previous, data, this);
|
|
103
|
-
}, value);
|
|
104
|
-
}
|
|
105
|
-
translate(tokenOrParams) {
|
|
106
|
-
// 1. Convert to the params.
|
|
107
|
-
const params = this.convertToParams(tokenOrParams);
|
|
108
|
-
// 2. Try to find the translation in the dictionary.
|
|
109
|
-
const dictionary = this.getDictionary(params?.dictionary);
|
|
110
|
-
const searchResult = !!dictionary ? dictionary.get(params?.token) : null;
|
|
111
|
-
// 3. Verify the translation was found.
|
|
112
|
-
if (!searchResult) {
|
|
113
|
-
return this._missingHandler.handle(params);
|
|
114
|
-
}
|
|
115
|
-
return this.transform(searchResult, params?.data);
|
|
116
|
-
}
|
|
117
|
-
retrieveBestMatchingLanguage() {
|
|
118
|
-
return this.getLanguageFromStorage()
|
|
119
|
-
?? this.getBestBrowserMatchLanguage()
|
|
120
|
-
?? this._availableLanguages?.[0];
|
|
121
|
-
}
|
|
122
|
-
getLanguageFromStorage() {
|
|
123
|
-
// Get id from the storage.
|
|
124
|
-
const id = this._storage.cookie.get(this._storageToken);
|
|
125
|
-
// Return the language based on the storage id.
|
|
126
|
-
return this._availableLanguages.find(item => item?.id === id);
|
|
127
|
-
}
|
|
128
|
-
getBestBrowserMatchLanguage() {
|
|
129
|
-
// Loop through all browser languages and return the
|
|
130
|
-
// best matching language.
|
|
131
|
-
return this._languages.all.map(({ code, region }) => {
|
|
132
|
-
const languageCode = [code, region].filter(data => !!data).join('-');
|
|
133
|
-
return this._availableLanguages.find(item => item?.supported?.includes(languageCode));
|
|
134
|
-
}).filter(item => !!item).find((_, index) => index === 0);
|
|
135
|
-
}
|
|
136
|
-
createDictionary(data, language) {
|
|
137
|
-
return new LocalizeDictionary(language?.id, language?.locale, language?.supported, data?.data, this);
|
|
138
|
-
}
|
|
139
|
-
getDictionary(id) {
|
|
140
|
-
if (id === null || id === undefined) {
|
|
141
|
-
return this.current;
|
|
142
|
-
}
|
|
143
|
-
return this.select(id);
|
|
144
|
-
}
|
|
145
|
-
renderDocumentLanguage() {
|
|
146
|
-
const element = this._document?.documentElement;
|
|
147
|
-
if (!element) {
|
|
148
|
-
return;
|
|
149
|
-
}
|
|
150
|
-
element.lang = this._bestMatchingLanguage?.supported?.[0] ?? this._bestMatchingLanguage?.locale;
|
|
151
|
-
}
|
|
152
|
-
async compareDictionaries() {
|
|
153
|
-
const compareDictionaries = this._config.compareDictionaries ?? false;
|
|
154
|
-
if (!compareDictionaries || !this.current) {
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
const languageIds = (this.languages ?? [])
|
|
158
|
-
?.filter(language => language?.id !== this.current?.id)
|
|
159
|
-
?.map(language => language?.id);
|
|
160
|
-
return await this.current.compare(languageIds);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
Localize.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: Localize, deps: [{ token: i1.Storage }, { token: i2.Languages }, { token: i3.LocalizeMissingHandler }, { token: i4.LocalizeConfig, optional: true }, { token: WINDOW, optional: true }, { token: DOCUMENT, optional: true }, { token: LOCALIZE_TRANSFORM, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
164
|
-
Localize.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: Localize });
|
|
165
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: Localize, decorators: [{
|
|
166
|
-
type: Injectable
|
|
167
|
-
}], ctorParameters: function () { return [{ type: i1.Storage }, { type: i2.Languages }, { type: i3.LocalizeMissingHandler }, { type: i4.LocalizeConfig, decorators: [{
|
|
168
|
-
type: Optional
|
|
169
|
-
}] }, { type: Window, decorators: [{
|
|
170
|
-
type: Optional
|
|
171
|
-
}, {
|
|
172
|
-
type: Inject,
|
|
173
|
-
args: [WINDOW]
|
|
174
|
-
}] }, { type: Document, decorators: [{
|
|
175
|
-
type: Optional
|
|
176
|
-
}, {
|
|
177
|
-
type: Inject,
|
|
178
|
-
args: [DOCUMENT]
|
|
179
|
-
}] }, { type: undefined, decorators: [{
|
|
180
|
-
type: Optional
|
|
181
|
-
}, {
|
|
182
|
-
type: Inject,
|
|
183
|
-
args: [LOCALIZE_TRANSFORM]
|
|
184
|
-
}] }]; } });
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vbG9jYWxpemUvc3JjL2xpYi9sb2NhbGl6ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBSXRFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBRWpFLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQVksTUFBTSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFFMUQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7OztBQUdyQyxNQUFNLE9BQU8sUUFBUTtJQWVqQixZQUFvQixRQUFpQixFQUNqQixVQUFxQixFQUNyQixlQUF1QyxFQUMzQixPQUF3QixFQUNSLE9BQWdCLEVBQ2QsU0FBb0IsRUFDVixXQUFpQztRQU56RSxhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2pCLGVBQVUsR0FBVixVQUFVLENBQVc7UUFDckIsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQzNCLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBQ1IsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNkLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDVixnQkFBVyxHQUFYLFdBQVcsQ0FBc0I7UUFuQjdGLGlCQUFpQjtRQUNBLGtCQUFhLEdBQVcsSUFBSSxDQUFDLE9BQU8sRUFBRSxZQUFZLElBQUksMkJBQTJCLENBQUM7UUFDbEYsd0JBQW1CLEdBQTZCLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUMvRSwwQkFBcUIsR0FBMkIsSUFBSSxD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LENBQUM7O3FHQTdLUSxRQUFRLHNKQW1CZSxNQUFNLDZCQUNOLFFBQVEsNkJBQ1Isa0JBQWtCO3lHQXJCekMsUUFBUTsyRkFBUixRQUFRO2tCQURwQixVQUFVOzswQkFtQk0sUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxNQUFNOzswQkFDekIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxRQUFROzswQkFDM0IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0xvY2FsaXplQ29uZmlnLCBMb2NhbGl6ZUNvbmZpZ0xhbmd1YWdlfSBmcm9tICcuL2ludGVyZmFjZXMvY29uZmlnLmludGVyZmFjZXMnO1xuaW1wb3J0IHtMT0NBTElaRV9UUkFOU0ZPUk19IGZyb20gJy4vaW50ZXJmYWNlcy90cmFuc2Zvcm1zLmludGVyZmFjZXMnO1xuaW1wb3J0IHtMb2NhbGl6ZURpY3Rpb25hcnlEYXRhfSBmcm9tICcuL2RpY3Rpb25hcnkvZGljdGlvbmFyeS5kYXRhJztcbmltcG9ydCB7TG9jYWxpemVUcmFuc2Zvcm19IGZyb20gJy4vdHJhbnNmb3Jtcy9hYnN0cmFjdC50cmFuc2Zvcm0nO1xuaW1wb3J0IHtMb2NhbGl6ZU1pc3NpbmdIYW5kbGVyfSBmcm9tICcuL2hhbmRsZXJzL21pc3NpbmcuaGFuZGxlcic7XG5pbXBvcnQge0xvY2FsaXplRGljdGlvbmFyeX0gZnJvbSAnLi9kaWN0aW9uYXJ5L2RpY3Rpb25hcnkuY2xhc3MnO1xuaW1wb3J0IHtMb2NhbGl6ZVBhcmFtc30gZnJvbSAnLi9pbnRlcmZhY2VzL29wdGlvbnMuaW50ZXJmYWNlcyc7XG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtMYW5ndWFnZXMsIFdJTkRPV30gZnJvbSAnQGJyYXZvYml0L2JiLWZvdW5kYXRpb24nO1xuaW1wb3J0IHtTdG9yYWdlfSBmcm9tICdAYnJhdm9iaXQvYmItZm91bmRhdGlvbi9zdG9yYWdlJztcbmltcG9ydCB7RE9DVU1FTlR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBMb2NhbGl6ZSB7XG5cbiAgICAvLyBSZWFkb25seSBkYXRhLlxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3N0b3JhZ2VUb2tlbjogc3RyaW5nID0gdGhpcy5fY29uZmlnPy5zdG9yYWdlVG9rZW4gPz8gJ2JiLWxhbmd1YWdlLWRpY3Rpb25hcnktaWQnO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2F2YWlsYWJsZUxhbmd1YWdlczogTG9jYWxpemVDb25maWdMYW5ndWFnZVtdID0gdGhpcz8uX2NvbmZpZz8ubGFuZ3VhZ2VzID8/IFtdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Jlc3RNYXRjaGluZ0xhbmd1YWdlOiBMb2NhbGl6ZUNvbmZpZ0xhbmd1YWdlID0gdGhpcy5yZXRyaWV2ZUJlc3RNYXRjaGluZ0xhbmd1YWdlKCk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9sb2FkZWREaWN0aW9uYXJpZXM6IE1hcDxzdHJpbmcsIExvY2FsaXplRGljdGlvbmFyeT4gPSBuZXcgTWFwPHN0cmluZywgTG9jYWxpemVEaWN0aW9uYXJ5PigpO1xuXG4gICAgLy8gQ3VycmVudCBkaWN0aW9uYXJ5LlxuICAgIHByaXZhdGUgX2N1cnJlbnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxMb2NhbGl6ZURpY3Rpb25hcnkgfCBudWxsPihudWxsKTtcblxuICAgIC8vIFN0YXRlIGNoYW5nZXMuXG4gICAgZGljdGlvbmFyeUNoYW5nZXMkID0gdGhpcy5fY3VycmVudCQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zdG9yYWdlOiBTdG9yYWdlLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2xhbmd1YWdlczogTGFuZ3VhZ2VzLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgX21pc3NpbmdIYW5kbGVyOiBMb2NhbGl6ZU1pc3NpbmdIYW5kbGVyLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2NvbmZpZz86IExvY2FsaXplQ29uZmlnLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoV0lORE9XKSBwcml2YXRlIF93aW5kb3c/OiBXaW5kb3csXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQ/OiBEb2N1bWVudCxcbiAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KExPQ0FMSVpFX1RSQU5TRk9STSkgcHJpdmF0ZSBfdHJhbnNmb3Jtcz86IExvY2FsaXplVHJhbnNmb3JtW10pIHtcbiAgICAgICAgdGhpcy5yZW5kZXJEb2N1bWVudExhbmd1YWdlKCk7XG4gICAgfVxuXG4gICAgZ2V0IGxhbmd1YWdlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F2YWlsYWJsZUxhbmd1YWdlcyA/PyBbXTtcbiAgICB9XG5cbiAgICBnZXQgY3VycmVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnQkLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgbG9hZChpZDogc3RyaW5nKSB7XG4gICAgICAgIGlmIChpZCA9PT0gbnVsbCB8fCBpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBsb2FkIGxhbmd1YWdlIHdpdGggaWQ6IFwiJHtpZH1cIi5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9sb2FkZWREaWN0aW9uYXJpZXMuaGFzKGlkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2xvYWRlZERpY3Rpb25hcmllcy5nZXQoaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbGFuZ3VhZ2UgPSB0aGlzLmxhbmd1YWdlcz8uZmluZChsYW5ndWFnZSA9PiBsYW5ndWFnZT8uaWQgPT09IGlkKTtcbiAgICAgICAgaWYgKCFsYW5ndWFnZSB8fCAhbGFuZ3VhZ2U/LmRhdGEpIHtcbiAgICAgICAgICAgIGNvbnNvbGU/Lndhcm4/LihgTm8gbGFuZ3VhZ2Ugd2FzIGZvdW5kIHdpdGggaWQ6IFwiJHtpZH1cIjsgRGVmYXVsdGluZyB0byBmaXJzdCBhdmFpbGFibGUgbGFuZ3VhZ2UuYCk7XG4gICAgICAgICAgICBjb25zdCBsYW5ndWFnZUlkID0gdGhpcy5sYW5ndWFnZXM/LlswXT8uaWQgPz8gbnVsbDtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvYWQobGFuZ3VhZ2VJZCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkaWN0aW9uYXJ5RGF0YVZhbHVlcyA9IGF3YWl0IGxhbmd1YWdlPy5kYXRhPy4oKTtcbiAgICAgICAgY29uc3QgZGljdGlvbmFyeSA9IHRoaXMuY3JlYXRlRGljdGlvbmFyeShkaWN0aW9uYXJ5RGF0YVZhbHVlcywgbGFuZ3VhZ2UpO1xuICAgICAgICB0aGlzLl9sb2FkZWREaWN0aW9uYXJpZXMuc2V0KGlkLCBkaWN0aW9uYXJ5KTtcbiAgICAgICAgcmV0dXJuIGRpY3Rpb25hcnk7XG4gICAgfVxuXG4gICAgYXN5bmMgbG9hZEFsbExhbmd1YWdlcygpIHtcbiAgICAgICAgZm9yIChjb25zdCBsYW5ndWFnZSBvZiB0aGlzLmxhbmd1YWdlcykge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5sb2FkKHRoaXMuY3VycmVudD8uaWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgc3dpdGNoKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiB7IGNhY2hlPzogYm9vbGVhbiwgcmVsb2FkPzogYm9vbGVhbiB9KSB7XG4gICAgICAgIGNvbnN0IGRpY3Rpb25hcnkgPSBhd2FpdCB0aGlzLmxvYWQoaWQpO1xuICAgICAgICB0aGlzLl9jdXJyZW50JC5uZXh0KGRpY3Rpb25hcnkpO1xuXG4gICAgICAgIGNvbnN0IGNhY2hlID0gb3B0aW9ucz8uY2FjaGUgPz8gdHJ1ZTtcbiAgICAgICAgaWYgKGNhY2hlKSB7XG4gICAgICAgICAgICB0aGlzLl9zdG9yYWdlLmNvb2tpZS5zZXQ8c3RyaW5nPih0aGlzLl9zdG9yYWdlVG9rZW4sIGRpY3Rpb25hcnk/LmlkLCB7fSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZWxvYWQgPSBvcHRpb25zPy5yZWxvYWQgPz8gZmFsc2U7XG4gICAgICAgIGlmIChyZWxvYWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3dpbmRvdz8ubG9jYXRpb24/LnJlbG9hZD8uKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGljdGlvbmFyeTtcbiAgICB9XG5cbiAgICBzZWxlY3QoaWQ6IHN0cmluZykge1xuICAgICAgICBpZiAoIXRoaXMuX2xvYWRlZERpY3Rpb25hcmllcy5oYXMoaWQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYERpY3Rpb25hcnkgd2l0aCBpZDogXCIke2lkfVwiIG5vdCBsb2FkZWQ7IExvYWQgZGljdGlvbmFyeSBmaXJzdCBiZWZvcmUgdXNpbmcgLnNlbGVjdCg6aWQpLmApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2FkZWREaWN0aW9uYXJpZXMuZ2V0KGlkKTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplKCkge1xuICAgICAgICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zd2l0Y2godGhpcy5fYmVzdE1hdGNoaW5nTGFuZ3VhZ2U/LmlkLCB7cmVsb2FkOiBmYWxzZSwgY2FjaGU6IGZhbHNlfSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlRGljdGlvbmFyaWVzKCk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgY2xlYXIoKSB7XG4gICAgICAgIHRoaXMuX3N0b3JhZ2UuY29va2llLnJlbW92ZSh0aGlzLl9zdG9yYWdlVG9rZW4pO1xuICAgIH1cblxuICAgIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nLCBkYXRhOiBMb2NhbGl6ZVBhcmFtc1snZGF0YSddID0ge30pIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLl90cmFuc2Zvcm1zID8/IFtdKS5yZWR1Y2UoKHByZXZpb3VzLCBjdXJyZW50KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gY3VycmVudC5leGVjdXRlKHByZXZpb3VzLCBkYXRhLCB0aGlzKTtcbiAgICAgICAgfSwgdmFsdWUpO1xuICAgIH1cblxuICAgIHRyYW5zbGF0ZSh0b2tlbk9yUGFyYW1zOiBzdHJpbmcgfCBMb2NhbGl6ZVBhcmFtcykge1xuICAgICAgICAvLyAxLiBDb252ZXJ0IHRvIHRoZSBwYXJhbXMuXG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuY29udmVydFRvUGFyYW1zKHRva2VuT3JQYXJhbXMpO1xuXG4gICAgICAgIC8vIDIuIFRyeSB0byBmaW5kIHRoZSB0cmFuc2xhdGlvbiBpbiB0aGUgZGljdGlvbmFyeS5cbiAgICAgICAgY29uc3QgZGljdGlvbmFyeSA9IHRoaXMuZ2V0RGljdGlvbmFyeShwYXJhbXM/LmRpY3Rpb25hcnkpO1xuICAgICAgICBjb25zdCBzZWFyY2hSZXN1bHQgPSAhIWRpY3Rpb25hcnkgPyBkaWN0aW9uYXJ5LmdldChwYXJhbXM/LnRva2VuKSA6IG51bGw7XG5cbiAgICAgICAgLy8gMy4gVmVyaWZ5IHRoZSB0cmFuc2xhdGlvbiB3YXMgZm91bmQuXG4gICAgICAgIGlmICghc2VhcmNoUmVzdWx0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbWlzc2luZ0hhbmRsZXIuaGFuZGxlKHBhcmFtcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2Zvcm0oc2VhcmNoUmVzdWx0LCBwYXJhbXM/LmRhdGEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmV0cmlldmVCZXN0TWF0Y2hpbmdMYW5ndWFnZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TGFuZ3VhZ2VGcm9tU3RvcmFnZSgpXG4gICAgICAgICAgICA/PyB0aGlzLmdldEJlc3RCcm93c2VyTWF0Y2hMYW5ndWFnZSgpXG4gICAgICAgICAgICA/PyB0aGlzLl9hdmFpbGFibGVMYW5ndWFnZXM/LlswXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExhbmd1YWdlRnJvbVN0b3JhZ2UoKSB7XG4gICAgICAgIC8vIEdldCBpZCBmcm9tIHRoZSBzdG9yYWdlLlxuICAgICAgICBjb25zdCBpZCA9IHRoaXMuX3N0b3JhZ2UuY29va2llLmdldDxzdHJpbmc+KHRoaXMuX3N0b3JhZ2VUb2tlbik7XG5cbiAgICAgICAgLy8gUmV0dXJuIHRoZSBsYW5ndWFnZSBiYXNlZCBvbiB0aGUgc3RvcmFnZSBpZC5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2F2YWlsYWJsZUxhbmd1YWdlcy5maW5kKGl0ZW0gPT4gaXRlbT8uaWQgPT09IGlkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEJlc3RCcm93c2VyTWF0Y2hMYW5ndWFnZSgpIHtcbiAgICAgICAgLy8gTG9vcCB0aHJvdWdoIGFsbCBicm93c2VyIGxhbmd1YWdlcyBhbmQgcmV0dXJuIHRoZVxuICAgICAgICAvLyBiZXN0IG1hdGNoaW5nIGxhbmd1YWdlLlxuICAgICAgICByZXR1cm4gdGhpcy5fbGFuZ3VhZ2VzLmFsbC5tYXAoKHtjb2RlLCByZWdpb259KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYW5ndWFnZUNvZGUgPSBbY29kZSwgcmVnaW9uXS5maWx0ZXIoZGF0YSA9PiAhIWRhdGEpLmpvaW4oJy0nKTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2F2YWlsYWJsZUxhbmd1YWdlcy5maW5kKGl0ZW0gPT4gaXRlbT8uc3VwcG9ydGVkPy5pbmNsdWRlcyhsYW5ndWFnZUNvZGUpKTtcbiAgICAgICAgfSkuZmlsdGVyKGl0ZW0gPT4gISFpdGVtKS5maW5kKChfLCBpbmRleCkgPT4gaW5kZXggPT09IDApO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlRGljdGlvbmFyeShkYXRhOiBMb2NhbGl6ZURpY3Rpb25hcnlEYXRhLCBsYW5ndWFnZTogTG9jYWxpemVDb25maWdMYW5ndWFnZSkge1xuICAgICAgICByZXR1cm4gbmV3IExvY2FsaXplRGljdGlvbmFyeShsYW5ndWFnZT8uaWQsIGxhbmd1YWdlPy5sb2NhbGUsIGxhbmd1YWdlPy5zdXBwb3J0ZWQsIGRhdGE/LmRhdGEsIHRoaXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RGljdGlvbmFyeShpZDogc3RyaW5nIHwgbnVsbCkge1xuICAgICAgICBpZiAoaWQgPT09IG51bGwgfHwgaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3QoaWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVuZGVyRG9jdW1lbnRMYW5ndWFnZSgpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuX2RvY3VtZW50Py5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgIGlmICghZWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZWxlbWVudC5sYW5nID0gdGhpcy5fYmVzdE1hdGNoaW5nTGFuZ3VhZ2U/LnN1cHBvcnRlZD8uWzBdID8/IHRoaXMuX2Jlc3RNYXRjaGluZ0xhbmd1YWdlPy5sb2NhbGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBjb21wYXJlRGljdGlvbmFyaWVzKCkge1xuICAgICAgICBjb25zdCBjb21wYXJlRGljdGlvbmFyaWVzID0gdGhpcy5fY29uZmlnLmNvbXBhcmVEaWN0aW9uYXJpZXMgPz8gZmFsc2U7XG4gICAgICAgIGlmICghY29tcGFyZURpY3Rpb25hcmllcyB8fCAhdGhpcy5jdXJyZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYW5ndWFnZUlkcyA9ICh0aGlzLmxhbmd1YWdlcyA/PyBbXSlcbiAgICAgICAgICAgID8uZmlsdGVyKGxhbmd1YWdlID0+IGxhbmd1YWdlPy5pZCAhPT0gdGhpcy5jdXJyZW50Py5pZClcbiAgICAgICAgICAgID8ubWFwKGxhbmd1YWdlID0+IGxhbmd1YWdlPy5pZCk7XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY3VycmVudC5jb21wYXJlKGxhbmd1YWdlSWRzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbnZlcnRUb1BhcmFtcyA9ICh0b2tlbk9yUGFyYW1zOiBzdHJpbmcgfCBMb2NhbGl6ZVBhcmFtcykgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHRva2VuT3JQYXJhbXMgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAvLyBEZXN0cnVjdCB0aGUgcGFyYW1zIGZyb20gdGhlIG9iamVjdC5cbiAgICAgICAgICAgIGNvbnN0IHt0b2tlbiwgb3B0aW9uYWwsIGRpY3Rpb25hcnksIGRhdGF9ID0gdG9rZW5PclBhcmFtcztcblxuICAgICAgICAgICAgLy8gTWFrZSBzdXJlIGFsbCBwYXJhbWV0ZXJzIGFyZSB2YWxpZFxuICAgICAgICAgICAgLy8gYnkgdHlwZSBzYWZlIGFkZGluZyB0aGVtLlxuICAgICAgICAgICAgcmV0dXJuIHt0b2tlbjogdG9rZW4sIG9wdGlvbmFsOiBvcHRpb25hbCA/PyBmYWxzZSwgZGljdGlvbmFyeTogZGljdGlvbmFyeSA/PyBudWxsLCBkYXRhOiBkYXRhID8/IHt9fTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHRoZSBwYXJhbWV0ZXIgaXMgYSBzdHJpbmcgZmlsbCBpbiB0aGUgYmxhbmtzLlxuICAgICAgICByZXR1cm4ge3Rva2VuOiB0b2tlbk9yUGFyYW1zLCBvcHRpb25hbDogZmFsc2UsIGRpY3Rpb25hcnk6IG51bGwsIGRhdGE6IHt9fTtcbiAgICB9O1xuXG59XG4iXX0=
|